← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1422775] [NEW] nova libvirt driver assumes qemu support for NUMA pinning

 

Public bug reported:

In the trunk (kilo) nova libvirt code there are a numberr of places
where we assume that qemu can provide NUMA-related functionality that
was only introduced in a very recent version (2.1).  If we try to use
this code with older qemu it triggers an exception and fails to boot the
instance.

In some cases, we can get partial NUMA support by removing some of the
more advanced functionality (per-numa-node pinning, per-numa-node
hugepages).  This would arguably be the best solution.

At the very least, we should introduce a QEMU version check and fail
cleanly with a proper error code rather than with cryptic errors that
are complicated to resolve.

Known affected areas:

virt.libvirt.config.LibvirtConfigGuestMemoryBacking.format_dom()
--the "page" subelement of the "hugepages" element is not supported by earlier qemu versions

virt.libvirt.config.LibvirtConfigGuestNUMATune.format_dom()
--the "memnode" subelement of the "numatune" element is not supported by earlier qemu versions

Commenting out the code that configures these elements allows NUMA to
work (with somewhat reduced functionality) on an older qemu version, or
a newer one without NUMA support (like Ubuntu 14.10 at the time of
writing this).

I think we should add a qemu version test against 2.1 and use that to
determine whether or not to support the more advanced NUMA capabilities.
If Ubuntu doesn't fix their qemu in 14.10 then we might even want to add
some kind of runtime capabilities test to check whether qemu was built
with numa support.

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: compute

** Description changed:

  In the trunk (kilo) nova libvirt code there are a numberr of places
  where we assume that qemu can provide NUMA-related functionality that
  was only introduced in a very recent version (2.1).  If we try to use
  this code with older qemu it triggers an exception and fails to boot the
  instance.
  
  In some cases, we can get partial NUMA support by removing some of the
  more advanced functionality (per-numa-node pinning, per-numa-node
  hugepages).  This would arguably be the best solution.
  
  At the very least, we should introduce a QEMU version check and fail
  cleanly with a proper error code rather than with cryptic errors that
  are complicated to resolve.
  
  Known affected areas:
  
  virt.libvirt.config.LibvirtConfigGuestMemoryBacking.format_dom()
  --the "page" subelement of the "hugepages" element is not supported by earlier qemu versions
  
  virt.libvirt.config.LibvirtConfigGuestNUMATune.format_dom()
  --the "memnode" subelement of the "numatune" element is not supported by earlier qemu versions
  
  Commenting out the code that configures these elements allows NUMA to
  work (with somewhat reduced functionality) on an older qemu version, or
  a newer one without NUMA support (like Ubuntu 14.10 at the time of
  writing this).
+ 
+ I think we should add a qemu version test against 2.1 and use that to
+ determine whether or not to support the more advanced NUMA capabilities.
+ If Ubuntu doesn't fix their qemu in 14.10 then we might even want to add
+ some kind of runtime capabilities test to check whether qemu was built
+ with numa support.

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1422775

Title:
  nova libvirt driver assumes qemu support for NUMA pinning

Status in OpenStack Compute (Nova):
  New

Bug description:
  In the trunk (kilo) nova libvirt code there are a numberr of places
  where we assume that qemu can provide NUMA-related functionality that
  was only introduced in a very recent version (2.1).  If we try to use
  this code with older qemu it triggers an exception and fails to boot
  the instance.

  In some cases, we can get partial NUMA support by removing some of the
  more advanced functionality (per-numa-node pinning, per-numa-node
  hugepages).  This would arguably be the best solution.

  At the very least, we should introduce a QEMU version check and fail
  cleanly with a proper error code rather than with cryptic errors that
  are complicated to resolve.

  Known affected areas:

  virt.libvirt.config.LibvirtConfigGuestMemoryBacking.format_dom()
  --the "page" subelement of the "hugepages" element is not supported by earlier qemu versions

  virt.libvirt.config.LibvirtConfigGuestNUMATune.format_dom()
  --the "memnode" subelement of the "numatune" element is not supported by earlier qemu versions

  Commenting out the code that configures these elements allows NUMA to
  work (with somewhat reduced functionality) on an older qemu version,
  or a newer one without NUMA support (like Ubuntu 14.10 at the time of
  writing this).

  I think we should add a qemu version test against 2.1 and use that to
  determine whether or not to support the more advanced NUMA
  capabilities.  If Ubuntu doesn't fix their qemu in 14.10 then we might
  even want to add some kind of runtime capabilities test to check
  whether qemu was built with numa support.

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


Follow ups

References