このページでは、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 のドキュメントをご覧ください。
次のステップ
ストレージ プールについて確認する。