linux cpu、memory 、io、网络、文件系统多种类型负荷模拟调测方法工具

目录

一、概述

二、stress介绍和使用

2.1 介绍

2.2 使用

三、stress-ng介绍和使用

3.1 介绍

3.2 使用

3.3 实例

四、sysbench

4.1 介绍

4.2 使用

五、lmbench

5.1 介绍

5.2 使用


 

一、概述

         今天介绍两款cpu负荷调试工具,用来模拟多种类型的负载。主要用来模拟CPU 资源、内存资源、 I/O资源、网络资源、文件系统操作等资源负荷占比。

二、stress介绍和使用

2.1 介绍

     是一个用于测试系统稳定性和性能的工具。它可以模拟系统在高负载下的运行情况,帮助评估系统的表现,调试和排查问题。

2.2 使用

使用 stress 工具时,可以根据需要选择不同的选项和参数来配置其行为。以下是 stress 工具的基本使用方法:

安装 stress 工具:

在 Linux 系统上,可以使用包管理器进行安装。例如,在 Ubuntu 上可以使用以下命令进行安装;在嵌入式yocto环境中可以用bitbake stress来编译,然后传输到设备中运行:

  • sudo apt-get install stress
    
  • 运行 stress 命令:使用以下命令来运行 stress 工具:

    stress [选项] [参数]
    
    • 选项:可以使用不同的选项来配置 stress 的行为。一些常用的选项包括:

      • -c <N>:创建 N 个 worker 进程来占用 CPU 资源。
      • -m <N>:创建 N 个 worker 进程来占用内存资源。
      • -i <N>:创建 N 个 worker 进程来占用 I/O 资源。
      • -d <N>:创建 N 个 worker 进程来占用硬盘 I/O 资源。
      • -t <时间>:运行 stress 的时间长度,单位可以是秒(s)、分钟(m)、小时(h)等。
      • -v:显示详细的输出信息。
      • 其他选项可以通过 man stress 命令查看相关文档。
    • 参数:根据选项的不同,可以提供相应的参数。例如,对于 -c 选项,可以指定要创建的 worker 进程数量。

  • 示例使用,以下是一些示例使用 stress 的命令:

    创建 4 个 worker 进程来占用 CPU 资源,并运行 10 秒钟:
    • stress -c 4 -t 10s
      
    • 创建 2 个 worker 进程来占用内存资源,每个进程占用 1GB 内存,并运行 5 分钟:

      stress -m 2 --vm-bytes 1G -t 5m
      
    • 创建 4 个 worker 进程来占用 I/O 资源,并运行 1 小时:

      stress -i 4 -t 1h
      

 

./stress --help

-?, --help         show this help statement
     --version      show version statement
 -v, --verbose      be verbose
 -q, --quiet        be quiet
 -n, --dry-run      show what would have been done
 -t, --timeout N    timeout after N seconds
     --backoff N    wait factor of N microseconds before work starts
 -c, --cpu N        spawn N workers spinning on sqrt()
 -i, --io N         spawn N workers spinning on sync()
 -m, --vm N         spawn N workers spinning on malloc()/free()
     --vm-bytes B   malloc B bytes per vm worker (default is 256MB)
     --vm-stride B  touch a byte every B bytes (default is 4096)
     --vm-hang N    sleep N secs before free (default none, 0 is inf)
     --vm-keep      redirty memory instead of freeing and reallocating
 -d, --hdd N        spawn N workers spinning on write()/unlink()
     --hdd-bytes B  write B bytes per hdd worker (default is 1GB)

Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s

Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size)

三、stress-ng介绍和使用

3.1 介绍

      stress-ng 是一个功能强大的压力测试工具,它可以用于评估系统的稳定性、资源分配、性能和硬件稳定性。它提供了多种测试模式和选项,可以模拟 CPU、内存、磁盘、网络等各种负载,并且支持自定义测试参数。

34cd6aa7090a4f9dabfa0b7e77a0a300.png

3.2 使用

安装 stress-ng
使用适合你的操作系统的软件包管理器来安装 stress-ng。例如,在 Ubuntu 上可以使用以下命令进行安装:
sudo apt-get install stress-ng

