perf c2c 深入
更新时间:2026-10-01。已有 perf c2c,本文讲怎么从报告里揪出争抢行。
一、HITM 是什么
当一个 load 命中的 cache line 正以 modified 状态存在于另一个核,需要跨核取回,记为 HITM(本地/远端)。频繁 HITM 的物理行说明多线程在反复抢同一行,是扩展性杀手。
二、读报告
perf c2c record 采内存样本,perf c2c report 按物理行聚合:看 HITM 计数高的行,展开可见偏移、访问的核、所属符号,从而判断是“真共享”(必须共享同一数据)还是“伪共享”(不同变量恰好同行)。

三、常见坑
- 只看锁不看数据行。
- 填充后不复测。
- 误把真共享当伪共享,盲目加 padding。
小结
HITM 揭示跨核改行,c2c 按物理行定位偏移与符号,伪共享靠布局、真共享靠算法,修复要复测。下一篇 内存访问延迟与数据源。
总结
当一个 load 命中的 cache line 正以 modified 状态存在于另一个核、需跨核取回,即记为 HITM;频繁 HITM 的物理行说明多线程在反复抢同一行、是扩展性杀手。perf c2c report 按物理行聚合,从高 HITM 行展开偏移、访问核和所属符号,先判断是真共享(必须共享同一数据,对策是改算法/分片)还是伪共享(不同变量恰好同行,对策是填充/对齐/拆分)——只看锁不看数据行会漏诊,且修复后必须复测。