在Linux

在Linux,第1张

在Linux

SMI当然可以在正常运行期间发生。我的家用台式机每隔一半有一个由芯片组驱动的SMI,它在芯片组中启用。我还看到有些服务器由于BIOS驱动的CPU频率缩放方案而每秒两次拥有它们。但是,某些系统可能会长时间运行而不会发生SMI,因此它确实取决于。

问题1:hwlatdetect是检测系统上发生的SMI延迟的一种方法。BIOSBITS是另一种选项,它是可引导CD,可以识别是否正在发生SMI。您还可以通过创建一个内核模块来编写自己的测试,该内核模块循环旋转并占用时间戳(使用RDTSC)。如果您看到两个时间戳读数之间有很长的间隔,则可以查询CPU
MSR 0x34,以查看SMI计数器是否增加,这表明发生了SMI。

如果要生成SMI,则可以使内核模块对端口0xb2执行OUT
CPU指令,例如,将值0写入该端口。(您也可以通过在写入端口0xB2之前和之后收集时间戳来为该SMI计时)。

问题2,SMI在 *** 作系统下的一层运行,因此您选择的 *** 作系统不会产生任何影响。

问题3:BIOSBITS建议将SMI延迟保持在150微秒以下。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4897913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存