![在运行 Ubuntu Linux 的 AMD 机器上通过 PAPI 测量最后一级缓存未命中](https://linux22.com/image/42811/%E5%9C%A8%E8%BF%90%E8%A1%8C%20Ubuntu%20Linux%20%E7%9A%84%20AMD%20%E6%9C%BA%E5%99%A8%E4%B8%8A%E9%80%9A%E8%BF%87%20PAPI%20%E6%B5%8B%E9%87%8F%E6%9C%80%E5%90%8E%E4%B8%80%E7%BA%A7%E7%BC%93%E5%AD%98%E6%9C%AA%E5%91%BD%E4%B8%AD.png)
默认情况下,PAPI(性能应用程序编程接口)似乎不支持测量运行 Ubuntu Linux 的 AMD 计算机上的最后一级缓存未命中 (L3)。不过,我可以测量 L1/L2 缓存未命中情况。您可以在下面查看处理器的详细信息。我听说如果安装适当的驱动程序,可以测量最后一级缓存未命中的情况。有人可以向我提供更多有关此的信息吗?
$ uname -a
Linux 2.6.32-21-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux
$cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 8
model name : Six-Core AMD Opteron(tm) Processor 8431
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt
bogomips : 4788.66
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 48 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate
答案1
尝试使用 Valgrind 的缓存研磨分析器或 perf 或 perf Expert。
所有这些都将提供 LastLevel 缓存详细信息,就像在大多数情况下 L3 一样。
您需要加载所有这些模块。
执行命令:
瓦尔格林德:
valgrind --tool=cachegrind ./exe
完美专家:
perfexpert_run_exp ./exe
性能:
perf stat -e <hardware counter> ... -e <hardwarecounter> ./exe
答案2
您还可以使用 perf 工具。首先,您需要使用“perf list”命令检查您的计数器是否能够对最后一级缓存未命中进行计数。然后你可以用 perf_record 读取它们..