Latency..
11
SMI在正常运行期间肯定会发生.我的家用台式机在芯片组中启用了芯片组驱动的SMI,每秒一半.由于BIOS驱动的CPU频率扩展方案,我也看到一些服务器每秒两次.但是,有些系统可能会长时间没有发生SMI,所以它真的取决于它.
问题#1:hwlatdetect是检测系统上发生的SMI延迟的一种选择.BIOSBITS是另一个选项,它是一个可引导的CD,可以识别SMI是否正在发生.您还可以通过创建在循环中旋转并采用时间戳(使用RDTSC)的内核模块来编写自己的测试.如果您看到两个时间戳读数之间存在较长的间隙,则可以查询CPU MSR 0x34以查看SMI计数器是否递增,这表示发生了SMI.
如果要生成SMI,可以创建一个内核模块,对OUT端口0xb2执行OUT CPU指令,例如将值0写入此端口.(您也可以通过在写入端口0xB2之前和之后收集时间戳来计时此SMI).
问题#2,SMI在操作系统以下的层运行,因此您选择的操作系统不会产生任何影响.
问题3:BIOSBITS建议将SMI延迟保持在150微秒以下.