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满载情况教程与范例的更多相关文章

  1. 性能测试分析过程(三)linux下查看最消耗CPU/内存的进程

    linux下查看最消耗CPU  内存的进程 1.CPU占用最多的前10个进程:  ps auxw|head -1;ps auxw|sort -rn -k3|head -10  2.内存消耗最多的前10 ...

  2. AIX/Linux/HP-UX查看CPU/内存/磁盘/存储命令

    1.1    硬件环境验证方式 硬件环境主要包括CPU.内存.磁盘/存储.网络设备(如F5等).系统特有设备(如密押设备等)等,其中网络设备和系统特有设备由网络管理员或项目组提供为准,本节主要关注CP ...

  3. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  4. Linux 下用 superpi 测试 CPU 性能

  5. linux系统CPU内存磁盘监控发送邮件脚本

    #!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/ ...

  6. 监控Linux系统节点和服务CPU内存性能

    1.获取信息 #!/bin/bash #描述: # 把top信息输入到一个文件内部 #作者:孤舟点点 #版本:1.0 #创建时间:-- :: PATH=/bin:/sbin:/usr/bin:/usr ...

  7. Shell采集系统cpu 内存 磁盘 网络信息

    cpu信息采集 cpu使用率 采集算法 通过/proc/stat文件采集并计算CPU总使用率或者单个核使用率.以cpu0为例,算法如下: 1. cat /proc/stat | grep ‘cpu0’ ...

  8. python监控CPU/内存/磁盘,超过指定百分比,发送邮件

    #!/usr/bin/python #coding:utf-8 #导入psutil模块 import psutil import yagmail def mail(subject,contents): ...

  9. 获取并检查系统负载\CPU\内存\磁盘\网络

    安装依赖 需要net-tools.namp! CentOS:yum -y install net-tools nmap Ubuntu:apt-get update && apt-get ...

  10. 性能优化之基础资源cpu&内存(JVM)

    本章主要介绍计算机的一些基础资源以及操作系统处理后的一些基础资源. 主要包括 cpu 内存 磁盘 网络 线程 本章会介绍这些资源的一些原理,介绍如何查看资源的数量,使用情况,对性能和整体计算机执行的一 ...

随机推荐

  1. 云小课 | 一分钟了解AppCube中的应用

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:应用魔方(AppC ...

  2. 详解MRS CDL整体架构设计

    摘要:MRS CDL是FusionInsight MRS推出的一种数据实时同步服务,旨在将传统OLTP数据库中的事件信息捕捉并实时推送到大数据产品中去,本文档会详细为大家介绍CDL的整体架构以及关键技 ...

  3. 如何使用Tomcat实现WebSocket即时通讯服务服务端

    摘要:HTTP协议是"请求-响应"模式,浏览器必须先发请求给服务器,服务器才会响应该请求.即服务器不会主动发送数据给浏览器. 本文分享自华为云社区<Tomcat支持WebSo ...

  4. AI贺新年,开发者的虎年这样过才有意思

    摘要:祝所有的开发者们新春快乐,万事如意迎新年,如虎添翼旺全年! 普通人拜年,发一个祝福微信.程序员拜年,运行一串代码,制作独一无二的拜年短视频. 普通人送祝福,新年快乐.程序员送祝福,信手捏来一首拜 ...

  5. 浏览器史话中chrome霸主地位的奠定与国产浏览器的割据混战

    作为前端老鸟,从IE的6.7.8开始做前端,各种兼容性折磨死人.js还好有了jQuery.chrome出来后,真是救苦救难,解救程序员的于水火.但是可恶的boss还是要求兼容ie6,7.感谢淘宝团队的 ...

  6. 火山引擎DataTester:企业如何使用A/B实验优化商业化能力

      商业化是企业将研发成果,如新产品.新技术.新服务等,转变成可盈利的商业化产品:整个流程中包含了研发.推广.服务,全程通过精细化管理运营.商业化的本质是流量的变现,而对企业而言,商业化链路的打磨至关 ...

  7. Solon 问答: 怎么切换环境配置?

    #应用配置文件活动选择(可用于切换不同的环境配置) solon.env: dev #例: # app.yml #应用主配置(必然会加载) # app-dev.yml #应用dev环境配置 # app- ...

  8. Word 文档怎么保留修改前和修改后的内容--审阅 修订

    如果启用了修订内容后,对文档的内容进行了相关的修改后.则文档可以同时显示被修改的内容和修改后的内容.下面,本文通过举例具体介绍如何使用修订功能. 点击选中文档内容,然后依次点击[审阅]-[修订]-[修 ...

  9. Linux 创建新用户

    添加用户组[root@VipSoft ~]#groupadd admin 添加用户[root@VipSoft ~]#useradd jimmy -m -d /home/jimmy -g admin 修 ...

  10. 转载--阿里云ECS自建K8S集群

    一.概述(官方建议) 集群规划 目前在创建Kubernetes集群时,存在着使用很多小规格ECS的现象,这样做有以下弊端: 小规格Woker ECS的网络资源受限. 如果一个容器基本可以占用一个小规格 ...