首页 > 其他分享 >stress压力测试工具

stress压力测试工具

时间:2022-11-23 14:34:23浏览次数:39  
标签:11 stress -- 0.00 100.00 压力 测试工具 CPU

stress是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘进行压力测试。

一、软件包方式安装
[root@centos7 ~]#yum -y install stress-ng
[root@ubuntu1804 ~]#apt -y install stress-ng


二、编译安装
下载地址:https://fossies.org/linux/privat/stress-ng-0.14.01.tar.gz
1、解压源文件安装包
tar -zxvf stress-ng-0.14.01.tar.gz
2、编译
cd /home/stress-ng/stress-ng-0.14.01
make
3、安装
sudo make install
注意:如果提示make: cc: Command not found。意思还是要安装gcc,可以使用以下命令安装yum install gcc


三、容器安装
docker pull lorel/docker-stress-ng
查看帮助参数
docker run -it --rm lorel/docker-stress-ng


参数
-c, --cpu    指定产生N个处理sqrt()函数的CPU进程,也就是每个进程不停计算随机数的平方根
-i, --io    指定产生N个处理sync()函数的磁盘I/O进程,sync()用于将内存上的内容写到硬盘上
-m, --vm    指定产生n个进程,每个进程不断调用内存分配malloc函数和内存释放free函数
–vm-bytes    指定调用malloc函数时分配内存的字节数 (默认256MB),与—m的个数有关。
–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
--hdd-noclean:  不要将写入随机ASCII数据的文件Unlink

-t, --timeout N:  在N秒后结束程序
--backoff N:      等待N微秒后开始运行
-q, --quiet:      程序在运行的过程中不输出信息
-n, --dry-run:    输出程序会做什么而并不实际执行相关的操作
--version:        显示版本号
-v, --verbose:    显示详细的信息

Example: stress-ng --cpu 8 --io 4 --vm 2 --vm-bytes 512M --fork 4 --timeout 10s





包方式测试:

产生2个worker做圆周率算法压力
stress-ng --cpu 2 --cpu-method pi

产生2个worker迭代使用30多种不同的压力算法,包括pi, crc16, fft等
stress-ng --cpu 2 --cpu-method all

产生2个worker调用socket相关函数产生压力
stress-ng --sock 2

strss-ng将压力指定到指定CPU上
stress-ng --sock 4 --taskset 0-1,3

产生2个worker读取tsc产生压力
stress-ng --tsc 2




压测cpu,把6个cpu压满,开启6个CPU进程执行sqrt计算,180秒后结束
stress-ng --cpu 6 --timeout 180

压测内存,压20G内存,开启4个进程分配内存,每次分配20GB内存,保持180秒后释放,180秒后退出。
stress-ng --vm 4 --vm-bytes 20G --vm-hang 180 --timeout 180s

压测磁盘io,开启5个磁盘IO进程,每次写20GB数据到磁盘,180秒后退出
stress-ng --hdd 5 --hdd-bytes 20G --timeout 180s



一.CPU测试
开启4个CPU进程执行sqrt(根运算)计算,60秒后结束
[root@localhost7B ~]# stress --cpu 4 --timeout 60

[root@localhost7B ~]# mpstat  -P ALL  1  100
11时54分40秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11时54分41秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时54分41秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时54分41秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时54分41秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时54分41秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

11时54分42秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11时54分43秒  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
11时54分43秒    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
11时54分43秒    1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
11时54分43秒    2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
11时54分43秒    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00



二、IO测试
开启2个IO进程,执行sync系统调用,刷新内存缓冲区到磁盘
[root@localhost7B ~]# stress --io 2 --timeout 60s

[root@localhost7B ~]# mpstat  -P ALL  1  100
11时59分15秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11时59分16秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分16秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分16秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分16秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分16秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

11时59分16秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11时59分17秒  all    0.00    0.00    4.65    0.00    0.00    0.00    0.00    0.00    0.00   95.35
11时59分17秒    0    0.00    0.00    4.12    0.00    0.00    0.00    0.00    0.00    0.00   95.88
11时59分17秒    1    0.00    0.00   10.00    0.00    0.00    0.00    0.00    0.00    0.00   90.00
11时59分17秒    2    0.00    0.00    3.30    0.00    0.00    0.00    0.00    0.00    0.00   96.70
11时59分17秒    3    0.00    0.00    3.16    0.00    0.00    0.00    0.00    0.00    0.00   96.84


使用stress无法模拟iowait升高,但sys升高。stress -i参数表示通过系统调用sync来模拟IO问题,
但sync是刷新内存缓冲区数据到磁盘中,以确保同步。如果内存缓冲区内没多少数据,读写到磁盘中的数据也就不多,没法产生IO压力。
使用SSD磁盘的环境中尤为明显,iowait一直为0,但因为大量系统调用,导致系统CPU使用率sys升高。

