From: "Michael S. Tsirkin" <mst@redhat.com> To: Yunsheng Lin <linyunsheng@huawei.com> Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Jesper Dangaard Brouer <hawk@kernel.org>, John Fastabend <john.fastabend@gmail.com>, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, bpf@vger.kernel.org Subject: Re: [PATCH net-next v6 0/5] remove page frag implementation in vhost_net Date: Tue, 5 Mar 2024 05:26:41 -0500 [thread overview] Message-ID: <20240305052625-mutt-send-email-mst@kernel.org> (raw) In-Reply-To: <20240228093013.8263-1-linyunsheng@huawei.com> On Wed, Feb 28, 2024 at 05:30:07PM +0800, Yunsheng Lin wrote: > Currently there are three implementations for page frag: > > 1. mm/page_alloc.c: net stack seems to be using it in the > rx part with 'struct page_frag_cache' and the main API > being page_frag_alloc_align(). > 2. net/core/sock.c: net stack seems to be using it in the > tx part with 'struct page_frag' and the main API being > skb_page_frag_refill(). > 3. drivers/vhost/net.c: vhost seems to be using it to build > xdp frame, and it's implementation seems to be a mix of > the above two. > > This patchset tries to unfiy the page frag implementation a > little bit by unifying gfp bit for order 3 page allocation > and replacing page frag implementation in vhost.c with the > one in page_alloc.c. Looks good Acked-by: Michael S. Tsirkin <mst@redhat.com> > After this patchset, we are not only able to unify the page > frag implementation a little, but also able to have about > 0.5% performance boost testing by using the vhost_net_test > introduced in the last patch. > > Before this patchset: > Performance counter stats for './vhost_net_test' (10 runs): > > 305325.78 msec task-clock # 1.738 CPUs utilized ( +- 0.12% ) > 1048668 context-switches # 3.435 K/sec ( +- 0.00% ) > 11 cpu-migrations # 0.036 /sec ( +- 17.64% ) > 33 page-faults # 0.108 /sec ( +- 0.49% ) > 244651819491 cycles # 0.801 GHz ( +- 0.43% ) (64) > 64714638024 stalled-cycles-frontend # 26.45% frontend cycles idle ( +- 2.19% ) (67) > 30774313491 stalled-cycles-backend # 12.58% backend cycles idle ( +- 7.68% ) (70) > 201749748680 instructions # 0.82 insn per cycle > # 0.32 stalled cycles per insn ( +- 0.41% ) (66.76%) > 65494787909 branches # 214.508 M/sec ( +- 0.35% ) (64) > 4284111313 branch-misses # 6.54% of all branches ( +- 0.45% ) (66) > > 175.699 +- 0.189 seconds time elapsed ( +- 0.11% ) > > > After this patchset: > Performance counter stats for './vhost_net_test' (10 runs): > > 303974.38 msec task-clock # 1.739 CPUs utilized ( +- 0.14% ) > 1048807 context-switches # 3.450 K/sec ( +- 0.00% ) > 14 cpu-migrations # 0.046 /sec ( +- 12.86% ) > 33 page-faults # 0.109 /sec ( +- 0.46% ) > 251289376347 cycles # 0.827 GHz ( +- 0.32% ) (60) > 67885175415 stalled-cycles-frontend # 27.01% frontend cycles idle ( +- 0.48% ) (63) > 27809282600 stalled-cycles-backend # 11.07% backend cycles idle ( +- 0.36% ) (71) > 195543234672 instructions # 0.78 insn per cycle > # 0.35 stalled cycles per insn ( +- 0.29% ) (69.04%) > 62423183552 branches # 205.357 M/sec ( +- 0.48% ) (67) > 4135666632 branch-misses # 6.63% of all branches ( +- 0.63% ) (67) > > 174.764 +- 0.214 seconds time elapsed ( +- 0.12% ) > > Changelog: > V6: Add timeout for poll() and simplify some logic as suggested > by Jason. > > V5: Address the comment from jason in vhost_net_test.c and the > comment about leaving out the gfp change for page frag in > sock.c as suggested by Paolo. > > V4: Resend based on latest net-next branch. > > V3: > 1. Add __page_frag_alloc_align() which is passed with the align mask > the original function expected as suggested by Alexander. > 2. Drop patch 3 in v2 suggested by Alexander. > 3. Reorder patch 4 & 5 in v2 suggested by Alexander. > > Note that placing this gfp flags handing for order 3 page in an inline > function is not considered, as we may be able to unify the page_frag > and page_frag_cache handling. > > V2: Change 'xor'd' to 'masked off', add vhost tx testing for > vhost_net_test. > > V1: Fix some typo, drop RFC tag and rebase on latest net-next. > > Yunsheng Lin (5): > mm/page_alloc: modify page_frag_alloc_align() to accept align as an > argument > page_frag: unify gfp bits for order 3 page allocation > net: introduce page_frag_cache_drain() > vhost/net: remove vhost_net_page_frag_refill() > tools: virtio: introduce vhost_net_test > > drivers/net/ethernet/google/gve/gve_main.c | 11 +- > drivers/net/ethernet/mediatek/mtk_wed_wo.c | 17 +- > drivers/nvme/host/tcp.c | 7 +- > drivers/nvme/target/tcp.c | 4 +- > drivers/vhost/net.c | 91 ++-- > include/linux/gfp.h | 16 +- > mm/page_alloc.c | 22 +- > net/core/skbuff.c | 9 +- > tools/virtio/.gitignore | 1 + > tools/virtio/Makefile | 8 +- > tools/virtio/linux/virtio_config.h | 4 + > tools/virtio/vhost_net_test.c | 532 +++++++++++++++++++++ > 12 files changed, 609 insertions(+), 113 deletions(-) > create mode 100644 tools/virtio/vhost_net_test.c > > -- > 2.33.0 >
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com> To: Yunsheng Lin <linyunsheng@huawei.com> Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Matthias Brugger <matthias.bgg@gmail.com>, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>, Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>, Jesper Dangaard Brouer <hawk@kernel.org>, John Fastabend <john.fastabend@gmail.com>, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, bpf@vger.kernel.org Subject: Re: [PATCH net-next v6 0/5] remove page frag implementation in vhost_net Date: Tue, 5 Mar 2024 05:26:41 -0500 [thread overview] Message-ID: <20240305052625-mutt-send-email-mst@kernel.org> (raw) In-Reply-To: <20240228093013.8263-1-linyunsheng@huawei.com> On Wed, Feb 28, 2024 at 05:30:07PM +0800, Yunsheng Lin wrote: > Currently there are three implementations for page frag: > > 1. mm/page_alloc.c: net stack seems to be using it in the > rx part with 'struct page_frag_cache' and the main API > being page_frag_alloc_align(). > 2. net/core/sock.c: net stack seems to be using it in the > tx part with 'struct page_frag' and the main API being > skb_page_frag_refill(). > 3. drivers/vhost/net.c: vhost seems to be using it to build > xdp frame, and it's implementation seems to be a mix of > the above two. > > This patchset tries to unfiy the page frag implementation a > little bit by unifying gfp bit for order 3 page allocation > and replacing page frag implementation in vhost.c with the > one in page_alloc.c. Looks good Acked-by: Michael S. Tsirkin <mst@redhat.com> > After this patchset, we are not only able to unify the page > frag implementation a little, but also able to have about > 0.5% performance boost testing by using the vhost_net_test > introduced in the last patch. > > Before this patchset: > Performance counter stats for './vhost_net_test' (10 runs): > > 305325.78 msec task-clock # 1.738 CPUs utilized ( +- 0.12% ) > 1048668 context-switches # 3.435 K/sec ( +- 0.00% ) > 11 cpu-migrations # 0.036 /sec ( +- 17.64% ) > 33 page-faults # 0.108 /sec ( +- 0.49% ) > 244651819491 cycles # 0.801 GHz ( +- 0.43% ) (64) > 64714638024 stalled-cycles-frontend # 26.45% frontend cycles idle ( +- 2.19% ) (67) > 30774313491 stalled-cycles-backend # 12.58% backend cycles idle ( +- 7.68% ) (70) > 201749748680 instructions # 0.82 insn per cycle > # 0.32 stalled cycles per insn ( +- 0.41% ) (66.76%) > 65494787909 branches # 214.508 M/sec ( +- 0.35% ) (64) > 4284111313 branch-misses # 6.54% of all branches ( +- 0.45% ) (66) > > 175.699 +- 0.189 seconds time elapsed ( +- 0.11% ) > > > After this patchset: > Performance counter stats for './vhost_net_test' (10 runs): > > 303974.38 msec task-clock # 1.739 CPUs utilized ( +- 0.14% ) > 1048807 context-switches # 3.450 K/sec ( +- 0.00% ) > 14 cpu-migrations # 0.046 /sec ( +- 12.86% ) > 33 page-faults # 0.109 /sec ( +- 0.46% ) > 251289376347 cycles # 0.827 GHz ( +- 0.32% ) (60) > 67885175415 stalled-cycles-frontend # 27.01% frontend cycles idle ( +- 0.48% ) (63) > 27809282600 stalled-cycles-backend # 11.07% backend cycles idle ( +- 0.36% ) (71) > 195543234672 instructions # 0.78 insn per cycle > # 0.35 stalled cycles per insn ( +- 0.29% ) (69.04%) > 62423183552 branches # 205.357 M/sec ( +- 0.48% ) (67) > 4135666632 branch-misses # 6.63% of all branches ( +- 0.63% ) (67) > > 174.764 +- 0.214 seconds time elapsed ( +- 0.12% ) > > Changelog: > V6: Add timeout for poll() and simplify some logic as suggested > by Jason. > > V5: Address the comment from jason in vhost_net_test.c and the > comment about leaving out the gfp change for page frag in > sock.c as suggested by Paolo. > > V4: Resend based on latest net-next branch. > > V3: > 1. Add __page_frag_alloc_align() which is passed with the align mask > the original function expected as suggested by Alexander. > 2. Drop patch 3 in v2 suggested by Alexander. > 3. Reorder patch 4 & 5 in v2 suggested by Alexander. > > Note that placing this gfp flags handing for order 3 page in an inline > function is not considered, as we may be able to unify the page_frag > and page_frag_cache handling. > > V2: Change 'xor'd' to 'masked off', add vhost tx testing for > vhost_net_test. > > V1: Fix some typo, drop RFC tag and rebase on latest net-next. > > Yunsheng Lin (5): > mm/page_alloc: modify page_frag_alloc_align() to accept align as an > argument > page_frag: unify gfp bits for order 3 page allocation > net: introduce page_frag_cache_drain() > vhost/net: remove vhost_net_page_frag_refill() > tools: virtio: introduce vhost_net_test > > drivers/net/ethernet/google/gve/gve_main.c | 11 +- > drivers/net/ethernet/mediatek/mtk_wed_wo.c | 17 +- > drivers/nvme/host/tcp.c | 7 +- > drivers/nvme/target/tcp.c | 4 +- > drivers/vhost/net.c | 91 ++-- > include/linux/gfp.h | 16 +- > mm/page_alloc.c | 22 +- > net/core/skbuff.c | 9 +- > tools/virtio/.gitignore | 1 + > tools/virtio/Makefile | 8 +- > tools/virtio/linux/virtio_config.h | 4 + > tools/virtio/vhost_net_test.c | 532 +++++++++++++++++++++ > 12 files changed, 609 insertions(+), 113 deletions(-) > create mode 100644 tools/virtio/vhost_net_test.c > > -- > 2.33.0 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-03-05 10:26 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-28 9:30 [PATCH net-next v6 0/5] remove page frag implementation in vhost_net Yunsheng Lin 2024-02-28 9:30 ` Yunsheng Lin 2024-02-28 9:30 ` [PATCH net-next v6 1/5] mm/page_alloc: modify page_frag_alloc_align() to accept align as an argument Yunsheng Lin 2024-02-28 9:30 ` [PATCH net-next v6 2/5] page_frag: unify gfp bits for order 3 page allocation Yunsheng Lin 2024-02-28 9:30 ` [PATCH net-next v6 3/5] net: introduce page_frag_cache_drain() Yunsheng Lin 2024-02-28 9:30 ` Yunsheng Lin 2024-02-28 9:30 ` [PATCH net-next v6 4/5] vhost/net: remove vhost_net_page_frag_refill() Yunsheng Lin 2024-02-28 9:30 ` [PATCH net-next v6 5/5] tools: virtio: introduce vhost_net_test Yunsheng Lin 2024-03-05 9:21 ` Paolo Abeni 2024-03-06 5:28 ` Jason Wang 2024-03-05 10:26 ` Michael S. Tsirkin [this message] 2024-03-05 10:26 ` [PATCH net-next v6 0/5] remove page frag implementation in vhost_net Michael S. Tsirkin 2024-03-05 11:30 ` patchwork-bot+netdevbpf 2024-03-05 11:30 ` patchwork-bot+netdevbpf 2024-04-08 7:48 ` Michael S. Tsirkin 2024-04-08 7:48 ` Michael S. Tsirkin
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=20240305052625-mutt-send-email-mst@kernel.org \ --to=mst@redhat.com \ --cc=angelogioacchino.delregno@collabora.com \ --cc=ast@kernel.org \ --cc=bpf@vger.kernel.org \ --cc=daniel@iogearbox.net \ --cc=davem@davemloft.net \ --cc=hawk@kernel.org \ --cc=john.fastabend@gmail.com \ --cc=kuba@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mediatek@lists.infradead.org \ --cc=linyunsheng@huawei.com \ --cc=matthias.bgg@gmail.com \ --cc=netdev@vger.kernel.org \ --cc=pabeni@redhat.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: linkBe 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.