[转帖]Linux使用Stress-ng测试CPU、内存、磁盘I/O满载情况教程与范例

linux,使用,stress,ng,测试,cpu,内存,磁盘,满载,情况,教程,范例 · 浏览次数 : 0

小编点评

**使用 stress-ng 负载测试工具** **步骤:** 1. **安装 stress-ng**: ```bash sudo apt install stress-ng ``` 2. **启动 stress-ng**: ```bash stress-ng ``` 3. **选择测试类型**: * **CPU 负载**:使用 `--cpu` 参数指定 CPU 数目。 * **内存负载**:使用 `--vm` 参数指定可用内存数量。 * **矩阵运算负载**:使用 `--matrix` 参数指定矩阵大小。 * **I/O 负载**:使用 `--iomix` 参数指定 I/O 类型和比例。 4. **设置测试参数**: * **时间**:使用 `--timeout` 参数指定测试时间。 * **并发数**:使用 `--num_threads` 参数指定并发运行线程数量。 **示例配置:** ``` stress-ng --cpu 2 --timeout 30s --num_threads 4 ``` 该配置将创建 2 个 CPU 的负载,每台 CPU 运行 30 秒,并使用 4 个线程。 **注意:** * 使用 stress-ng 之前,请确保您的系统已满足性能要求。 * 不要在负载测试过程中停止其他应用程序。 * 使用 stress-ng 时,请确保您具有必要的权限。

正文

https://www.xiaoyuanjiu.com/108301.html

 

介绍如何在 Linux 系统上使用 stress-ng 负载测试工具,产生 CPU、内存等资源满载的状况。

stress-ng

stress-ng 与旧的 stress 都可以用来产生系统负载,但新的 stress-ng 功能较丰富,所以这里我们只介绍 stress-ng 的使用方式。

stress-ng 支持多种产生系统负载的方式,包含 CPU 的浮点运算、整数运算、位元运算与控制流程等,可以用来测试系统在高负载的状况下的稳定性。

stress-ng 必须小心使用,某些测试可能会造成设计不良的硬件过热,另外也可能让系统过载而难以停止负载测试。

安装 stress-ng

若在 Ubuntu Linux 中可以使用 apt 来安装 stress-ng 套件:

# 安装 stress-ng 套件
sudo apt install stress-ng

Stressors

stress-ng 会使用各种不同的 stressors 来产生不同性质的系统负载,stressor 的种类非常多,包含:cpucpu-cachedeviceiointerruptfilesystemmemorynetworkospipescheduler 与 vm

我们可以使用以下指令查找 stress-ng 所有支持的 stressors:

# 查找支持的 stressors
stress-ng --stressors
af-alg affinity aio aiol apparmor atomic bigheap bind-mount branch brk bsearch cache cap chdir chmod chown chroot clock clone context copy-file cpu cpu-online crypt cyclic daemon dccp dentry dev dir dirdeep dnotify dup dynlib enosys epoll eventfd exec fallocate fanotify fault fcntl fiemap fifo file-ioctl filename flock fork fp-error fstat full funccall futex get getdent getrandom handle hdd heapsort hrtimers hsearch icache icmp-flood inode-flags inotify io iomix ioport ioprio itimer kcmp key kill klog lease link locka lockbus lockf lockofd longjmp lsearch madvise malloc matrix mcontend membarrier memcpy memfd memrate memthrash mergesort mincore mknod mlock mmap mmapaddr mmapfixed mmapfork mmapmany mq mremap msg msync netdev netlink-proc nice nop null numa oom-pipe opcode open personality physpage pipe poll procfs pthread ptrace pty qsort quota radixsort rawdev rdrand readahead remap rename resources revio rlimit rmap rtc schedpolicy sctp seal seccomp seek sem sem-sysv sendfile shm shm-sysv sigfd sigfpe sigio sigpending sigpipe sigq sigsegv sigsuspend sleep sock sockdiag sockfd sockpair softlockup spawn splice stack stackmmap str stream swap switch symlink sync-file sysinfo sysfs tee timer timerfd tlb-shootdown tmpfs tree tsc tsearch udp udp-flood unshare urandom userfaultfd utime vecmath vfork vforkmany vm vm-addr vm-rw vm-splice wait wcs xattr yield zero zlib zombie

若要查找指定类别之下有哪些 stressors 可用,可以使用 --class 参数指定类别名称,再加上一个问号(?),例如若要查找 vm 类别下的 stressors,就可以执行:

# 查找 vm 类别的 stressors
stress-ng --class vm?
class 'vm' stressors: bigheap brk madvise malloc mlock mmap mmapaddr mmapfixed mmapfork mmapmany mremap msync physpage shm shm-sysv stack stackmmap swap tmpfs userfaultfd vm vm-addr vm-rw vm-splice

关于这些 stressors 的详细用法与说明,可以参考 stress-ng 的在线手册:

# 查找 stress-ng 在线手册
man stress-ng

用户可以依据需求,组合各种 stressors 创造出适合的负载环境,以下是一些常见的组合范例。

测试 CPU 满载状况

若要产生 2 个 CPU 内核满载的状况,可以使用 2 个 CPU stressors:

# 产生 CPU 满载状况(2 CPU stressors、持续 30 秒)
stress-ng --cpu 2 --timeout 30s
stress-ng: info:  [31788] dispatching hogs: 2 cpu
stress-ng: info:  [31788] successful run completed in 30.02s

事实上 CPU 的 stressors 种类非常多,单纯指定 --cpu 参数的话,会轮流使用各种 CPU 类型的 stressors,若要明确测试指定的 CPU 负载类型,可以指定要使用的 stressor。

测试 zlib 压缩、解压缩

使用 2 个 zlib stressors 压缩与解压缩随机数据,进行 CPU 负载测试:

# 以 2 个 zlib stressors 压缩、解压缩数据,产生 CPU 满载状况
stress-ng --zlib 2 --timeout 30s

使用 zlib 压缩与解压缩数据时,除了 CPU 之外,同时也会产生缓存(cache)与内存(memory)的负载。

测试矩阵运算

使用 2 个 matrix stressors 产生各种矩阵运算,进行 CPU 负载测试:

# 以两个 matrix stressors 进行矩阵运算,产生 CPU 满载状况
stress-ng --matrix 2 --timeout 30s

内存测试

以 8 个 vm stressors 使用 80% 的可用内存(1 个 stressor 使用 10% 可用内存)执行内存测试,持续 1 小时:

# 使用 8 个 vm stressors 执行内存测试
# 总共使用 80% 的可用内存,持续 1 小时
stress-ng --vm 8 --vm-bytes 80% -t 1h

I/O 测试

以 2 个 iomix stressors 使用 10% 磁盘空间(1 个 stressor 使用 5% 磁盘空间)执行 I/O 测试,持续 10 分钟:

# 使用 2 个 iomix stressors 执行混合 I/O,
# 使用 10% 磁盘空间,持续 10 分钟
stress-ng --iomix 2 --iomix-bytes 10% -t 10m

轮流执行 8 个 io 类型的 stressors,每个类型持续 5 分钟,并产生执行时间报表:

# 轮流执行 8 个 io 类型的 stressors,每个类型持续 5 分钟
# 并产生执行时间报表
stress-ng --sequential 8 --class io -t 5m --times

混合多种 Stressors

我们也可以混合不同的 stressors 来使用,例如一个 zlib 与一个 matrix

# 以 1 个 zlib 与 1 个 matrix stressors
stress-ng --zlib 1 --matrix 1 --timeout 30s

FFT 计算测试

以 2 个 FFT 的 stressors,执行 5000 个 bogo 运算,产出报表:

# 以 2 个 FFT 的 stressors,执行 5000 个 bogo 运算,产出报表
stress-ng --cpu 2 --cpu-method fft --cpu-ops 5000 --metrics-brief

混合测试

使用 4 个各种类的 stressors 持续 5 分钟:

# 使用 4 个各种类的 stressors 持续 5 分钟
stress-ng --all 4 --timeout 5m

每一种 stressors 轮流执行,每个持续 10 分钟:

# 每一种 stressors 轮流执行,每个持续 10 分钟
stress-ng --sequential 0 -t 10m

在所有的 CPU 上执行各种 CPU stressors,持续 1 小时:

# 在所有的 CPU 上执行各种 stressors,持续 1 小时
stress-ng --cpu 0 --cpu-method all -t 1h

与[转帖]Linux使用Stress-ng测试CPU、内存、磁盘I/O满载情况教程与范例相似的内容:

[转帖]Linux使用Stress-ng测试CPU、内存、磁盘I/O满载情况教程与范例

https://www.xiaoyuanjiu.com/108301.html 介绍如何在 Linux 系统上使用 stress-ng 负载测试工具,产生 CPU、内存等资源满载的状况。 stress-ng stress-ng 与旧的 stress 都可以用来产生系统负载,但新的 stress-ng

[转帖]常用的 Stress / Performance 工具

https://benjr.tw/532 雖然自己是從事 QA(Quality Assurance) 相關測試工作,但對於這些工具的使用還是有很多問號,下面列出 Linux 下我常用的 壓力(Stress) 與 的效能 (Performance) 測試軟體. 壓力測試 (Stress) 要如何在 L

[转帖]linux中使用script和scriptreplay进行命令操作录制与重放

https://cloud.tencent.com/developer/article/2015118 scriptreplay 用于在终端中,根据 script 命令记录的终端数据文件和时间日志文件,重现当时用户的所有操作和命令的输出信息。简而言之,重现播放当时终端会话发生的一切信息,而不是重新运

[转帖]Linux下使用IPMItool重启IPMI的方法

https://bbs.qunyingkeji.com/1690/ 1.安装IPMItool工具 # yum install ipmitool 2.检测IPMI组件 # dmidecode |sed -n '/IPMI/,+5p'出现以下信息,说明支持IPMIIPMI Device Informat

[转帖]Linux下使用 ipset 封大量IP及ipset参数说明

https://www.cnblogs.com/xiaofeng666/p/10952627.html Linux使用iptables封IP,是常用的应对网络攻击的方法,但要封禁成千上万个IP,如果添加成千上万条规则,对机器性能影响较大,使用ipset能解决这个问题。 iptables 包含几个表,

[转帖]Linux make: g++: Command not found

https://www.cnblogs.com/kerrycode/p/4748606.html Linux使用make命令时遇到“make: g++: Command not found”,这个主要是没有安装gcc-c++.x86_64,如下所示 [root@localhost nethogs]#

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以

[转帖]Linux环境使用apt-get安装telnet、curl、ifconfig、vim、ping等工具

https://www.cnblogs.com/east7/p/15834866.html 当在Linux服务器执行Telnet命令时,如果提示command not found: telnet,说明服务器上并未安装Telnet命令,需要安装此命令。下面介绍在linux服务器如何安装telnet、c

[转帖]Linux操作系统使用RPMBUILD命令打包RPM的详细步骤

https://www.cnblogs.com/zhangxinglong/p/11904922.html 首先,我们需要了解一些预备知识,在旧版本的CentOS中,rpmbuild工具默认的工作路径是/usr/src/redhat,因为权限原因,一般用户身份不能制作rpm软件包,只能切换到root

[转帖]Linux下无限期使用Navicat16

https://www.zhoubotong.site/post/79.html linux 下的数据库图形化工具比较好用的有dbeaver完全免费,相比navicat,我还是习惯了使用navicat操作数据库。 截止目前最新版是navicat16-mysql-cs.AppImage,linux网上