当前位置: 首页 > news >正文

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

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 使用率、内存占用等。

相关文章:

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

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

java如何使用poi-tl在word模板里渲染多张图片

1、poi-tl官网地址 http://deepoove.com/poi-tl/ 2、引入poi-tl的依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>3、定义word模板 释义&#xf…...

UE5 UHT GENERATED_BODY() GENERATED_USTRUCT_BODY()

你在 .h 文件中写的 GENERATED_BODY() 宏本身并不是 GetPrivateStaticClass() 函数的声明。 实际上&#xff0c;GENERATED_BODY() 是一个预处理器宏&#xff0c;它会被 Unreal Header Tool (UHT) 处理。 UHT 会读取你的 .h 文件&#xff0c;识别 UCLASS() 和 GENERATED_BODY(…...

内网穿透ubuntu20 docker coplar

sudo apt-get install curl curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash ubuntu-base报错 /sbin/init:No such file or directory解决办法 apt install systemd 命令安装即可 cpolar version 1.3 token认证 登录cpolar官网后台…...

windows C++ TCP客户端

demo有一下功能 1、心跳包 2、断开重连 3、非阻塞 4、接受数据单独线程处理 #include <iostream> #include <winsock2.h> #include <ws2tcpip.h> #include <windows.h> #include <string> #include <process.h> // 用于Windows下的线程相…...

Linux xargs 命令使用教程

简介 xargs 是一个功能强大的 Linux 命令&#xff0c;用于从标准输入构建和执行命令。它接受一个命令的输出&#xff0c;并将其作为参数提供给另一个命令。它在处理大量输入时特别有用&#xff0c;其含义可以解释为&#xff1a;extended arguments&#xff0c;使用 xargs 允许…...

什么是异步处理

什么是异步处理 if ( conditionA && conditionB &#xff09;mqSendService.sendMessageAsync(MqTopicConstant.YOUR_TOPIC, ID,JSONObject.toJSONString(CommonMsg.builder().data(ID).msgType(TypeCode).build()));}sendMessageAsync 发送消息的过程不会阻塞当前的执…...

【解决问题】Java2DRenderer生成图片时中文乱码 Linux安装字体

一&#xff0c;问题 在使用Java2DRenderer框架将html生成图片时&#xff0c;html中的中文文本在图片上显示框框&#xff0c;即出现了中文乱码。在确认使用正确的字符编码utf-8之后&#xff0c;并且确认了修改成unicode也同样乱码的情况下&#xff0c;找到了真正的原因&#xf…...

WPF 依赖属性和附加属性

除了普通的 CLR 属性&#xff0c; WPF 还有一套自己的属性系统。这个系统中的属性称为依赖属性。 1. 依赖属性 为啥叫依赖属性&#xff1f;不叫阿猫阿狗属性&#xff1f; 通常我们定义一个普通 CLR 属性&#xff0c;其实就是获取和设置一个私有字段的值。假设声明了 100 个 …...

leetcode hot100 删除链表的第n个节点

19. 删除链表的倒数第 N 个结点 已解答 中等 相关标签 相关企业 提示 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNon…...

MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)

1.1创建ThreadLocal工具类&#xff08;作为业务逻辑结果存放类&#xff09; package org.springblade.sample.utils;public class QueryContext {private static final ThreadLocal<Long> totalInThreadLocal new ThreadLocal<>();public static void setTotalIn…...

记一MySQL连接速度慢的问题

某一个程序启动速度超级慢&#xff0c;查看日志得知是是在Init DruidDataSource ~ {dataSource-1} inited 这一段耗时最长&#xff0c;这一段是Druid 数据源初始化&#xff0c;进行连接的创建等&#xff0c;使用mysql命令行连接发现连接超级慢&#xff0c;可见是在创建连接的时…...

asp.net core webapi项目中 在生产环境中 进不去swagger

builder.WebHost.UseUrls 是 ASP.NET Core 中配置应用程序监听 URL 或端口的方法。通过使用这个方法&#xff0c;你可以指定应用程序应该在哪些 URL 上运行&#xff0c;以便接收 HTTP 请求。 1.在appsetting.json中 添加 "LaunchUrl": "http://*:327"2.在…...

逆向攻防世界CTF系列63-secret-string-400

逆向攻防世界CTF系列63-secret-string-400 丢入exeinfo&#xff0c;查得zip&#xff0c;解压得四个文件 点进Task&#xff0c;查看源码&#xff1a;Test your luck! Enter valid string and you will know flag 顺理成章地看js 定位check函数 调用了machine的loadcode 跟进…...

Datawhale AI 冬令营学习笔记-零编程基础制作井字棋小游戏

井字棋小游戏是通过豆包MarsCode实现的&#xff0c;没有改动任何的代码&#xff0c;全部是通过对话让AI进行优化和改进。 开始进入正题&#xff1a;进入豆包MarsCode在线IDE&#xff0c;直接点击上方蓝字&#xff0c;或复制链接打开: 豆包 MarsCode - 编程助手。 IDE界面&…...

分布式专题(10)之ShardingSphere分库分表实战指南

一、ShardingSphere产品介绍 Apache ShardingSphere 是一款分布式的数据库生态系统&#xff0c; 可以将任意数据库转换为分布式数据库&#xff0c;并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus&#xff0c;旨在…...

clickhouse解决suspiciously many的异常

1. 问题背景 clickhouse安装在虚拟机上&#xff0c;持续写入日志时&#xff0c;突然关机&#xff0c;然后重启&#xff0c;会出现clickhouse可以正常启动&#xff0c;但是查询sql语句&#xff0c;提示suspiciously many异常&#xff0c;如图所示 2. 问题修复 touch /data/cl…...

计算机的错误计算(一百九十)

摘要 用两个大模型计算cot(1.234). 其中&#xff0c;1.234是以弧度为单位的角度。结果保留10位有效数字。实验表明&#xff0c;两个的计算公式虽然不同&#xff0c;但是都是正确的。然而&#xff0c;数值计算则是有问题的---包括每一个中间运算与结果。 例1. 计算cot(1.234)…...

STM32-笔记12-实现SysTick模拟多线程流水灯

1、前言 正常STM32实现多线程&#xff0c;需要移植一个操作系统FreeRTOS。但是在这里不移植FreeRTOS怎么实现多线程呢&#xff1f;使用SysTick&#xff0c;那么怎么使用SysTick来模拟多线程呢&#xff1f;前面我们知道SysTick就是一个定时器&#xff0c;它不是在主函数的while循…...

牛客网刷题 ——C语言初阶——BC114 小乐乐排电梯

1.牛客网 &#xff1a;BC114 小乐乐排电梯 题目描述&#xff1a; 小乐乐学校教学楼的电梯前排了很多人&#xff0c;他的前面有n个人在等电梯。电梯每次可以乘坐12人&#xff0c;每次上下需要的时间为4分钟&#xff08;上需要2分钟&#xff0c;下需要2分钟&#xff09;。请帮助…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...