stress-ng

stress-ng 是 Linux 下功能强大的 压力测试工具,相比 stress,它支持更丰富的测试模式(CPU、内存、I/O、缓存、内核等),并提供了更精细的控制选项。

  1. 安装 stress-ng
    Debian/Ubuntu

    sudo apt update && sudo apt install stress-ng
    RHEL/CentOS

    sudo yum install stress-ng # EPEL 仓库需先启用
    Arch Linux

    sudo pacman -S stress-ng
    macOS (Homebrew)

    brew install stress-ng

  2. 基本语法
    stress-ng [OPTIONS] [–metrics-brief] [–timeout T]
    –metrics-brief:测试结束后显示简要统计信息。

–timeout T:运行 T 秒后自动停止(支持 10s、5m 等格式)。

  1. 常用压力测试场景
    (1) CPU 压力测试
    所有 CPU 核心满载

    stress-ng –cpu $(nproc) –timeout 60s
    指定 CPU 核心数

    stress-ng –cpu 4 –timeout 30s # 使用 4 个核心
    指定 CPU 负载百分比

    stress-ng –cpu 2 –cpu-load 50 # 每个核心 50% 负载
    特定 CPU 算法测试

    stress-ng –cpu 4 –cpu-method matrixprod # 矩阵乘法测试
    支持的 –cpu-method 方法:

    all | bitops | callfunc | crypto | hamming | matrixprod | …
    (2) 内存压力测试
    占用 2GB 内存

    stress-ng –vm 2 –vm-bytes 2G –timeout 60s
    内存读写混合测试

    stress-ng –vm 4 –vm-bytes 1G –vm-method rowhammer
    支持的 –vm-method 方法:

    all | flip | rowhammer | prime-0 | prime-1 | …
    (3) 磁盘 I/O 压力测试
    写入临时文件

    stress-ng –io 4 –hdd 1 –hdd-bytes 1G # 4个IO进程 + 1个磁盘写入
    文件系统压力测试

    stress-ng –temp-path /mnt/test –hdd 2 –hdd-bytes 500M
    (4) 缓存/分支预测测试

    stress-ng –cache 2 –cache-level 1 # L1 缓存测试
    –cache-level:支持 1(L1)、2(L2)、3(L3)。

(5) 综合压力测试

stress-ng --cpu 4 --io 2 --vm 2 --vm-bytes 1G --hdd 1 --timeout 5m

–cpu 4:4 个 CPU 核心满载。

–io 2:2 个 I/O 进程。

–vm 2 –vm-bytes 1G:2 个进程占用 1GB 内存。

–hdd 1:1 个磁盘写入进程。

  1. 高级功能
    (1) 显示详细统计
    stress-ng –cpu 2 –io 1 –metrics-brief –timeout 10s
    输出示例:

    metrics: 10s: CPU: 98% user, 2% kernel, 0% idle
    (2) 绑定到特定 CPU 核心

    stress-ng –cpu 2 –taskset 0,1 # 仅使用 CPU0 和 CPU1
    (3) 限制测试进程优先级

    stress-ng –cpu 4 –ionice-class idle # 最低 I/O 优先级
    (4) 模拟 OOM(内存耗尽)

    stress-ng –vm 8 –vm-bytes 90% –oomable # 占用 90% 内存
    (5) 测试指定时间并生成报告

    stress-ng –cpu 4 –timeout 60s –metrics –log-file report.txt

  2. 支持的完整测试类型
    查看所有支持的测试模式:

stress-ng --class overview  # 显示所有测试类别

或列出具体方法:

stress-ng --cpu-method list  # 所有 CPU 测试方法
stress-ng --vm-method list   # 所有内存测试方法
  1. 停止测试
    手动终止:

    pkill stress-ng # 或 kill -9
    自动停止:通过 –timeout 设置运行时间。

  2. 典型用例
    场景 命令
    CPU 满载测试 stress-ng –cpu $(nproc) –timeout 5m
    内存带宽测试 stress-ng –vm 4 –vm-bytes 2G –vm-method all
    磁盘 I/O 压测 stress-ng –io 8 –hdd 2 –hdd-bytes 500M
    L1 缓存测试 stress-ng –cache 2 –cache-level 1
    综合负载测试 stress-ng –cpu 4 –io 2 –vm 1 –vm-bytes 1G –timeout 10m

  3. 注意事项
    谨慎使用:避免在生产环境长时间运行,可能导致系统崩溃。

