超額配置單一用戶群 VM 的 CPU

單一租戶節點的 CPU 超額配置功能,可讓您排程執行個體,彼此共用備用的 CPU 週期,這樣一來,您就能超額佈建單一租戶節點資源,並在單一租戶節點上排定比平常更多的 VM CPU。CPU 超額配置功能特別適合使用率偏低,但可能發生相對不相關的爆發的工作負載。

CPU 超額配置可將單一租戶節點的費用分攤至更多 VM,降低每部 VM 的成本。使用依通訊端或依核心計費的授權時,也能降低每部 VM 的授權費用。

CPU 超額使用的 VM 可透過下列方式,利用未使用的 CPU 資源:

  • 如果單一租戶節點未滿,超額承諾的 VM 可以使用未分配的核心。

  • 如果單一租戶節點上的其他 VM 未使用所有 CPU 資源 (例如 CPU 閒置),超額承諾的 VM 就能使用這些 CPU 資源。

超額配置等級

您可以在建立 VM 時或停止 VM 後,指定分配給 VM 的 CPU 數量下限。超額配置等級代表保證可供 VM 使用的基礎 CPU 執行緒數量下限。如果 VM 的 vCPU 數量超過可用的基礎執行緒,VM 的 vCPU 會共用基礎運算資源,且執行效能會降低。

您可以為每個 VM 設定這個值,這樣就能在單一單一租戶節點上,佈建具有不同 CPU 超額配置比率的 VM。如果發生相關聯的爆發,較低的值會降低容量需求,但可能會影響效能。如要判斷 CPU 數量下限的最佳值,必須瞭解工作負載使用率,並反覆修改該值。

設定這個值時,請注意下列事項:

  • 如果未設定 CPU 數量下限,或設定的值等於 VM 機型的 CPU 數量,則 VM 的允許超額配置比率為 1.0。如果超額配置比率為 1.0,則只有這個 VM 可以存取所有 CPU,且沒有可超額配置給其他 VM 的 CPU 資源。

  • CPU 數量下限不得大於 VM 機型指定的 CPU 數量。

  • 單一租戶節點上所有 VM 的 CPU 數量下限值總和,不得超過該單一租戶節點類型的 CPU 容量,n1-node-96-624 節點類型的 CPU 容量為 96。

VM 機型指定的 CPU 數量值為靜態值,代表 VM 在 CPU 可用時,可從最低數量增加至的 CPU 數量。如果需要的 CPU 數量與預先定義機型提供的數量不同,可以使用自訂機型。

注意事項

為 VM 設定 CPU 超額配置等級前,請先考量工作負載的重要性。較不重要的工作負載 (例如開發和測試工作負載) 可能可以容許較高的超額配置。較重要的工作負載 (例如正式環境付款系統) 可能無法容許太多超額配置,甚至完全無法容許。

此外,也請考量工作負載的使用率。CPU 使用率偏高的工作負載不適合超額配置 CPU,因為這類工作負載沒有多餘的使用率週期,可供其他超額配置的 VM 使用。此外,如果工作負載的平均 CPU 使用率偏低,但使用率峰值也偏低,則可能適合使用不同大小的機器類型。

使用 CPU 超額配置,可讓不相關的突發工作負載受益,因為這些工作負載的尖峰使用率高、平均使用率低,因此當部分 VM 需要突發使用率時,更有可能提供可用的 CPU 資源,在 VM 之間共用。如果主機上的所有 VM 同時爆發,主機將沒有足夠的資源供 VM 使用。

限制

工作負載限制

CPU 超額配置最適合用於沒有嚴格效能要求的工作負載,例如開發和測試工作負載,以及虛擬桌面基礎架構。

如果工作負載對效能較為敏感,可能不適合高度超額配置 CPU。

如果工作負載的平均和尖峰使用率持續偏低,Google 建議調整資源規模。也就是說,建議您修改 VM 執行個體的大小,以符合該工作負載的資源需求,而非超額配置 CPU。

如果執行個體超額承諾過多,請將其移至其他單一租戶節點。

機型限制

您只能在下列項目超額配置 CPU:

超額配置層級限制

