Bug 473120 - RHEL 5.3: implement virtio_net mergeable receive buffer allocate scheme
RHEL 5.3: implement virtio_net mergeable receive buffer allocate scheme
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel (Show other bugs)
5.3
All Linux
high Severity high
: rc
: ---
Assigned To: Mark McLoughlin
Martin Jenner
:
: 469153 (view as bug list)
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-11-26 11:13 EST by Mark McLoughlin
Modified: 2009-02-10 02:52 EST (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2009-01-20 14:59:01 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


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

  None (edit)
Description Mark McLoughlin 2008-11-26 11:13:48 EST
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 13:16:53 EST
Created attachment 324773 [details]
virtio_net-mergeable-receive-buffers.patch
Comment 5 Don Zickus 2008-12-09 16:05:41 EST
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 14:59:01 EST
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 02:52:27 EST
*** 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.