[root@localhost7B ~]# stress --io 2 --hdd 2 --timeout 60s
[root@localhost7B ~]# mpstat  -P ALL  1  100
11时59分55秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11时59分56秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分56秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分56秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分56秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11时59分56秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

12时00分00秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
12时00分01秒  all    0.26    0.00    1.30   75.91    0.00    2.07    0.00    0.00    0.00   20.47
12时00分01秒    0    0.00    0.00    0.00   92.63    0.00    7.37    0.00    0.00    0.00    0.00
12时00分01秒    1    0.00    0.00    1.01   19.19    0.00    0.00    0.00    0.00    0.00   79.80
12时00分01秒    2    0.00    0.00    1.03   98.97    0.00    0.00    0.00    0.00    0.00    0.00
12时00分01秒    3    0.00    0.00    2.13   96.81    0.00    1.06    0.00    0.00    0.00    0.00




三、Memory测试

开启2个进程分配内存,每次分配2GB内存,保持100秒后释放,100秒后退出。
[root@localhost7B ~]#stress --vm 2 --vm-bytes 2G --vm-hang 100 --timeout 100s

[root@localhost7B ~]# vmstat  1  100
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 731148 2178820     40 143100   11   36    19    39    5    0  0  0 100  0  0
 0  0 731148 2178572     40 143484   68    0   500     0  191  270  0  0 100  0  0
 0  0 731148 2178572     40 143540    0    0     0     0  111  195  0  0 100  0  0
 0  0 731148 2178572     40 143544    0    0     0     0  110  173  0  0 100  0  0
 0  0 731148 2178572     40 143540    0    0     0     0   89  155  0  0 100  0  0
 0  0 731148 2178572     40 143540    0    0     0     0  101  155  0  0 100  0  0
 5  0 766176  56016     40  80592  328 35904   336 35904 36358  692  4 41 55  0  0
 3  0 941404  55380     40  79984  364 174552  2888 174552 90400 1465  0 78 22  0  0
 3  0 1210424  55380     40  76428    8 269072     8 269072 76773 1406  1 75 24  0  0
 4  0 1474096  55808     40  77872  384 263984  2052 263984 76880 1523  1 76 23  0  0
 5  0 1731128  55484     40  78080   80 256836   352 256836 76555 1475  1 76 24  0  0
 3  0 1926712  55700     40  77980  260 195940   260 195940 58506 1249  1 80 19  0  0
 3  0 2183788  55348     40  75624  112 257076   112 257076 76753 1431  1 76 24  0  0


四、磁盘IO测试
开启2个磁盘IO进程,每次写10GB数据到磁盘
[root@localhost7B ~]# stress --hdd 2 --hdd-bytes 10G --backoff 2000000

[root@localhost7B ~]# iostat  -d  -x 1
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               8.00     0.00    2.00    1.00    40.00     1.50    27.67     0.00    0.67    0.50    1.00   0.67   0.20
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    1.00     0.00     1.50     3.00     0.00    1.00    0.00    1.00   1.00   0.10
dm-1              0.00     0.00   10.00    0.00    40.00     0.00     8.00     0.00    0.20    0.20    0.00   0.10   0.10

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               3.60     0.00    6.76 1029.73    75.68 526962.16  1016.97     2.49    2.40   92.47    1.81   0.96  99.91
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    1.35 1029.28    39.64 526731.53  1022.23     1.87    1.81    2.00    1.81   0.97 100.00
dm-1              0.00     0.00    9.01    0.00    36.04     0.00     8.00     0.62   69.30   69.30    0.00  69.05  62.21


Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               8.00     0.00   13.00  498.00    84.00 254464.00   996.27   107.87   66.78    3.23   68.44   3.32 169.60
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00  643.00     0.00 328704.00  1022.41   108.49   53.13    0.00   53.13   2.64 169.60
dm-1              0.00     0.00   21.00    0.00    84.00     0.00     8.00     0.08    3.90    3.90    0.00   1.33   2.80



五、CPU密集型进程
模拟启动2个CPU密集型进程
stress --cpu 2 --timeout 600

查看系统平均负载:uptime
[root@localhost7B ~]# uptime
 13:48:31 up 13 days,  4:46,  5 users,  load average: 1.55, 0.94, 0.42

查看CPU使用情况:mpstat -P ALL 3 1
[root@localhost7B ~]# mpstat -P ALL 3 1
Linux 3.10.0-1062.el7.x86_64 (localhost7B.localdomain)     2022年11月23日     _x86_64_    (4 CPU)

