v5
2026-07-20
vmscan脏页TLB批量刷新 · v5
在内存回收中累积脏页并批量执行TLB刷新,替代逐页调用try_to_unmap_flush_dirty(),减少多核IPI开销。
原始补丁链接
子 Patch(5)
1/5
mm/vmscan: introduce folio_activate_locked() helper
从 shrink_folio_list() 中提取 activate_locked 标签块为 folio_activate_locked() helper,处理 swap cache 回收、标记 active 和更新统计。
2/5
mm/vmscan: extract folio_free() from shrink_folio_list()
从 shrink_folio_list() 中提取 folio 释放逻辑为 folio_free(),包含 buffer release、lazyfree、__remove_mapping 和 folio_batch drain。
3/5
mm/vmscan: extract pageout_one() from shrink_folio_list()
从 shrink_folio_list() 中提取 pageout 状态机为 pageout_one(),减少 shrink_folio_list() 大小并使 pageout 步骤独立可读。
4/5
mm/vmscan: extract folio unmap logic into folio_try_unmap()
从 shrink_folio_list() 中提取 folio unmap 逻辑为 folio_try_unmap(),封装 TTU 标志设置和 try_to_unmap() 调用及失败统计。
5/5
mm/vmscan: flush TLB for every 31 folios evictions
批量处理 folio 驱逐,每 31 个 folio 刷新一次 TLB,减少多核系统 IPI 开销;释放锁后重新检查可驱逐性,避免竞态。