Bug 629662

Summary: RFE: Need support for virtio-net tuning option
Product: Red Hat Enterprise Linux 6 Reporter: Alex Williamson <alex.williamson>
Component: libvirtAssignee: Laine Stump <laine>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: low    
Version: 6.1CC: alex.williamson, berrange, dallan, dwalsh, dyuan, eblake, jialiu, jwest, jyang, mjenner, mst, mzhan, nzhang, plyons, xen-maint, xhu
Target Milestone: rcKeywords: FutureFeature
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-0.8.7-8.el6 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
: 679183 (view as bug list) Environment:
Last Closed: 2011-05-19 13:21:17 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: 679183    

Comment 3 Daniel Berrangé 2010-09-08 13:51:15 UTC
I'm a little lost in reading the descriptions of the different versions here. Can you confirm the relation between behaviours in the various RHEL5/6/upstream releases is as follows: 

 - Current upstream: Original TX algorithm
 - RHEL6.0 GA: Original TX algorithm
 - RHEL5.4: Original TX algorithm
 - RHEL5.5: Hardcoded to new bottom-half TX algorithm. No access to original algorithm.
 - RHEL6.0 z-stream: Default to new bottom half TX algorithm, configurable to use old original TX algorithm
 - Future upstream. Default to new bottom half TX algorithm, configurable to use old original TX algorithm

Comment 5 Alex Williamson 2010-09-08 14:18:26 UTC
(In reply to comment #3)
> I'm a little lost in reading the descriptions of the different versions here.
> Can you confirm the relation between behaviours in the various RHEL5/6/upstream
> releases is as follows: 
> 
>  - Current upstream: Original TX algorithm
>  - RHEL6.0 GA: Original TX algorithm
>  - RHEL5.4: Original TX algorithm
>  - RHEL5.5: Hardcoded to new bottom-half TX algorithm. No access to original
> algorithm.
>  - RHEL6.0 z-stream: Default to new bottom half TX algorithm, configurable to
> use old original TX algorithm
>  - Future upstream. Default to new bottom half TX algorithm, configurable to
> use old original TX algorithm

Almost, the bottom half handler did go out in RHEL5.4, hard coded,
non-configurable.  So RHEL6.0 is the first RHEL instance of the original TX
algorithm.  I think we would feel more comfortable switching the default
without a fallback plan if we were making the change on at least a minor
version boundary rather than z-stream.  However, from a tuning perspective,
it's a worthwhile knob to be able to tweak.

Comment 11 Dave Allan 2010-10-07 03:08:41 UTC
Alex, has this BZ been addressed by your script?  If so, can we resolve it?

Comment 12 Alex Williamson 2010-10-07 19:26:13 UTC
(In reply to comment #11)
> Alex, has this BZ been addressed by your script?  If so, can we resolve it?

The script is just a workaround, I think the need still exists.  This problem is going to come up over and over for various devices, so the solution needs to not be specific to virtio-net.

Comment 16 Laine Stump 2011-01-25 17:33:50 UTC
Where is the qemu commandline option for this documented? It isn't in the help output. How can we verify the presence of the option w/o just trying it and having qemu fail?

Also there are now two places where this could exist:

1) as an element inside the <tune> element of the <interface>

2) as an attribute in the <driver name='vhost' .../>

The former is being used to set the size of the sndbuf, the latter is being used to set vhost vs. userland mode for the virtio backend.

It sounds like this should be in the <driver ...> element, since it's specific to virtio.

Comment 17 Alex Williamson 2011-01-25 18:01:31 UTC
(In reply to comment #16)
> Where is the qemu commandline option for this documented? It isn't in the help
> output. How can we verify the presence of the option w/o just trying it and
> having qemu fail?

$ /usr/libexec/qemu-kvm -device virtio-net-pci,?
...
virtio-net-pci.tx=string

I think the code is the only place that documents the options are "timer" vs "bh", but it will default to "bh", with an error message, if provided an unknown option

> Also there are now two places where this could exist:
> 
> 1) as an element inside the <tune> element of the <interface>
> 
> 2) as an attribute in the <driver name='vhost' .../>
> 
> The former is being used to set the size of the sndbuf, the latter is being
> used to set vhost vs. userland mode for the virtio backend.
> 
> It sounds like this should be in the <driver ...> element, since it's specific
> to virtio.

Seems reasonable.

Comment 18 Daniel Walsh 2011-01-25 20:59:22 UTC
selinux-policy package is available on people.redhat.com/dwalsh/SELinux/RHEL6

Comment 19 Laine Stump 2011-02-04 15:13:52 UTC
Is this algorithm setting in upstream qemu as well, or just in RHEL? My F14 box running qemu 0.13.0 doesn't have it...

Comment 20 Alex Williamson 2011-02-04 16:32:27 UTC
Yes, this is upstream as well as rhel6.  Should be in f15.

Comment 21 Laine Stump 2011-02-07 17:56:06 UTC
A first (definitely not final) whack at this has been posted upstream. Please take a look at the patch comments and provide feedback:

https://www.redhat.com/archives/libvir-list/2011-February/msg00130.html

Comment 22 Laine Stump 2011-02-10 18:55:44 UTC
The above thread has been updated with a v2 and v3 of the patch. Now just waiting for final ACK and push before a backport can be done.

Comment 23 Laine Stump 2011-02-17 20:54:10 UTC
The fix for this bug has been committed upstream:

  commit b670a41206701f6e1365b83dd5be704864aec9a7
  Author: Laine Stump <laine>
  Date:   Thu Feb 3 13:52:08 2011 -0500
  Subject: Restructure domain struct interface	"driver" data for easier expansion

  commit e9bd5c0e248aaa73db4d26ed4abf27acc6f93cc8
  Author: Laine Stump <laine>
  Date:   Thu Feb 3 15:20:01 2011 -0500
  Subject: Add txmode attribute to interface XML for virtio backend

and a rebased version (nearly pure cherry-pick) posted to rhvirt-patches:

  http://post-office.corp.redhat.com/archives/rhvirt-patches/2011-February/msg01144.html

Comment 25 Jiri Denemark 2011-02-23 14:19:46 UTC
*** Bug 679676 has been marked as a duplicate of this bug. ***

Comment 27 Nan Zhang 2011-02-25 06:40:41 UTC
Verified with the packages below, it's already fixed.
libvirt-0.8.7-8.el6
qemu-kvm-0.12.1.2-2.147.el6


# virsh dumpxml test
...
    <driver txmode='iothread'/>
...

# ps -ef|grep qemu-kvm
... -device virtio-net-pci,tx=bh, ...


# virsh dumpxml test
...
    <driver txmode='timer'/>
...

# ps -ef|grep qemu-kvm
... -device virtio-net-pci,tx=timer, ...

Comment 30 errata-xmlrpc 2011-05-19 13:21:17 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/RHBA-2011-0596.html