系统压力测试助手——stress-ng

embedded/2024/12/25 12:29:44/

1、背景

在系统性能测试和压力测试中,stress-ng 是一个非常强大的工具,广泛应用于对 Linux 系统进行各种硬件和软件方面的负载测试。它能够模拟多种极端负载情况,帮助开发人员和运维人员检查系统在高负载下的表现,以便发现潜在的瓶颈和稳定性问题。

2、stress-ng简介及安装

stress-ng 是一个强大的工具,它通过生成各种计算密集型、内存密集型、I/O 密集型等工作负载,来模拟不同类型的压力测试stress-ng 可以对 CPU、内存、磁盘、网络等硬件资源施加负载,从而测试系统在极端负载下的稳定性和性能。stress-ng 的优势在于它能够产生各种类型的负载,并且能够通过多种方式配置负载的强度、持续时间等。它支持对单个组件(如 CPU、内存、磁盘等)进行压力测试,也支持对系统的多种资源进行综合测试。安装方式如下:

sudo apt update
sudo apt install stress-ng

3、stress-ng的基本使用

stress-ng 通过命令行界面提供了丰富的选项来控制压力测试的类型和强度。最基本的用法是直接启动一个测试任务,如下所示:

stress-ng --cpu 4 --timeout 60s

在这个示例中,stress-ng 会对 4 个 CPU 核心施加压力,并且在 60 秒后自动结束测试。以下是常见的一些选项说明。

3.1、–cpu

该选项指定要使用的 CPU 核心数, 表示核心数。例如,–cpu 4 表示对 4 个 CPU 核心进行压力测试。如果你希望让所有可用的 CPU 核心都参与测试,可以使用 --cpu 不带参数:

stress-ng --cpu 0 --timeout 60s

3.2、–timeout <时间>

–timeout 选项用于指定压力测试的持续时间。你可以指定秒数(如 60s)、分钟数(如 10m)或小时数(如 1h)

stress-ng --cpu 4 --timeout 5m

3.3、–io

该选项指定 I/O 密集型操作的数量。例如,–io 4 会启动 4 个 I/O 操作来增加系统的 I/O 压力。I/O 操作可能包括读写磁盘、网络通信等。

stress-ng --io 4 --timeout 10m

3.4、–vm

–vm 用于测试系统的内存压力, 表示要启动的虚拟内存分配任务的数量。这个选项会导致 stress-ng 不断分配和释放内存,从而消耗内存资源。

stress-ng --vm 2 --vm-bytes 512M --timeout 10m

在这个示例中,stress-ng 启动了 2 个虚拟内存任务,每个任务分配 512MB 的内存,并持续 10 分钟。

3.5、–cpu-method <方法>

–cpu-method 选项允许你选择不同的 CPU 压力测试方法。例如,stress-ng 提供了几种不同的算法,使用这些算法可以模拟不同的 CPU 负载行为。

stress-ng --cpu 4 --cpu-method matrixprod --timeout 10m

常见的 CPU 测试方法包括:

  • default:默认方法
  • matrixprod:矩阵乘法
  • fft:快速傅立叶变换
  • prime:素数计算

3.6、–load

–load 选项用于指定要施加的负载量。例如,–load 100 表示将 CPU 负载保持在 100%(最大负载)。可以结合 --cpu 使用来指定负载的大小。

stress-ng --cpu 4 --load 100 --timeout 10m

3.7、–hdd

–hdd 选项用于测试硬盘压力, 表示要启动的硬盘操作数量。这些操作包括磁盘的读写操作,模拟磁盘繁忙的工作场景。

stress-ng --hdd 2 --timeout 5m

3.8、–network

如果你希望对网络性能施加压力,可以使用 --network 选项, 表示要启动的网络操作数。该选项用于模拟网络负载。

stress-ng --network 2 --timeout 5m

3.9、–cpu 0 --all(综合测试)

stress-ng 的强大之处在于它可以同时施加多种类型的负载。你可以通过 --all 选项同时对所有可用的资源进行压力测试

stress-ng --cpu 0 --io 4 --vm 2 --timeout 10m

