使用fio测试之前安装fio需要的依赖 libaio 和librbd-dev librados-dev
可以把fio的输出数据自动画图的插件:gnuplot (apt-get install gnuplot)
fio下载解压后的文件夹里面有个examples文件夹,里面有测试脚本样例。
下载地址:http://brick.kernel.dk/snaps/
tar -zxvf fio-2.0.7.tar.gz
cd fio-2.0.7
make
make install
执行测试样例命令:
$: /usr/local/bin/fio Jrbd.fio
1.输出bw,lat和iops数据并画图
fio安装完后自带有一个高级脚本fio_generate_plots能够根据fio输出的数据进行画图。操作流程如下:
1.1设置fio输出详细日志
fio的输出日志主要包含三种:bw,lat和iops,设置这三种的参数如下:
write_bw_log=rw
write_lat_log=rw
write_iops_log=rw
这里需要强调的一点是,后面接的参数rw,是输出日志文件名的prefix,如最终会生成的日志文件如下:
rw_iops.log
rw_clat.log
rw_slat.log
rw_lat.log
rw_bw.log
这个参数在后面画图的时候也要用到。
for i in clat lat slat bw iops;do mv rbd_$i.1.log rbd_$i.log;done
前提是还需要安装好gnuplot,然后使用下面的命令即可自动画图:
root@ubuntu:/tmp> fio_generate_plots bw
发现没有,fio_generate_plots接受的唯一参数就是这个日志文件名的prefix。
本例中生成的图片文件有:
bw-bw.svg
bw-clat.svg
bw-iops.svg
bw-lat.svg
bw-slat.svg
随机读:
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
本文出自“he ivy ”的博客,转载请务必保留此出处:http://blog.csdn.net/heivy/article/details/51516390