El exceso de compromiso de CPU en nodos de usuario único te permite programar instancias que puedan compartir sus ciclos de CPU libres entre sí. Esto te permite aprovisionar en exceso recursos de nodo de usuario único y programar más CPU de VM en un nodo de usuario único de lo que suele estar disponibles. El exceso de compromiso de CPU es valioso, en especial, para cargas de trabajo que no se usan lo suficiente, pero pueden experimentar aumentos de actividad que no estén relacionados del todo.
El exceso de compromiso de CPU puede ayudarte a reducir los costos por VM, ya que distribuye el costo de un nodo de usuario único en más VM. También puede reducir los costos de licencias por VM cuando se usan licencias por socket o por núcleo.
Las VM con CPU con exceso de compromiso pueden usar recursos de CPU que no se usan de las siguientes maneras:
Si un nodo de usuario único no está lleno, las VM con exceso de compromiso pueden utilizar núcleos no asignados.
Si otra VM en un nodo de usuario único no usa todos sus recursos de CPU, por ejemplo, porque la CPU está inactiva, una VM con exceso de compromiso puede usar esos recursos de CPU.
Nivel de exceso de compromiso
Puedes especificar el valor para la cantidad mínima de CPU que se asignan a una VM cuando creas una VM o después de detener una VM. El nivel de exceso de compromiso representa la cantidad mínima de subprocesos de CPU subyacentes que se garantiza que estarán disponibles para una VM. Si la VM tiene más CPU virtuales que subprocesos subyacentes disponibles, las CPU virtuales de la VM comparten los recursos de procesamiento subyacentes y se ejecutan con un rendimiento degradado.
Puedes configurar este valor para cada VM, lo que te permite aprovisionar VM con diferentes proporciones de exceso de compromiso de CPU en un solo nodo de usuario único. Los valores más bajos reducen los requisitos de capacidad a costa del rendimiento potencial si se producen aumentos de actividad correlacionados. Determinar un valor óptimo para la cantidad mínima de CPU requiere comprender el uso de la carga de trabajo y la modificación iterativa del valor.
Cuando establezcas este valor, ten en cuenta lo siguiente:
Si no estableces el valor para la cantidad mínima de CPU o si estableces 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 exceso de compromiso permitida de la VM será 1.0. Con una proporción de exceso de compromiso de 1.0, todas las CPU son accesibles solo para esta VM, y no hay recursos de CPU disponibles que puedan ser de exceso de compromiso para otras VM.
La cantidad mínima de CPU no puede ser mayor que la cantidad de CPU que especifica el tipo de máquina de la VM.
La suma de los valores de la cantidad mínima de CPU para todas las VM en un nodo de usuario único no puede exceder la capacidad de CPU de ese tipo de nodo de usuario único, que en el tipo de nodo
n1-node-96-624
es 96.
El valor de la cantidad de CPU que especifica el tipo de máquina de la VM es un valor estático y representa la cantidad de CPU que una VM puede alcanzar en un aumento de actividad a partir de una cantidad mínima si esas CPU están disponibles. Si necesitas una cantidad de CPU diferente de la que proporcionan los tipos de máquinas fijos, puedes usar un tipo personalizado de máquina.
Consideraciones
Antes de configurar los niveles de exceso de compromiso de la CPU para las VM, considera la importancia de tu carga de trabajo. Las cargas de trabajo menos críticas, como las de desarrollo y de prueba, pueden tolerar niveles de exceso de compromiso más altos. Es posible que las cargas de trabajo más críticas, como un sistema de pagos de producción, no toleren tanto exceso de compromiso o ninguno.
También considera el uso de tu carga de trabajo. Las cargas de trabajo con alto uso de CPU no son buenas opciones para el exceso de compromiso de CPU porque no cuentan con ciclos de uso libres con el fin de que otras VM con exceso de compromiso las utilicen. Además, las cargas de trabajo con un uso de CPU de promedio bajo, pero con un uso máximo bajo, podrían beneficiarse de tipos de máquinas de diferentes tamaños.
El uso de exceso de compromiso de CPU beneficia las cargas de trabajo con picos sin correlación que tienen un uso máximo alto y un uso de promedio bajo porque es más probable que estas tengan recursos de CPU disponibles para compartir entre VM cuando algunas VM necesiten aumentar la actividad de su uso. Si todas las VM de un host aumentan su actividad a la vez, el host no tendrá recursos suficientes para las VM.
Limitaciones
- Limitaciones de las cargas de trabajo
El exceso de compromiso de CPU es más adecuado para cargas de trabajo sin requisitos de rendimiento estrictos, por ejemplo, infraestructuras de escritorio virtual y cargas de trabajo de desarrollo y prueba.
Es posible que los niveles altos de exceso de compromiso de CPU no sean adecuados para las cargas de trabajo sensibles al rendimiento.
Para las cargas de trabajo con un uso promedio y máximo que es siempre bajo, Google recomienda el redimensionamiento. Es decir, en lugar de exceder el compromiso de CPU, te recomendamos que modifiques el tamaño de la instancia de VM para que coincida con los requisitos de recursos de esa carga de trabajo.
Si tus instancias tienen demasiado exceso de compromiso, muévelas a otro nodo de usuario único.
- Limitaciones del tipo de máquina
Solo puedes exceder el compromiso de CPU en los siguientes casos:
VM de la serie de máquina N1 que se aprovisionan en grupos de nodos según el tipo de nodo
n1-node-96-624
VM de serie de máquina N2 que se aprovisionan en grupos de nodos según los siguientes tipos de nodos:
n2-node-80-640
n2-node-128-864
- Limitaciones del nivel de exceso de compromiso
Solo puedes configurar la CPU mínima en cada nodo de usuario único para la mitad de las CPU de la VM, lo que permite una proporción máxima de exceso de compromiso de nodo de usuario único de 2.0.
- Limitaciones de programación de VM
Los grupos de nodos de usuario único basados en plantillas de nodo que no están configurados para el exceso de compromiso de CPU no permiten el aprovisionamiento de VM que tengan habilitado el exceso de compromiso de CPU. Es decir, no puedes programar una VM con una cantidad mínima especificada de CPU en un grupo de nodos de usuario único que no está configurado para el exceso de compromiso de CPU.
Cuota
La cuota de CPU se basa en la cantidad de CPU virtuales del tipo de nodo de usuario único, no en la cantidad máxima posible de CPU virtuales disponibles para el exceso de compromiso.
Costos
En el caso de los nodos de usuario único que tienen un exceso de compromiso de CPU seleccionado en su plantilla de nodo, se cobra un 25% adicional. Este cargo se suma al recargo del 10% por ejecutar VM en nodos de usuario único. El recargo de exceso de compromiso de CPU es fijo, sin importar el nivel de exceso de compromiso de CPU ni cuántas VM estén programadas en el nodo de usuario único.
Los nodos de usuario único ofrecen descuentos por compromiso de uso. Los descuentos por uso continuo están disponibles para el recargo de usuario único y el recargo de exceso de compromiso de CPU.
Para estimar el costo de ejecutar VM en nodos de usuario único, consulta la calculadora de precios.
Configura VM de usuario único para el exceso de compromiso
A fin de configurar VM de usuario único con el objetivo de que los recursos de CPU estén disponibles para el exceso de compromiso, haz lo siguiente:
Crea una plantilla de nodo de usuario único que tenga habilitado el exceso de compromiso de CPU. Debes habilitar el exceso de compromiso de CPU mientras creas la plantilla de nodo. No puedes habilitar el exceso de compromiso de CPU después de crear una plantilla de nodo.
Crea un grupo de nodos de usuario único basado en la plantilla de nodo de usuario único que tenga habilitado el exceso de compromiso de CPU.
Crea una VM y haz lo siguiente:
Elige 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 en un aumento de actividad a partir de la cantidad mínima de CPU si este número es menor que la que especifica el tipo de máquina.
Puedes elegir un tipo de máquina diferente para cada VM en un nodo de usuario único, siempre que no excedas la capacidad de CPU y memoria del nodo de usuario único.
Especifica la cantidad mínima de CPU para asignar a esa VM única o usa un grupo de instancias administrado a fin de crear varias VM que tengan el mismo nivel de exceso de compromiso de CPU.
Antes de comenzar
- Crea una plantilla de nodo de usuario único y especifica
--cpu-overcommit-type=enabled
. - Crea un grupo de nodos de usuario único basado en la plantilla de nodos de usuario único que tenga habilitado el exceso de compromiso de CPU.
-
Configura la autenticación si aún no lo hiciste.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Ve a la página Nodos de usuario único.
Haz clic en Grupos de nodos.
Haz clic en el grupo de nodos de usuario único en el que deseas crear una VM.
Haz clic en Crear instancia.
Especifica el Nombre, la Región y la Zona para la VM.
En Configuración de la máquina, elige un Tipo de máquina fijo o personalizado con al menos 4 CPU virtuales.
En Exceso de compromiso de CPU, selecciona Habilitar el exceso de compromiso de CPU.
En Cantidad mínima de CPU virtuales asignadas, ajusta el control deslizante o ingresa de forma manual la cantidad de CPU virtuales para especificar el nivel de exceso de compromiso de las CPU en esta VM.
Haz clic en Crear a fin de crear una instancia de VM que tenga recursos de CPU disponibles para el exceso de compromiso.
VM_NAME
: es el nombre de la VM que tendrá un exceso de compromiso de CPU.MACHINE_TYPE
: es el tipo de máquina en el que se aprovisionará la VM de usuario único. La cantidad de CPU que especifica el tipo de máquina es la cantidad máxima de CPU que puede alcanzar la VM en un aumento de actividad desde MIN_VCPUS.MIN_VCPUS
: es la cantidad mínima de CPU virtuales garantizadas para esta VM.GROUP_NAME
: es el nombre del grupo de nodos de usuario único en el que aprovisionará la VM.PROJECT_ID
: es el ID de tu proyecto.ZONE
: es la zona para esta solicitud.MACHINE_TYPE_ZONE
: es la zona que aloja el tipo de máquina.MACHINE_TYPE
: es el tipo de máquina en el que se aprovisionará la VM de usuario único. La cantidad de CPU que especifica el tipo de máquina es la cantidad máxima de CPU que puede alcanzar la VM en un aumento de actividad desde MIN_VCPUS.VM_NAME
: es el nombre de la VM de usuario único en la que habrá un exceso de compromiso de CPU.MIN_VCPUS
: es la cantidad mínima de CPU virtuales garantizadas para esta VM.GROUP_NAME
: es el nombre del grupo de nodos de usuario único en el que aprovisionará la VM.Para modificar el nivel de exceso de compromiso de CPU de una VM que se ejecuta, primero debes detener la VM. Para detener una VM, usa el comando
gcloud compute instances stop
de la siguiente manera:gcloud compute instances stop VM_NAME
Reemplaza
VM_NAME
por el nombre de la instancia que deseas detener.Para actualizar el nivel de exceso de compromiso de CPU de una VM de usuario único, usa el comando
gcloud compute instances set-scheduling
de la siguiente manera:gcloud compute instances set-scheduling VM_NAME \ --min-node-cpu=MIN_VCPUS
Reemplaza lo siguiente:
VM_NAME
: es el nombre de la VM de usuario único que se usa para modificar el nivel de exceso de compromiso de CPU.MIN_VCPUS
: es la cantidad mínima de CPU virtuales garantizadas para esta VM.
Para modificar el nivel de exceso de compromiso de CPU de una VM que se ejecuta, primero debes detener la VM. Para detener una VM, crea una solicitud
POST
mediante el métodoinstances.stop
de la siguiente manera:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
Reemplaza lo siguiente:
PROJECT_ID
: es el ID de tu proyecto.ZONE
: es la zona para esta solicitud.VM_NAME
: es el nombre de la VM de usuario único que se usa para modificar el nivel de exceso de compromiso de CPU.
Para actualizar el nivel de exceso de compromiso de CPU de una VM de usuario único, usa 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 }
Reemplaza lo siguiente:
PROJECT_ID
: es el ID de tu proyecto.ZONE
: es la zona para esta solicitud.VM_NAME
: es el nombre de la VM de usuario único que se usa para modificar el nivel de exceso de compromiso de CPU.MIN_VCPUS
: es la cantidad mínima de CPU virtuales garantizadas para esta VM.
VM_NAME
: Es el nombre de la VM de usuario único que inhabilitará el exceso de compromiso de CPU.PROJECT_ID
: es el ID de tu proyecto.ZONE
: es la zona para esta solicitud.VM_NAME
: Es el nombre de la VM de usuario único que inhabilitará el exceso de compromiso de CPU.En la consola de Google Cloud, ve a la página Nodos de usuario único.
Haz clic en Grupos de nodos.
Haz clic en el grupo de nodos de usuario único que contiene el nodo de usuario único que tiene la VM con exceso de compromiso de CPU.
Haz clic en el nodo de usuario único que tiene la VM con exceso de compromiso de CPU.
En el nombre del nodo de usuario único, consulta el Uso de CPU, el Tipo de exceso de compromiso de CPU y la Utilización mínima de CPU.
El Uso de CPU muestra la cantidad máxima de CPU para todas las VM en este nodo de usuario único dividida por la cantidad de CPU especificadas por el tipo de nodo de usuario único.
La cantidad de CPU en el nodo disponible para el exceso de compromiso es el numerador menos el denominador, y el nivel de exceso de compromiso es el cociente del numerador y el denominador
La Utilización mínima de CPU muestra la suma de la cantidad mínima de CPU asignadas para todas las VM en un nodo de usuario único dividida por la cantidad de CPU que especifica el tipo de nodo.
En la consola de Google Cloud, ve a la página Supervisión.
Haga clic en Explorador de métricas.
En el campo Tipo de recurso, ingresaInstancia de VM.
En el campo Métrica, ingresa Tiempo de espera del programador.
De manera opcional, haz clic en Alertas si deseas configurar alertas a fin de activarlas para los umbrales de tiempo de espera de VM.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Configura el nivel de exceso de compromiso de CPU
En los siguientes procedimientos, se muestra cómo crear una VM de usuario único con recursos de CPU disponibles para el exceso de compromiso. Si necesitas modificar el nivel de exceso de compromiso de CPU de una VM que se está ejecutando, primero debes detener la VM.
Console
En la consola de Google Cloud, crea una VM de usuario único en un grupo de nodos de usuario único creado a partir de una plantilla de nodo de usuario único que tenga habilitado el exceso de compromiso de CPU:
gcloud
En el siguiente ejemplo, se muestra cómo usar el comando
gcloud compute instances create
a fin de crear una VM de usuario único en un tipo de máquina fijo con recursos de CPU disponibles para el exceso de compromiso.gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --min-node-cpu=MIN_VCPUS \ --node-group=GROUP_NAME
Reemplaza lo siguiente:
Configura el nivel de exceso de compromiso en un tipo personalizado de máquina
A fin de crear una VM de usuario único con recursos de CPU disponibles para un exceso de compromiso en un tipo personalizado de máquina, omite la marca
--machine-type
y, en su lugar, usa las marcas--custom-cpu
y--custom-memory
a fin de especificar la cantidad de CPU y de memoria, en gigabytes, para la máquina personalizada.REST
En el siguiente ejemplo, se muestra cómo usar el comando
instances.insert
a fin de crear una VM de usuario único en un tipo de máquina fijo con recursos de CPU disponibles para el exceso de compromiso.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" ] } ] }, ... }
Reemplaza lo siguiente:
Configura el nivel de exceso de compromiso en un tipo personalizado de máquina
A fin de crear una VM de usuario único con recursos de CPU disponibles para un exceso de compromiso en un tipo personalizado de máquina, reemplaza el valor del campo
machineType
porzones/zone/machineTypes/custom-CPUS-MEMORY
, CPUS por la cantidad de CPU, y MEMORY con la cantidad de memoria, en megabytes, para el tipo personalizado de máquina.Actualiza el nivel de exceso de compromiso de CPU
En los siguientes procedimientos, se muestra cómo actualizar el nivel de exceso de compromiso de CPU de una VM de usuario único.
gcloud
REST
Inhabilita el exceso de compromiso de CPU para VM de usuario único
En los siguientes procedimientos, se muestra cómo inhabilitar el exceso de compromiso de CPU de una VM de usuario único.
gcloud
En el siguiente ejemplo, se muestra cómo usar el comando
gcloud compute instances set-scheduling
para inhabilitar el exceso de compromiso de CPU de una VM de usuario único.gcloud compute instances set-scheduling VM_NAME \ --clear-min-node-cpu
Reemplaza lo siguiente:
REST
En el siguiente ejemplo, se muestra cómo usar el comando
instances.setScheduling
para inhabilitar el exceso de compromiso de CPU de una VM de usuario único.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling { "minNodeCpus":null }
Reemplaza lo siguiente:
Visualiza el uso de CPU
Para verificar el uso de CPU de las VMs de usuario único en un grupo de nodos de usuario único, haz lo siguiente:
Optimiza los niveles de exceso de compromiso de CPU
Para ayudar a optimizar el ajuste de los niveles de exceso de compromiso de 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 total para todas las CPU virtuales en la VM y te ayuda a determinar el impacto del exceso de compromiso de CPU en el rendimiento de la VM.
La sensibilidad de la carga de trabajo varía, pero una regla general es usar 20 milisegundos de tiempo de espera del programador acumulado por segundo (20 ms/s) como el tiempo de espera máximo para cada CPU virtual. Por ejemplo, si una VM está configurada en 8 CPU virtuales, entonces un umbral de regla general es 160 ms/s, lo que da como resultado un tiempo de espera del programador promedio aceptable de 20 ms/s por CPU virtual. Los requisitos de rendimiento de la carga de trabajo dictarán, en última instancia, umbrales aceptables.
¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-08-22 (UTC)
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema de traducción" },{ "type": "thumb-down", "id": "otherDown", "label":"Otro" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Fácil de comprender" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Resolvió mi problema" },{ "type": "thumb-up", "id": "otherUp", "label":"Otro" }] -