Re: [PATCH RFC v3 02/16] schema: Add new domain elements to support multiple throttle filters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jun 12, 2024 at 03:02:10 -0700, wucf@xxxxxxxxxxxxx wrote:
> From: Chun Feng Wu <wucf@xxxxxxxxxxxxx>
> 
> * 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://github.com/qemu/qemu/blob/master/docs/throttle.txt
> 
> Signed-off-by: Chun Feng Wu <wucf@xxxxxxxxxxxxx>
> ---
>  docs/formatdomain.rst             | 22 ++++++++++++++++++++++
>  src/conf/schemas/domaincommon.rng | 19 ++++++++++++++++++-
>  2 files changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
> index b7e1f9cc83..0fa8f1267c 100644
> --- a/docs/formatdomain.rst
> +++ b/docs/formatdomain.rst
> @@ -2736,6 +2736,15 @@ paravirtualized driver is specified via the ``disk`` element.
>         <source dev='/dev/vhost-vdpa-0' />
>         <target dev='vdg' 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>
>     ...
>  
> @@ -3217,6 +3226,19 @@ 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 10.5.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 nodes in qemu shape a chain like libvirt-4-filter(node name of "limit012") ->
> +   libvirt-3-filter(node name of "limit2") -> libvirt-2-format -> libvirt-1-storage.
> +   ``throttlefilters`` and ``iotune`` should be used exclusively.

Node names are a qemu driver internal implementation detail and thus
must not be noted in documentation.

> +
> +   ``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
> diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
> index 08c520e222..7ceb8c0be2 100644
> --- a/src/conf/schemas/domaincommon.rng
> +++ b/src/conf/schemas/domaincommon.rng
> @@ -1578,7 +1578,10 @@
>          <ref name="encryption"/>
>        </optional>
>        <optional>
> -        <ref name="diskIoTune"/>
> +        <choice>
> +          <ref name="throttlefilters"/>
> +          <ref name="diskIoTune"/>
> +        </choice>
>        </optional>
>        <optional>
>          <ref name="alias"/>
> @@ -6671,6 +6674,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
> -- 
> 2.34.1
> 



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux