public inbox for linux-block@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] blk-mq: optimize the queue_rqs() support
@ 2023-08-24 14:43 chengming.zhou
  2023-08-24 14:43 ` [PATCH 1/6] blk-mq: account active requests when get driver tag chengming.zhou
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: chengming.zhou @ 2023-08-24 14:43 UTC (permalink / raw)
  To: axboe, hch, ming.lei, bvanassche, kbusch
  Cc: mst, sagi, damien.lemoal, kch, linux-block, linux-kernel,
	zhouchengming

From: Chengming Zhou <zhouchengming@bytedance.com>

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.

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(-)

-- 
2.41.0


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

end of thread, other threads:[~2023-09-02 15:01 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-24 14:43 [PATCH 0/6] blk-mq: optimize the queue_rqs() support chengming.zhou
2023-08-24 14:43 ` [PATCH 1/6] blk-mq: account active requests when get driver tag chengming.zhou
2023-08-24 14:43 ` [PATCH 2/6] blk-mq: remove RQF_MQ_INFLIGHT chengming.zhou
2023-08-24 14:44 ` [PATCH 3/6] blk-mq: support batched queue_rqs() on shared tags queue chengming.zhou
2023-08-24 14:44 ` [PATCH 4/6] blk-mq: update driver tags request table when start request chengming.zhou
2023-08-24 14:44 ` [PATCH 5/6] blk-mq: fix potential reorder of request state and deadline chengming.zhou
2023-08-24 14:44 ` [PATCH 6/6] block/null_blk: add queue_rqs() support chengming.zhou
2023-08-24 17:02 ` [PATCH 0/6] blk-mq: optimize the " Bart Van Assche
2023-08-25  8:24   ` Chengming Zhou
2023-08-27  0:45     ` Bart Van Assche
2023-09-02 15:00 ` Chengming Zhou

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox