Anzahl der sichtbaren CPU-Kerne anpassen


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:

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 verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Anpassen der Anzahl sichtbarer 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
    • So erstellen Sie die VM mit einem benutzerdefinierten Image: compute.images.useReadOnly für das Image
    • So erstellen Sie die VM mit einem Snapshot: compute.snapshots.useReadOnly für den Snapshot
    • So verwenden Sie eine Instanzvorlage zum Erstellen der VM: compute.instanceTemplates.useReadOnly für die Instanzvorlage
    • So weisen Sie der VM ein Legacy-Netzwerk zu: compute.networks.use für das Projekt
    • So geben Sie eine statische IP-Adresse für die VM an: compute.addresses.use für das Projekt
    • So weisen Sie der VM eine externe IP-Adresse zu, wenn Sie ein Legacy-Netzwerk verwenden: compute.networks.useExternalIp für das Projekt
    • So geben Sie ein Subnetz für die VM an: compute.subnetworks.use für das Projekt oder für das ausgewählte Subnetz
    • So weisen Sie der VM eine externe IP-Adresse zu, wenn Sie ein VPC-Netzwerk verwenden: compute.subnetworks.useExternalIp für das Projekt oder für das ausgewählte Subnetz
    • So legen Sie die VM-Instanzmetadaten für die VM fest: compute.instances.setMetadata für das Projekt
    • Zum Festlegen von Tags für die VM: compute.instances.setTags auf der VM
    • So legen Sie Labels für die VM fest: compute.instances.setLabels auf der VM
    • So legen Sie ein Dienstkonto fest, das von der VM verwendet werden soll: compute.instances.setServiceAccount auf der VM
    • So erstellen Sie ein neues Laufwerk für die VM: compute.disks.create für das Projekt
    • So hängen Sie ein vorhandenes Laufwerk im Lese- oder Lese‑/Schreibmodus an: compute.disks.use für das Laufwerk
    • So fügen Sie ein vorhandenes Laufwerk im Lesemodus hinzu: 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 beträgt die Anzahl der Threads pro Kern 2, aber Sie können die Anzahl 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
C3D ≤ 180 Alle
C3D 360 Vielfaches von 2
C3 4, 8, 22, 44 Vielfaches von 2
C3 88 Vielfaches von 2
C3 176 Vielfaches von 4
E2 ≤ 32 Alle
N2 ≤ 32 Alle
N2 > 32 Vielfaches von 2
N2D ≤ 24 Alle
N2D > 24 Vielfaches von 2
N1 ≤ 64 Alle
N1 > 64 Vielfaches von 2
N1 (TPU-optimiert) 48 Alle
N1 (TPU-optimiert) 96 Vielfaches von 2
Speicheroptimiert
Z3 (Vorschau) 88 Vielfaches von 2
Z3 (Vorschau) 176 Vielfaches von 4
Computing-optimiert
H3 88 Vielfaches von 4
C2 4, 8, 16, 30 Alle
C2 60 Vielfaches von 2
Speicheroptimiert
M3 128 Vielfaches von 2
M3 32, 64 Alle
M2 208 Vielfaches von 4
M2 416 Vielfaches von 8
M1 40 Alle
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
* Der Name für die meisten Maschinentypen enthält die Anzahl der vCPUs. Bei beschleunigungsoptimierten A3- und A2-Maschinentypen enthält der Name des Maschinentyps jedoch die vordefinierte GPU-Anzahl. Informationen zur Anzahl der vCPUs für die beschleunigungsoptimierten A3- und A2-Maschinentypen finden Sie in der Dokumentation Beschleunigungsoptimierte Maschinenfamilie.

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 Maschinentyp c2-standard-60 verwenden, den Wert auf 20 setzen und die Zahl der Threads pro Kern 2 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 Maschinentyp c2-standard-60 verwenden, den Wert auf 20 setzen und die Zahl der Threads pro Kern 2 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

  1. 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 Maschinentyp c2-standard-60 verwenden, den Wert auf 20 setzen und die Zahl der Threads pro Kern 2 ist, sind 40 der 60 CPUs sichtbar.

    • ZONE ist die Zone, in der die VMs erstellt werden sollen.

  2. 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 sollen

    • INSTANCE_TEMPLATE_NAME: Name der Instanzvorlage, aus der die VMs erstellt werden sollen

REST

  1. 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 Maschinentyp c2-standard-60 verwenden, den Wert auf 20 setzen und die Zahl der Threads pro Kern 2 ist, sind 40 der 60 CPUs sichtbar.

  2. 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 sollen

    • VM_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:

  1. Halten Sie die VM an.

  2. Wählen Sie unter Maschinenkonfiguration > Erweiterte Konfigurationen > Anzahl der sichtbaren Kerne die Anzahl der sichtbaren Kerne.

  3. 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.

  1. Exportieren Sie die vorhandenen VM-Attribute mit dem gcloud compute instances export-Befehl in eine Datei.

  2. Ä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
    
  3. 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 ist die ID des Projekts.

  • ZONE: die Zone mit der VM

  • VM_NAME: der Name der VM, von der Attribute exportiert werden sollen

  • VISIBLE_CORE_COUNT: die Anzahl der sichtbaren CPU-Kerne

Nächste Schritte