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

Re: [libvirt] [PATCH 2/3] numad: Ignore cpuset if placement is auto



On Wed, Apr 11, 2012 at 10:40:33PM +0800, Osier Yang wrote:
> 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.
> ---
>  docs/formatdomain.html.in |   10 +++++-----
>  src/conf/domain_conf.c    |   28 +++++++++++++++-------------
>  2 files changed, 20 insertions(+), 18 deletions(-)
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index a382d30..bb67cd1 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -365,11 +365,11 @@
>          "auto", defaults to "static" if <code>cpuset</code> is specified,
>          "auto" indicates the domain process will be pinned to the advisory
>          nodeset from querying numad, and the value of attribute
> -        <code>cpuset</code> will be overridden by the advisory nodeset
> -        from numad if it's specified. If both <code>cpuset</code> and
> -        <code>placement</code> are not specified, or if <code>placement</code>
> -        is "static", but no <code>cpuset</code> is specified, the domain
> -        process will be pinned to all the available physical CPUs.
> +        <code>cpuset</code> will be ignored if it's specified. If both
> +        <code>cpuset</code> and <code>placement</code> are not specified,
> +        or if <code>placement</code> is "static", but no <code>cpuset</code>
> +        is specified, the domain process will be pinned to all the
> +        available physical CPUs.
>        </dd>
>      </dl>
>  
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index c6b97e1..07dcc89 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)

  Okay since we default to static in case the user didn't explicitely
expressed the placement method, I'm fine with this this should not break
existing setups.

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel veillard com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/


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