我对在运行CentOS的Linux计算机上评估SMI处理的行为(延迟,频率)感兴趣,该计算机用于(非常)软实时应用程序。
由于基础硬件/BIOS相同,同一台计算机上的不同OS应该产生相同的结果吗?
这些机器是X86_64架构,运行CentOS 6.4(内核2.6.32-358.23.2.el2.centos.plus.x86_64。)
最佳答案
SMI当然可以在正常运行期间发生。我的家用台式机每隔一半有一个由芯片组驱动的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微秒以下。
关于linux - 在Linux-CentOS/Intel机器上评估SMI(系统管理中断)延迟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25399405/