On 9/7/26 12:47, Jedrzej Wasiukiewicz wrote:
Resctrl support in libvirt currently associates allocations and monitors with a set of vCPUs. This does not account for resource consumption by QEMU IOThreads, worker threads and emulator threads.
Allow cachetune, memorytune, energytune and their monitor elements to omit the vcpus attribute and apply to the whole QEMU process. Assigning the emulator process to the resctrl group before it creates threads lets all subsequently created threads inherit the same configuration.
Whole-process and per-vCPU allocations cannot be mixed within a domain. A monitor without vcpus inherits its enclosing allocation's scope. Thus, it monitors the whole process under a whole-process allocation and the allocation's vCPU set under a per-vCPU allocation.
This series was previously posted as:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/QFXZZ...
Changes since v1: - Rebased onto current master. - Split the independent resctrl domstats fixes into a separate series. - Added Christopher's Reviewed-by. - Dropped the NEWS patch.
Oh, we like to document user visible changes in the NEWS file.
Jedrzej Wasiukiewicz (4): conf: allow omitting vcpus in cachetune/memorytune/energytune conf: implement whole-process resctrl scope qemu: assign whole-process resctrl groups at domain start qemu: omit vcpus for whole-process resctrl monitor stats
docs/formatdomain.rst | 57 +++-- src/conf/domain_conf.c | 231 ++++++++++++------ src/conf/domain_conf.h | 2 + src/conf/schemas/domaincommon.rng | 48 ++-- src/qemu/qemu_driver.c | 24 +- src/qemu/qemu_process.c | 40 ++- src/util/virresctrl.c | 10 +- .../cachetune-monitor-empty-vcpus.xml | 30 +++ .../cachetune-monitor-inherit-alloc.xml | 30 +++ .../cachetune-wholeprocess-duplicate.xml | 32 +++ ...chetune-wholeprocess-monitor-duplicate.xml | 31 +++ .../cachetune-wholeprocess-monitors.xml | 31 +++ .../energytune-colliding-monitor.xml | 30 +++ .../energytune-wholeprocess.xml | 29 +++ .../memorytune-wholeprocess.xml | 29 +++ .../resctrl-wholeprocess-alloc-monitor.xml | 32 +++ .../resctrl-wholeprocess-layering.xml | 32 +++ .../resctrl-wholeprocess-monitors.xml | 33 +++ .../cachetune-monitor-inherit-alloc.xml | 30 +++ tests/genericxml2xmltest.c | 11 + 20 files changed, 662 insertions(+), 130 deletions(-) create mode 100644 tests/genericxml2xmlindata/cachetune-monitor-empty-vcpus.xml create mode 100644 tests/genericxml2xmlindata/cachetune-monitor-inherit-alloc.xml create mode 100644 tests/genericxml2xmlindata/cachetune-wholeprocess-duplicate.xml create mode 100644 tests/genericxml2xmlindata/cachetune-wholeprocess-monitor-duplicate.xml create mode 100644 tests/genericxml2xmlindata/cachetune-wholeprocess-monitors.xml create mode 100644 tests/genericxml2xmlindata/energytune-colliding-monitor.xml create mode 100644 tests/genericxml2xmlindata/energytune-wholeprocess.xml create mode 100644 tests/genericxml2xmlindata/memorytune-wholeprocess.xml create mode 100644 tests/genericxml2xmlindata/resctrl-wholeprocess-alloc-monitor.xml create mode 100644 tests/genericxml2xmlindata/resctrl-wholeprocess-layering.xml create mode 100644 tests/genericxml2xmlindata/resctrl-wholeprocess-monitors.xml create mode 100644 tests/genericxml2xmloutdata/cachetune-monitor-inherit-alloc.xml
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> and merged. Sorry for letting this sit here without review for that long. Michal