50 lines
1.7 KiB
Diff
50 lines
1.7 KiB
Diff
|
|
From 222d16af976dc08ee3ea2008d1dc68b00a1ccc9f Mon Sep 17 00:00:00 2001
|
||
|
|
From: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||
|
|
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 <vm> 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 <danielhb413@gmail.com>
|
||
|
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||
|
|
Signed-off-by: Jin Yan <jinyan12@huawei.com>
|
||
|
|
---
|
||
|
|
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
|
||
|
|
|