linux_dsm_epyc7002/drivers/net
Michael Dalton 5061de3666 virtio-net: mergeable buffer size should include virtio-net header
Commit 2613af0ed1 ("virtio_net: migrate mergeable rx buffers to page
frag allocators") changed the mergeable receive buffer size from PAGE_SIZE
to MTU-size. However, the merge buffer size does not take into account the
size of the virtio-net header. Consequently, packets that are MTU-size
will take two buffers intead of one (to store the virtio-net header),
substantially decreasing the throughput of MTU-size traffic due to TCP
window / SKB truesize effects.

This commit changes the mergeable buffer size to include the virtio-net
header. The buffer size is cacheline-aligned because skb_page_frag_refill
will not automatically align the requested size.

Benchmarks taken from an average of 5 netperf 30-second TCP_STREAM runs
between two QEMU VMs on a single physical machine. Each VM has two VCPUs and
vhost enabled. All VMs and vhost threads run in a single 4 CPU cgroup
cpuset, using cgroups to ensure that other processes in the system will not
be scheduled on the benchmark CPUs. Transmit offloads and mergeable receive
buffers are enabled, but guest_tso4 / guest_csum are explicitly disabled to
force MTU-sized packets on the receiver.

next-net trunk before 2613af0ed1 (PAGE_SIZE buf): 3861.08Gb/s
net-next trunk (MTU 1500- packet uses two buf due to size bug): 4076.62Gb/s
net-next trunk (MTU 1480- packet fits in one buf): 6301.34Gb/s
net-next trunk w/ size fix (MTU 1500 - packet fits in one buf): 6445.44Gb/s

Suggested-by: Eric Northup <digitaleric@google.com>
Signed-off-by: Michael Dalton <mwdalton@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-11-14 17:22:56 -05:00
..
appletalk
arcnet
bonding bonding: fix two race conditions in bond_store_updelay/downdelay 2013-11-14 16:28:52 -05:00
caif caif: add a sanity check to the tty name 2013-09-04 00:27:27 -04:00
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
cris
dsa
ethernet alx: Reset phy speed after resume 2013-11-14 17:14:42 -05:00
fddi net:drivers/net: Miscellaneous conversions to ETH_ALEN 2013-10-02 17:04:45 -04:00
hamradio Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-10-23 16:49:34 -04:00
hippi
hyperv
ieee802154 mrf24j40: Use level-triggered interrupts 2013-10-08 15:32:14 -04:00
irda irda: remove deprecated IRQF_DISABLED 2013-10-07 15:53:52 -04:00
phy Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
plip net:drivers/net: Miscellaneous conversions to ETH_ALEN 2013-10-02 17:04:45 -04:00
ppp ip: generate unique IP identificator if local fragmentation is allowed 2013-09-19 14:11:15 -04:00
slip slip/slcan: added locking in wakeup function 2013-09-20 15:38:26 -04:00
team genetlink: make all genl_ops users const 2013-11-14 17:10:41 -05:00
usb net: cdc_ncm: cleanup a type issue in cdc_ncm_setup() 2013-11-14 03:10:30 -05:00
vmxnet3 vmxnet3: Remove extern from function prototypes 2013-09-24 16:37:10 -07:00
wan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-11-04 13:48:30 -05:00
wimax wimax: Remove extern from function prototypes 2013-09-24 16:46:22 -07:00
wireless genetlink: make all genl_ops users const 2013-11-14 17:10:41 -05:00
xen-netback Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-11-04 13:48:30 -05:00
dummy.c
eql.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c net loopback: Set loopback_dev to NULL when freed 2013-09-17 19:05:13 -04:00
macvlan.c net: Add layer 2 hardware acceleration operations for macvlan devices 2013-11-07 19:11:41 -05:00
macvtap.c macvtap: limit head length of skb allocated 2013-11-14 16:05:27 -05:00
Makefile
mdio.c
mii.c
netconsole.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-11-04 13:48:30 -05:00
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c net/ethernet: Drop H8/300 Ethernet driver 2013-09-16 18:20:24 -07:00
sungem_phy.c
tun.c tuntap: limit head length of skb allocated 2013-11-14 16:05:27 -05:00
veth.c veth: extend features to support tunneling 2013-10-28 00:57:29 -04:00
virtio_net.c virtio-net: mergeable buffer size should include virtio-net header 2013-11-14 17:22:56 -05:00
vxlan.c vxlan: Use ERR_CAST inlined function instead of ERR_PTR(PTR_ERR(...)) 2013-11-04 20:02:33 -05:00
xen-netfront.c xen-netfront: convert to GRO API 2013-10-02 15:54:11 -04:00