【测试】cpu、内存、磁盘、网络模拟压力工具stress-ng|ChaosBlade--编辑中

目录

一,使用stress-ng 工具

二,使用ChaosBlade工具


一,使用stress-ng 工具

stress-ng ——linux下多功能压测工具,让你的服务器汗流浃背

关于压力测试,主要就是模拟在linux上的高负载情况,包括cpu、内存、磁盘、网络等,在这种情况下来观察高负载情况下的系统表现, 简单的压测,可以写一些计算的脚本,来让cpu和内存维持高使用率,也可以循环使用dd 等让磁盘等io变高。不同的场景就需要我们写不同的脚本,稍微有点麻烦。 今天要来推荐的工具是 linux下的压力测试工具,stress的升级版本stress-ng,与stress兼容,但是又比stress强大。官方地址如下:https://github.com/ColinIanKing/stress-ng废话不多说我们来使用一下康康

stress-ng 安装

设备信息查询

首先我们需要获取我们服务器本身的硬件信息,常用的查询命令,可以参考下面

stress-ng的基础使用

创作不易,如果您觉得这篇文章对你有帮助,不妨给我点个赞,这将是我继续分享优质内容的动力。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。

原始发表:2024年01月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

 

 

 

使用stress-ng的一般语法是:

$ sudo stress-ng 选项参数

您可以与stress-ng一起使用的一些选项:

要启动每个压力测试的 N 个实例,请使用–all N选项,如下所示。

要通过顺序执行所有不同的 CPU 压力测试方法来启动 N 个进程来锻炼 CPU,请使用–cpu N选项,如下所示。

要使用给定的 CPU 压力测试方法,请使用–cpu-method选项。您可以使用许多方法,查看手册页以查看所有要使用的方法。

要在 N 个 bogo 操作后停止 CPU 压力过程,请使用–cpu-ops N选项。

要启动 NI/O 压力测试过程,请使用–io N选项。

要在 N 个 bogo 操作后停止 io 压力过程,请使用 –io -ops N选项。

要启动 N 个 vm 压力测试进程,请使用–vm N选项。

要指定每个 vm 进程的内存量,请使用–vm-bytes N选项。

要在 N 个 bogo 操作后停止 vm 压力进程,请使用–vm-ops N 个选项

使用–hdd N选项启动 N 个硬盘运行进程。

要在 N 个 bogo 操作后停止硬盘压力过程,请使用–hdd-ops N选项。

您可以使用–timeout N选项在 N 秒后设置超时。

要在 bogo 操作后生成摘要报告,您可以使用–metrics或–metrics-brief选项。–metrics -brief显示非零指标。

您还可以使用–dir N选项启动 N 个进程,这些进程将使用 mkdir 和 rmdir 创建和删除目录。

要停止目录操作进程,请使用–dir-ops N选项。

要启动 N 个 CPU 消耗进程来执行当前的 nice 级别,包括

-nice N选项。使用此选项时,每次迭代都会派生一个子进程,该子进程会运行一个繁忙的循环,每个级别运行 0.1 秒,然后退出所有不同的 nice 级别。

要停止 nice 循环,请使用–nice-ops N选项,如下所示。

要启动通过 chmod(2) 和 fchmod(2) 在同一文件上更改文件模式位的 N 个进程,请使用–chmod N选项。请记住,N 的值越大,文件的争用就越多。压力源将通过您使用 chmod(2) 指定的所有模式位组合来工作。

您可以通过–chmod-ops N选项停止 chmod 操作。

您可以使用-v选项来显示有关正在进行的操作的更多信息。

使用-h查看stress-ng 的帮助。

如何在 Linux 系统中使用stress-ng

(1)运行 8 个 CPU 压力源,超时时间为 60 秒,并在操作结束时进行汇总。

sudo stress-ng --cpu 8 --timeout 60 --metrics-brief

(2)运行4 个FFT CPU 压力源,超时时间为 2 分钟。

sudo stress-ng --cpu 4 --cpu-method fft --timeout 2m

(3)要运行 5 个硬盘压力源并在 100000 次 bogo 操作后停止,请运行此命令

sudo stress-ng --hdd 5 --hdd-ops 100000

(3)要使用 1GB 虚拟内存运行 4 个 CPU 压力源、4 个 I/O 压力源和 1 个虚拟内存压力源一分钟,请运行以下命令:

sudo stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief

作者:阿汤哥_8d27

