fio 测试iops


fio的安装:
ubuntu下:联网时直接:apt-get install fio

centos下:先安装libaio再安装fio:

rpm -ivh libaio-devel-0.3.107-10.el6.x86_64.rpm
cd fio-2.0.12.1
make
make install

使用示例:
fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bssplit=4k/30:8k/40:16k/30 -size=1G -numjobs=20  -group_reporting -name=mytest

注意:
(1)filename参数指定某个要测试的裸设备(硬盘或分区),切勿在系统分区做测试,会破坏系统分区,而导致系统崩溃。若一定要测试系统分区较为安全的方法是:在根目录下创建一个空目录,在测试命令中使用directory参数指定该目录,而不使用filename参数,例如:
fio -directory=/test/ ……
(2)关于测试文件大小:在进行写测试时,fio会在指定目录创建测试文件,测试文件的大小为size参数指定的大小,若在numjobs参数中指定了多个进程,则会创建指定个数的文件,命名方法为:name.1、name.2、name.3、……

参数:

direct       设置非缓冲io
iodepth    
ioengine=libaio        //指定io引擎
userspace_reap      //配合libaio,提高异步io的收割速度
rw=randrw                //混合随机对写io,默认读写比例5:5
rwmixwrite=20         //在混合读写的模式下,写占20%
time_based             //在runtime压力测试周期内,如果规定数据量测试完,要重复测试 
runtime=180            //在180秒,压力测试将终止
group_reporting      //如果设置了多任务参数numjobs,用每组报告代替每job报告
randrepeat=0         //设置产生的随机数是不可重复的

exitall                                                     //一个job完成,就停止所有的
filename=/dev/mapper/cachedev    //压力测试的文件名
numjobs=1                                         //job的默认数量,也就是并发数,默认是1
size=200G                                          //这job总共的io大小
refill_buffers                                      //每次提交后都重复填充io buffer
overwrite=1                                       //设置文件可覆盖
sync=1                                              //设置异步io
fsync=1                                             //一个io就同步数据
invalidate=1                                   //开始io之前就失效buffer-cache
directory=/your_dir                        // fielname参数值的前缀
thinktime=600                              //在发布io前等待600秒
thinktime_spin=200    //消费cpu的时间,thinktime的剩余时间sleep
thinktime_blocks=2    //在thinktime之前发布的block数量

bssplit=4k/30:8k/40:16k/30            //随机读4k文件占30%、8k占40%、16k占30%
rwmixread=70                                                         //读占70% 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章