13时48分45秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13时48分48秒  all   49.96    0.00    0.00    0.17    0.00    0.08    0.00    0.00    0.00   49.79
13时48分48秒    0    9.00    0.00    0.00    0.67    0.00    0.00    0.00    0.00    0.00   90.33
13时48分48秒    1   91.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    9.00
13时48分48秒    2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
13时48分48秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均时间:  all   49.96    0.00    0.00    0.17    0.00    0.08    0.00    0.00    0.00   49.79
平均时间:    0    9.00    0.00    0.00    0.67    0.00    0.00    0.00    0.00    0.00   90.33
平均时间:    1   91.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    9.00
平均时间:    2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
平均时间:    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

查看进程负载情况:pidstat -u 5
[root@localhost7B ~]# pidstat -u 5
Linux 3.10.0-1062.el7.x86_64 (localhost7B.localdomain)     2022年11月23日     _x86_64_    (4 CPU)

13时49分03秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
13时49分08秒     0       851    0.20    0.00    0.00    0.20     3  vmtoolsd
13时49分08秒     0      3028    0.00    0.20    0.00    0.20     0  containerd
13时49分08秒     0     60069   99.80    0.00    0.00   99.80     1  stress
13时49分08秒     0     60070   99.80    0.00    0.00   99.80     2  stress
13时49分08秒     0     60118    0.00    0.20    0.00    0.20     3  pidstat
13时49分08秒     0     85733    0.20    0.00    0.00    0.20     0  containerd-shim
13时49分08秒     0     88195    0.00    0.20    0.00    0.20     0  vmtoolsd
13时49分08秒     0     93891    0.20    0.00    0.00    0.20     0  containerd-shim

说明:
(1)通过uptime可以观察系统平均负载较高。
(2)通过mpstat观察到CPU1和CPU2的用户态CPU使用率很高,而iowait为0,说明进程是CPU密集型。进程使用CPU密集导致系统平均负载变高、CPU使用率变高。
(3)可以通过pidstat查看是stress进程导致CPU使用率较高。


六、IO密集型进程

模拟1个worker调用sync刷新内存缓冲区write到磁盘。
stress -i 1 --hdd 1 --timeout 600

查看系统平均负载,uptime
[root@localhost7B ~]# uptime
 13:51:53 up 13 days,  4:49,  5 users,  load average: 1.79, 1.35, 0.68



查看CPU使用情况,mpstat -P ALL 5
[root@localhost7B ~]# mpstat -P ALL 5
Linux 3.10.0-1062.el7.x86_64 (localhost7B.localdomain)     2022年11月23日     _x86_64_    (4 CPU)

13时52分05秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13时52分10秒  all    0.23    0.00   44.92   16.91    0.00    3.17    0.00    0.00    0.00   34.76
13时52分10秒    0    0.48    0.00   22.91   22.43    0.00    0.24    0.00    0.00    0.00   53.94
13时52分10秒    1    0.21    0.00   48.46   26.28    0.00    0.21    0.00    0.00    0.00   24.85
13时52分10秒    2    0.00    0.00   91.51    0.00    0.00    0.00    0.00    0.00    0.00    8.49
13时52分10秒    3    0.56    0.00    8.91   18.38    0.00   14.48    0.00    0.00    0.00   57.66

说明:
(1)可以通过uptime观察到,系统平均负载很高。
(2)通过mpstat观察到内核态CPU使用率很低,但iowait很高,一直在等待IO处理,说明进程是IO密集型。进程频繁进行IO操作,导致系统平均负载很高而CPU使用率不高。


七、等待CPU进程

本机4个逻辑CPU,模拟8个密集型进程。
stress -c 8 --timeout 600

查看系统平均负载,如下:uptime
[root@localhost7B ~]# uptime
 14:05:32 up 13 days,  5:03,  5 users,  load average: 8.16, 7.49, 4.64

查看CPU使用情况,mpstat -P ALL 5
[root@localhost7B ~]# mpstat -P ALL 5
Linux 3.10.0-1062.el7.x86_64 (localhost7B.localdomain)     2022年11月23日     _x86_64_    (4 CPU)

14时06分07秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
14时06分10秒  all  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
14时06分10秒    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
14时06分10秒    1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
14时06分10秒    2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
14时06分10秒    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00


查看进程的CPU使用情况,pidstat -u 3
[root@localhost7B ~]# pidstat  -u 3
Linux 3.10.0-1062.el7.x86_64 (localhost7B.localdomain)     2022年11月23日     _x86_64_    (4 CPU)

