FIO使用

来源:互联网 发布:阿里巴巴产品标题优化 编辑:程序博客网 时间:2024/06/09 04:31

fio

1. 安装

wget http://freecode.com/urls/3aa21b8c106cab742bf1f20d60629e3f

tar xf fio-2.1.10.tar.gz

cd fio-2.1.10

yum -y install libaio-devel #必须提前安装

make

make install

 

2. 用法

随机读:

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,以每次4kio进行测试。

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                每个进程生成文件的数量。

相应参数含义

read 顺序读

write 顺序写

rw,readwrite 顺序混合读写

randwrite 随机写

randread 随机读

randrw 随机混合读写

io总的输入输出量 

bw:带宽   KB/s 

iops:每秒钟的IO

runt:总运行时间

lat (msec):延迟(毫秒)

msec:毫秒

 usec:微秒

顺序读:

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

 

3. 三,实际测试范例:

顺序读

测试命令:fio -name iops -rw=read -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

 

SATA

Jobs: 1 (f=1): [R] [16.4% done] [124.1M/0K /s] [31.3K/0  iops] [eta 00m:51s]

SAS

Jobs: 1 (f=1): [R] [16.4% done] [190M/0K /s] [41.3K/0  iops] [eta 00m:51s]

SSD

Jobs: 1 (f=1): [R] [100.0% done] [404M/0K /s] [103K /0  iops] [eta 00m:00s]

可以看到在对4KB数据包进行连续读的情况下:

 

SSD其速度可以达到404MB/SIOPS达到103K/S

 

SAS其速度可以达到190MB/SIOPS达到41K/S

 

SATA其速度可以达到124MB/SIOPS达到31K/S

 

顺序读,SAS总体表现是SATA硬盘的1.3倍,SSD总体表现是sata硬盘的4倍。

 

 

 

随机读

测试命令 fio -name iops -rw=randread -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

 

SATA

Jobs: 1 (f=1): [r] [41.0% done] [466K/0K /s] [114 /0  iops] [eta 00m:36s]

SAS

Jobs: 1 (f=1): [r] [41.0% done] [1784K/0K /s] [456 /0  iops] [eta 00m:36s]

SSD

Jobs: 1 (f=1): [R] [100.0% done] [505M/0K /s] [129K /0  iops] [eta 00m:00s]

随机读,SAS总体表现是SATA硬盘的4倍,SSD总体表现是sata硬盘的一千多倍。

 

 

 

顺序写

测试命令:fio -name iops -rw=write -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

 

SATA

Jobs: 1 (f=1): [W] [21.3% done] [0K/124.9M /s] [0 /31.3K iops] [eta 00m:48s]

SAS

Jobs: 1 (f=1): [W] [21.3% done] [0K/190M /s] [0 /36.3K iops] [eta 00m:48s]

SSD

Jobs: 1 (f=1): [W] [100.0% done] [0K/592M /s] [0 /152K  iops] [eta 00m:00s]

同样的4KB数据包顺序写的情况下,SSD卡的成绩为592MB/SIOPS152K。而本地硬盘仅为118MB/SIOPS仅为30290

 

 

 

随机写

测试命令: fio -name iops -rw=randwrite -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1

 

SATA

Jobs: 1 (f=1): [w] [100.0% done] [0K/548K /s] [0 /134  iops] [eta 00m:00s]

SAS

Jobs: 1 (f=1): [w] [100.0% done] [0K/2000K /s] [0 /512  iops] [eta 00m:00s]

SSD

Jobs: 1 (f=1): [W] [100.0% done] [0K/549M /s] [0 /140K  iops] [eta 00m:00s]

 

在接下来的4KB数据包随机写操作中,SSD卡再次展示了其高超的IO性能,高达549MB/S的随机写速率,IOPS高达140K。相比之下,本地硬盘的随机读写仅为548KB/SIOPS134

 

 

 

 

 

参考文档:http://wushank.blog.51cto.com/3489095/1708168

http://elf8848.iteye.com/blog/2168876

fio官网:

http://freecode.com/projects/fio/

 

原创粉丝点击