Google Cloud アーキテクチャ フレームワークのこのドキュメントでは、Compute Engine、Google Kubernetes Engine(GKE)、サーバーレス リソースのパフォーマンスの最適化に役立つ推奨事項について説明します。
Compute Engine
このセクションでは、Compute Engine リソースのパフォーマンスの最適化に役立つガイダンスを示します。
リソースの自動スケール
マネージド インスタンス グループ(MIG)を使用すると、Compute Engine VM にデプロイされたステートレス アプリを効率よくスケールできます。自動スケーリングによって、負荷が増加してもアプリが引き続き予測可能なパフォーマンスを実現できるようになります。MIG では、Compute Engine VM のグループが定義したテンプレートに基づいて開始されます。そのテンプレートでは、グループをスケールするためにオートスケーラーが使う 1 つ以上のシグナルを指定する自動スケーリング ポリシーを構成します。自動スケーリングのシグナルは、開始時間や期間などのスケジュールまたは平均 CPU 使用率などの目標指標をベースにします。詳細については、インスタンスのグループの自動スケーリングをご覧ください。
SMT を無効にする
Compute Engine VM に割り当てる各仮想 CPU(vCPU)は、単一のハードウェア マルチスレッドとして実装されます。デフォルトでは、2 つの vCPU が 1 つの物理 CPU コアを共有します。このアーキテクチャは、同時マルチスレッド(SMT)と呼ばれます。
高度に並列化されたワークロードや、浮動小数点計算を実行するワークロード(コード変換、モンテカルロ シミュレーション、遺伝子配列分析、金融リスク モデリングなど)では、SMT を無効にしてパフォーマンスを向上させることができます。詳細については、コアあたりのスレッド数を設定するをご覧ください。
GPU を使用する
ML や可視化などのワークロードの場合は、VM にグラフィック プロセッシング ユニット(GPU)を追加できます。Compute Engine では、NVIDIA GPU がパススルー モードで提供されるため、VM が GPU と関連メモリを直接制御できます。3D 可視化などのグラフィックを多用するワークロードの場合は、NVIDIA RTX 仮想ワークステーションを使用できます。ワークロードをデプロイしたら、GPU の使用状況をモニタリングし、GPU パフォーマンスの最適化のオプションを確認します。
コンピューティング最適化マシンタイプを使用する
ゲーム、メディアのコード変換、ハイ パフォーマンス コンピューティング(HPC)などのワークロードでは、一貫して高い CPU コアあたりのパフォーマンスを必要とします。このようなワークロードを実行する VM には、コンピューティング最適化マシンタイプを使用することをおすすめします。コンピューティング最適化 VM は、不均一メモリアクセス(NUMA)などの機能を使用する、最適で信頼性の高いパフォーマンスを実現するアーキテクチャの上に構築されています。
密結合な HPC ワークロードには、パフォーマンスのピーク効率を達成するための固有の要件セットがあります。詳細については、以下のドキュメントをご覧ください。
適切なストレージを選択する
Google Cloud には、Compute Engine VM 用のさまざまなストレージ オプション(永続ディスク、ローカル SSD(ソリッド ステート ドライブ)ディスク、Filestore、Cloud Storage)が用意されています。こうしたストレージ オプションそれぞれのパフォーマンスを最適化する設計の推奨事項とベスト プラクティスについては、ストレージ パフォーマンスの最適化をご覧ください。
Google Kubernetes Engine
このセクションでは、Google Kubernetes Engine(GKE)リソースのパフォーマンスの最適化に役立つガイダンスを示します。
リソースの自動スケール
GKE クラスタ内のノードプールのサイズは、クラスタ オートスケーラー機能を使用することで、現在の負荷に合わせて自動的に変更できます。自動スケーリングによって、負荷が増加してもアプリが引き続き予測可能なパフォーマンスを実現できるようになります。クラスタ オートスケーラーは、実際のリソース使用率ではなく、ノードで動作している Pod のリソース リクエストに基づいて、ノードプールのサイズを自動的に変更します。自動スケーリングを使用する場合、パフォーマンスとコストにトレードオフがあります。クラスタの自動スケーリングを効率的に構成するためのベスト プラクティスを確認してください。
C2D VM を使用する
C2D マシンタイプを使用すると、コンピューティング負荷の高いコンテナ化されたワークロードのパフォーマンスを向上させることができます。C2D ノードは、ノードプールで C2D マシンタイプを選択することで、GKE クラスタに追加できます。
SMT を無効にする
同時マルチ スレッディング(SMT)は、一般的なコンピューティング タスクや、高い I/O を必要とするワークロードで、アプリケーションのスループットを大幅に向上させることができます。ただし、両方の仮想コアがコンピューティング能力による制約を受けるワークロードの場合、SMT によりパフォーマンスが安定しない可能性があります。パフォーマンスの予測可能性を向上させるには、コアあたりの vCPU 数を 1 に設定して、GKE ノードの SMT を無効にします。
GPU を使用する
画像認識や動画コード変換などのコンピューティング負荷の高いワークロードの場合は、GPU を使用するノードプールを作成することでパフォーマンスを高速化できます。詳細については、GPU の実行をご覧ください。
コンテナ ネイティブのロード バランシングを使用する
コンテナ ネイティブのロード バランシングにより、ロードバランサはトラフィックを直接かつ均等に Pod へ分散できます。この方法を使用すると、ネットワーク パフォーマンスが向上し、ロードバランサと Pod 間のネットワーク レイテンシの可視化が改善されます。このような利点のため、コンテナ ネイティブのロード バランシングが Ingress によるロード バランシングに推奨されるソリューションです。
コンパクト プレースメント ポリシーを定義する
密結合されたバッチ ワークロードでは、GKE ノードプール内のノード間のネットワーク レイテンシを低くする必要があります。コンパクト プレースメント ポリシーを定義すると、このようなワークロードをシングルゾーン ノードプールにデプロイして、ノードを物理的に近づけることができます。詳細については、GKE ノードのコンパクト プレースメントを定義するをご覧ください。
サーバーレス コンピューティング サービス
このセクションでは、Google Cloud のサーバーレス コンピューティング サービス(Cloud Run および Cloud Functions)のパフォーマンスの最適化に役立つガイダンスを示します。これらのサービスは自動スケーリング機能を備え、基盤となるインフラストラクチャが自動的にスケーリングを処理します。こうしたサーバーレス サービスを使用すると、マイクロサービスと関数のスケールにかかる労力を削減し、アプリケーション レベルでのパフォーマンスの最適化に集中できます。
詳細については、以下のドキュメントをご覧ください。
次のステップ
ストレージ、ネットワーキング、データベース、分析リソースのパフォーマンスを最適化するためのベスト プラクティスを確認してください。