ベンチマーク結果

完了

次に、ベンチマーク結果を調べて、前のユニットで説明したパフォーマンスに関するヒントを検証します。 具体的には、EDA の実稼働に似たワークロードをシミュレートするために、SPEC SFS ベンチマーク スイートを使用して複数のスレッドを生成する方法について重点的に説明します。 また、FIO の結果を示して、パフォーマンスに関するプラクティスを調べます。

2 つのベンチマーク ツールの概要

SPEC SFS スイートは、EDA の標準的な業界ベンチマークです。 一般的な EDA ワークロードは、機能フェーズと物理フェーズで構成されます。 機能フェーズでは、主にランダム I/O とファイルシステム メタデータ操作が実行されます。 物理フェーズでは、大きいブロックのシーケンシャルな読み取りおよび書き込みが行われます。

FIO は I/O ツールであり、一貫性のあるランダムまたはシーケンシャルな読み取りと書き込みの負荷を生成して、ストレージ ターゲットの IOPS とスループットをベンチマークできます。

Azure NetApp Files のボリュームの種類

Azure NetApp Files には、クラウド データ ストレージ用にプロビジョニングできるボリュームとして、通常のボリュームと大きなボリュームの 2 種類が用意されています。 この 2 つのボリュームの種類の主な違いを以下の表に示します。 この表をガイダンスとして使用して、ワークロードに適したボリュームの種類を選択してください。

なし 通常のボリューム 大きなボリューム
最小容量 100 GiB 50 TiB
最大キャパシティ 100 TiB 500 TiB
サポートされている最小のサービス レベル Standard Standard
観察された最大スループット 4,500 MiB/秒 10,240 MiB/秒
観察された最大読み取り IOPS 最大 200,000 最大 700,000
観察された最大書き込み IOPS 最大 135,000 最大 474,000

SPEC EDA ツールのベンチマーク結果 (通常のボリューム)

このセクションのグラフは、I/O と待機時間の曲線を示しています。 パフォーマンスに関する次のプラクティスについて、いくつかの組み合わせが調べられます。

  • nocto,actimeo=600
  • sysctl tuned
  • nconnect=16

上記の 3 つのプラクティスをすべ適用した場合、1 秒あたりの I/O 操作の数が増加し、低遅延 (1 ミリ秒未満) が維持されます。

SPEC EDA 結果を示す図。ここで、I/O ブーストは、3 つのプラクティスすべてが適用された場合でも低遅延を維持します。

次のグラフは、このワークロードの種類の場合は、NFSv3 のパフォーマンスの方が NFSv4.1 よりもはるかに優れていることを示しています。

NFS バージョン 3 の方が NFS バージョン 4.1 よりもパフォーマンスがはるかに優れていることを示した SPEC EDA の結果を示す図。

次のグラフは、rsize=wsize=262144(256 K) のパフォーマンスが、他の設定よりも優れていることを示しています。

rsize と wsize の値を比較するために SPEC EDA 結果を示す図。

SPEC EDA ツールのベンチマーク結果 (大きなボリューム)

パフォーマンスしきい値のテストは、次の構成で SPEC SFS ベンチマークを使用して、単一の大きなボリュームで実施されました。

構成のタイプ 設定
オペレーティング システム RHEL 9.3 / RHEL 8.7
インスタンスの種類 D16s_v5
インスタンス数 10
マウント オプション nocto,actimeo=600,hard,rsize=262144,wsize=262144,vers=3,tcp,noatime,nconnect=8

テストでは、SPEC SFS ベンチマークを使用した大きなボリュームのパフォーマンス機能を、Azure NetApp Files の通常のボリュームと比較しました。

シナリオ 2 ミリ秒での I/O レート 2 ミリ秒での MiB/秒
1 つの通常ボリューム 39,601 692
1 つの大容量ボリューム 652,260 10,030

大きなボリュームでの待機時間とスループットを比較した図。

FIO ツールのベンチマーク結果 (通常のボリューム)

次の FIO コマンドはそれぞれ、IOPS とスループットをベンチマークします。

// FIO commands to benchmark IOPS:
// 8K Random Reads
fio --name=8krandomreads --rw=randread --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
// 8K Random Writes
fio --name=8krandomwrites --rw=randwrite --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting

// FIO commands to benchmark throughput:
// 64K Sequential Reads
fio --name=64kseqreads --rw=read --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
// 64K Sequential Writes
fio --name=64kseqwrites --rw=write --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting

次の 2 つのグラフは、nocto,actimeo=600nconnect=16sysctl がチューニング済みの場合、Azure NetApp Files がより高い IOPS とスループットを実現できることを示しています。

高い IOPS の FIO 結果を示す図。

高いスループットの FIO 結果を示す図。

FIO ツールのベンチマーク結果 (大きなボリューム)

このセクションでは、FIO ベンチマークを使用した単一の大きなボリュームのパフォーマンスしきい値について説明します。 テストは次の構成で実行されました。

コンポーネント 構成
Azure VM サイズ E32s_v5
Azure VM エグレス帯域幅の制限 2,000 MiB/秒 (2GiB/秒)
オペレーティング システム RHEL 8.4
大容量ボリュームのサイズ 101 TiB Ultra (10,240 MiB/秒のスループット)
マウント オプション hard,rsize=65536,wsize=65536,vers=3
注: 262144 と 65536 の両方を使用すると、同様のパフォーマンス結果が得られます。

256 KiB シーケンシャル ワークロード (MiB/秒)

グラフは、256 KiB のシーケンシャル ワークロードと 1 TiB のワーキング セットを表しています。 これは、約 8,518 MiB/秒の純粋なシーケンシャル書き込みから約 9,970 MiB/秒の純粋なシーケンシャル読み取りまでの範囲で単一の Azure NetApp Files 大容量ボリュームが処理できることを示しています。

大容量ボリュームの 256 KiB シーケンシャル ワークロードの横棒グラフ。

8 KiB ランダム ワークロード (IOPS)

グラフは、8 KiB のランダム ワークロードと 1 TiB のワーキング セットを表します。 このグラフは、Azure NetApp Files 大容量ボリュームが、約 474,000 回の純粋なランダム書き込みから約 709,000 回の純粋なランダム読み取りまでの範囲で処理できることを示しています。

大容量ボリュームのランダムなワークロードの横棒グラフ。