On Sat, May 23, 2020 at 03:45:55PM +0800, Baolin Wang wrote: > Hi Ming, > > On Wed, May 13, 2020 at 5:55 PM Ming Lei <ming.lei@xxxxxxxxxx> wrote: > > > > Hi Guys, > > > > More and more drivers want to get batching requests queued from > > block layer, such as mmc[1], and tcp based storage drivers[2]. Also > > current in-tree users have virtio-scsi, virtio-blk and nvme. > > > > For none, we already support batching dispatch. > > > > But for io scheduler, every time we just take one request from scheduler > > and pass the single request to blk_mq_dispatch_rq_list(). This way makes > > batching dispatch not possible when io scheduler is applied. One reason > > is that we don't want to hurt sequential IO performance, becasue IO > > merge chance is reduced if more requests are dequeued from scheduler > > queue. > > > > Tries to start the support by dequeuing more requests from scheduler > > if budget is enough and device isn't busy. > > > > Simple fio test over virtio-scsi shows IO can get improved by 5~10%. > > > > Patches can be found from the following tree too: > > > > https://github.com/ming1/linux/commits/v5.7-rc-blk-mq-batching-submission > > > > Patch 1 ~ 7 are improvement and cleanup, which can't applied without > > supporting batching dispatch. > > > > Patch 8 ~ 9 starts to support batching dispatch from scheduler. > > Sorry for late reply. I've tested your patch set and got some better > performance. Thanks. > Tested-by: Baolin Wang <baolin.wang7@xxxxxxxxx> Hi Baolin, Thanks for your test & feedback, then looks this approach is good. I will address comments on v1 and post v2 soon. Thanks, Ming