FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet , guasi, solarisaio等等。
fio官网地址:http://freshmeat.net/projects/fio/

一,FIO安装
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
yum install libaio-devel
tar -zxvf fio-2.0.7.tar.gz
cd fio-2.0.7
make
make install

二,FIO用法:

随机读:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine= psync -bs=16k -size=200G -numjobs=10 -runtime=1000 -group_reporting -name=mytest

说明:
filename=/dev/sdb1测试文件名称,通常选择需要测试的盘的data目录。
direct=1测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite测试随机写的I/O
rw=randrw测试随机写和读的I/O
bs=16k单次io的块文件大小为16k
bsrange=512-2048同上,提定数据块的大小范围
size=5g本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30本次的测试线程为30.
runtime=1000测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30在混合读写的模式下,写占30%
group_reporting关于显示结果的,汇总每个进程的信息。

此外
lockmem=1g只使用1g内存进行测试。
zero_buffers用0初始化系统buffer。
nrfiles=8每个进程生成文件的数量。

顺序读:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest

随机写:
fio -filename = / dev / sdb1 -direct = 1 -iodepth 1 -thread -rw = randwrite -ioengine = psync -bs = 16k -size = 200G -numjobs = 30 -runtime = 1000 -group_reporting -name = mytest

顺序写:
fio -filename = / dev / sdb1 -direct = 1 -iodepth 1 -thread -rw = write -ioengine = psync -bs = 16k -size = 200G -numjobs = 30 -runtime = 1000 -group_reporting -name = mytest

混合随机读写:
fio -filename = / dev / sdb1 -direct = 1 -iodepth 1 -thread -rw = randrw -rwmixread = 70 -ioengine = psync -bs = 16k -size = 200G -numjobs = 30 -runtime = 100 -group_reporting - name = mytest -ioscheduler = noop



三,实际测试范例:

[root @ localhost~] #fio -filename = / dev / sdb1 -direct = 1 -iodepth 1 -thread -rw = randrw -rwmixread = 70 -ioengine = psync - bs = 16k -size = 200G -numjobs = 30 -runtime = 100 -group_reporting -name = mytest1
mytest1:(g = 0):rw = randrw,bs = 16K-16K / 16K-16K,ioengine = psync,iodepth = 1
...
mytest1:(g = 0):rw = randrw,bs = 16K-16K / 16K- 16K,ioengine = psync,iodepth = 1
fio 2.0.7
开始30个线程
工作:1(f = 1):[________________m_____________] [完成3.5%] [6935K / 3116K / s] [423/190 iops] [eta 48m: 20s] s]
mytest1 :( groupid = 0,jobs = 30):err = 0:pid = 23802
读:io = 1853.4MB,bw = 18967KB / s,iops = 1185,runt = 100058msec
clat(usec):min = 60,max = 871116,avg = 25227.91,stdev = 31653.46
lat(usec):min = 60,max = 871117,avg = 25228.08,stdev = 31653.46
clat百分位数(msec):
| 1.00th = [3],5.00th = [5],10.00th = [6],20.00th = [8],
| 30.00th = [10],40.00th = [12],50.00th = [15],60.00th = [19],
| 70.00th = [26],80.00th = [37],90.00th = [57],95.00th = [79],
| 99.00th = [151],99.50th = [202],99.90th = [338],99.95th = [383],
| 99.99th = [523]
bw(KB / s):min = 26,max = 1944,per = 3.36%,avg = 636.84,stdev = 189.15
write:io = 803600KB,bw = 8031.4KB / s,iops = 501, runt = 100058msec
clat(usec):min = 52,max = 9302,avg = 146.25,stdev = 299.17
lat(usec):min = 52,max = 9303,avg = 147.19,
stdev = 299.17 clat百分位数(usec):
| 1.00th = [62],5.00th = [65],10.00th = [68],20.00th = [74],
| 30.00th = [84],40.00th = [87],50.00th = [89],60.00th = [90],
| 70.00th = [92],80.00th = [97],90.00th = [120],95.00th = [370],
| 99.00th = [1688],99.50th = [2128],99.90th = [3088],99.95th = [3696],
| 99.99th = [5216]
bw(KB / s):min = 20,max = 1117,per = 3.37%,avg = 270.27,stdev = 133.27
lat(usec):100 = 24.32%,250 = 3.83%,500 = 0.33%,750 = 0.28%,1000 = 0.27%
lat(msec):2 = 0.64%,4 = 3.08%,10 = 20.67%,20 = 19.90%,50 = 17.91%
lat(msec):100 = 6.87% ,250 = 1.70%,500 = 0.19%,750 = 0.01%,1000 = 0.01%
cpu:usr = 1.70%,sys = 2.41%,ctx = 5237835,majf = 0,minf = 6344162
IO深度:1 = 100.0% ,2 = 0.0%,4 = 0.0%,8 = 0.0%,16 = 0.0%,32 = 0.0%,> = 64 = 0.0%
提交:0 = 0.0%,4 = 100.0%,8 = 0.0%,16 = 0.0%,32 = 0.0%,64 = 0.0%,> = 64 = 0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=118612/w=50225/ d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
READ: io=1853.4MB, aggrb=18966KB/s, minb=18966KB/s, maxb=18966KB/s , mint=100058msec, maxt=100058msec
WRITE: io=803600KB, aggrb=8031KB/s, minb=8031KB/s, maxb=8031KB/s, mint=100058msec, maxt=100058msec

Disk stats (read/write):
sdb: ios =118610/50224, merge=0/0, ticks=2991317/6860, in_queue=2998169, util=99.77%

主要查看以上红色字体部分的iops