v1
2026-09-11
KSM 扫描改用 per-VMA 锁 · v1
KSM 扫描可合并 VMA 时改用 per-VMA 读锁替代 mmap_read_lock(),避免 ksmd 阻塞同 mm 内无关的 mmap/munmap。
原始补丁链接
子 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 争用下降低延迟。