Re: [PATCH 0/3] virtio_blk: blk-mq io_poll support
From: Stefan Hajnoczi
Date: Thu Jun 03 2021 - 11:30:42 EST
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
Attachment:
signature.asc
Description: PGP signature