我正在使用 Linux 5.8.18 进行性能调整,然后我遇到了困惑。
X86 中的 PMU 资源有限,perf 是使用 PMU 完成 profiling/sampling 的工具。
IIRC,性能文档说 PMU 资源由不同的进程共享,因此 Linux 内核将在进程调度期间保留/快照 PMC。
为了验证 PMU 设置是否特定于进程,我进行了以下测试。
在后台运行以调用 perf API 以在 CPU0 上启用和使用 X86 FIXed_Counter0(指令已停用)(MSR 0x309)的进程。
然后在bash中,我rdmsr -p0 0x309,我发现当进程在后台运行时计数器正在增加。
我曾认为每个进程(A 和 Bash)都应该有自己的 PMC 快照(在本例中为 FIXed_Counter0),但测试表明 PMC 是全局可见的......
我真的很困惑。