Add support for KVM multiqueue virtio-net
authorLuka Blaskovic <lblasc@znode.net>
Fri, 6 Jun 2014 10:58:22 +0000 (12:58 +0200)
committerJose A. Lopes <jabolopes@google.com>
Fri, 6 Jun 2014 15:45:54 +0000 (17:45 +0200)
commit47eca2c618107b09c8474539963fb05f0c692003
treee6fe524495c78cfffb48aae4a0aed3e3930ef3cc
parentb9ece334777d89edd424a899e7a989a100bfce2f
Add support for KVM multiqueue virtio-net

This patch adds support for multiqueue virtio-net[1] which sets a number of
queues (file descriptors) from virtio_net_queues parameter for tap device
to parallelize packets sending or receiving. Tap devices will be created with
MULTI_QUEUE (IFF_MULTI_QUEUE) support.

KVM paravirtual nics (virtio-net) are only one which supports this feature.
Number of queues are limited by kernel tap implementation (currently to 8).
Instances must manually set number of queues, on Linux using:

ethtool -L ethX combined $queues

Network device options logic is moved to separate method
_GetNetworkDeviceFeatures which is now properly reused in hotplugging part.
This also fixes unreported bug when vhost_net parameter is set to true,
hotplugged network device will be created without "vhost=on" parameter.

[1] http://www.linux-kvm.org/page/Multiqueue

Signed-off-by: Luka Blaskovic <lblasc@znode.net>
Reviewed-by: Jose A. Lopes <jabolopes@google.com>
lib/hypervisor/hv_base.py
lib/hypervisor/hv_kvm/__init__.py
lib/hypervisor/hv_kvm/netdev.py
man/gnt-instance.rst
src/Ganeti/Constants.hs