硬盤測試工具fio用法總結

一  fio介紹
linux下的一種經常使用的磁盤測試工具,支持裸盤和文件形式進行測試
 
二  硬盤測試經常使用名詞
延遲:io的發起到返回寫入成功的時間成爲延遲,fio中延遲分爲lat,slat,clat。
slat:提交延遲,表示硬盤將io提交到kernel須要的時間
clat:完成延遲,表示從kernel到io完成須要的時間。
lat:自slat開始至clat結束經歷的時間。
吞吐:帶寬的上限
帶寬:單位時間內從一端到另外一端的數據量,成爲帶寬。
 
 
三  常見參數
direct=1     //不使用文件系統緩存
iodepth      //io深度,線程向ssd發送多少個io請求,iodepth與接口有關,與介質無關,通常sata < 32; sas < 128; nvme <4096
rw             //值能夠是write,read,randread,randwrite,randrw,當設置爲rw時需指定rwmixread
ioengine   //寫入引擎,linux一般使用libaio
bs            //最小寫入塊
numjobs   //開啓多個線程同時寫入
runtime     //限制任務運行的時間,若測試任務先於改時間結束,且未指定tmie_based ,則任務會直接退出
tmie_based //和runtime連用,若runtime未用完,會一直跑下去
loops           //循環,一般不和runtime連用
ramp_time        //在執行測試前忽略的時間
ioscheduler   //io調度算法
iodepth_batch     //默認是iodepth的值
iodepth_batch_complete        //io請求過來後,能retrieve得到的最多請求數;
ipdepth_low         //io請求達到這個水平線後,開始嘗試去補充和獲取請求,默認是iodepth的值;
max_latency      //最大延遲,當延遲超過該值,fio會自動退出
latency_target=int             //目標延遲,最大可接受的延遲,單位微秒
latency_window=int          //延遲窗口,工做在不一樣隊列深度下測試性能的窗口,單位微妙
latency_percentile=float   //延遲時間百分比,默認爲100.0,意味着全部IO延遲必須等於或低於目標設置的值。
 
 四   經常使用參數理解
 4.1   iodepth
iodepth即隊列深度,機械硬盤不支持異步寫入,該值對機械硬盤無心義。固態硬盤是支持異步處理的,同時能夠處理多個io請求,iodepth能夠控制io隊列的深度,增大該值能夠提升讀寫性能,但隨着iodepth的增大,延遲一樣也會增大。
4.2   延遲
固態硬盤產品手冊能達到的最大讀寫和iops是理想單盤狀況下能達到的最大值,可是實際生產使用中,由於raid,陣列卡緩存,寫入延遲的影響,一般使用過程當中的寫入性能是低於產品手冊的,咱們能夠經過fio設置latency_target,latency_window,latency_percentile等值,在實際的應用場景下模擬生產業務要求進行寫入測試
 
五   fio測試結果分析
usec/msec      //時間單位,微秒,毫秒
stdev              //標準差
clat percentiles  //寫入延遲分佈狀況
ctx       //進程上下文切換次數
majf/minf            //主要和次要頁面錯誤數量
submits/complete             //表明同一時間段內fio發送上去和已完成的io數量,此處小於4(多是1)可能和收割參數有關
issued                //發送的io總量
aggrb                        //group總帶寬
minb                //最小平均帶寬.
mint                   //group中線程的最短運行時間.
ios                    //全部group總共執行的IO數.
merge                    //總共發生的IO合併數.
in_queue            //花費在隊列上的總共時間.
util                     //磁盤利用率
 
 
六  測試示列
 
fio -filename=/dev/sdb -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=8 -runtime=6m -ramp_time=60 -group_reporting -name=mytest -iodepth_batch_complete=16 
 
fio -filename=/data/tempfile.dat -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=8 -runtime=6m -ramp_time=60 -group_reporting -name=mytest -iodepth_batch_complete=16 -latency_target=4000 -latency_window=50000000 -latency_percentile=99           //限定99%的io請求延遲在4毫秒下
 
 
 
 
參考連接
 
相關文章
相關標籤/搜索