Bug 473120 - RHEL 5.3: implement virtio_net mergeable receive buffer allocate scheme
Summary: RHEL 5.3: implement virtio_net mergeable receive buffer allocate scheme
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel
Version: 5.3
Hardware: All
OS: Linux
high
high
Target Milestone: rc
: ---
Assignee: Mark McLoughlin
QA Contact: Martin Jenner
URL:
Whiteboard:
: 469153 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2008-11-26 16:13 UTC by Mark McLoughlin
Modified: 2009-02-10 07:52 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-01-20 19:59:01 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
virtio_net-mergeable-receive-buffers.patch (10.92 KB, patch)
2008-11-26 18:16 UTC, Mark McLoughlin
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2009:0225 0 normal SHIPPED_LIVE Important: Red Hat Enterprise Linux 5.3 kernel security and bug fix update 2009-01-20 16:06:24 UTC

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. ***


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