在我对硬件性能计数器进行了多次阅读之后,我可以断言所有的英特尔处理器都支持硬件性能计数器。因此,为了访问这些额外的硬件寄存器,即硬件性能计数器,我使用了经常用于访问和配置这些计数器的PAPI基础设施。
当我使用papi_avail实用程序报告有关number hardware counters的信息时,意外的值被查看,即相对于图,number hardware counters : 0。会是这样吗?
关于我的处理器型号(英特尔酷睿i7),我认为这是不正确的值。
我真的很感谢你能提供的任何帮助。
发布于 2020-10-22 04:18:01
如果需要了解英特尔处理器支持多少个性能计数器,可以使用cpuid命令(参见man 1 cpuid)。
它非常冗长,因为它触发了x86 cpuid指令,该指令返回有关处理器的许多信息。其中,有关于性能监测单位(项目管理单元)的详细信息。默认情况下,该命令在所有核心上启动cpuid指令。但是,如果两个核心相同,则可以将显示限制为一个核心。例如,下面是我们如何列出第一个CPU上的信息:
$ cpuid -1
[...]
Architecture Performance Monitoring Features (0xa/eax):
version ID = 0x3 (3)
number of counters per logical processor = 0x4 (4)
bit width of counter = 0x30 (48)
length of EBX bit vector = 0x7 (7)
Architecture Performance Monitoring Features (0xa/ebx):
core cycle event not available = false
instruction retired event not available = false
reference cycles event not available = false
last-level cache ref event not available = false
last-level cache miss event not avail = false
branch inst retired event not available = false
branch mispred retired event not avail = false
Architecture Performance Monitoring Features (0xa/edx):
number of fixed counters = 0x3 (3)
bit width of fixed counters = 0x30 (48)
anythread deprecation = false
[...]
在上面的显示中,我们可以看到PMU版本为3:
version ID = 0x3 (3)
每个内核有4个可编程计数器:
number of counters per logical processor = 0x4 (4)
每个内核有3个固定计数器:
number of fixed counters = 0x3 (3)
计数器都是48位长:
bit width of counter = 0x30 (48)
bit width of fixed counters = 0x30 (48)
PMU的功能是特定于架构的。如果您需要有关英特尔PC/主板的更多详细信息,前面的命令显示的前几行提供CPU/体系结构标识。例如:
[...]
vendor_id = "GenuineIntel"
version information (1/eax):
processor type = primary processor (0)
family = 0x6 (6)
model = 0xa (10)
stepping id = 0x9 (9)
extended family = 0x0 (0)
extended model = 0x3 (3)
(family synth) = 0x6 (6)
(model synth) = 0x3a (58)
(simple synth) = Intel Core (unknown type) (Ivy Bridge E1/N0/L1/P0) {Sandy Bridge}, 22nm
[...]
有了这些信息,您可以参考Intel documentation。
发布于 2017-03-30 02:50:46
请看一下卷3B的第18章“性能监视”和19章“性能监视事件”部分(latest version here)。
发布于 2020-10-03 03:45:17
你需要做的就是尝试:
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
所有最新的Linux内核都配备了perf实用程序来访问硬件性能计数器。但是,对于安全问题,在默认情况下,我们无法访问这些计数器。存储在文件"perf_event_paranoid“中的默认值是3,这意味着我们不能访问计数器。通过将值修改为1(允许访问),我们可以获得有关可用性能计数器的信息,并可以使用perf或任何可用的工具访问它们。
https://stackoverflow.com/questions/43077715
复制相似问题