或者在在嵌入式yocto环境中可以用bitbake stress-ng来编译安装(需要库文件libaio.so.1),然后传输到设备中运行;
基本用法:
要运行 stress-ng,你可以使用以下命令:
stress-ng [选项]
常用选项:
--cpu <N>:指定要创建的 CPU worker 进程数量。
--cpu-load <P>:指定每个 CPU worker 进程占用 CPU 资源的百分比。
--vm <N>:指定要创建的虚拟内存 worker 进程数量。
--vm-bytes <B>:指定每个虚拟内存 worker 进程使用的内存大小。
--io <N>:指定要创建的磁盘 I/O worker 进程数量。
--hdd <N>:指定要创建的磁盘访问 worker 进程数量。
--timeout <T>:指定测试运行的时间长度。
--metrics-brief:以简洁的格式输出测试结果指标。

示例用法:
以下是一些示例用法来演示 stress-ng 的不同测试模式:
模拟 CPU 负载:

创建 4 个 CPU worker 进程,每个进程占用 CPU 资源的 50%。
stress-ng --cpu 4 --cpu-load 50


模拟内存负载:

创建 2 个虚拟内存 worker 进程,每个进程使用 1GB 的内存。
stress-ng --vm 2 --vm-bytes 1G


模拟磁盘 I/O 负载:

创建 4 个磁盘 I/O worker 进程。
stress-ng --io 4

 

模拟网络负载:
创建 10 个 TCP 连接并保持连接:
stress-ng --tcp 10
创建 5 个 UDP 流量生成器:
stress-ng --udp 5
创建 2 个网络带宽测试器:
stress-ng --net 2
在网络延迟测试中引入 100 毫秒的延迟:
stress-ng --net-delay 100ms
在网络丢包测试中引入 5% 的丢包:
stress-ng --net-burst 5

 

文件系统操作:

文件创建和删除测试:
--fs-create <N>:创建 N 个文件并保持打开状态。
--fs-delete <N>:删除 N 个已存在的文件。
文件读取和写入测试:
--fs-read <N>:从已存在的文件中进行 N 次读取操作。
--fs-write <N>:向已存在的文件中进行 N 次写入操作。
文件元数据操作测试:
--fs-lookup <N>:进行 N 次文件查找操作。
--fs-attribute <N>:进行 N 次文件属性操作。
文件系统缓存刷新测试:

--fs-sync <N>:进行 N 次文件系统缓存刷新操作。
示例用法:
以下是一些示例用法来演示 stress-ng 的文件系统操作模拟:

创建 100 个文件并保持打开状态:
stress-ng --fs-create 100

删除 50 个已存在的文件:
stress-ng --fs-delete 50

从已存在的文件中进行 1000 次读取操作:
stress-ng --fs-read 1000

向已存在的文件中进行 500 次写入操作:
stress-ng --fs-write 500

进行 200 次文件查找操作:
stress-ng --fs-lookup 200

进行 100 次文件属性操作:
stress-ng --fs-attribute 100

进行 50 次文件系统缓存刷新操作:
stress-ng --fs-sync 50

 

使用 stress-ng --help 命令查看更多详细的说明。
 

3.3 实例

 ./ress-ng --cpu 4 --cpu-load 20
stress-ng: info:  [468] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info:  [468] dispatching hogs: 4 cpu
stress-ng: info:  [468] cache allocate: using built-in defaults as unable to determine cache details
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND469 root      20   0   13388   6620   1964 R  40.0   1.0   0:02.97 stress-ng+470 root      20   0   13388   6616   1964 R  39.0   1.0   0:03.02 stress-ng+472 root      20   0   13388   6604   1948 R  37.1   1.0   0:03.20 stress-ng+471 root      20   0   13388   6620   1964 R  36.2   1.0   0:02.89 stress-ng+

四、sysbench

4.1 介绍

     是一个多功能的基准测试工具,可用于测试 CPU、内存、文件 I/O、数据库性能等。

4.2 使用

以下是 Sysbench 的一些常见用法:

CPU 压力测试:

sysbench cpu --threads=<线程数> run
这将使用指定数量的线程对 CPU 进行压力测试。

内存压力测试:

sysbench memory --threads=<线程数> --memory-block-size=<块大小> --memory-total-size=<总大小> run
这将模拟指定大小的内存块在指定数量的线程间进行读写操作。

文件 I/O 压力测试:

sysbench fileio --file-total-size=<总大小> --file-test-mode=<测试模式> prepare
sysbench fileio --file-total-size=<总大小> --file-test-mode=<测试模式> --file-num=<文件数> --threads=<线程数> run
这将在准备阶段创建指定大小的文件,并在运行阶段模拟指定数量的线程对文件进行读写操作。

数据库性能测试:

sysbench oltp_<数据库引擎> --db-driver=<数据库驱动> --mysql-host=<主机> --mysql-port=<端口> --mysql-user=<用户名> --mysql-password=<密码> --mysql-db=<数据库名> --tables=<表数量> --table-size=<表大小> prepare
sysbench oltp_<数据库引擎> --db-driver=<数据库驱动> --mysql-host=<主机> --mysql-port=<端口> --mysql-user=<用户名> --mysql-password=<密码> --mysql-db=<数据库名> --tables=<表数量> --table-size=<表大小> --threads=<线程数> --time=<持续时间> run
这将在准备阶段创建指定数量和大小的数据库表,并在运行阶段模拟指定数量的线程对数据库进行读写操作

五、lmbench

5.1 介绍

      Lmbench 是一个用于测量系统性能和硬件特性的工具集,它包含多个小型的基准测试程序。

5.2 使用

以下是 Lmbench 的一些常见用法:

测量内存访问延迟:

lmbench_lat_mem_rd
这将测量内存读取的延迟。

测量缓存访问延迟:

lmbench_lat_ctx
这将测量缓存访问的延迟。

测量进程创建和上下文切换时间:

lmbench_lat_proc
这将测量进程创建和上下文切换的时间。

测量文件 I/O 延迟和带宽:

lmbench_lat_fs
这将测量文件 I/O 的延迟和带宽。

测量网络延迟和带宽:

lmbench_lat_net
这将测量网络延迟和带宽。

更多调试方法工具,待收集和分享。...

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/233327.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逆向一个Go程序

前奏 事先声明&#xff0c;自导自演&#xff0c;纯属为了演示基本的逆向思维 用Go写一段模拟登录的代码&#xff1a; package mainimport ("fmt" )func main() {pass : ""fmt.Print("input password:")fmt.Scan(&pass)if pass "hel…

type-c接口PD诱骗

小家电Type-C接口PD诱骗&#xff1a;未来充电的便捷与安全 随着科技的不断发展&#xff0c;Type-C接口已经成为了许多小家电产品的标配。而PD&#xff08;Power Delivery&#xff09;诱骗技术&#xff0c;作为一种新兴的充电技术&#xff0c;更是为小家电产品的充电带来了前所…

Python从入门到网络爬虫(面向对象详解)

前言 Python从设计之初就已经是一门面向对象的语言&#xff0c;正因为如此&#xff0c;在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言&#xff0c;那你可能需要先了解一些面向对象语言的一些基本…

MYSQL 索引使用规则

索引失效 最左前缀法则 where之后写的顺序不重要&#xff0c;存在就可以 范围查询后面的索引查询失效&#xff08;比如>&#xff09;,但是>或者<是不会失效的 不要在索引列上进行运算操作&#xff0c;否则索引失效。 字符串类型字段不加引号索引会失效 尾部模糊匹配…

nodejs 不用 electron 实现打开文件资源管理器并选择文件

前言 最近在开发一些小脚本&#xff0c;用 nodejs 实现。其中很多功能需要选择一个/多个文件&#xff0c;或者是选择一个文件夹。 最初的实现是手动输入一个目录&#xff08;这个只是一个普通的终端文本输入&#xff0c;所以按下 tab 没有路径提示&#xff09;&#xff0c;非…

Python组装jmx并调用JMeter执行压测

JMeter可以通过os命令调用Python脚本&#xff0c;Python同样可以通过系统命令调用JMeter执行压测 Python调用JMeter 首先要安装JMeter&#xff0c;官方下载地址 解压并配置配置环境路径或建立软连&#xff0c;使得在命令输入jmeter便可以执行&#xff0c;如 Copyunzip apach…

卫星互联网与MEC融合方案研究

卫星互联网与MEC融合方案研究 作者&#xff1a;温特、王立中、司鹏、颜明明、马恬、郭伊蒙 中国卫通集团股份有限公司 本文首发&#xff1a;第十九届卫星通信学术年会 摘 要&#xff1a;在卫星互联网中引入移动边缘计算(MEC)技术可有效提高用户体验质量&#xff0c;降低运营成…

Speech | 人工智能中语音质量评估方法详解及代码

本文主要讲解人工智能中语音合成&#xff0c;语音转换&#xff0c;语音克隆等生成语音的一些质量评估方法~ 目录 1.语音质量评测方法 主观评价方法 1.1.MOS 1.2.CMOS 1.3.ABX Test 1.4.MUSHRA&#xff08;MUltiple Stimuli with Hidden Reference and Anchor&#xff0…

Docker一键极速安装Nacos,并配置数据库!