每個單一租戶節點的 CPU 數量下限,只能設為 VM CPU 數量的一半,因此單一租戶節點的超額配置比率上限為 2.0。

VM 排程限制

如果單一租戶節點群組是以未設定 CPU 超額配置的單一租戶節點範本為基礎,則無法佈建已啟用 CPU 超額配置的 VM。也就是說,如果單一租戶節點群組未設定 CPU 超額配置,您就無法在該群組中排定具有指定 CPU 數量下限的 VM。

配額

CPU 配額是根據單一租戶節點類型的 vCPU 數量計算,而非可超額配置的 vCPU 數量上限。

費用

如果單一租戶節點的節點範本選取了 CPU 超額配置,則會額外收取 25% 的費用。這筆費用不包含在在單一租戶節點上執行 VM 的 10% 附加費中。無論 CPU 超額配置層級為何,以及在單一租戶節點上排定多少 VM,CPU 超額配置附加費都是固定的。

單一租戶節點提供承諾使用折扣。單一租戶附加費和 CPU 超額配置附加費適用續用折扣。

如要估算在單一租戶節點上執行 VM 的費用,請參閱 Pricing Calculator。

為單一用戶群 VM 設定 CPU 超額配置

如要設定單一租戶 VM,讓 CPU 資源可超額配置,請按照下列步驟操作:

  1. 建立已啟用 CPU 超額配置的單一租戶節點範本。建立節點範本時,必須啟用 CPU 超額配置。建立節點範本後,就無法啟用 CPU 超額配置。

  2. 依據已啟用 CPU 超額配置的單一租戶節點範本,建立單一租戶節點群組。

  3. 建立 VM 並執行下列操作:

    1. 選擇 VM 的機型。如果 CPU 數量下限少於機型指定的 CPU 數量,則機型的 CPU 數量代表 VM 可從 CPU 數量下限爆發至的 CPU 數量上限。

      您可以為單一租戶節點上的每個 VM 選擇不同的機器類型,只要不超過單一租戶節點的 CPU 和記憶體容量即可。

    2. 指定要分配給該單一 VM 的 CPU 數量下限,或使用代管執行個體群組建立多個具有相同 CPU 超額配置層級的 VM。

事前準備

  • 建立單一租戶節點範本,並指定 --cpu-overcommit-type=enabled。
  • 根據已啟用 CPU 超額配置的單一租戶節點範本,建立單一租戶節點群組。
  • 如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。

設定 CPU 超額配置等級

下列程序說明如何建立單一租戶 VM,並提供可超額使用的 CPU 資源。如要修改執行中 VM 的 CPU 超額配置等級,請先停止 VM。

控制台

在 Google Cloud 控制台中,從已啟用 CPU 超額配置的單一租戶節點範本建立單一租戶節點群組,並在該群組中建立單一租戶 VM:

  1. 前往「Sole-tenant nodes」(單一租戶節點) 頁面。

    前往「Sole-tenant nodes」(單一租戶節點) 頁面

  2. 按一下「Node Groups」(節點群組)。

  3. 按一下要建立 VM 的單一租戶節點群組。

  4. 點選「建立執行個體」。

  5. 指定 VM 的「名稱」、「區域」和「可用區」。

  6. 在「Machine configuration」(機器設定) 下方,選擇固定或自訂的「Machine type」(機器類型)。

  7. 在「CPU overcommit」(CPU 超額配置) 下方,選取「Enable CPU overcommit」(啟用 CPU 超額配置)。

  8. 在「Minimum vCPUs Allocated」(分配的 vCPU 數量下限) 下方,調整滑桿或手動輸入 vCPU 數量,指定這個 VM 的 CPU 超額配置量。

  9. 按一下「Create」(建立),建立具有可超額配置 CPU 資源的 VM 執行個體。

gcloud

下列範例說明如何使用 gcloud compute instances create 指令,在預先定義機型上建立單一租戶 VM,並提供可超額配置的 CPU 資源。

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --min-node-cpu=MIN_VCPUS \
    --node-group=GROUP_NAME

