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

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

 



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)
-- 
1.7.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]