From: Osier Yang Date: Wed, 11 Apr 2012 14:40:33 +0000 (+0800) Subject: numad: Ignore cpuset if placement is auto X-Git-Tag: v0.9.12-rc1~89 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8fb2164cfff35ce0b87f1d513a0f3ca5111d7880;p=thirdparty%2Flibvirt.git numad: Ignore cpuset if placement is auto As explained in previous patch, numad will balance the affinity dynamically, so reflecting the cpuset from numad at the first time doesn't make much case, and may just could cause confusion. --- diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index a382d30098..bb67cd1e0e 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -365,11 +365,11 @@ "auto", defaults to "static" if cpuset is specified, "auto" indicates the domain process will be pinned to the advisory nodeset from querying numad, and the value of attribute - cpuset will be overridden by the advisory nodeset - from numad if it's specified. If both cpuset and - placement are not specified, or if placement - is "static", but no cpuset is specified, the domain - process will be pinned to all the available physical CPUs. + cpuset will be ignored if it's specified. If both + cpuset and placement are not specified, + or if placement is "static", but no cpuset + is specified, the domain process will be pinned to all the + available physical CPUs. diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a9c5cbce21..b28ae5cae2 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -7884,19 +7884,6 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, } } - tmp = virXPathString("string(./vcpu[1]/@cpuset)", ctxt); - if (tmp) { - char *set = tmp; - def->cpumasklen = VIR_DOMAIN_CPUMASK_LEN; - if (VIR_ALLOC_N(def->cpumask, def->cpumasklen) < 0) { - goto no_memory; - } - if (virDomainCpuSetParse(set, 0, def->cpumask, - def->cpumasklen) < 0) - goto error; - VIR_FREE(tmp); - } - tmp = virXPathString("string(./vcpu[1]/@placement)", ctxt); if (tmp) { if ((def->placement_mode = @@ -7913,6 +7900,21 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC; } + if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC) { + tmp = virXPathString("string(./vcpu[1]/@cpuset)", ctxt); + if (tmp) { + char *set = tmp; + def->cpumasklen = VIR_DOMAIN_CPUMASK_LEN; + if (VIR_ALLOC_N(def->cpumask, def->cpumasklen) < 0) { + goto no_memory; + } + if (virDomainCpuSetParse(set, 0, def->cpumask, + def->cpumasklen) < 0) + goto error; + VIR_FREE(tmp); + } + } + /* Extract cpu tunables. */ if (virXPathULong("string(./cputune/shares[1])", ctxt, &def->cputune.shares) < 0)