Ming Lei
36e765392e
blk-mq: complete req in softirq context in case of single queue
...
Lot of controllers may have only one irq vector for completing IO
request. And usually affinity of the only irq vector is all possible
CPUs, however, on most of ARCH, there may be only one specific CPU
for handling this interrupt.
So if all IOs are completed in hardirq context, it is inevitable to
degrade IO performance because of increased irq latency.
This patch tries to address this issue by allowing to complete request
in softirq context, like the legacy IO path.
IOPS is observed as ~13%+ in the following randread test on raid0 over
virtio-scsi.
mdadm --create --verbose /dev/md0 --level=0 --chunk=1024 --raid-devices=8 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi
fio --time_based --name=benchmark --runtime=30 --filename=/dev/md0 --nrfiles=1 --ioengine=libaio --iodepth=32 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --numjobs=32 --rw=randread --blocksize=4k
Cc: Dongli Zhang <dongli.zhang@oracle.com>
Cc: Zach Marano <zmarano@google.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Jianchao Wang <jianchao.w.wang@oracle.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-10-08 10:50:43 -06:00
..
partitions
partitions/aix: append null character to print data from disk
2018-07-27 09:17:41 -06:00
badblocks.c
bfq-cgroup.c
blkcg: fix ref count issue with bio_blkcg using task_css
2018-09-21 20:29:02 -06:00
bfq-iosched.c
blkcg: fix ref count issue with bio_blkcg using task_css
2018-09-21 20:29:02 -06:00
bfq-iosched.h
block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash
2018-09-14 13:06:03 -06:00
bfq-wf2q.c
block, bfq: correctly charge and reset entity service in all cases
2018-09-14 13:06:02 -06:00
bio-integrity.c
block: remove bio_rewind_iter()
2018-09-06 15:12:24 -06:00
bio.c
This is the 4.19-rc6 release
2018-10-01 08:58:57 -06:00
blk-cgroup.c
This is the 4.19-rc6 release
2018-10-01 08:58:57 -06:00
blk-core.c
This is the 4.19-rc6 release
2018-10-01 08:58:57 -06:00
blk-exec.c
blk-flush.c
blk-integrity.c
block: merge BIOVEC_SEG_BOUNDARY into biovec_phys_mergeable
2018-09-24 12:33:57 -06:00
blk-ioc.c
block, mm: remove unnecessary __GFP_HIGH flag
2018-07-09 09:07:54 -06:00
blk-iolatency.c
blk-iolatency: keep track of previous windows stats
2018-09-28 11:47:32 -06:00
blk-lib.c
block: fix infinite loop if the device loses discard capability
2018-07-09 09:07:54 -06:00
blk-map.c
blk-merge.c
block: merge BIOVEC_SEG_BOUNDARY into biovec_phys_mergeable
2018-09-24 12:33:57 -06:00
blk-mq-cpumap.c
blk-mq-debugfs-zoned.c
blk-mq-debugfs.c
blk-mq-debugfs: Also show requests that have not yet been started
2018-10-05 08:16:58 -06:00
blk-mq-debugfs.h
blk-mq-pci.c
blk-mq: code clean-up by adding an API to clear set->mq_map
2018-07-09 09:07:53 -06:00
blk-mq-rdma.c
blk-mq-sched.c
blk-mq: init hctx sched after update ctx and hctx mapping
2018-08-21 09:02:55 -06:00
blk-mq-sched.h
block: move call of scheduler's ->completed_request() hook
2018-09-27 17:34:52 -06:00
blk-mq-sysfs.c
blk-mq-tag.c
This is the 4.19-rc6 release
2018-10-01 08:58:57 -06:00
blk-mq-tag.h
blk-mq-virtio.c
blk-mq.c
blk-mq: complete req in softirq context in case of single queue
2018-10-08 10:50:43 -06:00
blk-mq.h
blk-mq: issue directly if hw queue isn't busy in case of 'none'
2018-07-17 16:04:00 -06:00
blk-pm.c
blk-mq: Enable support for runtime power management
2018-09-26 15:11:29 -06:00
blk-pm.h
block: Split blk_pm_add_request() and blk_pm_put_request()
2018-09-26 15:11:28 -06:00
blk-rq-qos.c
blk-rq-qos: make depth comparisons unsigned
2018-07-22 11:30:53 -06:00
blk-rq-qos.h
blk-rq-qos: make depth comparisons unsigned
2018-07-22 11:30:53 -06:00
blk-settings.c
block: allow max_discard_segments to be stacked
2018-07-24 14:46:39 -06:00
blk-softirq.c
blk-mq: complete req in softirq context in case of single queue
2018-10-08 10:50:43 -06:00
blk-stat.c
block: export blk_stat_enable_accounting()
2018-09-27 17:34:54 -06:00
blk-stat.h
blk-stat: export helpers for modifying blk_rq_stat
2018-07-09 09:07:54 -06:00
blk-sysfs.c
blk-wbt: don't maintain inflight counts if disabled
2018-08-23 09:34:46 -06:00
blk-tag.c
blk-throttle.c
blkcg: consolidate bio_issue_init to be a part of core
2018-09-21 20:29:08 -06:00
blk-timeout.c
blk-wbt.c
blk-wbt: remove dead code
2018-08-27 13:32:12 -06:00
blk-wbt.h
block: remove external dependency on wbt_flags
2018-07-09 09:07:54 -06:00
blk-zoned.c
blk.h
block: remove ARCH_BIOVEC_PHYS_MERGEABLE
2018-09-26 08:45:11 -06:00
bounce.c
blkcg: remove bio->bi_css and instead use bio->bi_blkg
2018-09-21 20:29:13 -06:00
bsg-lib.c
block/bsg-lib: use PTR_ERR_OR_ZERO to simplify the flow path
2018-08-01 09:13:03 -06:00
bsg.c
block: bsg: move atomic_t ref_count variable to refcount API
2018-08-27 19:17:02 -06:00
cfq-iosched.c
blkcg: fix ref count issue with bio_blkcg using task_css
2018-09-21 20:29:02 -06:00
cmdline-parser.c
compat_ioctl.c
deadline-iosched.c
elevator.c
This is the 4.19-rc6 release
2018-10-01 08:58:57 -06:00
genhd.c
This is the 4.19-rc6 release
2018-10-01 08:58:57 -06:00
ioctl.c
ioprio.c
Kconfig
block: Move power management code into a new source file
2018-09-26 15:11:28 -06:00
Kconfig.iosched
kyber-iosched.c
kyber: fix integer overflow of latency targets on 32-bit
2018-09-28 10:49:39 -06:00
Makefile
block: Move power management code into a new source file
2018-09-26 15:11:28 -06:00
mq-deadline.c
noop-iosched.c
opal_proto.h
partition-generic.c
block: use nanosecond resolution for iostat
2018-09-21 20:26:59 -06:00
scsi_ioctl.c
sed-opal.c
t10-pi.c
block: move dif_prepare/dif_complete functions to block layer
2018-07-30 08:27:02 -06:00