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

目录

一、概述

二、stress介绍和使用

[2.1 介绍](#2.1 介绍)

[2.2 使用](#2.2 使用)

三、stress-ng介绍和使用

[3.1 介绍](#3.1 介绍)

[3.2 使用](#3.2 使用)

[3.3 实例](#3.3 实例)

四、sysbench

[4.1 介绍](#4.1 介绍)

[4.2 使用](#4.2 使用)

五、lmbench

[5.1 介绍](#5.1 介绍)

[5.2 使用](#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、内存、磁盘、网络等各种负载,并且支持自定义测试参数。

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+ 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

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

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

相关推荐
o(╥﹏╥)5 分钟前
在 Ubuntu 上安装 VS Code
linux·运维·vscode·ubuntu·vs
AI慧聚堂29 分钟前
自动化 + 人工智能:投标行业的未来是什么样的?
运维·人工智能·自动化
不爱学英文的码字机器31 分钟前
[Linux] Shell 命令及运行原理
linux·运维·服务器
cdut_suye43 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_433618441 小时前
shell 编程(三)
linux·运维·服务器
苹果醋31 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
两张不够花1 小时前
Jenkins 持续集成部署
运维·jenkins
Tlzns1 小时前
Linux网络——UDP的运用
linux·网络·udp
码农土豆1 小时前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen1 小时前
天融信Linux系统安全问题
linux·运维·系统安全