更改下列內容:

  • VM_NAME:要超額配置 CPU 的 VM 名稱。

  • MACHINE_TYPE:用於佈建單一租戶 VM 的機器類型。機型指定的 CPU 數量,是 VM 可從 MIN_VCPUS 向上爆發的最大 CPU 數量。

  • MIN_VCPUS:保證可供這個 VM 使用的 vCPU 數量下限。

  • GROUP_NAME:要佈建 VM 的單一租戶節點群組名稱。

設定自訂機型的超額承諾層級

如要建立單一租戶 VM,並在自訂機型上超額使用 CPU 資源,請省略 --machine-type 旗標,改用 --custom-cpu 和 --custom-memory 旗標,指定自訂機器的 CPU 數量和記憶體容量 (以 GB 為單位)。

REST

以下範例說明如何使用 instances.insert 方法,在固定機器類型上建立單一租戶 VM,並提供可超額配置的 CPU 資源。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "scheduling": {
    "minNodeCpus": MIN_VCPUS,
    "nodeAffinities": [
      {
        "key": "compute.googleapis.com/node-group-name",
        "operator": "IN",
        "values": [
          "GROUP_NAME"
        ]
      }
    ]
  },
  ...
}

更改下列內容:

  • PROJECT_ID:專案 ID。

  • ZONE:這項要求的可用區。

  • MACHINE_TYPE_ZONE:託管機器類型的可用區。

  • MACHINE_TYPE:用於佈建單一租戶 VM 的機器類型。機型指定的 CPU 數量,是 VM 可從 MIN_VCPUS 增加到的 CPU 數量上限。

  • VM_NAME:要超額承諾 CPU 的單一租戶 VM 名稱。

  • MIN_VCPUS:保證可供這個 VM 使用的 vCPU 數量下限。

  • GROUP_NAME:要佈建 VM 的單一租戶節點群組名稱。

設定自訂機型的超額承諾層級

如要建立具備 CPU 資源,且可在自訂機型上超額配置的單一租戶 VM,請將 machineType 欄位的值替換為 zones/zone/machineTypes/custom-CPUS-MEMORY,並將 CPUS 替換為 CPU 數量,以及將 MEMORY 替換為自訂機型的記憶體容量 (以 MB 為單位)。

更新 CPU 超額配置等級

下列程序說明如何更新單一租戶 VM 的 CPU 超額配置等級。

gcloud

  1. 如要修改執行中 VM 的 CPU 超額配置等級,必須先停止 VM。如要停止 VM,請使用 gcloud compute instances stop 指令,如下所示:

    gcloud compute instances stop VM_NAME
    

    將 VM_NAME 替換為要停止的執行個體名稱。

  2. 如要更新單一租戶 VM 的 CPU 超額配置等級,請使用 gcloud compute instances set-scheduling 指令,如下所示:

    gcloud compute instances set-scheduling VM_NAME \
      --min-node-cpu=MIN_VCPUS

    更改下列內容:

    • VM_NAME:要修改 CPU 超額配置層級的單一租戶 VM 名稱。

    • MIN_VCPUS:保證可供這個 VM 使用的 vCPU 數量下限。

  3. 使用 gcloud compute instances start 指令重新啟動 VM:

    gcloud compute instances start VM_NAME
    

    將 VM_NAME 替換為要重新啟動的執行個體名稱。

REST

  1. 如要修改執行中 VM 的 CPU 超額配置等級,必須先停止 VM。如要停止 VM,請使用 instances.stop 方法建構 POST 要求,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • ZONE:這項要求的可用區。

    • VM_NAME:要修改 CPU 超額配置層級的單一租戶 VM 名稱。

  2. 如要更新單一租戶 VM 的 CPU 超額配置等級,請使用 instances.setScheduling 方法,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    {
    "minNodeCpus":MIN_VCPUS
    }
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • ZONE:這項要求的可用區。

    • VM_NAME:要修改 CPU 超額配置層級的單一租戶 VM 名稱。

    • MIN_VCPUS:保證可供這個 VM 使用的 vCPU 數量下限。

  3. 使用 instances.start 方法建構 POST 要求,重新啟動 VM,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • ZONE:這項要求的可用區。

    • VM_NAME:要重新啟動的單一租戶 VM 名稱。

停用單一租戶 VM 的 CPU 超額配置

下列程序說明如何停用單一租戶 VM 的 CPU 超額配置。

gcloud

  1. 如要停用執行中 VM 的 CPU 超額配置,必須先停止 VM。如要停止 VM,請使用 gcloud compute instances stop 指令,如下所示:

    gcloud compute instances stop VM_NAME
    

    將 VM_NAME 替換為要停止的執行個體名稱。

  2. 如要停用 CPU 超額配置,請使用 gcloud compute instances set-scheduling 指令,並加上 --clear-min-node-cpu 旗標:

    gcloud compute instances set-scheduling VM_NAME \
      --clear-min-node-cpu
    

    將 VM_NAME 替換為要停用 CPU 超額配置的單一租戶 VM 名稱。

  3. 使用 gcloud compute instances start 指令重新啟動 VM:

    gcloud compute instances start VM_NAME
    

    將 VM_NAME 替換為要重新啟動的執行個體名稱。

REST

  1. 如要停用執行中 VM 的 CPU 超額配置,必須先停止 VM。如要停止 VM,請使用 instances.stop 方法建構 POST 要求,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • ZONE:這項要求的可用區。

    • VM_NAME:要停止的單一租戶 VM 名稱。

  2. 如要停用 CPU 超額配置,請使用 instances.setScheduling 方法,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    {
    "minNodeCpus":null
    }
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • ZONE:這項要求的可用區。

    • VM_NAME:要停用 CPU 超額配置的單一租戶 VM 名稱。

  3. 使用 instances.start 方法建構 POST 要求,重新啟動 VM,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

    更改下列內容:

    • PROJECT_ID:專案 ID。

    • ZONE:這項要求的可用區。

    • VM_NAME:要重新啟動的單一租戶 VM 名稱。

查看 CPU 使用率

如要查看單一租戶節點群組中,單一租戶 VM 的 CPU 用量,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Sole-tenant nodes」(單一租戶節點) 頁面。

    前往「Sole-tenant nodes」(單一租戶節點) 頁面

  2. 按一下「Node groups」(節點群組)。

  3. 按一下單一租戶節點群組,其中包含具有超額配置 CPU 的 VM 的單一租戶節點。

  4. 按一下含有超額配置 CPU VM 的單一租戶節點。

  5. 在單一租戶節點名稱下方,查看「CPU usage」(CPU 用量)、「CPU overcommit type」(CPU 超額配置類型) 和「Min CPU usage」(最低 CPU 用量)。

    • 「CPU usage」(CPU 用量) 顯示這個單一租戶節點上所有 VM 的 CPU 數量上限總和,除以單一租戶節點類型指定的 CPU 數量。

      節點上可超額配置的 CPU 數量為分子減去分母,超額配置等級則為分子和分母的商。

    • 最低 CPU 用量:專用節點上所有 VM 分配到的最低 CPU 數量總和,除以節點類型指定的 CPU 數量。

最佳化 CPU 超額配置等級

為協助您調整 CPU 超額配置等級,Compute Engine 提供「排程器等待時間」指標。「Scheduler Wait Time」(排程器等待時間) 指標會顯示 VM 上所有 vCPU 的總等待時間,協助您判斷 CPU 超額配置對 VM 效能的影響。

工作負載敏感度不盡相同,但一般規則是將每秒累積的排程器等待時間 20 毫秒 (20 msps),做為每個 vCPU 的等待時間上限。舉例來說,如果 VM 設為 8 個 vCPU,則經驗法則門檻為 160 毫秒,這會導致每個 vCPU 的平均排程器等待時間為 20 毫秒。工作負載的效能需求最終會決定可接受的門檻。

  1. 前往 Google Cloud 控制台的「Monitoring」頁面。

    前往「Monitoring」

  2. 按一下「Metrics Explorer」。

  3. 在「資源類型」欄位中,輸入「VM 執行個體」。

  4. 在「指標」欄位中,輸入「Scheduler Wait Time」。

  5. (選用) 按一下「Alerting」(警告),設定 VM 等待時間門檻的警告觸發條件。

後續步驟