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

[Xen-devel] [PATCH v4 00/15] Implement vcpu soft affinity for credit1

Take 4 for soft affinities.

Very briefly, what it does is allowing each vcpu to have:
 - an hard affinity, which they already do, and we usually call pinning. This
   is the list of pcpus where a vcpu is allowed to run;
 - a soft affinity, which this series introduces. This is the list of pcpus
   where a vcpu *prefers* to run.

Once that is done, per-vcpu NUMA-aware scheduling is easily implemented on top
of that, just by instructing libxl to issue the proper call to setup the soft
affinity of the domain's vcpus to be equal to its node-affinity.

In this version, I addressed all the comments I got during v3[*], mostly at the
libxl and xl level.  For xl, I re-organized and refactored the code, as it was
requested. For xl, I changed the interface as IanC suggested, so now there is
only one function dealing with both hard and soft affinities via 2 cpumaps,
either of which (but not both!) can be NULL. To honour libxl API stability,
LIBXL_API_VERSION #if-deffery is exploited, as also suggersted during v3

Release whise, George expressed himself in favour of a freeze exception here:

The patch series is available in the following git branch:

 git://xenbits.xen.org/people/dariof/xen.git numa/per-vcpu-affinity-v4

Thanks and Regards,

[*] http://bugs.xenproject.org/xen/mid/<20131118175544.31002.79574.stgit@Solace>


Dario Faggioli (15):
   a  xl: match output of vcpu-list with pinning syntax
      libxl: sanitize error handling in libxl_get_max_{cpus,nodes}
 n    libxl: introduce libxl_get_nr_cpus()
  ra  xl: allow for node-wise specification of vcpu pinning
   a  xl: implement and enable dryrun mode for `xl vcpu-pin'
   a  xl: test script for the cpumap parser (for vCPU pinning)
  r   xen: sched: rename v->cpu_affinity into v->cpu_hard_affinity
  r   xen: sched: introduce soft-affinity and use it instead d->node-affinity
  r   xen: derive NUMA node affinity from hard and soft CPU affinity
  r   xen: sched: DOMCTL_*vcpuaffinity works with hard and soft affinity
   a  libxc: get and set soft and hard affinity
      libxl: get and set soft affinity
      xl: enable getting and setting soft
*     xl: enable for specifying node-affinity in the config file
   a  libxl: automatic NUMA placement affects soft affinity

 n = new in v4
 r = has been 'Reviewed-by'
 a = has been 'Acked-by'
 * = has been 'Acked-by' but the implementation changed a bit
     (IanJ explicitly said to point this out)

 docs/man/xl.cfg.pod.5                           |   64 ++-
 docs/man/xl.pod.1                               |   24 +
 docs/misc/xl-numa-placement.markdown            |  162 +++++---
 tools/libxc/xc_domain.c                         |   47 +-
 tools/libxc/xenctrl.h                           |   44 ++
 tools/libxl/Makefile                            |    2 
 tools/libxl/check-xl-vcpupin-parse              |  294 ++++++++++++++
 tools/libxl/check-xl-vcpupin-parse.data-example |   53 +++
 tools/libxl/libxl.c                             |   96 ++++-
 tools/libxl/libxl.h                             |   41 ++
 tools/libxl/libxl_create.c                      |    6 
 tools/libxl/libxl_dom.c                         |   23 +
 tools/libxl/libxl_types.idl                     |    4 
 tools/libxl/libxl_utils.c                       |   76 ++++
 tools/libxl/libxl_utils.h                       |   47 +-
 tools/libxl/xl_cmdimpl.c                        |  482 +++++++++++++++--------
 tools/libxl/xl_cmdtable.c                       |    5 
 tools/ocaml/libs/xc/xenctrl_stubs.c             |    8 
 tools/python/xen/lowlevel/xc/xc.c               |    6 
 xen/arch/x86/traps.c                            |   13 -
 xen/common/domain.c                             |   86 ++--
 xen/common/domctl.c                             |   92 ++++
 xen/common/keyhandler.c                         |    4 
 xen/common/sched_credit.c                       |  161 +++-----
 xen/common/sched_sedf.c                         |    2 
 xen/common/schedule.c                           |   57 ++-
 xen/common/wait.c                               |   10 
 xen/include/public/domctl.h                     |   15 +
 xen/include/xen/sched.h                         |   14 -
 29 files changed, 1452 insertions(+), 486 deletions(-)
 create mode 100755 tools/libxl/check-xl-vcpupin-parse
 create mode 100644 tools/libxl/check-xl-vcpupin-parse.data-example

<<This happens because I choose it to happen!>> (Raistlin Majere)
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

Xen-devel mailing list



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