[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 00/19] Virtual NUMA for PV and HVM
Hi all This is version 2 of this series. This patch series implements virtual NUMA support for both PV and HVM guest. That is, admin can configure via libxl what virtual NUMA topology the guest sees. This is the stage 1 (basic vNUMA support) and part of stage 2 (vNUMA-ware ballooning, hypervisor side) described in my previous email to xen-devel [0]. This series is broken into several parts: 1. xen patches: vNUMA debug output and vNUMA-aware memory hypercall support. 2. libxc/libxl support for PV vNUMA. 3. libxc/libxl/hypervisor support for HVM vNUMA. 4. xl vNUMA configuration documentation and parser. I think one significant difference from Elena's work is that this patch series makes use of multiple vmemranges should there be a memory hole, instead of shrinking ram. This matches the behaviour of real hardware. The vNUMA auto placement algorithm is missing at the moment and Dario is working on it. This series can be found at: git://xenbits.xen.org/people/liuw/xen.git wip.vnuma-v2 With this series, the following configuration can be used to enabled virtual NUMA support, and it works for both PV and HVM guests. memory = 6000 vnuma_memory = [3000, 3000] vnuma_vcpu_map = [0, 1] vnuma_pnode_map = [0, 0] vnuma_vdistances = [ [10,30], [30,10] ] For example output of guest NUMA information, please look at [1]. Wei. [0] <20141111173606.GC21312@xxxxxxxxxxxxxxxxxxxxx> [1] <1416582421-10789-1-git-send-email-wei.liu2@xxxxxxxxxx> Changes in v2: 1. Make vnuma_vdistances mandatory. 2. Use nested list to specify distances among nodes. 3. Hvmloader uses hypercall to retrieve vNUMA information. 4. Fix some problems spotted by Jan. Wei Liu (19): xen: dump vNUMA information with debug key "u" xen: make two memory hypercalls vNUMA-aware libxc: allocate memory with vNUMA information for PV guest libxl: add emacs local variables in libxl_{x86,arm}.c libxl: introduce vNUMA types libxl: add vmemrange to libxl__domain_build_state libxl: introduce libxl__vnuma_config_check libxl: x86: factor out e820_host_sanitize libxl: functions to build vmemranges for PV guest libxl: build, check and pass vNUMA info to Xen for PV guest xen: handle XENMEMF_get_vnumainfo in compat_memory_op hvmloader: retrieve vNUMA information from hypervisor hvmloader: construct SRAT hvmloader: construct SLIT libxc: allocate memory with vNUMA information for HVM guest libxl: build, check and pass vNUMA info to Xen for HVM guest libxl: disallow memory relocation when vNUMA is enabled libxlutil: nested list support xl: vNUMA support docs/man/xl.cfg.pod.5 | 39 ++++++ tools/firmware/hvmloader/Makefile | 2 +- tools/firmware/hvmloader/acpi/acpi2_0.h | 61 +++++++++ tools/firmware/hvmloader/acpi/build.c | 109 +++++++++++++++ tools/firmware/hvmloader/hvmloader.c | 3 + tools/firmware/hvmloader/vnuma.c | 84 ++++++++++++ tools/firmware/hvmloader/vnuma.h | 56 ++++++++ tools/libxc/include/xc_dom.h | 5 + tools/libxc/include/xenguest.h | 7 + tools/libxc/xc_dom_x86.c | 72 ++++++++-- tools/libxc/xc_hvm_build_x86.c | 224 +++++++++++++++++++----------- tools/libxc/xc_private.h | 2 + tools/libxl/Makefile | 2 +- tools/libxl/libxl_arch.h | 6 + tools/libxl/libxl_arm.c | 17 +++ tools/libxl/libxl_create.c | 9 ++ tools/libxl/libxl_dm.c | 6 +- tools/libxl/libxl_dom.c | 99 ++++++++++++++ tools/libxl/libxl_internal.h | 18 +++ tools/libxl/libxl_types.idl | 9 ++ tools/libxl/libxl_vnuma.c | 228 +++++++++++++++++++++++++++++++ tools/libxl/libxl_x86.c | 113 +++++++++++++-- tools/libxl/libxlu_cfg.c | 180 ++++++++++++++---------- tools/libxl/libxlu_cfg_i.h | 15 +- tools/libxl/libxlu_cfg_y.c | 110 +++++++-------- tools/libxl/libxlu_cfg_y.h | 2 +- tools/libxl/libxlu_cfg_y.y | 19 ++- tools/libxl/libxlu_internal.h | 24 +++- tools/libxl/libxlutil.h | 11 +- tools/libxl/xl_cmdimpl.c | 147 ++++++++++++++++++++ xen/arch/x86/numa.c | 47 ++++++- xen/common/compat/memory.c | 38 ++++++ xen/common/kernel.c | 1 + xen/common/memory.c | 58 +++++++- xen/include/public/features.h | 3 + xen/include/public/memory.h | 2 + xen/include/xlat.lst | 2 + 37 files changed, 1568 insertions(+), 262 deletions(-) create mode 100644 tools/firmware/hvmloader/vnuma.c create mode 100644 tools/firmware/hvmloader/vnuma.h create mode 100644 tools/libxl/libxl_vnuma.c -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |