7

在运行 Linux 的 Intel 或 AMD x86-64 系统上,我在哪里/如何找到我的 CPU 拥有的硬件性能计数器的数量?

我想perf在执行某些应用程序时使用 Linux 工具来收集硬件性能计数器数据。perf wiki 的教程说,如果我指定(使用-e标志perf statperf record)比我的 CPU 中的性能计数器更多的硬件事件,那么这些事件将在执行期间在计数器上多路复用,从而允许它们在一个单一的perf命令,但可能会降低准确性,因为并非所有计数器都一直处于活动状态。(请注意,我在这里关注硬件事件,例如缓存和 TLB 行为 - 我知道可以跟踪大量/无限数量的内核软件跟踪点而不会不准确)。

如果我找到我的处理器型号,是否有英特尔/AMD 网站可以找到此信息?我可以在系统上运行一个简单的命令来检查硬件计数器的数量吗?我检查了 and 的输出cat /proc/cpuinfox86info -a但找不到此信息。

4

1 回答 1

11

关于英特尔处理器,您可以:

  • 看看这个 intel文档手册第 18 章,但它不是那么容易阅读。

  • 使用cpuid指令- 这将需要编写汇编代码来正确设置参数并获得结果。

  • 下载并编译/安装papi 库并运行papi_avail | more. 我的笔记本电脑上的结果是:

PAPI 版本:5.1.1.0

供应商字符串和代码:GenuineIntel (1)

型号字符串和代码:Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz (42)

CPU 修订版:7.000000

CPUID 信息: 系列:6 型号:42 步进:7

CPU 最大兆赫兹:2494

CPU 最小兆赫兹:2494

每个核心的 HDW 线程数:2

每个插槽的核心数:2

NUMA 节点:1

每个节点的 CPU:4

CPU 总数:4

在虚拟机中运行:否

硬件计数器数量:11

最大复用计数器:64

于 2014-01-17T12:24:24.560 回答