Comprobar excesivamente CPU en máquinas virtuales de único inquilino


La sobreasignación de CPU en nodos de único inquilino le permite programar instancias que pueden compartir sus ciclos de CPU sobrantes entre sí. Esto le permite sobreaprovisionar recursos de nodo de único inquilino y programar más CPU de VM en un nodo de único inquilino de las que normalmente están disponibles. La sobreasignación de CPU es especialmente valiosa para cargas de trabajo que están infrautilizadas pero que pueden experimentar ráfagas relativamente no correlacionadas.

La sobreasignación de CPU puede ayudarle a reducir los costos por máquina virtual al distribuir el costo de un nodo de inquilino único entre más máquinas virtuales. También puede reducir los costos de licencia por máquina virtual cuando se utilizan licencias por socket o por núcleo.

Las máquinas virtuales con CPU sobrecargadas pueden utilizar recursos de CPU que de otro modo no se utilizarían de las siguientes maneras:

  • Si un nodo de único inquilino no está lleno, las máquinas virtuales con compromiso excesivo pueden utilizar núcleos no asignados.

  • Si otra máquina virtual en un nodo de único inquilino no utiliza todos sus recursos de CPU (por ejemplo, porque la CPU está inactiva), una máquina virtual sobrecomprometida puede usar esos recursos de CPU.

Nivel de compromiso excesivo

Puede especificar el valor para la cantidad mínima de CPU que se asignan a una máquina virtual cuando crea una máquina virtual o después de detenerla. El nivel de sobrecompromiso representa la cantidad mínima de subprocesos de CPU subyacentes que se garantiza que estarán disponibles para una máquina virtual. Si la máquina virtual tiene más vCPU que subprocesos subyacentes disponibles, las vCPU de la máquina virtual comparten los recursos informáticos subyacentes y se ejecutan con un rendimiento degradado.

Puede establecer este valor para cada máquina virtual, lo que le permite aprovisionar máquinas virtuales con diferentes proporciones de sobreasignación de CPU en un único nodo de único inquilino. Los valores más bajos reducen los requisitos de capacidad a expensas potenciales del rendimiento si se producen ráfagas correlacionadas. Determinar un valor óptimo para la cantidad mínima de CPU requiere comprender la utilización de la carga de trabajo y la modificación iterativa del valor.

Al establecer este valor, tenga en cuenta lo siguiente:

  • Si no establece el valor para la cantidad mínima de CPU, o establece el valor para la cantidad mínima de CPU igual a la cantidad de CPU en el tipo de máquina de la VM, la proporción de sobreasignación permitida de la VM es 1,0. Con una proporción de sobrecompromiso de 1,0, todas las CPU son accesibles solo para esta máquina virtual y no hay recursos de CPU disponibles para comprometerse en exceso con otras máquinas virtuales.

  • La cantidad mínima de CPU no puede ser mayor que la cantidad de CPU especificada por el tipo de máquina de la máquina virtual.

  • La suma de los valores para la cantidad mínima de CPU para todas las máquinas virtuales en un nodo de único inquilino no puede exceder la capacidad de CPU de ese tipo de nodo de único inquilino , que en el tipo de nodo n1-node-96-624 es 96.

El valor de la cantidad de CPU especificada por el tipo de máquina de la máquina virtual es un valor estático y representa la cantidad de CPU que una máquina virtual puede aumentar a partir del número mínimo si esas CPU están disponibles. Si necesita una cantidad de CPU diferentes a las proporcionadas por los tipos de máquina predefinidos , puede utilizar un tipo de máquina personalizado .

Consideraciones

Antes de configurar los niveles de sobreasignación de CPU para máquinas virtuales, considere la importancia de su carga de trabajo. Las cargas de trabajo menos críticas, como las cargas de trabajo de desarrollo y prueba, pueden potencialmente tolerar niveles de compromiso excesivo más altos. Es posible que cargas de trabajo más críticas, como un sistema de pagos de producción, no toleren tanto compromiso excesivo o ninguno en absoluto.

