找出CPU有多少硬件性能计数器

pjh*_*sea 6 linux x86-64 intel papi perf

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

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

如果我找到我的处理器型号,是否有英特尔/ AMD网站,我可以在哪里找到这些信息?是否有一个简单的命令可以在系统上运行以检查硬件计数器的数量?我检查了cat /proc/cpuinfo和的输出x86info -a,但是找不到这些信息.

Man*_*lva 10

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

  • 请参阅本英特尔文档手册第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 Max Megahertz:2494

CPU Min Megahertz:2494

每个核心的Hdw线程:2

每个插座的核心数:2

NUMA节点:1

每个节点的CPU:4

总CPU数:4

在VM中运行:没有

数字硬件计数器:11

Max Multiplex计数器:64