使用现有的 cache-stat 工具你的配置中已经使用了 /usr/local/bin/cache-stat 工具它会输出到 CSV 文件查看测试CPUCPU7的缓存统计cat /tmp/aggr_strong_n2_c0/perf-iso.csv查看压力CPUCPU0-6的缓存统计cat /tmp/aggr_strong_n2_c0/perf-hk.csv这个工具通常会输出以下指标• LLC最后一级缓存命中率• L1/L2 缓存命中率• 缓存未命中率• 内存带宽使用情况使用 perf 工具最常用Linux 自带的 perf 工具可以详细监控缓存事件基本缓存统计监控CPU7的缓存事件perf stat -e cache-references,cache-misses -C 7 sleep 10监控所有CPU的缓存事件perf stat -e cache-references,cache-misses -a sleep 10详细缓存事件监控监控LLCL3缓存事件perf stat -e LLC-loads,LLC-load-misses,LLC-stores,LLC-store-misses -C 7 sleep 10监控L1和L2缓存事件perf stat -e L1-dcache-loads,L1-dcache-load-misses,L1-dcache-stores-e L1-icache-load-misses-e dTLB-loads,dTLB-load-misses-C 7 sleep 10实时监控你的测试程序方法1监控整个进程perf stat -e cache-references,cache-missestaskset -c 7 /usr/local/bin/l3-victim-chase --size-bytes 393216 --duration 120 --stride 64 --mlock方法2附加到运行中的进程perf stat -e cache-references,cache-misses -p使用 perf record 进行详细分析记录缓存事件perf record -e cache-misses -C 7 -o perf.data sleep 120分析记录的数据perf report -i perf.data查看函数级别的缓存未命中perf annotate -i perf.data使用 Intel PCM 工具针对Intel CPU如果你的系统是Intel CPU可以使用 Intel Performance Counter Monitor安装如果可用sudo apt-get install pcm监控所有CPU的缓存sudo pcm -csvoutput.csv只监控CPU7sudo pcm -core7使用 likwid 工具安装sudo apt-get install likwid监控缓存命中率likwid-perfctr -C 7 -g CACHE -m ./l3-victim-chase [参数]直接读取内核性能计数器查看可用的性能事件perf list | grep cache查看特定事件的计数器sudo perf stat -e r412e -C 7 sleep 1 # L1-dcache-load-misses针对你的测试配置的建议监控脚本创建一个监控脚本 monitor_cache.sh#!/bin/bash监控CPU7的缓存统计echo “ 监控测试CPU (CPU7) ”perf stat -e cache-references,cache-misses,LLC-loads,LLC-load-misses-e L1-dcache-loads,L1-dcache-load-misses-C 7 sleep 120 21 | tee /tmp/cpu7_cache_stats.txt监控压力CPU (CPU0-6) 的缓存统计echo -e “\n 监控压力CPU (CPU0-6) ”perf stat -e cache-references,cache-misses,LLC-loads,LLC-load-misses-e L1-dcache-loads,L1-dcache-load-misses-C 0-6 sleep 120 21 | tee /tmp/cpu0-6_cache_stats.txt计算命中率echo -e “\n 缓存命中率统计 ”awk ‘/cache-references/ {ref$1} /cache-misses/ {miss$1} END {if(ref0) printf(“总体缓存命中率: %.2f%%\n”, (1-miss/ref)*100)}’/tmp/cpu7_cache_stats.txtawk ‘/LLC-loads/ {loads$1} /LLC-load-misses/ {miss$1} END {if(loads0) printf(“LLC加载命中率: %.2f%%\n”, (1-miss/loads)*100)}’/tmp/cpu7_cache_stats.txt使用可视化工具使用 perf 和 flamegraph记录缓存未命中perf record -e cache-misses -g -C 7 -o cache_misses.data sleep 120生成火焰图perf script -i cache_misses.data | stackcollapse-perf.pl | flamegraph.pl cache_misses.svg使用 sar 监控系统缓存安装sysstatsudo apt-get install sysstat监控缓存使用sar -r 1 120 # 监控内存和缓存使用sar -B 1 120 # 监控页面交换和缓存效率关键指标解释缓存命中率计算公式命中率 (1 - 未命中次数 / 总访问次数) × 100%重要指标• cache-references缓存总访问次数• cache-misses缓存未命中次数• LLC-loads最后一级缓存加载次数• LLC-load-missesLLC加载未命中次数典型值• L1缓存命中率通常 95%• L2缓存命中率通常 90%• LLC命中率通常 80%• 低于这些值可能表示缓存竞争严重建议的完整监控命令对于你的测试场景建议运行在测试开始前运行这个监控perf stat -e cache-references,cache-misses-e LLC-loads,LLC-load-misses-e L1-dcache-loads,L1-dcache-load-misses-C 7,0-6 --interval-print 1000taskset -c 7 /usr/local/bin/l3-victim-chase --size-bytes 393216 --duration 120 --stride 64 --mlock这样你可以实时看到每秒的缓存统计变化更好地分析缓存竞争情况。