Re: [PATCH net-next] virtio-net: switch to use build_skb() for small buffer

From: Jason Wang
Date: Tue Feb 21 2017 - 22:18:09 EST

On 2017å02æ22æ 11:06, Michael S. Tsirkin wrote:
On Wed, Feb 22, 2017 at 10:58:08AM +0800, Jason Wang wrote:

On 2017å02æ21æ 22:37, Michael S. Tsirkin wrote:
On Tue, Feb 21, 2017 at 04:46:28PM +0800, Jason Wang wrote:
This patch switch to use build_skb() for small buffer which can have
better performance for both TCP and XDP (since we can work at page
before skb creation). It also remove lots of XDP codes since both
mergeable and small buffer use page frag during refill now.

Before | After
XDP_DROP(xdp1) 64B : 11.1Mpps | 14.4Mpps

Tested with xdp1/xdp2/xdp_ip_tx_tunnel and netperf.

Signed-off-by: Jason Wang<jasowang@xxxxxxxxxx>
I had a similar patch for mergeable too, though it's trickier there
as host has a lot of flexibility in sizing buffers.
Looks like a good intermediate step to me.
Yes, I think it's more tricky for the case of mergeable buffer:

1) we need reserve NET_SKB_PAD + NET_IP_ALIGN for each buffer, this will
break rx frag coalescing
2) need tailroom for skb_shinfo, so it won't work for all size of packet

Have you seen my prototype?

Not yet, please give me a pointer.

It works with qemu in practice,
just needs to cover a bunch of corner cases.

Sounds good, if you wish I can help to finalize it.


Acked-by: Michael S. Tsirkin<mst@xxxxxxxxxx>