2

我正在尝试使用 Shark 来检查 L2 缓存未命中,但它不起作用。所有其他 Shark 采样模式都可以正常工作。

4

2 回答 2

0

并非所有 CPU 都支持 L2 缓存未命中分析(这取决于 CPU 具有哪些性能寄存器)。

另请注意,每 N 次缓存未命中您只会获得一个样本,因此如果您的代码没有做太多事情(即不访问未缓存的内存),那么您可能看不到任何样本。

于 2010-02-10T09:45:39.243 回答
0

...有点晚了,但出于某种原因,Shark 可能没有检测到您正在使用哪个 CPU,并假设您没有适当的硬件性能计数器。

  1. 配置->编辑
  2. 将视图下拉菜单从简单翻转到高级
  3. 将 CPU 下拉列表从“当前(未知)”翻转到您的 CPU
  4. 启用感兴趣的性能计数器。例如, L2_line_in 。

查看英特尔架构手册(我认为是#3),了解 perf 计数器的作用——不幸的是,通常没有直接的 L1/L2/LLC 未命中计数器,因此您需要其他计数器的某种组合或使用另一个计数器作为估计.

于 2010-06-20T01:56:21.950 回答