Stress-NG 介绍、编译与使用指南

Stress-NG 是一款功能强大的跨平台系统压力测试工具,专为 Linux 系统设计(支持部分 Unix-like 系统如 macOS),是传统 stress 工具的增强版。它提供了数百种压力测试场景,可对 CPU、内存、磁盘、网络、I/O、缓存等几乎所有系统子系统进行细粒度压力测试,常用于系统稳定性验证、硬件极限测试、资源瓶颈排查、性能基线建立等场景。

一、核心特点

  1. 全面的压力类型:支持 200+ 压力测试模块(如 CPU 浮点运算、内存分配 / 泄漏、磁盘随机读写、网络套接字压力等);
  2. 细粒度控制:可精确调整压力强度(如 CPU 负载百分比)、并发数、测试时长、资源限制等;
  3. 丰富的统计输出:支持输出测试过程中的资源使用率、延迟、错误数等指标,便于分析;
  4. 轻量跨平台:源码体积小,编译无复杂依赖,支持 Linux(主流发行版)、macOS、BSD;
  5. 稳定性优先:支持设置 “健康检查”(如内存溢出保护),避免测试导致系统崩溃。

二、编译安装

创建stress-ng目录

 mkdir stress-ng

下载和拷贝安装包到stress-ng

下载地址:

                https://fossies.org/linux/privat/stress-ng-0.14.01.tar.gz

 或者,

git clone https://github.com/ColinIanKing/stress-ng.git

(github访问速度受限)

解压源文件安装包

在stress-ng目录下解压安装包:

tar -xvf stress-ng-0.19.06.tar.gz
ls
stress-ng-0.19.06  stress-ng-0.19.06.tar.gz


交叉编译

Stress-ng 的 Makefile 支持通过环境变量指定交叉工具链,无需修改源码,直接执行 make

(如未安装make则执行:apt-get install -y make

如需适配目标板传递核心参数,可执行如下(可选):

# 基础编译(禁用非必要依赖,适配目标板)
make \
  CC=$CC \          # 交叉 C 编译器(从环境变量继承)
  AR=$AR \          # 交叉归档工具
  RANLIB=$RANLIB \  # 交叉库索引工具
  CFLAGS="-O2" \    # 优化等级(可选,加速运行)
  DISABLE_LIBAIO=1 \# 禁用 libaio 依赖(目标板缺库时推荐,需启用则改为 0)
  DISABLE_ZLIB=1 \  # 禁用 zlib 依赖(可选,压缩相关测试不需要则禁用)
  -j$(nproc)        # 多线程编译(加速)

编译结果

生成stress-ng文件,cortex-a78c 对应的 aarch64 架构

file stress-ng
stress-ng: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=1e9eeedc830cbc4fe91b6058fe2cab4c2f289179, for GNU/Linux 3.14.0, with debug_info, not stripped

上板测试

执行:

stress-ng --cpu 8 --cpu-load 70 
/tmp # stress-ng: info:  [418577] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [418577] dispatching hogs: 8 cpu

结果

Tips

不需要手动修改 Stress-ng 的 Makefile 文件!你之前通过 source 交叉环境配置的 CC/AR/RANLIB 环境变量,会被 Make 工具自动读取并覆盖 Makefile 中的默认编译器配置 —— 这是 GNU Make 的标准行为,也是交叉编译的常规做法,比直接修改 Makefile 更灵活、更通用。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