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

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

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

最佳答案

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

  • 看看这个 intel documentation manual chapter 18 ,但它不是那么容易阅读。
  • 使用 cpuid instruction - 这将需要编写汇编代码以正确设置参数并获得结果。
  • 下载并编译/安装 papi library 并运行 papi_avail | more 。我的笔记本电脑上的结果是:

  • 关于linux - 找出一个 CPU 有多少个硬件性能计数器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21179813/

    10-11 23:20
    查看更多