
On Fri, Feb 05, 2016 at 04:44:46PM +0100, Peter Krempa wrote:
Rather than iterating 3 times for various settings this function aggregates all the code into single place. One of the other advantages is that it can then be reused for properly setting vCPU info on hotplug.
With this approach autoCpuset is also used when setting the process affinity rather than just via cgroups. ---
Notes: v3: - mention change to affinity in commit message - reorder affinity/cgroups - fix comment spacing
src/qemu/qemu_cgroup.c | 95 --------------------- src/qemu/qemu_cgroup.h | 1 - src/qemu/qemu_process.c | 215 +++++++++++++++++++++++++++++++++--------------- src/qemu/qemu_process.h | 4 + 4 files changed, 151 insertions(+), 164 deletions(-)
+ + if (cpumask) { + /* setup cgroups */ + if (cgroup_vcpu && + virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUSET)) { + if (mem_mask && + virCgroupSetCpusetMems(cgroup_vcpu, mem_mask) < 0) + goto cleanup; + + if (qemuSetupCgroupCpusetCpus(cgroup_vcpu, cpumask) < 0) + goto cleanup; + } +
+ /* setup legacy affinty */ + if (virProcessSetAffinity(vcpupid, cpumask) < 0) + goto cleanup;
This hunk...
+ } + + /* move the thread for vcpu to sub dir */ + if (cgroup_vcpu && + virCgroupAddTask(cgroup_vcpu, vcpupid) < 0) + goto cleanup; +
should go here after the thread has been moved to its cgroup dir to preserve the original order. Jan