一. U盘传输速度简介
1、目前U盘主要为采用USB 2.0和3.0两种接口,其中USB 2.0理论传输速度为480 Mbps,即60 MB/s;USB 3.0理论传输速度为5.0Gbps,也就是640MB/s;
2、不过限制于硬件的原因,因此U盘并不能达到理论的读写效率,在USB2.0接口下的U盘写速度一般是4-15M/S 读取一般是10-30M/S算比较好的U盘了;
3、USB3.0接口下的U盘写速度一般是15-80M/S,读取速度一般是20-90M/S,当然有一些高端的U盘产品已经能够达到读取190m/s和写入180m/s的速度;
以下测试在某硬件平台上,不作为所有硬件平台的标准(测试usb 3.0接口的读写速度)
二. 读写优盘测试方法
2.1 linux命令dd
2.2.1 写入速度
~$ sudo dd if=/dev/zero of=/dev/sdb bs=10M count=100;time sync
记录了100+0 的读入
记录了100+0 的写出
1048576000 bytes (1.0 GB, 1000 MiB) copied, 35.9307 s, 29.2 MB/s
real 0m0.007s
user 0m0.001s
sys 0m0.000s
写入1GB时,先刷新flash后,才测量dd命令生成1GB到缓存(同时也有部分正在写入flash)的时间Tdd,最后测量sync的时间Tsync,这个时间即为从缓存写到U盘的时间。平均写入速度为:1GB/(Tdd+Tsync)。
2.1.2 读取速度
~$ sudo sync;sudo echo 3 > /proc/sys/vm/drop_caches;time dd if=/dev/sdb of=/dev/null bs=10M count=100
bash: /proc/sys/vm/drop_caches: 权限不够
dd: 打开'/dev/sdb' 失败: 权限不够
real 0m0.001s
user 0m0.001s
sys 0m0.000s
读取速度未测,平台暂时不能设置root密码,sudo命令不能清除缓存
测量读取速度时,亦先sync把缓存中的杂数据写写进flash,并且清除缓存。最后才记录dd命令从U盘写入RAM的时间Tdd,因为/dev/null为tmpfs,没必要计算Tsync,平均读取速度为:1GB/Tdd。
部分参数解析:
1. 把/dev/null看作"黑洞", 它等价于一个只写文件, 所有写入它的内容都会永远丢失
2. /dev/zero是一个伪文件, “零”设备,可以无限的提供空字符(0x00,ASCII代码NUL)。
2.2 hdparm
有资料说明linux在开启debug模式的时候可以做到查看usb设备速度,这点没有做测试:
debug 模式下 cat /sys/kernel/debug/usb/devices
另,u盘传输速度还与什么相关,在知乎中我们找到了和主控器以及存储设备相关
https://www.zhihu.com/question/52736281