4,063 瀏覽數

Fio VS Iometer

這一篇來討論 Iometer / DynamoFio 的差別,比較不一樣的是 Iometer 採用 dynamo 當作 I/O 的測試引擎,這引擎採用的是非同步 I/O ( Asynchronous I/O ) ,什麼是非同步 I/O ( Asynchronous I/O ) 呢! 在計算機科學中,系統允許 輸入/輸出 處理完成前其他的 輸入/輸出 可以繼續發送.這跟 Fio 採用 libaio 一樣都是 非同步 I/O ( Asynchronous I/O ) ,不過 Fio 還提供了不同的 I/O 測試引擎 sync , psync , vsync , posixaio , mmap , splice , syslet-rw , sg , null , net , netsplice , cpuio , guasi , external ,請參考 fio(1) – Linux man page.

還有一點比較不同的地方是 Iometer 有一個參數 outstanding I/O 這參數主要是在模擬測試同時多個應用程式向系統請求 I/O ,但 Fio 有兩個類似的參數 iodepth 與 numjobs . 我們先來看看原文說明書的說明.

  • iodepth=int
    Number of I/O units to keep in flight against the file.
    同一時間有多少 I/O 在對同一檔案做存取.
  • numjobs=int
    Number of clones (processes/threads performing the same workload) of this job. Default: 1.
    跟前面的 iodepth 類似,但不一樣,在 Linux 下每一個 job 可以生出不同的 processes/threads ,numjobs 就是在同一個 workload 同時提出多個 I/O 請求.

那問題是 outstanding I/O 跟 iodepth 與 numjobs 這兩個參數會比較類似呢!!
我個人覺得 outstanding I/O 跟 iodepth 會比較類似,但我們實際跑 Iometer 與 Fio 出來的結果在比較小 (1,2,4,8)的 outstanding I/O (Iometer) 跟 iodepth (Fio) , Iometer 的表現會好很多,但高 (16,32,64)的 outstanding I/O (Iometer) 跟 iodepth (Fio) 就沒有差別了.

或許 Iometer 在低的 outstanding I/O 其實也是同時多個 processes/threads 在處理,所以效能會比 Fio 來得好.之後我加入 numjobs 效能的確也被拉上來了.

發表迴響