监控工具:建议配合 top、htop、vmstat 监控系统状态。

硬件保护:高温或高负载可能损坏硬件,确保散热良好。

总结
stress-ng 是比 stress 更强大的压力测试工具,适合:

系统稳定性测试

硬件性能基准测试

内核/驱动问题复现

模拟极端负载场景

多进程并发测试方法
(1) 多进程 CPU 并发测试
让所有 CPU 核心满载(每个核心启动一个进程):

stress –cpu $(nproc) –timeout 60s
$(nproc):自动获取 CPU 核心数。

–timeout 60s:运行 60 秒后自动停止。

手动指定进程数(如 8 个进程):

stress --cpu 8 --timeout 30s

(2) 多进程内存并发测试
启动 4 个进程,每个占用 1GB 内存:

stress --vm 4 --vm-bytes 1G --timeout 60s

–vm 4:4 个内存压力进程。

–vm-bytes 1G:每个进程分配 1GB 内存。

(3) 多进程 I/O 并发测试
启动 2 个 I/O 密集型进程:

stress --io 2 --timeout 30s

(4) 多进程磁盘写入测试
启动 3 个进程,每个写入 500MB 文件:

stress –hdd 3 –hdd-bytes 500M –timeout 60s

  1. 综合多资源类型并发测试
    同时测试 CPU、内存、I/O 和磁盘,模拟复杂负载:

    stress –cpu 4 –io 2 –vm 2 –vm-bytes 1G –hdd 1 –hdd-bytes 2G –timeout 5m
    参数解析:

–cpu 4:4 个 CPU 压力进程。

–io 2:2 个 I/O 压力进程。

–vm 2 –vm-bytes 1G:2 个内存进程,每个占用 1GB。

–hdd 1 –hdd-bytes 2G:1 个磁盘写入进程,写入 2GB 文件。

–timeout 5m:运行 5 分钟后自动停止。

  1. 监控多进程并发效果
    使用工具实时观察系统资源占用:

(1) 查看 CPU 和内存使用
top # 按 P 按 CPU 排序,按 M 按内存排序
(2) 查看 I/O 负载
iotop # 需要 root 权限
(3) 查看磁盘 I/O
iostat -x 1 # 每秒刷新磁盘 I/O 统计

  1. 停止压力测试
    (1) 手动停止所有进程
    pkill stress # 终止所有 stress 进程
    (2) 停止指定资源类型的进程
    pkill -f “stress –cpu” # 终止所有 CPU 压力进程

  2. 高级用法:多进程绑定到指定 CPU 核心
    使用 taskset 将压力进程绑定到特定 CPU 核心(需安装 util-linux):

    stress –cpu 2 –timeout 60s & # 进程 1,默认随机分配核心
    taskset -c 0,1 stress –cpu 2 –timeout 60s & # 进程 2,绑定到 CPU0 和 CPU1

  3. 多进程测试场景示例
    场景 命令
    模拟高并发 Web 服务器 stress –cpu 8 –io 4 –vm 4 –vm-bytes 512M –timeout 10m
    数据库负载测试 stress –cpu 4 –hdd 2 –hdd-bytes 1G –io 2 –timeout 30m
    内存泄漏模拟 stress –vm 8 –vm-bytes 2G –vm-keep –timeout 0(手动终止)

  4. 注意事项
    谨慎使用:避免在生产环境无限制运行,可能导致系统崩溃。

散热检查:高负载下确保硬件散热良好。

结果分析:结合 dmesg、sar 等工具分析系统日志和性能数据。

https://blog.csdn.net/songpeiying/article/details/146605371

文档更新时间: 2025-04-29 02:46   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室