linux/drivers/net
Rusty Russell fb6813f480 virtio: Recycle unused recv buffer pages for large skbs in net driver
If we hack the virtio_net driver to always allocate full-sized (64k+)
skbuffs, the driver slows down (lguest numbers):

  Time to receive 1GB (small buffers): 10.85 seconds
  Time to receive 1GB (64k+ buffers): 24.75 seconds

Of course, large buffers use up more space in the ring, so we increase
that from 128 to 2048:

  Time to receive 1GB (64k+ buffers, 2k ring): 16.61 seconds

If we recycle pages rather than using alloc_page/free_page:

  Time to receive 1GB (64k+ buffers, 2k ring, recycle pages): 10.81 seconds

This demonstrates that with efficient allocation, we don't need to
have a separate "small buffer" queue.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2008-07-25 12:06:02 +10:00
..
appletalk
arcnet
arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-07-22 19:09:51 -07:00
atl1e [netdrvr] atl1d: fix !CONFIG_PM build 2008-07-22 21:17:38 -04:00
atlx atl1: Do not wake queue before queue has been started. 2008-07-21 08:28:37 -07:00
bonding netdev: Handle ->addr_list_lock just like ->_xmit_lock for lockdep. 2008-07-22 14:16:42 -07:00
can
chelsio
cris
cxgb3
e1000 e1000: make ioport free 2008-07-22 19:39:14 -04:00
e1000e e1000e: fix e1000_netpoll(), remove extraneous e1000_clean_tx_irq() call 2008-07-23 15:30:52 -07:00
ehea
fs_enet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-07-22 19:09:51 -07:00
hamradio netdev: Handle ->addr_list_lock just like ->_xmit_lock for lockdep. 2008-07-22 14:16:42 -07:00
ibm_newemac
igb net: igb_main.c fix sparse integer as NULL pointer warning 2008-07-22 17:54:12 -04:00
irda
ixgb
ixgbe ixgbe: remove device ID for unsupported device 2008-07-22 19:31:00 -04:00
ixp2000
mlx4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2008-07-24 12:56:07 -07:00
myri10ge myri10ge: use ioremap_wc 2008-07-22 16:09:13 -04:00
netxen netxen: Needs to include linux/vmalloc.h 2008-07-22 18:29:10 -07:00
pcmcia
phy net/phy: Fix 88e1111 copper/fiber selection in RGMII mode 2008-07-22 17:59:12 -04:00
sfc sfc: Create one RX queue and interrupt per CPU package by default 2008-07-22 19:44:15 -04:00
skfp
tokenring
tulip de4x5: Remove developer debug feature about set/clear promisc 2008-07-22 16:09:09 -04:00
usb rndis_host: support WM6 devices as modems 2008-07-22 19:45:49 -04:00
wan device create: net: convert device_create to device_create_drvdata 2008-07-21 21:54:44 -07:00
wireless ipw2200: Call netif_*_queue() interfaces properly. 2008-07-22 18:32:47 -07:00
3c59x.c 3c59x: handle pci_name() being const 2008-07-21 21:55:03 -07:00
3c501.c
3c501.h
3c503.c
3c503.h
3c505.c
3c505.h
3c507.c
3c509.c
3c515.c
3c523.c
3c523.h
3c527.c
3c527.h
7990.c
7990.h
8139cp.c
8139too.c 8139too: Fall back to PIO when MMIO fails. 2008-07-22 17:59:30 -04:00
8390.c
8390.h
8390p.c
82596.c
Kconfig e1000: delete non NAPI code from the driver 2008-07-22 19:39:11 -04:00
LICENSE.SRC
Makefile atl1e: Atheros L1E Gigabit Ethernet driver 2008-07-22 19:31:04 -04:00
Space.c
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
acenic_firmware.h
amd8111e.c
amd8111e.h
apne.c
ariadne.c
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
au1000_eth.h
ax88796.c
b44.c
b44.h
bfin_mac.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
bfin_mac.h
bmac.c
bmac.h
bnx2.c
bnx2.h
bnx2_fw.h
bnx2_fw2.h
bnx2x.h
bnx2x_fw_defs.h
bnx2x_hsi.h
bnx2x_init.h
bnx2x_init_values.h
bnx2x_link.c
bnx2x_link.h
bnx2x_main.c
bnx2x_reg.h
bsd_comp.c
cassini.c
cassini.h
cpmac.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
cs89x0.c
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c
dl2k.h
dm9000.c DM9000: Remove magic numbers 2008-07-22 17:54:07 -04:00
dm9000.h
dummy.c
e100.c
e2100.c
eepro.c
eepro100.c
eexpress.c
eexpress.h
enc28j60.c
enc28j60_hw.h
epic100.c
eql.c
es3210.c
eth16i.c
ewrk3.c
ewrk3.h
fealnx.c
fec.c m68knommu: remove last use of CONFIG_FADS and CONFIG_RPXCLASSIC 2008-07-23 15:11:29 +10:00
fec.h
fec_mpc52xx.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
fec_mpc52xx.h
fec_mpc52xx_phy.c
forcedeth.c
gianfar.c Merge commit 'origin/master' 2008-07-22 17:12:37 +10:00
gianfar.h Merge commit 'origin/master' 2008-07-22 17:12:37 +10:00
gianfar_ethtool.c
gianfar_mii.c
gianfar_mii.h
gianfar_sysfs.c
hamachi.c
hp-plus.c net 8390p: fix interface usage 2008-07-22 17:50:44 -04:00
hp.c net 8390p: fix interface usage 2008-07-22 17:50:44 -04:00
hp100.c
hp100.h
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c
ibmveth.h
ifb.c
ioc3-eth.c
ipg.c
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c
korina.c
lance.c
lasi_82596.c
lib8390.c
lib82596.c
lne390.c
loopback.c
lp486e.c
mac89x0.c
mac8390.c
macb.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c netdev: Handle ->addr_list_lock just like ->_xmit_lock for lockdep. 2008-07-22 14:16:42 -07:00
meth.c Fix typo in meth driver 2008-07-22 19:34:21 -04:00
meth.h
mii.c
mipsnet.c
mv643xx_eth.c mv643xx_eth: fix NETPOLL build 2008-07-22 19:56:37 -04:00
mvme147.c
myri_code.h
myri_sbus.c
myri_sbus.h
natsemi.c
ne-h8300.c
ne.c net 8390p: fix interface usage 2008-07-22 17:50:44 -04:00
ne2.c net 8390p: fix interface usage 2008-07-22 17:50:44 -04:00
ne2k-pci.c
ne3210.c
netconsole.c
netx-eth.c
ni52.c
ni52.h
ni65.c
ni65.h
ni5010.c
ni5010.h
niu.c
niu.h
ns83820.c
pasemi_mac.c
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c
pcnet32.c
plip.c
ppp_async.c
ppp_deflate.c
ppp_generic.c device create: net: convert device_create to device_create_drvdata 2008-07-21 21:54:44 -07:00
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c
pppoe.c
pppol2tp.c
pppox.c
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c
ps3_gelic_wireless.h
qla3xxx.c
qla3xxx.h
r6040.c r6040: rework init_one error handling 2008-07-22 20:00:01 -04:00
r8169.c
rionet.c
rrunner.c
rrunner.h
s2io-regs.h
s2io.c
s2io.h
sb1000.c
sb1250-mac.c
sc92031.c
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
sh_eth.h
sis190.c
sis900.c
sis900.h
skge.c
skge.h
sky2.c sky2: don't stop queue on shutdown 2008-07-22 21:53:40 -07:00
sky2.h
slhc.c
slip.c
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c
smc91x.h
smc911x.c
smc911x.h
smc9194.c
smc9194.h
sni_82596.c
sonic.c
sonic.h
spider_net.c
spider_net.h
spider_net_ethtool.c
starfire.c
starfire_firmware.h
starfire_firmware.pl
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c
sunbmac.h
sundance.c
sungem.c
sungem.h
sungem_phy.c
sungem_phy.h
sunhme.c sunhme: Remove stop/wake TX queue calls in set-multicast-list handler. 2008-07-21 08:34:49 -07:00
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
tehuti.c
tehuti.h
tehuti_fw.h
tg3.c
tg3.h
tlan.c
tlan.h
tsi108_eth.c
tsi108_eth.h
tun.c net: tun.c fix cast 2008-07-22 17:54:17 -04:00
typhoon-firmware.h
typhoon.c
typhoon.h
ucc_geth.c ucc_geth: do not touch net queue in adjust_link phylib callback 2008-07-21 08:30:36 -07:00
ucc_geth.h
ucc_geth_ethtool.c
ucc_geth_mii.c
ucc_geth_mii.h
veth.c
via-rhine.c
via-velocity.c
via-velocity.h
virtio_net.c virtio: Recycle unused recv buffer pages for large skbs in net driver 2008-07-25 12:06:02 +10:00
wd.c
xen-netfront.c
yellowfin.c
znet.c
zorro8390.c