新闻  |   论坛  |   博客  |   在线研讨会
linux准确测量U盘读写速度
电子禅石 | 2020-01-13 17:02:42    阅读:13520   发布文章

linux准确测量U盘读写速度


## 挂载U盘
mount -t vfat /dev/sda1 /var/sdcard
 
## 测试写入100MB速度
sync;time dd if=/dev/zero of=/var/sdcard/largefile bs=10k count=10240;time sync
 
## 测试读取100MB速度 (清除缓存)
sync;echo 3 > /proc/sys/vm/drop_caches;time dd if=/var/sdcard/largefile of=/dev/null bs=10k

上述测试方法就相对比较准确!
        写入100MB时,先刷新flash后,才测量dd命令生成100MB到缓存(同时也有部分正在写入flash)的时间Tdd,最后测量sync的时间Tsync,这个时间即为从缓存写到U盘的时间。平均写入速度为:100MB/(Tdd+Tsync)。
        测量读取速度时,亦先sync把缓存中的杂数据写写进flash,并且清除缓存。最后才记录dd命令从U盘写入RAM的时间Tdd,因为/dev/null为tmpfs,没必要计算Tsync,平均读取速度为:100MB/Tdd。
        另外,time命令算出的时间要使用real对应的值。
————————————————

1. dd命令简述:

  if=输入文件, of=输出文件, ibs=一次读取字节数, obs=一次写入字节数, bs=设置一次读取写入的字节数, skip=跳过的bs数, count=拷贝的块数

2. 使用/dev/null和/dev/zero

  1. 把/dev/null看作"黑洞", 它等价于一个只写文件, 所有写入它的内容都会永远丢失

  2. /dev/zero是一个伪文件, 但它实际上产生连续不断的null的流

## 切入u盘目录,测试写入速度
# dd if=/dev/zero of=./largefile bs=8k count=10
10+0 records in
10+0 records out
81920 bytes (82 MB) copied, 11.0626 s, 7.4 MB/s

## 测试读取速度 (清除缓存)
# sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"     
# dd if=./largefile of=/dev/null bs=8k
8+0 records in
8+0 records out
65536 bytes (66 MB) copied, 2.90366 s, 22.6 MB/s

实测例子:

sync;time dd if=/dev/zero of=/media/sda1/largefile  bs=10k count=1024;time sync
1024+0 records in
1024+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.272702 s, 38.5 MB/s
real    0m0.282s
user    0m0.000s
sys     0m0.270s
real    0m0.474s
user    0m0.000s
sys     0m0.010s

root@imx6qsabresd:/media/sda1# sync;echo 3>/proc/sys/vm/drop_caches;time dd if=/media/sda1/largefile of=/dev/null bs=10k
1024+0 records in
1024+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0330447 s, 317 MB/s
real    0m0.042s
user    0m0.000s
sys     0m0.040s


原文链接:https://blog.csdn.net/litao31415/article/details/99683790


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客