Memory测试工具-stressapptest详解

✨前言:

stressapptest 是一个用于在各种系统组件上施加压力的工具,特别专注于内存和CPU。通过运行各种模式的访问测试,stressapptest 旨在模拟高负载下的系统行为,并帮助发现潜在的错误,比如硬件故障、过热或系统组件的不稳定性。

🌟下面是stressapptest命令的一些详细说明:

内存和CPU压力: stressapptest 主要用于在内存和处理器上施加压力,检查它们在高负荷情况下的可靠性。它可以通过执行读写操作、内存复制和反转等来达到这个目的。
磁盘I/O 测试: 除了内存和CPU测试之外,stressapptest 还能进行磁盘I/O测试,这通过向指定的设备或文件进行读写操作来完成。
网络测试: stressapptest 可以进行网络测试,这是通过添加指定向特定IP地址或响应网络请求的线程来实现的。
NUMA支持: NUMA系统允许将内存和处理器绑定到特定的NUMA节点上,stressapptest 支持这一点,并利用numactl工具来指定节点。
错误检测: 它包含了检测硬件错误(如ECC错误)的组件,当系统在高压力下运行时,这对于确认系统稳定性至关重要。
日志记录: stressapptest 可以记录测试期间的所有输出到日志文件中,供以后分析和故障排除。
参数调整: stressapptest 提供了许多参数,允许用户自定义测试的各个方面,包括测试持续的时间、使用的内存量、测试工作线程的数量等。

✨Centos下工具安装

🌟先下载源码(需要安装git)

git clone https://github.com/stressapptest/stressapptest.git

🌟编译和安装 stressapptest:

cd stressapptest
./configure
make && make install

编译完成之后会看到这个可执行文件
在这里插入图片描述

🌟stressapptest – help 可以看到常用参数

在这里插入图片描述

🌟参数解释

-M mbytes: 指定测试时要使用的内存大小(以兆字节为单位)。

–reserve-memory: 如果不使用大页面(hugepages),则为系统保留的内存量。

-H mbytes: 要求的最小大页面内存大小(以兆字节为单位)。

-s seconds: 测试运行的时间(秒)。

-m threads: 启动进行内存复制任务的线程数目。

-i threads: 启动进行内存反转任务(即对内存中的数据取反)的线程数目。

-C threads: 启动用于CPU压力测试的线程数目。

–findfiles: 自动查找磁盘I/O操作的位置。

-d device: 添加一个直接写操作磁盘的线程,针对块设备(或文件)‘device’。

-f filename: 添加一个使用临时文件 ‘filename’ 的磁盘线程。

-l logfile: 将输出日志写入 ‘logfile’ 文件。

–no_timestamps: 日志消息中不添加时间戳前缀。

–max_errors n: 在发现 ‘n’ 个错误后早期退出。

-v level: 详细信息级别(0-20),默认是8。

–printsec secs: 指定每隔多少秒打印「剩余秒数」的信息。

-W: 使用更多CPU资源以提高内存复制任务的压力。

-A: 在不兼容的系统上以降级模式运行。

-p pagesize: 内存块的大小(字节)。

–filesize size: 磁盘I/O临时文件的大小。

-n ipaddr: 添加一个网络线程,连接到IP地址为 ‘ipaddr’ 的系统。

–listen: 运行线程来监听并响应网络线程。

–no_errors: 在不检查ECC或其他错误的情况下运行。

–force_errors: 注入假错误来测试错误处理。

–force_errors_like_crazy: 注入大量假错误来测试错误处理。

-F: 不检查每项事务的结果。

–stop_on_errors: 在发现第一个错误后停止测试。

–read-block-size: 用于读取的块大小(用于 -d 参数)。

–write-block-size: 用于写入的块大小(用于 -d 参数),如果未定义,则使用读取的块大小作为写入的块大小。

–segment-size: 分割磁盘的段大小(用于 -d 参数)。

–cache-size: 磁盘缓存的大小(用于 -d 参数)。