14时06分38秒   UID       PID    %usr %system  %guest  %wait  %CPU   CPU  Command
14时06分41秒     0     60892   49.50    0.00    0.00  50.00 49.50     0  stress
14时06分41秒     0     60893   49.17    0.00    0.00  48.00 49.17     2  stress
14时06分41秒     0     60894   49.83    0.00    0.00  48.25 49.83     1  stress
14时06分41秒     0     60895   49.83    0.00    0.00  29.00 49.83     0  stress
14时06分41秒     0     60896   49.50    0.00    0.00  50.00 49.50     1  stress
14时06分41秒     0     60897   49.50    0.00    0.00  49.00 49.50     2  stress
14时06分41秒     0     60898   49.50    0.00    0.00  48.25 49.50     3  stress
14时06分41秒     0     60899   49.50    0.00    0.00  29.00 49.50     3  stress
14时06分41秒     0     61274    0.00    0.33    0.00   5.00  0.33     2  pidstat
14时06分41秒     0     93891    0.33    0.00    0.00   4.20  0.33     0  containerd-shim

说明:
(1)通过uptime观察到系统平均负载很高
(2)通过mpstat观察到用户态CPU使用率很高,iowait为0,说明进程是CPU密集型或者进程间存在CPU争用。
(3)通过pidstat观察到wait指标很高,说明进程间存在CPU争用,系统中存在大量进程在等待使用CPU。

-------------------------------------------------------------------------------------------------------------

docker的测试方式:


容器下载
docker pull lorel/docker-stress-ng
查看帮助参数
docker run -it --rm lorel/docker-stress-ng

测试:
范例:默认一个works 分配256M内存,2个即占512M内存
docker run --name c1 -it --rm lorel/docker-stress-ng --vm 2

范例:指定内存最大值
#docker run --name c1 -it --rm -m 300m lorel/docker-stress-ng --vm 2 

查看使用情况。
#docker stats --no-stream 



范例:限制使用CPU
#docker run -it --rm  --cpus 1.5  lorel/docker-stress-ng  --cpu 4 --vm 4

范例:限制CPU(老方式)
[root@ubuntu1804 ~]#docker run -it --rm  --cpu-quota 2000 --cpu-period 1000  lorel/docker-stress-ng  --cpu 4 --vm 4


绑定CPU
#一般不建议绑在0号CPU上,因0号CPU一般会较忙
[root@ubuntu1804 ~]#docker run -it --rm  --cpus 1.5  --cpuset-cpus 2,4-5 lorel/docker-stress-ng  --cpu 4 --vm 4

查看使用情况。
#docker stats --no-stream 

 

标签:11,stress,--,0.00,100.00,压力,测试工具,CPU
From: https://www.cnblogs.com/Yuanbangchen/p/16918162.html

相关文章

  • 性能压力测试指导方案
    一、性能测试流程指导图二、测试目标测试商城4.0项目,对系统服务的性能压力测试,并对比样本数据,可以达到以下目的:了解量级数据模型高并发压测环境下,不同业务模型对服务......
  • 【SPSS差异性分析】以正常体型人群仰卧的压力均值为例
    【什么是F检验?】 简单理解,t检验是两组均值比较的假设检验,P<0.05则表示两组均值存在显著差异。而F检验(一般更常称为方差分析analysisofvariance)就是多组均值是否相同的......
  • Apifox:成熟的测试工具要学会自己写接口文档
    好家伙, 在开发过程中,我们总是避免不了进行接口的测试,而相比手动敲测试代码,使用测试工具进行测试更为便捷,高效 今天发现了一个非常好用的接口测试工具Apifox相比于P......
  • postman接口测试工具汉化教程
    1.汉化包地址 https://github.com/hlmd/Postman-cn/releases?page=1下载对应版本下的app.zip解压后放到postman安装路径下的版本号目录下的resources文件夹中  2.......
  • 智芯传感-进气压力传感器如何守护发动机动力十足?
    当遇到上述情形的时候,很可能说明您爱车里的进气压力传感器发生了问题。   进气压力传感器的工作原理是:感应进气歧管内的真空变化,再从感知器内部电阻的改变,转换成电压......
  • kafka集群压力测试
    1)Kafka压测用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。kafka-consumer-perf-test.shkaf......
  • ApacheBench(压力测试)
    1.post请求(post.txtbody信息)ab-c2000-n50-ppost.txt-T"application/json" url   2.get请求ab-c2000-n50  url  3.参数-n请求数-c......
  • Apache ab压力测试工具使用
    一介绍ApacheBenchmark(简称ab)是Apache安装包中自带的压力测试工具,简单易用。使用起来非常的简单和方便。不仅仅是可以apache服务器进行网站访问压力测试,还可以对其......
  • 性能测试场景设计之 压力测试场景
    负载测试阶梯线程组-steppingthreadsgroup通过逐步增加并发用户数来进行压测,增加并发的数量不一定是相同的增加的量(或者叫做步长),可以相同,也可以不相同。增加的量......
  • 软件产品测试之压力测试
    压力测试是一种性能测试方法,通过迫使软件处于极端情况发现性能瓶颈。在极端情况下软件更容易暴露出性能问题。因此采用压力测试分析实时软件的性能以保障它的质量。其实就......