目录
[2.1 介绍](#2.1 介绍)
[2.2 使用](#2.2 使用)
[3.1 介绍](#3.1 介绍)
[3.2 使用](#3.2 使用)
[3.3 实例](#3.3 实例)
[4.1 介绍](#4.1 介绍)
[4.2 使用](#4.2 使用)
[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
这将测量网络延迟和带宽。
更多调试方法工具,待收集和分享。...