深入理解stressapptest

文章目录

  • 一、概述
  • 二、安装
  • 2.1、源码编译安装
  • 2.2、命令行安装
  • 2.3、安装确认
  • 三、重要参数详解
    • 3.1、查询支持的参数
    • 3.2、参数说明
  • 四、实例
    • 4.1、随机测试(默认模式)
    • 4.2、循环测试
    • 4.2、全内存测试


  团队博客: 汽车电子社区


一、概述

  stressapptest是一款免费的开源软件,支持用于测试Linux系统的稳定性和可靠性。它可以利用多个CPU/Core,甚至可以访问主内存的所有部分来测试系统的稳定性,以此推断系统是否存在内存泄漏或其他性能方面的问题。

  stressapptest的主要目标是发现难以重现的系统稳定性问题和其他体现在Java虚拟机、KVM Hypervisor和Hadoop集群等普通用例中的Linux系统中的性能问题。它还包括多个测试模式和选项以支持不同测试场景,比如随机测试、循环测试、全内存测试、持续测试等。

二、安装

2.1、源码编译安装

// 1.下载源码
git clone https://github.com/stressapptest/stressapptest.git
cd stressapptest
./configure
make
sudo make install

2.2、命令行安装

  Ubuntu下执行如下命令进行安装:

sudo apt-get install stressapptest

在这里插入图片描述

2.3、安装确认

  执行如下命令来确认stressapptest 是否安装成功:

stressapptest -h
lyb@ubuntu:~/learn$ stressapptest -h
Stats: SAT revision 1.0.6_autoconf, 64 bit binary
Log: buildd @ lgw01-amd64-022 on Thu Apr  5 10:28:35 UTC 2018 from open source release
Usage: ./sat(32|64) [options]
 -M mbytes        megabytes of ram to test
 -H mbytes        minimum megabytes of hugepages to require
 -s seconds       number of seconds to run
 -m threads       number of memory copy threads to run
 -i threads       number of memory invert threads to run
 -C threads       number of memory CPU stress threads to run
 --findfiles      find locations to do disk IO automatically
 -d device        add a direct write disk thread with block device (or file) 'device'
 -f filename      add a disk thread with tempfile 'filename'
 -l logfile       log output to file 'logfile'
 --max_errors n   exit early after finding 'n' errors
 -v level         verbosity (0-20), default is 8
 -W               Use more CPU-stressful memory copy
 -A               run in degraded mode on incompatible systems
 -p pagesize      size in bytes of memory chunks
 --filesize size  size of disk IO tempfiles
 -n ipaddr        add a network thread connecting to system at 'ipaddr'
 --listen         run a thread to listen for and respond to network threads.
 --no_errors      run without checking for ECC or other errors
 --force_errors   inject false errors to test error handling
 --force_errors_like_crazy   inject a lot of false errors to test error handling
 -F               don't result check each transaction
 --stop_on_errors  Stop after finding the first error.
 --read-block-size     size of block for reading (-d)
 --write-block-size    size of block for writing (-d). If not defined, the size of block for writing will be defined as the size of block for reading
 --segment-size   size of segments to split disk into (-d)
 --cache-size     size of disk cache (-d)
 --blocks-per-segment  number of blocks to read/write per segment per iteration (-d)
 --read-threshold      maximum time (in us) a block read should take (-d)
 --write-threshold     maximum time (in us) a block write should take (-d)
 --random-threads      number of random threads for each disk write thread (-d)
 --destructive    write/wipe disk partition (-d)
 --monitor_mode   only do ECC error polling, no stress load.
 --cc_test        do the cache coherency testing
 --cc_inc_count   number of times to increment the cacheline's member
 --cc_line_count  number of cache line sized datastructures to allocate for the cache coherency threads to operate
 --paddr_base     allocate memory starting from this address
 --pause_delay    delay (in seconds) between power spikes
 --pause_duration duration (in seconds) of each pause
 --local_numa     choose memory regions associated with each CPU to be tested by that CPU
 --remote_numa    choose memory regions not associated with each CPU to be tested by that CPU
 --interleave_size bytes  size in bytes of each channel's data as interleaved between memory channels
 --channel_width bits     width in bits of each memory channel
 --memory_channel u1,u2   defines a comma-separated list of names
                          for dram packages in a memory channel.
                          Use multiple times to define multiple channels.
lyb@ubuntu:~/learn$ 

三、重要参数详解

3.1、查询支持的参数

  执行如下命令来确认stressapptest支持的参数:

stressapptest -h
lyb@ubuntu:~/learn$ stressapptest -h
Stats: SAT revision 1.0.6_autoconf, 64 bit binary
Log: buildd @ lgw01-amd64-022 on Thu Apr  5 10:28:35 UTC 2018 from open source release
Usage: ./sat(32|64) [options]
 -M mbytes        megabytes of ram to test
 -H mbytes        minimum megabytes of hugepages to require
 -s seconds       number of seconds to run
 -m threads       number of memory copy threads to run
 -i threads       number of memory invert threads to run
 -C threads       number of memory CPU stress threads to run
 --findfiles      find locations to do disk IO automatically
 -d device        add a direct write disk thread with block device (or file) 'device'
 -f filename      add a disk thread with tempfile 'filename'
 -l logfile       log output to file 'logfile'
 --max_errors n   exit early after finding 'n' errors
 -v level         verbosity (0-20), default is 8
 -W               Use more CPU-stressful memory copy
 -A               run in degraded mode on incompatible systems
 -p pagesize      size in bytes of memory chunks
 --filesize size  size of disk IO tempfiles
 -n ipaddr        add a network thread connecting to system at 'ipaddr'
 --listen         run a thread to listen for and respond to network threads.
 --no_errors      run without checking for ECC or other errors
 --force_errors   inject false errors to test error handling
 --force_errors_like_crazy   inject a lot of false errors to test error handling
 -F               don't result check each transaction
 --stop_on_errors  Stop after finding the first error.
 --read-block-size     size of block for reading (-d)
 --write-block-size    size of block for writing (-d). If not defined, the size of block for writing will be defined as the size of block for reading
 --segment-size   size of segments to split disk into (-d)
 --cache-size     size of disk cache (-d)
 --blocks-per-segment  number of blocks to read/write per segment per iteration (-d)
 --read-threshold      maximum time (in us) a block read should take (-d)
 --write-threshold     maximum time (in us) a block write should take (-d)
 --random-threads      number of random threads for each disk write thread (-d)
 --destructive    write/wipe disk partition (-d)
 --monitor_mode   only do ECC error polling, no stress load.
 --cc_test        do the cache coherency testing
 --cc_inc_count   number of times to increment the cacheline's member
 --cc_line_count  number of cache line sized datastructures to allocate for the cache coherency threads to operate
 --paddr_base     allocate memory starting from this address
 --pause_delay    delay (in seconds) between power spikes
 --pause_duration duration (in seconds) of each pause
 --local_numa     choose memory regions associated with each CPU to be tested by that CPU
 --remote_numa    choose memory regions not associated with each CPU to be tested by that CPU
 --interleave_size bytes  size in bytes of each channel's data as interleaved between memory channels
 --channel_width bits     width in bits of each memory channel
 --memory_channel u1,u2   defines a comma-separated list of names
                          for dram packages in a memory channel.
                          Use multiple times to define multiple channels.
lyb@ubuntu:~/learn$ 

