1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-30 18:50:18 +03:00

schema: Add new domain elements to support multiple throttle filters

Introduce schema for defining '<throttlefilters>' element which
references throttling groups to form filter chain in qemu for specific
disk

* Add new elements '<throttlefilters>'
* <ThrottleFilters> can include multiple throttlegroup references to
  form filter chain in qemu
* Chained throttle filters feature in qemu is described at
  https://gitlab.com/qemu-project/qemu/blob/master/docs/throttle.txt

Signed-off-by: Chun Feng Wu <danielwuwy@163.com>
Signed-off-by: Harikumar Rajkumar <harirajkumar230@gmail.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Chun Feng Wu 2025-02-19 22:27:06 +05:30 committed by Peter Krempa
parent 2463533aad
commit 8ce2d2df0e
2 changed files with 39 additions and 1 deletions

View File

@ -2819,6 +2819,15 @@ paravirtualized driver is specified via the ``disk`` element.
</backingStore>
<target dev='vdh' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' />
<source file='/var/lib/libvirt/images/disk.qcow2'/>
<target dev='vdh' bus='virtio'/>
<throttlefilters>
<throttlefilter group='limit2'/>
<throttlefilter group='limit012'/>
</throttlefilters>
</disk>
</devices>
...
@ -3321,6 +3330,18 @@ paravirtualized driver is specified via the ``disk`` element.
:since:`since after 0.4.4`; "sata" attribute value :since:`since 0.9.7`;
"removable" attribute value :since:`since 1.1.3`;
"rotation_rate" attribute value :since:`since 7.3.0`
``throttlefilters``
The optional ``throttlefilters`` element provides the ability to provide additional
per-device throttle chain :since:`Since 11.2.0`
For example, if we have four different disks and we want to limit I/O for each one
and we also want to limit combined I/O of all four disks, we can leverage
``throttlefilters`` to achieve this goal by setting two ``throttlefilter`` for
each disk: disk's own filter(e.g. limit2) and combined filter(e.g. limit012).
The order of such ``throttlefilter`` doesn't matter within ``throttlefilters``.
``throttlefilters`` and ``iotune`` should be used exclusively.
``throttlefilter``
The optional ``throttlefilter`` element is to reference defined throttle group.
``iotune``
The optional ``iotune`` element provides the ability to provide additional
per-device I/O tuning, with values that can vary for each device (contrast

View File

@ -1630,7 +1630,10 @@
<ref name="encryption"/>
</optional>
<optional>
<ref name="diskIoTune"/>
<choice>
<ref name="throttlefilters"/>
<ref name="diskIoTune"/>
</choice>
</optional>
<optional>
<ref name="alias"/>
@ -6888,6 +6891,20 @@
</element>
</optional>
</define>
<!--
A set of throttlefilters to reference throttlegroups
-->
<define name="throttlefilters">
<element name="throttlefilters">
<zeroOrMore>
<element name="throttlefilter">
<attribute name="group">
<data type="string"/>
</attribute>
</element>
</zeroOrMore>
</element>
</define>
<!--
A set of optional features: PAE, APIC, ACPI, GIC, TCG,
HyperV Enlightenment, KVM features, paravirtual spinlocks and HAP support