Skip to content

hvm: NUMA guest support

Andre Przywara xen-devel 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest4 patches 10 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4hvm: NUMA guest: extend memops hypercalltools/libxc/xc_domain.c xen/common/memory.c xen/include/public/memory.h+17 -108 replies
2/4hvm: NUMA guest: extend populate_physmap to use a nodetools/ioemu/vl.c tools/libxc/ia64/xc_ia64_hvm_build.c tools/libxc/ia64/xc_ia64_linux_restore.c +10 more+31 -240 replies
3/4hvm: NUMA guest: allocate memory and pin cpus according to guestnodes numbertools/libxc/xc_hvm_build.c tools/libxc/xenguest.h tools/libxc/xg_private.c +5 more+241 -652 replies
4/4hvm: NUMA guest: inject NUMA topology into the guesttools/firmware/hvmloader/acpi/acpi2_0.h tools/firmware/hvmloader/acpi/build.c tools/firmware/hvmloader/util.c +3 more+224 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/4] hvm: NUMA guest support

Hi all,

these patches introduce NUMA support for HVM guests. A new config option 'guestnodes' specifies the number of NUMA nodes the guest should see. Memory will be allocated from different (host) nodes, CPU affinity will be set accordingly and the guest will be educated about the topology via an SRAT-ACPI table.
This will allow guests which are greater than one host node (both in terms of number of VCPUs or total memory). On AMD Opteron platforms guests otherwise may use non-optimal memory access (from remote nodes), this somehow limits the number of VCPUS to the number of cores in one socket (2 or 4). Another issue solved with this is "fragmented" memory, where the total amount of free memory would be enough for a guest, but it cannot be allocated from a single node. Overcommitting of the number of nodes is currently not possible, so you need a NUMA machine to use this. I have seen performance penalties of 7-12% on Opterons with kernbench on guests with remote memory (numa=off or explicitly wrongly pinned). Explicitly pinning guests with cpus="x-y", omitting the guestnodes option or specifying guestnodes=0 will turn off the new code and revert to current behavior (automatic placement).

It would be nice if this still finds its way into 3.3. Please apply the following four patches in order, they should compile and run after each patch. More details in the respective mails.

Regards,
Andre.

Signature · 9 lines
Andre Przywara
AMD-Operating System Research Center (OSRC), Dresden, Germany
Tel: +49 351 277-84917
----to satisfy European Law for business letters:
AMD Saxony Limited Liability Company & Co. KG,
Wilschdorfer Landstr. 101, 01109 Dresden, Germany
Register Court Dresden: HRA 4896, General Partner authorized
to represent: AMD Saxony LLC (Wilmington, Delaware, US)
General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy