我正在使用libpfm4来确定 Intel 性能监视器计数器编码(例如,在人类可读的名称和编码之间进行映射)。
英特尔 PMU 有许多可以启用或禁用的“固定计数器”,但启用时始终计数相同的事件。libpfc 公开了固定计数器的数量pfm_pmu_info_t.num_fixed_cntrs
,但是我如何确定这些固定计数器映射的事件呢?
固定计数器涵盖的事件列在事件列表中,但它是通用编码,因此您必须浪费通用计数器以这种方式对其进行编程。
对于Intel来说,最近0个芯片上一般都有3个固定计数器:
INST_RETIRED.ANY
CPU_CLK_UNHALTED.THREAD
CPU_CLK_UNHALTED.REF_TSC
详见第 18-2 卷的表 18-2。英特尔 SDM 1的图 3B 。
0特别是至少支持架构 PMU 版本 2 的任何东西,即Intel Core 2 Duo 处理器 T7700 和基于 Intel Core 微架构的更新处理器。
1表为表 18-2。固定功能性能计数器与架构性能事件的关联, 2016 年 12 月版。