3.2、参数说明

  选项说明:
    -s或–timeout: 指定测试运行的总时间,以秒为单位。默认值为0(无限制)。
    -M或–vm-bytes: 指定应用程序所需的内存量,以字节、千字节、兆字节或吉字节为单位。例如,“-M 2048m”表示分配2GB的内存。默认值为0(自动计算)。
    -m或–vm-pattern: 指定要使用的内存模式,如线性、随机、步进等。默认值为“linear”(线性)。
    -c或–cpu-cores: 指定要使用的CPU核心数。例如,“-c 4”将在四个核心上运行测试。默认值为0(使用所有可用核心)。
    –affinity: 将应用程序绑定到指定的CPU核心上,以避免跨核心调度带来的额外开销。例如,“–affinity 0,2,4”将绑定应用程序到第1、3和5个CPU核心上。
    –matrix: 启用矩阵测试模式,该模式可以对整个系统进行更全面的测试,并且需要更长时间才能完成。
    –quiet: 禁止输出详细信息和统计数据,只显示结果摘要信息。
    –log-level: 设置日志级别,以控制输出详细程度。可选值为”debug”、”info”、”warning”、”error”和”critical”。
    –log-file: 将日志输出到指定的文件中,而不是标准输出。
    –version: 显示stressapptest版本信息并退出。

四、实例

4.1、随机测试(默认模式)

  随机模式是stressapptest的默认模式,它会随机访问系统内存中的所有部分来测试系统的稳定性。可以通过以下命令启动:

stressapptest

在这里插入图片描述

4.2、循环测试

  循环模式是stressapptest的另一种模式,它会在指定的时间内不断迭代相同的内存模式。可以使用以下命令启动:

stressapptest -M 100 -s 128 -C 16 -c 8

在这里插入图片描述

4.2、全内存测试

  全内存模式会尝试占用所有可用的空闲内存。可以使用以下命令启动:
在这里插入图片描述

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

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

相关文章

gin路由篇

1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 import ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context,封装了request和responser.…

《PCI Express体系结构导读》随记 —— 第I篇 第3章 PCI总线的数据交换(1)

前言中曾提到:本章详细阐述了PCI总线的数据传送方式,与Cache相关的内容和预读机制是本章的重点。 PCI Agent设备之间、以及HOST处理器和PCI Agent设备之间可以使用存储器读写和I/O读写等总线事务进行数据传送。在大多数情况下,PCI桥不直接与P…

DocsOpenApi自动化校验

一、背景 生产环境的文档中心的OpenApi和Kong服务配置的OpenApi可能存在不一致的情况,比如生产环境的文档中心有某个OpenApi,但是Kong服务没有配置到,那客户使用就会有问题。所以,前段时间(M09版本)花了4个…

利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤

目录 1 TPU-MLIR简介 2 开发环境搭建 2.1 下载镜像 2.2 下载SDK 2.3 创建容器 2.4 加载tpu-mlir 3 准备工作目录 4 onnx转mlir文件 5 mlir转INT8 模型 5.1 生成校准表 5.2 便以为INT8对称量化模型 参考文献: 之前是用nntc转算能科技的模型的&#xff0c…

用可视化案例讲Rust编程4. 用泛型和特性实现自适配shapefile的读取

本节已经涉及Rust学习曲线上的一个大坑:泛型和特性了,属于语言的深水区,如果初学者,建议看一眼知道有这个功能即可。 如果我们立足于功能实现,那么做到像上一节那样就可以了,从原理上来说,每个…

浅析Redis②:命令处理之epoll实现(中)

写在前面 Redis作为我们日常工作中最常使用的缓存数据库,其重要性不言而喻,作为普通开发者,我们在日常开发中使用Redis,主要聚焦于Redis的基层数据结构的命令使用,很少会有人对Redis的内部实现机制进行了解&#xff0c…

【安卓版】网页转应用v1.2,生成属于你的专属应用

网页转应用可以将网址转换成可安装的APP应用。无论是新闻、博客、论坛、游戏,还是在线购物网站或者社交媒体平台,只要你有个希望转换的网址,这款应用都能为你实现,应用永久免费使用,并且无需联网,即可生成你…

