linux系统压力模拟工具stress
Posted sysu_lluozh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统压力模拟工具stress相关的知识,希望对你有一定的参考价值。
CentOS 7的EPEL源包含了2个压力测试工具,一个是标准的stress,另一个是其升级版stress-ng
stress可以在linux系统下生成CPU/Memory/IO/Disk负载,经常用于异常进程模拟平均负载升高的场景
一、安装
yum install -y epel-release.noarch && yum -y update
yum install -y stress stress-ng
二、stress
2.1 参数说明
直接运行stress就会列出关于stress的简单说明
- -?
显示帮助信息 - -v
显示版本号 - -q
不显示运行信息 - -n
--dry-run
显示已经完成的指令执行情况 - -t
--timeout N
指定运行N秒后停止
--backoff N
等待N微秒后开始运行 - -c
--cpu
产生n个进程 每个进程都反复不停的计算随机数的平方根 - -i
--io
产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上 - -m
--io forks
产生多个处理sync()函数的磁盘I/O进程
--vm n
产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数
--vm-bytes B
指定malloc时内存的字节数(默认256MB)
--vm-hang N
指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器 - -d
--hadd n
产生n个执行write和unlink函数的进程
--hadd-bytes B
指定写的字节数,默认是1GB
--hadd-noclean
不要将写入随机ASCII数据的文件unlink,则写入的文件不删除,会保留在硬盘空间
2.2 使用示例
2.2.1 对CPU进行压力测试
使用stress -c N
让stress生成N个工作进程进行开方运算,以此对CPU产生负载
比如若CPU有四个核,那么可以运行
stress -c 4
- 查看资源使用情况
- 查看stress进程信息
ps -elf |grep stress |grep -v grep
结果如下:
发现一共有5个stress进程,其中有4个进程是28308进程派生出来的工作进程,而且每个工作进程占用的CPU利用率都接近100%
2.2.2 对内存进行压力测试
使用stress -m N
让stress生成N个工作进程来占用内存,每个进程默认占用256M内存,但可以通过--vm-bytes
进行设置
stress -m 5 --vm-bytes 500M
执行以上命令生成5个进程,每个进程占用500M内存
- 查看资源使用情况
- 查看stress进程信息
ps -elf |grep stress |grep -v grep
结果如下:
显然生成5个进程,每个进程占用500M内存
但是通过dstat可以发现,其实总占用内存并未2.5G,而且虽然只是对内存进行压力测试,但实际上CPU也是很繁忙的,占有率60%
2.2.3 对磁盘进行压力测试
对磁盘压力测试有两个参数:
- stress -i N
产生N个进程,每个进程反复调用sync()将内存上的内容写到硬盘上. - stress -d N
产生N个进程,每个进程往当前目录中写入固定大小的临时文件,然后执行unlink
操作删除该临时文件
临时文件的大小默认为1G,但可以通过--hdd-bytes
设置临时文件的大小
stress -i 2 -d 4 --hdd-bytes 512M
- 执行操作
[root@localhost21 ~]# df -h .
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 38G 13G 76% /
[root@localhost21 ~]# stress -i 2 -d 4 --hdd-bytes 512M &
[1] 20101
[root@localhost21 ~]# stress: info: [20101] dispatching hogs: 0 cpu, 2 io, 0 vm, 4 hdd
[root@localhost21 ~]# df -h .
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 36G 11G 78% /
可以发现压力测试时,当前目录所在可用空间少了2G
2.2.4 同时对多项指标进行压力测试
stress支持同时对多个指标进行压力测试,只需要把上面的参数组合起来就行
stress -c 4 -m 2 -d 1
- 查看stress进程
ps -elf |grep stress |grep -v grep
结果如下:
可以发现工作进程一共有7个,也就是说每个进程只负责一项测试
2.2.5 设置超时时间
通过-t TIMEOUT
可以让stress只运行一段时间后自动退出,一般使用在写脚本的时候
stress -c 4 -m 2 -d 1 -t 10s
stress: info: [19302] dispatching hogs: 4 cpu, 0 io, 2 vm, 1 hdd
stress: info: [19302] successful run completed in 11s
运行上面的测试,10秒后自动退出
以上是关于linux系统压力模拟工具stress的主要内容,如果未能解决你的问题,请参考以下文章