CPU の割り当て(サービス)

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

デフォルトでは、Cloud Run コンテナ インスタンスにはリクエストの処理中、コンテナの起動中、シャットダウン時にのみ CPU が割り当てられます(コンテナ インスタンスのライフサイクルをご覧ください)。この動作を変更すると、受信リクエストがない場合でも CPU が常に割り当て、利用可能な状態にすることができます。CPU を常に割り当てるように設定すると、短期のバックグラウンド タスクやその他の非同期処理タスクの実行に利用できます。

CPU 割り当てモードのイラスト

CPU が常に割り当てられている場合でも、Cloud Run の自動スケーリングは引き続き有効であり、受信トラフィックの処理に必要ないコンテナ インスタンスは停止できます。リクエスト処理後 15 分を過ぎるとインスタンスのアイドル状態は解除されます(ただし、最小インスタンス数を使用してアクティブ状態が保持されている場合は除きます)。

CPU に常に多数の最小インスタンスを割り当てると、多数のコンテナ インスタンスが起動されて CPU リソースへの完全アクセス権が付与されます。これにより、Pub/Sub メッセージの引き出しなどのバックグラウンド処理のユースケースが可能になります。

料金への影響

リクエストの処理中にのみ CPU を割り当てる場合は、各リクエストでコンテナ インスタンスがリクエストを処理した場合にのみ課金されます。CPU の常時割り当てを設定すると、コンテナ インスタンスのライフサイクル全体で料金が発生します。詳細については、Cloud Run の料金表をご覧ください。

適切な CPU 割り当てを選択する方法

ユースケースに適した CPU の割り当ては、トラフィック パターン、バックグラウンド実行、コストなど、いくつかの要素によって異なります。以降のセクションでは、これらの要素について説明します。

トラフィック パターンに関する考慮事項

  • 受信トラフィックが散発的か、バーストまたは急増する場合は、リクエストの処理中にのみ CPU を割り当てることをおすすめします。
  • 受信トラフィックが安定して緩やかであれば、CPU を常に割り当てることをおすすめします。

バックグラウンド実行に関する考慮事項

[CPU を常に割り当てる] を選択すると、レスポンスを返した後に短期のバックグラウンド タスクなどの非同期処理を実行できます。次に例を示します。

  • バックグラウンドでの実行が想定される OpenTelemetry などのモニタリング エージェントを利用する。
  • Go の Goroutine、Node.js async、Java スレッド、Kotlin コルーチンを使用する。
  • 組み込みのスケジューリング / バックグラウンド機能に依存するアプリケーション フレームワークを使用する。

アイドル状態のインスタンス(最小インスタンスを使用してウォーム状態を維持したインスタンスを含む)は、いつでもシャットダウンできます。コンテナが終了する前に未処理のタスクを完了する必要がある場合は、SIGTERM をトラップして、コンテナ インスタンスが停止するまでに 10 秒の猶予期間を設けることができます。

非同期タスクの実行には、Cloud Tasks の使用を検討してください。Cloud Tasks は、失敗したタスクを自動的に再試行し、最大 30 分の実行時間をサポートします。

費用に関する考慮事項

現在、[リクエストの処理中にのみ CPU を割り当てる] を使用していて、次のような場合は、[CPU を常に割り当てる] のほうが経済的です。

  • Cloud Run サービスが、現在の多くのリクエストを一定の速度で処理している。
  • コンテナ インスタンス数の指標で、アイドル状態のコンテナ インスタンスが多くない。

料金計算ツールを使うと、費用の差額を見積もることができます。

CPU 割り当ての設定と更新

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

CPU の常時割り当てオプションを選択する場合は、512 MiB 以上のメモリを指定する必要があります。

デフォルトでは、各コンテナ インスタンスのリクエストの処理中にのみ CPU が割り当てられます。この設定は、新しいサービスの作成時または新しいリビジョンのデプロイ時に、Google Cloud コンソール、gcloud コマンドライン、YAML ファイルを使用して変更できます。

コンソール

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、接続、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [コンテナ] タブをクリックします。

    画像

  5. [CPU の割り当てと料金] で、目的の CPU 割り当てを選択します。インスタンスがリクエストを受信しているときにのみ CPU を割り当てるようにするには、[リクエストの処理中にのみ CPU を割り当てる] を選択します。コンテナ インスタンスの存続期間全体で CPU を割り当てる場合は、[CPU を常に割り当てる] を選択します。

  6. [作成] または [デプロイ] をクリックします。

コマンドライン

CPU 割り当てを更新できます。特定のサービスに対して常に CPU が割り当てられるように設定するには:

gcloud run services update SERVICE --no-cpu-throttling 

SERVICE は、実際のサービス名に置き換えます。

リクエストの処理中にのみ CPU を割り当てるように設定するには:

gcloud run services update SERVICE --cpu-throttling 

デプロイ中に CPU 割り当てを設定することもできます。CPU を常時割り当てられるように設定するには:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

リクエストの処理中にのみ CPU を割り当てるように設定するには:

gcloud run deploy --image IMAGE_URL --cpu-throttling

IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. cpu 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • リクエスト処理中にのみ CPU を割り当てる場合は BOOLEANtrue に置き換えます。CPU を常時割り当てる場合は false に置き換えます。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

CPU 割り当て設定を表示する

Cloud Run サービスの現在の CPU 割り当て設定を表示するには:

コンソール

  1. Cloud Run に移動します

  2. 目的のサービスをクリックして、[サービスの詳細] ページを開きます。

  3. [変更内容] タブをクリックします。

  4. 右側の詳細パネルの [コンテナ] タブに、CPU 割り当て設定が表示されます。

コマンドライン

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、CPU 割り当ての設定を見つけます。