This patch series implements blk_mq_ops->poll() so REQ_HIPRI requests can be polled. IOPS for 4k and 16k block sizes increases by 5-18% on a virtio-blk device with 4 virtqueues backed by an NVMe drive. - Benchmark: fio ioengine=pvsync2 numjobs=4 direct=1 - Guest: 4 vCPUs with one virtio-blk device (4 virtqueues) - Disk: Intel Corporation NVMe Datacenter SSD [Optane] [8086:2701] - CPU: Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz rw bs hipri=0 hipri=1 ------------------------------ randread 4k 149,426 170,763 +14% randread 16k 118,939 134,269 +12% randread 64k 34,886 34,906 0% randread 128k 17,655 17,667 0% randwrite 4k 138,578 163,600 +18% randwrite 16k 102,089 120,950 +18% randwrite 64k 32,364 32,561 0% randwrite 128k 16,154 16,237 0% read 4k 146,032 170,620 +16% read 16k 117,097 130,437 +11% read 64k 34,834 35,037 0% read 128k 17,680 17,658 0% write 4k 134,562 151,422 +12% write 16k 101,796 107,606 +5% write 64k 32,364 32,594 0% write 128k 16,259 16,265 0% Larger block sizes do not benefit from polling as much but the improvement is worthwhile for smaller block sizes. Stefan Hajnoczi (3): virtio: add virtioqueue_more_used() virtio_blk: avoid repeating vblk->vqs[qid] virtio_blk: implement blk_mq_ops->poll() include/linux/virtio.h | 2 + drivers/block/virtio_blk.c | 126 +++++++++++++++++++++++++++++------ drivers/virtio/virtio_ring.c | 17 +++++ 3 files changed, 123 insertions(+), 22 deletions(-) -- 2.31.1 _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization