首页 > 其他 > 详细

IO测试工具之fio详解

时间:2020-12-13 23:54:40      阅读:63      评论:0      收藏:0      [点我收藏+]

 

本文章向大家介绍IO测试工具之fio详解,主要包括IO测试工具之fio详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

 

目前主流的第三方IO测试工具有fio、iometer和Orion,这三种工具各有千秋。

fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的IO测试软件,可在没有安装oracle数据库的情况下模拟oracle数据库场景的读写。

如下是在Linux系统上采用fio工具来对SAN存储进行的IO测试。

1、安装fio

下载源码包:wget -P https://brick.kernel.dk/snaps/fio-3.0.tar.gz

解压后./configure、make、make install之后就可以使用fio了。

2、fio参数解释

可以使用fio -help查看每个参数,具体的参数左右可以在官网查看how to文档,如下为几个常见的参数描述

filename=/dev/emcpowerb 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb
direct=1                 测试过程绕过机器自带的buffer,使测试结果更真实
rw=randwread             测试随机读的I/O
rw=randwrite             测试随机写的I/O
rw=randrw                测试随机混合写和读的I/O
rw=read                  测试顺序读的I/O
rw=write                 测试顺序写的I/O
rw=rw                    测试顺序混合写和读的I/O
bs=4k                    单次io的块文件大小为4k
bsrange=512-2048         同上,提定数据块的大小范围
size=5g                  本次的测试文件大小为5g,以每次4k的io进行测试
numjobs=30               本次的测试线程为30
runtime=1000             测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止
ioengine=psync           io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包
rwmixwrite=30            在混合读写的模式下,写占30%
group_reporting          关于显示结果的,汇总每个进程的信息
此外
lockmem=1g               只使用1g内存进行测试
zero_buffers             用0初始化系统buffer
nrfiles=8                每个进程生成文件的数量

3、fio测试场景及生成报告详解

测试场景:

100%随机,100%读, 4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k

100%随机,100%写, 4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k

100%顺序,100%读 ,4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k

100%顺序,100%写 ,4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k

100%随机,70%读,30%写 4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

结果报告查看:

[root@my_test]# fio -filename=/data/fiotest -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=60G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k
rand_100write_4k: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
...
fio-3.0
Starting 50 threads

rand_100write_4k: (groupid=0, jobs=50): err= 0: pid=6793: Fri Dec 11 14:32:00 2020
  write: IOPS=1945, BW=7782KiB/s (7969kB/s)(1368MiB/180028msec)
    clat (usec): min=282, max=1522.2k, avg=25587.08, stdev=79681.76
     lat (usec): min=282, max=1522.2k, avg=25587.68, stdev=79681.83
    clat percentiles (usec):
     |  1.00th=[    334],  5.00th=[    355], 10.00th=[    367],
     | 20.00th=[    383], 30.00th=[    400], 40.00th=[    416],
     | 50.00th=[    437], 60.00th=[    461], 70.00th=[    506],
     | 80.00th=[    586], 90.00th=[ 106431], 95.00th=[ 196084],
     | 99.00th=[ 362808], 99.50th=[ 404751], 99.90th=[ 750781],
     | 99.95th=[ 994051], 99.99th=[1317012]
   bw (  KiB/s): min=    7, max= 1701, per=2.07%, avg=161.41, stdev=159.66, samples=17455
   iops        : min=    1, max=  425, avg=40.19, stdev=39.80, samples=17455
  lat (usec)   : 500=69.21%, 750=14.97%, 1000=0.96%
  lat (msec)   : 2=1.40%, 4=0.17%, 10=0.06%, 20=0.22%, 50=0.38%
  lat (msec)   : 100=2.15%, 250=7.11%, 500=3.15%, 750=0.11%, 1000=0.05%
  lat (msec)   : 2000=0.05%
  cpu          : usr=0.03%, sys=0.23%, ctx=700195, majf=0, minf=13
  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 rwt: total=0,350237,0, short=0,0,0, dropped=0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
  WRITE: bw=7782KiB/s (7969kB/s), 7782KiB/s-7782KiB/s (7969kB/s-7969kB/s), io=1368MiB (1435MB), run=180028-180028msec

Disk stats (read/write):
  vdb: ios=0/350018, merge=0/35, ticks=0/167514, in_queue=167395, util=93.03%

 

io=执行了多少M的IO

bw=平均IO带宽
iops=IOPS
runt=线程运行时间
slat=提交延迟
clat=完成延迟
lat=响应时间
bw=带宽
cpu=利用率
IO depths=io队列
IO submit=单个IO提交要提交的IO数
IO complete=Like the above submit number, but for completions instead.
IO issued=The number of read/write requests issued, and how many of them were short.
IO latencies=IO完延迟的分布

io=总共执行了多少size的IO
aggrb=group总带宽
minb=最小.平均带宽.
maxb=最大平均带宽.
mint=group中线程的最短运行时间.
maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数.
merge=总共发生的IO合并数.
ticks=Number of ticks we kept the disk busy.
io_queue=花费在队列上的总共时间.
util=磁盘利用率

 

IO测试工具之fio详解

原文:https://www.cnblogs.com/myss/p/14130969.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!