Azure NetApp Files のパフォーマンス テスト手法を理解する
これらのテストで使われるベンチマーク ツールは、フレキシブル I/O テスター (FIO) という名前です。
ストレージのパフォーマンス制限の限界をテストする場合、可能な限り最大限の結果を得るには、ワークロードの生成を高度に並列化する必要があります。
これは次のことを意味します。
- 1 つから多数のクライアント
- 複数の CPU
- multiple threads
- 複数のファイルへの I/O の実行
- マルチスレッド ネットワーク接続 (nconnect など)
最後的な目標は、操作が他の操作の完了を待ち始めるまで、ストレージ システムに可能な限り高い負荷をかけることです。 単一のネットワーク フローを通過する単一のクライアント、または 1 つのファイルの読み取り/書き込み (たとえば、単一のクライアントでの dd または diskspd の使用) では、Azure NetApp Files の機能を示す結果は得られません。 これらの設定によって代わりに示されるのは、1 つのファイルのパフォーマンスであり、通常、それは回線速度や Azure NetApp Files の QoS の設定に左右されます。
さらに、ストレージで達成できる典型的な結果を正確に実現するには、キャッシュを可能な限り最小限に抑える必要があります。 ただし、キャッシュは、最新のアプリケーションが最高のパフォーマンスを発揮するための非常に現実的なツールです。 これらは、FIO オプションによるワークロードのランダム化を使って、I/O ワークロードのキャッシュとキャッシュのバイパスをランダムに行うシナリオで対応します (具体的には、ストレージでのキャッシュを避けるには randrepeat=0
、クライアント キャッシュを避けるには directio)。
フレキシブル I/O テスターについて
フレキシブル I/O テスター (FIO) は、使いやすくワークロード パターンを柔軟に定義できることから、ストレージのベンチマークによく使われるオープンソースのワークロード生成ツールです。 Azure NetApp Files でのその使用については、「Azure NetApp Files のパフォーマンス ベンチマークのテスト レコメンデーション」をご覧ください。
FIO のインストール
FIO README ファイルの「Binary Packages」セクションに従って、選択したプラットフォームにインストールします。
IOPS 用の FIO の例
このセクションの FIO の例では、次の設定を使用します。
- VM インスタンス サイズ: D32s_v3
- 容量プールのサービス レベルとサイズ: Premium / 50 TiB
- ボリュームのクォータ サイズ: 48 TiB
次の例は FIO のランダム読み取りおよび書き込みを示します。
FIO: 8k ブロック サイズ 100% ランダム読み取り
fio --name=8krandomreads --rw=randread --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
FIO: 8k ブロック サイズ 100% ランダム書き込み
fio --name=8krandomwrites --rw=randwrite --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
ベンチマーク結果
Azure NetApp Files での FIO のパフォーマンスに関する公式ベンチマークの結果については、「Azure NetApp Files の Linux 用パフォーマンス ベンチマーク」を参照してください。
帯域幅用の FIO の例
このセクションの例は、FIO のシーケンシャル読み取りおよび書き込みを示します。
FIO: 64k ブロック サイズ 100% シーケンシャル読み取り
fio --name=64kseqreads --rw=read --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
FIO: 64k ブロック サイズ 100% シーケンシャル書き込み
fio --name=64kseqwrites --rw=write --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
ベンチマーク結果
Azure NetApp Files での FIO のパフォーマンスに関する公式ベンチマークの結果については、「Azure NetApp Files の Linux 用パフォーマンス ベンチマーク」を参照してください。
FIO でのキャッシュ
特定のオプションを使って FIO を実行し、パフォーマンス ベンチマークでファイルの読み取りと書き込みを行う方法を制御できます。 キャッシュを除外したベンチマーク テストでは、繰り返しパターンではなく本当にランダムなワークロードを実行してキャッシュを回避するために、FIO フラグ randrepeat=0
を使いました。
[randrepeat
]https://fio.readthedocs.io/en/latest/fio_doc.html#i-o-type)
既定では、randrepeat
が定義されていない場合、FIO ツールは値を "true" に設定します。これは、ファイルで生成されるデータが本当にランダムなものではないことを意味します。 したがって、ファイル システム キャッシュは、ワークロードの全体的なパフォーマンスを向上させるために使われません。
Azure NetApp Files の以前のベンチマークでは、randrepeat
が定義されていなかったため、一部のファイル システム キャッシュが実装されていました。 より新しいテストでは、このオプションは "0" (false) に設定されており、Azure NetApp Files サービスのファイル システム キャッシュを回避する十分にランダムなデータが生成されます。 この変更により、全体的な数値は若干低くなりますが、キャッシュがバイパスされるときのストレージ サービスの機能をより正確に表現できます。