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