[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250614092528.2352680-1-yukuai1@huaweicloud.com>
Date: Sat, 14 Jun 2025 17:25:23 +0800
From: Yu Kuai <yukuai1@...weicloud.com>
To: ming.lei@...hat.com,
yukuai3@...wei.com,
tj@...nel.org,
josef@...icpanda.com,
axboe@...nel.dk
Cc: linux-block@...r.kernel.org,
cgroups@...r.kernel.org,
linux-kernel@...r.kernel.org,
yukuai1@...weicloud.com,
yi.zhang@...wei.com,
yangerkun@...wei.com,
johnny.chenyi@...wei.com
Subject: [PATCH RFC v2 0/5] blk-mq-sched: support request batch dispatching for sq elevator
From: Yu Kuai <yukuai3@...wei.com>
Before this patch, each dispatch context will hold a global lock to
dispatch one request at a time, which introduce intense lock competition:
lock
ops.dispatch_request
unlock
Hence support dispatch a batch of requests while holding the lock to
reduce lock contention.
nullblk setup:
modprobe null_blk nr_devices=0 &&
udevadm settle &&
cd /sys/kernel/config/nullb &&
mkdir nullb0 &&
cd nullb0 &&
echo 0 > completion_nsec &&
echo 512 > blocksize &&
echo 0 > home_node &&
echo 0 > irqmode &&
echo 128 > submit_queues &&
echo 1024 > hw_queue_depth &&
echo 1024 > size &&
echo 0 > memory_backed &&
echo 2 > queue_mode &&
echo 1 > power ||
exit $?
Test script:
fio -filename=/dev/$disk -name=test -rw=randwrite -bs=4k -iodepth=32 \
-numjobs=16 --iodepth_batch_submit=8 --iodepth_batch_complete=8 \
-direct=1 -ioengine=io_uring -group_reporting -time_based -runtime=30
Test result(elevator is deadline): iops
| | null_blk | scsi hdd |
| --------------- | -------- | -------- |
| before this set | 263k | 24 |
| after this set | 475k | 272 |
Yu Kuai (5):
elevator: introduce global lock for sq_shared elevator
mq-deadline: switch to use elevator lock
block, bfq: switch to use elevator lock
blk-mq-sched: refactor __blk_mq_do_dispatch_sched()
blk-mq-sched: support request batch dispatching for sq elevator
block/bfq-cgroup.c | 4 +-
block/bfq-iosched.c | 53 ++++------
block/bfq-iosched.h | 2 +-
block/blk-mq-sched.c | 226 +++++++++++++++++++++++++++++--------------
block/blk-mq.c | 5 +-
block/blk-mq.h | 21 ++++
block/elevator.c | 1 +
block/elevator.h | 61 +++++++++++-
block/mq-deadline.c | 58 +++++------
9 files changed, 282 insertions(+), 149 deletions(-)
--
2.39.2
Powered by blists - more mailing lists