【N32926】简单测试ARM Linux嵌入式系Nand存储读写速度

在某些情况下,我们想知道NAND Flash的大概读写速度,这些情况可能包括:

1.打算更换一颗型号不同但存储类型、存储容量、页大小都相同的NAND

2.打算更换一颗存储类型不同的NAND,例如从SLC NAND FLASH更换成MLC NAND FLASH

3.打算更换一颗不同接口的NAND,例如从8位数据总线更换成SPI NAND

4.打算调整并更换不同的文件系统,例如从ext4更换为ubifs

以上情况,我们都可能想知道更换前后,对NAND读写速度带来的影响,下面是具体的测试方法

测试写速度主要使用的命令是:time dd

例如,测试写NAND的速度

time dd if=/dev/zero of=/path/to/fileinnand  bs=1024 count=10000

注意,这里bs后面1024的单位是字节,生成的fileinnand大小为约9.8M(10000KB)

上述命令意思是从zero设备中抽取字符写入到NAND,控制台输出内容大致如下(新塘N32926/Linux2.6.35/FAT文件系统/并行8位128M容量SLC NAND):

real    0m 3.39s
user    0m 0.09s
sys     0m 2.05s

 

其中,sys是指该组命令在内核空间耗费的时间,user是指在用户空间耗费的时间,real是指总时间,总时间real与user和sys的关系如下:

real = user + sys + 调度器切换任务的时间

所以,我们看到的是real总是大于等于user+sys之和

那么,NAND写入速度VW的算法为:

VW= (bs*count)/real = (10000KB/3.39s) = 2949.85KB/s = 2.88M/s (实际速度会比这个值略微偏大,因为real=sys+user+调度时间)

注意,bs 尽量不要大于NAND的页大小(PageSize), count越大测试效果越明显

而测试NAND读出速度的命令为:cat,例如:

time cat /path/to/fileinnand > /dev/null

控制台输出内容大致如下(新塘N32926/Linux2.6.35/FAT文件系统/并行8位128M容量SLC NAND):

real    0m 0.01s
user    0m 0.00s
sys     0m 0.01s

 

那么,NAND读出速度VR的算法为:

VR= (bs*count)/real = (10000KB/0.01s) = 1000000KB/s = 976.6M/s

这看起来有点不可思议,是自己测试错了么?

首先,误差肯定有,可以通过增大count大小使得fileinnand文件变大来缩小上述误差

其次,在执行上述读速度命令前,建议先执行sync命令,以便同步缓存,或者使用其他清空文件系统缓存工具

最后,读速度一般会远远高于写入速度,因为NAND是以块为单位读、以页为单位写,页是块的构成单元,操作的对象颗粒度不同,自然速度也不同。

本文没有什么深度,只是简单描述,在各位网友面前献丑了!

谢谢阅读!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东旗极限定制

乐善小舍,福报大得!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值