RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1224053 - blkdeviotune unable to get block I/O throttle parameters
Summary: blkdeviotune unable to get block I/O throttle parameters
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: libvirt
Version: 7.1
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: rc
: ---
Assignee: Martin Kletzander
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-05-22 06:22 UTC by Jason
Modified: 2019-06-13 08:31 UTC (History)
14 users (show)

Fixed In Version: libvirt-1.2.17-4.el7
Doc Type: Bug Fix
Doc Text:
Cause: QEMU started supporting new tuning options at one point and even though libvirt was probing for that capability, it did not consult the capability when getting those options back from running QEMU. Consequence: Users with new enough libvirt, but old enough QEMU couldn't get any information about per-block device settings using virDomainGetBlockIoTune() API (virsh blkdeviotune). Fix: Libvirt was taught to correctly consult the capability when checking whether QEMU responded with all options when getting them. Result: Users are now able to use the virDomainGetBlockIoTune() API even with older QEMU versions.
Clone Of:
Environment:
Last Closed: 2015-11-19 06:36:14 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:2202 0 normal SHIPPED_LIVE libvirt bug fix and enhancement update 2015-11-19 08:17:58 UTC

Description Jason 2015-05-22 06:22:55 UTC
Description of problem:

virsh # blkdeviotune 1 vda
error: Unable to get block I/O throttle parameters
error: Operation not supported: block_io_throttle field 'total_bytes_sec' missing in qemu's output


Version-Release number of selected component (if applicable):

        # virsh --version=long
	    Virsh command line tool of libvirt 0.10.2
	    Compiled with support for:
	    Hypervisors: QEMU/KVM LXC ESX Test
	    Networking: Remote Network Bridging Interface netcf Nwfilter  
	    Storage: Dir Disk Filesystem SCSI Multipath iSCSI LVM
	    Miscellaneous: Daemon Nodedev SELinux Secrets Debug DTrace Readline

        # virsh -c qemu:///system version --daemon
	    Compiled against library: libvirt 0.10.2
	    Using library: libvirt 0.10.2
	    Using API: QEMU 0.10.2
	    Running hypervisor: QEMU 0.12.1
	    Running against daemon: 0.10.2	
	
        # /usr/libexec/qemu-kvm -version
	   QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2) 
	
        # libvirtd --version
	   libvirtd (libvirt) 0.10.2

How reproducible:


Steps to Reproduce:
    1. virsh blkdeviotune <domainname> <block device name> 

Actual results:

    error: Unable to get block I/O throttle parameters
    error: Operation not supported: block_io_throttle field 'total_bytes_sec'  missing in qemu's output

Expected results:

    The command shall return disk I/O parameters such as block throttling

Additional info:
    Similar bugs have been reported many times but appears there's no formal patches provided and clear instructions on fixes, if any.

Comment 2 Ademar Reis 2015-05-22 17:29:02 UTC
Jason, thanks for taking the time to enter a bug report with us. We use reports like yours to keep improving the quality of our products and releases. That said, we're not able to guarantee the timeliness or suitability of a resolution for issues entered here because this is not a mechanism for requesting support.

If this issue is critical or in any way time sensitive, please raise a ticket through your regular Red Hat support channels to make certain it receives the proper attention and prioritization that will result in a timely resolution.

For information on how to contact the Red Hat production support team, please visit: https://www.redhat.com/support/process/production/#howto

That said, this is because I/O throtling is not supported in the QEMU binary shipped with RHEL6, so this is somehow expected. I/O throthling is a feature we support only in the RHEL Advanced Hypervisor, which is shipped with RHEV and OpenStack.

I'm reassigning this BZ to libvirt as they might want to improve the error message, but I wouldn't be surprised if they close it as NOTABUG or WONTFIX.

Again, I recommend you open a customer case with our support department to get this issue properly prioritized and escalated. Thanks.

