blk-mq: support per-distpatch_queue flush machinery
This patch supports to run one single flush machinery for each blk-mq dispatch queue, so that: - current init_request and exit_request callbacks can cover flush request too, then the buggy copying way of initializing flush request's pdu can be fixed - flushing performance gets improved in case of multi hw-queue In fio sync write test over virtio-blk(4 hw queues, ioengine=sync, iodepth=64, numjobs=4, bs=4K), it is observed that througput gets increased a lot over my test environment: - throughput: +70% in case of virtio-blk over null_blk - throughput: +30% in case of virtio-blk over SSD image The multi virtqueue feature isn't merged to QEMU yet, and patches for the feature can be found in below tree: git://kernel.ubuntu.com/ming/qemu.git v2.1.0-mq.4 And simply passing 'num_queues=4 vectors=5' should be enough to enable multi queue(quad queue) feature for QEMU virtio-blk. Suggested-by:Christoph Hellwig <hch@lst.de> Signed-off-by:
Ming Lei <ming.lei@canonical.com> Signed-off-by:
Jens Axboe <axboe@fb.com>
Showing
- block/blk-core.c 1 addition, 1 deletionblock/blk-core.c
- block/blk-flush.c 14 additions, 7 deletionsblock/blk-flush.c
- block/blk-mq.c 24 additions, 26 deletionsblock/blk-mq.c
- block/blk-sysfs.c 2 additions, 2 deletionsblock/blk-sysfs.c
- block/blk.h 13 additions, 3 deletionsblock/blk.h
- include/linux/blk-mq.h 6 additions, 0 deletionsinclude/linux/blk-mq.h
Loading
Please register or sign in to comment