From: Hu Tao Date: Tue, 20 Dec 2011 08:34:59 +0000 (+0800) Subject: use cpuset to manage numa X-Git-Tag: v0.9.9-rc1~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d3a721ad57d05be148f090775e649703e9589fc;p=thirdparty%2Flibvirt.git use cpuset to manage numa This patch also sets cgroup cpuset parameters for numatune. --- diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index d663798abc..2d970d6986 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -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;