4、stress-ng的高级使用

4.1、多线程测试

stress-ng 允许对多线程进行压力测试,可以通过 --cpu-method 配合 --cpu 来控制每个线程的负载。以下是一个多线程的测试示例:

stress-ng --cpu 4 --cpu-method fft --timeout 10m

在这个例子中,stress-ng 会利用 4 个 CPU 核心,执行快速傅立叶变换(FFT)算法,模拟计算密集型负载。

4.2、内存压力测试

内存是系统中非常关键的资源之一,stress-ng 可以通过模拟内存分配和释放来测试内存的负载情况。以下是一个常见的内存压力测试命令:

stress-ng --vm 4 --vm-bytes 1G --timeout 5m

这个命令会启动 4 个虚拟内存任务,每个任务分配 1GB 的内存,持续 5 分钟。这种测试通常用于检查系统在高内存负载下的表现。

4.3、监控测试过程

在进行压力测试时,可以使用 stress-ng 的 --metrics-brief 选项来获取实时的性能指标,帮助你实时监控系统状态:

stress-ng --cpu 4 --timeout 10m --metrics-brief

这个命令会在测试过程中实时输出系统的性能数据,例如 CPU 使用率、内存占用等。


http://www.ppmy.cn/embedded/148616.html

相关文章

完整微服务设计 功能实现

我们将以一个简单的电商系统为例&#xff0c;实现微服务架构&#xff0c;逐步用Java代码详细实现每个模块&#xff0c;并配合注释帮助小白理解。在这个实现中&#xff0c;我们使用以下工具和框架&#xff1a; Spring Boot&#xff1a;用于构建微服务。Spring Cloud&#xff1a…

数据库操作【JDBC HIbernate Mybatis】

JDBC JDBC编程 在java开发中&#xff0c;以前都是通过JDBC&#xff08;Java Data Base Connectivity&#xff09;与数据库打交道的&#xff0c;至少在ORM&#xff08;Object Relational Mapping&#xff09;框架没出现之前是这样&#xff0c;目前常用的ORM框架有JPA、hibernat…

关于 [MenuItem] Hierarchy 右键扩展多选问题

问题&#xff1a;由于开发需要&#xff0c;做了一些右键扩展功能。运行都是正常的。但一旦多选物体。就会出现方法执行N次&#xff08;N选中物体个数次&#xff09;的问题。 [MenuItem("GameObject/SetName", 1)]public static void SetName(){foreach (var gameObje…

macos自动制作dmg安装包脚本

macos下&#xff0c;使用脚本制作dmg安装包脚本&#xff1a; 目录结构&#xff1a; % tree helloworld/ test |-- Applications -> /Applications -- Helloworld.app-- Contents|-- Frameworks| |-- QtCore.framework| | |-- QtCore -> Versions/Current/QtCore|…

C++实战:手撕类似于vector的容器(逆序算法、排序算法等)

文章目录速览 1、使用C泛型编程实现类似于vector的容器类ArrContainer 1、使用C泛型编程实现类似于vector的容器类ArrContainer 直接上代码&#xff1a;可作读者参考 #pragma once #include <exception> template<typename T> class ArrContainer { private:T* m…

我的JAVA-Web基础(2)

1.JDBC 防止sql注入 2.JSP JSP的基本语法 基本语法是 <% %> Java代码 <% %> 输出变量 可以转换成${变量}的EL表达式 <%! %>定义变量 JSP的基本语法包括以下几个主要部分&#xff1a; 1. 表达式&#xff08;Expression&#xff09; 表达式用于将…

leetcode hot100相交链表

160. 相交链表 已解答 简单 相关标签 相关企业 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null # Definition for singly-linked list. # class ListNode(object): # …

机器学习-KMeans聚类

文章目录 KMeans聚类图像分割社交网络分析和推荐系统具体流程 效果和作用 KMeans聚类 图像分割 像素点分为不同的聚类&#xff08;特征值相似度高的就是一堆聚类&#xff09; 社交网络分析和推荐系统 依然是根据特征&#xff0c;不同对象不同的表达特征形式也不一样 具体流…