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 groups
Introduce schema for defining '<throttlegroups>' element which configures throttling groups which can be configured for multiple disks. * Refactor "diskIoTune" to extract common schema "iotune" * Add new elements '<throttlegroups>' * <ThrottleGroups> contains <ThrottleGroup> defintion, which references "iotune" 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:
parent
65eeaf12d0
commit
2463533aad
@ -2000,6 +2000,32 @@ advertisements to the guest OS. (NB: Only qemu driver support)
|
||||
the guest OS itself can choose to circumvent the unavailability of the sleep
|
||||
states (e.g. S4 by turning off completely).
|
||||
|
||||
Disk Throttle Group Management
|
||||
------------------------------
|
||||
|
||||
:since:`Since 11.2.0` it is possible to create multiple named throttle groups
|
||||
and then reference them within ``throttlefilters``(sub-element of ``disk`` element)
|
||||
to form filter chain in QEMU for specific disk. The limits(throttlegroups) are
|
||||
shared within domain, hence the same group can be referenced by different filters.
|
||||
|
||||
::
|
||||
|
||||
<domain>
|
||||
...
|
||||
<throttlegroups>
|
||||
<throttlegroup>
|
||||
<group_name>limit0</group_name>
|
||||
<total_bytes_sec>10000000</total_bytes_sec>
|
||||
<read_iops_sec>400000</read_iops_sec>
|
||||
<write_iops_sec>100000</write_iops_sec>
|
||||
</throttlegroup>
|
||||
</throttlegroups>
|
||||
...
|
||||
</domain>
|
||||
|
||||
``throttlegroup``
|
||||
It has the same sub-elements as ``iotune`` (See `Hard drives, floppy disks, CDROMs`_),
|
||||
The difference is that <group_name> is required.
|
||||
|
||||
Hypervisor features
|
||||
-------------------
|
||||
|
@ -71,6 +71,7 @@
|
||||
</zeroOrMore>
|
||||
<ref name="os"/>
|
||||
<ref name="clock"/>
|
||||
<ref name="throttlegroups"/>
|
||||
<ref name="resources"/>
|
||||
<ref name="features"/>
|
||||
<ref name="events"/>
|
||||
@ -6870,6 +6871,23 @@
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
<define name="throttlegroup">
|
||||
<element name="throttlegroup">
|
||||
<ref name="iotune"/>
|
||||
</element>
|
||||
</define>
|
||||
<!--
|
||||
A set of optional throttlegroups
|
||||
-->
|
||||
<define name="throttlegroups">
|
||||
<optional>
|
||||
<element name="throttlegroups">
|
||||
<zeroOrMore>
|
||||
<ref name="throttlegroup"/>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
<!--
|
||||
A set of optional features: PAE, APIC, ACPI, GIC, TCG,
|
||||
HyperV Enlightenment, KVM features, paravirtual spinlocks and HAP support
|
||||
@ -7857,134 +7875,138 @@
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="iotune">
|
||||
<interleave>
|
||||
<choice>
|
||||
<element name="total_bytes_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_bytes_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_bytes_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_bytes_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_bytes_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_bytes_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_iops_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_iops_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_iops_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
<element name="size_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="group_name">
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<choice>
|
||||
<element name="total_bytes_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_bytes_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_bytes_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_iops_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_iops_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_iops_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
</interleave>
|
||||
</define>
|
||||
|
||||
<define name="diskIoTune">
|
||||
<element name="iotune">
|
||||
<interleave>
|
||||
<choice>
|
||||
<element name="total_bytes_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_bytes_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_bytes_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_bytes_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_bytes_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_bytes_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_iops_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_iops_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_iops_sec_max">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
<element name="size_iops_sec">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="group_name">
|
||||
<text/>
|
||||
</element>
|
||||
</optional>
|
||||
<choice>
|
||||
<element name="total_bytes_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_bytes_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_bytes_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<choice>
|
||||
<element name="total_iops_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
<group>
|
||||
<interleave>
|
||||
<optional>
|
||||
<element name="read_iops_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="write_iops_sec_max_length">
|
||||
<data type="unsignedLong"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
</interleave>
|
||||
<ref name="iotune"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user