BeagleBone Black Industrial 进阶设置(性能优化以及延长板载eMMC存储寿命)
前言
原创文章,转载引用务必注明链接。水平有限,欢迎指正。
本文使用markdown写成,为获得更好的阅读体验,推荐访问我的博客原文:
http://www.omoikane.cn/2016/09/15/bbb_adv_settings/
系统环境:Windows 7 Home Pentium x64|Deepin Linux 15.2 x64;Debian 8.5 On BBB Industrial
关于板载eMMC存储
关于eMMC存储的基本知识可以看我之前的文章《板载eMMC初探》,总而言之就是:
- eMMC读写速度比一般的MicroSD卡快很多
- eMMC有擦写寿命,难于更换,所以如何延长其使用寿命值得重视
- eMMC|NAND存储,SLC|MLC|TLC区别
- trim功能
大触的文章里提到这么一句:
大的这颗镁光(Micron) IC 是 eMMC ,型号为 MTFC2GMVEA-0M WT ,为了控制成本只给了 2GB ,可以说聊胜于无(还不如多给个 TF 卡槽)。这玩意标称的速度为连续读取 30MB/s ,连续写入 6.6MB/s ,在 2GB 的 MLC NAND 中算是很不错的了。另外需要注意的是这片 eMMC 的界面版本是 MMC 4.41 ,而在 MMC 4.5 之前 discard 的行为和 ATA 的 TRIM 不一样,会强制擦除,所以,千万不要试图在 Beaglebone 上开 discard / TRIM ,如果开了闪存可能会很快耗尽擦写寿命。
那么问题来了,我们要确定BBB Industrial板载eMMC存储的型号,界面版本。
如何确定eMMC型号
一般IC上都有型号码,直接去厂商官网一搜就行了,比如海力士那种。而Micron镁光一般只有简单的标号,好在BBB是开源硬件,有物料清单(Bill of Material, BOM)提供下载,可以很清楚地看到使用型号,然后去镁光官网搜索。而BBB Industrial暂时没有提供具体的BOM,但是在其用户手册中第55页提到:
The device used is one of two different devices:
• Micron MTFC4GLDEA 0M WT
• Kingston KE4CN2H5A-A58The package is a 153 ball WFBGA device on both devices.
然而我们仔细看两者的eMMC IC:
原版BBB是JW896,BBB Industrial是JWA58,从 https://www.elnec.com 查询可知,前者是WFBGA153,后者是VFBGA153封装,而MTFC2GMVEA-0M WT(2G)和MTFC4GLDEA 0M WT(4G)都是采用WFBGA153封装,怀疑是手册没有及时更新。
【ELNEC网站】如图所示,该网站可以查到很多设备的编号规则,例如镁光结尾WT代表工作温度-25°C to 85°C,IT代表-40°C to 85°C。
我们在镁光官网可以查到JWA58的手册,注意需要注册micron后才能下载;MTFC2GMVEA-0M系列的手册
可以清楚地看到JWA58支持eMMC界面4.51版本,JW896仅支持4.41版本。
eMMC界面版本4.4x到4.5x变化很大吗?!
是的,eMMC 4.5x相比eMMC 4.41而言有很重要的改动:
eMMC 4.5 further defines a "discard" sub-operation that more closely matches ATA TRIM in that the contents of discarded blocks can be considered indeterminate.(wiki)
原版BBB板载JW896 eMMC (2G、4G)的界面版本是4.41,而在MMC 4.5之前discard的行为和ATA的TRIM不一样,会强制擦除,所以在4.5之前开启discard/TRIM,闪存可能会很快耗尽擦写寿命,这也就是为什么大触讲到不要开启discard / TRIM。
什么是TRIM以及开启TRIM之后有什么好处?
系统删除文件的机制是把这个文件标记为已删除,而不是真的把这个文件从硬盘上抹除。由于闪存(NAND)的文件删除机制与机械磁盘(Disk)有区别,这对于传统的硬盘这类使用磁记录的没有影响,传统硬盘可以直接用磁头覆盖写入而不用考虑盘面上已经有了什么记录。但对于固态硬盘这类使用存储芯片的就不行了,所以TRIM技术可以在设备空闲时自动抹除记录,使得写入数据的时候能直接写入,而不是等到要写入的时候再去临场操作抹除数据,使得长时间使用后写入速度不会大幅下降。所以我们可以说,TRIM技术保证速度不下跌的真正秘密是:把将来要做的事提前做掉了。但是这件事迟早要做,所以基本不会影响SSD原有的写入次数(寿命)。
这里提供了一些我搜集来的资料:
—— 链接:http://pan.baidu.com/s/1c0QBcas 密码:dovc ——
内容包括eMMC性能优化指南,eMMC 4.41和4.5差异介绍。
优化eMMC性能
可以参看我之前的文章《优化Guitar性能,延长eMMC寿命》,原理在那边讲过了,不再赘述。
更改系统I/O调度(安全)
I/O调度算法简单理解就是读写顺序。试想十字路口在车流量大的时候没有一个交警,那交通状况肯定好不了。Linux I/O调度有四种,分别是CFQ(Completely Fair Queuing, 完全公平排队)、NOOP(电梯式调度程序,最适合NAND存储设备)、Deadline(截止时间调度程序)、AS(预料I/O调度程序)。通过以下命令可以查看系统支持以及当前所使用的算法:
dmesg | grep scheduler
cat /sys/block/mmcblk0/queue/scheduler
【BBB Industrial I/O支持】可见支持noop、deadline、cfq三种算法,默认cfq。
Debian Jessie使用systemd接管系统启动,这里我们创建一个服务设置noop为默认模式并开机启动:
nano /etc/systemd/system/io-scheduler.service # 创建一个系统服务
输入以下内容:
[Unit]
Description=I/O Scheduler Setter
After=local-fs.target[Service]
Type=oneshot
ExecStart=/bin/bash -c ‘echo noop > /sys/block/mmcblk0/queue/scheduler’
TimeoutSec=0
RemainAfterExit=yes[Install]
WantedBy=multi-user.target
Ctrl+O保存,Ctrl+X退出。测试并设置开机启动:
#增加可执行权限
chmod 755 /etc/systemd/system/io-scheduler.service
#设置开机启动
systemctl enable io-scheduler.service
#启动服务
systemctl start io-scheduler.service
#查看服务状态,显示active (exited)表示启动成功
systemctl status io-scheduler.service
重启之后可以看到I/O调度算法已经设置为NOOP。
使用fstrim(安全)
略过,参考原文
延长eMMC寿命
关闭ext4日志功能,禁用时间戳记录(可选)
这个其实就相当于牺牲突发情况下的安全性换取性能和减少eMMC擦写,适合搭建Web服务器等情况,前面的文档也有对比,显示使用ext4+禁用日志+discard之后,eMMC性能表现非常优秀。
但是我们这里保守一下,不关闭文件系统日志,仅启用WriteBack模式(参考Armbian Project的写法):
更改/etc/fstab
文件内容如下:
root@beaglebone:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
UUID=a3d27d61-33ba-475e-a334-4dacedc191a2 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
root@beaglebone:~# ls -al /dev/disk/by-uuid/a3d27d61-33ba-475e-a334-4dacedc191a2
lrwxrwxrwx 1 root root 15 Sep 15 21:52 /dev/disk/by-uuid/a3d27d61-33ba-475e-a334-4dacedc191a2 -> ../../mmcblk0p1
root@beaglebone:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 10M 0 10M 0% /dev
tmpfs tmpfs 99M 8.4M 91M 9% /run
/dev/mmcblk0p1 ext4 3.5G 3.2G 165M 96% /
tmpfs tmpfs 247M 4.0K 247M 1% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 247M 0 247M 0% /sys/fs/cgroup
tmpfs tmpfs 50M 0 50M 0% /run/user/1000
后面俩命令指示看一下那个uuid是谁的,果然是挂载为根目录的mmcblk0p1。
使用RAMlog将系统日志移到内存中(可选)
相信很多人都记得将某些读写频繁的目录挂载为tmpfs,其实日常使用过程中最频繁的就是系统日志文件了(注意系统日志和文件系统日志的区别)。我们通过RAMlog将日志文件放到内存里,可以设置定时清理,从而减少eMMC擦写,具体参考我的又一篇文章使用RAMlog减少eMMC读写,延长使用寿命。
总结
使用hdparm -t /dev/mmcblk0
命令可以看到板载eMMC的读取速度大约30 MB/s,还算理想。之前一直以为BBB Industrial也是使用4.41的eMMC,这次看了一下发现不是那么回事,希望后面Embest能释出BOM文件。对比一下会发现原版BBB和BBB Industrial之间用料有很多不同,另外e14官方提供的用户手册一定要看,还是很有用的。
转载于:https://www.cnblogs.com/sjqlwy/p/bbb_adv_settings.html
BeagleBone Black Industrial 进阶设置(性能优化以及延长板载eMMC存储寿命)相关推荐
- 【JUC多线程与高并发】线程进阶,性能优化之无锁
多线程进阶,性能优化之无锁 比较交换(CAS) 线程安全整数类:AtomicInteger CAS底层原理:Unsafe类 CAS缺点: ABA问题的解决 原子引用:AtomicReference 原 ...
- Android进阶:性能优化篇
Android进阶:性能优化篇
Android进阶:性能优化篇 分类:Android 性能优化2011-08-09 17:06585人阅读评论(0)收藏举报 一.在使用Gallery控件时,如果载入的图片过多,过大,就很容易出现Ou ...
- 移动网站性能优化:网页加载技术概览
移动网站性能优化:网页加载技术概览 2013/08/27 | 分类: IT技术 | 0 条评论 | 标签: WEB开发, 性能优化, 移动 分享到: 47 本文由 伯乐在线 - 伯乐在线读者 翻译自 ...
- 网页性能优化之异步加载js文件
一个网页的有很多地方可以进行性能优化,比较常见的一种方式就是异步加载js脚本文件.在谈异步加载之前,先来看看浏览器加载js文件的原理. 浏览器加载 JavaScript 脚本,主要通过<scri ...
- 【建议收藏】15755字,讲透MySQL性能优化(包含MySQL架构、存储引擎、调优工具、SQL、索引、建议等等)
0. 目录 1)MySQL总体架构介绍 2)MySQL存储引擎调优 3)常用慢查询分析工具 4)如何定位不合理的SQL 5)SQL优化的一些建议 1 MySQL总体架构介绍 1.1 MySQL总体架构 ...
- 前端性能优化总结/懒加载、函数节流、优化dom操作、雪碧图、合并文件
1.减少 HTTP 请求数量 在浏览器与服务器进行通信时,主要是通过 HTTP 进行通信.浏览器与服务器需要经过三次握手,每次握手需要花费大量时间.而且不同浏览器对资源文件并发请求数量有限(不同浏览器 ...
- 【建议收藏】15755 字,讲透 MySQL 性能优化(包含 MySQL 架构、存储引擎、调优工具、SQL、索引、建议等等)
0. 目录 1)MySQL 总体架构介绍 2)MySQL 存储引擎调优 3)常用慢查询分析工具 4)如何定位不合理的 SQL 5)SQL 优化的一些建议 1 MySQL 总体架构介绍 1.1 MySQ ...
- ajax预加载html seo,前端性能优化 — JS预加载和懒加载
JS预加载 需求:有时我们需要实现例如快速快速切换页面.图片之类的功能时,能尽快的加载出我们所需的图片会极大提升用户体验,这时用预加载将图片先缓存到浏览器,用户使用需显示图片时无疑会顺畅很多. 核心: ...
- 11s到1s,性能优化之首屏加载
大家好,我是 漫步,今天来看看前端优化的文章,喜欢记得关注我并设为星标. 全文共6511字/词,阅读大概需要13分钟,太长不看党请直接移步
最新文章
- 番茄工作法发明人作序推荐《番茄工作法图解》
- [js高手之路] 设计模式系列课程 - DOM迭代器(2)
- [linux] SIGPIPE信号处理
- iOS:多线程的详细介绍
- Java ServletContextListener监听器的使用
- CodeForces - 858D Polycarp's phone book(字典树/map)
- python最小二乘法拟合_Python 普通最小二乘法(OLS)进行多项式拟合
- php js 图片旋转,jQuery实现可以控制图片旋转角度效果
- MVC3中的视图文件
- mysql 不限定 ip_mysql 不指定 ip 的连接默认都是 localhost
- 限制python内存上限_13.14 限制内存和CPU的使用量
- Spring Cloud 启动Eureka的Client(客户端)时,项目一启动就停止,控制台无任何报错信息
- DB层面上的设计 分库分表 读写分离 集群化 负载均衡
- 学生信息管理系统html代码,学生信息管理系统源代码.doc
- 【OpenCV】配置OpenCV教程,OpenCV入门
- Java爬虫入门(一)
- 惠普1020打印机驱动安装教程
- 海康VisionMaster-脚本模块
- 自强不息系列之Python 线性查找
- 怎么在计算机上搭建远程桌面,创建远程桌面连接的方法
热门文章
- seaborn系列 (3) | 折线图lineplot()
- 周杰伦300多万NFT被黑客盗走,上链加密艺术就这??
- 逆转衰老!“70岁”小鼠经过数月治疗,肾脏皮肤血液细胞重返“年轻态”
- 6步傻瓜式点击在树莓派上安好Win11
- 硬盘老大哥被曝豪掷200亿美元,要收了全球第二大闪存芯片厂,外媒:半导体行业秩序要变...
- java WebSocket实现一对一消息和广播消息Demo
- 使用react全家桶制作博客后台管理系统
- [转]:xmake插件开发之色彩高亮显示
- mac电脑 显示隐藏文件 取消显示隐藏文件
- C#部署安装,将用户安装路径记录下写入注册表,并启动