All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFD] I/O scheduling in blk-mq
@ 2016-08-08 14:09 Paolo
  2016-08-08 15:26 ` Bart Van Assche
  2016-08-08 20:09 ` Omar Sandoval
  0 siblings, 2 replies; 10+ messages in thread
From: Paolo @ 2016-08-08 14:09 UTC (permalink / raw)
  To: Jens Axboe, Tejun Heo, Christoph Hellwig, linux-block,
	linux-kernel, Ulf Hansson, Linus Walleij, broonie

Hi Jens, Tejun, Christoph, all,
AFAIK blk-mq does not yet feature I/O schedulers. In particular, there
is no scheduler providing strong guarantees in terms of
responsiveness, latency for time-sensitive applications and bandwidth
distribution.

For this reason, I'm trying to port BFQ to blk-mq, or to develop
something simpler if even a reduced version of BFQ proves to be too
heavy (this project is supported by Linaro). If you are willing to
provide some feedback in this respect, I would like to ask for
opinions/suggestions on the following two matters, and possibly to
open a more general discussion on I/O scheduling in blk-mq.

1) My idea is to have an independent instance of BFQ, or in general of
the I/O scheduler, executed for each software queue. Then there would
be no global scheduling. The drawback of no global scheduling is that
each process cannot get more than 1/M of the total throughput of the
device, if M is the number of software queues. But, if I'm not
mistaken, it is however unfeasible to give a process more than 1/M of
the total throughput, without lowering the throughput itself. In fact,
giving a process more than 1/M of the total throughput implies serving
its software queue, say Q, more than the others.  The only way to do
it is periodically stopping the service of the other software queues
and dispatching only the requests in Q. But this would reduce
parallelism, which is the main way how blk-mq achieves a very high
throughput. Are these considerations, and, in particular, one
independent I/O scheduler per software queue, sensible?

2) To provide per-process service guarantees, an I/O scheduler must
create per-process internal queues. BFQ and CFQ use I/O contexts to
achieve this goal. Is something like that (or exactly the same)
available also in blk-mq? If so, do you have any suggestion, or link to
documentation/code on how to use what is available in blk-mq?

Thanks,
Paolo

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-10-05 20:16 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-08 14:09 [RFD] I/O scheduling in blk-mq Paolo
2016-08-08 15:26 ` Bart Van Assche
2016-08-08 20:09 ` Omar Sandoval
2016-08-31 15:20   ` Paolo Valente
2016-08-31 15:20     ` Paolo Valente
2016-09-30  6:18     ` Paolo Valente
2016-09-30  6:18       ` Paolo Valente
2016-10-05 17:46     ` Omar Sandoval
2016-10-05 20:16       ` Paolo Valente
2016-10-05 20:16         ` Paolo Valente

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.