–blocks-per-segment: 每次迭代每个段读/写的块数量(用于 -d 参数)。

–read-threshold: 一个块读操作应该花费的最长时间(微秒)(用于 -d 参数)。

–write-threshold: 一个块写操作应该花费的最长时间(微秒)(用于 -d 参数)。

–random-threads: 每个磁盘写线程的随机线程数(用于 -d 参数)。

–destructive: 写入/擦除磁盘分区(用于 -d 参数)。

–monitor_mode: 只进行ECC错误轮询,不产生压力负载。

–cc_test: 进行缓存一致性测试。

–cc_inc_count: 增加缓存线成员的次数。

–cc_line_count: 分配的缓存线大小数据结构的数量,用于缓存一致性线程操作。

🌟工具使用

 stressapptest -s 100 -M 2048 -m 4 -W

👉这条命令的含义是:
-s 100 : 测试持续100秒。

-M 2048: 使用2048MB(即2GB)内存进行测试。
-m 4: 启动4个线程执行测试。
-W: 启用更强的数据完整性验证。

⚠️注意事项
在进行内存压测时,请注意以下几点:
监控系统行为:在压测期间,监控系统的响应,以确保系统不会出现过载导致的严重问题。
确保系统稳定性:在生产环境中,确保您了解运行压测的潜在风险。压测可能会导致系统使用大量资源,从而影响到其他应用或服务。
测试结果:压测结束后,stressapptest会报告测试结果,包括是否有错误发生。仔细检查这些结果以确保内存的稳定性和可靠性。

✨numactl和stressapp的结合:

日常中如果我们要对一些numa的节点,例如cxl的memory的测试的话,
在 NUMA 架构下,我们可以将 CPU 绑定到节点 0,将内存分配绑定到节点 2,然后使用 stressapptest 工具在这种配置下运行压力测试,测试持续 100 秒,使用 2 GB 的内存,并启动 4 个执行内存操作的线程,同时应用更多的 CPU 压力。这可以帮助你观察在特定 NUMA 维度上系统组件(特别是内存和CPU)的性能表现和稳定性。

numactl -N 0 -m 2 stressapptest -s 100 -M 2048 -m 4 -W

在这里插入图片描述

watch -n 1 "numactl -H"

可以使用上面的命令查看numa节点的内存消耗情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/663633.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第二证券股市资讯:重磅信号!五大利好来袭!

商场中,向好的变化正在发生。 5月29日,商场迎来多则重磅利好: 一、IMF上调本年我国经济增加预期至5%; 二、国务院印发《2024-2025年节能降碳举动计划》,光伏、新动力轿车等多个职业迎来方针利好&#xf…

Linux中部署MinIO

Linux中部署MinIO 下载MinIO可执行程序: wget https://dl.min.io/server/minio/release/linux-amd64/minio 添加执行权限: chmod x minio 创建存储目录,例如/data: mkdir -p /data 运行MinIO服务器,需要设置MIN…

Java设计模式 _行为型模式_访问者模式

一、访问者模式 1、访问者模式 访问者模式(Visitor Pattern)是一种行为型模式。它允许在不修改已有类结构的情况下,向类中添加新的操作。访问者模式通过将操作封装在一个访问者对象中,使得可以在不改变各个元素类的前提下&#x…

【信息学奥赛】在一个包含N个整数的数组中找到第一个质数

【信息学奥赛】在一个包含N个整数的数组中找到第一个质数 💖The Begin💖点点关注,收藏不迷路💖 编写一个函数,用于在一个包含N个整数的数组中找到第一个质数,若有则返回函数的地址;否则返回NUL…

fps游戏如何快速定位矩阵

fps游戏如何快速定位矩阵 矩阵特点: 1、第一行第一列值的范围在**-1 ---- 1**之间&#xff0c;如果开镜之后值会变大。 2、第一行第三列的值始终为 0。 3、第一行第四列 的值比较大 &#xff0c; >300或者**<-300**。 根据这三个特点&#xff0c;定位矩阵已经足够了…

