net: pin system percpu page_pools to the corresponding NUMA nodes
authorAlexander Lobakin <aleksander.lobakin@intel.com>
Mon, 25 Mar 2024 16:06:35 +0000 (17:06 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 27 Mar 2024 03:46:59 +0000 (20:46 -0700)
commit341ee1a584c8f55068cc5d7024cf1711ab81e388
tree90a0657c0a5ec14e3eea57d1e63a89bfe8281c3f
parent6e06312035032924fc97f2050bfe85e63ca26514
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>
net/core/dev.c