]> xenbits.xensource.com Git - libvirt.git/commitdiff
use cpuset to manage numa
authorHu Tao <hutao@cn.fujitsu.com>
Tue, 20 Dec 2011 08:34:59 +0000 (16:34 +0800)
committerEric Blake <eblake@redhat.com>
Tue, 20 Dec 2011 16:32:23 +0000 (09:32 -0700)
This patch also sets cgroup cpuset parameters for numatune.

src/qemu/qemu_cgroup.c

index d663798abc2943300b63b179d372e627a8600667..2d970d6986ad033e9bb901055aea72bc2cf3ba55 100644 (file)
@@ -389,6 +389,25 @@ int qemuSetupCgroup(struct qemud_driver *driver,
         }
     }
 
+    if (vm->def->numatune.memory.nodemask &&
+        vm->def->numatune.memory.mode == VIR_DOMAIN_NUMATUNE_MEM_STRICT &&
+        qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_CPUSET)) {
+        char *mask = virDomainCpuSetFormat(vm->def->numatune.memory.nodemask, VIR_DOMAIN_CPUMASK_LEN);
+        if (!mask) {
+            qemuReportError(VIR_ERR_INTERNAL_ERROR,
+                            _("failed to convert memory nodemask"));
+            goto cleanup;
+        }
+
+        rc = virCgroupSetCpusetMems(cgroup, mask);
+        VIR_FREE(mask);
+        if (rc != 0) {
+            virReportSystemError(-rc,
+                                 _("Unable to set cpuset.mems for domain %s"),
+                                 vm->def->name);
+            goto cleanup;
+        }
+    }
 done:
     virCgroupFree(&cgroup);
     return 0;