v1
2026-09-21
kmemleak 批量扫描页数组 · v1
kmemleak 逐页把 struct page 交给 scan_block(),每次都在关中断下取 kmemleak_lock;改为按 MAX_SCAN_SIZE 批量,持锁时间不变但加锁次数大减。
原始补丁链接
子 Patch(2)
1/2
mm: kmemleak: move the struct page scan into a helper
将 __kmemleak_scan() 中内联的 struct page 扫描循环提取为 scan_zone_pages(),按 zone 扫描并返回是否停止,无功能变化,为后续批量调用 scan_block() 做准备。
2/2
mm: kmemleak: scan the struct page array in MAX_SCAN_SIZE batches
kmemleak 扫描 struct page 数组时按相邻可扫描页聚合成最多 MAX_SCAN_SIZE 的批次,单次 scan_block() 处理,大幅减少 kmemleak_lock 获取次数,加快扫描且保持覆盖。