[PATCH 0/6] sched/numa: fix several NUMA balancing issues

From: Li Zhe

Date: Wed Oct 14 2026 - 05:55:56 EST


This series fixes several NUMA balancing issues around scan-period
adjustment, memory-tiering promotion feedback, and stale task-placement
state.

Patch 1 clears retained NUMA fault-window and locality state across
execve(), so the new image does not inherit feedback from the old one.

Patch 2 fixes the scan-period ratio denominator checks. The existing code
checks a different sum than the one later used as the divisor.

Patch 3 fixes scan-period adjustment for shared faults. Shared or local
faults should slow scanning down, while speeding up should require enough
faults that are both private and remote.

Patch 4 makes the free-space memory-tiering promotion bypass configurable.
The default behavior is preserved, but users can require the normal hotness
and rate-limit checks even when the top tier has enough free space.

Patch 5 prevents memory-tiering-only promotion faults from feeding normal
AutoNUMA task-placement statistics.

Patch 6 ignores stale preferred-node placement state while normal NUMA
balancing is disabled, so memory-tiering-only mode does not consume old
task-placement decisions.

Li Zhe (6):
sched/numa: clear fault locality state on execve
sched/numa: fix scan-period ratio denominator checks
sched/numa: fix scan-period adjustment for shared faults
sched/numa: make free-space tiering promotion bypass configurable
sched/numa: do not feed tiering promotions into task placement stats
sched/numa: ignore preferred nodes without normal balancing

Documentation/admin-guide/sysctl/kernel.rst | 16 ++
include/linux/mm.h | 5 +-
include/linux/mmzone.h | 5 +-
include/linux/sched.h | 17 +-
kernel/sched/fair.c | 181 ++++++++++++++------
mm/memory.c | 2 +-
6 files changed, 163 insertions(+), 63 deletions(-)

--
2.20.1