【发布时间】:2013-08-11 13:20:58
【问题描述】:
有什么方法可以通过 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", },
};
LLC 是 L2-cache 的别名。我的问题是如何通过 Linux 中的 perf 工具捕获 L3 缓存命中和未命中。提前致谢!
【问题讨论】:
-
你的 CPU 是多少?较新版本的 perf 和 linux 内核可能支持某些 CPU 上的 L3 缓存事件。您确定“LLC”是 L2 的别名而不是 L3 的别名(真正的含义可能在 perf 代码的内核部分中定义)?