Work is underway to add per-virtqueue IOThread mapping to QEMU's virtio-blk and virtio-scsi devices. Currently each device instance can be associated with just one IOThread where all virtqueues are processed. This is known to be a bottleneck and prevents true multi-queue operation because all I/O requests are funneled through a single IOThread on the host. The new multi-queue support in QEMU will allow individual virtqueues to be mapped to an IOThread. It is likely that most users will wish to spread virtqueues round-robin across a set of IOThreads. New domain XML syntax is necessary to expose this feature once it becomes available in QEMU. I am filing this BZ now so there is time to discuss the feature and so that libvirt support can be developed in parallel to QEMU.
I guess one question I have is how the qemu and libvirt syntax going to look like to configure this feature.
I have posted a QEMU RFC patch series: https://lore.kernel.org/qemu-devel/20230118194732.1258208-1-stefanha@redhat.com/T/#t Please see this patch series for proposed libvirt domain XML and the QEMU command-line syntax.
RFC patches for libvirt which build upon the proposed qemu syntax are part of the following series addressing multiple iothread features: https://listman.redhat.com/archives/libvir-list/2023-March/238250.html