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

开发板中的内存压力测试,你了解多少?

1. 测试目的

内存压力测试的目的是评估开发板中的内存子系统性能和稳定性,以确保它能够满足特定的应用需求。开发板通常用于嵌入式系统、物联网设备、嵌入式智能家居等场景,这些场景对内存的要求通常比较高。

其内存压力测试的主要目的有:

1.对确定内存的可靠性:通过模拟高负载下的内存使用情况,可以检测内存中的错误和问题,并确定开发板是否能够在稳定的状态下长时间运行。这有助于确保系统的可靠性和数据安全性。

2.发现内存瓶颈:通过测试开发板在处理大量数据时的性能表现,可以评估内存访问速度、吞吐量、响应时间等性能指标,并确定系统在处理大量数据时的性能瓶颈所在。这有助于确定系统的性能极限,并采取相应的优化措施。

3.验证内存兼容性:不同类型的内存可能会影响开发板的性能和稳定性。通过内存压力测试可以验证不同类型的内存是否兼容,以确保内存与开发板的兼容性。

4.测试系统容错性:通过模拟异常情况下的内存使用情况,可以测试开发板在处理异常情况时的表现,并确定开发板能否在不影响数据完整性的情况下恢复正常工作。

2.1测试结果

在使用内存压力测试工具memtester测试内存72小时以上期间,未发现内存错误、异常等现象。内存模块在测试条件下稳定,循环测试中系统未出现无明显卡顿或崩溃现象。测试结果表明,系统能够在长时间高负载占用内存的工作环境下保持可靠性和稳定性,具有较高的抗压能力。

2. 测试原理

2.1memtester

Memtester是一种用于测试系统内存稳定性和可靠性的工具。它可以模拟各种内存负载情况,并检测和报告内存错误。

Memtester可以在Linux和其他类Unix系统上运行,并可以通过命令行或脚本进行控制。它可以测试内存的不同方面,包括内存容量、内存速度、内存类型、内存通道等。同时,它还可以测试系统的内存管理和内存分配机制,以确定系统是否能够有效地管理和分配内存。

使用Memtester进行内存测试时,需要指定测试的内存容量和测试的时间长度。测试过程中,Memtester会在内存中模拟各种负载情况,例如写入随机数据、重复写入相同数据、使用指定的模式写入数据等。在测试过程中,Memtester会检测内存中的错误,并将错误信息记录到日志文件中。

通过使用Memtester,可以有效地测试系统内存的稳定性和可靠性,以便确定系统是否能够在各种负载情况下正常运行。测试结果可以帮助开发人员识别和解决内存相关的问题,并优化系统的内存性能。

图3.1 演示程序

2.1.1测试方法

memtester工具使用命令格式为memtester [-p 内存物理起始地址] [测试内存大小B/K/M/G] [测试次数]。

命令格式不是固定的,可以省略部分。

ⅰ. 省略测试次数,则连续进行测试,直到手动结束

ⅱ. 省略内存物理起始地址,则由系统随机选择空闲内存测试

b. 使用方法

ⅰ. 对1G内存测试100次

./memtester 1G 100

ⅱ. 对2G内存进行连续测试

./memtester 1G 100

ⅲ. 从0x00010000地址开始测试1G内存100次

./memtester -p 0x10000 1G 100

3. 硬件准备

HD-G2L-IOT V2.2底板、HD-G2L-CORE V2.0核心板(2GB+8GB)、网线、Type-c数据线、12V电源适配器、UART模块、电脑主机。

4. 测试环境

图5.1 测试环境

5. 开始内存压力测试

根据测试目的,运行测试程序,申请1G内存大小,连续运行测试72小时以上。

图6.1

图6.2 视频播放

如图6.1所示,编写测试脚本运行memtester测试程序后先检测是否存在memtester进程,若有则杀掉进程,若无则根据用户输入时间校准评估板时间,最后输入测试时长(秒)开始内存压力测试,达到测试时长则结束测试。 

6. 结束内存压力测试

图7.1

图7.2

图7.3

图7.4 运行情况

如图7.1图7.2图7.3所示,memtester程序在运行了72小时30分钟后仍在运行测试,说明在此测试期间,持续高强度负载下,系统整体表现稳定,无明显卡顿或崩溃现象。内存压力测试159次后仍能够保持在稳定的水平。测试结果表明,系统能够在长时间内存压力测试的工作环境下保持可靠性和稳定性,具有较高的抗压能力。

7. 关于HD-G2L-IOT

7.1硬件参数

HD-G2L-IOT板载的外设功能:

  • 集成2路10M/100M/1000M自适应以太网接口

  • 集成Wi-Fi

  • 集成2路RS-232接口

  • 集成2路RS-485接口

  • 集成2路CAN-bus接口

  • 集成2路USB Host

  • 集成1路USB扩展4G模块接口(集成SIM卡接口)

  • 集成1路USB扩展5G模块接口(集成SIM卡接口)

  • 支持1路TF卡接口

  • 支持液晶显示接口(RGB信号)

  • 支持4线电阻触摸屏与电容屏接口

  • 1路MIPI DSI接口

  • 1路摄像头接口(MIPI CSI)

  • 支持音频(耳机、MiC、SPK)

  • 支持实时时钟与后备电池

  • 支持蜂鸣器与板载LED

  • 支持GPIO

  • 1路TTL调试串口

  • 直流+12V电源供电(宽压9~36V)

HD-G2L-CORE核心板硬件资源参数:

相关文章:

开发板中的内存压力测试,你了解多少?

