QEMU introduced a way to set minimal and maximal number of worker
threads for its worker thread pools. Currently, only IOThreads and main
loop pools have this ability. Nevertheless, setting these boundaries
(and basically making QEMU spawn enough threads upfront) is crucial for
real-time workloads where having to spawn a thread may lead to missing
the time limit.
Michal Prívozník (16):
virml: Introduce VIR_XML_PROP_NONNEGATIVE flag
virxml: Introduce virXMLPropLongLong()
virDomainDefParseIOThreads: Use g_autoptr() for @iothrid
virDomainIOThreadIDDefArrayInit: Decrease scope of @iothrid
conf: Move iothread formatter into a separate function
conf: Introduce allocator for virDomainIOThreadIDDef
conf: Introduce pool_min and pool_max attributes to IOThread
qemu: Introduce QEMU_CAPS_IOTHREAD_THREAD_POOL_MAX
qemu_validate: Check if QEMU's capable of setting iothread pool size
qemu: Generate command line for IOThread pool size
include: Introduce typed params for virDomainSetIOThreadParams wrt
pool size
qemu: Wire up new virDomainSetIOThreadParams parameters
virsh: Wire up new virDomainSetIOThreadParams parameters
conf: Expose QEMU's main loop object
qemu_validate: Check if QEMU's capable of setting main loop pool size
qemu: Generate command line for main-loop pool size
docs/formatdomain.rst | 11 +-
docs/manpages/virsh.rst | 7 +-
include/libvirt/libvirt-domain.h | 18 ++
src/conf/domain_conf.c | 154 +++++++++++++++---
src/conf/domain_conf.h | 11 ++
src/conf/schemas/domaincommon.rng | 25 +++
src/conf/virconftypes.h | 2 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 48 +++++-
src/qemu/qemu_driver.c | 63 ++++++-
src/qemu/qemu_monitor.h | 4 +
src/qemu/qemu_monitor_json.c | 2 +
src/qemu/qemu_validate.c | 44 +++++
src/util/virxml.c | 69 ++++++++
src/util/virxml.h | 12 ++
.../caps_7.1.0.x86_64.xml | 1 +
...othreads-ids-pool-sizes.x86_64-latest.args | 45 +++++
.../iothreads-ids-pool-sizes.xml | 62 +++++++
tests/qemuxml2argvtest.c | 1 +
...iothreads-ids-pool-sizes.x86_64-latest.xml | 1 +
tests/qemuxml2xmltest.c | 1 +
tools/virsh-domain.c | 24 ++-
24 files changed, 575 insertions(+), 34 deletions(-)
create mode 100644 tests/qemuxml2argvdata/iothreads-ids-pool-sizes.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/iothreads-ids-pool-sizes.xml
create mode 120000 tests/qemuxml2xmloutdata/iothreads-ids-pool-sizes.x86_64-latest.xml
--
2.35.1