Michael suggested to me a while ago to try MSI with virtio-blk and I
played with this small patch:
Index: qemu-kvm/hw/virtio-blk.c
===================================================================
--- qemu-kvm.orig/hw/virtio-blk.c
+++ qemu-kvm/hw/virtio-blk.c
@@ -416,6 +416,7 @@ VirtIODevice *virtio_blk_init(DeviceStat
s->vdev.get_config = virtio_blk_update_config;
s->vdev.get_features = virtio_blk_get_features;
s->vdev.reset = virtio_blk_reset;
+ s->vdev.nvectors = 2;
s->bs = bs;
s->rq = NULL;
if (strlen(ps = (char *)drive_get_serial(bs)))
which gave about 5% speedups on 4k sized reads and writes, see the full
iozone output I attached. Now getting the information about using
multiple MSI vectors from the command line to virtio-blk similar to how
virtio-net does seems extremly messy right now. Waiting for Gerd's
additional qdev patches to make it easier as a qdev property.