v2
2026-11-04
多线程自适应 kswapd 回收 · v2
NUMA 多线程 kswapd 自适应回收处理 MGLRU 并发 aging,移除 try_to_inc_max_seq 竞态 WARN 并保持返回值语义。
原始补丁链接
子 Patch(5)
1/5
vmscan: Support multiple kswapd threads per node
On Sat, Oct 10, 2026 at 4:30 AM Ehab Ababneh ehab.ababneh@intel.com wrote: > > From: Buddy Lumpkin buddy.lumpkin@oracle.com > > Page replacement is handled in the Linux Kernel in one of two ways:
2/5
mm/vmscan: silence spurious max_seq race warning
在 try_to_inc_max_seq() 中移除并发 aging 推进 max_seq 时的 WARN_ON_ONCE;该竞态无害且仍返回未成功,让 get_nr_to_scan() 继续扫描此 lruvec,避免回收线程误退。
3/5
mm/vmscan: make kswapd wakeups NUMA load-aware
新增后台 worker 每秒采样各 NUMA 节点空闲核数并维护 10 秒滚动均值;wakeup_kswapd() 据此限制唤醒的 kswapd 线程数,使回收并发匹配节点 CPU 余量,避免饱和节点调度争用。
4/5
mm/vmscan: let kswapd scan minimum-generation lruvecs
在 scan_folios() 中当 lruvec 只剩 MIN_NR_GENS 代时,仅放行 kswapd 扫描最旧代,其他回收者仍提前返回;这是诊断改动,观察 aging 不推进时 kswapd 能否回收该代。
5/5
mm/vmscan: scale hopeless threshold for kswapd workers
多 kswapd worker 并发回收时,无进展计数每次 balance pass 递增,会过早达到 MAX_RECLAIM_RETRIES 将节点判为 hopeless;现按活跃 worker 数放大阈值,给每个 worker 保留原有重试预算。