From 222d16af976dc08ee3ea2008d1dc68b00a1ccc9f Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Thu, 11 Jun 2020 15:54:57 -0300 Subject: [PATCH] qemuDomainSetNumaParamsLive: set nodeset for root cgroup This function handles the change of NUMA nodeset for a given guest, setting CpusetMems for the emulator, vcpus and IOThread sub-groups. It doesn't set the same nodeset to the root cgroup though. This means that cpuset.mems of the root cgroup ends up holding the new nodeset and the old nodeset as well. For a guest with placement=strict, nodeset='0', doing virsh numatune 0 8 --live Will make cpuset.mems of emulator, vcpus and iothread to be "8", but cpuset.mems of the root cgroup will be "0,8". This means that any new tasks that ends up landing in the root cgroup, aside from the emulator/vcpus/iothread sub-groups, will be split between the old nodeset and the new nodeset, which is not what we want. cherry-pick from commit: 1b22dd6dd44202094e0f78f887cbe790c00e9ebc Signed-off-by: Daniel Henrique Barboza Reviewed-by: Michal Privoznik Signed-off-by: Jin Yan --- src/qemu/qemu_driver.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 8bc5368..cb049fe 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -9728,6 +9728,10 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm, virCgroupFree(&cgroup_temp); } + /* set nodeset for root cgroup */ + if (virCgroupSetCpusetMems(priv->cgroup, nodeset_str) < 0) + goto cleanup; + ret = 0; cleanup: virCgroupFree(&cgroup_temp); -- 1.8.3.1