As I did previously in 4f588a1b46, libvirt needs to set virtio vectors.
Previously, we were advised to use vectors=N, where
N = 2 * (number of queues) + 1
However, just recently this advisory has changed on the Multiquue wiki
page [1] to:
N = 2 * (number of queues) + 2
1:
http://www.linux-kvm.org/page/Multiqueue#Enable_MQ_feature
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Notes:
I've had some discussion with qemu developers that qemu is the
best place to compute sane default [1]. And they agreed with me.
However, until they will do so, libvirt should pass the correct
value to make the whole feature work correctly.
1:
https://bugzilla.redhat.com/show_bug.cgi?id=1005626
src/qemu/qemu_command.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index ff0b2d5..18d0a64 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -5036,8 +5036,8 @@ qemuBuildNicDevStr(virDomainDefPtr def,
}
if (usingVirtio && vhostfdSize > 1) {
/* As advised at
http://www.linux-kvm.org/page/Multiqueue
- * we should add vectors=2*N+1 where N is the vhostfdSize */
- virBufferAsprintf(&buf, ",mq=on,vectors=%d", 2 * vhostfdSize + 1);
+ * we should add vectors=2*N+2 where N is the vhostfdSize */
+ virBufferAsprintf(&buf, ",mq=on,vectors=%d", 2 * vhostfdSize + 2);
}
if (vlan == -1)
virBufferAsprintf(&buf, ",netdev=host%s", net->info.alias);
--
1.9.0