Considere también la utilización de su carga de trabajo. Las cargas de trabajo con un alto uso de CPU no son buenos candidatos para una sobreasignación de CPU porque no tendrán ciclos de utilización adicionales para que los utilicen otras máquinas virtuales sobreasignadas. Además, las cargas de trabajo con un uso promedio de CPU bajo, pero un pico de utilización bajo, podrían beneficiarse de diferentes tamaños de tipos de máquinas.

El uso de una sobreasignación de CPU beneficia a las cargas de trabajo en ráfagas no correlacionadas que tienen un uso máximo alto y un uso promedio bajo porque es más probable que estas cargas de trabajo tengan recursos de CPU disponibles para compartir entre máquinas virtuales cuando algunas máquinas virtuales necesitan aumentar su utilización. Si todas las máquinas virtuales de un host explotan al mismo tiempo, el host no tendrá recursos suficientes para sus máquinas virtuales.

Limitaciones

Limitaciones de la carga de trabajo

La sobreasignación de CPU es más adecuada para cargas de trabajo sin requisitos de rendimiento estrictos, por ejemplo, cargas de trabajo de desarrollo y prueba e infraestructuras de escritorios virtuales.

Es posible que los niveles altos de sobreasignación de CPU no sean apropiados para cargas de trabajo sensibles al rendimiento.

Para cargas de trabajo con una utilización promedio y máxima consistentemente baja, Google recomienda ajustar el tamaño . Es decir, en lugar de comprometer excesivamente las CPU, recomendamos modificar el tamaño de la instancia de VM para que coincida con los requisitos de recursos de esa carga de trabajo.

Si sus instancias están demasiado comprometidas, muévalas a otro nodo de único inquilino .

Limitaciones del tipo de máquina

Solo puede comprometer excesivamente las CPU en lo siguiente:

Limitaciones de nivel de compromiso excesivo

Solo puede configurar la CPU mínima en cada nodo de único inquilino en la mitad de las CPU de la máquina virtual, lo que permite una tasa de sobrecompromiso máxima del nodo de único inquilino de 2,0.

Limitaciones de programación de VM

Los grupos de nodos de inquilino único basados ​​en plantillas de nodo de inquilino único que no están configurados para la sobreasignación de CPU no permiten el aprovisionamiento de máquinas virtuales con la sobreasignación de CPU habilitada. Es decir, no puede programar una máquina virtual con una cantidad mínima especificada de CPU en un grupo de nodos de único inquilino que no esté configurado para sobreasignación de CPU.

Cuota

La cuota de CPU se basa en la cantidad de vCPU del tipo de nodo de inquilino único , no en el máximo potencial de vCPU disponibles para sobreasignación.

Costos

A los nodos de inquilino único que tienen seleccionado un compromiso excesivo de CPU en su plantilla de nodo se les cobra un 25 % adicional. Este cargo se suma a la prima del 10 % por ejecutar máquinas virtuales en nodos de único inquilino . La prima de sobreasignación de CPU es fija, independientemente del nivel de sobreasignación de CPU y de cuántas máquinas virtuales estén programadas en el nodo de inquilino único.

Los nodos de inquilino único ofrecen descuentos por uso comprometido . Los descuentos por uso sostenido están disponibles para la prima de arrendamiento único y la prima de exceso de compromiso de CPU.

Para estimar el costo de ejecutar máquinas virtuales en nodos de inquilino único, consulte la Calculadora de precios .

Configurar máquinas virtuales de inquilino único para sobrecompromiso

