v2
2026-11-02
水位检查遵循NOFRAG · v2
让高水位检查尊重ALLOC_NOFRAGMENT,避免defrag_mode下64K mTHP缺页因错误水位判断反复进入compaction。
原始补丁链接
子 Patch(3)
1/3
mm: page_alloc: add a watermark check that knows the migratetype
将__zone_watermark_ok()主体移入带migratetype的__zone_watermark_ok_mt(),旧函数作总量检查包装;分配快路径、reclaim后复查和compaction前置检查改用迁移类型。
2/3
mm: page_alloc: make the high-order watermark check honour ALLOC_NOFRAGMENT
高阶watermark检查在ALLOC_NOFRAGMENT下只接受请求migratetype或可整块声明的页;避免compaction前置检查把其他migratetype空闲页误判为COMPACT_SUCCESS,导致64K mTHP反复失败。
3/3
mm: vmscan: tell direct reclaim the allocation is ALLOC_NOFRAGMENT
把ALLOC_NOFRAGMENT从分配路径传到try_to_free_pages(),让compaction_ready()和should_continue_reclaim()的watermark检查按请求migratetype判断;避免defrag_mode下reclaim误停。