[libvirt] [PATCH v6 3/4] libxl: vnuma support
Jim Fehlig
jfehlig at suse.com
Fri Nov 10 18:29:58 UTC 2017
On 11/02/2017 09:47 AM, Wim Ten Have wrote:
> From: Wim ten Have <wim.ten.have at oracle.com>
>
> This patch generates a NUMA distance-aware libxl description from the
> information extracted from a NUMA distance-aware libvirt XML file.
>
> By default, if no NUMA node distance information is supplied in the
> libvirt XML file, this patch uses the distances 10 for local and 20
> for remote nodes/sockets."
>
> Signed-off-by: Wim ten Have <wim.ten.have at oracle.com>
> ---
> Changes on v1:
> - Fix function calling (coding) standards.
> - Use virReportError(...) under all failing circumstances.
> - Reduce redundant (format->parse) code sorting bitmaps.
> - Avoid non GNU shorthand notations, difficult code practice.
> Changes on v2:
> - Have autonomous defaults applied from virDomainNumaGetNodeDistance.
> - Automatically make Xen driver simulate vnuma pnodes on non NUMA h/w.
> - Compute 'memory unit=' making it the sum of all node memory.
> Changes on v4:
> - Escape virDomainNumaGetNodeCount() if effective.
> Changes on v5:
> - User VIR_WARN to warn instead of virReportError() abuse without error.
> - Have ACPI set by libxlDomainDefPostParse() when virDomainNumaGetNodeCount
> suggests such for x86_64 under HVM.
> - Remove VIR_DOMAIN_DEF_PARSE_ABI_UPDATE.
> ---
> src/libxl/libxl_conf.c | 119 +++++++++++++++++++++++++++++++++++++++++++++++
> src/libxl/libxl_domain.c | 7 ++-
> 2 files changed, 125 insertions(+), 1 deletion(-)
>
> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
> index ecbabfc79..c0dd634cd 100644
> --- a/src/libxl/libxl_conf.c
> +++ b/src/libxl/libxl_conf.c
> @@ -593,6 +593,120 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
> return 0;
> }
>
> +#ifdef LIBXL_HAVE_VNUMA
> +static int
> +libxlMakeVnumaList(virDomainDefPtr def,
> + libxl_ctx *ctx,
> + libxl_domain_config *d_config)
> +{
> + int ret = -1;
> + size_t i, j;
> + size_t nr_nodes;
> + size_t num_vnuma;
> + bool simulate = false;
> + virBitmapPtr bitmap = NULL;
> + virDomainNumaPtr numa = def->numa;
> + libxl_domain_build_info *b_info = &d_config->b_info;
> + libxl_physinfo physinfo;
> + libxl_vnode_info *vnuma_nodes = NULL;
> +
> + if (!numa)
> + return 0;
> +
> + num_vnuma = virDomainNumaGetNodeCount(numa);
> + if (!num_vnuma)
> + return 0;
> +
> + libxl_physinfo_init(&physinfo);
> + if (libxl_get_physinfo(ctx, &physinfo) < 0) {
> + libxl_physinfo_dispose(&physinfo);
> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("libxl_get_physinfo_info failed"));
> + return -1;
> + }
> + nr_nodes = physinfo.nr_nodes;
> + libxl_physinfo_dispose(&physinfo);
> +
> + if (num_vnuma > nr_nodes) {
> + VIR_WARN("Number of configured numa cells %zu exceeds the physical available nodes %zu, guest simulates numa",
> + num_vnuma, nr_nodes);
To be a little more explicit, I've reworded this to
"Number of configured numa cells %zu exceeds available physical nodes %zu. All
cells will use physical node 0"
Also fixed-up the indentation of the VIR_WARN parameters.
Reviewed-by: Jim Fehlig <jfehlig at suse.com>
Regards,
Jim
More information about the libvir-list
mailing list