嵌入式系统一次EMMC测试的体会及错误分析过程
嵌入式系统一次EMMC测试的体会及错误分析过程
环境配置
由于本次需要测试EMMC和内存,所以编写脚本如下:
#!/bin/sh
for i in {1..100}
doj=`expr $[i] % 10`if test $[j] -eq 0thenecho "-----------------emmc $i round of testing----------------------------"iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone${i}.xlssyncsleep 2s echo "-----------------emmc $i round of testing end---------------------------"sleep 300sfiecho "********`date +%T ` memtester test " |tee -a ./mem.logsleep 20smemtester 300M 1if [ $? -eq 0 ]thenecho "memtest sucsessed" | tee -a ./mem.logelseecho "memtest failed" | tee -a ./mem.logfiecho -e "`date +%T` ********************************\n" | tee -a ./mem.logsleep 20s
done
脚本说明
脚本的功能分成2个部分,一个是iozone,分别对EMMC进行write/rewrite、read/re-read、stride-read测试,读写的文件依次从512m到4G,以2倍的形式增长(我的板子的EMMC是8G的),结果放到iozone*.xls文件中,
文件大概内容如下:
第二部分是进行内存压力测试,我的开发板的内存是512M的,压力测试使用300M
流程是每执行10次内存压力测试,执行一次EMMC读写操作,一直循环执行到测试结束为止;
## 实验结果
执行了一段时间发现有错误```bash
[2022-3-18 21:39:34] Out of memory: Kill process 5364 (memtester) score 137 or sacrifice child
[2022-3-18 21:39:34] Killed process 5364 (memtester) total-vm:360100kB, anon-rss:69384kB, file-rss:20kB
[2022-3-18 21:39:34] 11:39:24 current temperature= -16945 runtime = 24834.14 47.30
[2022-3-18 21:39:34] ./mem.sh: line 16: 5364 Killed memtester 350M 1
[2022-3-18 21:39:34] 11:39:24 current freq= 792000
[2022-3-18 21:39:34] memtest failed
结束后,又执行了一次,发现还是有这个现象,这个时候观察,内存是够的,刚开始怀疑是操作太频繁了,将脚本修改sleep的延时增大,还是不行;
从网上查找资料,发现这个和linux核心的机制有关系;
Linux有一个特性:OOM Killer,一个保护机制,用于避免在内存不足的时候不至于出现严重问题,把一些无关的进程优先杀掉,即在内存严重不足时,系统为了继续运转,内核会挑选一个进程,将其杀掉,以释放内存,缓解内存不足情况,不过这种保护是有限的,不能完全的保护进程的运行。
在很多情况下,经常会看到还有剩余内存时,oom-killer依旧把进程杀死了,现象是在/var/log/messages日志文件中有如下信息:
Out of Memory: Killed process [PID] [process name].
该问题是low memory耗尽,因为内核使用low memory来跟踪所有的内存分配。
当low memory耗尽,不管high memory剩多少,oom-killer都会杀死进程,以保持系统的正常运行。
LowMem 区 (也叫 NORMAL ZONE ) ,而且不能改变(除非用 hugemem 内核)。对于高负载的系统,就可能因为 LowMem 利用不好而引发 OOM Killer 。一个可能原因是 LowFree 太少了,另外一个原因是 LowMem 里都是碎片,请求不到连续的内存区域
查看内存,这里不能使用默认的free
egrep ‘High|Low’ /proc/meminfo
会列出不同的内存数据;
虽然现在还是没有完全弄明白如何解决,因为我这里也不能直接修改linux系统的内存部分,为了验证实验现象使用另外一种方式来验证,每执行一次iozone然后系统重新启动一次,另外内存压力测试执行的时候,要保证iozone没有执行,这样执行下来,发现都正常,也能侧面反正这个问题。
这个算是对EMMc测试的一个教训吧。
嵌入式系统一次EMMC测试的体会及错误分析过程相关推荐
- arm分支指令c语言,ARM嵌入式系统教与学(教学大纲)
原标题:ARM嵌入式系统教与学(教学大纲) <ARM 嵌入式系统结构与编程> 课程教学大纲 学分 3 学时 32+24 01 课程说明 通过本课程的学习,培养学生掌握 ARM 体系结构,A ...
- ZedBoard--(5)嵌入式Linux下的DMA测试(Direct Register Mode)(PS + PL)
ZedBorad–(5)嵌入式Linux下的DMA测试(PS+PL) 本文将详细介绍如何在ZedBorad上使用AXI接口的DMA IP核.(文末会给出测试代码的下载链接) DDR控制器.AXI DM ...
- ubuntu下安装PCL并测试(含视频安装过程记录)
☛☛ 视频安装过程记录 ☚☚ 原文章的标题为Ubuntu16.04下安装PCL1.7并测试(含视频安装过程记录),但我觉得随着时间的推移,版本会发生改变 1.更新源 sudo apt-get upda ...
- Android 开源安全测试工具 Drozer,安装过程中的问题
Android 开源安全测试工具 Drozer,安装过程中的问题 记录安装过程中出现的问题 Android 开源安全测试工具 Drozer,安装过程中的问题 错误一 错误二 错误三 错误四 错误五 错 ...
- 对多个WCF服务进行统一的连接测试
先看下面的代码: 代码 代码 BasicHttpBinding myBinding = new BasicHttpBinding(); EndpointAddress myEn ...
- emmc测试面面观-细谈emmc的几种测试方法
以前我也发布了几篇文章,从不同的角度零零碎碎的谈了谈emmc,今天,我们来详细的了解一下emmc的测试. 首先我们先看看emmc信息收集,了解一下emmc信息如何查看,可以参看地址:https://b ...
- DSP外扩SRAM的应用测试心得体会
原文地址:[http://www.51hei.com/bbs/dpj-32468-1.html] DSP的硬件测试说明: 平台说明: 图1-1 Code Composer Studio 6.0.0. ...
- Tomcat实现java与http_java – 使用嵌入式tomcat服务器的JUnit测试,如何为http和https连接器指定自动端口?...
描述 我做了一个JUnit测试,专注于尝试测试一个SOAP Web服务的调用. 我正在使用嵌入式tomcat服务器进行测试,以便使用模拟服务器运行我的测试. 我也使用http和https连接器. 我需 ...
- RedHat el5.0 搭建 Postfix 邮件服务器系统一
RedHat el5.0 搭建 Postfix 邮件服务器系统 (postfix+cyrus-sasl2+courier-authlib+courier- ...
最新文章
- python3 库pandas写入csv格式文件出现中文乱码问题解决方法
- 【Git】Git 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )
- 正则表达式二 :贪婪与非贪婪
- 51nod 1100:斜率最大
- Oracle 11g数据库管理与开发指南
- 使用 ReSharper对.NET解决方案进行全面重构
- 无损1080i到1080p是如何制作的
- 设计、定义并实现Complex类
- uniApp中图片文件上传插件(uniFilePicker)
- 拯救报错:Error: connect ETIMEDOUT
- wrf模式计算机配置,科学网-WRF模式的运行-张乐乐的博文
- 怎么定位门面位置_如何选择店面位置
- 【二分】Caravan Robbers
- wifi 小程序 透传_微信小程序之一键连接wifi
- java程序员进阶必读书单
- 家用计算机的辐射,电脑的辐射有多大?
- 关于论文中bib文件的参考格式
- 使用ganache-cli和truffle构建以太坊智能合约,以实现“基于哈希锁定的跨链技术”为例
- 【生活·日常】一个与世隔绝的大学生如何补办身份证
- Visual Studio 2017最新版正式发布!适用于任何开发人员、平台及APP