aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_internal.h
diff options
context:
space:
mode:
authorDario Faggioli <dario.faggioli@citrix.com>2012-07-26 15:41:54 +0100
committerDario Faggioli <dario.faggioli@citrix.com>2012-07-26 15:41:54 +0100
commitf5e3add94b9455922f3374e61acd60ffddb6b5de (patch)
tree549afc56133d1112497e523f715f9750da188d7e /tools/libxl/libxl_internal.h
parente98fee8390936477d369b9832ff9bb06594510c7 (diff)
downloadxen-f5e3add94b9455922f3374e61acd60ffddb6b5de.tar.gz
xen-f5e3add94b9455922f3374e61acd60ffddb6b5de.tar.bz2
xen-f5e3add94b9455922f3374e61acd60ffddb6b5de.zip
libxl: have NUMA placement deal with cpupools
In such a way that only the cpus belonging to the cpupool of the domain being placed are considered for the placement itself. This happens by filtering out all the nodes in which the cpupool has not any cpu from the placement candidates. After that ---as cpu pooling not necessarily happens at NUMA nodes boundaries--- we also make sure only the actual cpus that are part of the pool are considered when counting how much processors a placement candidate provides. Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools/libxl/libxl_internal.h')
-rw-r--r--tools/libxl/libxl_internal.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index fd1b0cedfa..4938510ec0 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -2568,6 +2568,10 @@ typedef int (*libxl__numa_candidate_cmpf)(const libxl__numa_candidate *c1,
* other hand, if not even one single candidate can be found, the function
* still returns successfully but cndt_found will be zero.
*
+ * Finally, suitable_cpumap is useful for telling that only the cpus in that
+ * mask should be considered when generating placement candidates (for
+ * example because of cpupools).
+ *
* It is up to the function to properly allocate cndt_out (by calling
* libxl__numa_candidate_alloc()), while it is the caller that should init
* (libxl__numa_candidate_init()) and free (libxl__numa_candidate_dispose())
@@ -2576,6 +2580,7 @@ typedef int (*libxl__numa_candidate_cmpf)(const libxl__numa_candidate *c1,
_hidden int libxl__get_numa_candidate(libxl__gc *gc,
uint32_t min_free_memkb, int min_cpus,
int min_nodes, int max_nodes,
+ const libxl_bitmap *suitable_cpumap,
libxl__numa_candidate_cmpf numa_cmpf,
libxl__numa_candidate *cndt_out,
int *cndt_found);