USB,英文全称:Universal Serial Bus,即通用串行总线。
常常各种USB芯片同时具有host和device两种接口。host就是主的,可以起控制作用;device(slave)就是从,是被控制的。比如PC机的USB口,可以识别U盘或者其他USB设备,起到控制的作用,就是host;而U盘是被控制的,是device(slave)。
只有一个host和一个device(slave)才能起到数据传输或者控制的作用。
UFS/EMMC: Flash Memory,主要作用是作为存储设备(storage)/文件系统,主要都是针对移动设备发明的
环境准备
- 测试设备
- 软件版本:性能模式下的设备(perf kernel 或者 gki kernel)
- 测试工具:tiotest,tiotest
- USB3.0及以上USB设备,目前测试选择:SSD
- Push tiotest文件到设备,路径不限
adb push tiotest /usr/bin/
adb shell
chmod 777 /usr/bin/tiotest
测试方法一
-
UFS/EMMC测试:
tiotest -t 8 -d /data -f 1024 -k 1 -k 3 -L -
USB Type-A测试:
连接USB设备,mount
tiotest -t 8 -d /mnt/sdcard -f 1024 -k 1 -k 3 -L -
单位:MB/s
-
测试数据取3次平均值
-
参数含义
-t NumberOfThreads
The number of concurrent test threads. Defaults to 4.
-d TestDir
The directory in which to test. Defaults to ., the current directory.
-f SizeInMB
The filesize per threat in MBytes. Defaults to 10 MB.
-b BlkSizeInBytes
The blocksize in Bytes to use. Defaults to 4096.
-k SkipTestNoN
Skip test number n. Could be used several times.
-L
Hide latency output.
测试方法二
Linux dd 命令:使用dd这个linux命令可以创建一定大小文件。
原理:
通过创建指定大小的的文件所花的时间来计算读写速度
速度=文件大小/时间
Write:
echo 3 > /proc/sys/vm/drop_caches
dd if=/dev/zero of=/data/test.img count=102 bs=20M oflag=direct
/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO.
IO都会集中在of文件 中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。
Read:
echo 3 > /proc/sys/vm/drop_caches
dd if=/data/test.img of=/dev/null count=102 bs=20M
/data/test.img是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞.
of到该设备不会产生IO,这个命令的IO只发生在/data/test.img上,也相当于测试磁盘的读能力.
参数解释:
- if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
- of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
- dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来测试纯读速度。bs是每次读或写的大小,即一个块的大小, count是读写块的数量。
- iflag/oflag 提供 direct 模式,direct 模式是把写入请求直接封装成 I/O 指令发到磁盘,非 direct 模式只是把数据写入到系统缓存就认为 I/O 成功,并由操作系统决定缓存中的数据什么时候被写入磁盘。