三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

服务器CPU常用测试工具(Linux)

服务器CPU常用测试工具(Linux)

一 ,CPU
工具:stress和stress-ng
stress 和 stress-ng 是 Linux 系统下两款经典的压力测试工具。它们的主要用途是给系统施加可配置的 CPU、内存、I/O 或磁盘负载,用于评估系统在极端条件下的稳定性和表现,帮助发现那些只在重负载下才会暴露的 bug。

简单来说,stress 是功能较基础的原版工具,而 stress-ng 是它的升级版,功能更强、测试场景更丰富
安装方法
在大多数 Linux 发行版中,可以通过包管理器轻松安装:

Ubuntu/Debian:

sudoaptupdatesudoaptinstallstress# 安装原版 stresssudoaptinstallstress-ng# 安装增强版 stress-ng

CentOS/RHEL:

sudoyuminstallepel-release-ysudoyuminstallstress stress-ng-y

stress 用法详解(基础版)
stress 是一款轻量级工具,通过创建多个进程来消耗特定资源。其基本命令格式为 stress [选项]。

核心参数
参数 说明 示例

-c,--cpu<N>启动 N 个 worker 进程,执行计算密集型操作(求随机数平方根)。 stress-c4-i,--io<N>启动 N 个 worker 进程,执行同步 I/O 操作(调用 sync())。 stress-i2-m,--vm<N>启动 N 个 worker 进程,进行内存分配和释放(malloc()/free())。 stress-m2--vm-bytes<B>每个 vm worker 分配的内存大小,默认 256MB。 stress-m1--vm-bytes 1G -d,--hdd<N>启动 N 个 worker 进程,进行磁盘写入(write()/unlink())。 stress-d1--hdd-bytes<B>每个 hdd worker 写入的数据量,默认 1GB。 stress-d1--hdd-bytes 3G -t,--timeout<N>设置测试运行时长,超过后自动退出。 stress-c4-t60s -v,--verbose输出更详细的信息。 stress-c4-v

数字后缀:时间参数可以用 s (秒), m (分), h (时), d (天);大小参数可以用 B (字节), K (KB), M (MB), G (GB)。

命令示例

# 1. 让4个CPU核心满载,持续60秒stress-c4-t60s# 2. 模拟内存压力:启动2个进程,每个分配256MB内存,持续30秒stress-m2--vm-bytes 256M-t30s# 3. 综合压力测试:2个CPU进程 + 1个I/O进程 + 1个内存进程(1GB)stress-c2-i1-m1--vm-bytes 1G-t60s

stress-ng 用法详解(增强版)
stress-ng 是 stress 的升级版本,完全兼容 stress 的参数,但提供了数百种更精细的压力测试选项,可以说是系统压力测试的“瑞士军刀”。

核心优势
更丰富的测试维度:除了 CPU、内存、I/O,还能测试网络、文件系统、进程调度、安全特性(如 AppArmor)等。

更精细的控制:可以指定 CPU 占用百分比 (–cpu-load),让 CPU 在特定负载下运行,而非总是100%。

针对性的压力算法:支持圆周率计算、矩阵运算、加密哈希等多种具体算法,能更精确地模拟特定场景。

常用参数

参数 说明 示例--cpu<N>启动 N 个 CPU 压力 worker。 stress-ng--cpu4--cpu-load<P>配合--cpu使用,设定每个 CPU 核的目标负载百分比(0-100)。 stress-ng--cpu2--cpu-load70--vm<N>启动 N 个内存压力 worker。 stress-ng--vm2--vm-bytes<B>所有 vm worker 占用的总内存大小。 stress-ng--vm1--vm-bytes 2G --vm-keep 让 vm worker 一直占用内存,不再重复分配/释放。 stress-ng--vm2--vm-bytes 1G --vm-keep--io<N>启动 N 个 I/O 压力 worker,可配合 --io-pattern 指定读写模式。 stress-ng--io4--io-pattern randrw--timeout<T>设置测试时长,如 60s、10m。 stress-ng--cpu4--timeout10m

命令示例

# 1. 精准控制CPU负载:让2个CPU核以70%的负载运行,持续30秒stress-ng--cpu2--cpu-load70-t30s# 2. 稳定内存占用:启动1个进程,一直占用2GB内存stress-ng--vm1--vm-bytes 2G --vm-keep# 3. 混合测试:4个CPU压力 + 1个内存压力(1GB,持续占用) + 2个I/O压力,运行1分钟stress-ng--cpu4--vm1--vm-bytes 1G --vm-keep--io2-t1m

主要区别与选择建议
特性 stress stress-ng
功能丰富度 基础(CPU, 内存, I/O, 磁盘) 极其丰富 (上百种测试场景)
CPU负载控制 只能实现100%满载 可精确控制 负载百分比 (–cpu-load)
测试场景 通用压力模拟 精细化模拟 (浮点运算、网络、文件系统等)
适用场景 快速、基础的负载测试 深入、全面的系统稳定性与性能评估
一句话总结:如果你需要的是一个简单、快速的负载生成器,stress 就足够了;如果你需要进行深入、全面、可定制的系统压力测试,stress-ng 是更强大的选择。

⚠️ 注意事项
非基准测试工具:官方文档明确指出,stress 和 stress-ng 不是精确的基准测试(Benchmark)工具,它们主要用于给系统制造负载以测试稳定性。

谨慎使用:这些工具会给系统带来极高的负载,可能导致系统响应变慢、服务不可用甚至崩溃。切勿在生产环境或关键业务系统上随意运行,建议在隔离的测试环境中使用。

监控与配合:进行压力测试时,最好配合 top、htop、vmstat、iostat 等系统监控工具,实时观察系统资源使用情况。

← 返回列表