Durch Anpassen der Zahl sichtbarer CPU-Kerne können Sie die Lizenzkosten genau steuern und gleichzeitig die Leistung von Netzwerken und nichtflüchtigem Speicher beibehalten. Diese Anpassung reduziert die Anzahl der vCPUs, die der VM-Instanz zur Verfügung stehen. Maschinentyp und Preis bleiben unverändert.
Compute Engine implementiert jede virtuelle CPU (vCPU) als einzelnen Hardware-Multithread, der auf einem physischen CPU-Kern ausgeführt wird. Um die Anzahl der verfügbaren vCPUs für eine VM zu reduzieren, können Sie in Compute Engine die Anzahl der sichtbaren CPU-Kerne anpassen.
Sichtbare Kerne sind die CPU-Kerne in der zugrunde liegenden Hardware, die Ihre VMs verbrauchen. Standardmäßig ist die Anzahl der für eine VM sichtbaren CPU-Kerne die Anzahl der vCPUs auf dem Maschinentyp geteilt durch die Anzahl der Threads pro Kern:
- Sichtbare CPU-Kerne = vCPUs auf dem Maschinentyp/Threads pro Kern
Der Maschinentyp c2-standard-60
gibt beispielsweise 60 vCPUs an. Ausgehend von der Standardeinstellung von 2 Threads pro Kern beträgt die Anzahl der sichtbaren CPU-Kerne 30. Wenn Sie die Anzahl der sichtbaren Kerne von 30 auf 20 reduzieren, wird die Anzahl der funktionalen vCPUs von 60 auf 40 reduziert.
Sie sollten die Zahl der sichtbaren CPU-Kerne anpassen, wenn die beiden folgenden Bedingungen zutreffen:
Sie nutzen Software wie Windows Server oder SQL Server, die basierend auf der Zahl der verfügbaren vCPUs lizenziert ist.
Sie verwenden vordefinierte Maschinentypen, bei denen Sie die Zahl der vCPUs oder die Größe des Arbeitsspeichers nicht ändern können.
Bevor Sie die Anzahl der verfügbaren vCPUs für eine VM anpassen, sollten Sie zuerst überlegen, einen benutzerdefinierten Maschinentyp zu verwenden.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute-Instanzadministrator (v1) (roles/compute.instanceAdmin.v1
) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Anpassen der Anzahl sichtbarer CPU-Kerne benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Anpassen der Anzahl der sichtbaren CPU-Kerne erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um die Anzahl der sichtbaren CPU-Kerne anzupassen:
-
Anzahl der sichtbaren CPU-Kerne bei der VM-Erstellung anpassen:
compute.instances.create
für das Projekt- Zur Erstellung der VM mit einem benutzerdefinierten Image:
compute.images.useReadOnly
für das Image - Zur Erstellung der VM mithilfe eines Snapshots:
compute.snapshots.useReadOnly
für den Snapshot - Zur Erstellung der VM mithilfe einer Instanzvorlage:
compute.instanceTemplates.useReadOnly
für die Instanzvorlage - Um der VM ein Legacy-Netzwerk zuzuweisen:
compute.networks.use
für das Projekt - Zum Festlegen einer statische IP-Adresse für die VM:
compute.addresses.use
für das Projekt - Zur Zuweisung einer externen IP-Adresse zur VM bei Verwendung eines Legacy-Netzwerks:
compute.networks.useExternalIp
für das Projekt - Um ein Subnetz für die VM anzugeben:
compute.subnetworks.use
für das Projekt oder für das ausgewählte Subnetz - Um der VM eine externe IP-Adresse zuzuweisen, wenn Sie ein VPC-Netzwerk verwenden:
compute.subnetworks.useExternalIp
für das Projekt oder für das ausgewählte Subnetz - Um die Metadaten der VM-Instanz für die VM festzulegen:
compute.instances.setMetadata
für das Projekt - Um Tags für die VM festzulegen:
compute.instances.setTags
für die VM - Um Labels für die VM festzulegen:
compute.instances.setLabels
für die VM - Um ein Dienstkonto festzulegen, das die VM verwenden soll:
compute.instances.setServiceAccount
für die VM - Um ein neues Laufwerk für die VM zu erstellen:
compute.disks.create
für das Projekt - Um ein vorhandenes Laufwerk im Lese- oder Lese‑/Schreibmodus anzuhängen:
compute.disks.use
für das Laufwerk - So hängen Sie ein vorhandenes Laufwerk im Lesemodus an:
compute.disks.useReadOnly
für das Laufwerk
-
So passen Sie die Anzahl der sichtbaren CPU-Kerne in einer VM-Gruppe mithilfe einer Instanzvorlage an: Sie benötigen alle Berechtigungen, die Sie bei der VM-Erstellung verwenden würden, und
compute.instanceTemplates.create
für das Projekt
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
vCPUs und die Zahl der Threads pro Kern
Die Gesamtzahl der vCPUs auf einem Maschinentyp entspricht der Zahl der sichtbaren CPU-Kerne multipliziert mit der Zahl der Threads pro Kern. Bei den meisten Maschinenserien ist die Anzahl der Threads pro Kern 2, aber Sie können die Zahl der Threads pro Kern manuell auf 1 setzen.
Folgende Tabelle zeigt, wie sichtbare CPU-Kerne, die Zahl der Threads pro Kern und die insgesamt verfügbaren vCPUs zusammenhängen. Dabei wird der c2-standard-60
-Maschinentyp als Beispiel verwendet.
Maschinentyp | Sichtbare CPU-Kerne | Threads pro Kern | Verfügbare vCPUs |
---|---|---|---|
c2-standard-60 |
30 (Standard) |
2 (Standard) |
60 |
c2-standard-60 |
30 (Standard) |
1 |
30 |
c2-standard-60 |
20 |
2 (Standard) |
40 |
c2-standard-60 |
20 |
1 |
20 |
Hinweise zur Leistung
Wenn Sie die Anzahl der sichtbaren Kerne reduzieren, kann sich dies auf die Leistung Ihrer VM auswirken.
Nichtflüchtiger Speicher
- Die Leistungsgrenzen von nichtflüchtigen Speichern hängen vom Maschinentyp ab und werden von der Zahl der sichtbaren CPU-Kerne nicht beeinflusst. Weitere Informationen finden Sie unter Blockspeicherleistung.
Ausgehender Netzwerk-Traffic
- Die Bandbreitenlimits des ausgehenden Netzwerktraffics entsprechen dem Maschinentyp und werden von der Zahl der sichtbaren CPU-Kerne nicht beeinflusst. Die Netzwerkleistung hängt jedoch von der Anzahl der vCPUs ab, die für die VM zugänglich sind. Beispiel: Ein
n2-standard-16
-Maschinentyp mit einem sichtbaren CPU-Kern kann eine 32-Gbit/s-Verbindung möglicherweise nicht vollständig nutzen.
Preise
Wenn Sie die Anzahl der sichtbaren Kerne reduzieren, kann sich dies auf die Kosten Ihrer VMs auswirken.
Lizenzkosten für das Betriebssystem
- Sie können die Lizenzkosten für einige Betriebssysteme senken, wenn Sie die Anzahl der sichtbaren CPU-Kerne reduzieren. Für hier relevante Betriebssysteme fallen Gebühren pro der VM zur Verfügung stehender vCPU an, z. B. Windows Server und SQL Server. Weitere Informationen zu den Lizenzierungsoptionen für solche Betriebssysteme in Compute Engine finden Sie unter Microsoft-Lizenzen.
VM-Kosten, -Kontingent und -Kapazität
- VM-Kosten, Kontingent und Kapazität bleiben gleich, wenn Sie die Anzahl der sichtbaren CPU-Kerne anpassen, da Compute Engine die Gebühren berechnet, Kontingente verfolgt und Speicherplatz auf Maschinentypen für VMs zuweist, als ob sie die Anzahl der CPU-Kerne des Maschinentyps verwenden würden. Weitere Informationen zur Abrechnung von VMs in Compute Engine finden Sie unter Preise für VM-Instanzen.
Beschränkungen
Sie können die Anzahl der sichtbaren CPU-Kerne nicht anpassen, während eine VM den Status
RUNNING
hat. Weitere Informationen zum VM-Status finden Sie unter Lebenszyklus von VM-Instanzen.Wenn die Anzahl der sichtbaren Kerne in der Google Cloud Console reduziert wird, kann der Messwert zur CPU-Auslastung nicht auf 100 % skaliert werden. Sie ist auf die Anzahl der sichtbaren CPU-Kerne geteilt durch die maximale Anzahl der CPU-Kerne beschränkt.
Jeweils unterstützte Maschinentypen und gültige Werte
Viele Maschinentypen unterstützen die Anpassung der Anzahl sichtbarer CPU-Kerne. Der Wert für die Anzahl der sichtbaren CPU-Kerne muss eine Ganzzahl sein. Der Höchstwert ist die Zahl der vCPUs (oder GPUs, bei beschleunigeroptimierten Maschinentypen) auf dem Maschinentyp geteilt durch die Zahl der Threads pro Kern für die VM.
In folgender Tabelle sind die Maschinentypen, die diese Anpassung unterstützen, zusammen mit den entsprechenden gültigen Werten für sichtbare CPU-Kerne für Maschinentypen in diesen Familien aufgeführt.
Maschinentypfamilie | Vordefinierte vCPU-Zahl* | Gültige Werte für sichtbare CPU-Kerne |
---|---|---|
Für allgemeine Zwecke | ||
C4 | 4, 8, 16, 32, 48 | Beliebig |
C4 | 96 | Vielfaches von 2 |
C4 | 192 | Vielfaches von 4 |
C3D | ≤ 180 | Beliebig |
C3D | 360 | Vielfaches von 2 |
C3 | 4, 8, 22, 44 | Vielfaches von 2 |
C3 | 88 | Vielfaches von 2 |
C3 | 176 | Vielfaches von 4 |
c3-*-metal |
192 | Nicht unterstützt |
E2 | ≤ 32 | Beliebig |
N2 | ≤ 32 | Beliebig |
N2 | > 32 | Vielfaches von 2 |
N2D | ≤ 24 | Beliebig |
N2D | > 24 | Vielfaches von 2 |
N4 | ≤ 80 | Beliebig |
N1 | ≤ 64 | Beliebig |
N1 | > 64 | Vielfaches von 2 |
N1 (TPU-optimiert) | 48 | Beliebig |
N1 (TPU-optimiert) | 96 | Vielfaches von 2 |
Speicheroptimiert | ||
Z3 | 88 | Vielfaches von 2 |
Z3 | 176 | Vielfaches von 4 |
Computing-optimiert | ||
H3 | 88 | Vielfaches von 4 |
C2 | 4, 8, 16, 30 | Beliebig |
C2 | 60 | Vielfaches von 2 |
Arbeitsspeicheroptimiert | ||
M3 | 128 | Vielfaches von 2 |
M3 | 32, 64 | Beliebig |
M2 | 208 | Vielfaches von 4 |
M2 | 416 | Vielfaches von 8 |
M1 | 40 | Beliebig |
M1 | 80, 96 | Vielfaches von 2 |
M1 | 160 | Vielfaches von 4 |
Beschleunigungsoptimiert | ||
A3 | 208 | Vielfaches von 2 |
A2 | ≤ 48 | Beliebig |
A2 | 96 | Vielfaches von 2 |
G2 | ≤ 48 | Beliebig |
G2 | 96 | Vielfaches von 2 |
Anzahl der sichtbaren CPU-Kerne bei der VM-Erstellung anpassen
Wenn Sie die Anzahl der sichtbaren CPU-Kerne beim Erstellen einer einzelnen VM anpassen möchten, verwenden Sie die Google Cloud Console, die gcloud CLI oder die Compute Engine API.
Das folgende Beispiel zeigt, wie eine SQL Server-VM mit einer reduzierten Anzahl sichtbarer CPU-Kerne erstellt wird.
Console
So passen Sie die Anzahl der sichtbaren CPU-Kerne beim Erstellen einer VM an:
- Wählen Sie unter Maschinenkonfiguration > Erweiterte Konfigurationen > Anzahl der sichtbaren Kerne die Anzahl der sichtbaren Kerne.
gcloud
Verwenden Sie folgenden gcloud compute instances create
-Befehl, um eine SQL Server-VM mit einer reduzierten Anzahl sichtbarer CPU-Kerne zu erstellen:
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
Dabei gilt:
VM_NAME
: der Name der VM.MACHINE_TYPE
: ein unterstützter Maschinentyp, z. B.c2-standard-60
VISIBLE_CORE_COUNT
: die Anzahl der sichtbaren CPU-Kerne. Beispiel: Wenn Sie den Maschinentypc2-standard-60
verwenden, den Wert auf20
setzen und die Zahl der Threads pro Kern2
ist, sind 40 der 60 CPUs sichtbar.ZONE
ist die Zone, in der die VM erstellt werden soll.
REST
Verwenden Sie folgende instances.insert
-Methode, um eine SQL Server-VM mit einer reduzierten Anzahl sichtbarer CPU-Kerne zu erstellen:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", ... "advanced_machine_features": { ... "visibleCoreCount": "VISIBLE_CORE_COUNT" }, ... }
Dabei gilt:
PROJECT_ID
: die ID des Projekts.ZONE
: die Zone, in der die VM-Instanz erstellt werden soll.VM_NAME
: der Name der VM.VISIBLE_CORE_COUNT
: die Anzahl der sichtbaren CPU-Kerne. Beispiel: Wenn Sie den Maschinentypc2-standard-60
verwenden, den Wert auf20
setzen und die Zahl der Threads pro Kern2
ist, sind 40 der 60 CPUs sichtbar.
Anzahl der sichtbaren CPU-Kerne in einer VM-Gruppe per Instanzvorlage anpassen
Wenn Sie die Anzahl der sichtbaren CPU-Kerne beim Erstellen einer VM mithilfe einer Instanzvorlage anpassen möchten, verwenden Sie die Google Cloud Console, die gcloud CLI oder die Compute Engine API.
Das folgende Beispiel zeigt, wie Sie mit einer Instanzvorlage eine Gruppe identischer SQL Server-VMs mit einer reduzierten Anzahl sichtbarer CPU-Kerne erstellen.
Console
So passen Sie die Anzahl der sichtbaren CPU-Kerne beim Erstellen einer Instanzvorlage an:
- Wählen Sie unter Maschinenkonfiguration > Erweiterte Konfigurationen > Anzahl der sichtbaren Kerne die Anzahl der sichtbaren Kerne.
gcloud
Erstellen Sie mit folgendem
gcloud compute instance-templates create
-Befehl eine Instanzvorlage für SQL Server-VMs mit einer jeweils reduzierten Anzahl sichtbarer CPU-Kerne: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
Dabei gilt:
INSTANCE_TEMPLATE_NAME
: der Name der Instanzvorlage.MACHINE_TYPE
: ein unterstützter Maschinentyp, z. B.c2-standard-60
VISIBLE_CORE_COUNT
: die Anzahl der sichtbaren CPU-Kerne. Beispiel: Wenn Sie den Maschinentypc2-standard-60
verwenden, den Wert auf20
setzen und die Zahl der Threads pro Kern2
ist, sind 40 der 60 CPUs sichtbar.ZONE
ist die Zone, in der die VMs erstellt werden sollen.
Erstellen Sie mit folgendem
gcloud compute instances create
-Befehl die SQL Server-VMs mit einer jeweils reduzierten Anzahl sichtbarer CPU-Kerne:gcloud compute instances create INSTANCE_NAMES \ --source-instance-template=INSTANCE_TEMPLATE_NAME
Dabei gilt:
INSTANCE_NAMES
: Namen der VMs, durch Leerzeichen getrennt, die aus der Instanzvorlage erstellt werden sollenINSTANCE_TEMPLATE_NAME
: Name der Instanzvorlage, aus der die VMs erstellt werden sollen
REST
Erstellen Sie mit der folgenden
instanceTemplates.insert
-Methode eine Instanzvorlage für SQL Server-VMs mit einer jeweils reduzierten Anzahl sichtbarer CPU-Kerne: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" }, ... }
Dabei gilt:
PROJECT_ID
: die ID des Projekts.INSTANCE_TEMPLATE_NAME
: der Name der Instanzvorlage.VISIBLE_CORE_COUNT
: die Anzahl der sichtbaren CPU-Kerne. Beispiel: Wenn Sie den Maschinentypc2-standard-60
verwenden, den Wert auf20
setzen und die Zahl der Threads pro Kern2
ist, sind 40 der 60 CPUs sichtbar.
Erstellen Sie mit folgender
instances.insert
-Methode die SQL Server-VMs mit einer jeweils reduzierten Anzahl sichtbarer CPU-Kerne:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?sourceInstanceTemplate=INSTANCE_TEMPLATE_NAME { "name": "VM_NAME", ... }
Dabei gilt:
PROJECT_ID
: die ID des Projekts.ZONE
ist die Zone, in der die VM erstellt werden soll.INSTANCE_TEMPLATE_NAME
: Name der Instanzvorlage, aus der die VMs erstellt werden sollenVM_NAME
: Name der VM, die aus der Instanzvorlage erstellt werden soll
Anzahl der sichtbaren CPU-Kerne anpassen
Verwenden Sie die Google Cloud Console, die gcloud CLI oder die Compute Engine API, um die Anzahl der sichtbaren CPU-Kerne auf einer vorhandenen VM anzupassen.
Wenn Sie die Anzahl der sichtbaren CPU-Kerne einer Gruppe von VMs mit einer Instanzvorlage angepasst haben, müssen Sie eine neue Instanzvorlage erstellen und dann neue VMs aus dieser Instanzvorlage erstellen. Weitere Informationen zu Instanzvorlagen finden Sie unter Instanzvorlagen.
Console
So passen Sie die Anzahl der sichtbaren CPU-Kerne einer vorhandenen VM an:
Halten Sie die VM an.
Wählen Sie unter Maschinenkonfiguration > Erweiterte Konfigurationen > Anzahl der sichtbaren Kerne die Anzahl der sichtbaren Kerne.
Starten Sie die VM neu.
gcloud
Führen Sie die folgenden Schritte aus, um den Wert für die Anzahl der sichtbaren CPU-Kerne auf einer vorhandenen VM zu aktualisieren. Weitere Informationen finden Sie unter Instanzattribute aktualisieren.
Exportieren Sie die vorhandenen VM-Attribute mit dem
gcloud compute instances export
-Befehl in eine Datei.Ändern Sie in der Datei mit den exportierten Attributen den Wert für die folgenden Elemente, oder fügen Sie ihn hinzu:
advancedMachineFeatures: visibleCoreCount: VISIBLE_CORE_COUNT
Aktualisieren Sie die Attribute der VM über den
gcloud compute instances update-from-file
-Befehl mit--most-disruptive-allowed-action=RESTART
.
REST
Verwenden Sie folgende instances.update
-Methode, um die Anzahl der sichtbaren CPU-Kerne der VM zu aktualisieren:
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" }, ... }
Dabei gilt:
PROJECT_ID
: die ID des Projekts.ZONE
: die Zone mit der VMVM_NAME
: der Name der VM, von der Attribute exportiert werden sollenVISIBLE_CORE_COUNT
: die Anzahl der sichtbaren CPU-Kerne