Configurazione del multi-threading simultaneo (SMT)


Questa pagina mostra come configurare il multi-threading simultaneo nei cluster Google Kubernetes Engine (GKE).

Panoramica

I nodi GKE sono istanze di macchine virtuali (VM) Compute Engine che GKE crea per tuo conto. Su queste VM, è praticato che il multi-threading (SMT) simultaneo sia abilitato per impostazione predefinita. SMT è la capacità di eseguire più thread indipendenti su un singolo core della CPU fisico. Con la funzionalità SMT abilitata, un singolo core fisico può eseguire due CPU virtuali (vCPU) come thread indipendenti e indipendenti. Ad esempio, un nodo GKE n2-standard-32 esegue 32 vCPU su 16 core CPU fisici.

Con l'introduzione della configurabilità SMT sui nodi GKE, ora puoi configurare SMT in modo che il numero di vCPU effettive sia uguale al numero di core fisici, il che significa che i tuoi nodi GKE possono utilizzare l'intero core fisico per vCPU.

Vantaggi

La configurazione di SMT su GKE offre i seguenti vantaggi.

Prestazioni migliorate

La disattivazione di SMT potrebbe migliorare alcuni carichi di lavoro di computing ad alte prestazioni (HPC). In genere, per molte attività di calcolo generiche o che richiedono molti I/O, la funzionalità SMT può aumentare significativamente la velocità effettiva dell'applicazione. Al contrario, per i job legati al calcolo in cui entrambi i core virtuali sono vincolati al calcolo, la SMT può ostacolare le prestazioni complessive dell'applicazione e aggiungere varianza non deterministica ai job. Pertanto, con SMT disabilitata, alcune applicazioni HPC potrebbero ottenere prestazioni migliori e più prevedibili.

Costi delle licenze ridotti

Alcuni contratti di licenza software prevedono modelli di fatturazione associati al numero di vCPU utilizzate. La disabilitazione di SMT riduce della metà il numero di vCPU per ogni core, il che potrebbe ridurre i costi delle licenze. Per ulteriori informazioni, consulta il tuo contratto di licenza.

Consulta la sezione dei pricing per scoprire come Google Cloud esegue la fatturazione quando viene configurata la soluzione SMT.

Limitazioni

  • Tipi di macchina: SMT non è configurabile sui tipi di macchina con meno di 2 vCPU (ad esempio n1-standard-1) o sul tipo di macchina Tau T2D.
  • Provisioning automatico dei nodi: la configurazione SMT non è supportata per i cluster in cui è abilitato il provisioning automatico dei nodi.
  • Gestore della scalabilità automatica dei cluster: la scalabilità da zero nodi con la configurazione SMT è supportata solo nel gestore della scalabilità automatica dei cluster per i cluster che eseguono GKE versione 1.21 o successive.
  • GKE Sandbox: puoi configurare le impostazioni SMT nei nodi di GKE Sandbox nei cluster GKE Standard che eseguono la versione 1.24.2-gke.300 e successive utilizzando il flag --threads-per-core e nelle versioni precedenti utilizzando un DaemonSet autonomo. Per le istruzioni, consulta GKE Sandbox. Poiché il multithreading è disabilitato per impostazione predefinita in GKE Sandbox prima della versione 1.24.2-gke.300, la configurazione della SMT utilizzando threads-per-core non è supportata. Se utilizzi GKE Sandbox e vuoi abilitare SMT, consulta SMT potrebbe essere disabilitato.
  • Modalità cluster: la configurabilità SMT non è supportata sui cluster GKE Autopilot.

Prezzi

La SMT per GKE viene fatturata in base ai prezzi di Compute Engine per SMT sottostanti. Ti viene addebitato il numero di vCPU definite dal tipo di macchina di una VM, non il numero di thread in esecuzione su ciascun core. Anche se configuri la SMT, continuerai a ricevere la fatturazione per il numero predefinito di vCPU definito dal tipo di macchina VM. Per ulteriori informazioni sulla modalità di fatturazione delle VM, consulta Prezzi delle istanze VM.

Ad esempio, un nodo GKE creato utilizzando il tipo di macchina n2-standard-8 viene eseguito con SMT abilitata per impostazione predefinita e può eseguire fino a 8 vCPU, ovvero 2 vCPU per ciascuno dei quattro core CPU fisici. Se configuri la SMT per l'utilizzo di un solo thread per core (ovvero 4 vCPU), ti verranno comunque addebitate 8 vCPU.

Configura SMT

