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