自訂可見的 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 核心數量:
您執行的軟體 (例如 Windows Server 或 SQL Server) 授權數量取決於可用的 vCPU 數量。
您使用預先定義的機器類型,無法修改 vCPU 數量或 RAM 容量。
在自訂 VM 可用的 vCPU 數量之前,請先考慮使用自訂機器類型。
必要的角色
如要取得自訂可見 CPU 核心數量所需的權限,請要求管理員為您授予專案的 Compute Instance Admin (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:
compute.instances.setMetadata
設定 VM 執行個體中繼資料 - 如何為 VM 設定標記:
compute.instances.setTags
- 如何為 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 |
效能注意事項
減少可見核心數量可能會影響 VM 的效能。
永久磁碟
- 永久磁碟的效能限制取決於機器類型,不會受到可見 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 會以 VM 使用機器類型的 CPU 核心數量,收取費用、追蹤配額,並為 VM 在機器類型上分配空間。如要進一步瞭解 Compute Engine 如何為 VM 收費,請參閱「VM 執行個體定價」。
限制
當 VM 處於
RUNNING
狀態時,您無法自訂可見的 CPU 核心數量。如要進一步瞭解 VM 狀態,請參閱「VM 執行個體生命週期」。在 Google Cloud 控制台中,當可見核心數量減少時,CPU 使用率指標就無法擴大到 100%。此值上限為可見的 CPU 核心數除以 CPU 核心數上限。
支援的機器類型和每個機器類型的有效值
許多機器類型都支援自訂可見 CPU 核心數量。可見的 CPU 核心數量值必須為整數。最大值是機器類型中的 vCPU 數量 (或加速器最佳化機器類型的 GPU),除以 VM 的每個核心執行緒數。
下表列出支援這項自訂功能的機器類型,以及這些系列中機器類型可見 CPU 核心的對應有效值。
機器類型系列 | 預先定義的 vCPU 數量* | 可見 CPU 核心的有效值 |
---|---|---|
一般用途 | ||
C4 | 4、8、16、32、48 | 不限 |
C4 | 96 | 2 的倍數 |
C4 | 192 | 4 的倍數 |
C3D | ≤ 180 | 不限 |
C3D | 360 | 2 的倍數 |
C3 | 4、8、22、44 | 1 的倍數 |
C3 | 88 | 2 的倍數 |
C3 | 176 | 4 的倍數 |
c3-*-metal |
192 | 不支援 |
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 | 88 | 2 的倍數 |
Z3 | 176 | 4 的倍數 |
運算最佳化 | ||
標題 3 | 88 | 4 的倍數 |
C2 | 4、8、16、30 | 不限 |
C2 | 60 | 2 的倍數 |
記憶體最佳化 | ||
M4 | 56 | 1 的倍數 |
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 的倍數 |
在建立 VM 時自訂可見的 CPU 核心數量
如要在建立單一 VM 時自訂可見 CPU 核心數量,請使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API。
以下範例說明如何建立可見 CPU 核心數量較少的 SQL Server VM。
主控台
如要在建立 VM 時自訂可見的 CPU 核心數量,請按照下列步驟操作:
- 在「Machine configuration」>「Advanced configurations」>「Visible core count」中,選取可見核心數量。
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
如要建立可見 CPU 核心數量較少的 SQL Server VM,請使用下列 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 核心數量,請使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API。
以下範例說明如何使用執行個體範本,建立一組相同的 SQL Server VM,並減少可見的 CPU 核心數量。
主控台
如要在建立執行個體範本時自訂可見的 CPU 核心數量,請執行下列操作:
- 在「Machine configuration」>「Advanced configurations」>「Visible core count」中,選取可見核心數量。
gcloud
使用下列
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 的可用區。
使用下列
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
使用下列
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 個。
使用下列
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
:專案 IDZONE
:建立 VM 的可用區INSTANCE_TEMPLATE_NAME
:建立 VM 的執行個體範本名稱VM_NAME
:要從執行個體範本建立的 VM 名稱
自訂可見的 CPU 核心數量
如要自訂現有 VM 上顯示的 CPU 核心數量,請使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API。
如果您使用執行個體範本自訂一組 VM 上顯示的 CPU 核心數量,就必須建立新的執行個體範本,然後透過該執行個體範本建立新的 VM。如要進一步瞭解執行個體範本,請參閱「執行個體範本」。
主控台
如要自訂現有 VM 上可見的 CPU 核心數量,請按照下列步驟操作:
停止 VM。
在「機器設定」>「進階設定」>「可見核心數量」中,選取可見核心數量。
重新啟動 VM。
gcloud
如要更新現有 VM 上可見 CPU 核心數量的值,請按照下列步驟操作。詳情請參閱「更新執行個體屬性」。
使用
gcloud compute instances export
指令,將現有的 VM 屬性匯出至檔案。在包含匯出資源的檔案中,修改或新增下列項目的值:
advancedMachineFeatures: visibleCoreCount: VISIBLE_CORE_COUNT
使用
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
:專案 IDZONE
:包含 VM 的可用區VM_NAME
:要匯出屬性的 VM 名稱VISIBLE_CORE_COUNT
:可見的 CPU 核心數量
後續步驟
瞭解如何查看可見的 CPU 核心數量。
瞭解如何設定每個核心的執行緒數量。