1. 下载安装
官网:http://freecode.com/projects/fio
wget http://brick.kernel.dk/snaps/fio-2.2.5.tar.gz
yum install libaio-devel
yum install gcc
tar -zxvf fio-2.2.5.tar.gz
./configure
cd fio-2.2.5
make
make install
2. 使用
每次测试前执行 echo 3 > /proc/sys/vm/drop_caches 清理缓存。
测试随机写IOPS:fio -direct=1-iodepth=128 -rw=randwrite -ioengine=libaio -bs=4K -size=128G - numjobs=1 -runtime=600 -group_reporting -filename=/dev/[device] -name=Rand_Write_IOPS_Test
测试随机读IOPS:fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4K -size=128G - numjobs=1 -runtime=600 -group_reporting -filename=/dev/[device] -name=Rand_Read_IOPS_Test
测试写吞吐量:fio -direct=1 -iodepth=32 -rw=write -ioengine=libaio -bs=4M -size=128G -numjobs=1 - runtime=600 -group_reporting -filename=/dev/[device] -name=Write_BandWidth_Test
测试读吞吐量:fio -direct=1 -iodepth=32 -rw=read -ioengine=libaio -bs=4M -size=128G -numjobs=1 - runtime=600 -group_reporting -filename=/dev/[device] -name=Read_BandWidth_Test
参数 | 说明 |
direct | 定义是否使用direct IO,可选值如下:值为0,表示使用buffered IO;值为1,表示使用 direct IO |
iodepth | 定义测试时的IO队列深度,默认为1。此处定义的队列深度是指每个线程的队列深度, 如果有多个线程测试,意味着每个线程都是此处定义的队列深度。fio总的IO并发数 =iodepth * numjobs。 |
rw | 定义测试时的读写策略,可选值如下:随机读:randread,随机写:randwrite,顺序读: read,顺序写:write,混合随机读写:randrw0 |
ioengine | 定义fio如何下发IO请求,通常有同步IO和异步IO:同步IO一次只能发出一个IO请求, 等待内核完成后才返回。这样对于单个线程IO队列深度总是小于1,但是可以透过多个线程并发执行来解决。通常会用16~32个线程同时工作把IO队列深度塞满。异步IO则通常使用libaio这样的方式一次提交一批IO 请求,然后等待一批的完成,减少交互的次 数,会更有效率。 |
bs | 定义IO的块大小(block size),单位是k、K、m和M等,默认IO块大小为4 KB。 |
size | 定义测试IO操作的数据量,若未指定runtime这类参数,fio会将指定大小的数据量全部 读/写完成,然后才停止测试。该参数的值,可以是带单位的数字,比如size=10G,表 示读/写的数据量为10GB;也可是百分数,比如size=20%,表示读/写的数据量占该设 备总文件的20%的空间。建议测试数据量为内存两倍大,尽量避免缓存影响。 |
numjobs | 定义测试的并发线程数。 |
runtime | 定义测试时间。如果未配置,则持续将size指定的文件大小,以每次bs值为分块大小读/ 写完。 |
group_reporting | 定义测试结果显示模式,group_reporting 表示汇总每个进程的统计信息,而非以不同 job汇总展示信息。 |
filename | 定义测试文件(设备)的名称。此处选择文件,则代表测试文件系统的性能,例如:- filename=/opt/fiotest/fiotest.txt;此处选择设备名称,则代表测试裸盘的性能,例:-filename=/dev/vdb1 。注:如果在已经分区、并创建文件系统,且已写入数据的磁盘上进行性能测试,请注意 filename选择指定文件,以避免覆盖文件系统和原有数据。 |
name | 定义测试任务名称。 |
文件系统4k顺序读测试
fio -filename=/home/jiangkuan/packages/fio-2.2.5.tar.gz -direct=1 -rw=read -bs=4k -size=15G -numjobs=64 -runtime=300 -group_reporting -name=test-read