Re: [PATCH 0/9] blk-mq: support batching dispatch from scheduler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>

> Please review and comment!
>
>
> [1] https://lore.kernel.org/linux-block/20200512075501.GF1531898@T590/#r
> [2] https://lore.kernel.org/linux-block/fe6bd8b9-6ed9-b225-f80c-314746133722@xxxxxxxxxxx/
>
>
> Ming Lei (9):
>   blk-mq: pass request queue into get/put budget callback
>   blk-mq: pass hctx to blk_mq_dispatch_rq_list
>   blk-mq: don't predicate last flag in blk_mq_dispatch_rq_list
>   blk-mq: move getting driver tag and bugget into one helper
>   blk-mq: move .queue_rq code into one helper
>   blk-mq: move code for handling partial dispatch into one helper
>   blk-mq: remove dead check from blk_mq_dispatch_rq_list
>   blk-mq: pass obtained budget count to blk_mq_dispatch_rq_list
>   blk-mq: support batching dispatch in case of io scheduler
>
>  block/blk-mq-sched.c    |  96 ++++++++++++++--
>  block/blk-mq.c          | 248 +++++++++++++++++++++-------------------
>  block/blk-mq.h          |  15 +--
>  drivers/scsi/scsi_lib.c |   8 +-
>  include/linux/blk-mq.h  |   4 +-
>  5 files changed, 226 insertions(+), 145 deletions(-)
>
> Cc: Sagi Grimberg <sagi@xxxxxxxxxxx>
> Cc: Baolin Wang <baolin.wang7@xxxxxxxxx>
> Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx>
>
> --
> 2.25.2
>


-- 
Baolin Wang



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux