一、命令介绍

stress是一个linux系统压力测试工具,顾名思义主要用来进行压力测试。

选项 含义
-t, –timeout 指定运行多少秒停止
–backoff 指定等待N微妙后开始运行
-c, –cpu 指定产生N个处理sqrt()函数的CPU进程,也就是每个进程不停计算随机数的平方根
-i, –io 指定产生N个处理sync()函数的磁盘I/O进程,sync()用于将内存上的内容写到硬盘上
-m, –vm 指定产生n个进程,每个进程不断调用内存分配malloc函数和内存释放free函数
–vm-bytes 指定调用malloc函数时分配内存的字节数 (默认256MB)
–vm-stride 应该是给内存赋值,touch a byte every B bytes (default is 4096)
–vm-hang 指定malloc函数分配的内存转入睡眠状态 N 秒,然后free()释放掉,一直重复执行这个过程
–vm-keep 冗余内存,而不是释放和重新分配
-d, –hdd 指定产生N个不断执行 write 和 unlink 函数的进程(创建文件,写入内容,删除文件)
–hdd-bytes 指定写入文件大小,默认为1GB

二、实例演示

(1)使用-c选项进行cpu压力测试

[root@server ~]# stress -c 1 -t 100
stress: info: [19891] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

使用mpstat和pidstat命令可以看到此时cpu使用率为100%,97.03%为被stress进程所占用。

[root@server ~]# mpstat -P ALL 1 1
Linux 3.10.0-514.26.2.el7.x86_64 (server)       12/29/2019      _x86_64_        (1 CPU)

01:42:33 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01:42:34 PM  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
01:42:34 PM    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
Average:       0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
[root@server ~]# pidstat 1 1  
Linux 3.10.0-514.26.2.el7.x86_64 (server)       12/29/2019      _x86_64_        (1 CPU)

01:42:43 PM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
01:42:44 PM     0     18768    0.00    0.99    0.00    6.93    0.99     0  AliYunDun
01:42:44 PM     0     19925   97.03    0.00    0.00    2.97   97.03     0  stress
01:42:44 PM     0     19931    0.00    0.99    0.00    1.98    0.99     0  pidstat

Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
Average:        0     18768    0.00    0.99    0.00    6.93    0.99     -  AliYunDun
Average:        0     19925   97.03    0.00    0.00    2.97   97.03     -  stress
Average:        0     19931    0.00    0.99    0.00    1.98    0.99     -  pidstat

(2)使用-i选项进行IO压力测试

  注意sync()是将内存缓冲区中的数据立即写入磁盘中,对于新建的虚拟机缓冲区内本来就没多少数据,那写到磁盘中的数据也就不多,也就没法产生 I/O 压力。这样大部分就都是系统调用的消耗了,可以看到%iowait只有16%,而%system却有81%(%system:表示内核进程所使用cpu的百分比;%iowait表示等待IO所使用cpu的百分比)

[root@server ~]# stress -i 1 -t 100
stress: info: [20174] dispatching hogs: 0 cpu, 1 io, 0 vm, 0 hdd

[root@server ~]# mpstat -P ALL 2 1
Linux 3.10.0-514.26.2.el7.x86_64 (server)       12/30/2019      _x86_64_        (1 CPU)

03:24:31 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:24:33 PM  all    1.52    0.00   81.82   16.67    0.00    0.00    0.00    0.00    0.00    0.00
03:24:33 PM    0    1.52    0.00   81.82   16.67    0.00    0.00    0.00    0.00    0.00    0.00

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    1.52    0.00   81.82   16.67    0.00    0.00    0.00    0.00    0.00    0.00
Average:       0    1.52    0.00   81.82   16.67    0.00    0.00    0.00    0.00    0.00    0.00
[root@server ~]# pidstat  -p 3210 2 1
Linux 3.10.0-514.26.2.el7.x86_64 (server)       12/30/2019      _x86_64_        (1 CPU)

03:27:43 PM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
03:27:45 PM     0      3210    0.00   72.40    0.00    6.77   72.40     0  stress
Average:        0      3210    0.00   72.40    0.00    6.77   72.40     -  stress

对于这种情况我们要去测IO,可以使用-d选项,可以看到%iowait直接飙升到了86.91%。

[root@server ~]# stress -d 1
stress: info: [3273] dispatching hogs: 0 cpu, 0 io, 0 vm, 1 hdd

[root@server ~]# mpstat -P ALL 2 1
Linux 3.10.0-514.26.2.el7.x86_64 (server)       12/30/2019      _x86_64_        (1 CPU)

03:33:06 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:33:08 PM  all    2.09    0.00   10.47   86.91    0.00    0.52    0.00    0.00    0.00    0.00
03:33:08 PM    0    2.09    0.00   10.47   86.91    0.00    0.52    0.00    0.00    0.00    0.00

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    2.09    0.00   10.47   86.91    0.00    0.52    0.00    0.00    0.00    0.00
Average:       0    2.09    0.00   10.47   86.91    0.00    0.52    0.00    0.00    0.00    0.00

(3)使用-m选项进行内存压力测试

[root@cp ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        131M        1.5G        9.5M        169M        1.5G
Swap:          2.0G          0B        2.0G
[root@cp ~]# stress -m 1 --vm-bytes 1G --vm-hang 10
stress: info: [8150] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd

[root@cp ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        1.1G        492M        9.5M        169M        482M
Swap:          2.0G          0B        2.0G
[root@cp ~]# pidstat -C "stress"  -p ALL -r 2 1
Linux 3.10.0-957.el7.x86_64 (cp)        12/30/2019      _x86_64_        (1 CPU)

03:23:48 AM   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
03:23:50 AM     0      8321      0.00      0.00    7312     428   0.02  stress
03:23:50 AM     0      8322      0.00      0.00 1055892 1048780  56.29  stress

Average:      UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
Average:        0      8321      0.00      0.00    7312     428   0.02  stress
Average:        0      8322      0.00      0.00 1055892 1048780  56.29  stress

(4)使用-d选项进行磁盘IO压力测试

[root@cp ~]# stress -d 1 --hdd-bytes 1024G
stress: info: [8820] dispatching hogs: 0 cpu, 0 io, 0 vm, 1 hdd

[root@cp ~]# pidstat -C "stress"  -p ALL -d 2 1
Linux 3.10.0-957.el7.x86_64 (cp)        12/30/2019      _x86_64_        (1 CPU)

03:53:07 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
03:53:09 AM     0      8833      0.00      0.00      0.00       0  stress
03:53:09 AM     0      8834      0.00  80991.04      0.00     192  stress

Average:      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
Average:        0      8833      0.00      0.00      0.00       0  stress
Average:        0      8834      0.00  80991.04      0.00     192  stress
[root@cp ~]# iostat  2 2
Linux 3.10.0-957.el7.x86_64 (cp)        12/30/2019      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.94    0.00   23.51    6.44    0.00   66.11

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
dm-0             10.61        31.52      4966.08         0.00     268893   42365272          0
dm-1            250.27         6.14       995.19         0.00      52348    8489904          0
sda              13.13        41.15      5952.57         0.00     351078   50780932          0
scd0              0.00         0.12         0.00         0.00       1028          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00   12.30   87.70    0.00    0.00

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
dm-0            149.50         0.00     76544.00         0.00          0     153088          0
dm-1              0.00         0.00         0.00         0.00          0          0          0
sda             156.00         0.00     79617.75         0.00          0     159235          0
scd0              0.00         0.00         0.00         0.00          0          0          0

发表回复

验证码: 85 + = 90