fio 2種畫圖方法 fio_generate_plots 和 gfio


fio

  • 安裝fio

apt-get install fio

 

  • 可以把fio的輸出數據自動畫圖的插件gnuplot

apt-get install gnuplot


1.輸出bw,lat和iops數據並畫圖

fio安裝完后自帶有一個高級腳本fio_generate_plots能夠根據fio輸出的數據進行畫圖。操作流程如下:

1.1設置fio輸出詳細日志

fio的輸出日志主要包含三種:bw,lat和iops,設置這三種的參數如下:

write_bw_log=rw
write_lat_log=rw
write_iops_log=rw

這里需要強調的一點是,后面接的參數rw,是輸出日志文件名的prefix,如最終會生成的日志文件如下:

rw_iops.log
rw_clat.log
rw_slat.log
rw_lat.log
rw_bw.log

這個參數在后面畫圖的時候也要用到。

for i in clat lat slat bw iops;do mv rbd_$i.1.log rbd_$i.log;done

1.2 畫圖

前提是還需要安裝好gnuplot,然后使用下面的命令即可自動畫圖:

root@ubuntu:/tmp> fio_generate_plots bw

發現沒有,fio_generate_plots接受的唯一參數就是這個日志文件名的prefix。

本例中生成的圖片文件有:

bw-bw.svg 
bw-clat.svg 
bw-iops.svg 
bw-lat.svg 
bw-slat.svg

 

 

 

直接 fio 測試命令

隨機讀:

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,以每次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                每個進程生成文件的數量。

順序讀:

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

 

GFIO 

 

fio是個非常強大的IO性能測試工具,可以毫不誇張的說,如果你把所有的fio參數都搞明白了,基本上就把IO協議棧的問題搞的差不多明白了,原因在於作者Jens Axboe是linux內核IO部分的maintainer. 但是這個工具有個很大的缺點就是沒有圖形界面,單靠輸出的數字很難看出來IO的趨勢變化,所以急需一個圖形前端.

幸運的是Jens也認識到這個問題,2012年2月15號在google plus上說:

Once complete, this will be a great addition to fio. It can be quite tricky to get a good overview of all the various job controlling options that fio has, presenting them graphically has some advantages over a basic 80-line text cli.

可是Jens是寫linux內核代碼的,對於圖形終端的編程不是很熟悉。 大牛畢竟是大牛,發揚革命不怕苦精神,自己學圖形編程,於是在最近的2.1版本給我們帶來了這個圖形終端。有了這個東西使用起來就方便許多。

我給大家演示下如何編譯,運行這個gfio. 在這之前需要給大家說下fio的server/client模式。 fio一旦進入server模式就會在8765 tcp端口上監聽,等待客戶端來連接。 一旦客戶端連接上來,會發上來比如運行job等任務,服務端把運行結果推送到客戶端。所以這個圖形前端實際上是fio的一個client, 名字叫gfio. 具體參見 README里面的描述。

新版本的支持gfio的fio可以在這里下載 git clone git://git.kernel.dk/fio.git,編譯gfio源碼的時候, 由於它依賴於gtk庫,需要先安裝libgtk2.0開發包,演示開始:

 
sudo apt-get -y install libgtk2.0-dev
cd fio
$ ./configure --enable-gfio
...
gtk 2.18 or higher            yes
...
 
make fio
make gfio
$ ./fio -S
fio: server listening on 0.0.0.0,8765

這樣fio就編譯好了,同時進入server模式。 在另外一個終端運行 gfio 就可以看到圖形界面,打開examples/aio-read.fio 這個腳本把玩下(注意這個腳本里面文件的路徑是/data1, 最好改成/tmp之類的),如下圖:
Screenshot at 2013-05-30 20:48:41


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM