為服務設定 CPU 限制

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

設定及更新 vCPU 限制

根據預設,每個執行個體最多只能有 1 個 vCPU。您可以將這個值變更為下表所示的任何值。

vCPU 和記憶體表格

以下是 vCPU 的記憶體需求:

CPU 記憶體需求
.08 個 vCPU 最多 512 MiB
.5 個 vCPU 最多 1 GiB
1 個 vCPU 最多 4 GiB
2 個 vCPU 最多 8 GiB
4 個 vCPU 2 至 16 GiB
6 個 vCPU 4 至 24 GiB
8 個 vCPU 4 至 32 GiB

大於 1 的值必須是整數。

vCPU 數量上限

最多可設定 8 個 vCPU。

vCPU 數量下限

vCPU 最低設定為 0.08 個 vCPU。

如要使用少於 1 個 vCPU,可以選取 0.08 到 1 之間的任何值,並以 0.001 為單位遞增。

如果使用的 vCPU 少於 1 個,則須遵守下列規定:

設定 條件
記憶體 如要將記憶體限制設為超過 512 MiB,至少需要 0.5 個 vCPU。
如要將記憶體限制設為超過 1 GiB,至少需要 1 個 vCPU。
並行 「Maximum concurrency」(並行上限) 必須設為 1。
帳單 帳單設定必須設為「以要求為依據」計費模式。
執行環境 您必須使用第一代執行環境。

費用注意事項

Cloud Run 資源的費用取決於 CPU 設定和資源啟用時間長度等因素。過度佈建資源可能會增加成本。如要判斷哪種 CPU 設定最適合您的資源,請按照下列步驟操作:

  1. 建立 CPU 限制的初始基準設定,平衡 CPU 使用率和成本。
  2. 在測試系統負載時,請在 Cloud Monitoring 中監控 CPU 使用率指標。
  3. 視需要調整 CPU 設定。

如果 CPU 使用率在尖峰負載下持續偏低,建議減少 vCPU 分配量。如果延遲時間過長,建議增加 vCPU 分配量。

您可以在 Cloud Hub 最佳化頁面查看資源的費用摘要資料、使用率資料和費用最佳化建議。如要瞭解詳情,請參閱 Cloud Run 定價,或使用定價計算工具估算費用。

必要的角色

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

如果您是從原始碼部署服務或函式,則必須在專案和 Cloud Build 服務帳戶中,取得額外角色。

如要查看與 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. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務。

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

  4. 從清單中選取 CPU 限制。選取 1、2、4、6 或 8 個 CPU,或指定 0.08 至 1.00 以下的值 (以 0.01 為單位遞增),即可使用不到 1 個 CPU。(如需必要設定,請參閱「設定及更新 CPU 限制」下方的表格)。

  5. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

gcloud

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

gcloud run services update SERVICE --cpu CPU

更改下列內容:

  • SERVICE:服務名稱。
  • CPU:所需的 CPU 限制。指定 1、2、4、6 或 8 個 CPU,或指定 0.08 至 1.00 以下的值 (以 0.01 為單位遞增),代表少於 1 個 CPU。(如需必要設定,請參閱「設定及更新 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:值為 1、2、4、6 或 8 個 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 限制值。指定 1、2、4、6 或 8 個 CPU,或指定 0.08 至 1.00 以下的值 (以 0.01 為單位遞增),代表少於 1 個 CPU。(如需必要設定,請參閱「設定及更新 CPU 限制」下方的表格)。
    • REVISION::新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
      • 開頭為「SERVICE-」
      • 只能使用小寫英文字母、數字和 -
      • 結尾不是 -
      • 不超過 63 個字元
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

    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. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務。

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

  4. 如要啟用啟動時增加 CPU 的功能,請勾選「Startup CPU boost」(啟動時增加 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。網址格式為 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. 更新 run.googleapis.com/startup-cpu-boost 屬性,指定 'true' 即可啟用啟動時增加 CPU,指定 'false' 則可停用:

    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

    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 則可停用。

撰寫

如要在 compose.yaml 檔案中指定 CPU 限制,請在服務定義中加入 cpus 屬性。

  services:
    web:
      image: IMAGE
      cpus: CPU_VALUE

更改下列內容:

  • IMAGE:容器映像檔的網址。
  • CPU_VALUE:所需的 CPU 限制,例如 2。

部署服務

  1. 如要部署服務,請執行 gcloud run compose up 指令:

    gcloud run compose up compose.yaml
  2. 請按照提示y安裝必要元件或啟用 API。

  3. 選用:如要允許未經驗證的使用者存取服務,請公開服務。

部署完成後,系統會顯示 Cloud Run 服務網址。複製這個網址並貼到瀏覽器,即可查看執行中的容器。您可以在 Google Cloud 控制台停用預設驗證。

查看 CPU 設定

如要查看 Cloud Run 服務目前的 CPU 設定,請按照下列步驟操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run 的「Services」(服務) 頁面:

    前往 Cloud Run。

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

  3. 按一下「容器」分頁標籤查看設定。

gcloud

  1. 使用下列指令:

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

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

選取大於 1 個 vCPU 的 CPU 限制時,請考量應用程式的執行緒模型。自動調度資源時,Cloud Run 會使用所有已分配 CPU 的平均 CPU 使用率。如果應用程式是單一執行緒,可能只會充分利用一個核心,即使在負載下,平均 CPU 使用率也會偏低。這可能會導致 CPU 自動調度資源功能無法正常運作。

如要避免單一執行緒應用程式發生這種情況,在記憶體需求允許的情況下,建議您先從 1 個 vCPU 開始。進而提升 CPU 自動調度資源的成效。如果記憶體需求較高,導致單一執行緒應用程式必須選取多個 CPU,請考慮調整並行設定。