自訂可見的 CPU 核心數量

自訂可見的 CPU 核心數量可讓您精細控管授權費用,同時維持網路和永久磁碟的效能。這項自訂作業會減少虛擬機器 (VM) 執行個體可用的 vCPU 數量,但不會變更機器類型或價格。

Compute Engine 會將每個虛擬 CPU (vCPU) 實作為在實體 CPU 核心上執行的單一硬體多執行緒。如要減少 VM 可用的 vCPU 數量,Compute Engine 可讓您自訂可見的 CPU 核心數量。

可見核心是指 VM 所用的基礎硬體 CPU 核心。根據預設,VM 可見的 CPU 核心數是機器類型上的 vCPU 數,除以每個核心的執行緒數

  • 可見 CPU 核心 = 機器類型上的 vCPU / 每個核心的執行緒數

舉例來說,c2-standard-60 機器類型指定了 60 個 vCPU。假設每個核心的預設執行緒數為 2,則可見的 CPU 核心數為 30。如果將可見核心數量從 30 個減少為 20 個,功能性 vCPU 數量就會從 60 個減少為 40 個。

如果符合下列兩項條件,請考慮自訂可見 CPU 核心數量:

自訂 VM 可用的 vCPU 數量前,請先考慮使用自訂機器類型

必要的角色

如要取得自訂可見 CPU 核心數所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色具備自訂可見 CPU 核心數量的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要自訂可見 CPU 核心數量,必須具備下列權限:

  • 如要在建立 VM 時自訂可見 CPU 核心數量,請按照下列步驟操作:
    • 專案的 compute.instances.create 權限
    • 如要使用自訂映像檔建立 VM,請按一下映像檔上的 compute.images.useReadOnly
    • 如要使用快照建立 VM,請按一下快照上的 compute.snapshots.useReadOnly
    • 如要使用執行個體範本建立 VM,請按一下執行個體範本上的 compute.instanceTemplates.useReadOnly
    • 如要將舊版網路指派給 VM:專案的 compute.networks.use
    • 如要為 VM 指定靜態 IP 位址,請在專案中擁有 compute.addresses.use 權限
    • 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定 compute.networks.useExternalIp
    • 為 VM 指定子網路:專案或所選子網路的 compute.subnetworks.use
    • 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM,請在專案或所選子網路上擁有 compute.subnetworks.useExternalIp 權限
    • 如要為專案中的 VM 設定 VM 執行個體中繼資料,請執行下列指令:compute.instances.setMetadata
    • 如要為 VM 設定標記,請在 VM 上按一下 compute.instances.setTags
    • 如要為 VM 設定標籤,請在 VM 上執行下列步驟:compute.instances.setLabels
    • 如要設定 VM 使用的服務帳戶,請在 VM 上執行 compute.instances.setServiceAccount
    • 如要為 VM 建立新磁碟,請取得專案的 compute.disks.create 權限
    • 如要以唯讀或讀寫模式連接現有磁碟,請對磁碟擁有 compute.disks.use 權限
    • 如要以唯讀模式連接現有磁碟,請對磁碟擁有 compute.disks.useReadOnly 權限
  • 如要使用執行個體範本,自訂一組 VM 的可見 CPU 核心數量,請先取得建立 VM 時使用的所有權限,以及專案的 compute.instanceTemplates.create

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

vCPU 和每個核心的執行緒數

機器類型上的 vCPU 總數是可見 CPU 核心數乘以每個核心的執行緒數。在大多數的機器系列中,每個核心的執行緒數量為 2,但您可以手動將每個核心的執行緒數量設為 1

下表以 c2-standard-60 機器類型為例,說明可見 CPU 核心、每個核心的執行緒數量和可用 vCPU 總數之間的關係。

機型 可見 CPU 核心 每個核心的執行緒數量 可用的 vCPU
c2-standard-60 30 (預設) 2 (預設) 60
c2-standard-60 30 (預設) 1 30
c2-standard-60 20 2 (預設) 40
c2-standard-60 20 1 20

效能注意事項

本節說明減少可見核心數量對虛擬機器效能的影響。

永久磁碟

永久磁碟的效能限制取決於機器類型,不受可見 CPU 核心數量的影響。詳情請參閱區塊儲存空間效能

網路輸出

網路輸出頻寬限制與機器類型相符,且不受可見 CPU 核心數量的影響。不過,網路效能會因 VM 可存取的 vCPU 數量而異。舉例來說,具有一個可見 CPU 核心的 n2-standard-16 機器類型可能無法充分運用 32 Gbps 連線。

定價

本節說明減少可見核心數量對 VM 費用的影響。

作業系統授權費用

減少可見的 CPU 核心數量,即可降低部分作業系統的授權費用。適用的作業系統是指會針對 VM 可用的每個 vCPU 向您收費的作業系統,例如 Windows Server 和 SQL Server。如要進一步瞭解 Compute Engine 上這些作業系統的授權選項,請參閱「Microsoft 授權」。

VM 費用、配額和容量

