En esta página se explica cómo configurar el multihilo simultáneo en los clústeres de Google Kubernetes Engine (GKE).
Información general
Los nodos de GKE son instancias de máquina virtual (VM) de Compute Engine que GKE crea automáticamente. En estas VMs, es habitual que la multitarea simultánea (SMT) esté habilitada de forma predeterminada. SMT es la capacidad de ejecutar varios hilos independientes en un solo núcleo de CPU físico. Con SMT habilitado, un único núcleo físico puede ejecutar dos CPUs virtuales (vCPUs) como hilos independientes. Por ejemplo, un nodo de GKE n2-standard-32
ejecuta 32 vCPUs en 16 núcleos de CPU físicos.
Con la introducción de la configurabilidad de SMT en los nodos de GKE, ahora puedes configurar SMT para que el número de vCPUs efectivas sea igual al número de núcleos físicos, lo que significa que tus nodos de GKE pueden usar el núcleo físico completo por vCPU.
Ventajas
Configurar SMT en GKE ofrece las siguientes ventajas:
Rendimiento mejorado
Es posible que algunas cargas de trabajo de computación de alto rendimiento (HPC) mejoren su rendimiento si se inhabilita SMT. Por lo general, en muchas tareas de computación generales o tareas que requieren muchas operaciones de E/S, SMT puede aumentar significativamente el rendimiento de las aplicaciones. Por el contrario, en los trabajos con limitaciones de computación en los que ambos núcleos virtuales tienen limitaciones de computación, SMT puede dificultar el rendimiento general de las aplicaciones y añadir variaciones no deterministas a los trabajos. Por lo tanto, si SMT está inhabilitado, algunas aplicaciones de HPC pueden ofrecer un rendimiento mejor y más predecible.
Reducción de los costes de licencia
Algunos contratos de licencia de software tienen modelos de facturación vinculados al número de vCPUs que se consumen. Si inhabilitas SMT, el número de CPUs virtuales por cada núcleo se reduce a la mitad, lo que podría reducir los costes de licencia. Para obtener más información, consulta tu contrato de licencia.
Consulta la sección Precios para saber cómo se factura cuando se configura SMT. Google Cloud
Limitaciones
- Tipos de máquinas: SMT no se puede configurar en tipos de máquinas que tengan menos de 2 vCPUs (por ejemplo,
n1-standard-1
) ni en el tipo de máquina Tau T2D. - Aprovisionamiento automático de nodos: la configurabilidad de SMT no se admite en los clústeres que tienen habilitado el aprovisionamiento automático de nodos.
- Autoescalador de clústeres: el escalado de cero nodos con la configurabilidad de SMT solo se admite en el autoescalador de clústeres de los clústeres que ejecutan la versión 1.21 de GKE o una posterior.
- GKE Sandbox: puedes configurar los ajustes de SMT en nodos de GKE Sandbox de clústeres de GKE Standard que ejecuten la versión 1.24.2-gke.300 o una posterior mediante la marca
--threads-per-core
, y en versiones anteriores mediante un DaemonSet independiente. Para obtener instrucciones, consulta GKE Sandbox. Como la multihilo está inhabilitada de forma predeterminada en el entorno aislado de GKE antes de la versión 1.24.2-gke.300, no se admite la configuración de SMT mediantethreads-per-core
. Si usas GKE Sandbox y quieres habilitar SMT, consulta SMT puede estar inhabilitado. - Modo de clúster: la configurabilidad de SMT no se admite en los clústeres Autopilot de GKE.
Precios
La función SMT de GKE se factura en función de los precios de SMT de Compute Engine subyacentes. Se te facturará el número de vCPUs definido por el tipo de máquina de la VM, no el número de hilos que se ejecutan en cada núcleo. Aunque configures SMT, se te seguirá facturando el número predeterminado de vCPUs definido por el tipo de máquina de la VM. Para obtener más información sobre cómo se te factura por las VMs, consulta los precios de las instancias de VMs.
Por ejemplo, un nodo de GKE creado con el tipo de máquina n2-standard-8
se ejecuta con SMT habilitado de forma predeterminada y puede ejecutar hasta 8 vCPUs, que son 2 vCPUs por cada uno de los cuatro núcleos de CPU físicos. Si configuras SMT para que use solo un hilo por núcleo (es decir, 4 vCPUs), se te seguirán facturando 8 vCPUs.
Configurar SMT
Puedes configurar SMT en clústeres o grupos de nodos nuevos especificando el número de subprocesos por núcleo.
En la siguiente tabla se muestran los valores posibles de los hilos por núcleo y el comportamiento de SMT correspondiente del nodo:
Hilos por núcleo | Comportamiento de SMT |
---|---|
null (no especificado) |
Valor predeterminado de VM de Compute Engine |
0 |
No válida |
1 |
SMT desactivado |
2 |
SMT activado |
> 2 |
No válida |
Configurar SMT en un clúster nuevo
Puedes configurar SMT en clústeres nuevos con la CLI de gcloud o la consola de Google Cloud .
gcloud
Para configurar SMT, ejecuta el siguiente comando:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--threads-per-core=THREADS_PER_CORE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clúster.MACHINE_TYPE
: el tipo de máquina que se usará en los nodos de GKE. Debe ser un tipo de máquina con 2 vCPUs o más.THREADS_PER_CORE
: el número de hilos por núcleo físico. En la tabla anterior se muestran los valores que puedes especificar.
Para ver una lista completa de opciones, consulta la gcloud container clusters create
documentación.
Consola
En la Google Cloud consola, ve a la página Crear un clúster de Kubernetes.
En el menú de navegación, en la sección Grupos de nodos, haz clic en el nombre de un grupo de nodos y, a continuación, en Nodos.
En la sección Configuración de la máquina, selecciona un Tipo de máquina compatible, como e2-standard-2.
Haz clic en
Plataforma de CPU y GPU.En el menú desplegable Relación entre vCPUs y núcleos, selecciona una de las siguientes opciones:
- 1 vCPU por núcleo: desactiva SMT.
- 2 vCPUs por núcleo: mantén SMT activado.
Configura el clúster y los grupos de nodos según sea necesario y, a continuación, haz clic en Crear.
Configurar SMT en un nuevo grupo de nodos
Puedes configurar SMT en grupos de nodos nuevos con la CLI de gcloud o la Google Cloud consola.
gcloud
Para configurar SMT, ejecuta el siguiente comando:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--threads-per-core=THREADS_PER_CORE
Haz los cambios siguientes:
POOL_NAME
: el nombre del nuevo grupo de nodos.CLUSTER_NAME
: el nombre del clúster.MACHINE_TYPE
: el tipo de máquina que se usará en los nodos de GKE. Debe ser un tipo de máquina con 2 vCPUs o más.THREADS_PER_CORE
: el número de hilos por núcleo físico. En la tabla anterior se muestran los valores que puedes especificar.
Para ver una lista completa de opciones, consulta la gcloud container clusters create
documentación.
Consola
Ve a la página Google Kubernetes Engine en la Google Cloud consola.
Haz clic en el nombre del clúster que quieras modificar.
Haz clic en
Añadir grupo de nodos.En el menú de navegación, haz clic en Nodos.
En la sección Configuración de la máquina, selecciona una familia de máquinas y un tipo de máquina que admitan SMT, como n2-standard-2.
Haz clic en
Plataforma de CPU y GPU.En el menú desplegable Relación entre vCPUs y núcleos, selecciona una de las siguientes opciones:
- 1 vCPU por núcleo: desactiva SMT.
- 2 vCPUs por núcleo: mantén SMT activado.
Configura el grupo de nodos según sea necesario y, a continuación, haz clic en Crear.
Verificar la configuración de SMT
Linux
Para verificar la configuración de SMT en nodos Linux, sigue estos pasos:
Accede al nodo mediante SSH:
gcloud compute ssh NODE_NAME
Sustituye
NODE_NAME
por el nombre de tu nodo.Comprueba el número de vCPUs:
cat /proc/cpuinfo | grep processor | wc -l
El resultado debería ser similar al siguiente:
16
Si defines el número de hilos por núcleo en
1
, el resultado debería mostrar la mitad del número predeterminado de vCPUs de la VM de Compute Engine. Por ejemplo, el resultado den2-standard-32
con SMT desactivado debería ser16
en lugar del valor predeterminado32
.
Windows
Para verificar la configuración de SMT en nodos de Windows, sigue estos pasos:
Define un nombre de usuario y una contraseña para conectarte al nodo mediante RDP:
gcloud compute reset-windows-password NODE_NAME
Sustituye
NODE_NAME
por el nombre de tu nodo.Establece una conexión con
EXTERNAL_IP:3389
para la VM.Ejecuta el siguiente comando de PowerShell:
Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessors
Si defines el número de subprocesos por núcleo en
1
, el valor deNumberOfCores
debe ser igual al valor deNumberOfLogicalProcessors
, como en el siguiente ejemplo de salida:Output (example n1-standard-2 with SMT off) NumberOfCores NumberOfLogicalProcessors ------------- ------------------------- 1 1
Siguientes pasos
- Consulta los tipos de máquinas disponibles.
- Consulta cómo especificar una plataforma de CPU mínima para tus nodos de GKE.
- Consulta información sobre cómo usar nodos de único cliente de Compute Engine en GKE.