星期四, 5月 24, 2012

fio - flexible io benchmark

因工作需要找一個可以取代IOmeter業界慣用的IO效能評測軟體,過去為了某些測試有初略使用了fio 這個軟體,現在要來進階了。之前用的版本是1.5.x版,現在用的是2.0.7版這兩版在測試結果的輸出上欄位不同,2.0.7版多了更多欄位這裡不細述。

為了方便定義出多種測試pattern,決定使用參數的方式而不用profile file,範例如下:

fio --name=$name --rw=${iomode}  --direct=1 --ioengine=libaio --runtime=30s --ioscheduler=noop --filename=/dev/$target --bs=${block} --size=80% --iodepth=${iodepth} --zonesize=$[size/stream]k --numjobs=$stream --group_reporting --minimal >> $model.$target.fiov2.csv

${}內是變數值,在shell script內用迴圈代入合適的值。這裡要解釋一下iodepth會相當於IOmeter中的outstanding I/O的值,而numjobs則是多執行程序,如果是單純要測sequential I/O的話最好設成1就好 ,zonesize的size是target device的block size參考cat /proc/partations | awk '{print $3}'。
等收集到所需的$model.$target.fiov2.csv後要處理一下分隔符號,因為Excel不認為分號;分隔符號,可是OpenOffice的calc可以自由選擇分隔符號為;,所以如果你是要給Excel讀的話可以用sed -i 's/;/,/g'  $model.$target.fiov2.csv 置換;為,。

然後就可以用Excel or OpenOffice Calc 讀入,再Copy/Pause到link下載的檔案內方便閱讀每個欄位數值. http://dl.dropbox.com/u/19061976/fiov2_minimal_group_log_analysis.xls
如果擔心Excel內有巨集病毒,也可參考Fio原始碼內附HOWTO檔內的--minimal output欄位說明。