Re: [PATCH 0/6] blk-mq: optimize the queue_rqs() support

From: Chengming Zhou
Date: Sat Sep 02 2023 - 11:00:46 EST


On 2023/8/24 22:43, chengming.zhou@xxxxxxxxx wrote:
> From: Chengming Zhou <zhouchengming@xxxxxxxxxxxxx>
>
> The current queue_rqs() support has limitation that it can't work on
> shared tags queue, which is resolved by patch 1-3. We move the account
> of active requests to where we really allocate the driver tag.
>
> This is clearer and matched with the unaccount side which now happen
> when we put the driver tag. And we can remove RQF_MQ_INFLIGHT, which
> was used to avoid double account problem of flush request.
>
> Another problem is that the driver that support queue_rqs() has to
> set inflight request table by itself, which is resolved in patch 4.
>
> The patch 5 fixes a potential race problem which may cause false
> timeout because of the reorder of rq->state and rq->deadline.
>
> The patch 6 add support queue_rqs() for null_blk, which showed a
> 3.6% IOPS improvement in fio/t/io_uring benchmark on my test VM.
> And we also use it for testing queue_rqs() on shared tags queue.

Hello, gentle ping.

Thanks.

>
> Thanks for review!
>
> Chengming Zhou (6):
> blk-mq: account active requests when get driver tag
> blk-mq: remove RQF_MQ_INFLIGHT
> blk-mq: support batched queue_rqs() on shared tags queue
> blk-mq: update driver tags request table when start request
> blk-mq: fix potential reorder of request state and deadline
> block/null_blk: add queue_rqs() support
>
> block/blk-flush.c | 11 ++-----
> block/blk-mq-debugfs.c | 1 -
> block/blk-mq.c | 53 ++++++++++++++------------------
> block/blk-mq.h | 57 ++++++++++++++++++++++++-----------
> drivers/block/null_blk/main.c | 20 ++++++++++++
> drivers/block/virtio_blk.c | 2 --
> drivers/nvme/host/pci.c | 1 -
> include/linux/blk-mq.h | 2 --
> 8 files changed, 84 insertions(+), 63 deletions(-)
>