Fio は Flexible IO の略で、多用途の IO ワークロード ジェネレーターです。 2005 年に遡ると、Linux カーネルの IO スタックのバックボーンであり作成者である Jens Axboe は、Linux IO サブシステムのベンチマークや変更を検証するための XNUMX 回限りのテスト プログラムを常に作成することにうんざりしていました。その結果、作業をはるかに簡単にするために fio が誕生しました。詳細なワークロード設定を可能にする十分な柔軟性があり、完了時にデータを理解するために必要なレポートが含まれていました。 Jens は Oracle に入社したときも fio に取り組み続け、その後 Fusion-io に入社しました。
Fio は Flexible IO の略で、多用途の IO ワークロード ジェネレーターです。 2005 年当時、Linux カーネルの IO スタックのバックボーンであり作成者である Jens Axboe は、Linux IO サブシステムのベンチマークや変更を検証するための 100 回限りのテスト プログラムを常に作成することにうんざりしていました。その結果、作業をはるかに簡単にするために fio が誕生しました。詳細なワークロード設定を可能にする十分な柔軟性があり、完了時にデータを理解するために必要なレポートが含まれていました。 Jens は Oracle に入社したときも fio に取り組み続け、その後 Fusion-io に入社しました。現在、ユーザーの fio コミュニティは活発に開発に取り組んでおり、その結果、継続的に fio を開発し、新機能を実装しています。 4 人を超える人が fio に貢献しており、多くの人が何度も貢献しています。この取り組みのおかげで、fio の新しいバージョンはおよそ 6 ~ XNUMX 週間ごとにリリースされ、fio は業界標準のベンチマーク、ストレス テスト ツール、および IO 検証の目的で広く使用されています。
主な機能セットと機能
優れたベンチマークの 2 つの主な機能は、必要なワークロードを実行できることと、必要な出力単位を取得できることです。柔軟であることが fio の主な焦点でした (そしてこれからもそうです)。他のベンチマークには見られないワークロード オプションと、厳密に詳細な IO 統計がサポートされています。あらゆる種類のランダム IO とシーケンシャル IO の組み合わせ、または読み取り/書き込みの組み合わせを定義するのは簡単です。 fio の内部設計も柔軟です。ワークロードの定義は、IO エンジンとは完全に分離されています (fio という用語は、IO がカーネルに配信される方法を示すために使用されます)。たとえば、Linux 上でネイティブ非同期を使用してワークロードを実行し、次に Windows 上で同じワークロードを比較する場合は、単一の IO エンジン行を Windows 上のネイティブ バージョンに変更するだけです。または、分布の末尾でより詳細なレイテンシーのパーセンタイル統計が必要な場合も、それは簡単です。関心のある正確なパーセンタイルを指定するだけで、fio がそれを追跡します。
当初は Linux で開発されましたが、OS 固有の機能に関連付けられていない 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 は、3 つの異なるタイプの出力形式もサポートしています。 「クラシック」出力はデフォルトで、ワークロードの最後にワークロード統計をダンプします。 CSV 形式のサポートもありますが、JSON ベースの出力形式が優先され、徐々に縮小されています。後者ははるかに柔軟で、人間やコンピューターにとって解析が簡単であるという利点があります。
Fio は、活気に満ちたユーザー コミュニティと開発コミュニティの相乗効果により、急速に前進してきました。競合するプロジェクトよりも実行が簡単で、ユーザーのタスクを達成するのに十分な柔軟性があり、あらゆる種類のストレージ システムをフルスピードで駆動するのに十分な低オーバーヘッドを備えています。これに、他のどのツールよりも豊富なオプションとレポート機能を組み合わせると、fio は優れたツールとなります。
StorageReview.com が FIO を使用する理由
エンタープライズ ストレージのレビューの量と深さの両方を増加し始めたため、複数のオペレーティング システムにわたるさまざまなストレージ製品のパフォーマンスを正確に測定するための、より優れたベンチマーク ツールが必要になりました。 Iometer や Vdbench などの従来のワークロード生成ソフトウェアは、非ネイティブ OS との互換性が限られているか、PCIe アプリケーション アクセラレータや高性能ネットワーク ストレージなどの高性能ストレージ デバイスの負荷をスケーリングすることが困難でした。 FIO の実装が開始されて以来、これらの問題の多くは解決され、長期間のテスト期間のスクリプト作成をサポートすることでさらに一歩前進しました。この全体的な機能により、すべての企業レビューに最適な総合ベンチマークになります。
レビューでは、FIO を使用して、一定期間のストレージ デバイスのパフォーマンスを測定します。ほとんどの製品では、メインのテストに入る前の 6 時間のプレコンディショニングが含まれます。テスト開始まで何時間も定常状態にならない可能性がある大型の PCIe ストレージ デバイスの場合、メイン テストの開始前に 12 倍の 16 時間かけてプレコンディショニングを行います。当社の合成エンタープライズ ストレージ ベンチマーク プロセスは、徹底的な事前調整フェーズ中にドライブがどのように動作するかを分析することから始まります。同等の各製品は、最初にベンダーのツールを使用して安全に消去され、その後、スレッドごとに 16 の未処理のキューを持つ XNUMX スレッドの高負荷の下でデバイスがテストされるのと同じワークロードで定常状態にプレコンディショニングされます。プロセスの仕上げとして、複数のスレッド/キューの深さのプロファイルで設定された間隔でテストを行い、軽い使用状況と重い使用状況でのパフォーマンスを示します。
プレコンディショニングおよび一次定常状態テスト:
- スループット (読み取り+書き込み 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 –io Depth=16 –numjobs=16 –runtime=60 –group_reporting –name=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 –io Depth=16 –numjobs=16 –runtime=60 –group_reporting –name=8k7030テスト
現在利用しているのは、 FIO バージョン 2.0.7 Linux パフォーマンス テストには CentOS 64 の (x6.3) FIO バージョン 2.0.12.2 Windows のパフォーマンスについては、Windows Server 64 R2008 SP2 の (x1)。
StorageReview エンタープライズ テスト プラットフォーム
ストレージ ソリューションは、FIO 合成ベンチマークを使用してテストされています。 StorageReview エンタープライズ テスト ラボ スタンドアロンサーバーを利用します。 HP ProLiant DL380/DL360 Gen9 を利用して現実的なパフォーマンスを発揮し、ストレージ アダプターまたはネットワーク インターフェイスのみを変更して DL380/DL360 をさまざまなストレージ製品に接続します。 DL380/DL360 は、サードパーティ製デバイスとの優れた互換性を提供することが証明されており、この多様なテスト環境にとって優れた頼りになるプラットフォームとなっています。
(Gen1) レノボ ThinkServer RD240
- 2 x Intel Xeon X5650 (2.66GHz、12MB キャッシュ)
- インテル 5500+ ICH10R チップセット
- メモリ – 8GB (2 x 4GB) 1333Mhz DDR3 レジスタード RDIMM
- Windows Server 2008 Standard Edition R2 SP1 64 ビットおよび CentOS 6.2 64 ビット
- LSI 9211 SAS/SATA 6.0Gb/秒 HBA
(Gen2) レノボ ThinkServer RD630
- 2 x Intel Xeon E5-2620 (2.0GHz、15MB キャッシュ、6 コア)
- Intel C602チップセット
- メモリ – 16GB (2 x 8GB) 1333Mhz DDR3 レジスタード RDIMM
- Windows Server 2008 R2 SP1 64 ビット、Windows Server 2012 Standard、CentOS 6.3 64 ビット
- 100GB マイクロン RealSSD P400e ブートSSD
- LSI 9207-8i SAS/SATA 6.0Gb/s HBA (SSD または HDD のベンチマーク用)
(Gen3) HP ProLiant DL380/DL360 Gen9
- デュアル Intel E5-2667 v3 CPU(3.2 GHz、8 コア、20 MB キャッシュ)
- 256GB RAM (16GB x 16 DDR4、CPU あたり 128GB)
- Windows Server 2012 R2、CentOS 7.0
- 400GB ブート SSD – Windows
- 300GB ブート HDD – Linux
- LSI 9300-8e SAS/SATA 12.0Gb/秒 HBA (SSD または HDD のベンチマーク用)
- Supermicro スーパーシャーシ 846BE1C-R1K28B SAS3 JBOD (SSD または HDD の接続用)