本文详细讲述使用iozone
进行io读写的测试,包括iozone
的交叉编译以及参数设置和结果的解析。
iozone简介
iozone
是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。 可以测试 Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。
也就是说,这个工具专门用来测试文件系统的读写性能。
参考资料
- 官方网站:http://www.iozone.org/
- 官方文档:http://www.iozone.org/docs/IOzone_msword_98.pdf
- 参考资料:
https://blog.csdn.net/a624731186/article/details/41307387
https://www.thegeekstuff.com/2011/05/iozone-examples
交叉编译
因为我是使用ARCH arm64的,在提供的官方源码中没有arm64的编译选项,因此需要进行交叉编译。指定CC
和GCC
参数为自己的交叉工具链gcc
即可,
编译命令如下:
1 | victor@victor-HP:~/victor/xxx_project/iozone3_482/src/current$ make CC=~/victor/xxx_project/prebuilt/toolchains/aarch64-imx6-linux/bin/aarch64-poky-linux-gcc \ |
编译过程如下:
1 | victor@victor-HP:~/victor/xxx_project/iozone3_482/src/current$ make CC=~/victor/xxx_project/prebuilt/toolchains/aarch64-imx6-linux/bin/aarch64-poky-linux-gcc GCC=~/victor/xxx_project/prebuilt/toolchains/aarch64-imx6-linux/bin/aarch64-poky-linux-gcc linux-arm |
查看文件类型可以看到是arch arm64的格式了,可以将交叉编译出来的应用程序iozone
拷贝到板子上运行。
1 | victor@victor-HP:~/victor/xxx_project/iozone3_482/src/current$ file iozone |
iozone的使用
测试命令如下:./iozone -azecI -+n -L64 -S32 -r2m -s128m -i0 -i2 -+b 400000,30000 -w -f testfile -Rb /var/test/emmc_test.xls
1 | # ./iozone -azecI -+n -L64 -S32 -r2m -s128m -i0 -i2 -+b 400000,30000 -w -f testfile -Rb /var/test/emmc_test.xls |
根据测试结果我们知道,随机写128MBytes的传输速度为10MB/s,随机读的传输速度约为80MB/s。读的性能与datasheet上提供的Sequential read
的差不多的,但是写的性能与Sequential write
还是有一定的差距。
各个参数定义如下:
a
: Auto modez
: Used in conjunction with -a to test all possible record sizese
: Include flush (fsync,fflush) in the timing calculationsc
: Include close in the timing calculationsI
: Use VxFS VX_DIRECT, O_DIRECT,or O_DIRECTIO for all file operations-+n
: No retests selectedL64
: Set processor cache line size to 64 BytesS32
: Set processor cache size to 32KBytesr2m
: record size 2Ms128m
: file size 128Mi0
: Test to run write/rewritei2
: Test to run random-read/write-+b 400000,30000
: burst size 400000KBytes,sleep between burst 30000msw
: Do not unlink temporary filef
: set testfile filename to useR
: Generate Excel reportb
: Filename Create Excel worksheet file,emmc_test.xls
iozone用法帮助
1 | # ./iozone -h |