在运行Linux的Intel或AMD x86-64系统上,我在哪里/如何找出我的CPU所拥有的硬件性能计数器的数量?
我想使用Linux perf
工具在执行某些应用程序时收集硬件性能计数器数据。 perf wiki的tutorial表示如果我指定(使用-e
标志到perf stat
或perf record
)比我的CPU中的性能计数器更多的硬件事件,那么这些事件将在执行期间在计数器上多路复用,允许在单个perf
命令期间跟踪它们,但可能会降低准确性,因为并非所有计数器始终处于活动状态。 (请注意,我关注这里的硬件事件,例如缓存和TLB行为 - 我知道可以跟踪大量/无限数量的内核软件跟踪点而不会出现不准确的情况。)
如果我找到我的处理器型号,是否有可以找到此信息的Intel / AMD网站?是否有一个简单的命令可以在系统上运行以检查硬件计数器的数量?我检查了cat /proc/cpuinfo
和x86info -a
的输出,但找不到此信息。
答案 0 :(得分:10)
关于英特尔处理器,您可以:
查看此英特尔documentation manual chapter 18,但这并不容易阅读。
使用cpuid
instruction - 这需要编写汇编代码以正确设置参数并获得结果。
下载并编译/安装papi library并运行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 Max Megahertz:2494
CPU Min Megahertz:2494
每个核心的Hdw线程:2
每个插座的核心数:2
NUMA节点:1
每个节点的CPU:4
总CPU数:4
在VM中运行:否
数字硬件计数器:11
Max Multiplex Counters:64