自訂可見 CPU 核心數量時,VM 費用、配額和容量維持不變,因為 Compute Engine 會根據機器類型的 CPU 核心數量,向 VM 收取費用、追蹤配額及分配空間。如要進一步瞭解 Compute Engine 的 VM 計費方式,請參閱 VM 執行個體定價

限制

  • VM 處於 RUNNING 狀態時,您無法自訂可見 CPU 核心數量。如要進一步瞭解 VM 狀態,請參閱 VM 執行個體生命週期

  • 在 Trusted Cloud 控制台中,如果可見核心數量減少,CPU 使用率指標就無法擴充至 100%。上限為可見 CPU 核心數除以 CPU 核心數上限。

  • 您無法使用這項功能,自訂裸機執行個體的可見 CPU 核心數量。

支援的機器類型和各類型的有效值

許多「機器類型」都支援自訂可見 CPU 核心數量。可見 CPU 核心數的值必須是整數。最大值為機器類型上的 vCPU 數量 (或加速器最佳化機器類型的 GPU 數量),除以 VM 的每個核心執行緒數量

下表列出支援這項自訂功能的機型,以及這些系列中機型可見 CPU 核心的對應有效值。

機器類型系列 預先定義的 vCPU 數量* 可見 CPU 核心的有效值
一般用途
C4D 所有機器類型 2 的倍數
C4 4、8、16、24、32、48 不限
C4 96 2 的倍數
C4 144 3 的倍數
C4 192 4 的倍數
C4 288 6 的倍數
C3D ≤ 180 不限
C3D 360 2 的倍數
C3 4、8、22、44 1 的倍數
C3 88 2 的倍數
C3 176 4 的倍數
E2 ≤ 32 不限
N2 ≤ 32 不限
N2 > 32 2 的倍數
N2D ≤ 24 不限
N2D > 24 2 的倍數
N4 ≤ 80 不限
N1 ≤ 64 不限
N1 > 64 2 的倍數
N1 (已針對 TPU 進行最佳化) 48 不限
N1 (已針對 TPU 進行最佳化) 96 2 的倍數
儲存空間最佳化
Z3 ≤ 44 不限
Z3 88 2 的倍數
Z3 176 4 的倍數
運算最佳化
標題 3 88 4 的倍數
C2 4、8、16、30 不限
C2 60 2 的倍數
記憶體最佳化
M4 28、56 不限
M4 112 2 的倍數
M4 224 4 的倍數
M3 128 2 的倍數
M3 32、64 不限
M2 208 4 的倍數
M2 416 8 的倍數
M1 40 不限
M1 80、96 2 的倍數
M1 160 4 的倍數
加速器最佳化
A4 224 2 的倍數
A3 26、52、104、208、224 2 的倍數
A2 ≤ 48 不限
A2 96 2 的倍數
G2 ≤ 48 不限
G2 96 2 的倍數
* 大多數機器類型的名稱都包含 vCPU 數量。不過,對於 G2 以外的加速器最佳化機型,機型名稱會包含預先定義的 GPU 數量。如要查看加速器最佳化機型的 vCPU 數量,請參閱「加速器最佳化機器家族」說明文件。

在建立 VM 時自訂可見 CPU 核心數量

如要在建立單一 VM 時自訂可見的 CPU 核心數量,請按照本節說明的步驟操作。

以下範例說明如何建立 SQL Server VM,並減少可見的 CPU 核心數量。

主控台

如要在建立 VM 時自訂可見的 CPU 核心數量,請按照下列步驟操作:

  • 依序選取「機器設定」>「進階設定」>「可見核心數量」,然後選取可見核心數量。

gcloud

如要建立可見 CPU 核心數量減少的 SQL Server VM,請使用下列 gcloud compute instances create 指令

gcloud compute instances create VM_NAME \
    --image-project=windows-sql-cloud \
    --image-family=sql-ent-2019-win-2019 \
    --machine-type=MACHINE_TYPE \
    --visible-core-count=VISIBLE_CORE_COUNT \
    --zone=ZONE

更改下列內容:

  • VM_NAME:VM 名稱。

  • MACHINE_TYPE:支援的機器類型,例如 c2-standard-60

  • VISIBLE_CORE_COUNT:可見 CPU 核心的數量。舉例來說,使用 c2-standard-60 機型時,如果設為 20,且每個核心的執行緒數量為 2,則會顯示 60 個 CPU 中的 40 個。

  • ZONE:要在其中建立 VM 的可用區。

REST

如要建立 SQL Server VM,並減少可見的 CPU 核心數量,請使用下列instances.insert 方法

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

{
  "name": "VM_NAME",
  ...
  "advanced_machine_features": {
    ...
    "visibleCoreCount": "VISIBLE_CORE_COUNT"
  },
  ...
}

更改下列內容:

  • PROJECT_ID:專案的 ID。

  • ZONE:建立 VM 的可用區。

  • VM_NAME:VM 名稱。

  • VISIBLE_CORE_COUNT:可見 CPU 核心的數量。舉例來說,使用 c2-standard-60 機型時,如果設為 20,且每個核心的執行緒數量為 2,則會顯示 60 個 CPU 中的 40 個。