Para configurar máquinas virtuales de único inquilino para que tengan recursos de CPU disponibles para sobrecompromiso, haga lo siguiente:

  1. Cree una plantilla de nodo de inquilino único que tenga habilitada la sobrecompromiso de CPU. Debe habilitar la sobrecompromiso de la CPU al crear la plantilla de nodo. No puede habilitar la sobrecompromiso de la CPU después de crear una plantilla de nodo.

  2. Cree un grupo de nodos de inquilino único basado en la plantilla de nodo de inquilino único que tiene habilitada la sobrecompromiso de CPU.

  3. Cree una máquina virtual y haga lo siguiente:

    1. Elija un tipo de máquina para la VM. La cantidad de CPU en el tipo de máquina representa la cantidad máxima de CPU que la VM puede alcanzar a partir de la cantidad mínima de CPU si la cantidad mínima de CPU es menor que la cantidad de CPU especificada por el tipo de máquina.

      Puede elegir un tipo de máquina diferente para cada VM en un nodo de único inquilino, siempre que no exceda la capacidad de CPU y memoria del nodo de único inquilino.

    2. Especifique la cantidad mínima de CPU para asignar a esa única VM o use un grupo de instancias administrado para crear varias VM que tengan el mismo nivel de sobrecompromiso de CPU.

Antes de comenzar

  • Cree una plantilla de nodo de único inquilino y especifique --cpu-overcommit-type=enabled .
  • Cree un grupo de nodos de inquilino único basado en la plantilla de nodo de inquilino único con la sobrecompromiso de CPU habilitada.
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Establecer el nivel de sobrecompromiso de la CPU

Los siguientes procedimientos le muestran cómo crear una máquina virtual de inquilino único con recursos de CPU disponibles para sobreasignación. Si necesita modificar el nivel de sobreasignación de CPU de una máquina virtual que se está ejecutando, primero debe detener la máquina virtual.

Consola

En la consola de Google Cloud, cree una máquina virtual de único inquilino en un grupo de nodos de único inquilino que se creó a partir de una plantilla de nodo de único inquilino que tenga habilitada la sobrecompromiso de CPU:

  1. Vaya a la página Nodos de único inquilino .

    Ir a nodos de único inquilino

  2. Haga clic en Grupos de nodos .

  3. Haga clic en el grupo de nodos de único inquilino en el que crear una máquina virtual.

  4. Haga clic en Crear instancia .

  5. Especifique el nombre , la región y la zona de la máquina virtual.

  6. En Configuración de la máquina , elija un tipo de máquina fija o personalizada con al menos 4 vCPU.

  7. En Compromiso excesivo de CPU , seleccione Habilitar compromiso excesivo de CPU .

  8. En vCPU mínimas asignadas , ajuste el control deslizante o ingrese manualmente la cantidad de vCPU para especificar el nivel de sobrecompromiso para las CPU en esta máquina virtual.

  9. Haga clic en Crear para crear una instancia de VM que tenga recursos de CPU disponibles para sobrecompromiso.

nube de gcloud

El siguiente ejemplo muestra cómo usar el comando gcloud compute instances create para crear una máquina virtual de inquilino único en un tipo de máquina predefinido con recursos de CPU disponibles para sobrecompromiso.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --min-node-cpu=MIN_VCPUS \
    --node-group=GROUP_NAME

Reemplace lo siguiente:

  • VM_NAME : el nombre de la VM en la que se sobrecomprometerán las CPU.

  • MACHINE_TYPE : el tipo de máquina en la que se aprovisionará la máquina virtual de único inquilino. La cantidad de CPU especificada por el tipo de máquina es la cantidad máxima de CPU que la VM puede alcanzar desde MIN_VCPUS .

  • MIN_VCPUS : la cantidad mínima de vCPU que se garantiza que estarán disponibles para esta VM.

  • GROUP_NAME : el nombre del grupo de nodos de único inquilino para aprovisionar la máquina virtual.

Configurar el nivel de sobrecompromiso en un tipo de máquina personalizado

Para crear una máquina virtual de inquilino único con recursos de CPU disponibles para sobrecompromiso en un tipo de máquina personalizada, omita el indicador --machine-type y, en su lugar, use los indicadores --custom-cpu y --custom-memory para especificar la cantidad de CPU y la cantidad de memoria, en gigabytes, para la máquina personalizada.

