2024-03-25 17:22:22

by Alexander Lobakin

[permalink] [raw]
Subject: [PATCH net-next] net: pin system percpu page_pools to the corresponding NUMA nodes

System page_pools are percpu and one instance can be used only on
one CPU.
%NUMA_NO_NODE is fine for allocating pages, as the PP core always
allocates local pages in this case. But for the struct &page_pool
itself, this node ID means they are allocated on the boot CPU,
which may belong to a different node than the target CPU.
Pin system page_pools to the corresponding nodes when creating,
so that all the allocated data will always be local. Use
cpu_to_mem() to account memless nodes.
Nodes != 0 win some Kpps when testing with xdp-trafficgen.

Signed-off-by: Alexander Lobakin <[email protected]>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/core/dev.c b/net/core/dev.c
index 9a67003e49db..fefa484d715a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -11712,7 +11712,7 @@ static int net_page_pool_create(int cpuid)
struct page_pool_params page_pool_params = {
.pool_size = SYSTEM_PERCPU_PAGE_POOL_SIZE,
.flags = PP_FLAG_SYSTEM_POOL,
- .nid = NUMA_NO_NODE,
+ .nid = cpu_to_mem(cpuid),
};
struct page_pool *pp_ptr;

--
2.44.0



2024-03-27 04:10:17

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH net-next] net: pin system percpu page_pools to the corresponding NUMA nodes

Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <[email protected]>:

On Mon, 25 Mar 2024 17:06:35 +0100 you wrote:
> System page_pools are percpu and one instance can be used only on
> one CPU.
> %NUMA_NO_NODE is fine for allocating pages, as the PP core always
> allocates local pages in this case. But for the struct &page_pool
> itself, this node ID means they are allocated on the boot CPU,
> which may belong to a different node than the target CPU.
> Pin system page_pools to the corresponding nodes when creating,
> so that all the allocated data will always be local. Use
> cpu_to_mem() to account memless nodes.
> Nodes != 0 win some Kpps when testing with xdp-trafficgen.
>
> [...]

Here is the summary with links:
- [net-next] net: pin system percpu page_pools to the corresponding NUMA nodes
https://git.kernel.org/netdev/net-next/c/341ee1a584c8

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html