简介

stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户。

安装Stress

  1. sudo yum install -y epel-release
  2. sudo yum install -y stress
  3. 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 显示详细的信息

常用命令

  1. # 查看负载
  2. watch -d uptime
  3. top
  4. # 查看CPU个数(逻辑)
  5. grep 'model name' /proc/cpuinfo | wc -l

测试案例

1. 消耗CPU

  1. # 持续60秒
  2. sudo stress --cpu 2 --timeout 60
  3. # 开启4个进程反复计算随机数的平方根
  4. sudo stress -c 4
  5. # 对索引为0的逻辑cpu施加压力, 持续30秒
  6. sudo taskset -c 0 stress --timeout 30 --cpu 1

2. 消耗内存

  1. # 产生两个子进程,每个进程分配300M内存
  2. sudo stress --vm 2 --vm-bytes 300M --vm-keep
  3. # 新增4个io进程,10个内存分配进程,每次分配大小1G,分配后不释放,测试100S
  4. sudo stress i 4 vm 10 vm-bytes 1G vm-hang 100 timeout 100s

3. 消耗IO

  1. # 产生4个进程,每个进程都反复调用sync()函数将内存上的内容写到硬盘上
  2. sudo stress -i 4

4. 消耗磁盘和IO

  1. # 创建一个进程不断的在磁盘上创建10M大小的文件并写入内容
  2. sudo stress -d 1 --hdd-bytes 10M
  3. # 新增1个IO进程,10个写进程,每次写入3G文件块,且不清除,会逐步将硬盘耗尽
  4. sudo stress i 1 d 10 --hdd-bytes 3G hdd-noclean
  5. # 查看CPU的状态(此时的CPU主要消耗在内核态)
  6. top

5. 综合案例

  1. # 产生3个CPU进程、3个IO进程、2个10M的vm进程,并且每个vm进程中不循环分配释放内存
  2. sudo stress --cpu 3 --io 3 --vm 2 --vm-bytes 10M --vm-keep

参考

博客园:Linux stress命令
https://www.cnblogs.com/sparkdev/p/10354947.html