我对评估运行CentOS并用于(非常)软实时应用程序的Linux机器上SMI处理的行为(延迟,频率)感兴趣。
推荐使用哪些工具(用于CentOS的hwlatdetect?),什么是最好的解决方案?
如果没有适用于CentOS的好的工具,我是否正确地假设在同一台机器上安装不同的OS应该会产生相同的结果,因为底层的硬件/ BIOS是相同的?
是否有关于这些参数的详细数字来源。
这些机器是X86_64体系结构,运行CentOS 6.4(内核2.6.32-358.23.2.el2.centos.plus.x86_64。)
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微秒以下。