Comment 3 Ademar Reis 2015-05-26 14:20:55 UTC
(In reply to Ademar Reis from comment #2)
> 
> That said, this is because I/O throtling is not supported in the QEMU binary
> shipped with RHEL6, so this is somehow expected. I/O throthling is a feature
> we support only in the RHEL Advanced Hypervisor, which is shipped with RHEV
> and OpenStack.

For more details about the difference between the packages available in RHEL and in the RHEL Advanced Hypervisor, please see this customer portal article:
https://access.redhat.com/solutions/629513

I'm currently checking the status of our documentation to make sure everything is consistent. The bug will remain open while we clarify that.

Comment 4 Jaroslav Suchanek 2015-05-28 13:53:36 UTC
Libvirt is going to improve the error message as was suggested by Ademar in
comment 2. It will be addressed in RHEL7 releases though as this has no or very
little impact on functionality.

Comment 5 Martin Kletzander 2015-06-04 09:32:34 UTC
Fixed upstream with v1.2.16-81-gf833c70b8599:
commit f833c70b85993f024be4afc4dfbfc2fb9c2d6cd9
Author: Martin Kletzander <mkletzan>
Date:   Thu May 28 11:38:43 2015 +0200

    qemu: Check for qemu capability when calling virDomainGetBlockIoTune()

Comment 11 Martin Kletzander 2015-07-27 06:32:07 UTC
One tiny additional patch proposed upstream:

https://www.redhat.com/archives/libvir-list/2015-July/msg01039.html

Comment 12 Martin Kletzander 2015-07-27 07:33:51 UTC
Fixed upstream by v1.2.18-rc1-2-gba167186cf77:

commit ba167186cf7753cf662697ab67a4b10e9b3d4096
Author: Martin Kletzander <mkletzan>
Date:   Mon Jul 27 08:04:06 2015 +0200

    qemu: Check for iotune_max support properly

Comment 18 Pei Zhang 2015-08-17 05:28:10 UTC
Verified version :
libvirt-1.2.17-5.el7.x86_64
qemu-kvm-1.5.3-101.el7.x86_64

Verify steps:
1.get blkdeviotune 
#virsh blkdeviotune r720 vdb
total_bytes_sec: 0
read_bytes_sec : 0
write_bytes_sec: 0
total_iops_sec : 0
read_iops_sec  : 0
write_iops_sec : 0

2. set /get blkdeviotune with basic parameters

#virsh blkdeviotune r720 vdb --total-bytes-sec 10000000
#virsh blkdeviotune r720 vdb
total_bytes_sec: 10000000
read_bytes_sec : 0
write_bytes_sec: 0
total_iops_sec : 0
read_iops_sec  : 0
write_iops_sec : 0

#virsh blkdeviotune r720 vdb --total-iops-sec 123456
#virsh blkdeviotune r720 vdb
total_bytes_sec: 10000000
read_bytes_sec : 0
write_bytes_sec: 0
total_iops_sec : 123456
read_iops_sec  : 0
write_iops_sec : 0

3. set blkdeviotune without and with *-max and set with options.

#virsh blkdeviotune r720 vdb --total-iops-sec-max 12345
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary

#virsh blkdeviotune r720 vdb --read-iops-sec-max 100000 --current
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary

#virsh blkdeviotune r720 vdb --read-bytes-sec-max 100000 --live 
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary

# virsh blkdeviotune r720 vdb --read-bytes-sec-max 1000000 --live  --config
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary

3.1 set with --config, reboot guest 

#virsh blkdeviotune r720 vdb --read-bytes-sec-max 100000 --config 
#virsh destroy r720 ; virsh start r720
error: Failed to start domain r720
error: unsupported configuration: there are some block I/O throttling parameters that are not supported with this QEMU binary


4.set blkdeviotune with iops_size parameter with options  
#virsh start r720

#virsh blkdeviotune r720 vdb --size-iops-sec 100000
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary
 
#virsh blkdeviotune r720 vdb --size-iops-sec 100000 --live
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary

#virsh blkdeviotune r720 vdb --size-iops-sec 100000 --current
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary

# virsh blkdeviotune r720 vdb --size-iops-sec 100000 --live --config
error: Unable to change block I/O throttle
error: unsupported configuration: a block I/O throttling parameter is not supported with this QEMU binary

4.1 set iops-size with --config reboot guest .

#virsh blkdeviotune r720 vdb --size-iops-sec 100000 --config 
#virsh destroy r720 ; virsh start r720 
Domain r720 destroyed

error: Failed to start domain r720
error: unsupported configuration: there are some block I/O throttling parameters that are not supported with this QEMU binary

It has a clear error message, move to verified.

Comment 20 errata-xmlrpc 2015-11-19 06:36:14 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2202.html


Note You need to log in before you can comment on or make changes to this bug.