サービスの CPU 上限を構成する

このページでは、Cloud Run インスタンスごとに使用する CPU の数を指定する方法について説明します。デフォルトでは、Cloud Run コンテナ インスタンスは 1 つの CPU に制限されています。この値は、このページの説明に従って増減できます。

このページでは、起動時の CPU ブーストを有効または無効にする方法についても説明します。これは、起動レイテンシを短縮するために、インスタンスの起動時に一時的に CPU 割り当てを増やす機能です。

CPU 上限の設定と更新

デフォルトでは、各インスタンスの CPU は 1 つに制限されています。この値は、次の表に示す値に変更できます。

CPU とメモリの表

CPU の最小メモリ要件は次のとおりです。

CPU 最小メモリ
1 128 MiB
2 128 MiB
4 2 GiB
6 4 GiB
8 4 GiB

また、使用する CPU を 1 未満にする場合は、0.08 から 1 までの範囲の値を 0.01 単位で選択します。1 より大きい値は整数値にする必要があります。使用する CPU が 1 未満の場合は、次の要件が適用されます。

設定 要件
メモリ メモリ上限に 512 MiB を超える値を設定するには、0.5 以上の CPU が必要です。
メモリ上限に 1 GiB を超える値を設定するには、1 以上の CPU が必要です。
同時実行 最大同時実行数1 に設定する必要があります。
課金 課金設定がリクエストベースの課金に設定されている必要があります。
実行環境 第 1 世代の実行環境を使用する必要があります。

必要なロール

Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

CPU 上限を構成する

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

CPU の上限は、新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Google Cloud コンソール、gcloud コマンドライン、YAML ファイルを使用して設定できます。

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

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

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

    画像

    • プルダウン リストから目的の CPU の上限を選択します。使用する CPU が 1 未満の場合は、[カスタム] を使用します。CPU 数には 12468 のいずれかの値を選択します。CPU が 1 未満の場合は、0.08 から 1.00 までの範囲の値を 0.01 単位で指定します(必要な設定については、CPU の上限の設定と更新の表を参照)。
  5. [作成] または [デプロイ] をクリックします。

gcloud

次のコマンドを使用して、特定のサービスの CPU の上限を更新します。

gcloud run services update SERVICE --cpu CPU

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

  • SERVICE は、実際のサービスの名前に置き換えます。
  • CPU は、目的の CPU の上限値に置き換えます。12468 のいずれかの値を指定します。CPU が 1 未満の場合は 0.08 から 1.00 までの範囲の値を 0.01 単位で指定します(必要な設定については、CPU の上限の設定と更新の表を参照)。

次のコマンドを使用して、デプロイ中に CPU を設定することもできます。

gcloud run deploy --image IMAGE_URL --cpu CPU

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

  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
  • CPU12468 のいずれかの値に置き換えます。CPU が 1 未満の場合は、0.08 から 1.00 までの範囲の値を 0.01 単位で指定します(必要な設定については、CPU の上限の設定と更新の表を参照)。

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                cpu: CPU

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

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
    • CPU は、目的の CPU の上限値に置き換えます。12468 のいずれかの値を指定します。CPU が 1 未満の場合は 0.08 から 1.00 までの範囲の値を 0.01 単位で指定します(必要な設定については、CPU の上限の設定と更新の表を参照)。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

Terraform 構成の google_cloud_run_v2_service リソースに次の内容を追加します。

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          # CPU usage limit
          cpu = "1"
        }
      }
    }
  }
}

前の google_cloud_run_v2_service リソースでは、CPU の上限を template.containers.resources.limits の下に指定します。

1 は、目的の CPU 数に置き換えます。ヒント: 1 は 1 つの vCPU に対応します。

起動時の CPU ブーストを設定する

リビジョンの起動時 CPU のブースト機能は、インスタンスの起動時間中とインスタンス開始後の 10 秒間に追加の CPU を提供します。

実際の CPU ブーストは、CPU 上限の設定によって異なります。

CPU 上限 ブーストされた CPU
0-1 2
2 4
4 8
6 8
8 8

割り当てられたブースト CPU はコンテナの起動中に課金されます。たとえば、コンテナの起動時間が 15 秒で、2 個の CPU を割り当てた場合、起動時の CPU ブーストにより、コンテナの起動終了後 10 秒を含むインスタンスの起動時間(短い場合もある)は 4 CPU、残りのコンテナ ライフサイクルの間は 2 CPU が課金されることになります。

Cloud Run デプロイでサイドカーを使用していて、起動時の CPU ブーストを有効にしている場合、すべてのコンテナで CPU ブーストが実行されます。Cloud Run は、CPU の上限に基づいて各コンテナのブーストされる CPU の量を決定します。

起動時の CPU ブーストは、 Google Cloud コンソール、Google Cloud CLI、YAML ファイル、または Terraform ファイルを使用して、有効または無効にできます。

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

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

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

    画像

    • 起動時の CPU ブーストを有効にするには、[起動時の CPU ブースト] チェックボックスをオンにします。この機能を無効にするには、このチェックボックスをオフにします。
  5. [作成] または [デプロイ] をクリックします。

gcloud

  1. 次のコマンドを使用して、特定のサービスで起動時の CPU ブーストを有効にできます。

    gcloud run services update SERVICE --cpu-boost

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

    デプロイ中に起動時の CPU のブーストを有効にするには、次のコマンドを使用します。

    gcloud run deploy --image IMAGE_URL --cpu-boost

    IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。

  2. 次のコマンドを使用して、特定のサービスで起動時の CPU ブーストを無効にできます。

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

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

    デプロイ中に起動時の CPU のブーストを無効にするには、次のコマンドを使用します。

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

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 起動 CPU ブーストを有効にするには 'true' を指定し、無効にするには 'false' を指定して、run.googleapis.com/startup-cpu-boost 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/startup-cpu-boost: 'true'

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

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

Terraform 構成の google_cloud_run_v2_service リソースに次の内容を追加します。

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        startup_cpu_boost = CPU_BOOST
      }
    }
  }
}

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

  • SERVICE: Cloud Run サービスの名前。
  • REGION: Google Cloud リージョン。例: europe-west1
  • CPU_BOOST: 起動時の CPU ブーストを有効にする場合は true、無効にする場合は false

CPU 設定を表示する

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

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

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

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

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

gcloud

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

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

アプリケーションのスレッド処理と CPU 使用率

1 vCPU を超える CPU 上限を選択する場合は、アプリケーションのスレッドモデルを考慮してください。自動スケーリングの場合、Cloud Run は割り振られたすべての CPU の平均 CPU 使用率を使用します。アプリケーションがシングルスレッドの場合、1 つのコアのみが完全に使用されるため、負荷がかかっても CPU の平均使用率が低くなります。これにより、CPU ベースの自動スケーリングが想定どおりに行われなくなる可能性があります。

シングルスレッド アプリケーションでこの動作を回避するには、メモリ要件が許す場合は、1 つの vCPU から始めることをおすすめします。これにより、CPU ベースの自動スケーリングが改善されます。メモリ要件が高く、シングルスレッド アプリケーションでマルチ CPU を選択する必要がある場合は、同時実行設定の調整を検討してください。