このページでは、Google Cloud NetApp Volumes のパフォーマンスを最適化する方法について説明します。
始める前に
パフォーマンスを最適化するためにボリュームを変更する前に、パフォーマンスに関する考慮事項を確認してください。
音量設定を調整する
次の音量設定を調整して、パフォーマンスを最適化できます。
- ボリューム容量を増やす: Premium、Extreme、Standard の各サービスレベルのボリュームの容量を増やして、達成可能な最大ボリューム スループットを向上させることができます。Flex サービスレベルのボリュームの場合は、ストレージ プールの容量を増やしてください。 
- サービスレベルをアップグレードする: プレミアム サービスレベルのボリュームをエクストリーム サービスレベルにアップグレードして、スループットを向上させることができます。ボリュームを異なるサービスレベルの別のストレージ プールに割り当てることをおすすめします。 
- 手動 QoS プールを使用してスループットを増やす: スループット要件が低い大容量の割り当てスループットを減らし、パフォーマンスを向上させる必要がある小容量のスループットを、使用可能なプール スループットまで増やすことができます。 
ボリューム容量の増加とサービスレベルのアップグレードは、ボリュームで処理中の I/O ワークロードを中断することなく、ボリュームへのアクセスに影響することもありません。
クライアントを調整する
クライアントで次の設定を調整すると、パフォーマンスを改善できます。
- クライアントを併置する: レイテンシの結果は、クライアントの機能と場所によって直接影響を受けます。最適な結果を得るには、クライアントをボリュームと同じリージョンに配置するか、できるだけ近くに配置します。各ゾーンのクライアントからレイテンシをテストしてゾーンの影響をテストし、レイテンシが最も低いゾーンを使用します。 
- Compute Engine のネットワーク帯域幅を構成する: Compute Engine 仮想マシンのネットワーク機能は、使用するインスタンス タイプによって異なります。通常、インスタンスが大きいほど、ネットワーク スループットが高くなります。適切なネットワーク帯域幅機能を備えたクライアント仮想マシンを選択し、Google Virtual NIC(gVNIC)ネットワーク インターフェースを選択して、 - Tier_1パフォーマンスを有効にすることをおすすめします。詳細については、Compute Engine のドキュメントのネットワーク帯域幅をご覧ください。
- 複数の TCP セッションを開く: アプリケーションで高いスループットが必要な場合、通常の NFS セッションと SMB セッションの基盤となる単一の伝送制御プロトコル(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 Volumes に接続する単一プロジェクト内のすべての 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 ベースのクライアントの場合、クライアントは SMB マルチチャネルと受信側スケーリング(RSS)を使用して、複数の TCP 接続を開くことができます。この構成を実現するには、仮想マシンに RSS をサポートするネットワーク アダプタが割り当てられている必要があります。RSS は 4 または 8 の値に設定することをおすすめしますが、1 より大きい値であればスループットは向上します。 - 次のグラフは、RSS 構成が SMB ワークロードに与える影響を示しています。この情報は、次の設定で Fio を使用してキャプチャされました。 - 100% 読み取りワークロード 
- 単一ボリュームに対する 8 KiB ブロックサイズ 
- Windows 2022 OS を実行する単一の - n2-standard-32仮想マシン
- 6 TiB のワーキング セット 
 - 8 つのジョブが実行され、テスト実行間で SMB クライアントの RSS オプションのみが変更されました。RSS 値を 4、8、16 にすると、1 を使用した場合と比較してパフォーマンスが 2 倍になりました。各 RSS インスタンスは、 - numjobsパラメータを 8 にして 9 回実行されました。- iodepthパラメータは、最大スループットに達するまで、実行ごとに 5 ずつ増加しました。 
手動 QoS
NetApp Volumes の手動サービス品質(QoS)を使用すると、ワークロードの要件を満たすようにボリュームのパフォーマンスを調整し、ストレージ費用を制御できます。
手動 QoS には次の利点があります。
- 費用の最適化: ストレージ プール容量内でボリューム パフォーマンスをスケーリングして、クラウド費用を最適化します。 
- スループットの即時調整: ダウンタイムなしでボリューム スループットを調整します。 
- 障害復旧コストの削減: 複製されたボリュームの QoS を下げて、宛先プールの障害復旧コストを削減します。 
- クローンまたはキャッシュのパフォーマンスの向上: 割り当てサイズが小さいクローンまたはキャッシュ ボリュームのパフォーマンスを向上させます。 
- 柔軟なワークロード管理: より大きなストレージ プールを複数のワークロードのコンテナとして使用し、必要に応じて各ボリュームのスループットを調整します。 
考慮事項
- 手動 QoS は、Google Cloud CLI、NetApp Volumes API、または Terraform を使用して管理できます。 Google Cloud コンソールはサポートされていません。 
- 手動 QoS は Standard、Premium、Extreme の各サービスレベルでサポートされていますが、Flex サービスレベルでは使用できません。 
QoS の上限を手動で設定する
手動 QoS ストレージ プール内のボリュームでは、スループットと容量を個別に設定できます。手動 QoS プール内のすべてのボリュームの全体的なスループットは、プールの合計スループットによって制限されます。プールのスループットは、割り当てられた容量とサービスレベルによって決まります。たとえば、40 TiB の Premium プールは、1 TiB あたり 64 MiBps で最大 2,560 MiBps のスループットを実現できます。一方、200 TiB の Extreme プールは、合計スループットが 25,600 MiBps のボリュームをサポートできます。
手動 QoS プールを設定したら、そのプール内の各ボリュームに必要なスループット上限を設定できます。単一ボリュームの最大スループットの上限は 4.5 GiBps です。大容量ボリュームの場合は 30 GiBps です。
プールとボリュームのコマンドまたは API には、プールの使用可能なスループット値と割り当てられたスループット値が表示されます。これにより、合計スループットを管理できます。手動 QoS プールを作成してボリューム スループットを定義するには、ストレージ プールを作成するとボリュームを作成するをご覧ください。
ストレージ プールの作成
gcloud
手動 QoS を使用してストレージ プールを作成します。
gcloud netapp storage-pools create POOL_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --capacity=CAPACITY \ --service-level=SERVICE_LEVEL \ --qos-type=QOS_TYPE \ --network=name=NETWORK_NAME
次の情報を置き換えます。
- POOL_NAME: 作成するプールの名前。プール名はロケーションごとに一意である必要があります。
- PROJECT_ID: ストレージ プールを作成するプロジェクトの名前。
- LOCATION: 作成するプールのロケーション。
- CAPACITY: プールの容量(GiB 単位)。
- SERVICE_LEVEL: ストレージ プールのサービスレベル(Standard、Premium、Extreme)。
- QOS_TYPE: ストレージ プールの QoS タイプ(auto または manual)。
- NETWORK_NAME: VPC の名前。
ストレージ プールを編集する
gcloud
手動 QoS を使用するように、既存の自動 QoS ストレージ プールを編集します。
gcloud netapp storage-pools update POOL_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --qos-type=QOS_TYPE
次の情報を置き換えます。
- POOL_NAME: 更新するプールの名前。
- PROJECT_ID: プロジェクトの名前。
- LOCATION: プールのロケーション。
- QOS_TYPE: ストレージ プールの更新された QoS タイプ。手動構成のみがサポートされています。
ボリュームを作成
gcloud
次のコマンドを使用して、指定した手動 QoS スループット上限でボリュームを作成します。
gcloud netapp volumes create VOLUME_NAME \ --project=PROJECT_ID \ --location=LOCATION \ --storage-pool=STORAGE_POOL \ --capacity=CAPACITY \ --protocols=PROTOCOLS \ --share-name=SHARE_NAME \ --throughput-mibps=THROUGHPUT_MIBPS
次の情報を置き換えます。
- VOLUME_NAME: ボリュームの名前。この名前は、ロケーションごとに一意である必要があります。
- PROJECT_ID: ボリュームを作成するプロジェクトの名前。
- LOCATION: ボリュームのロケーション。
- STORAGE_POOL: ボリュームを作成するストレージ プール。
- CAPACITY: ボリュームの容量。これは、NAS クライアントに表示される容量を定義します。
- PROTOCOLS: ボリュームのエクスポートに使用する NAS プロトコルを選択します。有効な選択肢は、NFSv3、NFSv4、SMB、および次の組み合わせです。- nfsv3,nfsv4
- nfsv3,smb
- nfsv4,smb
 - 選択したプロトコル タイプに応じて、 - export-policyや- smb-settingsなどのプロトコル固有のパラメータを追加することをおすすめします。
- SHARE_NAME: ボリュームの NFS エクスポート パスまたは SMB 共有名。
- THROUGHPUT_MIBPS: ボリュームのスループット上限(MiBps)。
その他のオプションのフラグの詳細については、ボリューム作成に関する Google Cloud SDK のドキュメントをご覧ください。
次のステップ
ストレージ プールについて確認する。