Re: [PATCH v10] mm/page_alloc: boost watermarks on atomic allocation failure

From: SeongJae Park

Date: Tue Feb 17 2026 - 20:00:18 EST


On Sat, 14 Feb 2026 23:13:50 +0800 Qiliang Yuan <realwujing@xxxxxxxxx> wrote:

> Atomic allocations (GFP_ATOMIC) are prone to failure under heavy memory
> pressure as they cannot enter direct reclaim.
>
> Handle these failures by introducing a watermark boost mechanism for
> atomic requests. Refactor boost_watermark() using an internal helper to
> support both fragmentation and atomic paths. Apply zone-proportional
> boosts (~0.1% of managed pages) for atomic allocations, while
> decoupling it from watermark_boost_factor.
>
> Implement boost_zones_for_atomic() to iterate through and boost all
> eligible zones in the zonelist, respecting nodemasks. Use a per-zone
> 1-second debounce timer via last_boost_jiffies to prevent excessive
> boosting. Protect modifications with zone->lock and verify with
> lockdep. Integrate the mechanism into the page allocation slowpath
> specifically for order-0 GFP_ATOMIC requests.
>
> This approach reuses existing infrastructure and ensures emergency
> reserves even if fragmentation boosting is disabled.
>
> Allocation failure logs:
> [38535644.718700] node 0: slabs: 1031, objs: 43328, free: 0
> [38535644.725059] node 1: slabs: 339, objs: 17616, free: 317
> [38535645.428345] SLUB: Unable to allocate memory on node -1, gfp=0x480020(GFP_ATOMIC)
> [38535645.436888] cache: skbuff_head_cache, object size: 232, buffer size: 256, default order: 2, min order: 0
> [38535645.447664] node 0: slabs: 940, objs: 40864, free: 144
> [38535645.454026] node 1: slabs: 322, objs: 19168, free: 383
> [38535645.556122] SLUB: Unable to allocate memory on node -1, gfp=0x480020(GFP_ATOMIC)
> [38535645.564576] cache: skbuff_head_cache, object size: 232, buffer size: 256, default order: 2, min order: 0
> [38535649.655523] warn_alloc: 59 callbacks suppressed
> [38535649.655527] swapper/100: page allocation failure: order:0, mode:0x480020(GFP_ATOMIC), nodemask=(null)
> [38535649.671692] swapper/100 cpuset=/ mems_allowed=0-1
>
> Acked-by: Vlastimil Babka <vbabka@xxxxxxx>
> Signed-off-by: Qiliang Yuan <realwujing@xxxxxxxxx>

Acked-by: SeongJae Park <sj@xxxxxxxxxx>


Thanks,
SJ

[...]