Bug 633394

Summary: [6.1 FEAT] virtio-blk ioeventfd support
Product: Red Hat Enterprise Linux 6 Reporter: IBM Bug Proxy <bugproxy>
Component: qemu-kvmAssignee: Michael S. Tsirkin <mst>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: low    
Version: 6.1CC: abaron, chellwig, ehabkost, jjarvis, juzhang, mhusnain, michen, mjenner, mkenneth, nobody+PNT0273897, riek, sbest, snagar, stefanha, tburke, veillard, virt-maint
Target Milestone: rcKeywords: FutureFeature, OtherQA
Target Release: 6.1   
Hardware: x86_64   
OS: All   
Whiteboard:
Fixed In Version: qemu-kvm-0.12.1.2-2.135.el6 Doc Type: Enhancement
Doc Text:
The qemu-kvm virtio-blk code now support for ioeventfd, which results in improved performance and scalability by decoupling guest code execution from virtio hardware emulation. This decoupling allows the guest CPU and I/O to run in parallel and ensures that less time is taken from the guest.
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-05-19 11:34:22 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 538808, 580954, 698340    

Description IBM Bug Proxy 2010-09-13 17:25:04 UTC
1. Feature Overview:
Feature Id: [67241]
a. Name of Feature: [6.1 FEAT] virtio-blk ioeventfd support
b. Feature Description
Virtio ioeventfd increases performance and scalability by decoupling guest code execution from
virtio hardware emulation, reducing the amount of time stolen from the guest and allowing guest CPU
and I/O to run in parallel.

2. Feature Details:
Sponsor: LTC Open Virtualization
Architectures:  x86_64, 

Arch Specificity: purely common code
Affects Kernel Modules: Field does not exist
Delivery Mechanism: Direct from Community
Category: other
Request Type: Package - Update Version
d. Upstream Acceptance: Field does not exist
Sponsor Priority P3
f. Severity: normal
IBM Confidential: No
Code Contribution: IBM code
g. Component Version Target:---

3. Business Case
Improved performance of virtio-blk and virtio-net devices in KVM VMs to better compete with other
industry hypervisor solutions.

4. Primary contact at Red Hat:
John Jarvis jjarvis

5. Primary contacts at Partner:
Project Management Contact:
Michael W. Wortman, wortman.com

Technical contact(s):
Stefan Hajnoczi, stefan.hajnoczi.com

Comment 2 John Jarvis 2010-09-21 21:20:39 UTC
What is the component for this and is it upstream?  Please provide more details about is being requested here.

Comment 3 IBM Bug Proxy 2010-09-22 09:20:39 UTC
------- Comment From stefan.hajnoczi.com 2010-09-22 05:18 EDT-------
The component is userspace QEMU.  Patches will be sent for upstream soon, the code is written.

Comment 4 IBM Bug Proxy 2010-10-04 16:37:58 UTC
------- Comment From rsisk.com 2010-10-04 10:40 EDT-------
Code Upstream Status: Not evaluated

Comment 5 IBM Bug Proxy 2010-11-15 13:21:23 UTC
------- Comment From stefan.hajnoczi.com 2010-11-15 08:17 EDT-------
Apologies, the status should be OPEN.  I have submitted patches upstream but they have not been merged and I have not provided a backport yet.

Comment 9 RHEL Program Management 2011-01-07 04:30:47 UTC
This request was evaluated by Red Hat Product Management for
inclusion in the current release of Red Hat Enterprise Linux.
Because the affected component is not scheduled to be updated
in the current release, Red Hat is unfortunately unable to
address this request at this time. Red Hat invites you to
ask your support representative to propose this request, if
appropriate and relevant, in the next release of Red Hat
Enterprise Linux. If you would like it considered as an
exception in the current release, please ask your support
representative.

Comment 10 Suzanne Logcher 2011-01-07 16:13:35 UTC
This request was erroneously denied for the current release of Red Hat
Enterprise Linux.  The error has been fixed and this request has been
re-proposed for the current release.

Comment 12 John Jarvis 2011-01-13 20:15:50 UTC
IBM is signed up to test and provide feedback.

Comment 15 John Jarvis 2011-01-15 00:20:48 UTC
This enhancement request was evaluated by the full Red Hat Enterprise Linux 
team for inclusion in a Red Hat Enterprise Linux minor release.   As a 
result of this evaluation, Red Hat has tentatively approved inclusion of 
this feature in the next Red Hat Enterprise Linux Update minor release.   
While it is a goal to include this enhancement in the next minor release 
of Red Hat Enterprise Linux, the enhancement is not yet committed for 
inclusion in the next minor release pending the next phase of actual 
code integration and successful Red Hat and partner testing.

Comment 19 Stefan Hajnoczi 2011-03-14 13:39:02 UTC
I have successfully tested RHEL6.1 qemu-kvm 0.12.1.2 2.148.el6 with libvirt 0.8.7 7.el6.

ioeventfd is functioning as expected.  Here are the tests I performed on a -smp 2 guest:
1. RHEL6 install to 100 GB virtio-blk raw file.
2. RHEL6 install to 100 GB virtio-blk qcow2 file.
3. ffsb benchmark with 8 thread I/O profiles on both raw file and qcow2 file.
4. Check that 10 virtio-blk qcow2 files, 10 GB each, are accessible and behave correctly.  This ensures that more than 6 ioeventds works and that vhost-net is not impacted by adding many virtio-blk devices using ioeventfd.
5. Stephen Tweedie's verify-data on a 10 virtio-blk qcow2 file striped LVM volume.
6. Ensured that virtio-blk-pci devices are defaulting to ioeventfd=on.

Comment 20 Eduardo Habkost 2011-05-05 14:30:06 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause: no ioeventfd support on virtio-blk.

Consequence: lower performance and scalability than what is possible if using ioeventfd.

Change: ioeventfd support include on qemu-kvm virtio-blk code.

Result: higher performance and scalability by decoupling guest code execution from virtio hardware emulation, reducing the amount of time stolen from the guest and allowing guest CPU and I/O to run in parallel.

Comment 21 Misha H. Ali 2011-05-12 01:23:22 UTC
    Technical note updated. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    Diffed Contents:
@@ -1,7 +1 @@
-Cause: no ioeventfd support on virtio-blk.
+The qemu-kvm virtio-blk code now support for ioeventfd, which results in improved performance and scalability by decoupling guest code execution from virtio hardware emulation. This decoupling allows the guest CPU and I/O to run in parallel and ensures that less time is taken from the guest.-
-Consequence: lower performance and scalability than what is possible if using ioeventfd.
-
-Change: ioeventfd support include on qemu-kvm virtio-blk code.
-
-Result: higher performance and scalability by decoupling guest code execution from virtio hardware emulation, reducing the amount of time stolen from the guest and allowing guest CPU and I/O to run in parallel.

Comment 22 errata-xmlrpc 2011-05-19 11:34:22 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2011-0534.html

Comment 23 errata-xmlrpc 2011-05-19 12:48:24 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2011-0534.html

Comment 24 Ayal Baron 2011-06-23 08:32:24 UTC
Michael, is this enabled or disabled by default?
Are there cases where we think this would harm performance?

Comment 26 Stefan Hajnoczi 2011-07-04 12:42:09 UTC
Ayal: to my knowledge it is enabled by default for virtio-blk.  For other virtio devices it is not enabled by default.

You can override ioeventfd by setting it on the -device virtio-net-pci|virtio-blk-pci,ioeventfd=on|off command-line.