[Bug 1570631] Re: With hw:vif_multiqueue_enabled, libvirt driver fails with VM larger than 8 vCPU

Kengo Sakai kengo.sakai at dena.com
Tue Jun 14 05:28:52 UTC 2016


Is there anyone who knows how to retrieve MAX_TAP_QUEUES from the running system? I looked at drivers/net/tun.c but couldn't find how to do it.
MAX_TAP_QUEUES is 8 in kernel 3.x[1] and it is 256 in kernel 4.x[2]. I want to find MAX_TAP_QUEUES programmatically without hardcoding its value for each kernel version.

[1]https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/drivers/net/tun.c?id=refs/tags/v3.18.35#n118
[2]https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/drivers/net/tun.c?id=refs/tags/v4.1.26#n128

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to nova in Ubuntu.
https://bugs.launchpad.net/bugs/1570631

Title:
  With hw:vif_multiqueue_enabled, libvirt driver fails with VM larger
  than 8 vCPU

Status in OpenStack Compute (nova):
  In Progress
Status in nova package in Ubuntu:
  Triaged

Bug description:
  Nova version: 2:12.0.0-ubuntu2~cloud0
  Release: Liberty
  Compute node kernel: 3.19.0-47-generic
  Hypervisor: Libvirt+KVM
  libvirtd version: 1.2.16
  Neutron network (Linuxbridge Agent)

  
  When attempting to instantiate an VM based on an image with the metadata hw:vif_multiqueue_enabled=true, creation will fail if the flavor has >8 cores assigned.  If the flavor specifies 8 or fewer vCPUs, creation is successful.  

  From /var/log/libvirt/libvirtd.log:

  2016-04-14 21:19:08.161+0000: 3651: error : virNetDevTapCreate:290 :
  Unable to create tap device tap11db5bd0-3a: Argument list too long

  This is the error throw when attempting to create the VM.

  I believe the reason is that in kernels prior to 4.0, the number of
  queues on a tap interface was limited to 8.

  Based on http://lxr.free-
  electrons.com/source/drivers/net/tun.c?v=3.19#L129, MAX_TAP_QUEUES
  resolves to 8 prior to kernel 4.0.

  In the libvirt vif driver (nova/virt/libvirt/vif.py), in
  __get_virtio_mq_settings, this limit is not respected when setting
  vhost_queues = flavor.cpus.  So when the domain XML is written for the
  guest, vhost_queues is used in the 'queues' argument in the driver.
  When this value is >8, it fails when attempting to create the tap
  interface.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1570631/+subscriptions



More information about the Ubuntu-openstack-bugs mailing list