简介
stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户。
安装Stress
sudo yum install -y epel-release
sudo yum install -y stress
sudo stress --version
基本语法
语法格式:
stress
常用选项:
-c, —cpu N 产生N个进程,每个进程都反复不停的计算随机数的平方根
-i, —io N 产生N个进程,每个进程反复调用sync()将内存上的内容写到硬盘上
-m, —vm N 产生N个进程,每个进程不断分配和释放内存
—vm-bytes B 指定分配内存的大小
—vm-stride B 不断的给部分内存赋值,让COW(Copy On Write)发生
—vm-hang N 指示每个消耗内存的进程在分配到内存后转入睡眠状态N秒,然后释放内存,一直重复执行这个过程
—vm-keep 一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)
-d, —hadd N 产生N个不断执行write和unlink函数的进程(创建文件,写入内容,删除文件)
—hadd-bytes B 指定文件大小
-t, —timeout N 在N秒后结束程序
—backoff N 等待N微妙后开始运行
-q, —quiet 程序在运行的过程中不输出信息
-n, —dry-run 输出程序会做什么而并不实际执行相关的操作
—version 显示版本号
-v, —verbose 显示详细的信息
常用命令
# 查看负载
watch -d uptime
top
# 查看CPU个数(逻辑)
grep 'model name' /proc/cpuinfo | wc -l
测试案例
1. 消耗CPU
# 持续60秒
sudo stress --cpu 2 --timeout 60
# 开启4个进程反复计算随机数的平方根
sudo stress -c 4
# 对索引为0的逻辑cpu施加压力, 持续30秒
sudo taskset -c 0 stress --timeout 30 --cpu 1
2. 消耗内存
# 产生两个子进程,每个进程分配300M内存
sudo stress --vm 2 --vm-bytes 300M --vm-keep
# 新增4个io进程,10个内存分配进程,每次分配大小1G,分配后不释放,测试100S
sudo stress –i 4 –vm 10 –vm-bytes 1G –vm-hang 100 –timeout 100s
3. 消耗IO
# 产生4个进程,每个进程都反复调用sync()函数将内存上的内容写到硬盘上
sudo stress -i 4
4. 消耗磁盘和IO
# 创建一个进程不断的在磁盘上创建10M大小的文件并写入内容
sudo stress -d 1 --hdd-bytes 10M
# 新增1个IO进程,10个写进程,每次写入3G文件块,且不清除,会逐步将硬盘耗尽
sudo stress –i 1 –d 10 --hdd-bytes 3G –hdd-noclean
# 查看CPU的状态(此时的CPU主要消耗在内核态)
top
5. 综合案例
# 产生3个CPU进程、3个IO进程、2个10M的vm进程,并且每个vm进程中不循环分配释放内存
sudo stress --cpu 3 --io 3 --vm 2 --vm-bytes 10M --vm-keep
参考
博客园:Linux stress命令
https://www.cnblogs.com/sparkdev/p/10354947.html