Created attachment 1196164 [details] Guest XML Description of problem: If a guest is created: * on a host with more than one NUMA node * and the guest is backed with host hugepages using either: <memoryBacking><hugepages/></memoryBacking> or <memoryBacking><hugepages><page size='XX' unit='KiB' nodeset='YY'/></hugepages></memoryBacking> (Where XX, YY and ZZ are set appropriately for your host.) * and NUMA placement is specified for the hugepages using: <numatune><memory mode='strict' nodeset='ZZ'/></numatune> Then hugepages are allocated without respecting the placement given in the numatune block. The guest will start even if the NUMA policy is invalid (e.g. when nodeset contains nodes that don't exist). The problem is not seen if <cpu><numa><cell ...> and <numatune><memnode ...> are used to create guest NUMA nodes bound to host NUMA nodes. It is also not seen if the host does not have the cpuset cgroup mounted. (e.g. after "unmount /sys/fs/cgroup/cpuset".) This seems to be due to a fall-back path in libvirt being invoked that works differently. Version-Release number of selected component (if applicable): 2.2.0 How reproducible: Every time. Steps to Reproduce: 1. Create simple guest using virt-install. 2. Edit guest with virsh edit to add NUMA and hugepage XML. 3. Start guest. Actual results: Guest starts with hugepages allocated from incorrect NUMA host nodes. Expected results: Guest starts with hugepages allocated from host NUMA nodes according to policy given in guest XML or refuses to start if policy can't be followed. Additional info: Any fix should be careful not to affect migration.
Thank you for reporting this issue to the libvirt project. Unfortunately we have been unable to resolve this issue due to insufficient maintainer capacity and it will now be closed. This is not a reflection on the possible validity of the issue, merely the lack of resources to investigate and address it, for which we apologise. If you none the less feel the issue is still important, you may choose to report it again at the new project issue tracker https://gitlab.com/libvirt/libvirt/-/issues The project also welcomes contribution from anyone who believes they can provide a solution.