经过一番研究,我发现由于所有 Amazon AWS 实例都是虚拟实例,因此任何来宾操作系统都无法直接访问硬件性能计数器(PMC 或 PMU)。
来宾操作系统只能通过称为虚拟 PMU (vPMU) 的内核驱动程序读取性能计数器,该驱动程序仅适用于某些 Intel Xeon CPU。
因此,在我尝试的实例列表中,只有配备 Intel Platinum 8252 的 m5zn 具有受支持的 CPU。
通过运行可以轻松检查来宾操作系统是否支持 vPMU
cat /proc/cpuinfo | grep arch_perfmon
也可以在 smpboot 之后立即检查 dmesg 输出:
[ 0.916264] smpboot: CPU0: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz (family: 0x6, model: 0x55, stepping: 0x4)
[ 0.916410] Performance Events: unsupported p6 CPU model 85 no PMU driver, software events only.
在 AWS 上,经验法则是您只能在最大的实例或占用整个套接字的实例上获得 vPMU。
https://oavdeev.github.io/posts/vpmu_support_z1d/
目前这些实例支持 vPMU:
i3.metal
c5.9xlarge
c5.18xlarge
m4.16xlarge
m5.12xlarge
m5.24xlarge
r5.12xlarge
r5.24xlarge
f1.16xlarge
h1.16xlarge
i3.16xlarge
p2.16xlarge
p3.16xlarge
r4.16xlarge
x1.32xlarge
c5d.9xlarge
c5d.18xlarge
m5d.12xlarge
m5d.24xlarge
r5d.12xlarge
r5d.24xlarge
x1e.32xlarge