Re: [PATCH net-next V2] tun: introduce tx skb ring

From: David Miller
Date: Thu Jun 16 2016 - 20:01:38 EST


From: Jason Wang <jasowang@xxxxxxxxxx>
Date: Wed, 15 Jun 2016 16:38:17 +0800

> We used to queue tx packets in sk_receive_queue, this is less
> efficient since it requires spinlocks to synchronize between producer
> and consumer.
>
> This patch tries to address this by:
>
> - introduce a new mode which will be only enabled with IFF_TX_ARRAY
> set and switch from sk_receive_queue to a fixed size of skb
> array with 256 entries in this mode.
> - introduce a new proto_ops peek_len which was used for peeking the
> skb length.
> - implement a tun version of peek_len for vhost_net to use and convert
> vhost_net to use peek_len if possible.
>
> Pktgen test shows about 18% improvement on guest receiving pps for small
> buffers:
>
> Before: ~1220000pps
> After : ~1440000pps
>
> The reason why I stick to new mode is because:
>
> - though resize is supported by skb array, in multiqueue mode, it's
> not easy to recover from a partial success of queue resizing.
> - tx_queue_len is a user visible feature.
>
> Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx>

Michael, can you please review this, especially as this is the first
user of your new infrastructure :-)