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) di Compute Engine che GKE
crea per tuo conto. Su queste VM, è comune che il
multi-threading simultaneo (SMT)
sia abilitato per impostazione predefinita. SMT è la capacità di eseguire più thread indipendenti su un singolo core della CPU fisica. Con SMT abilitato, un singolo core fisico può eseguire due CPU virtuali (vCPU) come thread separati e indipendenti. Ad esempio, un nodo GKE n2-standard-32 esegue, di fatto, 32 vCPU su 16 core della CPU fisica.
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 nodi GKE possono utilizzare l'intero core fisico per vCPU.
Vantaggi
La configurazione di SMT su GKE offre i seguenti vantaggi.
Prestazioni migliorate
Alcuni carichi di lavoro di computing ad alte prestazioni (HPC) potrebbero riscontrare un miglioramento delle prestazioni disabilitando SMT. In genere, per molte attività di calcolo generiche o che richiedono molto I/O, SMT può aumentare notevolmente il throughput delle applicazioni. Al contrario, per i job con vincoli di calcolo in cui entrambi i core virtuali sono legati al calcolo, SMT può ostacolare le prestazioni complessive dell'applicazione e aggiungere una varianza non deterministica ai job. Pertanto, con SMT disabilitato, alcune applicazioni HPC potrebbero ottenere 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 disabilitazione di SMT riduce della metà 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 sui prezzi per capire come vengono fatturati i costi quando Google Cloud SMT è configurato.
Limitazioni
- Tipi di macchine: SMT non è configurabile sui
tipi di macchine con meno di 2 vCPU
(ad esempio
n1-standard-1) o con le serie di macchine N4A o serie di macchine Tau T2D. - Provisioning automatico dei nodi: la configurabilità SMT non è supportata per i cluster con il provisioning automatico dei nodi abilitato.
- Scalabilità automatica del cluster: la scalabilità da zero nodi con la configurabilità SMT è supportata solo nella scalabilità automatica del 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-coree nelle versioni precedenti utilizzando un DaemonSet autonomo. Per istruzioni, consulta GKE Sandbox. Poiché il multi-threading è disabilitato per impostazione predefinita in GKE Sandbox prima della versione 1.24.2-gke.300, la configurazione di SMT utilizzandothreads-per-corenon è supportata. Se utilizzi GKE Sandbox e vuoi abilitare SMT, consulta SMT potrebbe essere disabilitato. - Modalità cluster: la configurabilità SMT non è supportata nei cluster GKE Autopilot.
Prezzi
SMT per GKE viene fatturato in base ai prezzi di Compute Engine sottostanti per SMT. Ti viene addebitato il costo per il numero di vCPU definite dal tipo di macchina di una VM, non per il numero di thread eseguiti su ogni core. Anche se configuri SMT, continuerai a ricevere addebiti per il numero predefinito di vCPU definito dal tipo di macchina 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 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 SMT in modo da utilizzare un solo thread per core (ovvero 4 vCPU), ti verranno comunque addebitati i costi per 8 vCPU.
Configurare SMT
Puoi configurare SMT su nuovi cluster o pool di nodi specificando il numero di thread per core.
La tabella seguente mostra i valori possibili per i thread per core e il comportamento SMT corrispondente per il nodo:
| Thread per core | Comportamento SMT |
|---|---|
null (non specificato) |
Valore predefinito della VM di Compute Engine |
0 |
Non valido |
1 |
SMT disattivato |
2 |
SMT attivato |
> 2 |
Non valido |
Configurare SMT su un nuovo cluster
Puoi configurare SMT sui nuovi cluster utilizzando gcloud CLI o la Google Cloud console.
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 core fisico. La tabella precedente mostra i valori che puoi specificare.
Per un elenco completo delle opzioni, consulta la gcloud container clusters create
documentazione.
Console
Nella Google Cloud console, vai alla pagina Crea un cluster Kubernetes.
Nel menu di navigazione, nella sezione Pool di nodi, fai clic sul nome di un pool di nodi, quindi su Nodi.
Nella sezione Configurazione macchina, seleziona un tipo di macchina supportato, ad esempio 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 SMT attivo.
Configura il cluster e i pool di nodi in base alle esigenze, quindi fai clic su Crea.
Configurare SMT su un nuovo pool di nodi
Puoi configurare SMT sui nuovi pool di nodi utilizzando gcloud CLI o la Google Cloud console.
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 core fisico. La tabella precedente mostra i valori che puoi specificare.
Per un elenco completo delle opzioni, consulta la gcloud container clusters create
documentazione.
Console
Vai alla pagina Google Kubernetes Engine nella Google Cloud console.
Fai clic sul nome del cluster che vuoi modificare.
Fai clic sulla scheda Nodi.
Fai clic su Crea pool di nodi gestito dall'utente.
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 SMT attivo.
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, segui questi passaggi:
Accedi al nodo tramite SSH:
gcloud compute ssh NODE_NAMESostituisci
NODE_NAMEcon il nome del nodo.Controlla il numero di vCPU:
cat /proc/cpuinfo | grep processor | wc -lL'output è simile al seguente:
16Se imposti il numero di thread per core su
1, l'output deve mostrare la metà del numero predefinito di vCPU della VM di Compute Engine. Ad esempio, l' output pern2-standard-32con SMT disattivato deve essere16anziché il valore predefinito32.
Windows
Per verificare la configurazione SMT sui nodi Windows, segui questi passaggi:
Imposta un nome utente e una password per RDP sul nodo:
gcloud compute reset-windows-password NODE_NAMESostituisci
NODE_NAMEcon il nome del nodo.Stabilisci una connessione a
EXTERNAL_IP:3389per la VM.Esegui il seguente comando PowerShell:
Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessorsSe imposti il numero di thread per core su
1, il valoreNumberOfCoresdeve essere uguale al valoreNumberOfLogicalProcessors, come nell'output di esempio seguente:Output (example n1-standard-2 with SMT off) NumberOfCores NumberOfLogicalProcessors ------------- ------------------------- 1 1
Passaggi successivi
- Scopri di più sui tipi di macchine disponibili.
- Scopri come specificare una piattaforma CPU minima per i nodi GKE.
- Scopri di più sull'utilizzo dei nodi single-tenant di Compute Engine in GKE.