From: "Michael S. Tsirkin" <mst@redhat.com>
To: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Cc: netdev@vger.kernel.org, "Jason Wang" <jasowang@redhat.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Jesper Dangaard Brouer" <hawk@kernel.org>,
"John Fastabend" <john.fastabend@gmail.com>,
virtualization@lists.linux.dev, bpf@vger.kernel.org
Subject: Re: [PATCH net-next v8 00/10] virtio-net: support AF_XDP zero copy
Date: Wed, 10 Jul 2024 02:08:06 -0400 [thread overview]
Message-ID: <20240710020746-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20240708112537.96291-1-xuanzhuo@linux.alibaba.com>
On Mon, Jul 08, 2024 at 07:25:27PM +0800, Xuan Zhuo wrote:
> v8:
> 1. virtnet_add_recvbuf_xsk() always return err, when encounters error
>
> v7:
> 1. some small fixes
>
> v6:
> 1. start from supporting the rx zerocopy
>
> v5:
> 1. fix the comments of last version
> http://lore.kernel.org/all/20240611114147.31320-1-xuanzhuo@linux.alibaba.com
> v4:
> 1. remove the commits that introduce the independent directory
> 2. remove the supporting for the rx merge mode (for limit 15
> commits of net-next). Let's start with the small mode.
> 3. merge some commits and remove some not important commits
Series:
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ## AF_XDP
>
> XDP socket(AF_XDP) is an excellent bypass kernel network 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.
>
> At present, we have completed some preparation:
>
> 1. vq-reset (virtio spec and kernel code)
> 2. virtio-core premapped dma
> 3. virtio-net xdp refactor
>
> So it is time for Virtio-Net to complete the support for the XDP Socket
> Zerocopy.
>
> Virtio-net can not increase the queue num at will, so xsk shares the queue with
> kernel.
>
> On the other hand, Virtio-Net does not support generate interrupt from driver
> manually, so when we wakeup tx xmit, we used some tips. If the CPU run by TX
> NAPI last time is other CPUs, use IPI to wake up NAPI on the remote CPU. If it
> is also the local CPU, then we wake up napi directly.
>
> This patch set includes some refactor to the virtio-net to let that to support
> AF_XDP.
>
> ## Run & Test
>
> Because there are too many commits, the work of virtio net supporting af-xdp is
> split to rx part and tx part. This patch set is for rx part.
>
> So the flag NETDEV_XDP_ACT_XSK_ZEROCOPY is not added, if someone want to test
> for af-xdp rx, the flag needs to be adding locally.
>
> ## performance
>
> ENV: Qemu with vhost-user(polling mode).
> Host CPU: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
>
> ### virtio PMD in guest with testpmd
>
> testpmd> show port stats all
>
> ######################## NIC statistics for port 0 ########################
> RX-packets: 19531092064 RX-missed: 0 RX-bytes: 1093741155584
> RX-errors: 0
> RX-nombuf: 0
> TX-packets: 5959955552 TX-errors: 0 TX-bytes: 371030645664
>
>
> Throughput (since last show)
> Rx-pps: 8861574 Rx-bps: 3969985208
> Tx-pps: 8861493 Tx-bps: 3969962736
> ############################################################################
>
> ### AF_XDP PMD in guest with testpmd
>
> testpmd> show port stats all
>
> ######################## NIC statistics for port 0 ########################
> RX-packets: 68152727 RX-missed: 0 RX-bytes: 3816552712
> RX-errors: 0
> RX-nombuf: 0
> TX-packets: 68114967 TX-errors: 33216 TX-bytes: 3814438152
>
> Throughput (since last show)
> Rx-pps: 6333196 Rx-bps: 2837272088
> Tx-pps: 6333227 Tx-bps: 2837285936
> ############################################################################
>
> But AF_XDP consumes more CPU for tx and rx napi(100% and 86%).
>
> Please review.
>
> Thanks.
>
> v3
> 1. virtio introduces helpers for virtio-net sq using premapped dma
> 2. xsk has more complete support for merge mode
> 3. fix some problems
>
> v2
> 1. wakeup uses the way of GVE. No send ipi to wakeup napi on remote cpu.
> 2. remove rcu. Because we synchronize all operat, so the rcu is not needed.
> 3. split the commit "move to virtio_net.h" in last patch set. Just move the
> struct/api to header when we use them.
> 4. add comments for some code
>
> v1:
> 1. remove two virtio commits. Push this patchset to net-next
> 2. squash "virtio_net: virtnet_poll_tx support rescheduled" to xsk: support tx
> 3. fix some warnings
>
>
>
>
>
>
>
>
> Xuan Zhuo (10):
> virtio_net: replace VIRTIO_XDP_HEADROOM by XDP_PACKET_HEADROOM
> virtio_net: separate virtnet_rx_resize()
> virtio_net: separate virtnet_tx_resize()
> virtio_net: separate receive_buf
> virtio_net: separate receive_mergeable
> virtio_net: xsk: bind/unbind xsk for rx
> virtio_net: xsk: support wakeup
> virtio_net: xsk: rx: support fill with xsk buffer
> virtio_net: xsk: rx: support recv small mode
> virtio_net: xsk: rx: support recv merge mode
>
> drivers/net/virtio_net.c | 770 ++++++++++++++++++++++++++++++++++-----
> 1 file changed, 676 insertions(+), 94 deletions(-)
>
> --
> 2.32.0.3.g01195cf9f
next prev parent reply other threads:[~2024-07-10 6:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-08 11:25 [PATCH net-next v8 00/10] virtio-net: support AF_XDP zero copy Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 01/10] virtio_net: replace VIRTIO_XDP_HEADROOM by XDP_PACKET_HEADROOM Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 02/10] virtio_net: separate virtnet_rx_resize() Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 03/10] virtio_net: separate virtnet_tx_resize() Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 04/10] virtio_net: separate receive_buf Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 05/10] virtio_net: separate receive_mergeable Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 06/10] virtio_net: xsk: bind/unbind xsk for rx Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 07/10] virtio_net: xsk: support wakeup Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 08/10] virtio_net: xsk: rx: support fill with xsk buffer Xuan Zhuo
2024-07-10 3:44 ` Jason Wang
2024-07-08 11:25 ` [PATCH net-next v8 09/10] virtio_net: xsk: rx: support recv small mode Xuan Zhuo
2024-07-08 11:25 ` [PATCH net-next v8 10/10] virtio_net: xsk: rx: support recv merge mode Xuan Zhuo
2024-07-10 6:08 ` Michael S. Tsirkin [this message]
2024-07-15 3:40 ` [PATCH net-next v8 00/10] virtio-net: support AF_XDP zero copy patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240710020746-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eperezma@redhat.com \
--cc=hawk@kernel.org \
--cc=jasowang@redhat.com \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=virtualization@lists.linux.dev \
--cc=xuanzhuo@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.