summaryrefslogtreecommitdiff
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorAlexander Lobakin <aleksander.lobakin@intel.com>2024-03-25 19:06:35 +0300
committerJakub Kicinski <kuba@kernel.org>2024-03-27 06:46:59 +0300
commit341ee1a584c8f55068cc5d7024cf1711ab81e388 (patch)
tree90a0657c0a5ec14e3eea57d1e63a89bfe8281c3f /net/core/dev.c
parent6e06312035032924fc97f2050bfe85e63ca26514 (diff)
downloadlinux-341ee1a584c8f55068cc5d7024cf1711ab81e388.tar.xz
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 <aleksander.lobakin@intel.com> Link: https://lore.kernel.org/r/20240325160635.3215855-1-aleksander.lobakin@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 9ce34164bcb1..5d36a634f468 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -11762,7 +11762,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;