v1 2026-10-14

修复 NUMA balancing 若干问题 · v1

修正 sched/numa 扫描周期分母判断与共享缺页时的速率调节,并在 execve 时清除继承的 fault window 与局部性反馈状态。

原始补丁链接

子 Patch(6)

1/6
sched/numa: clear fault locality state on execve
execve 调用 task_numa_free(p,false) 只清 total_numa_faults 与平均数组半边,遗漏 numa_faults 当前窗口和 numa_faults_locality,使新程序继承旧 NUMA 反馈;改为整体清零保留数组与 locality。
2/6
sched/numa: fix scan-period ratio denominator checks
update_task_scan_period() 只用 local+shared 做分母保护,内存热移除节点后可能出现 local>0 且 private+shared=0,导致 private/(private+shared) 除零;改为分别校验两个比例分母,样本不可用时回退慢扫描。
3/6
sched/numa: fix scan-period adjustment for shared faults
update_task_scan_period() 原用 private 比例当慢扫描信号,反使 shared 主导能加速;新增同时 remote+private 计数,仅该信号足够大才缩短扫描周期,shared/local 主导仍减速,修正 37ec97deb3a8 语义。
4/6
sched/numa: make free-space tiering promotion bypass configurable
新增 sysctl kernel.numa_balancing_promote_free_space_bypass(默认1),关闭后 fast-tier 空闲空间不再绕过 NUMA tiering 的 hotness/限速提升,允许 CXL/DRAM 聚合带宽场景维持跨层分布。
5/6
sched/numa: do not feed tiering promotions into task placement stats
NUMA balancing has separate mode bits for normal task placement and memory tiering. In memory-tiering-only mode, NUMA hinting faults on slow-tier pages are used to detect hot pages and promote them to
6/6
sched/numa: ignore preferred nodes without normal balancing
numa_preferred_nid is normal AutoNUMA task-placement state. Memory-tiering-only mode uses NUMA hint faults to drive page promotion, not CPU placement. Even after tiering-only faults stop updating nor