use*_*315 2 linux cpu caching perf
有什么方法可以通过 Linux 中的 perf 工具捕获 L3 缓存命中和未命中。根据 的输出perf list cache,支持 L1 和 LLC 缓存。根据perf源码中perf_evsel__hw_cache数组的定义:
const char *perf_evsel__hw_cache[PERF_COUNT_HW_CACHE_MAX]
[PERF_EVSEL__MAX_ALIASES] = {
{ "L1-dcache", "l1-d", "l1d", "L1-data", },
{ "L1-icache", "l1-i", "l1i", "L1-instruction", },
{ "LLC", "L2", },
{ "dTLB", "d-tlb", "Data-TLB", },
{ "iTLB", "i-tlb", "Instruction-TLB", },
{ "branch", "branches", "bpu", "btb", "bpc", },
{ "node", },
};
Run Code Online (Sandbox Code Playgroud)
LLC 是 L2-cache 的别名。我的问题是如何通过 Linux 中的 perf 工具捕获 L3 缓存命中和未命中。提前致谢!
我使用原始事件计数器取得了更大的成功,直接查看英特尔软件开发人员手册以获取详细定义。
来自部分:18.2.1.2 预定义的架构性能事件
r412e“LLC Misses”可能就是您想要的
perf stat -e r412e <command>
Run Code Online (Sandbox Code Playgroud)
(请注意,对我来说,这给出了与使用 -e 缓存未命中相同的数字。)
如果硬件具有 L3 缓存,那么奇怪的是 LLC(Last Level Cache)配置为“L2”。但我还不知道 perf 的内部结构,也许这些设置是通用的。
我认为您拥有的唯一解决方案是使用“原始硬件事件”(参见“性能列表”末尾,以“rNNN”开头的行)。这提供了对硬件寄存器的描述进行编码的机会。
perf 用户指南和教程只提到“要测量硬件供应商文档提供的实际 PMU,请传递十六进制参数代码”。我不知道 Intel 的语法是什么,以及该架构上的性能监视器是否有不同的实现。你可以从这里开始:
http://code.google.com/p/kernel/wiki/PerfUserGuide#Hardware_events