1. 安装fio

[root@mysqlnode2 ~]# wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
[root@mysqlnode2 ~]#yum install libaio-devel
[root@mysqlnode2 ~]# tar -zxvf fio-2.0.7.tar.gz
[root@mysqlnode2 ~]#  cd fio-2.0.7
[root@mysqlnode2 ~]#  make
[root@mysqlnode2 ~]# make install

2. 测试方式
(1)随机读:

[root@mysqlnode2 ~]#fio -readonly -rw=randread -bs=4k -runtime=60 -iodepth 1 -filename /dev/sdb1 -ioengine libaio -direct=1 -name iops_randread
说明:
filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
iodepth io队列深度 主要根据设备的并行度来调整
应用使用IO通常有二种方式:同步和异步。 同步的IO一次只能发出一个IO请求,等待内核完成才返回,这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决
rw=randwrite/randread/read/write 测试随机写/随机读/读/写的I/O
rw=randrw 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16K
单次io的块大小,对iops影响比较大,一般来说,要想得到最大的iops,bs越小越好, 当然这也跟文件系统最小块大小有关一般linux下的文件分区最小块大小有 512 1k 2k 4k 8k等 可根据文件系统的类型选择
size=5g 本次的测试文件大小为5g
numjobs=8 本次的测试线程为8一般来说,对于单磁盘的测试,默认一个线程即可,对于raid设备,如raid1 raid5或并行度高的设备可考虑适当加大测试线程数
runtime=1000 测试时间为1000秒 此参数与size共同起作用,属于双限制
ioengine=libaio io引擎使用libaio方式 ,异步io引擎, 一次提交一批,然后等待一批的完成,减少交互的次数,会更有效率。
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。

(2)顺序读:

[root@mysqlnode2 ~]#fio -readonly -rw=read -bs=4k -runtime=60 -iodepth 1 -filename /dev/sdb1 -ioengine libaio -direct=1 -name iops_randread group_reporting

(3)随机写:

[root@mysqlnode2 ~]# fio -rw=randwrite -bs=4k -runtime=60 -iodepth 1 -filename /dev/sdb1 -ioengine libaio -direct=1 -name iops_read group_reporting

(4)顺序写:

[root@mysqlnode2 ~]#fio -rw=write -bs=4k -runtime=60 -iodepth 1 -filename /dev/sdb1 -ioengine libaio -direct=1 -name iops_write group_reporting

(5)混合随机读写:

[root@mysqlnode2 ~]#  fio -rw=randrw -rwmixread=70 -bs=4k -runtime=60 -iodepth 1 -filename /dev/sdb1 -ioengine libaio -direct=1 -name iops_randrw group_reporting

3. 结果分析

[root@mysqlnode2 ~]#fio -readonly -rw=randread -bs=512 -runtime=60 -iodepth 1 -filename /dev/xvde1 -ioengine libaio -direct=1 -name iops group_reporting
  iops: (g=0): rw=randread, bs=512-512/512-512, ioengine=libaio, iodepth=1
  fio 2.0.7
  Starting 1 process
  Jobs: 1 (f=1): [r] [100.0% done] [101K/0K /s] [199 /0  iops] [eta 00m:00s]
  iops: (groupid=0, jobs=1): err= 0: pid=24818
    read : io=11663KB, bw=199045 B/s, iops=388 , runt= 60001msec
      slat (usec): min=12 , max=74 , avg=17.20, stdev= 3.60
      clat (usec): min=210 , max=37754 , avg=2548.48, stdev=3584.72
       lat (usec): min=227 , max=37770 , avg=2567.15, stdev=3584.97
      clat percentiles (usec):
       |  1.00th=[  237],  5.00th=[  251], 10.00th=[  258], 20.00th=[  266],
       | 30.00th=[  270], 40.00th=[  278], 50.00th=[  290], 60.00th=[  422],
       | 70.00th=[ 3504], 80.00th=[ 5984], 90.00th=[ 8384], 95.00th=[ 9664],
       | 99.00th=[11328], 99.50th=[13760], 99.90th=[24960], 99.95th=[29568],
       | 99.99th=[36096]
      bw (KB/s)  : min=   80, max=  300, per=100.00%, avg=194.24, stdev=70.08
      lat (usec) : 250=4.04%, 500=59.95%, 750=0.93%, 1000=0.31%
      lat (msec) : 2=0.38%, 4=6.26%, 10=24.42%, 20=3.50%, 50=0.20%
    cpu          : usr=0.25%, sys=1.01%, ctx=23403, majf=0, minf=28
    IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
       submit    : 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=23326/w=0/d=0, short=r=0/w=0/d=0
 
  Run status group 0 (all jobs):
     READ: io=11663KB, aggrb=194KB/s, minb=194KB/s, maxb=194KB/s, mint=60001msec, maxt=60001msec
 
  Disk stats (read/write):
    xvde1: ios=23491/19, merge=0/0, ticks=59914/46, in_queue=59968, util=99.43%

主要关注的信息是 read : io=11663KB, bw=199045 B/s, iops=388 , runt= 60001msec 这一行的iops值,说明此轮测试中,读磁盘的的iops为388

Trackback

no comment untill now

Add your comment now

切换到手机版