在單一用戶群 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 數量下限的值,或是設定的 CPU 數量下限值等於 VM 機型中的 CPU 數量,VM 允許的超額配置比率為 1.0。超額配置比率為 1.0 時,所有 CPU 都只能由這個 VM 存取,且沒有可超額配置給其他 VM 的 CPU 資源。

  • 最少 CPU 數量不得超過 VM 機器類型指定的 CPU 數量。

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

VM 機器類型指定的 CPU 數量值為靜態值,代表 VM 可從最小數量起,在可用的情況下增加至多少個 CPU。如果您需要的 CPU 數量與預先定義的機器類型提供的不同,可以使用自訂機器類型

注意事項

為 VM 設定 CPU 超出承諾的程度之前,請先考量工作負載的重要性。較不重要的工作負載 (例如開發和測試工作負載) 可能會容許較高的超額配置程度。較重要的工作負載 (例如正式版付款系統) 可能無法容許超額配置,甚至完全不允許超額配置。

也請考量工作負載的使用率。高 CPU 使用率的工作負載不適合 CPU 超出承諾,因為這些工作負載不會有其他超出承諾的 VM 可用的閒置週期。此外,如果工作負載的平均 CPU 使用率偏低,但使用率高峰也偏低,則可能會因機器類型的大小不同而有所助益。

使用 CPU 超出承諾功能可為不相關的爆量工作負載帶來好處,因為這些工作負載在某些 VM 需要爆量使用時,更有可能有可在各 VM 之間共用的可用 CPU 資源。如果主機上所有 VM 同時爆量,主機就無法為您的 VM 提供足夠的資源。

限制

工作負載限制

CPU 超出承諾最適合沒有嚴格效能需求的工作負載,例如開發和測試工作負載,以及虛擬桌面基礎架構。

對於對效能敏感的工作負載而言,高 CPU 超額配置可能不太適合。

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

如果執行個體的承諾過高,請將其移至其他單一租用者節點

機器類型限制

您只能在下列情況下超額配置 CPU:

超額配置層級限制

您只能將每個單一用戶群節點的 CPU 最小值設為 VM 的 CPU 數量的一半,讓單一用戶群節點的超額配置比率達到 2.0 的最高值。

VM 排程限制

以未設定 CPU 超額配置的單一用戶群節點範本為基礎的單一用戶群節點群組,無法佈建啟用 CPU 超額配置的 VM。也就是說,您無法在未針對 CPU 超出承諾設定的專屬節點群組中,為 VM 排定指定的 CPU 最小數量。

配額

CPU 配額取決於單一用戶群節點類型的 vCPU 數量,而非可用於超額配置的 vCPU 潛在最大數量。

費用

在節點範本中選取 CPU 超額配置的單一用戶群節點,會產生額外 25% 的費用。這筆費用是除了在單一用戶群節點上執行 VM 的 10% 附加費之外的額外費用。無論 CPU 超額使用程度為何,以及單一用戶群節點上預定的 VM 數量為何,CPU 超額使用附加費都是固定的。

單一用戶群節點提供承諾使用折扣續用折扣適用於單一用戶群附加費和 CPU 超出承諾附加費。

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

設定單一用戶群 VM 以便超額配置

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

  1. 建立已啟用 CPU 超額配置功能的單一用戶群節點範本。您必須在建立節點範本時啟用 CPU 超出承諾功能。建立節點範本後,您無法啟用 CPU 超出承諾。

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

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

    1. 為 VM 選擇機器類型。如果 CPU 數量下限低於機器類型指定的 CPU 數量,機器類型中的 CPU 數量代表 VM 可從 CPU 數量下限增加至 CPU 數量上限的最大數量。

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

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

事前準備

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

設定 CPU 超額配置等級

以下程序說明如何建立單一用戶群 VM,並提供可用於超出承諾的 CPU 資源。如果您需要修改執行中的 VM 的 CPU 超額配置等級,請先停止 VM。

主控台

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

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

    前往「單一用戶群節點」

  2. 按一下「節點群組」

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

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

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

  6. 在「Machine configuration」(機器設定) 下方,選擇至少有 4 個 vCPU 的固定或自訂「Machine type」(機器類型)

  7. 在「CPU 超額配置」下方,選取「啟用 CPU 超額配置」

  8. 在「分配的 vCPU 數量下限」下方,調整滑桿或手動輸入 vCPU 數量,指定此 VM 上 CPU 的超額配置程度。

  9. 按一下「建立」,建立可用於超額配置的 CPU 資源 VM 執行個體。

gcloud

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

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 的單一用戶群節點群組名稱。

在自訂機器類型上設定超出承諾的程度

如要建立單租戶 VM,並在自訂機器類型中提供可用於超出承諾的 CPU 資源,請將 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 最少數量。

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 最少數量。

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

下列程序說明如何停用單一租用者 VM 的 CPU 超出承諾。

gcloud

以下範例說明如何使用 gcloud compute instances set-scheduling 指令,停用單租戶 VM 的 CPU 超出承諾。

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

更改下列內容:

  • VM_NAME:要停用 CPU 超出承諾的單一用戶群 VM 名稱。

REST

以下範例說明如何使用 instances.setScheduling 指令,停用單租戶 VM 的 CPU 超出承諾。

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 名稱。

查看 CPU 使用率

如要檢查單一用戶群節點群組中單一用戶群 VM 的 CPU 用量,請執行下列操作:

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

    前往「單一用戶群節點」

  2. 按一下「節點群組」

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

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

  5. 在單一用戶群節點名稱下方,查看「CPU 使用率」、「CPU 超出承諾類型」和「最低 CPU 使用率」

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

      節點上可用於超額配置的 CPU 數量為分母減去分子,而超額配置等級則是分子除以分母。

    • 「最低 CPU 用量」會顯示單一租用者節點上為所有 VM 分配的最低 CPU 數量總和,除以節點類型指定的 CPU 數量。

調整 CPU 超額配置等級

為了協助您調整 CPU 超出承諾的最佳化設定,Compute Engine 提供「Scheduler Wait Time」指標。「Scheduler Wait Time」指標代表 VM 上所有 vCPU 的總等待時間,可協助您判斷 CPU 超出承諾對 VM 效能造成的影響。

工作負載敏感度各有不同,但一般而言,每秒累積的排程器等待時間為 20 毫秒 (20 msps),可做為每個 vCPU 的最大等待時間。舉例來說,如果 VM 設為 8 個 vCPU,則一般規則的閾值為 160 msps,因此每個 vCPU 的平均排程器等待時間為 20 msps。工作負載的效能需求最終會決定可接受的門檻。

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

    前往「Monitoring」頁面

  2. 按一下「Metrics Explorer」

  3. 在「Resource type」欄位中輸入「VM Instance」

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

  5. 您可以視需要按一下「快訊」,設定快訊,以便在 VM 等待時間達到指定門檻時觸發快訊。

後續步驟