conf: Add support for blkiotune group_name option

Modify _virDomainBlockIoTuneInfo and rng schema to support the group_name
option for iotune throttling. Document the new value.

Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
John Ferlan 2016-10-01 09:01:06 -04:00
parent c53bd25b13
commit 32d99cb772
6 changed files with 88 additions and 0 deletions

View File

@ -2622,6 +2622,17 @@
<span class="since">Throughput limits since 1.2.11 and QEMU 1.7</span>
</p>
</dd>
<dt><code>group_name</code></dt>
<dd>The optional <code>group_name</code> provides the cability
to share I/O throttling quota between multiple drives. This
prevents end-users from circumventing a hosting provider's
throttling policy by splitting 1 large drive in N small drives
and getting N times the normal throttling quota. Any name may
be used.
<p>
<span class="since">group_name since 3.0.0 and QEMU 2.4</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

View File

@ -4997,6 +4997,11 @@
<data type="unsignedLong"/>
</element>
</optional>
<optional>
<element name="group_name">
<text/>
</element>
</optional>
<choice>
<element name="total_bytes_sec_max_length">
<data type="unsignedLong"/>

View File

@ -7401,6 +7401,9 @@ virDomainDiskDefIotuneParse(virDomainDiskDefPtr def,
PARSE_IOTUNE(read_iops_sec_max_length);
PARSE_IOTUNE(write_iops_sec_max_length);
def->blkdeviotune.group_name =
virXPathString("string(./iotune/group_name)", ctxt);
if ((def->blkdeviotune.total_bytes_sec &&
def->blkdeviotune.read_bytes_sec) ||
(def->blkdeviotune.total_bytes_sec &&
@ -20630,6 +20633,7 @@ virDomainDiskDefFormat(virBufferPtr buf,
def->blkdeviotune.read_iops_sec_max ||
def->blkdeviotune.write_iops_sec_max ||
def->blkdeviotune.size_iops_sec ||
def->blkdeviotune.group_name ||
def->blkdeviotune.total_bytes_sec_max_length ||
def->blkdeviotune.read_bytes_sec_max_length ||
def->blkdeviotune.write_bytes_sec_max_length ||
@ -20658,6 +20662,11 @@ virDomainDiskDefFormat(virBufferPtr buf,
def->blkdeviotune.size_iops_sec);
}
if (def->blkdeviotune.group_name) {
virBufferEscapeString(buf, "<group_name>%s</group_name>\n",
def->blkdeviotune.group_name);
}
FORMAT_IOTUNE(total_bytes_sec_max_length);
FORMAT_IOTUNE(read_bytes_sec_max_length);
FORMAT_IOTUNE(write_bytes_sec_max_length);

View File

@ -0,0 +1,61 @@
<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>
<group_name>libvirt_iotune_group1</group_name>
</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>
<group_name>libvirt_iotune_group2</group_name>
</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>

View File

@ -0,0 +1 @@
../qemuxml2argvdata/qemuxml2argv-blkdeviotune-group-num.xml

View File

@ -611,6 +611,7 @@ mymain(void)
DO_TEST("usb-redir-filter-version", NONE);
DO_TEST("blkdeviotune", NONE);
DO_TEST("blkdeviotune-max", NONE);
DO_TEST("blkdeviotune-group-num", NONE);
DO_TEST("blkdeviotune-max-length", NONE);
DO_TEST("controller-usb-order", NONE);