Configura il multi-threading simultaneo (SMT)


Questa pagina mostra come configurare il multi-threading simultaneo nel tuo di Google Kubernetes Engine (GKE).

Panoramica

Nodi GKE sono istanze di macchine virtuali (VM) Compute Engine utilizzate da GKE crea per tuo conto. Su queste VM è normale avere multi-threading simultaneo (SMT) sono abilitate per impostazione predefinita. L'SMT è la capacità di eseguire thread indipendenti su un singolo core CPU fisico. Con SMT abilitato, un singolo core fisico può eseguire due CPU virtuali (vCPU) come thread separati. Ad esempio, un nodo GKE n2-standard-32 è di fatto l'esecuzione di 32 vCPU su 16 core CPU fisici.

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

Vantaggi

La configurazione di SMT su GKE fornisce quanto segue vantaggi dell'IA.

Prestazioni migliorate

Alcuni carichi di lavoro di computing ad alte prestazioni (HPC) potrebbero registrare prestazioni migliorare il servizio disattivando SMT. Generalmente, per molti modelli di computing o attività che richiedono molto I/O, aumentare significativamente la velocità effettiva dell'applicazione. Al contrario, per i container in cui entrambi i core virtuali sono legati al calcolo, SMT può ostacolare le prestazioni complessive dell'applicazione e aggiungere una varianza non deterministica di lavoro. Pertanto, con SMT disabilitato, alcune applicazioni HPC potrebbero per ottenere prestazioni migliori e più prevedibili.

Costi di licenze ridotti

Alcuni contratti di licenza software prevedono modelli di fatturazione associati ai e il numero di vCPU utilizzate. La disattivazione di SMT riduce di metà vCPU per ogni core, il che potrebbe ridurre le tue licenze costi aggiuntivi. Per ulteriori informazioni, consulta il contratto di licenza.

Consulta la sezione relativa ai prezzi per capire in che modo Google Cloud fattura quando SMT configurato.

Limitazioni

  • Tipi di macchina: SMT non è configurabile su 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 configurabilità SMT non è supportata per i cluster con provisioning automatico dei nodi in un bucket in cui è abilitato il controllo delle versioni.
  • Gestore della scalabilità automatica dei cluster: scalabilità da zero nodi con SMT La configurabilità è supportata solo gestore della scalabilità automatica dei cluster per i cluster che eseguono GKE versione 1.21 o successive.
  • GKE Sandbox: puoi configurare le impostazioni SMT in GKE Sandbox nodi nei cluster GKE Standard che eseguono 1.24.2-gke.300 e versioni successive con il flag --threads-per-core e nelle versioni precedenti utilizzando un oggetto DaemonSet autonomo. Per istruzioni, consulta GKE Sandbox Poiché il multi-threading è disabilitato per impostazione predefinita in GKE Sandbox prima versione 1.24.2-gke.300, configurando SMT utilizzando threads-per-core non supportato. Se usi GKE Sandbox e attivare SMT, vedere Il protocollo SMT potrebbe essere disattivato.
  • Modalità cluster: la configurabilità SMT non è supportata su Autopilot di GKE cluster.

Prezzi

SMT per GKE viene fatturato in base al modello sottostante Prezzi di Compute Engine per SMT. Ti viene addebitato il costo per il numero di vCPU definito tipo di macchina, non il numero di thread che vengono eseguiti su ciascun core. Anche se configuri SMT, continuerai ad avere e fatturato per il numero predefinito di vCPU definito dal tipo di macchina VM. Per maggiori informazioni sulle modalità di fatturazione per le VM, consulta Prezzi delle istanze VM.

Ad esempio, un nodo GKE creato utilizzando la 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 SMT per utilizzare un solo thread per core (effettivamente 4 vCPU), vengono comunque fatturati per 8 vCPU.

Configura SMT

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

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

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

Configura SMT su un nuovo cluster

Puoi configurare 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 ordine fisico principale. La tabella precedente mostra i valori che puoi specificare.

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

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: mantieni attivo SMT.
  8. Configura il cluster e i pool di nodi come richiesto, 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: il 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 ordine fisico principale. La tabella precedente mostra i valori che puoi specificare.

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

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 supporta SMT, come 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: mantieni attivo SMT.
  8. Configura il pool di nodi in base alle tue esigenze, quindi fai clic su Crea.

Verificare la configurazione SMT

Linux

Per verificare la configurazione SMT sui nodi Linux, esegui la seguenti passaggi:

  1. Accedi tramite SSH al 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 la metà del numero predefinito di vCPU della VM di Compute Engine. Ad esempio, l'output per n2-standard-32 con SMT disattivato dovrebbe essere 16 anziché il valore predefinito 32.

Windows

Per verificare la configurazione SMT sui nodi Windows, esegui la seguenti 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 NumberOfCores deve essere uguale al valore NumberOfLogicalProcessors, come nel il seguente output di esempio:

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

Passaggi successivi