我有兴趣评估运行CentOS的Linux机器上SMI处理的行为(延迟,频率),并用于(非常)软实时应用程序.
推荐使用哪些工具(针对CentOS的hwlatdetect?),以及最佳解决方案是什么?
如果没有可用于CentOS的好工具,我是否正确假设在同一台机器上安装不同的操作系统应该产生相同的结果,因为底层硬件/ 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,可以创建一个内核模块,对OUT端口0xb2执行OUT CPU指令,例如将值0写入此端口.(您也可以通过在写入端口0xB2之前和之后收集时间戳来计时此SMI).
问题#2,SMI在操作系统以下的层运行,因此您选择的操作系统不会产生任何影响.
问题3:BIOSBITS建议将SMI延迟保持在150微秒以下.