[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Tue, 13 Apr 2021 11:15:13 +0800
From: Xuan Zhuo <xuanzhuo@...ux.alibaba.com>
To: netdev@...r.kernel.org
Cc: "Michael S. Tsirkin" <mst@...hat.com>,
Jason Wang <jasowang@...hat.com>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Björn Töpel <bjorn@...nel.org>,
Magnus Karlsson <magnus.karlsson@...el.com>,
Jonathan Lemon <jonathan.lemon@...il.com>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Jesper Dangaard Brouer <hawk@...nel.org>,
John Fastabend <john.fastabend@...il.com>,
virtualization@...ts.linux-foundation.org, bpf@...r.kernel.org,
"dust . li" <dust.li@...ux.alibaba.com>
Subject: [PATCH net-next v4 00/10] virtio-net support xdp socket zero copy xmit
XDP socket is an excellent by pass kernel network transmission framework. The
zero copy feature of xsk (XDP socket) needs to be supported by the driver. The
performance of zero copy is very good. mlx5 and intel ixgbe already support this
feature, This patch set allows virtio-net to support xsk's zerocopy xmit
feature.
And xsk's zerocopy rx has made major changes to virtio-net, and I hope to submit
it after this patch set are received.
Compared with other drivers, virtio-net does not directly obtain the dma
address, so I first obtain the xsk page, and then pass the page to virtio.
When recycling the sent packets, we have to distinguish between skb and xdp.
Now we have to distinguish between skb, xdp, xsk.
---------------- Performance Testing ------------
The udp package tool implemented by the interface of xsk vs sockperf(kernel udp)
for performance testing:
xsk zero copy xmit in virtio-net:
CPU PPS MSGSIZE vhost-cpu
7.9% 511804 64 100%
13.3%% 484373 1500 100%
sockperf:
CPU PPS MSGSIZE vhost-cpu
100% 375227 64 89.1%
100% 307322 1500 81.5%
v4:
1. add priv_flags IFF_NOT_USE_DMA_ADDR
2. more reasonable patch split
Xuan Zhuo (10):
netdevice: priv_flags extend to 64bit
netdevice: add priv_flags IFF_NOT_USE_DMA_ADDR
virtio-net: add priv_flags IFF_NOT_USE_DMA_ADDR
xsk: support get page by addr
xsk: XDP_SETUP_XSK_POOL support option IFF_NOT_USE_DMA_ADDR
virtio-net: unify the code for recycling the xmit ptr
virtio-net: virtnet_poll_tx support budget check
virtio-net: xsk zero copy xmit setup
virtio-net: xsk zero copy xmit implement wakeup and xmit
virtio-net: xsk zero copy xmit kick by threshold
drivers/net/virtio_net.c | 479 ++++++++++++++++++++++++++++++++-----
include/linux/netdevice.h | 139 ++++++-----
include/net/xdp_sock_drv.h | 11 +
net/xdp/xsk_buff_pool.c | 2 +-
4 files changed, 511 insertions(+), 120 deletions(-)
--
2.31.0
Powered by blists - more mailing lists