系统压测工具--Stress

一、stress简介

stress是一款压力测试工具,可以用它来对系统CPU,内存,以及磁盘IO生成负载

二、安装

2.1、安装

yum install -y stress

2.2、参数详解

(py3) [root@jumpserver-168-182-149 ~]# stress -?
`stress' imposes certain types of compute stress on your system

Usage: stress [OPTION [ARG]] ...
 -?, --help         show this help statement
     --version      show version statement
 -v, --verbose      be verbose
 -q, --quiet        be quiet
 -n, --dry-run      show what would have been done
 -t, --timeout N    timeout after N seconds
     --backoff N    wait factor of N microseconds before work starts
 -c, --cpu N        spawn N workers spinning on sqrt()
 -i, --io N         spawn N workers spinning on sync()
 -m, --vm N         spawn N workers spinning on malloc()/free()
     --vm-bytes B   malloc B bytes per vm worker (default is 256MB)
     --vm-stride B  touch a byte every B bytes (default is 4096)
     --vm-hang N    sleep N secs before free (default none, 0 is inf)
     --vm-keep      redirty memory instead of freeing and reallocating
 -d, --hdd N        spawn N workers spinning on write()/unlink()
     --hdd-bytes B  write B bytes per hdd worker (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).


-? 显示帮助信息
-v 显示版本号
-q 不显示运行信息
-n,--dry-run 显示已经完成的指令执行情况
-t --timeout N 指定运行N秒后停止
  --backoff N 等待N微妙后开始运行
-c --cpu 产生n个进程 每个进程都反复不停的计算随机数的平方根
-i --io  产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
-m --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
    
【时间单位】可以为秒s,分m,小时h,天d,年y】;【文件大小单位】可以为K,M,G】

三、简单使用

3.1、对CPU进行压力测试

# 使用 stress -c N 会让stress生成N个工作进程进行开方运算,以此对CPU产生负载。

# 比如你的CPU有四个核,那么可以运行

stress -c 4
(py3) [root@jumpserver-168-182-149 ~]# ps -elf |grep stress |grep -v grep
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD   # 这行手动加上的
0 S root     106664  83958  0  80   0 -  1828 do_wai 21:55 pts/5    00:00:00 stress -c 4
1 R root     106665 106664 90  80   0 -  1828 -      21:55 pts/5    00:04:05 stress -c 4
1 R root     106666 106664 88  80   0 -  1828 -      21:55 pts/5    00:03:59 stress -c 4
1 R root     106667 106664 89  80   0 -  1828 -      21:55 pts/5    00:04:03 stress -c 4
1 R root     106668 106664 90  80   0 -  1828 -      21:55 pts/5    00:04:05 stress -c 4

F :代表这个程序的旗标 (flag), 4 代表使用者为 super user
S :代表这个程序的状态 (STAT),D=不可中断的睡眠状态、R=运行、S=睡眠、T=跟踪/停止、Z=僵尸进程;
UID: 程序被该 UID 所拥有
PID:process ID的缩写,也就进程号
PPID :process parent ID,父进程ID
C: CPU 使用的资源百分比
PRI :这个是 Priority (优先执行序) 的缩写
NI :这个是 Nice 值
ADDR: 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
SZ :使用掉的内存大小
WCHAN: 目前这个程序是否正在运作当中,若为 - 表示正在运作
TTY: 登入者的终端机位置
TIME: 使用掉的 CPU 时间。
CMD:所下达的指令名称

你会发现一共有5个stress进程,其中有4个进程是 17738 进程派生出来的工作进程。而且每个工作进程占用的CPU利用率都接近100%

3.2、对内存进行压力测试

# 类似的,使用 stress -m N 会让stress生成N个工作进程来占用内存。每个进程默认占用256M内存,但可以通过 --vm-bytes 来进行设置。

例如

stress -m 3 --vm-bytes 300M

# 会生成3个进程,每个进程占用300M内存

(py3) [root@jumpserver-168-182-149 ~]# ps -elf |grep stress |grep -v grep
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD   # 这行手动加上的
0 S root      33076  83958  0  80   0 -  1828 do_wai 22:13 pts/5    00:00:00 stress -m 3 --vm-bytes 300M
1 R root      33077  33076 99  80   0 - 78629 -      22:13 pts/5    00:00:21 stress -m 3 --vm-bytes 300M
1 R root      33078  33076 99  80   0 - 78629 -      22:13 pts/5    00:00:22 stress -m 3 --vm-bytes 300M
1 R root      33079  33076 99  80   0 - 78629 -      22:13 pts/5    00:00:21 stress -m 3 --vm-bytes 300M
而且你会发现,虽然只是对内存进行压力测试,但实际上CPU也是很繁忙的,占有率也接近100%
3.3、对磁盘进行压力测试

# 对磁盘压力测试有两个参数:

stress -i N 会产生N个进程,每个进程反复调用sync()将内存上的内容写到硬盘上.

stress -d N 会产生N个进程,每个进程往当前目录中写入固定大小的临时文件,然后执行unlink操作删除该临时文件。 临时文件的大小默认为1G,但可以通过 --hdd-bytes 设置临时文件的大小

例如

stress -i 2 -d 4 

你会发现压力测试时,当前目录所在可用空间少了4G

 3.4、设置超时时间

# 通过 -t TIMEOUT 可以让stress只运行一段时间后自动退出。

例如:

# 10s停止
stress -c 4 -m 2 -d 1 -t 10s
# 1分钟停止
stress -c 4 -m 2 -d 1 -t 10s

 

 

posted @ 2021-06-06 10:37  大数据老司机  阅读(913)  评论(0编辑  收藏  举报