mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-03 07:33:50 +00:00
conf: Add support for blkiotune "_length" options
Modify _virDomainBlockIoTuneInfo and rng schema to support the _length options for bps/iops throttling values. Document the new values.
This commit is contained in:
parent
223438a245
commit
8dcf355973
@ -2617,7 +2617,45 @@
|
|||||||
maximum write I/O operations per second.</dd>
|
maximum write I/O operations per second.</dd>
|
||||||
<dt><code>size_iops_sec</code></dt>
|
<dt><code>size_iops_sec</code></dt>
|
||||||
<dd>The optional <code>size_iops_sec</code> element is the
|
<dd>The optional <code>size_iops_sec</code> element is the
|
||||||
size of I/O operations per second.</dd>
|
size of I/O operations per second.
|
||||||
|
<p>
|
||||||
|
<span class="since">Throughput limits since 1.2.11 and QEMU 1.7</span>
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><code>total_bytes_sec_max_length</code></dt>
|
||||||
|
<dd>The optional <code>total_bytes_sec_max_length</code>
|
||||||
|
element is the maximum duration in seconds for the
|
||||||
|
<code>total_bytes_sec_max</code> burst period. Only valid
|
||||||
|
when the <code>total_bytes_sec_max</code> is set.</dd>
|
||||||
|
<dt><code>read_bytes_sec_max_length</code></dt>
|
||||||
|
<dd>The optional <code>read_bytes_sec_max_length</code>
|
||||||
|
element is the maximum duration in seconds for the
|
||||||
|
<code>read_bytes_sec_max</code> burst period. Only valid
|
||||||
|
when the <code>read_bytes_sec_max</code> is set.</dd>
|
||||||
|
<dt><code>write_bytes_sec_max</code></dt>
|
||||||
|
<dd>The optional <code>write_bytes_sec_max_length</code>
|
||||||
|
element is the maximum duration in seconds for the
|
||||||
|
<code>write_bytes_sec_max</code> burst period. Only valid
|
||||||
|
when the <code>write_bytes_sec_max</code> is set.</dd>
|
||||||
|
<dt><code>total_iops_sec_max_length</code></dt>
|
||||||
|
<dd>The optional <code>total_iops_sec_max_length</code>
|
||||||
|
element is the maximum duration in seconds for the
|
||||||
|
<code>total_iops_sec_max</code> burst period. Only valid
|
||||||
|
when the <code>total_iops_sec_max</code> is set.</dd>
|
||||||
|
<dt><code>read_iops_sec_max_length</code></dt>
|
||||||
|
<dd>The optional <code>read_iops_sec_max_length</code>
|
||||||
|
element is the maximum duration in seconds for the
|
||||||
|
<code>read_iops_sec_max</code> burst period. Only valid
|
||||||
|
when the <code>read_iops_sec_max</code> is set.</dd>
|
||||||
|
<dt><code>write_iops_sec_max</code></dt>
|
||||||
|
<dd>The optional <code>write_iops_sec_max_length</code>
|
||||||
|
element is the maximum duration in seconds for the
|
||||||
|
<code>write_iops_sec_max</code> burst period. Only valid
|
||||||
|
when the <code>write_iops_sec_max</code> is set.
|
||||||
|
<p>
|
||||||
|
<span class="since">Throughput length since 2.4.0 and QEMU 2.6</span>
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><code>driver</code></dt>
|
<dt><code>driver</code></dt>
|
||||||
|
@ -4963,6 +4963,44 @@
|
|||||||
<data type="unsignedLong"/>
|
<data type="unsignedLong"/>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</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>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
@ -7202,6 +7202,13 @@ virDomainDiskDefIotuneParse(virDomainDiskDefPtr def,
|
|||||||
|
|
||||||
PARSE_IOTUNE(size_iops_sec);
|
PARSE_IOTUNE(size_iops_sec);
|
||||||
|
|
||||||
|
PARSE_IOTUNE(total_bytes_sec_max_length);
|
||||||
|
PARSE_IOTUNE(read_bytes_sec_max_length);
|
||||||
|
PARSE_IOTUNE(write_bytes_sec_max_length);
|
||||||
|
PARSE_IOTUNE(total_iops_sec_max_length);
|
||||||
|
PARSE_IOTUNE(read_iops_sec_max_length);
|
||||||
|
PARSE_IOTUNE(write_iops_sec_max_length);
|
||||||
|
|
||||||
if ((def->blkdeviotune.total_bytes_sec &&
|
if ((def->blkdeviotune.total_bytes_sec &&
|
||||||
def->blkdeviotune.read_bytes_sec) ||
|
def->blkdeviotune.read_bytes_sec) ||
|
||||||
(def->blkdeviotune.total_bytes_sec &&
|
(def->blkdeviotune.total_bytes_sec &&
|
||||||
@ -20379,7 +20386,13 @@ virDomainDiskDefFormat(virBufferPtr buf,
|
|||||||
def->blkdeviotune.total_iops_sec_max ||
|
def->blkdeviotune.total_iops_sec_max ||
|
||||||
def->blkdeviotune.read_iops_sec_max ||
|
def->blkdeviotune.read_iops_sec_max ||
|
||||||
def->blkdeviotune.write_iops_sec_max ||
|
def->blkdeviotune.write_iops_sec_max ||
|
||||||
def->blkdeviotune.size_iops_sec) {
|
def->blkdeviotune.size_iops_sec ||
|
||||||
|
def->blkdeviotune.total_bytes_sec_max_length ||
|
||||||
|
def->blkdeviotune.read_bytes_sec_max_length ||
|
||||||
|
def->blkdeviotune.write_bytes_sec_max_length ||
|
||||||
|
def->blkdeviotune.total_iops_sec_max_length ||
|
||||||
|
def->blkdeviotune.read_iops_sec_max_length ||
|
||||||
|
def->blkdeviotune.write_iops_sec_max_length) {
|
||||||
virBufferAddLit(buf, "<iotune>\n");
|
virBufferAddLit(buf, "<iotune>\n");
|
||||||
virBufferAdjustIndent(buf, 2);
|
virBufferAdjustIndent(buf, 2);
|
||||||
|
|
||||||
@ -20402,6 +20415,13 @@ virDomainDiskDefFormat(virBufferPtr buf,
|
|||||||
def->blkdeviotune.size_iops_sec);
|
def->blkdeviotune.size_iops_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FORMAT_IOTUNE(total_bytes_sec_max_length);
|
||||||
|
FORMAT_IOTUNE(read_bytes_sec_max_length);
|
||||||
|
FORMAT_IOTUNE(write_bytes_sec_max_length);
|
||||||
|
FORMAT_IOTUNE(total_iops_sec_max_length);
|
||||||
|
FORMAT_IOTUNE(read_iops_sec_max_length);
|
||||||
|
FORMAT_IOTUNE(write_iops_sec_max_length);
|
||||||
|
|
||||||
virBufferAdjustIndent(buf, -2);
|
virBufferAdjustIndent(buf, -2);
|
||||||
virBufferAddLit(buf, "</iotune>\n");
|
virBufferAddLit(buf, "</iotune>\n");
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,65 @@
|
|||||||
|
<domain type='qemu'>
|
||||||
|
<name>QEMUGuest1</name>
|
||||||
|
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||||
|
<memory unit='KiB'>219100</memory>
|
||||||
|
<currentMemory unit='KiB'>219100</currentMemory>
|
||||||
|
<vcpu placement='static'>1</vcpu>
|
||||||
|
<os>
|
||||||
|
<type arch='i686' machine='pc'>hvm</type>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<devices>
|
||||||
|
<emulator>/usr/bin/qemu</emulator>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='none'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest1'/>
|
||||||
|
<target dev='hda' bus='ide'/>
|
||||||
|
<iotune>
|
||||||
|
<total_bytes_sec>5000</total_bytes_sec>
|
||||||
|
<total_iops_sec>6000</total_iops_sec>
|
||||||
|
<total_bytes_sec_max>10000</total_bytes_sec_max>
|
||||||
|
<total_iops_sec_max>11000</total_iops_sec_max>
|
||||||
|
<total_bytes_sec_max_length>3</total_bytes_sec_max_length>
|
||||||
|
<total_iops_sec_max_length>5</total_iops_sec_max_length>
|
||||||
|
</iotune>
|
||||||
|
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||||
|
</disk>
|
||||||
|
<disk type='block' device='disk'>
|
||||||
|
<driver name='qemu' type='qcow2' cache='none'/>
|
||||||
|
<source dev='/dev/HostVG/QEMUGuest2'/>
|
||||||
|
<target dev='hdb' bus='ide'/>
|
||||||
|
<iotune>
|
||||||
|
<read_bytes_sec>5000</read_bytes_sec>
|
||||||
|
<write_bytes_sec>5500</write_bytes_sec>
|
||||||
|
<read_iops_sec>3500</read_iops_sec>
|
||||||
|
<write_iops_sec>4000</write_iops_sec>
|
||||||
|
<read_bytes_sec_max>6000</read_bytes_sec_max>
|
||||||
|
<write_bytes_sec_max>6500</write_bytes_sec_max>
|
||||||
|
<read_iops_sec_max>7000</read_iops_sec_max>
|
||||||
|
<write_iops_sec_max>7500</write_iops_sec_max>
|
||||||
|
<size_iops_sec>2000</size_iops_sec>
|
||||||
|
<read_bytes_sec_max_length>3</read_bytes_sec_max_length>
|
||||||
|
<write_bytes_sec_max_length>5</write_bytes_sec_max_length>
|
||||||
|
<read_iops_sec_max_length>7</read_iops_sec_max_length>
|
||||||
|
<write_iops_sec_max_length>9</write_iops_sec_max_length>
|
||||||
|
</iotune>
|
||||||
|
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
|
||||||
|
</disk>
|
||||||
|
<controller type='usb' index='0'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='ide' index='0'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
|
||||||
|
</controller>
|
||||||
|
<controller type='pci' index='0' model='pci-root'/>
|
||||||
|
<input type='mouse' bus='ps2'/>
|
||||||
|
<input type='keyboard' bus='ps2'/>
|
||||||
|
<memballoon model='virtio'>
|
||||||
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
|
||||||
|
</memballoon>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -0,0 +1 @@
|
|||||||
|
../qemuxml2argvdata/qemuxml2argv-blkdeviotune-max-length.xml
|
@ -609,6 +609,7 @@ mymain(void)
|
|||||||
DO_TEST("usb-redir-filter-version", NONE);
|
DO_TEST("usb-redir-filter-version", NONE);
|
||||||
DO_TEST("blkdeviotune", NONE);
|
DO_TEST("blkdeviotune", NONE);
|
||||||
DO_TEST("blkdeviotune-max", NONE);
|
DO_TEST("blkdeviotune-max", NONE);
|
||||||
|
DO_TEST("blkdeviotune-max-length", NONE);
|
||||||
DO_TEST("controller-usb-order", NONE);
|
DO_TEST("controller-usb-order", NONE);
|
||||||
|
|
||||||
DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, GIC_NONE, NONE);
|
DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, GIC_NONE, NONE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user