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 个 worker 进程来占用 CPU 资源。
      • -m :创建 N 个 worker 进程来占用内存资源。
      • -i :创建 N 个 worker 进程来占用 I/O 资源。
      • -d :创建 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、内存、磁盘、网络等各种负载,并且支持自定义测试参数。

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

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 :指定要创建的 CPU worker 进程数量。
--cpu-load

:指定每个 CPU worker 进程占用 CPU 资源的百分比。
--vm :指定要创建的虚拟内存 worker 进程数量。
--vm-bytes :指定每个虚拟内存 worker 进程使用的内存大小。
--io :指定要创建的磁盘 I/O worker 进程数量。
--hdd :指定要创建的磁盘访问 worker 进程数量。
--timeout :指定测试运行的时间长度。
--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 个文件并保持打开状态。
--fs-delete :删除 N 个已存在的文件。
文件读取和写入测试:
--fs-read :从已存在的文件中进行 N 次读取操作。
--fs-write :向已存在的文件中进行 N 次写入操作。
文件元数据操作测试:
--fs-lookup :进行 N 次文件查找操作。
--fs-attribute :进行 N 次文件属性操作。
文件系统缓存刷新测试:

--fs-sync :进行 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+ COMMAND
  469 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
这将测量网络延迟和带宽。

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

 

你可能感兴趣的:(Linux,cpu优化,linux,运维,服务器,cpu负荷调试,内存负荷调试,io负荷调试,网络负荷调试)