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

如何用Perf CLI工具计算LLC缓存缺失率并监控绘图?

使用Perf CLI计算L3(LLC)缓存缺失率

1. 基于Perf指标计算LLC缺失率

Perf输出的LLC相关指标中,核心用于计算缺失率的是加载/存储类事件计数,LLC prefetch misses一般不纳入常规缺失率统计(除非你专门分析硬件预取的效率):

  • LLC加载缺失率:公式为 (LLC load misses / LLC loads) * 100%,反映应用发起的加载请求中,LLC无法满足的比例
  • LLC存储缺失率:公式为 (LLC store misses / LLC stores) * 100%,对应存储请求的LLC缺失比例
  • 整体LLC缺失率:如果要综合加载和存储的整体情况,用 (LLC load misses + LLC store misses) / (LLC loads + LLC stores) * 100%

注:LLC预取缺失是硬件预取器主动发起的请求未命中的计数,不属于应用直接触发的内存访问,所以通常不参与常规缺失率计算。若需分析预取策略有效性,可单独统计该指标的占比。

2. 用Perf全程监控LLC指标

单次运行全量统计

直接运行程序并输出所有LLC相关事件的计数:

perf stat -e LLC-loads,LLC-load-misses,LLC-stores,LLC-store-misses,LLC-prefetch-misses ./your_application

执行后会输出每个事件的总计数、每秒速率等数据,可手动代入公式计算缺失率。

实时持续监控

如果需要跟踪程序运行过程中LLC指标的波动,可使用间隔采样模式,每隔指定毫秒输出一次统计:

# 每隔1秒输出一次统计,结果写入CSV文件方便后续分析
perf stat -I 1000 -e LLC-loads,LLC-load-misses,LLC-stores,LLC-store-misses,LLC-prefetch-misses -o llc_monitor.csv ./your_application

其中-I 1000表示间隔1000毫秒(1秒),输出的CSV文件可直接用表格工具打开分析。

采样定位热点代码

如果要结合代码定位高LLC缺失的函数/代码段,可使用采样模式:

# 针对LLC加载缺失事件采样,生成采样数据文件
perf record -e LLC-load-misses -g ./your_application
# 查看采样报告,按缺失率排序展示函数
perf report

通过这个方式可以快速定位到缓存效率低的热点代码,指导优化方向。

3. 生成可视化图表

Perf本身不直接生成图表,但可以导出数据后用第三方工具处理:

  1. 用上述perf stat的间隔输出模式导出CSV数据(如llc_monitor.csv)
  2. 用gnuplot、Excel或Python的matplotlib/pandas库生成图表:
    • 示例:用gnuplot绘制LLC加载缺失率的时间变化图
      set datafile separator ","
      set xlabel "Time (s)"
      set ylabel "LLC Load Miss Rate (%)"
      plot "llc_monitor.csv" using 1:($3/$2*100) with lines title "LLC Load Miss Rate"
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:11:20