Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
For bugs related to Red Hat Enterprise Linux 5 product line. The current stable release is 5.10. For Red Hat Enterprise Linux 6 and above, please visit Red Hat JIRA https://issues.redhat.com/secure/CreateIssue!default.jspa?pid=12332745 to report new issues.

Bug 473120

Summary: RHEL 5.3: implement virtio_net mergeable receive buffer allocate scheme
Product: Red Hat Enterprise Linux 5 Reporter: Mark McLoughlin <markmc>
Component: kernelAssignee: Mark McLoughlin <markmc>
Status: CLOSED ERRATA QA Contact: Martin Jenner <mjenner>
Severity: high Docs Contact:
Priority: high    
Version: 5.3CC: kernel-mgr, mwagner, ovirt-maint, syeghiay, xen-maint
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-01-20 19:59:01 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:
Attachments:
Description Flags
virtio_net-mergeable-receive-buffers.patch none

Description Mark McLoughlin 2008-11-26 16:13:48 UTC
Currently, with GSO support enabled, the virtio_net driver allocates maximum sized packet buffers and passes them to the host.

This uses up 20 virtio ring entries, allowing us to supply only 20 packets buffers to the host with a 256 entry ring.

This is a huge overhead when receiving small packets, and is most keenly felt when receiving MTU sized packets from off-host.

To improve the performance obtained with small packets, we have introduced a new buffer allocation scheme upstream whereby the guest allocates small buffers, allowing the ring to hold many more small packets than before.

In the case of large packets, the host can combine multiple buffers together to form a larger logical buffer with no effect on performance.

This is an addition to the virtio_net host<->guest ABI which has recently been added to the upstream net-next-2.6 tree and will be included in 2.6.29:

http://git.kernel.org/?p=linux/kernel/git/davem/net-next-2.6.git;a=commitdiff;h=3f2c31d90327f21d76d296af34aa4ca547932ff4

This scheme allows us to be efficient in our use of ring entries while still supporting large packets. Benchmarking using netperf from an external machine to a guest over a 10Gb/s network shows a 100% improvement from ~1Gb/s to ~2Gb/s. With a local host->guest benchmark with GSO disabled on the host side, throughput was seen to increase from 700Mb/s to 1.7Gb/s.

Comment 2 Mark McLoughlin 2008-11-26 18:16:53 UTC
Created attachment 324773 [details]
virtio_net-mergeable-receive-buffers.patch

Comment 5 Don Zickus 2008-12-09 21:05:41 UTC
in kernel-2.6.18-126.el5
You can download this test kernel from http://people.redhat.com/dzickus/el5

Comment 8 errata-xmlrpc 2009-01-20 19:59:01 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-2009-0225.html

Comment 9 Mark McLoughlin 2009-02-10 07:52:27 UTC
*** Bug 469153 has been marked as a duplicate of this bug. ***