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

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模板 释义…...
UE5 UHT GENERATED_BODY() GENERATED_USTRUCT_BODY()
你在 .h 文件中写的 GENERATED_BODY() 宏本身并不是 GetPrivateStaticClass() 函数的声明。 实际上,GENERATED_BODY() 是一个预处理器宏,它会被 Unreal Header Tool (UHT) 处理。 UHT 会读取你的 .h 文件,识别 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 命令,用于从标准输入构建和执行命令。它接受一个命令的输出,并将其作为参数提供给另一个命令。它在处理大量输入时特别有用,其含义可以解释为:extended arguments,使用 xargs 允许…...
什么是异步处理
什么是异步处理 if ( conditionA && conditionB )mqSendService.sendMessageAsync(MqTopicConstant.YOUR_TOPIC, ID,JSONObject.toJSONString(CommonMsg.builder().data(ID).msgType(TypeCode).build()));}sendMessageAsync 发送消息的过程不会阻塞当前的执…...

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

WPF 依赖属性和附加属性
除了普通的 CLR 属性, WPF 还有一套自己的属性系统。这个系统中的属性称为依赖属性。 1. 依赖属性 为啥叫依赖属性?不叫阿猫阿狗属性? 通常我们定义一个普通 CLR 属性,其实就是获取和设置一个私有字段的值。假设声明了 100 个 …...
leetcode hot100 删除链表的第n个节点
19. 删除链表的倒数第 N 个结点 已解答 中等 相关标签 相关企业 提示 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNon…...
MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
1.1创建ThreadLocal工具类(作为业务逻辑结果存放类) package org.springblade.sample.utils;public class QueryContext {private static final ThreadLocal<Long> totalInThreadLocal new ThreadLocal<>();public static void setTotalIn…...
记一MySQL连接速度慢的问题
某一个程序启动速度超级慢,查看日志得知是是在Init DruidDataSource ~ {dataSource-1} inited 这一段耗时最长,这一段是Druid 数据源初始化,进行连接的创建等,使用mysql命令行连接发现连接超级慢,可见是在创建连接的时…...
asp.net core webapi项目中 在生产环境中 进不去swagger
builder.WebHost.UseUrls 是 ASP.NET Core 中配置应用程序监听 URL 或端口的方法。通过使用这个方法,你可以指定应用程序应该在哪些 URL 上运行,以便接收 HTTP 请求。 1.在appsetting.json中 添加 "LaunchUrl": "http://*:327"2.在…...

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

Datawhale AI 冬令营学习笔记-零编程基础制作井字棋小游戏
井字棋小游戏是通过豆包MarsCode实现的,没有改动任何的代码,全部是通过对话让AI进行优化和改进。 开始进入正题:进入豆包MarsCode在线IDE,直接点击上方蓝字,或复制链接打开: 豆包 MarsCode - 编程助手。 IDE界面&…...

分布式专题(10)之ShardingSphere分库分表实战指南
一、ShardingSphere产品介绍 Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus,旨在…...

clickhouse解决suspiciously many的异常
1. 问题背景 clickhouse安装在虚拟机上,持续写入日志时,突然关机,然后重启,会出现clickhouse可以正常启动,但是查询sql语句,提示suspiciously many异常,如图所示 2. 问题修复 touch /data/cl…...
计算机的错误计算(一百九十)
摘要 用两个大模型计算cot(1.234). 其中,1.234是以弧度为单位的角度。结果保留10位有效数字。实验表明,两个的计算公式虽然不同,但是都是正确的。然而,数值计算则是有问题的---包括每一个中间运算与结果。 例1. 计算cot(1.234)…...

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

牛客网刷题 ——C语言初阶——BC114 小乐乐排电梯
1.牛客网 :BC114 小乐乐排电梯 题目描述: 小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。请帮助…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) 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的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
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 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...