[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 00/11] Add support for exact-node memory claims



The Xen toolstack supports claiming memory ahead of allocating it with the
intent of assisting bootstorms of massive VMs. This works ok for general VMs,
but falls appart miserably whenever the toolstack attempts to force placement
of specific NUMA nodes.

This series extends the in-hypervisor claim infrastructure to support per-node
claims, and propagates the knob all the way to xl.cfg.

A worthy future goal is the support of multi-node claims per domain, but the
objective of this series is far more modest and merely intends to enable
claiming memory on a single node for specific domains. This solves a
real-world use case of bundling many small VMs in a single NUMA machine.

The feature specifically allows combining domains with exact-node claims,
general claims and no claims at all in a consistent fashion.

Alejandro Vallejo (11):
  xen/memory: Mask XENMEMF_node() to 8 bits
  xen/page_alloc: Remove `claim` from domain_set_outstanding_pages()
  xen/page_alloc: Add static per-node counts of free pages
  xen: Add node argument to
    domain_{adjust_tot_pages,set_outstanding_pages}()
  xen: Create per-node outstanding claims
  xen/page_alloc: Hook per-node claims to alloc_heap_pages()
  xen/page_alloc: Set node affinity when claiming pages from an exact
    node
  xen/memory: Enable parsing NUMA node argument in XENMEM_claim_pages
  tools/xc: Add `node` argument to xc_domain_claim_pages()
  tools/xl: Expose a "claim_on_node" setting in xl.cfg
  docs/man: Document the new claim_on_node option

 docs/man/xl-numa-placement.7.pod     |   8 ++
 docs/man/xl.1.pod.in                 |   2 +-
 docs/man/xl.cfg.5.pod.in             |  14 +++
 tools/golang/xenlight/helpers.gen.go |   2 +
 tools/golang/xenlight/types.gen.go   |   1 +
 tools/include/xenctrl.h              |   1 +
 tools/include/xenguest.h             |   7 ++
 tools/libs/ctrl/xc_domain.c          |  13 ++-
 tools/libs/guest/xg_dom_core.c       |   1 +
 tools/libs/guest/xg_dom_x86.c        |  22 ++---
 tools/libs/light/libxl_dom.c         |   2 +
 tools/libs/light/libxl_types.idl     |   3 +-
 tools/xl/xl_parse.c                  |  11 +++
 xen/arch/x86/mm.c                    |   3 +-
 xen/arch/x86/mm/mem_sharing.c        |   4 +-
 xen/common/domain.c                  |   2 +-
 xen/common/grant_table.c             |   4 +-
 xen/common/memory.c                  |  25 +++++-
 xen/common/page_alloc.c              | 125 ++++++++++++++++++++++-----
 xen/include/public/memory.h          |   5 +-
 xen/include/xen/mm.h                 |   6 +-
 xen/include/xen/sched.h              |   3 +
 22 files changed, 216 insertions(+), 48 deletions(-)

-- 
2.48.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.