title: 使用fio工具测试linux的磁盘性能 date: 2015-08-24 17:01:45 tags: [Tools]

很多时候我们需要对服务器的性能进行评估,这就少不了运用合适的工具。其中fio是测试iops的一款很好用的工具,用来对硬件进行压力测试和验证,支持13中不同的I/O引擎,包括:sync、mmap、libaio、posixaio、SG v3、splice、null、network、syslet、guasi、solarisaio等等

简单测试写性能

  • 使用dd简单测试
1
2
dd if=/dev/zero of=testfile bs=1M count=1024 oflag=dsync
#采用dd创建一个1G的文件的磁盘写速度,IO引擎为dsync

准备&安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
#download the software
yum install libaio-devel
#安装依赖包
tar -xvf fio-2.0.7.tar.gz
#decompression
cd fio-2.0.7
#进入解压目录
make
make install

使用说明

  • fio选项说明

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

  • 例子
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#随机读
fio -filename=/root/filename -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=1000 -group_reporting -name=mytest
#顺序读
fio -filename=filename -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
#随机写
fio -filename=filename -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
#顺序写
fio -filename=filename -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
#混合随机读写
fio -filename=filename -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop