stress-ng压测CPU内存

下面是一个在 8 核心 CPU + 16 GB 内存的 Linux 系统上,将 CPU 和内存同时打满的压测脚本方案,使用 stress-ng 工具来实现。


为什么选择 stress-ng

  • 它是一个功能全面、灵活、强大的系统压力测试工具;
  • 支持对 CPU、内存、I/O 等子系统施加压力;
  • 可指定占用全部核心,并控制内存使用量、执行时间等;
    ([LFCS认证备考电子书][1], [Ubuntu Wiki][2], [工具棚][3])

脚本示例:stress-test.sh

#!/bin/bash

# 压力测试脚本:CPU + 内存满载

DURATION="300s"  # 持续时间(300秒 = 5分钟)
CPU_CORES=0      # 0 表示自动检测并使用所有在线 CPU
VM_INSTANCES=8   # 启动内存压力进程个数
VM_BYTES="12G"   # 每个实例分配内存(总计约 96GB,系统会因超限导致页面交换)

echo "Starting stress-ng: CPU + memory stress for $DURATION"
echo "CPU cores: all ($CPU_CORES), VM instances: $VM_INSTANCES, VM bytes: $VM_BYTES"

sudo stress-ng \
  --cpu $CPU_CORES \
  --vm $VM_INSTANCES \
  --vm-bytes $VM_BYTES \
  --vm-hang 0 \
  --timeout $DURATION \
  --metrics-brief

脚本说明:

  • --cpu 0:对所有核心施加 CPU 压力;
  • --vm 8 + --vm-bytes 12G:启动 8 个虚拟内存压力进程,每个分配 12 GB;
    可根据实际内存进行调整,如 --vm-bytes 50% 表示使用一半内存([工具棚][3], [Reddit][4]);
  • --timeout:指定压力持续时长;
  • --metrics-brief:输出简要的执行信息;
  • --vm-hang 0:防止内存释放,持续稳定压力。

使用步骤

  1. 安装 stress-ng

    • CentOS / RHEL / Fedora

      sudo dnf install -y stress-ng
      
    • Debian / Ubuntu

      sudo apt update && sudo apt install -y stress-ng
      
  2. 保存脚本并赋予执行权限

    chmod +x stress-test.sh
    
  3. 执行脚本并观察效果

    ./stress-test.sh
    
  4. 监控系统负载,例如:

    top
    swag -n 1   # An interactive monitor like htop 或 atop 也可
    

显著特性与风险

  • 通过设置高于物理内存的 --vm-bytes,可以强制系统使用 swap,从而引发系统 OOM 压力;
  • 脚本中使用的参数是激进的,请谨慎应用于生产环境;
  • 如果要控制 CPU 占用百分比,可使用 --cpu-load P,但多数场景还是全满更具测试意义([工具棚][3], [Server Fault][5])。

posted @ 2025-09-10 16:32  broadviews  阅读(321)  评论(0)    收藏  举报