环境说明
centos7操作系统
配置:4核10G
由于配置不同测试的效果也不同,建议执行进程数和cpu核数一致;其他参数根据服务器配置情况进行修改
功能说明
增加Linux系统CPU、内存、磁盘I/O资源占用,模拟高资源占用场景
安装/用法
$ yum install stress -y
$ stress --help
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement
--version 查看stress版本号
-v, --verbose 显示 stress 程序运行过程中的详细信息
-q, --quiet stress 程序运行的过程中不输出信息。
-n, --dry-run 输出程序会做什么而并不实际执行相关的操作
-t, --timeout N 在 N 秒后结束程序。
--backoff N 让新 fork 出来的进程 sleep N 微秒再开始运行。
-c, --cpu N 产生 N 个进程,每个进程都反复不停的调用sqrt()函数计算随机数的平方根
-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, --hdd N 产生 N 个不断执行 write 和 unlink 函数的进程(创建文件,写入内容,删除文件)
--hdd-bytes B 指定文件大小 (default is 1GB)
Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).
模拟cpu资源消耗
stress 消耗 CPU 资源的方式是通过调用 sqrt() 函数计算由 rand() 函数产生的随机数的平方根实现的。
$ stress -c 4 --timeout 60
-c:表示多少个进程执行
--timeout:表示执行多久秒退出
可以使用 top
命令查看cpu状态如下,cpu在用户态满负荷运行 (top命令下按 1 可以查看每个cpu单独的情况)
模拟内存资源消耗
模拟4个进程,每个进程分配1000M内存(进程一直占用内存)
stress --vm 4 --vm-bytes 2000M --vm-keep
cpu主要消耗在用户态
模拟4个进程,每个进程分配1000M内存(每个消耗内存的进程在分配到内存后转入睡眠状态 3 秒,然后释放内存,一直重复执行这个过程)
stress --vm 4 --vm-bytes 2000M --vm-hang 3
cpu消耗主要在内核态
模拟io资源消耗
产生 4 个进程,每个进程都反复调用 sync 函数将内存上的内容写到硬盘上:
$ stress -i 4
使用top命令输出cpu情况如下,sy(system:代表内核态 CPU 时间)使用率升高
说明:因为新启动的系统所以内存没有多少数据并没有造成 wa(iowait:代表等待 I/O 的 CPU 时间)时间升高
压测磁盘及 IO
创建4个进程不断的在磁盘上创建 100M 大小的文件并写入内容:
$ stress -d 4 --hdd-bytes 100M
参考:https://www.cnblogs.com/vaon/p/13696260.html