Questa pagina mostra come configurare il multithreading 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. In queste VM è comune avere il multi-threading simultaneo (SMT) abilitato per impostazione predefinita. L'SMT è la capacità di eseguire più
thread indipendenti su un singolo core della CPU fisica. Con l'SMT attivo, un singolo core fisico può eseguire due CPU virtuali (vCPU) come thread separati e indipendenti. Ad esempio, un nodo GKE n2-standard-32
, infatti, esegue 32 vCPU su 16 core CPU fisici.
Con l'introduzione della configurabilità di 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 nodi GKE possono utilizzare il core fisico completo per vCPU.
Vantaggi
La configurazione di SMT su GKE offre i seguenti vantaggi.
Prestazioni migliorate
La disattivazione di SMT potrebbe migliorare il rendimento di alcuni workload di computing ad alte prestazioni (HPC). In genere, per molte attività di calcolo generiche o che richiedono molto I/O, la tecnologia SMT può aumentare notevolmente il throughput delle applicazioni. Al contrario, per i job legati al calcolo in cui entrambi i core virtuali sono legati al calcolo, l'SMT può ostacolare le prestazioni complessive dell'applicazione e aggiungere varianza non deterministica ai job. Pertanto, con SMT disabilitato, alcune applicazioni HPC potrebbero avere prestazioni migliori e più prevedibili.
Costi di licenza ridotti
Alcuni contratti di licenza software hanno modelli di fatturazione legati al numero di vCPU utilizzate. La disattivazione di SMT dimezza il numero di vCPU per ogni core, il che potrebbe ridurre i costi di licenza. Per ulteriori informazioni, consulta il contratto di licenza.
Consulta la sezione Prezzi per capire come Google Cloud fattura quando è configurato SMT.
Limitazioni
- Tipi di macchine: SMT non è configurabile su
tipi di macchine 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 in cui è attivato il provisioning automatico dei nodi.
- Gestione della scalabilità automatica dei cluster: la scalabilità da zero nodi con configurabilità 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 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 di SMT utilizzandothreads-per-core
non è supportata. Se utilizzi GKE Sandbox e vuoi attivare SMT, consulta SMT potrebbe essere disattivato. - Modalità cluster: la configurabilità SMT non è supportata nei cluster GKE Autopilot.
Prezzi
SMT per GKE viene fatturato in base ai prezzi di Compute Engine per SMT sottostanti. Ti viene addebitato il costo per il numero di vCPU definite dal tipo di macchina di una VM, non per il numero di thread in esecuzione su ciascun core. Anche se configuri SMT, continuerai a ricevere addebiti per il numero predefinito di vCPU definito dal tipo di macchina della VM. Per ulteriori informazioni su come vengono fatturate le VM, consulta Prezzi delle istanze VM.
Ad esempio, un nodo GKE creato utilizzando il tipo di macchina n2-standard-8
viene eseguito con l'SMT abilitato per impostazione predefinita e può eseguire fino a 8 vCPU, ovvero 2 vCPU per ciascuno dei quattro core della CPU fisica. Se configuri la tecnologia SMT in modo da utilizzare un solo thread per core (ovvero 4 vCPU), ti verranno comunque fatturate 8 vCPU.
Configurare SMT
Puoi configurare 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 corrispondente comportamento SMT per il nodo:
Thread per core | Comportamento SMT |
---|---|
null (non specificato) |
Valore predefinito della VM Compute Engine |
0 |
Non valido |
1 |
SMT off |
2 |
SMT attivo |
> 2 |
Non valido |
Configurare SMT su un nuovo cluster
Puoi configurare SMT sui nuovi cluster utilizzando la gcloud CLI o la console Google Cloud.
gcloud
Per configurare SMT, esegui il seguente 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 nucleo 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
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Fai clic su add_box Crea.
Nella finestra di dialogo Crea cluster, accanto a GKE Standard, fai clic su Configura.
Nel menu di navigazione, nella sezione Pool di nodi, fai clic sul nome di un pool di nodi e poi su Nodi.
Nella sezione Configurazione macchina, seleziona un Tipo di macchina supportato, come e2-standard-2.
Fai clic su
Piattaforma CPU e GPU.Dal menu a discesa Rapporto vCPU/core, seleziona una delle seguenti opzioni:
- 1 vCPU per core: disattiva SMT.
- 2 vCPU per core: mantieni attivo SMT.
Configura il cluster e i pool di nodi come richiesto, quindi fai clic su Crea.
Configurare SMT su un nuovo pool di nodi
Puoi configurare SMT nei nuovi pool di nodi utilizzando la gcloud CLI o la console Google Cloud.
gcloud
Per configurare SMT, esegui il seguente 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 nucleo 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
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Fai clic sul nome del cluster da modificare.
Fai clic su
Aggiungi pool di nodi.Nel menu di navigazione, fai clic su Nodi.
Nella sezione Configurazione macchina, seleziona una Famiglia di macchine e un Tipo di macchina che supportano SMT, ad esempio n2-standard-2.
Fai clic su
Piattaforma CPU e GPU.Dal menu a discesa Rapporto vCPU/core, seleziona una delle seguenti opzioni:
- 1 vCPU per core: disattiva SMT.
- 2 vCPU per core: mantieni attivo SMT.
Configura il pool di nodi in base alle esigenze, quindi fai clic su Crea.
Verificare la configurazione SMT
Linux
Per verificare la configurazione SMT sui nodi Linux, svolgi i seguenti passaggi:
Accedi tramite SSH al nodo:
gcloud compute ssh NODE_NAME
Sostituisci
NODE_NAME
con il nome del tuo nodo.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 Compute Engine. Ad esempio, il valore di output pern2-standard-32
con SMT disattivato deve essere16
instead of32
.
Windows
Per verificare la configurazione SMT sui nodi Windows, svolgi i seguenti passaggi:
Imposta un nome utente e una password per l'accesso tramite RDP al nodo:
gcloud compute reset-windows-password NODE_NAME
Sostituisci
NODE_NAME
con il nome del tuo nodo.Stabilisci una connessione al
EXTERNAL_IP:3389
per la VM.Esegui il seguente 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 valoreNumberOfCores
deve essere uguale al valoreNumberOfLogicalProcessors
, come nel seguente esempio di output:Output (example n1-standard-2 with SMT off) NumberOfCores NumberOfLogicalProcessors ------------- ------------------------- 1 1
Passaggi successivi
- Scopri i tipi di macchine disponibili.
- Scopri come specificare una piattaforma CPU minima per i tuoi nodi GKE.
- Scopri come utilizzare i nodi single-tenant di Compute Engine in GKE.