第 3 章 运行并解释硬件和固件延迟测试

您可以通过在 RHEL Real Time 内核中运行 hwlatdetect 程序,测试并验证潜在的硬件平台是否适合实时操作。

先决条件

  • 确保已安装 RHEL-RT (用于 Real Time)和 rt-tests 软件包。
  • 检查供应商文档,了解低延迟操作所需的调整步骤。

    供应商文档提供了减少或删除将系统转换为系统管理模式(SMM)的任何系统管理中断(SMI)的说明。当系统位于 SMM 中时,它会运行固件而不是操作系统代码。这意味着,在 SMM 中过期的任何计时器等待系统转换到正常操作。这可能导致无法解释的延迟,因为 Linux 无法阻止 SMIs,我们实际占用 SMI 的唯一指示可在供应商相关的性能计数器寄存器中找到。

    警告

    红帽强烈建议您不要完全禁用 SMI,因为它可能会导致出现灾难性硬件故障。

3.1. 运行硬件和固件延迟测试

您不需要在运行 hwlatdetect 程序时在系统中运行任何负载,因为测试会查找硬件架构或 BIOS/EFI 固件带来的延迟。hwlatdetect 的默认值每秒轮询 0.5 秒,并在连续调用之间报告大于 10微秒的值来获取时间。hwlatdetect 返回系统中可能 的最佳 最大延迟。

因此,如果您有一个应用程序需要最大延迟值小于 10us,hwlatdetect 将报告其中一个差距为 20us,则系统只能保证延迟 20us。

注意

如果 hwlatdetect 显示系统无法满足应用程序的延迟要求,请尝试更改 BIOS 设置或与系统厂商合作来获取满足应用程序延迟要求的新固件。

先决条件

  • 确保已安装 RHEL-RTrt-tests 软件包。

流程

  • 运行 hwlatdetect,指定测试持续时间(以秒为单位)。

    hwlat 通过轮询 clock-source 来查找硬件和固件导致的延迟,并寻找无法解释的差距。

    # hwlatdetect --duration=60s
    hwlatdetect:  test duration 60 seconds
    	detector: tracer
    	parameters:
    		Latency threshold:    10us
    		Sample window:        1000000us
    		Sample width:         500000us
    		Non-sampling period:  500000us
    		Output File:          None
    
    Starting test
    test finished
    Max Latency: Below threshold
    Samples recorded: 0
    Samples exceeding threshold: 0

其他资源