virtio: Recycle unused recv buffer pages for large skbs in net driver
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 25 Jul 2008 17:06:01 +0000 (12:06 -0500)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 25 Jul 2008 02:06:02 +0000 (12:06 +1000)
commitfb6813f480806d62361719e84777c8e00d3e86a8
tree800f68b515a39b554ed3a852ba36ea54c1beef8c
parent97402b96f87c6e32f75f1bffdd91a5ee144b679d
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>
drivers/net/virtio_net.c