链接:https://www.jianshu.com/p/a9f333cf037b

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.语法及参数

(1)语法

stress [OPTION]

stress-ng [OPTION [ARG]]

(2)stress参数

(3)stress-ng参数

stress-ng参数有几百项,可以模拟复杂的压力测试,但是兼容stress的参数。 主要使用参数:

以下摘自:

Linux下的stress-ng压力测试工具介绍-https://www.elecfans.com/d/2301865.html

三、stress-ng命令用法及常见参数 1、stress-ng命令用法

stress-ng [OPTION [ARG]]

2、stress-ng命令常见选项参数

-h,--help:显示帮助信息;
--version:显示版本信息;
-t,–timeout:指定程序运行结束的时间,后面直接跟数字,单位为秒;
-c,–-cpu:后面空格跟一个整数,表示测试CPU的进程数,--cpu 4 :表示生成4个worker循环调用sqrt()产生cpu压力;
-i,--io:后面空格跟一个整数,表示测试磁盘I/O的进程数, --io 4 :表示生成4个worker循环调用sync()产生io压力;
-m,--vm:后面空格跟一个整数,表示测试内存的进程数,--vm 4 :表示生成4个worker循环调用malloc()/free()产生内存压力;
-d,--hdd:后面空格直接跟数字,表示产生执行wri
te和unlink函数的进程数,用于磁盘负载测试;
--cpu-method:指定CPU的测试方法,后面空格直接跟方法名;
--metrics:输出命令执行指标;
--vm-bytes:指定在内存测试时malloc的字节数,默认256M;
--class :指定测试类别,后面空格跟类别名;
--matrix :启用矩阵测试模式,后面空格跟矩阵模式名;
--random-seed:指定测试随机种子,后面空格跟种子名;
--sequential:启用顺序测试模式;
--hdd-bytes:指定写的字节数;
--cpu-lo
ad:CPU负载占比,后面空格直接跟数字,单位为百分比。

四、stress-ng压力测试实用场景 1、CPU负载测试

如下命令使用4个CPU进程数,进行矩阵乘法计算进行压力测试,持续时间为600秒。

stress-ng --cpu 4 --cpu-method matrixprod --timeout 600s

此时先通过top命令查看测试前系统负载情况,如下图所示:

执行压力测试过程中,再通过top命令查看系统负载情况,如下图所示:

2、内存负载测试 如下命令使用4个内存分配进程,每次分配大小512M,分配后不释放,保持测试600秒。

stress-ng--vm4--vm-bytes512M--timeout600s

此时先通过free和top命令查看测试前系统内存使用情况,如下图所示:

执行压力测试过程中,再通过free和top命令查看系统内存使用情况,如下图所示:

如果不带保持时间参数,长期保持测试命令如下:

stress-ng --vm 4 --vm-bytes 512M --vm-keep

3、IO负载测试 如下命令使用4个IO进程,保持测试600秒。

stress-ng --io 4 --timeout 600s

此时先通过top命令及prometheus监控系统查看测试前系统负载情况,如下图所示:

执行压力测试过程中,再通过top命令及prometheus监控系统查看系统负载情况,如下图所示:

4、磁盘及IO测试

如下命令使用4个I/O进程,1个写进程,每次写1000M文件块,测试600秒。

stress-ng--io4--hdd1--hdd-bytes1000M--timeout600s

此时先通过top命令及prometheus监控系统查看测试前系统负载情况,如下图所示:

执行压力测试过程中,再通过top命令及prometheus监控系统查看系统负载情况,如下图所示:

5、CPU及磁盘测试

如下命令使用4个CPU进程,2个I/O进程,测试600秒。

stress-ng --cpu 4 -i 2 --timeout 600s

此时先通过top命令查看测试前系统CPU负载情况,如下图所示:

执行压力测试过程中,再通过top命令查看系统负载情况,如下图所示:

6、调整CPU负载占用百分比进行测试 实际测试环境中可能不是要求CPU、内存等负载为100%情况下进行,此时可以通过调整相关负载参数进行测试。 如下命令使用4个CPU进程,调整CPU负载占比为60%进行测试,测试时长600秒。

stress-ng --cpu 4 --cpu-load 60 --timeout 600s

执行压力测试过程中,再通过top命令查看系统负载情况,如下图所示:

五、总结

工欲善其事,必先利其器,实用的工具可以让你在实际工作中如虎添翼。stress-ng工具选项参数众多,这也说明了它功能强大。以上只是列举一些常用的参数并进行常用的场景进行测试。大家如果想深入使用这款工具,可以自行查阅相关的资料

审核编辑:汤梓红

 

  • stress-ng --cpu 2 --timeout 10 压测2个cpu,持续10秒,然后我们再开一个终端,在里面输入 top -d 1 之后,再按1,即可看到当前2个cpu的占用率,你就会发现都是满的,当压测时间结束之后,cpu的使用率将就恢复正常了
  • stress-ng --vm 2 --vm-bytes 1G --timeout 100s 压测内存,持续100秒,使用2个进程占用1G内存,你也可以换成500M什么的
  • stress-ng --hdd 3 --hdd-bytes 20G --timeout 180s 压测磁盘io。压测磁盘io,开启3个磁盘IO进程,每次写20GB数据到磁盘,180秒后退出。相信这3个命令已经足够我们基本的进行压测使用了。 更多的使用方法,可以使用 stress-ng --help来查询
  • 查看cpu个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 输出的即为当前的物理cpu个数 。查询每个物理cpu的核数 cat /proc/cpuinfo| grep "cpu cores"| uniq 查看逻辑cpu的核数: cat /proc/cpuinfo| grep "processor"| wc -l (一般情况下,逻辑cpu=物理CPU个数×每颗核数)
  • 查询内存大小 : cat /proc/meminfo 或者 更直观的查看内存的命令: free -h 看total mem 即可
  • 查看磁盘大小df -h 一般来说挂载在 '/'下的size就是
  • 查询cpu使用 top
  • 查询内存使用情况 free -h 里的used
  • 执行命令 yum install stress stress-ng -y 安装即可

二,使用ChaosBlade工具

开源的故障注入工具chaosblade,阿里研发。该工具故障注入包含:cpu,内存,磁盘io,磁盘占用,网络注入等

使用方法:

到这个链接去下载:https://github.com/chaosblade-io/chaosblade/releases

将工具上传至待测机器并解压

命令参数和简写

status --> s;   destroy -->d;     create --> c;

进入解压的工具目录,执行对应注入命令

./blade create cpu load --cpu-list 0-3 --cpu-percent 80

执行成功,会返回一个Uid,如需撤销故障注入,执行如下命令

./blade d {Uid}

查询曾经注入的故障id,便于删除

./blade s --type c

磁盘注入:

参数介绍:

--path string     需要填充的目录,默认值 /

--size string      需要填充的文件大小,单位M,取值整数,例如:--size 1024

--reserve string   保留磁盘大小,单位MB,取值为不包含单位的正整数,例如:--reserve 1024。如果size、percent、reserve参数都存在,优先级:percent > reserve > size.。

--percent string   指定磁盘使用率,如 --percent 80

--retain-handle    是否保留填充    (亲测,只要不加timeout参数,默认保留填充,只有磁盘空间注入有此参数)      

--timeout string   设定运行时长,单位秒    (此参数为通用参数,各种故障场景几乎都可以加)

例如:

blade create disk fill --path /home --percent 80 --retain-handle   填充home目录80%的使用空间

blade create disk fill --path /home --size 200 --retain-handle     填充home目录200M

blade create disk fill --path /home --reserve 200 --retain-handle   仅保留/home目录200M

cpu注入:

blade create cpu load --cpu-list 0,1 --cpu-percent 80     #加压0,1两个核心,负载到80%

blade create cpu load --cpu-count 3                  #将3个核心加压

blade create cpu fullload                                      #cpu满载

 blade create cpu load --cpu-list 0,1,2 --timeout 100     --将0,1,2三个核心加压100s,不带timeout参数默认一直加压

内存注入:

blade create mem load --mode ram --mem-percent 80           --占用80%的ram内存

blade create mem load --mode ram --mem-percent 80 --rate 100  --占用80%ram内存,占用速率100M每秒,rate参数只在占用ram时生效。

blade create mem load --mode catche --reserve 100    --占用catche内存,保留100M内存,速率100M/S,不加mode参数,默认值为catche,采用ram占用必须加mode参数。

注:内存注入满了会导致blade故障无法消除,推荐加percent参数;不使用任何参数会默认将内存加满,使用需谨慎。

执行成功,会返回一个id,如需撤销故障注入,执行如下命令

./blade d {id}

(工具去网上搜下下载即可,需要的话可关注我后私聊)

                       

原文链接:https://blog.csdn.net/Mr_wilson_liu/article/details/133787492

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值