You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计x86-64架构中引发内存访问的TLB缺失次数?

统计TLB缺失引发的DRAM访问次数方案

直接追踪页表遍历的内存访问事件

Intel Xeon W-2104基于Skylake-W架构,perf提供了直接统计页表遍历期间内存访问的专属事件:

  • walk_loads:页表遍历过程中产生的内存加载次数
  • walk_stores:页表遍历过程中产生的内存存储次数(仅在页表更新场景中出现,多数情况以加载为主)
  • 采集命令示例:
    perf stat -e dtlb_load_misses.miss_causes_a_walk,dtlb_store_misses.miss_causes_a_walk,walk_loads,walk_stores ./your_target_program
    

这些事件直接对应地址转换阶段的内存访问,无需额外筛选,是最精准的统计方式。

从LLC缺失中筛选地址转换相关部分

若需通过LLC缺失关联DRAM访问,Skylake架构支持perf事件修饰符来分离页表遍历引发的缓存操作:

  • LLC-load-misses:pp:仅统计页表遍历(page walk)导致的LLC加载缺失
  • LLC-store-misses:pp:仅统计页表遍历导致的LLC存储缺失
  • 采集命令示例:
    perf stat -e dtlb_load_misses.miss_causes_a_walk,LLC-load-misses:pp ./your_target_program
    

:pp修饰符是Intel架构特有的过滤规则,能精准区分普通数据访问和地址转换触发的LLC缺失,而LLC缺失通常对应DRAM访问,以此间接估算地址转换引发的内存访问量。

结果验证与校准

  • 对比walk_loads和LLC-load-misses:pp的数值:walk_loads包含页表遍历命中L1/L2缓存的访问,因此会大于等于LLC-load-misses:pp,后者才是真正触发DRAM访问的次数
  • 若dtlb_*_misses.miss_causes_a_walk数值超出预期,可结合walk_loads判断是否是页表遍历本身的访问量偏高(比如大内存、频繁地址空间切换等场景)

内容的提问来源于stack exchange,提问作者Arun Kp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:28:12