1 部署方式 1.1 DockerHub javaedgeJavaEdgedeMac-mini ~ % docker run --name nacos \ -e MODEstandalone \ -e JVM_XMS128m \ -e JVM_XMX128m \ -e JVM_XMN64m \ -e JVM_MS64m \ -e JVM_MMS64m \ -p 8848:8848 \ -d nacos/nacos-server:v2.2.3 a624c64a1a25ad2d15908a67316d…

AI实景无人直播项目:开启自动直播新时代,一部手机即可实现增长

在当今社会&#xff0c;直播已经成为了人们日常生活中不可或缺的一部分。无论是商家推广产品、明星互动粉丝还是普通人分享生活&#xff0c;直播已经渗透到了各行各业。然而&#xff0c;传统直播方式存在着一些不足之处&#xff0c;如需现场主持人操作、高昂的费用等。近年来&a…

密码学(二)

文章目录 前言一、Certificate Authorities二、Key Agreement Protocols 前言 本文来自 Intel SGX Explained 请参考&#xff1a;密码学&#xff08;一&#xff09; 一、Certificate Authorities 非对称密钥密码学中的公钥和私钥假设每个参与方都拥有其他参与方的正确公钥。…

【管理篇 / 恢复】❀ 07. macOS下用命令刷新固件 ❀ FortiGate 防火墙

【简介】随着苹果电脑的普及&#xff0c;很多管理员都会通过苹果电脑对飞塔防火墙进行管理。当防火墙需要命令状态下刷新固件时&#xff0c;在macOS下用命令刷新固件&#xff0c;将会是一个小小的挑战。 首先是硬件的连接&#xff0c;USB配置线的USB一头&#xff0c;接入MAC的U…

抖音在线查权重系统源码,附带查询接口

抖音权重在线查询只需输入抖音主页链接&#xff0c;即可查询作品情况。 搭建教程 上传源码并解压 修改数据库“bygoukai.sql” 修改“config.php” 如需修改水印请修改第40行 如需修改限制次数&#xff0c;请修改第156行 访问域名user.php即可查看访问用户&#xff0c;停…

走近阿里巴巴 揭秘阿里文化之旅

一、【项目背景】 看过去&#xff1a;从18人到近3万人&#xff0c;从50万起家&#xff0c;到市值接近5000亿美元&#xff0c;20年间&#xff0c;阿里步步为营&#xff0c;缔造互联网神话。 看发展&#xff1a;阿里将B系纳入新一轮的核心战略&#xff0c;志在打造世界第五大经…

1389 蓝桥杯 二分查找数组元素 简单

1389 蓝桥杯 二分查找数组元素 简单 //C风格解法1&#xff0c;lower_bound(),通过率100% //利用二分查找的方法在有序的数组中查找&#xff0c;左闭右开 #include <bits/stdc.h> using namespace std;int main(){int data[200];for(int i 0 ; i < 200 ; i) data[i] …

Linux基础知识点-(七-线程)

目录 一、线程和进程 1.1 线程的基本概念 1.2 线程的优缺点 二、创建线程 2.1 pthread_create() - 创建线程函数 三、线程属性 3.1 pthread_attr_t类型 3.2 phread_t类型 四、线程退出 4.1 pthread_exit() 4.2 pthread_join() 4.3 pthread_detach() 一、线程和进…

PyTorch|构建自己的卷积神经网络--池化操作

在卷积神经网络中&#xff0c;一般在卷积层后&#xff0c;我们往往进行池化操作。实现池化操作很简单&#xff0c;pytorch中早已有相应的实现。 nn.MaxPool2d(kernel_size ,stride ) 这种池化叫做最大池化。 最大池化原理很简单&#xff0c;就是一个filter以一定的stride在原…

数据库内核那些事|细说PolarDB优化器查询变换:IN-List变换

导读 数据库的查询优化器是整个系统的"大脑"&#xff0c;一条SQL语句执行是否高效在不同的优化决策下可能会产生几个数量级的性能差异&#xff0c;因此优化器也是数据库系统中最为核心的组件和竞争力之一。阿里云瑶池旗下的云原生数据库PolarDB MySQL版作为领先的云…

golang生成12个月

// GetMonthTimeCycle 获取月份周期 // 参数 year 年份 func GetMonthTimeCycle(year int) (*[]TimeCycle, error) {var yearstart time.Timevar start time.Timevar end time.Timevar no intvar name stringvar loc, err time.LoadLocation("Local")if err ! nil {…