Gleichzeitiges Multi-Threading (SMT) konfigurieren


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 mit threads-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

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie auf Erstellen.

  3. Klicken Sie im Dialogfeld Cluster erstellen neben GKE-Standard auf Konfigurieren.

  4. Klicken Sie im Navigationsmenü im Abschnitt Knotenpools auf den Namen eines Knotenpools und dann auf Knoten.

  5. Wählen Sie im Abschnitt Maschinenkonfiguration einen unterstützten Maschinentyp aus, z. B. e2-standard-2.

  6. Klicken Sie auf CPU-Plattform und GPU.

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

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf Knotenpool hinzufügen .

  4. Klicken Sie im Navigationsmenü auf Knoten.

  5. Wählen Sie im Abschnitt Maschinenkonfiguration einen eine Maschinenfamilie und einen Maschinentyp aus, die SMT unterstützen, z. B.n2-standard-2 abgeschlossen.

  6. Klicken Sie auf CPU-Plattform und GPU.

  7. 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.
  8. 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:

  1. Stellen Sie eine SSH-Verbindung zum Knoten her:

    gcloud compute ssh NODE_NAME
    

    Ersetzen Sie NODE_NAME durch Ihren Ingress-Namen.

  2. 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ür n2-standard-32 mit deaktiviertem SMT sollte beispielsweise 16 anstelle des Standardwerts 32 sein.

Windows

Führen Sie die folgenden Schritte aus, um die SMT-Konfiguration auf Windows-Knoten zu prüfen:

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

  2. Stellen Sie eine Verbindung zur EXTERNAL_IP:3389 für die VM her.

  3. 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 Wert NumberOfCores dem Wert NumberOfLogicalProcessors entsprechen, wie in der folgenden Beispielausgabe:

    Output (example n1-standard-2 with SMT off)
    
    NumberOfCores NumberOfLogicalProcessors
    ------------- -------------------------
                1                         1
    

Nächste Schritte