使用執行個體範本,自訂 VM 群組中可見的 CPU 核心數量

如要使用執行個體範本建立 VM 時,自訂可見的 CPU 核心數量,請按照本節說明的步驟操作。

以下範例說明如何使用執行個體範本,建立一組相同的 SQL Server VM,並減少可見的 CPU 核心數量。

主控台

如要在建立執行個體範本時自訂可見的 CPU 核心數量,請按照下列步驟操作:

  • 依序選取「機器設定」>「進階設定」>「可見核心數量」,然後選取可見核心數量。

gcloud

  1. 使用下列 gcloud compute instance-templates create 指令,為 SQL Server VM 建立執行個體範本,每個 VM 可見的 CPU 核心數量都會減少:

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
       --image-project=windows-sql-cloud \
       --image-family=sql-ent-2019-win-2019 \
       --machine-type=MACHINE_TYPE \
       --visible-core-count=VISIBLE_CORE_COUNT \
       --zone=ZONE
    

    更改下列內容:

    • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

    • MACHINE_TYPE:支援的機器類型,例如 c2-standard-60

    • VISIBLE_CORE_COUNT:可見 CPU 核心數。舉例來說,使用 c2-standard-60 機器類型時,如果設為 20,且每個核心的執行緒數量為 2,則會顯示 60 個 CPU 中的 40 個。

    • ZONE:用於建立 VM 的可用區。

  2. 使用下列 gcloud compute instances create 指令,建立 SQL Server VM,每個 VM 的可見 CPU 核心數量都會減少:

    gcloud compute instances create INSTANCE_NAMES \
       --source-instance-template=INSTANCE_TEMPLATE_NAME
    

    更改下列內容:

    • INSTANCE_NAMES:要從執行個體範本建立的 VM 名稱,以空格分隔

    • INSTANCE_TEMPLATE_NAME:要用來建立 VM 的執行個體範本名稱

REST

  1. 使用下列instanceTemplates.insert方法,為每個 SQL Server VM 建立執行個體範本,並減少可見的 CPU 核心數量:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    
    {
     "name": "INSTANCE_TEMPLATE_NAME",
     ...
     "advanced_machine_features": {
       ...
       "visible_core_count": "VISIBLE_CORE_COUNT"
     },
     ...
    }
    

    更改下列內容:

    • PROJECT_ID:專案的 ID。

    • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

    • VISIBLE_CORE_COUNT:可見 CPU 核心數。舉例來說,使用 c2-standard-60 機器類型時,如果設為 20,且每個核心的執行緒數量為 2,則會顯示 60 個 CPU 中的 40 個。

  2. 使用下列instances.insert 方法建立 SQL Server VM,每個 VM 的可見 CPU 核心數量都會減少:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?sourceInstanceTemplate=INSTANCE_TEMPLATE_NAME
    
    {
     "name": "VM_NAME",
     ...
    }
    

    更改下列內容:

    • PROJECT_ID:專案 ID

    • ZONE:要在其中建立 VM 的可用區

    • INSTANCE_TEMPLATE_NAME:要用來建立 VM 的執行個體範本名稱

    • VM_NAME:要從執行個體範本建立的 VM 名稱

自訂可見 CPU 核心數量

如要自訂現有 VM 上顯示的 CPU 核心數量,請按照本節說明的步驟操作。

如果您使用執行個體範本,自訂一組 VM 的可見 CPU 核心數量,就必須建立新的執行個體範本,然後從該執行個體範本建立新的 VM。如要進一步瞭解執行個體範本,請參閱執行個體範本

主控台

如要自訂現有 VM 的可見 CPU 核心數,請按照下列步驟操作:

  1. 停止 VM。

  2. 依序選取「機器設定」>「進階設定」 >「可見核心數量」,然後選取可見核心數量。

  3. 重新啟動 VM。

gcloud

如要更新現有 VM 的可見 CPU 核心數值,請按照下列步驟操作。詳情請參閱更新執行個體屬性

  1. 使用 gcloud compute instances export 指令,將現有 VM 屬性匯出至檔案。

  2. 在包含匯出屬性的檔案中,修改或新增下列屬性的值:

    advancedMachineFeatures:
     visibleCoreCount: VISIBLE_CORE_COUNT
    
  3. 使用 gcloud compute instances update-from-file 指令搭配 --most-disruptive-allowed-action=RESTART,更新 VM 的屬性。

REST

如要更新 VM 可見的 CPU 核心數量,請使用下列 instances.update 方法

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART

{
  ...
  "advanced_machine_features": {
    ...
    "visible_core_count": "VISIBLE_CORE_COUNT"
  },
  ...
}

更改下列內容:

  • PROJECT_ID:專案 ID

  • ZONE:包含 VM 的可用區

  • VM_NAME:要匯出屬性的 VM 名稱

  • VISIBLE_CORE_COUNT:可見 CPU 核心數量

後續步驟