[libvirt] Libvirt and qemu multiqueue net

It's been a while since qemu added support for multiqueue virtio-net. For more info follow [1]. From usage POV, libvirt is required to pass multiple FDs: qemu-kvm -netdev tap,id=hn0,fds=x:y:...:z,vhost=on,vhostfds=a:b:...:c -device virtio-net-pci,netdev=hn0,vectors=N ... where count(x:...:z) = M. We are strongly advised to use 1:1 ratio => M=N. The FDs for 'fds' argument can be obtained via: fd1 = open("/dev/net/tun") ioctl(fd1, TUNSETIFF, "tap") fd2 = open("/dev/net/tun") ioctl(fd2, TUNATTACHQUEUE, "tap") And what I am wondering about is, how to expose this to XML. Or do we even want to expose this instead of some smart automatic setting? There are not any other configurable knobs right now, but they may come in the future. Michal 1: http://www.linux-kvm.org/page/Multiqueue

On 03/12/2013 06:17 AM, Michal Privoznik wrote:
It's been a while since qemu added support for multiqueue virtio-net. For more info follow [1]. From usage POV, libvirt is required to pass multiple FDs:
qemu-kvm -netdev tap,id=hn0,fds=x:y:...:z,vhost=on,vhostfds=a:b:...:c -device virtio-net-pci,netdev=hn0,vectors=N ...
where count(x:...:z) = M. We are strongly advised to use 1:1 ratio => M=N.
The FDs for 'fds' argument can be obtained via:
fd1 = open("/dev/net/tun") ioctl(fd1, TUNSETIFF, "tap") fd2 = open("/dev/net/tun") ioctl(fd2, TUNATTACHQUEUE, "tap")
And what I am wondering about is, how to expose this to XML. Or do we even want to expose this instead of some smart automatic setting? There are not any other configurable knobs right now, but they may come in the future.
Well, there is the basic option to turn vhost-net on and off :-) I think this can be just an attribute of <driver>: <driver name='vhost' queues='5'/> (we're already using driver for vhost vs. qemu, so this seems a natural place to add it.)

On Tue, Mar 12, 2013 at 11:17:16AM +0100, Michal Privoznik wrote:
It's been a while since qemu added support for multiqueue virtio-net. For more info follow [1]. From usage POV, libvirt is required to pass multiple FDs:
qemu-kvm -netdev tap,id=hn0,fds=x:y:...:z,vhost=on,vhostfds=a:b:...:c -device virtio-net-pci,netdev=hn0,vectors=N ...
where count(x:...:z) = M. We are strongly advised to use 1:1 ratio => M=N.
You seem to be saying that the number of FDs we pass though be the same as the vectors=N setting you show. I thought that M:N referred to the ratio of tap FDs vs vhost FDs. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
participants (3)
-
Daniel P. Berrange
-
Laine Stump
-
Michal Privoznik