Message ID | 20210520141305.355961-1-stefanha@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | virtio_blk: blk-mq io_poll support | expand |
On Thu, May 20, 2021 at 03:13:02PM +0100, Stefan Hajnoczi wrote: > 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(-) Christoph and Jens: Any more thoughts on this irq toggling approach? Stefan
On Thu, Jun 03, 2021 at 04:30:25PM +0100, Stefan Hajnoczi wrote:
> Christoph and Jens: Any more thoughts on this irq toggling approach?
I think it would eventually come back and byte us and would much prefer
explicit poll queues.