このページでは、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 サービスに対する Cloud Run デベロッパー(
roles/run.developer
) -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
CPU 上限を構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
CPU の上限は、新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Google Cloud コンソール、gcloud コマンドライン、YAML ファイルを使用して設定できます。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[コンテナ] タブをクリックします。
- プルダウン リストから目的の CPU の上限を選択します。使用する CPU が 1 未満の場合は、[カスタム] を使用します。CPU 数には
1
、2
、4
、6
、8
のいずれかの値を選択します。CPU が 1 未満の場合は、0.08 から 1.00 までの範囲の値を 0.01 単位で指定します(必要な設定については、CPU の上限の設定と更新の表を参照)。
- プルダウン リストから目的の CPU の上限を選択します。使用する CPU が 1 未満の場合は、[カスタム] を使用します。CPU 数には
[作成] または [デプロイ] をクリックします。
gcloud
次のコマンドを使用して、特定のサービスの CPU の上限を更新します。
gcloud run services update SERVICE --cpu CPU
次のように置き換えます。
- SERVICE は、実際のサービスの名前に置き換えます。
- CPU は、目的の CPU の上限値に置き換えます。
1
、2
、4
、6
、8
のいずれかの値を指定します。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
です。 - CPU は
1
、2
、4
、6
、8
のいずれかの値に置き換えます。CPU が 1 未満の場合は、0.08 から 1.00 までの範囲の値を 0.01 単位で指定します(必要な設定については、CPU の上限の設定と更新の表を参照)。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
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 の上限値に置き換えます。
1
、2
、4
、6
、8
のいずれかの値を指定します。CPU が 1 未満の場合は 0.08 から 1.00 までの範囲の値を 0.01 単位で指定します(必要な設定については、CPU の上限の設定と更新の表を参照)。 - REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります。
SERVICE-
で始まる- 小文字、数字、
-
のみが使用されている - 末尾が
-
ではない - 63 文字以内である
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Terraform 構成のgoogle_cloud_run_v2_service
リソースに次の内容を追加します。前の 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 ファイルを使用して、有効または無効にできます。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[コンテナ] タブをクリックします。
- 起動時の CPU ブーストを有効にするには、[起動時の CPU ブースト] チェックボックスをオンにします。この機能を無効にするには、このチェックボックスをオフにします。
[作成] または [デプロイ] をクリックします。
gcloud
次のコマンドを使用して、特定のサービスで起動時の 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
です。次のコマンドを使用して、特定のサービスで起動時の CPU ブーストを無効にできます。
gcloud run services update SERVICE --no-cpu-boost
SERVICE は、実際のサービス名に置き換えます。
デプロイ中に起動時の CPU のブーストを無効にするには、次のコマンドを使用します。
gcloud run deploy --image IMAGE_URL --no-cpu-boost
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
起動 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 サービスの名前に置き換えます。
次のコマンドを使用して、サービスを作成または更新します。
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 の設定を表示するには:
コンソール
Google Cloud コンソールで Cloud Run に移動します。
目的のサービスをクリックして、[サービスの詳細] ページを開きます。
[変更内容] タブをクリックします。
右側の詳細パネルの [コンテナ] タブに、CPU 設定が表示されます。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、CPU 設定を見つけます。
アプリケーションのスレッド処理と CPU 使用率
1 vCPU を超える CPU 上限を選択する場合は、アプリケーションのスレッドモデルを考慮してください。自動スケーリングの場合、Cloud Run は割り振られたすべての CPU の平均 CPU 使用率を使用します。アプリケーションがシングルスレッドの場合、1 つのコアのみが完全に使用されるため、負荷がかかっても CPU の平均使用率が低くなります。これにより、CPU ベースの自動スケーリングが想定どおりに行われなくなる可能性があります。
シングルスレッド アプリケーションでこの動作を回避するには、メモリ要件が許す場合は、1 つの vCPU から始めることをおすすめします。これにより、CPU ベースの自動スケーリングが改善されます。メモリ要件が高く、シングルスレッド アプリケーションでマルチ CPU を選択する必要がある場合は、同時実行設定の調整を検討してください。