Fio 是 Flexible IO 的縮寫,一種多功能的 IO 工作負載生成器。 早在 2005 年,Linux 內核中 IO 堆棧的背後骨乾和作者 Jens Axboe 就厭倦了不斷編寫一次性測試程序來對 Linux IO 子系統進行基準測試或驗證更改。 於是,fio 的誕生讓這項工作變得簡單了很多。 它足夠靈活,可以進行詳細的工作負載設置,並且包含必要的報告以在完成時理解數據。 Jens 在加入 Oracle 和後來的 Fusion-io 後繼續致力於 fio。
Fio 是 Flexible IO 的縮寫,一種多功能的 IO 工作負載生成器。 早在 2005 年,Linux 內核 IO 堆棧的背後骨乾和作者 Jens Axboe 就厭倦了不斷編寫一次性測試程序來對 Linux IO 子系統進行基準測試或驗證更改。 於是,fio 的誕生讓這項工作變得簡單了很多。 它足夠靈活,可以進行詳細的工作負載設置,並且包含必要的報告以在完成時理解數據。 Jens 在加入 Oracle 和後來的 Fusion-io 後繼續致力於 fio。 今天,fio 用戶社區很活躍並參與開發,因此他們不斷開發 fio 並實現新功能。 超過 100 人為 fio 做出了貢獻,許多人已經這樣做了好幾次。 由於這一承諾,新版本的 fio 大約每 4-6 週發布一次,fio 被廣泛用作行業標準基準、壓力測試工具和 IO 驗證目的。
主要特性集和功能
一個好的基準測試的兩個主要特徵是能夠運行您想要的工作負載並獲得所需的輸出單位。 靈活曾經是(並將繼續是)fio 的主要焦點。 它支持其他基準測試中沒有的工作負載選項以及嚴格詳細的 IO 統計數據。 任何類型的隨機和順序 IO 混合,或讀/寫混合,都很容易定義。 fio 的內部設計也很靈活。 定義工作負載完全獨立於 IO 引擎(一個術語 fio 用來表示 IO 是如何傳遞給內核的)。 例如,如果您想在 Linux 上使用本機異步運行工作負載,然後在 Windows 上比較相同的工作負載,只需將單個 IO 引擎行更改為 Windows 上的本機版本。 或者,如果您想要分佈尾部的更詳細的延遲百分位統計數據,那也很容易。 只需指定您感興趣的確切百分位數,fio 就會為您跟踪。
儘管最初是在 Linux 上開發的,但 fio 中與操作系統特定功能無關的區域可以在從 Windows 到 HP-UX 到 Android 的任何平台上運行。 在 Linux、Windows、Solaris 等上也有本地 IO 引擎。這是混合環境的一個關鍵特性,您希望能夠在不同的操作環境上運行(盡可能接近)相同的工作負載。 此外,雖然 fio 通常直接在目標機器上運行,但它也支持網絡連接。 您可以在目標機器上運行服務器後端,並在客戶端機器上運行數據收集前端。 這使得它更易於管理,尤其是當 fio 經常在多台機器上使用時。
Fio 主要是一個基於文本的 CLI 應用程序,儘管最初支持基於 gtk 的跨平台 GUI 前端 (gfio)。 在本文發佈時,gfio 包含在最新的 fio 版本 v2.1 中,它應該相當穩定。 它能夠作為 CLI 客戶端支持的任何工作負載的 GUI 前端。 它還為 GUI 編輯作業選項和工作負載提供基本支持,儘管由於 gfio 正在進行中,全面支持仍在開發中。
Fio 還支持三種不同類型的輸出格式。 “經典”輸出是默認輸出,它會在工作負載結束時轉儲工作負載統計信息。 還支持 CSV 格式,儘管這種支持正在慢慢減少以支持基於 JSON 的輸出格式。 後者要靈活得多,並且具有易於為人和計算機解析的優點。
得益於其充滿活力的用戶和開發社區的協同作用,Fio 一直在快速發展。 它比競爭項目更容易運行,足夠靈活以完成用戶的任務,並且它的開銷足夠低以全速驅動任何類型的存儲系統。 再加上它比其他任何東西都更豐富的選項和報告,fio 是一個很好的工具。
為什麼 StorageReview.com 使用 FIO
隨著我們開始增加企業存儲評論的數量和深度,我們一直需要更好的基準測試工具來準確衡量跨多個操作系統的不同存儲產品的性能。 Iometer 或 Vdbench 等傳統工作負載生成器軟件與其非本機操作系統的兼容性有限,或者它們難以擴展高性能存儲設備(如 PCIe 應用程序加速器或高性能網絡存儲)的負載。 自從我們開始實施 FIO 以來,它已經解決了其中的許多問題,甚至更進一步,支持長時間測試期間的腳本編寫。 這種整體功能使其成為我們所有企業評論的首選綜合基準。
在我們的評測中,我們使用 FIO 來衡量存儲設備在給定時間段內的性能。 對於大多數產品,這包括在我們進行主要測試之前的 6 小時預處理。 對於較大的 PCIe 存儲設備可能無法在測試中進入穩定狀態數小時,我們在主要測試開始前的 12 小時內進行了兩倍的預處理。 我們的綜合企業存儲基準流程從分析驅動器在徹底的預處理階段的運行方式開始。 每個可比較的產品首先使用供應商的工具進行安全擦除,然後使用相同的工作負載預處理到穩定狀態,設備將在 16 個線程的重負載下進行測試,每個線程有 16 個未完成隊列。 完成這個過程,然後我們在多個線程/隊列深度配置文件中以設定的時間間隔進行測試,以顯示輕度和重度使用情況下的性能。
預處理和初級穩態測試:
- 吞吐量(讀+寫 IOPS 聚合)
- 平均延遲(讀+寫延遲一起平均)
- 最大延遲(峰值讀取或寫入延遲)
- 延遲標準偏差(讀+寫標準偏差一起平均)
我們的企業綜合工作負載分析包括不同的配置文件以反映一些真實世界的任務。 開發這些配置文件是為了更容易與我們過去的基準測試以及廣泛發布的值(例如最大 4k 讀寫速度和 8k 70/30,通常用於企業硬件)進行比較。
- 4k
- 100% 讀取或 100% 寫入
- 100% 4k
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=4k –rwmixread=100 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –名稱=4ktest
- 8k 70/30
- 70% 讀取,30% 寫入
- 100% 8k
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=8k –rwmixread=70 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –名稱=8k7030test
目前我們利用 FIO 版本 2.0.7 (x64) 在 CentOS 6.3 中用於我們的 Linux 性能測試和 FIO 版本 2.0.12.2 (x64) 在 Windows Server 2008 R2 SP1 中用於我們的 Windows 性能。
StorageReview 企業測試平台
存儲解決方案已通過 FIO 綜合基準測試 StorageReview 企業測試實驗室 利用獨立服務器。 我們利用 HP ProLiant DL380/DL360 Gen9 來展示真實的性能,只需更改存儲適配器或網絡接口即可將我們的 DL380/DL360 連接到不同的存儲產品。 DL380/DL360 已證明自己可以提供與第三方設備的出色兼容性,使其成為這種多樣化測試環境的絕佳首選平台。
(第二代) 聯想ThinkServer RD240
- 2 個英特爾至強 X5650(2.66GHz,12MB 緩存)
- 英特爾 5500+ ICH10R 芯片組
- 內存 – 8GB (2 x 4GB) 1333Mhz DDR3 Registered RDIMM
- Windows Server 2008 Standard Edition R2 SP1 64 位和 CentOS 6.2 64 位
- LSI 9211 SAS/SATA 6.0Gb/秒 HBA
(第二代) 聯想ThinkServer RD630
- 2 x Intel Xeon E5-2620(2.0GHz,15MB 緩存,6 核)
- 英特爾 C602 芯片組
- 內存 – 16GB (2 x 8GB) 1333Mhz DDR3 Registered RDIMM
- Windows Server 2008 R2 SP1 64 位、Windows Server 2012 Standard、CentOS 6.3 64 位
- 100GB 美光 RealSSD P400e 啟動固態硬盤
- LSI 9207-8i SAS/SATA 6.0Gb/s HBA(用於基準測試 SSD 或 HDD)
(第二代) 惠普 ProLiant DL380/DL360 Gen9
- 雙 Intel E5-2667 v3 CPU(3.2GHz,8 核,20MB 緩存)
- 256GB 內存(16GB x 16 DDR4,每個 CPU 128GB)
- Windows Server 2012 R2、CentOS 7.0
- 400GB 啟動 SSD – Windows
- 300GB 引導硬盤 – Linux
- LSI 9300-8e SAS/SATA 12.0Gb/秒 HBA (用於基準測試 SSD 或 HDD)
- 美超微SuperChassis 846BE1C-R1K28B SAS3 JBOD(用於連接 SSD 或 HDD)