On Wed, Jun 24, 2020 at 02:17:28PM -0700, Sagi Grimberg wrote: > > > Hi Jens, > > > > 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%. > > > > Baolin has tested previous versions and found performance on MMC can be improved. > > > > Patch 1 ~ 4 are improvement and cleanup, which can't applied without > > supporting batching dispatch. > > > > Patch 5 ~ 6 starts to support batching dispatch from scheduler. > > > > > > > > [1] https://lore.kernel.org/linux-block/20200512075501.GF1531898@T590/#r > > [2] https://lore.kernel.org/linux-block/fe6bd8b9-6ed9-b225-f80c-314746133722@xxxxxxxxxxx/ > > > > V5: > > - code style changes suggested by Damien > > > > V4: > > - fix releasing budgets and avoids IO hang(5/6) > > - dispatch more batches if the device can accept more(6/6) > > - verified by running more tests > > > > V3: > > - add reviewed-by tag > > - fix one typo > > - fix one budget leak issue in case that .queue_rq returned *_RESOURCE in 5/6 > > > > V2: > > - remove 'got_budget' from blk_mq_dispatch_rq_list > > - drop patch for getting driver tag & handling partial dispatch > > Hey Ming, > > What ever happened to this one? Hi Sagi, Looks the 1st patch can't be applied cleanly against for-5.9/block, I will send V6 later. thanks, Ming