v3 of: https://listman.redhat.com/archives/libvir-list/2022-June/232595.html diff to v2: - Instead of opting out, the feature is disabled by default. Until we address CPU pinning (and other points I've raised in v2 cover letter) users might face a performance problems if this was turned on automagically. - Introduced new 'vcpus' state, where only vCPUs are placed into a scheduling group, but not emulator nor any of helper processes. - Reworked how helper processes are placed into scheduling group. Instead of placing them into the group after they were spawned, create a dummy child, let it create new group and then use virCommandRunAmong(). This covers also the case where a helper might have spawned more threads/child processes. - As a result of this rework, we no longer need to expose getXXXPid() functions that I introduced in v2 (never merged them though). Big thanks to Dan and Dario for their review and valuable inputs! Michal Prívozník (8): virprocess: Core Scheduling support virCommand: Introduce APIs for core scheduling qemu_conf: Introduce a knob to set SCHED_CORE qemu_domain: Introduce qemuDomainSchedCoreStart() qemu_process: Enable SCHED_CORE for QEMU process qemu: Enable SCHED_CORE for helper processes qemu: Enable SCHED_CORE for vCPUs qemu: Enable for vCPUs on hotplug src/libvirt_private.syms | 6 ++ src/qemu/libvirtd_qemu.aug | 1 + src/qemu/qemu.conf.in | 16 ++++ src/qemu/qemu_conf.c | 38 +++++++++ src/qemu/qemu_conf.h | 13 +++ src/qemu/qemu_domain.c | 105 ++++++++++++++++++++++++ src/qemu/qemu_domain.h | 12 +++ src/qemu/qemu_hotplug.c | 2 +- src/qemu/qemu_process.c | 118 ++++++++++++++++++++++++++- src/qemu/qemu_process.h | 3 +- src/qemu/qemu_security.c | 11 +++ src/qemu/qemu_virtiofs.c | 11 +++ src/qemu/test_libvirtd_qemu.aug.in | 1 + src/util/vircommand.c | 63 +++++++++++++++ src/util/vircommand.h | 5 ++ src/util/virprocess.c | 124 +++++++++++++++++++++++++++++ src/util/virprocess.h | 8 ++ 17 files changed, 533 insertions(+), 4 deletions(-) -- 2.35.1