為服務設定 CPU 限制

本頁說明如何為每個 Cloud Run 執行個體指定要使用的 CPU 數量。根據預設,Cloud Run 容器執行個體最多只能使用 1 個 CPU。如要增加或減少這個值,請參閱本頁說明。

本頁也會說明如何啟用或停用啟動 CPU 提升功能。這項功能會在執行個體啟動期間暫時增加 CPU 分配量,以縮短啟動延遲時間。

設定及更新 CPU 限制

根據預設,每個執行個體最多只能使用 1 個 CPU。 您可以將此值變更為下表顯示的任何值。

CPU 和記憶體資料表

以下是 CPU 的最低記憶體需求:

CPU 最低記憶體
1 128 MiB
2 128 MiB
4 2 GiB
6 4 GiB
8 4 GiB

或者,如要使用少於 1 個 CPU,可以選取介於 0.08 和 1 之間的值,並以 0.01 為單位遞增。大於 1 的值必須為整數。如果使用少於 1 個 CPU,系統會強制執行下列規定:

設定 需求
記憶體 如要將記憶體限制設為大於 512 MiB,至少需要 0.5 個 CPU。
如要設定超過 1 GiB 的記憶體上限,至少需要 1 個 CPU。
並行 「並行上限」必須設為 1
帳單 帳單設定必須設為「以要求為依據」計費。
執行環境 您必須使用第一代執行環境

必要的角色

如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予下列 IAM 角色:

如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色Cloud Run IAM 權限。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱部署權限管理存取權

設定 CPU 限制

變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。

當您建立新服務部署新修訂版本時,可以使用 Google Cloud 主控台、gcloud 指令列或 YAML 檔案設定 CPU 限制:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

  3. 如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。

  4. 按一下「容器」分頁標籤。

    圖片

    • 從下拉式清單中選取所需的 CPU 限制,如要使用少於 1 個 CPU,請選取「Custom」(自訂)。選取 12468 個 CPU 的值,或指定小於 1 個 CPU 的值 (0.08 到小於 1.00),增量為 0.01。(如需必要設定,請參閱「設定及更新 CPU 限制」一節中的表格)。
  5. 按一下 [Create] (建立) 或 [Deploy] (部署)

gcloud

您可以使用下列指令,針對特定服務更新 CPU 限制

gcloud run services update SERVICE --cpu CPU

取代

  • SERVICE 改為您的服務名稱
  • CPU 替換為所需的 CPU 限制。指定 12468 個 CPU 的值,或指定小於 1 個 CPU 的值,範圍為 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。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • CPU,值為 12468 個 CPU;如要使用少於 1 個 CPU,請指定介於 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。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • CPU 替換為所需的 CPU 限制值。指定 12468 個 CPU 的值,或指定小於 1 個 CPU 的值,範圍為 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 資源會在 template.containers.resources.limits 下方指定 CPU 限制。

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 提升功能而需支付 4 個 CPU 的費用,包括容器啟動完成後的 10 秒,以及容器生命週期其餘時間的 2 個 CPU 費用。

如果 Cloud Run 部署作業使用 Sidecar,且您啟用啟動 CPU 提升功能,所有容器都會獲得 CPU 提升。Cloud Run 會根據 CPU 限制,決定每個容器的 CPU 提升量。

您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 檔案或 Terraform 檔案,啟用或停用啟動 CPU 提升功能。

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」

  3. 如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。

  4. 按一下「容器」分頁標籤。

    圖片

    • 如要啟用啟動時 CPU 效能強化,請選取「啟動時 CPU 效能強化」核取方塊。如要停用這項功能,請取消勾選核取方塊。
  5. 按一下 [Create] (建立) 或 [Deploy] (部署)

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。網址的格式為 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. 指定 'true' 啟用啟動 CPU 提升功能,或指定 '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,並搭配 true 啟用啟動 CPU 提升功能,或搭配 false 停用這項功能。

查看 CPU 設定

如要查看 Cloud Run 服務目前的 CPU 設定:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run:

    前往 Cloud Run

  2. 按一下感興趣的服務,開啟「服務詳細資料」頁面。

  3. 按一下「Revisions」(修訂版本) 分頁標籤。

  4. 在右側的詳細資料面板中,CPU 設定會列在「容器」分頁下方。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中找出 CPU 設定。

應用程式執行緒和 CPU 使用率

選取大於 1 個 vCPU 的 CPU 限制時,請考量應用程式的執行緒模型。自動調度資源時,Cloud Run 會使用所有已分配 CPU 的平均 CPU 使用率。如果應用程式是單一執行緒,可能只會充分運用一個核心,因此即使負載量高,平均 CPU 使用率仍偏低。這可能會導致系統無法如預期地根據 CPU 自動調度資源。

如要避免單一執行緒應用程式發生這種情況,如果記憶體需求允許,建議從 1 個 vCPU 開始。這樣一來,系統就能根據 CPU 使用率更準確地自動調度資源。如果單一執行緒應用程式需要較高的記憶體,而您因此選取多個 CPU,請考慮調整並行設定