Auf dieser Seite wird beschrieben, wie Sie gleichzeitiges Multi-Threading in Ihren GKE-Clustern (Google Kubernetes Engine) konfigurieren.
Überblick
GKE-Knoten sind Compute Engine-VM-Instanzen, die GKE für Sie erstellt. Auf diesen VMs ist es üblich, gleichzeitiges Multi-Threading (SMT) aktiviert zu haben. SMT ist die Möglichkeit, mehrere unabhängige Threads auf einem einzelnen physischen CPU-Kern auszuführen. Wenn SMT aktiviert ist, kann ein einzelner physischer Kern zwei virtuelle CPUs (vCPUs) als unabhängige, separate Threads ausführen. Ein GKE-Knoten n2-standard-32
führt beispielsweise 32 vCPUs auf 16 physischen CPU-Kernen aus.
Mit der Einführung der SMT-Konfigurierbarkeit auf GKE-Knoten können Sie SMT jetzt so konfigurieren, dass die Anzahl der effektiven vCPUs der Anzahl der physischen Kerne entspricht. Das bedeutet, dass Ihre GKE-Knoten die vollen physischer Kern pro vCPU.
Vorteile
Das Konfigurieren von SMT in GKE bietet die folgenden Vorteile.
Verbesserte Leistung
Einige Arbeitslasten mit Hochleistungs-Computing (High Performance Compute, HPC) erzielen möglicherweise eine Leistungsverbesserung, wenn sie SMT deaktivieren. In der Regel kann SMT für viele allgemeine Computing-Aufgaben oder solche, die viel E/A erfordern, den Anwendungsdurchsatz erheblich erhöhen. Bei rechengebundenen Jobs, bei denen beide virtuellen Kerne rechengebunden sind, kann SMT dagegen die Gesamtleistung der Anwendung beeinträchtigen und bei Jobs eine unbestimmte Varianz verursachen. Daher können einige HPC-Anwendungen bei deaktiviertem SMT bessere und vorhersagbarere Leistung erzielen.
Geringere Lizenzkosten
Einige Softwarelizenzvereinbarungen haben Abrechnungsmodelle, die an die Anzahl der verbrauchten vCPUs gebunden sind. Durch das Deaktivieren von SMT wird die Anzahl der vCPUs für jeden Kern um die Hälfte reduziert, wodurch sich Ihre Lizenzkosten verringern lassen. Weitere Informationen finden Sie in Ihrer Lizenzvereinbarung.
Im Abschnitt Preise können Sie sich darüber informieren, wie die Abrechnung von Google Cloud bei der Konfiguration des SMT funktioniert.
Beschränkungen
- Maschinentypen: SMT kann nicht auf Maschinentypen mit weniger als 2 vCPUs (z. B.
n1-standard-1
) oder auf dem Maschinentyp Tau T2D konfiguriert werden. - Automatische Knotenbereitstellung: Die SMT-Konfigurierbarkeit wird für Cluster, für die die automatische Knotenbereitstellung aktiviert ist, nicht unterstützt.
- Cluster Autoscaler: Die Skalierung von null Knoten mit Konfiguration der SMT-Konfiguration wird nur mit Cluster Autoscaler für Cluster mit GKE Version 1.21 oder höher unterstützt.
- GKE Sandbox: Sie können SMT-Einstellungen in GKE Sandbox-Knoten in GKE Standard-Clustern mit der Version 1.24.2-gke.300 und höher mit dem Flag
--threads-per-core
und in früheren Versionen mit einem eigenständigen DaemonSet konfigurieren. Eine Anleitung finden Sie unter GKE Sandbox. Da das Multithreading in GKE Sandbox vor Version 1.24.2-gke.300 standardmäßig deaktiviert ist, wird die Konfiguration von SMT mitthreads-per-core
nicht unterstützt. Wenn Sie GKE Sandbox verwenden und SMT aktivieren möchten, finden Sie weitere Informationen unter SMT ist möglicherweise deaktiviert. - Clustermodus: SMT-Konfigurierbarkeit wird in GKE-Autopilot-Clustern nicht unterstützt.
Preise
SMT für GKE wird basierend auf den zugrunde liegenden Compute Engine-Preisen für SMT abgerechnet. 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. Selbst wenn Sie SMT konfigurieren, wird Ihnen die vom VM-Maschinentyp definierte Standardanzahl von vCPUs in Rechnung gestellt. Weitere Informationen zu den Preisen für VMs finden Sie unter Preise für VM-Instanzen.
Beispiel: Ein GKE-Knoten, der mit dem Maschinentyp n2-standard-8
erstellt wurde, wird standardmäßig mit SMT ausgeführt und kann bis zu 8 vCPUs ausführen, also 2 vCPUs für jeden der vier physischen CPU-Kerne. Wenn Sie SSM so konfigurieren, dass nur ein Thread pro Kern verwendet wird (tatsächlich 4 vCPUs), werden Ihnen weiterhin 8 vCPUs in Rechnung gestellt.
SMT konfigurieren
Sie können SMT für neue Cluster oder Knotenpools konfigurieren. Dazu geben Sie die Anzahl der Threads pro Kern an.
Die folgende Tabelle zeigt die möglichen Werte für Threads pro Kern und das entsprechende SMT-Verhalten für den Knoten:
Threads pro Kern | SMT-Verhalten |
---|---|
null (Nicht angegeben) |
Compute Engine-VM-Standard |
0 |
Ungültig |
1 |
SMT aus |
2 |
SMT ein |
> 2 |
Ungültig |
SMT auf einem neuen Cluster konfigurieren
Sie können SMT auf neuen Clustern mithilfe der gcloud-Befehlszeile oder der Google Cloud Console konfigurieren.
gcloud
Führen Sie den folgenden Befehl aus, um SMT zu konfigurieren:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--threads-per-core=THREADS_PER_CORE
Dabei gilt:
CLUSTER_NAME
ist der Name des neuen Clusters.MACHINE_TYPE
ist der für Ihre GKE-Knoten zu verwendende Maschinentyp. Dieser muss ein Maschinentyp mit 2 oder mehr vCPUs sein.THREADS_PER_CORE
ist die Anzahl der sichtbaren Threads pro physischem Kern. Die vorherige Tabelle zeigt die Werte, die Sie angeben können.
Eine vollständige Liste der Optionen finden Sie in der Dokumentation zu gcloud container clusters create
.
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf add_box Erstellen.
Klicken Sie im Dialogfeld Cluster erstellen neben GKE-Standard auf Konfigurieren.
Klicken Sie im Navigationsmenü im Abschnitt Knotenpools auf den Namen eines Knotenpools und dann auf Knoten.
Wählen Sie im Abschnitt Maschinenkonfiguration einen unterstützten Maschinentyp aus, z. B. e2-standard-2.
Klicken Sie auf
CPU-Plattform und GPU.Wählen Sie im Drop-down-Menü vCPUs zum Kernverhältnis eine der folgenden Optionen aus:
- 1 vCPU pro Kern: SMT deaktivieren.
- 2 vCPUs pro Kern: SMT aktiviert lassen.
Konfigurieren Sie den Cluster und die Knotenpools nach Bedarf und klicken Sie dann auf Erstellen.
SMT auf einem neuen Knotenpool konfigurieren
Sie können SMT auf neuen Knotenpools mithilfe der gcloud-Befehlszeile oder der Google Cloud Console konfigurieren.
gcloud
Führen Sie den folgenden Befehl aus, um SMT zu konfigurieren:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--threads-per-core=THREADS_PER_CORE
Dabei gilt:
POOL_NAME
ist der Name der neuen Knotengruppe.CLUSTER_NAME
ist der Name des vorhandenen Clusters.MACHINE_TYPE
ist der für Ihre GKE-Knoten zu verwendende Maschinentyp. Dieser muss ein Maschinentyp mit 2 oder mehr vCPUs sein.THREADS_PER_CORE
ist die Anzahl der sichtbaren Threads pro physischem Kern. Die vorherige Tabelle zeigt die Werte, die Sie angeben können.
Eine vollständige Liste der Optionen finden Sie in der Dokumentation zu gcloud container clusters create
.
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf Knotenpool hinzufügen
.Klicken Sie im Navigationsmenü auf Knoten.
Wählen Sie im Abschnitt Maschinenkonfiguration einen eine Maschinenfamilie und einen Maschinentyp aus, die SMT unterstützen, z. B.n2-standard-2 abgeschlossen.
Klicken Sie auf
CPU-Plattform und GPU.Wählen Sie im Drop-down-Menü vCPUs zum Kernverhältnis eine der folgenden Optionen aus:
- 1 vCPU pro Kern: SMT deaktivieren.
- 2 vCPUs pro Kern: SMT aktiviert lassen.
Konfigurieren Sie den Knotenpool nach Bedarf und klicken Sie dann auf Erstellen.
SMT-Konfiguration überprüfen
Linux
Führen Sie die folgenden Schritte aus, um die SMT-Konfiguration auf Linux-Knoten zu prüfen:
Stellen Sie eine SSH-Verbindung zum Knoten her:
gcloud compute ssh NODE_NAME
Ersetzen Sie
NODE_NAME
durch Ihren Ingress-Namen.Prüfen Sie die Anzahl der vCPUs:
cat /proc/cpuinfo | grep processor | wc -l
Die entsprechende Ausgabe sieht etwa so aus:
16
Wenn Sie die Anzahl der Threads pro Kern auf
1
setzen, sollte die Ausgabe die Hälfte der Standard-vCPUs von Compute Engine-VMs anzeigen. Die Ausgabe fürn2-standard-32
mit deaktiviertem SMT sollte beispielsweise16
anstelle des Standardwerts32
sein.
Windows
Führen Sie die folgenden Schritte aus, um die SMT-Konfiguration auf Windows-Knoten zu prüfen:
Legen Sie einen Nutzernamen und ein Passwort für RDP auf den Knoten fest:
gcloud compute reset-windows-password NODE_NAME
Ersetzen Sie
NODE_NAME
durch Ihren Ingress-Namen.Stellen Sie eine Verbindung zur
EXTERNAL_IP:3389
für die VM her.Führen Sie den folgenden PowerShell-Befehl aus:
Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessors
Wenn Sie die Anzahl der Threads pro Kern auf
1
setzen, sollte der WertNumberOfCores
dem WertNumberOfLogicalProcessors
entsprechen, wie in der folgenden Beispielausgabe:Output (example n1-standard-2 with SMT off) NumberOfCores NumberOfLogicalProcessors ------------- ------------------------- 1 1
Nächste Schritte
- Informationen zu den verfügbaren Maschinentypen.
- Minimale CPU-Plattform für GKE-Knoten angeben
- Hier erfahren Sie, wie Sie Compute Engine-Knoten für einzelne Mandanten in GKE verwenden.