From 90b721e43ec9232b5b218e891437bed04548e841 Mon Sep 17 00:00:00 2001 From: Henning Schild Date: Mon, 14 Dec 2015 15:58:05 -0500 Subject: [PATCH] qemu cgroups: move new threads to new cgroup after cpuset is set up Moving tasks to cgroups implied sched_setaffinity. Changing the cpus in a set implies the same for all tasks in the group. The old code put the the thread into the cpuset inherited from the machine cgroup, which allowed it to run outside of vcpupin for a short while. Signed-off-by: Henning Schild --- src/qemu/qemu_cgroup.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index 14cf657b77..1c406ce68e 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -1052,11 +1052,6 @@ qemuSetupCgroupForVcpu(virDomainObjPtr vm) true, &cgroup_vcpu) < 0) goto cleanup; - /* move the thread for vcpu to sub dir */ - if (virCgroupAddTask(cgroup_vcpu, - qemuDomainGetVcpuPid(vm, i)) < 0) - goto cleanup; - if (period || quota) { if (qemuSetupCgroupVcpuBW(cgroup_vcpu, period, quota) < 0) goto cleanup; @@ -1090,6 +1085,12 @@ qemuSetupCgroupForVcpu(virDomainObjPtr vm) if (qemuSetupCgroupCpusetCpus(cgroup_vcpu, cpumap) < 0) goto cleanup; } + + /* move the thread for vcpu to sub dir */ + if (virCgroupAddTask(cgroup_vcpu, + qemuDomainGetVcpuPid(vm, i)) < 0) + goto cleanup; + } virCgroupFree(&cgroup_vcpu); VIR_FREE(mem_mask); @@ -1222,11 +1223,6 @@ qemuSetupCgroupForIOThreads(virDomainObjPtr vm) true, &cgroup_iothread) < 0) goto cleanup; - /* move the thread for iothread to sub dir */ - if (virCgroupAddTask(cgroup_iothread, - def->iothreadids[i]->thread_id) < 0) - goto cleanup; - if (period || quota) { if (qemuSetupCgroupVcpuBW(cgroup_iothread, period, quota) < 0) goto cleanup; @@ -1253,6 +1249,11 @@ qemuSetupCgroupForIOThreads(virDomainObjPtr vm) goto cleanup; } + /* move the thread for iothread to sub dir */ + if (virCgroupAddTask(cgroup_iothread, + def->iothreadids[i]->thread_id) < 0) + goto cleanup; + virCgroupFree(&cgroup_iothread); } VIR_FREE(mem_mask); -- 2.39.5