在最新的 Intel CPU 上,可以通过读取 msr 0x34 来计算已发生的 SMI 数量。
我已经检查了手册 - https://developer.amd.com/resources/developer-guides-manuals/
对于等效的寄存器/函数,没有成功。
最佳答案
AMD Zen 指定 LsSmiRx 性能计数器 System Management Interrupts (SMIs) :
PMCx02B [SMIs Received] (Core::X86::Pmc::Core::LsSmiRx) Counts the number of SMIs received.
在Linux上,你可以这样监控它:
# perf stat -e ls_smi_rx -I 60000
此命令每分钟打印所有 CPU 上聚合的所有新触发的 SMI 的计数。
这意味着对于监视 - 与 Intel CPU 上可用的 MSR_SMI_COUNT
寄存器不同 - 您必须主动对 PMU 寄存器进行编程(以观察 LsSmiRx 事件)。
注意:上述引用的 AMD 文档确认 AMD Zen 不支持 SMI_COUNT MSR (0x34),因为它未包含在可用 MSR 列表中(第 2.1.10 章,第 77 页)。
关于x86-64 - AMD 架构上是否有与 Intel 的 MSR_SMI_COUNT 等效的寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51055831/