Puoi configurare la SMT su nuovi cluster o pool di nodi specificando il numero di thread per core.

La seguente tabella mostra i possibili valori per i thread per core e il comportamento SMT corrispondente per il nodo:

Thread per core Comportamento SMT
null (non specificato) VM di Compute Engine predefinita
0 Non valido
1 SMT disattivata
2 SMT attiva
> 2 Non valido

Configura SMT su un nuovo cluster

Puoi configurare la SMT su nuovi cluster utilizzando gcloud CLI o la console Google Cloud.

gcloud

Per configurare SMT, esegui questo comando:

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del nuovo cluster.
  • MACHINE_TYPE: il tipo di macchina da utilizzare per i nodi GKE. Deve essere un tipo di macchina con 2 o più vCPU.
  • THREADS_PER_CORE: il numero di thread per core fisico. La tabella precedente mostra i valori che puoi specificare.

Per un elenco completo delle opzioni, consulta la documentazione di gcloud container clusters create.

Console

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea.

  3. Nella finestra di dialogo Crea cluster, accanto a GKE Standard, fai clic su Configura.

  4. Nel menu di navigazione, nella sezione Pool di nodi, fai clic sul nome di un pool di nodi, quindi fai clic su Nodi.

  5. Nella sezione Configurazione macchina, seleziona un Tipo di macchina supportato, ad esempio e2-standard-2.

  6. Fai clic su Piattaforma CPU e GPU.

  7. Dal menu a discesa Rapporto tra vCPU e core, seleziona una delle seguenti opzioni:

    • 1 vCPU per core: disattiva SMT.
    • 2 vCPU per core: mantiene SMT attiva.
  8. Configura il cluster e i pool di nodi in base alle esigenze, quindi fai clic su Crea.

Configura SMT su un nuovo pool di nodi

Puoi configurare SMT su nuovi pool di nodi utilizzando gcloud CLI o la console Google Cloud.

gcloud

Per configurare SMT, esegui questo comando:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

Sostituisci quanto segue:

  • POOL_NAME: nome del nuovo pool di nodi.
  • CLUSTER_NAME: il nome del cluster esistente.
  • MACHINE_TYPE: il tipo di macchina da utilizzare per i nodi GKE. Deve essere un tipo di macchina con 2 o più vCPU.
  • THREADS_PER_CORE: il numero di thread per core fisico. La tabella precedente mostra i valori che puoi specificare.

Per un elenco completo delle opzioni, consulta la documentazione di gcloud container clusters create.

Console

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud.

    Vai a Google Kubernetes Engine

  2. Fai clic sul nome del cluster che vuoi modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Nel menu di navigazione, fai clic su Nodi.

  5. Nella sezione Configurazione macchina, seleziona una Famiglia di macchine e un Tipo di macchina che supportano SMT, ad esempio n2-standard-2.

  6. Fai clic su Piattaforma CPU e GPU.

  7. Dal menu a discesa Rapporto tra vCPU e core, seleziona una delle seguenti opzioni:

    • 1 vCPU per core: disattiva SMT.
    • 2 vCPU per core: mantiene SMT attiva.
  8. Configura il pool di nodi in base alle esigenze e fai clic su Crea.

Verificare la configurazione SMT

Linux

Per verificare la configurazione SMT sui nodi Linux, segui questi passaggi:

  1. SSH nel nodo:

    gcloud compute ssh NODE_NAME
    

    Sostituisci NODE_NAME con il nome del tuo nodo.

  2. Controlla il numero di vCPU:

    cat /proc/cpuinfo | grep processor | wc -l
    

    L'output è simile al seguente:

    16
    

    Se imposti il numero di thread per core su 1, l'output dovrebbe mostrare metà del numero predefinito di vCPU della VM di Compute Engine. Ad esempio, l'output di n2-standard-32 con SMT disattivata dovrebbe essere 16 anziché il valore predefinito di 32.

Windows

Per verificare la configurazione SMT sui nodi Windows, segui questi passaggi:

  1. Imposta un nome utente e una password su RDP per il nodo:

    gcloud compute reset-windows-password NODE_NAME
    

    Sostituisci NODE_NAME con il nome del tuo nodo.

  2. Stabilisci una connessione a EXTERNAL_IP:3389 per la VM.

  3. Esegui questo comando PowerShell:

    Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessors
    

    Se imposti il numero di thread per core su 1, il valore di NumberOfCores dovrebbe essere uguale al valore NumberOfLogicalProcessors, come nel seguente output di esempio:

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

Passaggi successivi