[PATCH v2 0/3] sched/numa: refine memory tiering promotion heuristics
From: Li Zhe
Date: Wed Oct 28 2026 - 00:15:16 EST
This version narrows the series to memory tiering. The generic normal
NUMA balancing cleanups and heuristic changes from v1 are not included.
Patch 1 makes the free-space promotion bypass configurable while keeping
the existing eager-promotion behavior as the default. Disabling the
bypass forces slow-tier promotions through the normal hotness and
rate-limit checks, which helps workloads that intentionally keep part of
their memory on a slow tier avoid short cold bursts refilling the fast
tier.
Patch 2 keeps memory-tiering-only promotion faults out of normal AutoNUMA
task-placement statistics. Slow-tier NUMA hint faults use the folio
last-cpupid field as access-time metadata, so those faults should not be
interpreted as normal placement feedback. The patch marks them explicitly
and skips the placement accounting path.
Patch 3 builds on that separation. Once tiering faults are no longer fed
into task placement stats, tiering-only mode can use tiering-specific
outcomes to tune the scan period: hot feedback speeds scanning up, while
cold, throttled, failed or empty windows slow it down. This prevents
tiering-only promotion feedback from being handled by the normal placement
heuristic, where repeated promotions can otherwise push the scan period
towards the maximum.
Li Zhe (3):
sched/numa: make free-space tiering promotion bypass configurable
sched/numa: do not feed tiering promotions into task placement stats
sched/numa: fix scan-period adjustment for tiering-only mode
include/linux/mmzone.h | 5 +-
include/linux/sched.h | 17 ++++
include/linux/sched/numa_balancing.h | 10 ++
kernel/sched/debug.c | 2 +
kernel/sched/fair.c | 140 +++++++++++++++++++++++++--
kernel/sched/sched.h | 1 +
mm/memory.c | 6 +-
7 files changed, 168 insertions(+), 13 deletions(-)
---
v1: https://lore.kernel.org/all/20261014094347.99157-1-lizhe.67@xxxxxxxxxxxxx/
Changes since v1:
- Dropped the generic normal NUMA balancing patches.
- Added patch 3 to dynamically adjust the scan period in
memory-tiering-only mode.
--
2.20.1