APPLIED: [SRU][N:linux-bluefield][PATCH v1 0/1] net: page_pool: scale alloc cache with PAGE_SIZE
Alessio Faina
alessio.faina at canonical.com
Fri Apr 17 06:55:06 UTC 2026
On Sun, Apr 05, 2026 at 12:02:38PM +0300, Stav Aviram wrote:
> BugLink: https://bugs.launchpad.net/bugs/2147290
>
> SRU Justification:
>
> [Impact]
> On BlueField-3 DPU with linux-bluefield-6.8 kernel (based on Ubuntu 24.04 noble), creating a large number of sub-functions (SFs) via devlink (for example 1600+ `devlink port add ... flavour pcisf` instances) causes severe host memory pressure. In the reported scenario, available memory dropped from roughly 22 GiB to about 4 GiB after creating on the order of 1685 SFs, while total used memory rose dramatically.
> The root cause is that `page_pool` uses fixed alloc-cache sizing (`PP_ALLOC_CACHE_SIZE` / `PP_ALLOC_CACHE_REFILL`) tuned for 4 KiB pages and NAPI/XDP behavior. On BlueField kernels (Ubuntu 24.04 Noble and Ubuntu 22.04 Jammy based kernels), each cached entry corresponds to a much larger backing page, so the same object counts multiply the per-pool memory footprint. Many network devices allocate page pools per queue or logical port; scaling SF count multiplies that cost and can exhaust memory on 32 GiB systems even when traffic is idle.
>
> [Fix]
> Cherry picking the upstream commit:
> "net: page_pool: scale alloc cache with PAGE_SIZE"
> The change scales `PP_ALLOC_CACHE_REFILL` (and hence `PP_ALLOC_CACHE_SIZE`, which remains twice the refill watermark) by `PAGE_SIZE` so that cache footprint in bytes is balanced across page sizes. On 4 KiB page builds the values stay 64 / 128; on 16 KiB and 64 KiB pages they are reduced (16 / 32 and 4 / 8 respectively), cutting redundant cached page capacity where the old constants were grossly oversized.
>
> [Test Case]
> Compiled tested on linux-bluefield-6.8 on master-next branch.
>
> [Regression Potential]
> Low. The change is confined to compile-time constants in `include/net/page_pool/types.h`, and was accepted upstream.
>
> Nimrod Oren (1):
> net: page_pool: scale alloc cache with PAGE_SIZE
>
> include/net/page_pool/types.h | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> --
> 2.38.1
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
Applied to n:linux-bluefield
Thanks!
- Alessio Faina
More information about the kernel-team
mailing list