[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

【K8S 云原生】K8S的图形化工具——Rancher

目录 一、rancher概述 1、rancher概念 2、rancher和K8S的区别: 二、实验 1、安装部署 2、给集群添加监控: 3、创建命名空间: 4、创建deployment: 5、创建service: 6、创建ingress: 7、创建hpa 8…

Android 水印效果

Android 水印效果 本文主要介绍下android 中水印的实现效果. 实现的方式有多种,就不一一赘述了, 本文就是通过自定义drawable来实现水印. 不多说,直接上代码吧: import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; i…

【开源】基于JAVA语言的假日旅社管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统介绍2.2 QA 问答 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿评论4.3 查询民宿新闻4.4 新建民宿预订单4.5 查询我的民宿预订单 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的假日旅社…

LeetCode.2859. 计算 K 置位下标对应元素的和

题目 题目链接 分析 这道题的题意很明确。就是求每一个下标的二进制中1的个数为k的下标所对应的元素值之和。 Java 中有 库函数 Integer.bitCount(num),这个函数的返回值就是 num 中 1 的个数。 代码 class Solution {public int sumIndicesWithKSetBits(List…

【C++】stack、queue的使用及模拟实现

目录 一、stack1.1 stack的使用1.2 stack的模拟实现 二、queue2.1 queue的使用2.2 queue的模拟实现 一、stack 1.1 stack的使用 stack是一种容器适配器,它的特点是后进先出,只能在容器的一端进行插入和删除操作。 stack的使用很简单,主要有…

【RT-DETR有效改进】FasterNet一种跑起来的主干网络( 提高FPS和检测效率)

前言 大家好,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持ResNet32、ResNet101和PP…

Java中的HTTPS通信

在Java中实现HTTPS通信,主要涉及到SSL/TLS协议的使用,用于提供数据传输的安全性。下面我们将深入探讨如何使用Java进行HTTPS通信。 一、基本概念 HTTPS,全称为Hypertext Transfer Protocol Secure,是HTTP的安全版本。它使用SSL/…

代码随想录 Leetcode144/94/145 二叉树的前/中/后序遍历

题目&#xff1a; 前&#xff1a; 中&#xff1a; 后&#xff1a; 代码&#xff08;首刷自解 2024年1月24日&#xff09;&#xff1a; //前序遍历&#xff0c;递归 class Solution { public:void funcOfRecursion(TreeNode* cur, vector<int>& vec) {if (cur null…

使用frp透传软件搭建本地运行的私有邮箱服务器

起因&#xff1a;随着我公司在线应用软件的增多&#xff0c;比如wordpress、 next cloud、SuitCRM 、iFair等&#xff0c;许多场合都要求填写邮箱地址&#xff0c;绑定邮箱。因为不想将过多的数据存储于第三方空间&#xff0c;因此考虑在公司局域网内搭建一个私有的电子邮箱服务…

嵌入式软件工程师如何快速成长

今天和大家分享一下&#xff0c;程序员如何独挡一面这个话题&#xff0c;这是一个很大的话题&#xff0c;我把他分成三部分来谈&#xff1a; 一、需求转换的能力或者叫理解需求的能力&#xff1b; 二、分配时间的能力&#xff1b; 三、开发质量的问题&#xff1b; 我为什么…

全新UI基于Thinkphp的最新自助打印系统/云打印小程序源码/附教程

这是一款全新的基于Thinkphp的最新自助打印系统&#xff0c;最新UI界面设计的云打印小程序源码&#xff0c;带有简单的教程。 源码下载&#xff1a;YISHEN源码网&#xff08;ms3.ishenglu.c&#xff09;om

Java-反射-注解-动态代理

二、反射 翻译成人话就是&#xff1a;反射技术&#xff0c;指的是加载类的字节码到内存&#xff0c;并以编程的方法解刨出类中的各个成分&#xff08;成员变量、方法、构造器等&#xff09;。 反射有啥用呢&#xff1f;其实反射是用来写框架用的&#xff0c;但是现阶段同学们对…