DESCANSAR

El siguiente ejemplo muestra cómo utilizar el método instances.insert para crear una máquina virtual de único inquilino en un tipo de máquina fija con recursos de CPU disponibles para sobrecompromiso.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "scheduling": {
    "minNodeCpus": MIN_VCPUS,
    "nodeAffinities": [
      {
        "key": "compute.googleapis.com/node-group-name",
        "operator": "IN",
        "values": [
          "GROUP_NAME"
        ]
      }
    ]
  },
  ...
}

Reemplace lo siguiente:

  • PROJECT_ID : el ID de su proyecto .

  • ZONE : la zona para esta solicitud.

  • MACHINE_TYPE_ZONE : la zona que alberga el tipo de máquina.

  • MACHINE_TYPE : el tipo de máquina en la que se aprovisionará la máquina virtual de único inquilino. La cantidad de CPU especificada por el tipo de máquina es la cantidad máxima de CPU que la VM puede alcanzar desde MIN_VCPUS .

  • VM_NAME : el nombre de la VM de único inquilino en la que se sobrecomprometerán las CPU.

  • MIN_VCPUS : la cantidad mínima de vCPU que se garantiza que estarán disponibles para esta VM.

  • GROUP_NAME : el nombre del grupo de nodos de único inquilino para aprovisionar la máquina virtual.

Configurar el nivel de sobrecompromiso en un tipo de máquina personalizado

Para crear una máquina virtual de inquilino único con recursos de CPU disponibles para sobrecompromiso en un tipo de máquina personalizado, reemplace el valor del campo machineType con zones/zone/machineTypes/custom- CPUS - MEMORY , reemplazando CPUS con la cantidad de CPU y MEMORY con la cantidad de memoria, en megabytes, para el tipo de máquina personalizada.

Actualizar el nivel de sobrecompromiso de la CPU

Los siguientes procedimientos le muestran cómo actualizar el nivel de sobreasignación de CPU de una máquina virtual de inquilino único.

nube de gcloud

  1. Para modificar el nivel de sobreasignación de CPU de una VM que se está ejecutando, primero debe detener la VM. Para detener una VM, usa el comando gcloud compute instances stop de la siguiente manera:

    gcloud compute instances stop VM_NAME
    

    Reemplace VM_NAME con el nombre de la instancia que desea detener.

  2. Para actualizar el nivel de sobrecompromiso de CPU de una VM de único inquilino, usa el comando gcloud compute instances set-scheduling de la siguiente manera:

    gcloud compute instances set-scheduling VM_NAME \
      --min-node-cpu=MIN_VCPUS

    Reemplace lo siguiente:

    • VM_NAME : el nombre de la VM de único inquilino para modificar el nivel de sobrecompromiso de la CPU.

    • MIN_VCPUS : la cantidad mínima de vCPU que se garantiza que estarán disponibles para esta VM.

DESCANSAR

  1. Para modificar el nivel de sobreasignación de CPU de una VM que se está ejecutando, primero debe detener la VM. Para detener una VM, cree una solicitud POST utilizando el método instances.stop de la siguiente manera:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID de su proyecto .

    • ZONE : la zona para esta solicitud.

    • VM_NAME : el nombre de la VM de único inquilino para modificar el nivel de sobrecompromiso de la CPU.

  2. Para actualizar el nivel de sobrecompromiso de CPU de una máquina virtual de único inquilino, use el método instances.setScheduling de la siguiente manera:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
    {
    "minNodeCpus":MIN_VCPUS
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID de su proyecto .

    • ZONE : la zona para esta solicitud.

    • VM_NAME : el nombre de la VM de único inquilino para modificar el nivel de sobrecompromiso de la CPU.

    • MIN_VCPUS : la cantidad mínima de vCPU que se garantiza que estarán disponibles para esta VM.

Deshabilite el compromiso excesivo de CPU para máquinas virtuales de único inquilino

Los siguientes procedimientos le muestran cómo deshabilitar el compromiso excesivo de CPU de una máquina virtual de inquilino único.

nube de gcloud

En el siguiente ejemplo se muestra cómo usar el comando gcloud compute instances set-scheduling para deshabilitar el compromiso excesivo de CPU de una máquina virtual de inquilino único.

gcloud compute instances set-scheduling VM_NAME \
  --clear-min-node-cpu

Reemplace lo siguiente:

  • VM_NAME : el nombre de la VM de único inquilino para deshabilitar el compromiso excesivo de la CPU.

DESCANSAR

El siguiente ejemplo muestra cómo utilizar el comando instances.setScheduling para deshabilitar el compromiso excesivo de CPU de una máquina virtual de inquilino único.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling
{
  "minNodeCpus":null
}

Reemplace lo siguiente:

  • PROJECT_ID : el ID de su proyecto .

  • ZONE : la zona para esta solicitud.

  • VM_NAME : el nombre de la VM de único inquilino para deshabilitar el compromiso excesivo de la CPU.

Ver uso de CPU

Para comprobar el uso de CPU de las máquinas virtuales de único inquilino en un grupo de nodos de único inquilino, haga lo siguiente:

  1. En la consola de Google Cloud, vaya a la página Nodos de único inquilino .

    Ir a nodos de único inquilino

  2. Haga clic en Grupos de nodos .

  3. Haga clic en el grupo de nodos de único inquilino que contiene el nodo de único inquilino que tiene la máquina virtual con CPU sobrecomprometidas.

  4. Haga clic en el nodo de único inquilino que tiene la máquina virtual con CPU sobrecomprometidas.

  5. Bajo el nombre del nodo de único inquilino, vea el uso de CPU , el tipo de sobreasignación de CPU y el uso mínimo de CPU .

    • El uso de CPU muestra el total del número máximo de CPU para todas las máquinas virtuales en este nodo de único inquilino dividido por el número de CPU especificado por el tipo de nodo de único inquilino.

      La cantidad de CPU en el nodo disponibles para sobreasignación es el numerador menos el denominador, y el nivel de sobreasignación es el cociente del numerador y el denominador.

    • El uso mínimo de CPU muestra la suma de la cantidad mínima de CPU asignadas para todas las máquinas virtuales en un nodo de único inquilino dividida por la cantidad de CPU especificada por el tipo de nodo.

Optimice los niveles de sobrecompromiso de la CPU

Para ayudar a optimizar el ajuste de los niveles de sobrecompromiso de la CPU, Compute Engine proporciona la métrica Tiempo de espera del programador . La métrica Tiempo de espera del programador indica el tiempo de espera agregado para todas las vCPU en la VM y le ayuda a determinar el impacto del compromiso excesivo de la CPU en el rendimiento de la VM.

La sensibilidad de la carga de trabajo varía, pero una regla general es utilizar 20 milisegundos de tiempo de espera del programador acumulado por segundo (20 msps) como tiempo de espera máximo para cada vCPU. Por ejemplo, si una máquina virtual está configurada para 8 vCPU, entonces un umbral empírico es 160 msps, lo que da como resultado un tiempo de espera promedio aceptable del programador de 20 msps por vCPU. Los requisitos de rendimiento de su carga de trabajo dictarán en última instancia los umbrales aceptables.

  1. En la consola de Google Cloud, vaya a la página Monitoreo .

    Ir a Monitoreo

  2. Haga clic en Explorador de métricas .

  3. En el campo Tipo de recurso , ingrese Instancia de VM .

  4. En el campo Métrica , ingrese Tiempo de espera del programador .

  5. Opcionalmente, configure alertas para activar alertas para umbrales de tiempo de espera de VM haciendo clic en Alertas .

¿Qué sigue?