注意事项
想用fio测出eMMC最好的读写性能要注意以下几点。
- eMMC性能受限于eMMC芯片本身,所以可从datasheet上查看性能数据作为参考。
- eMMC的速度模式和始终频率决定传输速度,目前eMMC 5.1最高的速度模式是HS400, 8-bit数据总线,200MHz模式。
- 顺序读写性能相对会高。
- eMMC厂商可能在eMMC芯片中实现了buffer,比如200MB的buffer。如果传输文件大小小于buffer,那么传输速度是非常快的。但是datasheet可能并不会告诉你它的存在。所以测试时,可以使用小的文件size看看性能有没有提升。
fio交叉编译
我的测试是在一个arm64的板子上。
安装工具链
apt install gcc-aarch64-linux-gnu
export ARCH=aarch64
export CROSS_COMPILE=aarch64-linux-gnu-
下载编译fio
直接make,就会自动按aarch64的平台编译。
git clone git://git.kernel.dk/fio.git
cd fio
git reset --hard fio-3.25
make
fio测试
首先查看当前eMMC的信息,包括速度模式,数据总线宽度,时钟频率。可以看到速度模式,数据总线宽度都是最高,但是实际时钟频率150MHz比协议最高时钟频率200MHz还是低一些,这会影响性能。
# cat /sys/kernel/debug/mmc1/ios
clock: 200000000 Hz
actual clock: 150000000 Hz
vdd: