第 40 章 使用压力测试实时系统

stress-ng 工具可衡量系统的能力,以便保持在不可或缺的状况下保持有效效率。stress-ng 工具是一个压力性工作负载生成器,用于加载并压力所有内核接口。它包括广泛的压力机制,称为 stressors。压力测试使机器用硬和出差硬件问题,如在系统过度运行和操作系统错误等。

270 不同的测试会超过 270。这包括用于练习浮动点、整数、位操作、控制流和虚拟内存测试的 CPU 特定的测试。

注意

使用 stress-ng 工具时要谨慎,因为某些测试可能会影响系统的rmal 区三点。这可能会影响系统性能,并导致过度的系统崩溃,这可能会难以停止。

40.1. 测试 CPU 浮动点单元和处理器数据缓存

floating-point 单元是处理器的功能部分,用于执行浮动点操作。浮点数单元处理数学操作,并将浮动数字或十进制计算更容易。

使用 --matrix-method 选项,您可以压力测试 CPU 浮动点操作和处理器数据缓存。

先决条件

  • 系统的 root 权限

流程

  • 要测试一个 CPU 上的浮动点 60 秒,请使用 --matrix 选项:

    # stress-ng --matrix 1 -t 1m
  • 要对多个 CPU 运行多个 stressors,请使用 --times-t 选项:

    # stress-ng --matrix 0 -t 1m
    
    stress-ng --matrix 0 -t 1m --times
    stress-ng: info:  [16783] dispatching hogs: 4 matrix
    stress-ng: info:  [16783] successful run completed in 60.00s (1 min, 0.00 secs)
    stress-ng: info:  [16783] for a 60.00s run time:
    stress-ng: info:  [16783] 240.00s available CPU time
    stress-ng: info:  [16783] 205.21s user time   ( 85.50%)
    stress-ng: info:  [16783] 0.32s system time (  0.13%)
    stress-ng: info:  [16783] 205.53s total time  ( 85.64%)
    stress-ng: info:  [16783] load average: 3.20 1.25 1.40

    带有 0 stressors 的特殊模式,查询要运行的可用 CPU 数量,从而无需指定 CPU 号。

    需要的总 CPU 时间为 4 x 60 秒(240 秒),其中 0.13% 在内核中是 85.50%,所有 CPU 的 stress-ng 运行 85.64%。

  • 要使用 POSIX 消息队列测试在进程间传递的消息,请使用 -mq 选项:

    # stress-ng --mq 0 -t 30s --times --perf

    mq 选项配置特定的进程,以使用 POSIX 消息队列强制上下文切换。此压力测试旨在降低数据缓存未命中。