1. 测试目的内存压力测试的目的是评估开发板中的内存子系统性能和稳定性,以确保它能够满足特定的应用需求。开发板通常用于嵌入式系统、物联网设备、嵌入式智能家居等场景,这些场景对内存的要求通常比较高。其内存压力测试的主要目的有:1.对确…...

MATLAB | 这些花里胡哨的热图怎么画

好早之前写过一个绘制相关系数矩阵的代码,但是会自动求相关系数,而且画出来的热图只能是方形,这里写一款允许nan值出现,任意形状的热图绘制代码,绘制效果如下: 如遇到bug请后台提出,并去gitee下…...

Java开发的一些编码建议

1、无论是类、方法、字段、变量,尽可能的限制他们的作用范围,可以避免出现不必要的错误;同时虚拟机也能有更大的优化空间。 2、错误越早发现越好,编译时发生错误比在运行时发生错误好。而且编译时错误能更好的定位问题所在。 这…...

【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.59】引入ASPP模块

前言作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细的介绍&…...

C++STL set/multiset容器 构造和赋值 大小和交换 插入和删除 查找和统计

文章目录set/multiset容器1 set容器 基本概念2 set容器 构造和赋值3 set容器 大小和交换4 set容器 插入和删除5 set容器 查找和统计set/multiset容器 1 set容器 基本概念 简介: 所有元素都会在插入时会被自动排序,例如,在set容器放入元素1、…...

产品研发项目进度管理软件工具有哪些推荐?整理10款最佳进度管理软件

项目进度管理是确保项目按时完成的关键过程,使用合适的项目进度管理工具能确保帮助项目管理者实时了解和控制项目的进展情况,及时发现和解决问题,减少项目风险,提高项目效率和管理水平。这里将整理出国内外最受欢迎的10款项目进度…...

「ML 实践篇」分类系统:图片数字识别

目的:使用 MNIST 数据集,建立数字图像识别模型,识别任意图像中的数字; 文章目录1. 数据准备(MNIST)2. 二元分类器(SGD)3. 性能测试1. 交叉验证2. 混淆矩阵3. 查准率与查全率4. P-R 曲…...

从大专到测开,上海某字母站大厂的面试题,岗位是测开(25K*16)

简单介绍一句,大专出身,三年经验。跳了四次槽,面试了无数次,现在把自己的面试经验整理出来分享给大家,堪称必杀技! 1,一切从实际出发,对实际工作进行适当修饰 2,不会的简…...

【面试题】Python软件工程师能力评估试题(一)

文章目录前言应试者需知(一)Python 语言基础能力评估1、理解问题并完成代码:2、阅读理解代码,并在空白处补充完整代码:3、编写一个装饰器:exposer4、阅读代码并在空白处补充完整代码:5、自行用P…...

Java八股文(Java多线程面试题)

并行和并发的区别?(1)并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生;(2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件&#…...

小程序当前页面如何分享别的页面内容呢?

需求分析 因为功能的需要分为两点 他需要调转转发,并且有首页转发点击button按钮进行转发邀请好友帮忙助力,如何做到一个页面多种转发 如何区分,是button转发还剩右上角三个点转发呢? 通过onShareAppMessage()这个函数的事件…...

编写Java哪个编译器好

现在能够编写Java代码的工具简直不要太多,各种各样五花八门,但目前效率最高的还是Intellij Idea。但这个工具对于完全零基础的小白来说,第一次用起来是比较复杂的,因为它的功能太多了。这就好比你要学开车,如果上来就给…...

第十六章 Java为什么使用序列化

为何要指定serialVersionUID的值如果不指定显示serialVersionUID的值,jvm在序列化时会自动生成一个serialVersionUID,跟属性一起序列化,再进行持久化或者网络传输,在反序列化时,jvm会根据属性自动生成一个新版的serial…...

28岁小公司程序员,无车无房不敢结婚,要不要转行?

大家好,这里是程序员晚枫,又来分享程序员的职场故事了~ 今天分享的这位朋友叫小青,我认识他2年多了。以前从事的是土木行业,2年前找我咨询转行程序员的学习路线和职业规划后,通过自学加入了一家创业公司,成…...

出道即封神的ChatGPT,现在怎么样了?

从互联网的普及到智能手机,都让广袤的世界触手而及,如今身在浪潮中的我们,已深知其力。前阵子爆火的ChatGPT,不少人保持观望态度。现如今,国内关于ChatGPT的各大社群讨论,似乎沉寂了不少,现在怎…...

【计算机视觉】CNN 可视化算法

文章目录一、CAM算法1.1 概述1.2 CAM算法介绍二、Grad-CAM算法2.1 概述2.2 Guided Backpropagation2.3 Occlusion Sensitivity2.4 Grad-CAM 整体结构和效果2.5 Grad-CAM 实现细节一、CAM算法 1.1 概述 本文介绍 2016 年提出的 CAM (Class Activation Mapping) 算法&#xff0…...

自动抓取服务器巡检、登录、执行命令记录+备份脚本

文章目录 引抓取【巡检日志】语言&时区设置语言设置时区巡检脚本执行效果抓取【登录信息】登录脚本登录脚本低版本的last命令执行效果抓取【history记录】说明配置history授权日志文件显示时间戳持久化到日志未配置history的配置过history的执行脚本执行脚本...

如何用Python求解微分方程组

文章目录odeint简介示例odeint简介 scipy文档中将odeint函数和ode, comples_ode这两个类称为旧API,是scipy早期使用的微分方程求解器,但由于是Fortran实现的,尽管使用起来并不方便,但速度没得说,所以有的时候还挺推荐…...

【微信小程序】-- 自定义组件 - behaviors(三十九)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

【微信小程序】-- 自定义组件 - 父子组件之间的通信(三十八)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...