From: Jens Axboe <axboe@kernel.dk>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
Paolo Valente <paolo.valente@linaro.org>,
Christoph Hellwig <hch@infradead.org>,
Arnd Bergmann <arnd@arndb.de>,
Bart Van Assche <bart.vanassche@sandisk.com>,
Jan Kara <jack@suse.cz>, Tejun Heo <tj@kernel.org>,
linux-block@vger.kernel.org,
Linux-Kernal <linux-kernel@vger.kernel.org>,
Mark Brown <broonie@kernel.org>, Hannes Reinecke <hare@suse.de>,
Grant Likely <grant.likely@secretlab.ca>,
James Bottomley <James.Bottomley@hansenpartnership.com>
Subject: Re: [PATCH 00/14] introduce the BFQ-v0 I/O scheduler as an extra scheduler
Date: Fri, 28 Oct 2016 08:07:35 -0600 [thread overview]
Message-ID: <f71cb330-8e60-694e-0494-43ad8bc4b91b@kernel.dk> (raw)
In-Reply-To: <CACRpkdbngAKuwDaUwZ=QaW9POb4U2tFJA60aLKD6QZKf60bq6g@mail.gmail.com>
On 10/27/2016 04:27 PM, Linus Walleij wrote:
> On Thu, Oct 27, 2016 at 11:08 PM, Jens Axboe <axboe@kernel.dk> wrote:
>
>> blk-mq has evolved to support a variety of devices, there's nothing
>> special about mmc that can't work well within that framework.
>
> There is. Read mmc_queue_thread() in drivers/mmc/card/queue.c
>
> This repeatedly calls req = blk_fetch_request(q);, starting one request
> and then getting the next one off the queue, including reading
> a few NULL requests off the end of the queue (to satisfy the
> semantics of its state machine.
>
> It then preprocess each request by esstially calling .pre() and .post()
> hooks all the way down to the driver, flushing its mapped
> sglist from CPU to DMA device memory (not a problem on x86 and
> other DMA-coherent archs, but a big win on the incoherent ones).
>
> In the attempt that was posted recently this is achieved by lying
> and saying the HW queue is two items deep and eating requests
> off that queue calling pre/post on them.
>
> But as there actually exist MMC cards with command queueing, this
> would become hopeless to handle, the hw queue depth has to reflect
> the real depth. What we need is for the block core to call pre/post
> hooks on each request.
>
> The "only" thing that doesn't work well after that is that CFQ is no
> longer in action, which will have interesting effects on MMC throughput
> in any fio-like stress test as it is mostly single-hw-queue.
That will cause you pain with any IO scheduler that has more complex
state, like CFQ and BFQ... I looked at the code but I don't quite get
why it is handling requests like that. Care to expand? Is it a
performance optimization? It looks fairly convoluted for some reason. I
would imagine that latency would be one of the more important aspects
for mmc, yet the driver has a context switch for each sync IO.
--
Jens Axboe
next prev parent reply other threads:[~2016-10-28 14:07 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-26 9:27 [PATCH 00/14] introduce the BFQ-v0 I/O scheduler as an extra scheduler Paolo Valente
2016-10-26 9:27 ` [PATCH 01/14] block, bfq: " Paolo Valente
2016-10-26 9:27 ` [PATCH 02/14] block, bfq: add full hierarchical scheduling and cgroups support Paolo Valente
2016-10-26 9:27 ` [PATCH 03/14] block, bfq: improve throughput boosting Paolo Valente
2016-10-26 9:27 ` [PATCH 04/14] block, bfq: modify the peak-rate estimator Paolo Valente
2016-10-26 9:27 ` [PATCH 05/14] block, bfq: add more fairness with writes and slow processes Paolo Valente
2016-10-26 9:27 ` [PATCH 06/14] block, bfq: improve responsiveness Paolo Valente
2016-10-26 9:28 ` [PATCH 07/14] block, bfq: reduce I/O latency for soft real-time applications Paolo Valente
2016-10-26 9:28 ` [PATCH 08/14] block, bfq: preserve a low latency also with NCQ-capable drives Paolo Valente
2016-10-26 9:28 ` [PATCH 09/14] block, bfq: reduce latency during request-pool saturation Paolo Valente
2016-10-26 10:19 ` [PATCH 00/14] introduce the BFQ-v0 I/O scheduler as an extra scheduler Christoph Hellwig
2016-10-26 11:34 ` Jan Kara
2016-10-26 15:05 ` Bart Van Assche
2016-10-26 15:13 ` Arnd Bergmann
2016-10-26 15:29 ` Christoph Hellwig
2016-10-26 15:32 ` Jens Axboe
2016-10-26 16:04 ` Paolo Valente
2016-10-26 16:12 ` Jens Axboe
2016-10-27 9:26 ` Jan Kara
2016-10-27 14:34 ` Grozdan
2016-10-27 15:55 ` Heinz Diehl
2016-10-27 16:28 ` Jens Axboe
2016-10-27 16:26 ` Jens Axboe
2016-10-28 7:59 ` Jan Kara
2016-10-28 14:10 ` Jens Axboe
2016-10-27 17:32 ` Ulf Hansson
2016-10-27 17:43 ` Jens Axboe
2016-10-27 18:13 ` Ulf Hansson
2016-10-27 18:21 ` Jens Axboe
2016-10-27 19:34 ` Ulf Hansson
2016-10-27 21:08 ` Jens Axboe
2016-10-27 22:27 ` Linus Walleij
2016-10-28 9:32 ` Linus Walleij
2016-10-28 14:22 ` Jens Axboe
2016-10-28 20:38 ` Linus Walleij
2016-10-28 15:29 ` Christoph Hellwig
2016-10-28 21:09 ` Linus Walleij
2016-10-28 15:30 ` Jens Axboe
2016-10-28 15:58 ` Bartlomiej Zolnierkiewicz
2016-10-28 16:05 ` Arnd Bergmann
2016-10-28 17:17 ` Mark Brown
2016-10-28 14:07 ` Jens Axboe [this message]
2016-10-28 6:36 ` Ulf Hansson
2016-10-28 14:17 ` Jens Axboe
2016-10-28 17:12 ` Mark Brown
2016-10-27 19:41 ` Mark Brown
2016-10-27 19:45 ` Christoph Hellwig
2016-10-27 22:01 ` Mark Brown
2016-10-28 12:07 ` Arnd Bergmann
2016-10-28 12:17 ` Richard Weinberger
2016-10-29 5:38 ` Paolo Valente
2016-10-29 13:12 ` Bart Van Assche
2016-10-29 14:12 ` Jens Axboe
2016-10-30 3:06 ` Paolo Valente
2016-10-26 12:37 ` Paolo Valente
2016-10-29 17:08 Manuel Krause
2016-10-30 17:48 Manuel Krause
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=f71cb330-8e60-694e-0494-43ad8bc4b91b@kernel.dk \
--to=axboe@kernel.dk \
--cc=James.Bottomley@hansenpartnership.com \
--cc=arnd@arndb.de \
--cc=bart.vanassche@sandisk.com \
--cc=broonie@kernel.org \
--cc=grant.likely@secretlab.ca \
--cc=hare@suse.de \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linus.walleij@linaro.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paolo.valente@linaro.org \
--cc=tj@kernel.org \
--cc=ulf.hansson@linaro.org \
/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;
as well as URLs for NNTP newsgroup(s).