Wenn möglich aktiviert Compute Engine standardmäßig gleichzeitiges Multithreading (SMT). Wenn SMT aktiviert ist, kann ein einzelner physischer CPU-Kern zwei virtuelle CPUs (vCPUs) als separate Threads ausführen. Wenn Sie SMT deaktivieren möchten, reduzieren Sie die Anzahl der Threads – die Anzahl der effektiven vCPUs – pro Kern auf 1. In diesem Dokument wird erläutert, in welchen Fällen das Ändern der Anzahl der Threads, die auf jedem physischen CPU-Kern ausgeführt werden, sinnvoll ist und wie Sie dies ausführen.
Überlegungen zur Konfiguration von SMT
- Leistung
- Wenn Sie die Anzahl der Threads reduzieren, die auf jedem physischen CPU-Kern ausgeführt werden, können Sie die Leistung von Arbeitslasten verbessern, die hochparallel sind oder Gleitkommaberechnungen durchführen.
- Sicherheit
- Wenn eine VM einen nicht vertrauenswürdigen Code ausführt, kann die Reduzierung der Anzahl der Threads pro Kern CPU-Sicherheitslücken wie Microarchitectural Data Sampling verringern.
- Lizenzen
- Bei einigen Lizenzvereinbarungen gelten Anforderungen für die Anzahl der verwendeten vCPUs. Wenn Sie SMT deaktivieren, wird die Anzahl der vCPUs für jeden Kern von zwei auf 1 reduziert, wodurch sich Ihre Lizenzkosten verringern lassen. Weitere Informationen finden Sie in Ihrer Lizenzvereinbarung.
Beschränkungen
Die Anzahl der Threads pro Kern ist in folgenden Fällen nicht konfigurierbar:
Bei VMs, die auf Maschinentypen mit weniger als 2 vCPUs ausgeführt werden, z. B.
n1-standard-1
, oder auf Maschinen mit gemeinsam genutztem Kern wiee2-small
.VMs, die auf dem Tau T2D-Maschinentyp ausgeführt werden.
Preise
Ihnen wird die Anzahl der vCPUs berechnet, die vom Maschinentyp einer VM definiert werden, nicht die Anzahl der Threads, die auf jedem Kern ausgeführt werden. Der Maschinentyp n2-standard-8
kann beispielsweise bis zu 8 vCPUs ausführen, also 2 vCPUs für jeden der vier physischen CPU-Kerne. Wenn Sie nur einen Thread pro Kern ausführen – also praktisch 4 vCPUs – werden weiterhin 8 vCPUs berechnet. Weitere Informationen zu den Preisen für VMs finden Sie unter Preise für VM-Instanzen.
SMT auf einer neuen VM konfigurieren
Konfigurieren Sie SMT auf einer neuen VM mit dem folgenden Verfahren.
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgende Berechtigung:
- Alle Berechtigungen, die zum Erstellen einer neuen Instanz erforderlich sind.
gcloud
Konfigurieren Sie SMT beim Erstellen einer VM mit dem folgenden gcloud beta compute
instances create
-Befehl.
gcloud beta compute instances create VM_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --threads-per-core=THREADS_PER_CORE
Dabei gilt:
VM_NAME
ist der Name für die neue VM.ZONE
ist die Zone für die neue VM.MACHINE_TYPE
ist der Maschinentyp für die neue VM. Muss ein Maschinentyp mit 2 oder mehr vCPUs sein.THREADS_PER_CORE
ist die Anzahl der sichtbaren Threads pro physischem Kern. Aktuelle Prozessoren unterstützen standardmäßig zwei Threads pro Kern für SMT. Wenn Sie SMT deaktivieren möchten, legen Sie1
fest.
API
Konfigurieren Sie SMT beim Erstellen einer VM. Verwenden Sie dazu die Methode instances.insert
mit dem Feld threadsPerCore
.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances { ... "advancedMachineFeatures": { ... "threadsPerCore": "THREADS_PER_CORE" }, ... }
Dabei gilt:
PROJECT_ID
: die Projekt-ID.ZONE
ist die Zone für die neue VM.THREADS_PER_CORE
ist die Anzahl der sichtbaren Threads pro physischem Kern. Aktuelle Prozessoren unterstützen standardmäßig zwei Threads pro Kern für SMT. Wenn Sie SMT deaktivieren möchten, legen Sie1
fest.
SMT auf einer vorhandenen VM konfigurieren
Konfigurieren Sie SMT auf einer vorhandenen VM. Gehen Sie dazu so vor:
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgende Berechtigung:
-
compute.instances.get
für das Projekt -
compute.instances.update
für das Projekt
gcloud
Exportieren Sie die Attribute der VM mit dem folgenden
gcloud beta compute instances export
-Befehl:gcloud beta compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE
Dabei gilt:
VM_NAME
: der Name der VM, von der Attribute exportiert werden sollenYAML_FILE_PATH
: Pfad und Dateiname einer YAML-Datei, in der die exportierten Konfigurationsdaten gespeichert werden sollenZONE
: die Zone mit der VM
Aktualisieren Sie in der VM-Konfigurationsdatei, die in FILE_PATH gespeichert wurde, den Wert für
threadsPerCore
. Wenn der Wert nicht in der Datei enthalten ist, fügen Sie Folgendes hinzu:advancedMachineFeatures: threadsPerCore: THREADS_PER_CORE
Aktualisieren Sie die VM mit der neuen Anzahl von Threads pro Kern mit dem folgenden
gcloud beta compute instances update-from-file
-Befehl:gcloud beta compute instances update-from-file VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE
Dabei gilt:
VM_NAME
: Name der zu aktualisierenden VMFILE_PATH
ist der Pfad zur aktualisierten VM-Konfigurationsdatei.ZONE
: Zone, die die zu aktualisierende VM enthält
API
Aktualisieren Sie die Threads pro Kern der VM mit der folgenden instances.update
-Methode:
PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART { ... "advanced_machine_features": { ... "threadsPerCore": "THREADS_PER_CORE" }, ... }
Dabei gilt:
PROJECT_ID
ist die ID des Projekts.ZONE
: die Zone mit der VMVM_NAME
: der Name der VM, von der Attribute exportiert werden sollenTHREADS_PER_CORE
: die Anzahl der Threads pro Kern
SMT-Konfiguration prüfen
Prüfen Sie die SMT-Konfiguration mithilfe des Verfahrens, das dem auf der VM ausgeführten Betriebssystem entspricht.
Linux
Prüfen Sie die SMT-Konfiguration auf Linux-basierten VMs, indem Sie die folgenden Schritte ausführen:
Führen Sie den Befehl
lscpu
aus:lscpu
Prüfen Sie in der Ausgabe den Wert für die Anzahl der Threads pro Kern.
In der folgenden Beispielausgabe lautet der Wert für die Anzahl der Threads pro Kern
1
.... CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) CPU ...
Windows
Prüfen Sie die SMT-Konfiguration auf Windows-basierten VMs, indem Sie die folgenden Schritte ausführen:
Öffnen Sie die Befehlszeile für Windows Management Instrumentation (WMI).
wmic
Führen Sie den folgenden Befehl aus, um die Anzahl der Kerne und die Anzahl der logischen Prozessoren aufzurufen:
CPU Get NumberOfCores,NumberofLogicalProcessors
Prüfen Sie in der Ausgabe den Wert für die Anzahl der Threads pro Kern.
In der folgenden Beispielausgabe lautet der Wert für die Anzahl der Threads pro Kern
1
.NumberOfCores NumberOfLogicalProcessors 1 1