Javaweb第九次作业

采用XML映射文件的形式来映射sql语句&#xff1b;采用动态sql语句的方式&#xff0c;实现条件查询的分页。 controller Slf4j RestController RequestMapping("supermarket111") public class SupermarketFenyeController {AutowiredSupermarketFenyeService super…

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现 很多应用都有首页通过下拉刷新&#xff0c;继续下拉进入新的活动会场进入方式。在Flutter中&#xff0c;也可以通过pull_to_refresh来实现控制刷新页&#xff0c;继续下拉进入新的活动会场页面 一、引入pull_to_refres…

svg实现一个圆形以及方形的环形进度条

1. svg实现圆形进度条 效果图&#xff1a; 1. 写个假接口&#xff1a; let res {curLegendList: [{ progress: "87", name: "进度1",color:"#00fe41" },{ progress: "66", name: "进度2" ,color:"orange"},{ p…

HarmonyOS鸿蒙学习笔记(25)相对布局 RelativeContainer详细说明

RelativeContainer 简介 前言核心概念官方实例官方实例改造蓝色方块改造center 属性说明参考资料 前言 RelativeContainer是鸿蒙的相对布局组件&#xff0c;它的布局很灵活&#xff0c;可以很方便的控制各个子UI 组件的相对位置&#xff0c;其布局理念有点类似于android的约束…

OpenPCDet

一.简介 源码链接&#xff1a; https://github.com/open-mmlab/OpenPCDethttps://github.com/open-mmlab/OpenPCDet OpenPCDet 是一套基于PyTorch实现的点云3D目标检测代码库。&#xff08;也是个框架&#xff09; 设计思想&#xff1a;点云数据集&#xff08;KITTI、NuSce…

pytorch学习笔记2

首先如果遇到conda找不到包&#xff0c;pip老是超时的情况建议添加一下镜像源 conda的 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ cond…

【C++ | 类】类和对象

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a; 本文未经允许…

收银系统源码-千呼新零售2.0【智慧供应链】

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看下…

为什么String要被设置为不可变的

为什么设置为不可变的 Java 中将 String 设计为不可变的原因有多个&#xff0c;主要涉及到安全、效率、同步和设计哲学 缓存 在我们的JVM中&#xff0c;单独开辟了一个空间来存储Java字符串&#xff0c;就是字符串池 String s1"1234"; String s2"766"; …

iPhone快捷指令之九宫格照片(三)

说明&#xff1a;这个是经过前两章的摸索&#xff0c;在我搞明白怎么接共享表单里的数据和会使用变量后&#xff0c;制作出来的终极九宫格照片指令&#xff0c;同一个指令在主屏幕里点击可以选择图片做九宫格图片&#xff1b;在相册里选择图片&#xff0c;点击分享按钮&#xf…

Kotlin 2.0 重磅发布! 性能提升!新功能上线!开发者必看!

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

C++ 关系运算

一 关系运算 二 关系运算符 三 关系表达式 四 关系表达式的值-------逻辑值 五 运算的优先级 六 注意事项 七 总结

【ai】pycharm安装github copilot解决chat一直无法初始化loading的问题

github copilot github-copilot 插件安装后:在工具里找到它 底部也有它 侧边可以chat 更新到2014.1.2copilot 也是最新但是chat 就是一直无法loading成功显示一直在初始化copilot中fix :

Python | Leetcode Python题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; class Solution:def getRow(self, rowIndex: int) -> List[int]:row [1, 1]if rowIndex < 1:return row[:rowIndex 1]elif rowIndex > 2:for i in range(rowIndex - 1):row [row[j] row[j 1] for j in range(i 1)]row.inser…

一、大模型推理

https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/README_zh.md 安装 v7.1 https://github.com/hiyouga/LLaMA-Factory/releases/tag/v0.7.1 git clone --depth 1 https://github.com/hiyoug…