🍎1. 引言
Fio是意大利富豪家的独生女。由于家中世世代代以军为职,而且因为常居军中高位而在意大利是非常显赫的一家,既然如此,Fio的父亲自然非常希望能有个儿子,偏偏生下个女孩,并且妻子已经无法再生育,于是Fio成了独生女,而后Fio参与了合金弹头系列的游戏……
扯歪了,回归正题……
本文的目的是测试基于arm开发板上的Linux系统下的磁盘性能,通过fio测试开发板运行时的磁盘性能系数。
🍎2. FIO介绍
fio是一个IO测试工具,可以运行在Linux、Windows等多种系统之上,可以用来测试本地磁盘、网络存储等的性能。可以通过运行响应的fio负载,测试不同平台下磁盘的性能。
- Fio的GitHub官网地址: fio
- Freecode地址:fio-freecode
关于fio的详解其他博主已经写的十分详细了,可以看下这位Linux -fio命令详解的文章 这里描述以下我在使用过程中的一些小坑
- 参数 -filename所针对的是裸设备,什么是裸设备?顾名思义就是什么都没有的设备,这就说明只适合拿来测试空的磁盘,对于非空的磁盘,会导致磁盘内的分区被破环,最终系统会崩溃(这是真的,我第一次使用时,系统崩溃了,还以为是我用错命令了,重新烧录系统后进行第二次测试才发现库文件正在被删除,果断放弃使用这个参数)
- 针对上面的问题,若一定要测试系统分区的性能,那么可以在根目录下创建一个空目录,在测试命令中使用参数 -directory指定该目录
🍎3. fio移植ARM开发板
这里有一个问题需要注意:你得开发板所支持的交叉编译链版本是多少(4.9以上/4.9以下),是哪个平台(如aarch64/arm),找到自己开发板能使用的fio版本,我这里使用的时fio的2.1.10版本,交叉编译链是arm-linux-gnueabihf-g+±4.6。如果你的情况也是这个的话,可以直接下载我这里编译好的,移植到开发板即可
🍇3.1 若没安装过交叉编译链
- 安装交叉编译链
sudo apt install g++-arm-linux-gnueabihf
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
- 下载编译fio
git clone git://git.kernel.dk/fio.git
cd fio
make
🍇3.2 安装有交叉编译链
git clone git://git.kernel.dk/fio.git
cd fio
make clean
make CROSS_COMPILE=/path/arm-linux-gnueabihf- //path为你的交叉编译链安装的位置
🍇3.3 移植到开发板上
我没有用过串口,所以串口怎么传输的我不太懂……
我用的是Xftp传输的文件,参考Xshell远程连接虚拟机、
🍎4. fio使用
这里我只是简单的测试了磁盘的读写性能,关于其他的没有更多的涉及,详细部分可以参考介绍里那位博主的文章
- 文件移植到开发板后,需要给fio文件增加执行权限
cd fio
chmod +x fio
- 下面是六种测试方法
// 顺序读
sudo ./fio -directory=/home/ubuntu/test -direct=1 -numjobs=1 -thread -group_reporting -ioengine=psync -iodepth=1 -size=128M -name=mytest -bs=1K -rw=read
// 顺序写
sudo ./fio -directory=/home/ubuntu/test -direct=1 -numjobs=1 -thread -group_reporting -ioengine=psync -iodepth=1 -size=128M -name=mytest -bs=1K -rw=write
// 随机读
sudo ./fio -directory=/home/ubuntu/test -direct=1 -numjobs=1 -thread -group_reporting -ioengine=psync -iodepth=1 -size=128M -name=mytest -bs=1K -rw=randread
// 随机写
sudo ./fio -directory=/home/ubuntu/test -direct=1 -numjobs=1 -thread -group_reporting -ioengine=psync -iodepth=1 -size=128M -name=mytest -bs=1K -rw=randwrite
// 顺序读写
sudo ./fio -directory=/home/ubuntu/test -direct=1 -numjobs=1 -thread -group_reporting -ioengine=psync -iodepth=1 -size=128M -name=mytest -bs=1K -rw=rw
// 随机读写
sudo ./fio -directory=/home/ubuntu/test -direct=1 -numjobs=1 -thread -group_reporting -ioengine=psync -iodepth=1 -size=128M -name=mytest -bs=1K -rw=randrw