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