Skip to content

v2: KVM-userspace: add NUMA support for guests

Andre Przywara kvm 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest3 patches 9 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3v2: KVM-userspace: introduce -numa command line optionqemu/sysemu.h qemu/vl.c+122 -00 replies
2/3v2: KVM-userspace: allocate guest resources from different host nodesqemu/Makefile.target qemu/configure qemu/hw/fw_cfg.h +2 more+123 -00 replies
3/3v2: KVM-userspace: generate a SRAT table to describe the guests NUMA topologybios/rombios32.c+203 -40 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/3] v2: KVM-userspace: add NUMA support for guests

Hi,

this patch series introduces multiple NUMA nodes support within KVM guests. This is the second try incorporating several requests from the list:
- use the QEMU firmware configuration interface instead of CMOS-RAM
- detect presence of libnuma automatically, can be disabled with ./configure --disable-numa
This only applies to the host side, the command line and guest (BIOS) side are always built and functional, although this configuration is only useful for research and debugging
- use a more flexible command line interface allowing:
- specifying the distribution of memory across the guest nodes:

    mem:1536M;512M
  - specifying the distribution of the CPUs:
    cpu:0-2;3
  - specifying the host nodes the guest nodes should be pinned to:
    pin:3;2

All of these options are optional, in case of mem and cpu the resources are split equally across all guest nodes if omitted. Please note that at least in Linux SRAT takes precedence over E820, so the total usable memory will be the sum specified at the mem: option (although QEMU will still allocate the amount at -m). If pin: is omitted, the guest nodes will be pinned to those host nodes where the threads are happen to be scheduled at on start-up time. This requires the (v)getcpu (v)syscall to be usable, this is true for kernels up from 2.6.19 and glibc >= 2.6 (sched_getcpu()). I have a hack if glibc doesn't support this, tell me if you are interested. The only non-optional argument is the number of guest nodes, a possible command line looks like:
-numa 3,mem:1024M;512M;512M,cpu:0-1;2;3
Please note that you have to quote the semicolons on the shell.

The monitor command is left out for now and will be send later.

Please apply.

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