1,、背景
我們常常在測試fio的時(shí)候,,一般只會看到最終測試結(jié)果。如下所示
[root@localhost zhangyi]# fio --filename=test_file --direct=1 --rw=randwrite --numjobs=1 --iodepth=16 --ioengine=libaio --bs=4k --group_reporting --name=zhangyi --log_avg_msec=500 --write_bw_log=test-fio --size=1G
zhangyi: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=16
fio-2.2.8
Starting 1 process
zhangyi: Laying out IO file(s) (1 file(s) / 1024MB)
Jobs: 1 (f=1): [w(1)] [100.0% done] [0KB/49649KB/0KB /s] [0/12.5K/0 iops] [eta 00m:00s]
zhangyi: (groupid=0, jobs=1): err= 0: pid=3143: Wed Aug 30 15:37:18 2017
write: io=1024.0MB, bw=48438KB/s, iops=12109, runt= 21648msec
slat (usec): min=2, max=8200, avg=59.44, stdev=75.52
clat (usec): min=42, max=17377, avg=1259.63, stdev=847.23
lat (usec): min=122, max=17383, avg=1319.47, stdev=862.50
clat percentiles (usec):
| 1.00th=[ 580], 5.00th=[ 652], 10.00th=[ 692], 20.00th=[ 780],
| 30.00th=[ 860], 40.00th=[ 948], 50.00th=[ 1048], 60.00th=[ 1160],
| 70.00th=[ 1256], 80.00th=[ 1368], 90.00th=[ 2224], 95.00th=[ 2864],
| 99.00th=[ 3824], 99.50th=[ 4384], 99.90th=[10688], 99.95th=[13376],
| 99.99th=[16064]
bw (KB /s): min=43072, max=52968, per=99.85%, avg=48362.74, stdev=2721.66
lat (usec) : 50=0.01%, 250=0.02%, 500=0.25%, 750=16.72%, 1000=29.09%
lat (msec) : 2=41.80%, 4=11.37%, 10=0.60%, 20=0.14%
cpu : usr=1.19%, sys=71.85%, ctx=80337, majf=0, minf=31
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.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.1%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=262144/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=16
Run status group 0 (all jobs):
WRITE: io=1024.0MB, aggrb=48437KB/s, minb=48437KB/s, maxb=48437KB/s, mint=21648msec, maxt=21648msec
Disk stats (read/write):
dm-0: ios=2/263339, merge=0/0, ticks=130/102093, in_queue=102223, util=93.14%, aggrios=2/270086, aggrmerge=0/18, aggrticks=130/100523, aggrin_queue=100545, aggrutil=92.82%
這樣只能看到一個結(jié)果,,而中間過程的IO情況則看不到,。所以這里介紹一個方法,可以將fio中間過程的數(shù)據(jù)抓出來繪制成圖的方法,。
2,、安裝gnuplot
sudo yum install gnuplot
最終回安裝兩個包:
[root@localhost zhangyi]# rpm -qa |grep gnuplot
gnuplot-common-4.6.2-3.el7.x86_64
gnuplot-4.6.2-3.el7.x86_64
3、對一個文件執(zhí)行fio操作
fio --filename=test_file --direct=1 --rw=randwrite --
numjobs=1 --iodepth=16 --ioengine=libaio --bs=4k
--group_reporting --name=zhangyi --log_avg_msec=500
--write_bw_log=test-fio --size=1G
這里需要說明下的就是write_bw_log這個參數(shù)需要指定,,意思就是將fio的輸出帶寬信息就到文件test-fio中,。這里可以指定帶寬,IOPS和延時(shí)
write_bw_log=fio-test
write_iops_log=fio-test
write_lat_log=fio-test
運(yùn)行完成后可以生成如下文件:
-rw-r--r--. 1 root root 797 Aug 30 15:37 test-fio_bw.1.log
這個文件就記錄了fio運(yùn)行期間的帶寬數(shù)據(jù),。
[root@localhost zhangyi]# cat test-fio_bw.1.log
500, 50648, 1, 0
1000, 49328, 1, 0
1500, 49096, 1, 0
2000, 49824, 1, 0
2500, 51120, 1, 0
3000, 47472, 1, 0
3500, 49976, 1, 0
這里表示每log_avg_msec=500ms記錄一次,。這個參數(shù)也可以調(diào)整。
繪圖
將這個test-fio_bw.1.log修改成test-fio_bw.log,,因?yàn)閒io2gnuplot會默認(rèn)在當(dāng)前目錄下尋找*_bw.log文件,。
[root@localhost zhangyi]# fio2gnuplot -b -g
1 files Selected with pattern '*_bw.log'
|-> test-fio_bw.log
Running gnuplot Rendering
Rendering traces are available in the current directory
這里b的意思就是繪制帶寬的圖,-i則表示繪制iops的圖,,但是貌似現(xiàn)在gnuplot不支持iops和latency的繪制,。不要在乎這些細(xì)節(jié)。執(zhí)行完成后會生成如下幾個文件:
-rw-r--r--. 1 root root 13K Aug 30 15:51 test-fio_bw-2Draw.png
-rw-r--r--. 1 root root 12K Aug 30 15:51 test-fio_bw-2Dsmooth.png
-rw-r--r--. 1 root root 10K Aug 30 15:51 test-fio_bw-2Dtrend.png
打開文件
也可以用fio_generate_plots bw的方式來生成圖像
|