Configura multisubprocesos simultáneos (SMP)


En esta página, se muestra cómo configurar multisubprocesos simultáneos en tus clústeres de Google Kubernetes Engine (GKE).

Descripción general

Los nodos de GKE son instancias de máquina virtual (VM) de Compute Engine que GKE crea en tu nombre. En estas VM, es común tener habilitados los multisubprocesos simultáneos (SMT) de forma predeterminada. SMT es la capacidad de ejecutar varios subprocesos independientes en un solo núcleo de CPU físico. Con los SMT habilitados, un solo núcleo físico puede ejecutar dos CPU virtuales como subprocesos independientes y separados. Por ejemplo, un nodo n2-standard-32 de GKE, de hecho, ejecuta 32 CPU virtuales 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 la cantidad de CPU virtuales eficaces sea igual a la cantidad de núcleos físicos, lo que significa que tus nodos de GKE pueden usar el núcleo físico completo por CPU virtual.

Ventajas

La configuración de SMT en GKE proporciona los siguientes beneficios.

Rendimiento mejorado

Algunas cargas de trabajo de computación de alto rendimiento (HPC) pueden experimentar una mejora en el rendimiento si inhabilitas los SMT. Por lo general, para muchas tareas generales de procesamiento o tareas que requieren mucha E/S, los SMT pueden aumentar la capacidad de procesamiento de la aplicación de manera significativa. Por el contrario, para los trabajos vinculados al procesamiento en los que ambos núcleos virtuales están vinculados al procesamiento, los SMT pueden afectar el rendimiento general de la aplicación y agregar una varianza no determinista a los trabajos. Por lo tanto, con los SMT inhabilitados, algunas aplicaciones de HPC pueden obtener un mejor y más predecible rendimiento.

Reducción de costos de licencia

Algunos contratos de licencia de software tienen modelos de facturación vinculados a la cantidad de CPU virtuales que se consumen. Inhabilitar los SMT reduce la cantidad de CPU virtuales para cada núcleo a la mitad, lo que podría reducir los costos de licencia. Para obtener más información, consulta tu contrato de licencia.

Consulta la sección Precios para comprender cómo Google Cloud factura cuando se configuran SMT.

Limitaciones

  • Tipos de máquinas: SMT no se puede configurar en tipos de máquinas que tengan menos de 2 CPU virtuales (por ejemplo, n1-standard-1) o en el tipo de máquina Tau T2D.
  • Aprovisionamiento automático de nodos: La configuración de los SMT no es compatible con los clústeres que tienen habilitado el aprovisionamiento automático de nodos.
  • Escalador automático del clúster: El escalamiento desde cero de nodos con configuración de SMT solo es compatible con el escalador automático del clúster para clústeres que ejecutan la versión 1.21 de GKE o una posterior.
  • GKE Sandbox: Puedes establecer la configuración de SMT en los nodos de GKE Sandbox en clústeres de GKE Standard que ejecutan la versión 1.24.2-gke.300 y posteriores mediante la marca --threads-per-core y en versiones anteriores mediante un DaemonSet independiente. Para obtener instrucciones, consulta GKE Sandbox. Debido a que el multiprocesamiento está inhabilitado de forma predeterminada en GKE Sandbox antes de la versión 1.24.2-gke.300, no se admite la configuración de SMT con threads-per-core. Si usas GKE Sandbox y deseas habilitar los SMT, consulta SMT puede estar inhabilitado.
  • Modo del clúster: La configuración de los SMT no es compatible con los clústeres de GKE Autopilot.

Precios

Los SMT para GKE se facturan según los precios subyacentes de Compute Engine para SMT. Se te factura por la cantidad de CPU virtuales definida por el tipo de máquina de una VM, no por la cantidad de subprocesos que se ejecutan en cada núcleo. Incluso si configuras SMT, se te seguirá facturando por la cantidad predeterminada de CPU virtuales definida por el tipo de máquina de VM. Para obtener más información sobre cómo se te facturan las VMs, consulta Precios de instancias de VM.

Por ejemplo, un nodo de GKE que se crea mediante el tipo de máquina n2-standard-8 se ejecuta con los SMT habilitados de forma predeterminada y puede ejecutar hasta 8 CPU virtuales, que son 2 CPU virtuales para cada uno de los cuatro núcleos de CPU físicos. Si configuras los SMT para usar solo un subproceso por núcleo (4 CPU virtuales de forma efectiva), de todos modos se te cobrará por 8 CPU virtuales.

Configura SMT

Puedes configurar SMT en clústeres o grupos de nodos nuevos si especificas la cantidad de subprocesos por núcleo.

En la siguiente tabla, se muestran los valores posibles de subprocesos por núcleo y el comportamiento de SMT correspondiente para el nodo:

Subprocesos por núcleo Comportamiento de SMT
null (sin especificar) VM predeterminada de Compute Engine
0 No válido
1 SMT desactivados
2 SMT activados
> 2 No válido

Configura SMT en un clúster nuevo

Puedes configurar SMT en clústeres nuevos mediante 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

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre del clúster nuevo.
  • MACHINE_TYPE: El tipo de máquina que se usará para los nodos de GKE. Debe ser un tipo de máquina con 2 CPU virtuales o más.
  • THREADS_PER_CORE: Es la cantidad de subprocesos visibles por núcleo físico. En la tabla anterior, se muestran los valores que puedes especificar.

Para ver la lista completa de opciones, consulta la documentación de gcloud container clusters create.

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.

  3. En el cuadro de diálogo Crear clúster, junto a GKE Standard, haz clic en Configurar.

  4. En el menú de navegación, en la sección Grupos de nodos, haz clic en el nombre de un grupo de nodos y, luego, en Nodos.

  5. En la sección Configuración de la máquina, selecciona un Tipo de máquina compatible, como e2-standard-2.

  6. Haz clic en Plataforma de CPU y GPU.

  7. En el menú desplegable CPU virtuales para proporción de núcleos, selecciona una de las siguientes opciones:

    • 1 CPU virtual por núcleo: Desactiva los SMT.
    • 2 CPU virtuales por núcleo: Mantén activados los SMT.
  8. Configura el clúster y los grupos de nodos según sea necesario y, luego, haz clic en Crear.

Configura SMT en un grupo de nodos nuevo

Puedes configurar SMT en grupos de nodos nuevos mediante la CLI de gcloud o la consola de Google Cloud.

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

Reemplaza lo siguiente:

  • POOL_NAME: Es el nombre del grupo de nodos nuevo.
  • CLUSTER_NAME: es el nombre del clúster existente.
  • MACHINE_TYPE: El tipo de máquina que se usará para los nodos de GKE. Debe ser un tipo de máquina con 2 CPU virtuales o más.
  • THREADS_PER_CORE: Es la cantidad de subprocesos visibles por núcleo físico. En la tabla anterior, se muestran los valores que puedes especificar.

Para ver la lista completa de opciones, consulta la documentación de gcloud container clusters create.

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. Haz clic en el nombre del clúster que deseas modificar.

  3. Haz clic en Agregar grupo de nodos.

  4. En el menú de navegación, haz clic en Nodos.

  5. En Configuración de la máquina selecciona una Familia de máquinas y un Tipo de máquina compatibles con los SMT, como n2-standard-2.

  6. Haz clic en Plataforma de CPU y GPU.

  7. En el menú desplegable CPU virtuales para proporción de núcleos, selecciona una de las siguientes opciones:

    • 1 CPU virtual por núcleo: Desactiva los SMT.
    • 2 CPU virtuales por núcleo: Mantén activados los SMT.
  8. Configura el grupo de nodos según sea necesario y, luego, haz clic en Crear.

Verifica la configuración de SMT

Linux

Para verificar la configuración de SMT en los nodos de Linux, sigue estos pasos:

  1. Establece una conexión SSH al nodo:

    gcloud compute ssh NODE_NAME
    

    Reemplaza NODE_NAME por el nombre del nodo.

  2. Verifica la cantidad de CPU virtuales:

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

    El resultado es similar a este:

    16
    

    Si estableces la cantidad de subprocesos por núcleo en 1, el resultado debería mostrar la mitad de la cantidad predeterminada de CPU virtuales de VM de Compute Engine. Por ejemplo, el resultado de n2-standard-32 con los SMT desactivados debe ser 16 en lugar del valor predeterminado de 32.

Windows

Para verificar la configuración de SMT en los nodos de Windows, sigue estos pasos:

  1. Establece un nombre de usuario y una contraseña de RDP para el nodo:

    gcloud compute reset-windows-password NODE_NAME
    

    Reemplaza NODE_NAME por el nombre del nodo.

  2. Establece una conexión a EXTERNAL_IP:3389 para la VM.

  3. Ejecuta el siguiente comando de PowerShell:

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

    Si estableces la cantidad de subprocesos por núcleo en 1, el valor de NumberOfCores debe ser igual al valor de NumberOfLogicalProcessors, como en el siguiente resultado de ejemplo:

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

¿Qué sigue?