安装 fio
CentOS 中
yum install libaio-devel fio
开始测试
测试随机写IOPS:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=iotest
测试随机读IOPS:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=iotest
测试顺序写吞吐量:
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=iotest
测试顺序读吞吐量:
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=iotest
测试IO读取延迟:
fio -direct=1 -iodepth=1 -rw=randread -ioengine=sync -bs=4k -size=256M -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=iotest
测试IO写入延迟:
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=sync -bs=4k -size=256M -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=iotest
参数 |
说明 |
-direct=1 |
表示测试时忽略I/O缓存,数据直写。 |
-iodepth=128 |
表示使用AIO时,同时发出I/O数的上限为128。 |
-rw=randwrite |
表示测试时的读写策略为随机写(random writes)。作其它测试时可以设置为:randread(随机读random reads)read(顺序读sequential reads)write(顺序写sequential writes)randrw(混合随机读写mixed random reads and writes) |
-ioengine=libaio |
表示测试方式为libaio(Linux AIO,异步I/O)。应用程序使用I/O通常有两种方式:同步同步的I/O一次只能发出一个I/O请求,等待内核完成才返回。这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决。通常会用16−32根线程同时工作将iodepth塞满。异步异步的I/O通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。 |
-bs=4k |
表示单次I/O的块文件大小为4 KB。未指定该参数时的默认大小也是4 KB。测试IOPS时,建议将bs 设置为一个比较小的值,如本示例中的4k。测试吞吐量时,建议将bs 设置为一个较大的值,如本示例中的1024k。 |
-size=1G |
表示测试文件大小为1 GiB。 |
-numjobs=1 |
表示测试线程数为1。 |
-runtime=1000 |
表示测试时间为1000秒。如果未配置,则持续将前述-size 指定大小的文件,以每次-bs 值为分块大小写完。 |
-group_reporting |
表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。 |
-filename=iotest |
指定测试文件的名称,比如iotest。测试裸盘可以获得真实的硬盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份。 |
-name=Rand_Write_Testing |
表示测试任务名称为Rand_Write_Testing,可以随意设定。 |
网友评论