[libvirt] qemu: Bug: NUMA memory policy ignored in some situations

Sam Bobroff sam.bobroff at au1.ibm.com
Wed Aug 17 04:59:38 UTC 2016

Hi all,

I've found that if I create a QEMU guest that:

(a) is backed by host hugepages and
(b) specifies a host NUMA memory placement policy

... then the NUMA policy (b) is ignored.  It's even possible to start the guest
if the policy specifies that memory must come from non-existant host nodes.

Is this a bug?

(I ask because I suspect that it is a bug, and that it can't be fixed trivially
due to migration considerations. Is that true?)

A few more details:

I do (a) using this in the guest XML:
   <memoryBacking> <hugepages/> </memoryBacking>

And (b) using:
  <numatune> <memory mode='strict' nodeset='1'> </numatune>

If the XML contains <cpu><numa><cell ...> and <numatune><memnode ...> to bind
guest NUMA nodes to host NUMA nodes then the policy is followed and this
behaviour isn't seen. The guest can't be started if the policy specifies
invalid host nodes.

(Strangely, if the host doesn't have the cpuset cgroup mount set up or otherwise
lacks cgroup support, then the policy is not ignored. This appears to be due to
a fallback path in libvirt so it seems like NUMA memory policy is intended to
work in this situation.)


More information about the libvir-list mailing list