このページでは、Google Cloud NetApp Volumes のパフォーマンスを最適化する方法について説明します。
始める前に
パフォーマンスを最適化するためにボリュームを変更する前に、パフォーマンスに関する考慮事項を確認してください。
音量設定を調整する
次の音量設定を調整することで、パフォーマンスを最適化できます。
ボリュームの容量を増やす: Premium、Extreme、または Standard のサービスレベルのボリュームの容量を増やすと、達成可能なボリューム スループットを向上させることができます。Flex サービスレベルのボリュームの場合は、代わりにストレージ プールの容量を増やします。
サービスレベルをアップグレードする: プレミアム サービスレベルのボリュームをエクストリーム サービスレベルにアップグレードすると、スループットを改善できます。ボリュームは、異なるサービスレベルの別のストレージ プールに割り当てることをおすすめします。
ボリューム容量の増加とサービスレベルのアップグレードはどちらも、ボリュームで処理中の I/O ワークロードを中断せず、ボリュームへのアクセスに影響しません。
クライアントを調整する
クライアントで次の設定を調整すると、パフォーマンスを改善できます。
クライアントを同じ場所に配置する: レイテンシの結果は、クライアントの機能と場所に直接影響されます。最適な結果を得るには、クライアントをボリュームと同じリージョンに配置するか、できるだけ近いリージョンに配置します。各ゾーンのクライアントからのレイテンシをテストしてゾーンへの影響をテストし、レイテンシが最も低いゾーンを使用します。
Compute Engine ネットワーク帯域幅を構成する: Compute Engine 仮想マシンのネットワーク機能は、使用されるインスタンスタイプによって異なります。通常、インスタンスのサイズが大きいほど、ネットワーク スループットを増やすことができます。適切なネットワーク帯域幅機能を備えたクライアント仮想マシンを選択し、Google Virtual NIC(gVNIC)ネットワーク インターフェースを選択して、
Tier_1
パフォーマンスを有効にすることをおすすめします。詳細については、ネットワーク帯域幅に関する Compute Engine のドキュメントをご覧ください。複数の TCP セッションを開く: アプリケーションで高いスループットが必要な場合、通常の NFS セッションと SMB セッションの基盤となる単一の Transmission Control Protocol(TCP)セッションが最終的に飽和状態になる可能性があります。このような場合は、NFS 接続と SMB 接続で使用する TCP セッションの数を増やします。
クライアントの種類に応じて、次のいずれかのタブを使用してクライアントを調整します。
Linux
従来、NFS クライアントは、ストレージ エンドポイントを共有する NFS マウント ファイル システムすべてに対して単一の TCP セッションを使用します。
nconnect
マウント オプションを使用すると、サポートされている TCP セッションの数を最大 16 に増やすことができます。nconnect
を最大限に活用できるように Linux クライアント タイプを調整するには、次のベスト プラクティスをおすすめします。nconnect
を使用して TCP セッション数を増やす: TCP セッションを追加するたびに、128 件の保留中リクエストのキューが増え、同時実行性が向上します。sunrpc.max_tcp_slot_table_entries
パラメータを設定する:sunrpc.max_tcp_slot_table_entries
は、パフォーマンスを制御するために変更できる接続レベルの調整パラメータです。sunrpc.max_tpc_slot_table_enteries
は 128 リクエストまたは接続あたりに設定し、NetApp ボリュームに接続する単一プロジェクト内のすべての NFS クライアントで 10,000 スロットを超えないようにすることをおすすめします。sunrpc.max_tcp_slot_table_entries
パラメータを設定するには、パラメータを/etc/sysctl.conf
ファイルに追加し、sysctl -p
コマンドを使用してパラメータ ファイルを再読み込みします。セッションあたりの最大サポート値を 180 に調整する: NFSv3 とは異なり、NFSv4.1 クライアントはセッションでクライアントとサーバーの関係を定義します。NetApp Volumes は NFSv3 を使用して接続あたり最大 128 個の未処理リクエストをサポートしますが、NFSv4.1 はセッションあたり 180 個の未処理リクエストに制限されています。Linux NFSv4.1 クライアントのデフォルトはセッションあたり
64 max_session_slots
ですが、必要に応じてこの値を調整できます。セッションあたりのサポートされている最大値を 180 に変更することをおすすめします。max_session_slots
をチューニングするには、/etc/modprobe.d
に構成ファイルを作成します。インラインに引用符(" ")がないことを確認します。有効にしないと、このオプションは適用されません。$ echo "options nfs max_session_slots=180" > /etc/modprobe/d/nfsclient/conf $ reboot Use the systool -v -m nfs command to see the current maximum in use by the client. For the command to work, at least one NFSv4.1 mount must be in place. $ systool -v -v nfs { Module = "nfs" … Parameters: … Max_session_slots = "63" <- … }
次の NFS
nconnect
の比較グラフは、nconnect 構成の使用が NFS ワークロードに与える影響を示しています。この情報は、次の設定で Fio を使用してキャプチャされました。100% 読み取りワークロード
単一ボリュームに対する 8 KiB のブロックサイズ
Red Hat 9 OS を使用する
n2-standard-32
仮想マシン6 TiB ワーキング セット
nconnect
値を 16 にすると、有効にしていない場合と比べてパフォーマンスが 5 倍向上しました。Windows
Windows ベースのクライアントの場合、クライアントは受信側スケーリング(RSS)で SMB マルチチャネルを使用して複数の TCP 接続を開くことができます。この構成を実現するには、仮想マシンに RSS をサポートするネットワーク アダプタが割り当てられている必要があります。RSS は 4 または 8 に設定することをおすすめしますが、1 より大きい値に設定するとスループットが向上します。
次のグラフは、RSS 構成を使用すると SMB ワークロードにどのような影響があるかを示しています。この情報は、次の設定で Fio を使用してキャプチャされました。
100% 読み取りワークロード
単一ボリュームに対する 8 KiB のブロックサイズ
Windows 2022 OS を実行する単一の
n2-standard-32
仮想マシン6 TiB ワーキング セット
テスト実行間で SMB クライアント RSS オプションのみを変更して、8 つのジョブを実行しました。RSS 値を 4、8、16 にすると、値を 1 にした場合と比較してパフォーマンスが 2 倍になりました。各 RSS インスタンスは、
numjobs
パラメータが 8 の状態で 9 回実行されました。最大スループットに達するまで、iodepth
パラメータは実行ごとに 5 ずつ増加しました。
次のステップ
ストレージ プールについて確認する。