【工具】stress
使用Acupressure for Stress应用按压穴位 #生活技巧# #压力管理技巧# #压力管理应用程序#
背景
在上一篇文章cpulimit设计理念及其思考中,使用到了stress工具模拟系统CPU使用率比较高的场景,并验证cpulimit工具的效果。之前在学习性能优化章节时,还是比较熟悉的。由于太久没接触,又不太熟悉了。好记性不如烂笔头,本篇文章用于记录stress常见的几种模拟场景,方便以后查阅。
介绍
stress 是一个linux的压力测试工具,专门用于对设备的CPU、IO、内存、负载、磁盘等进行压测。另一个版本是其升级版本stress-ng。在模拟io_wait性能场景时,stress一直表现不好,本文以stress-ng为例,进行介绍。
安装
模拟环境可能是我们的虚拟机或目标宿主机。若是虚拟机,我们可以根据系统自带的软件包下载地址进行安装。比如我的环境时ubuntu,执行命令:
sudo apt install stress-ng 1
若是虚拟机,则需要下载源码,交叉编译。下载地址:
git clone https://github.com/ColinIanKing/stress-ng.git 1
交叉编译,一般source交叉编译的环境变量即可。或参考文章工作中如何编译开源工具(gdb)。
模拟测试
本文通过stress-ng模拟2个性能场景:CPU密集型进程、I/O密集型进程。以及分析思路。
CPU 密集型进程
压测命令:stress-ng --cpu 4 --timeout 600。其中,--timeout 600表示运行时长。
分析:通过mpstat -P ALL 5 1命令查看CPU使用情况。可知系统的CPU使用率已经被占满。如下:
yihua@ubuntu:~$ mpstat -P ALL 1 Linux 4.15.0-213-generic (ubuntu) 12/20/2023 _x86_64_ (4 CPU) 07:46:38 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 07:46:39 PM all 99.75 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:39 PM 0 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:39 PM 1 99.01 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:39 PM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:39 PM 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:39 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 07:46:40 PM all 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:40 PM 0 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:40 PM 1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:40 PM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:40 PM 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:40 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 07:46:41 PM all 99.75 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:41 PM 0 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:41 PM 1 99.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:41 PM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:46:41 PM 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1234567891011121314151617181920212223
定位:通过pidstat -u 5查看各进程占用CPU使用率的情况。可知,主要是被stress-ng进程占用。如下
yihua@ubuntu:~$ pidstat -u 1 Linux 4.15.0-213-generic (ubuntu) 12/20/2023 _x86_64_ (4 CPU) 07:49:18 PM UID PID %usr %system %guest %wait %CPU CPU Command 07:49:19 PM 0 956 0.97 0.00 0.00 0.00 0.97 1 containerd 07:49:19 PM 1000 2844 100.00 0.00 0.00 0.00 100.00 0 stress-ng-cpu 07:49:19 PM 1000 2845 99.03 0.00 0.00 5.83 99.03 2 stress-ng-cpu 07:49:19 PM 1000 2846 100.00 0.97 0.00 0.00 100.00 1 stress-ng-cpu 07:49:19 PM 1000 2847 100.00 0.00 0.00 0.00 100.00 3 stress-ng-cpu 07:49:19 PM 1000 2888 0.00 5.83 0.00 3.88 5.83 1 pidstat 07:49:19 PM UID PID %usr %system %guest %wait %CPU CPU Command 07:49:20 PM 1000 2094 0.00 1.00 0.00 0.00 1.00 2 sshd 07:49:20 PM 1000 2844 94.00 0.00 0.00 0.00 94.00 0 stress-ng-cpu 07:49:20 PM 1000 2845 93.00 0.00 0.00 0.00 93.00 2 stress-ng-cpu 07:49:20 PM 1000 2846 91.00 1.00 0.00 1.00 92.00 1 stress-ng-cpu 07:49:20 PM 1000 2847 93.00 0.00 0.00 0.00 93.00 3 stress-ng-cpu 07:49:20 PM 1000 2888 0.00 1.00 0.00 0.00 1.00 1 pidstat 07:49:20 PM UID PID %usr %system %guest %wait %CPU CPU Command 07:49:21 PM 1000 2844 99.00 0.00 0.00 0.00 99.00 0 stress-ng-cpu 07:49:21 PM 1000 2845 99.00 0.00 0.00 0.00 99.00 2 stress-ng-cpu 07:49:21 PM 1000 2846 99.00 0.00 0.00 1.00 99.00 1 stress-ng-cpu 07:49:21 PM 1000 2847 99.00 0.00 0.00 0.00 99.00 3 stress-ng-cpu 07:49:21 PM 1000 2888 1.00 0.00 0.00 0.00 1.00 1 pidstat 12345678910111213141516171819202122232425
总结:通过mpstat和pidstat工具,可以快速定位到是因为stress-ng引起的CPU性能问题。
I/O密集型进程
压测命令: stress-ng -d 4 --timeout 600。其中-d 4,表示启动4个进程对磁盘进行write操作。
分析:通过mpstat -P ALL 1命令查看I/O使用情况,可知CPU的消耗主要集中在等待I/O上。如下:
yihua@ubuntu:~$ mpstat -P ALL 1 Linux 4.15.0-213-generic (ubuntu) 12/20/2023 _x86_64_ (4 CPU) 09:56:15 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:56:16 PM all 0.00 0.00 0.77 83.63 0.00 0.51 0.00 0.00 0.00 15.09 09:56:16 PM 0 0.00 0.00 1.03 97.94 0.00 1.03 0.00 0.00 0.00 0.00 09:56:16 PM 1 0.00 0.00 0.98 96.08 0.00 0.98 0.00 0.00 0.00 1.96 09:56:16 PM 2 0.00 0.00 0.00 40.21 0.00 0.00 0.00 0.00 0.00 59.79 09:56:16 PM 3 0.00 0.00 0.00 98.97 0.00 0.00 0.00 0.00 0.00 1.03 09:56:16 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:56:17 PM all 0.00 0.00 0.51 97.22 0.00 0.00 0.00 0.00 0.00 2.27 09:56:17 PM 0 0.00 0.00 1.02 98.98 0.00 0.00 0.00 0.00 0.00 0.00 09:56:17 PM 1 0.00 0.00 1.01 98.99 0.00 0.00 0.00 0.00 0.00 0.00 09:56:17 PM 2 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 09:56:17 PM 3 0.00 0.00 0.00 90.00 0.00 1.00 0.00 0.00 0.00 9.00 09:56:17 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:56:18 PM all 0.00 0.00 1.01 95.96 0.00 0.51 0.00 0.00 0.00 2.53 09:56:18 PM 0 0.00 0.00 2.06 97.94 0.00 0.00 0.00 0.00 0.00 0.00 09:56:18 PM 1 0.00 0.00 1.00 92.00 0.00 1.00 0.00 0.00 0.00 6.00 09:56:18 PM 2 0.00 0.00 0.00 99.00 0.00 1.00 0.00 0.00 0.00 0.00 09:56:18 PM 3 0.00 0.00 0.00 95.92 0.00 0.00 0.00 0.00 0.00 4.08 1234567891011121314151617181920212223
定位:通过pidstat -d 1命令可以查看各个进程读写状态,如下:
yihua@ubuntu:~/data_gather$ pidstat -d 1 Linux 4.15.0-213-generic (ubuntu) 12/20/2023 _x86_64_ (4 CPU) 10:01:32 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 10:01:33 PM 0 314 -1.00 -1.00 -1.00 124 jbd2/sda1-8 10:01:33 PM 0 3343 -1.00 -1.00 -1.00 72 kworker/u256:1 10:01:33 PM 1000 3429 0.00 27597.30 0.00 106 stress-ng-hdd 10:01:33 PM 1000 3430 0.00 0.00 0.00 72 stress-ng-hdd 10:01:33 PM 1000 3431 0.00 0.00 0.00 84 stress-ng-hdd 10:01:33 PM 1000 3432 0.00 9764.86 0.00 34 stress-ng-hdd 10:01:33 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 10:01:34 PM 0 314 -1.00 -1.00 -1.00 57 jbd2/sda1-8 10:01:34 PM 0 3343 -1.00 -1.00 -1.00 78 kworker/u256:1 10:01:34 PM 1000 3429 0.00 50132.00 0.00 98 stress-ng-hdd 10:01:34 PM 1000 3430 0.00 0.00 0.00 100 stress-ng-hdd 10:01:34 PM 1000 3431 0.00 0.00 0.00 78 stress-ng-hdd 10:01:34 PM 1000 3432 0.00 0.00 0.00 94 stress-ng-hdd 123456789101112131415161718
总结
stress-ng工具,在性能测试,或压力测试场景,是一个很实用的工具。希望大家能够掌握基本用法。
若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。
我的宗旨:
踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途。
网址:【工具】stress https://www.yuejiaxmz.com/news/view/182267
相关内容
Linux性能优化(一)——stress压力测试工具生活减压 Life stress reduction
雅思写作大作文思路 压力的原因与解决方案 stress and how to reduce stress
Stress MatrixiPhone最新免费版APP安全下载最新版
InfluxDB 压力测试工具:Influx
FIRESTARTER:高效处理器压力测试工具
FIRESTARTER:处理器压力测试工具使用指南
中文版知觉压力量表( Chinese Perceived Stress Scales,CPSS)
工作压力和压力管理对腰背疼痛的影响ppt课件.ppt
青少年家庭经济压力与社会适应的关系——应对方式的中介作用 The Relationship between Family Economic Stress and Social Adaptation in Adolescents: The Mediating Role of Coping Style