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