v1
2026-09-24
KSM 扫描改用 per-VMA 锁 · v1
KSM 改用 per-VMA 读锁而非 mmap_read_lock:新增 find_mergeable_vma_locked(),并扩展 folio_walk 的锁模式校验。
原始补丁链接
子 Patch(4)
1/4
mm/pagewalk: delete the unused member
删除 folio_walk 中从未使用的 vma 成员,属于死代码清理,无功能影响。
2/4
mm: make folio_walk_start()'s locking asserts scalable
在 folio_walk 中加入 walk_lock 描述锁要求,并让 folio_walk_start() 调用者传入;当前不改变锁行为,为后续加 VMA 锁断言做准备。
3/4
mm/ksm: make break_ksm() more scalable
break_ksm() 的布尔 walk_lock 改为 page_walk_lock 枚举,以便后续支持 VMA read-locking 这第三种保护方式;当前行为不变。
4/4
mm/ksm: add find_mergeable_vma_locked() to use per-VMA locking
新增 find_mergeable_vma_locked(),用 per-VMA 锁替代 KSM 中受 mmap_read_lock 保护的 find_mergeable_vma(),在高 mmap_lock 争用下降低延迟。