块设备的测试

本文介绍了嵌入式开发中块设备的测试,包括Linux中的读写机制、块设备的读写速度测试以及可靠性测试。通过dd命令演示如何在不同条件下测试读写速度,并确保在不同温度下数据的准确性。测试过程涉及到缓存管理、md5校验以及避免文件系统破坏的操作方法。
摘要由CSDN通过智能技术生成

块设备的测试

对于嵌入式开发,有时需要测试块设备,本文将以mmc设备为例,分析各种测试方法

1.Linux中的读写机制

由于块设备物理上的特殊性,读写很慢,而且时机、顺序、大小都比较重要。所以VFS(Virtual File System)中引入了高速缓存的机制,这属于一种软件机制,允许内核将原本存在块设备上的某些信息保存在内存中,以便对这些数据的进一步访问能快速进行,而不必慢速访问块设备本身

  • 比如往块设备上写数据时,VFS文件系统采用了文件数据延迟写的技术,因此,如果在调用系统接口写入数据时没有使用同步写模式,那么大多数据将会先保存在缓存中,待等到满足某些条件时才将数据刷入块设备里
  • 比如从块设备上读数据时,系统会先将数据往缓存里放一份,如果下次要读的数据与该数据有部分重合,那么下次就会直接从缓存读了,而并不会真的从块设备中读取
  • 总之,缓存的存在大大方便了读写块设备,只要缓存内数据能解决的,就绝对不会劳烦去读写块设备,相当智能

2.块设备的读写速度测试

对于块设备读写速度测试,最重要的是避开缓存和其他进程的干扰

  • 首先利用killall -9 xxx杀死应用层非系统自带的进程
  • 读速度测试
    echo 3 > /proc/sys/vm/drop_caches
    time dd if=/dev/mmcblkxxx of=/xxx/xxx bs=1M count=100 conv=fsync
    首先清空系统的缓存,强制系统直接去块设备中读取。然后用time,来测试dd命令消耗的时间, of的路径应该设为内存,比如常见的/tmp目录下可能就挂载了内存,根据系统设置灵活更改。fsync参数保证了数据被同步到块设备中,命令才返回。最后的返回值realtime是我们需要的,这个返回值包含了数据被同步到块设备中的时间
  • 写速度测试
    echo 3 > /proc/sys/vm/drop_caches
    dd if=/dev/urandom of=/xxx/xxx bs=1M count=100
    time dd if=/xxx/xxx of=/dev/mmcblkxxx bs=1M count=100 conv=fsync
    首先清空系统的缓存。先在内存中生成一个文件,内容是随机数&#x
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值