v2
2026-10-23
缓解 lruvec 统计的缓存行竞争 · v2
重排 struct mem_cgroup_per_node,把只读统计行与冷行配对,并让 folio/kmem 统计使用已知的 memcg 与 node,避免与 lru_lock 持有者写入的链表头、lru_zone_size 共享缓存行。
原始补丁链接
子 Patch(2)
1/2
memcg: reduce cacheline contention between lruvec stat updates and LRU lists
调整mem_cgroup_per_node布局,避免per-cpu lruvec统计更新行因CPU空间预取与LRU list heads行配对,降低与lru_lock写者的cacheline争用。
2/2
memcg: don't go through the lruvec for folio and kmem lruvec stat updates
lruvec_stat_mod_folio()与mod_lruvec_kmem_state()把已知memcg/node直接传给mod_memcg_node_state(),绕开通过lruvec读取,减少与lru_lock的cacheline争用。