Eventually all qemu threads are supposed to be in the final cgroup
structure in one of the leaf cgroups (vcpuX, emulator). They should
never be in the main machine cgroup. That is for all thread related
controllers like cpuset, cpu, and cpuacct.
By excluding the threading related controllers we do not put the
task into the machine cgroup controllers just to move it out to
the emulator subgroup later.
Signed-off-by: Henning Schild <henning.schild(a)siemens.com>
---
src/qemu/qemu_cgroup.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index 41a583c..99fb5bf 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -789,7 +789,8 @@ qemuInitCgroup(virQEMUDriverPtr driver,
goto cleanup;
}
- if (virCgroupAddTask(priv->cgroup, vm->pid, -1) < 0) {
+ if (virCgroupAddTask(priv->cgroup, vm->pid,
+ ~VIR_CGROUP_THREAD_CONTROLLER_MASK) < 0) {
virErrorPtr saved = virSaveLastError();
virCgroupRemove(priv->cgroup);
virCgroupFree(&priv->cgroup);
--
2.4.10