From: Jens Axboe <axboe@kernel.dk>
To: Christoph Hellwig <hch@infradead.org>, hexue <xue01.he@samsung.com>
Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] block: Avoid polling configuration errors
Date: Wed, 12 Jun 2024 14:53:27 -0600 [thread overview]
Message-ID: <f092f5b5-68c8-4e76-9ea1-f319bcf20444@kernel.dk> (raw)
In-Reply-To: <ZlrQCaR6xEaghWdQ@infradead.org>
On 6/1/24 1:38 AM, Christoph Hellwig wrote:
> On Fri, May 31, 2024 at 05:10:15PM +0800, hexue wrote:
>> Here's a misconfigured if application is doing polled IO
>> for devices that don't have a poll queue, the process will
>> continue to do syscall between user space and kernel space,
>> as in normal poll IO, CPU utilization will be 100%. IO actually
>> arrives through interruption.
>>
>> This patch returns a signal that does not support the operation
>> when the underlying device does not have a poll queue, avoiding
>> performance and CPU simultaneous loss.
>
> This feels like the wrong place to check for this.
>
> As we've dropped synchronous polling we now only support
> thead based polling, right now only through io_uring.
>
> So we need to ensure REQ_POLLED doesn't even get set for any
> other I/O.
We happily allow polled IO for async polled IO, even if the destination
queue isn't polled (or it doesn't exist). This is different than the old
sync polled support.
It'll work just fine, it just won't really do what you expect in the
sense that IRQs are still being triggered. The app side won't wait
however, it'll just busy poll on the completion and either race with the
IRQ delivery or find it once completed.
So I think the bigger question here is if we want to change that. It can
indicate a bad configuration, but there's also risk there in terms of
breaking a setup that already works for someone. You'd get -ENONOTSUPP
rather than just (suboptimal) completed IO.
--
Jens Axboe
next prev parent reply other threads:[~2024-06-12 20:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20240531091021epcas5p48fdbd6302bec7a91ff66272c600b0dab@epcas5p4.samsung.com>
2024-05-31 9:10 ` [PATCH] block: Avoid polling configuration errors hexue
2024-06-01 7:38 ` Christoph Hellwig
2024-06-05 9:01 ` hexue
2024-06-12 20:53 ` Jens Axboe [this message]
2024-06-13 8:07 ` Christoph Hellwig
2024-06-16 2:39 ` Jens Axboe
2024-06-19 6:38 ` hexue
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f092f5b5-68c8-4e76-9ea1-f319bcf20444@kernel.dk \
--to=axboe@kernel.dk \
--cc=hch@infradead.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=xue01.he@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox