Personaliza la cantidad de núcleos de CPU visibles


Personalizar la cantidad de núcleos de CPU visibles puede proporcionar un control detallado sobre los costos de licencias, mientras se mantiene el rendimiento de las herramientas de redes y los discos persistentes. Esta personalización reduce la cantidad de CPU virtuales disponibles para la instancia de máquina virtual (VM). No cambia el tipo ni el precio de la máquina.

Compute Engine implementa cada CPU virtual (vCPU) como un subproceso de hardware único que se ejecuta en un núcleo de CPU físico. A fin de reducir la cantidad de CPU virtuales que están disponibles para una VM, Compute Engine te permite personalizar la cantidad de núcleos de CPU visibles.

Los núcleos visibles son los núcleos de CPU en el hardware subyacente que tus VM consumen. De forma predeterminada, la cantidad de núcleos de CPU que son visibles para una VM es la cantidad de CPU virtuales en el tipo de máquina dividida por la cantidad de subprocesos por núcleo:

  • Núcleos de CPU visibles = CPU virtuales en el tipo de máquina / subprocesos por núcleo

Por ejemplo, el tipo de máquina c2-standard-60 especifica 60 CPU virtuales. Si suponemos que el valor predeterminado es de 2 subprocesos por núcleo, la cantidad de núcleos de CPU visibles es 30. Si reduces el número de núcleos visibles de 30 a 20, la cantidad de CPU virtuales funcionales se reduce de 60 a 40.

Considera personalizar la cantidad de núcleos de CPU visibles si se aplican las siguientes condiciones:

Antes de personalizar la cantidad de CPU virtuales disponibles para una VM, considera usar un tipo personalizado de máquina.

Roles obligatorios

Para obtener los permisos que necesitas para personalizar la cantidad de núcleos de CPU visibles, pídele a tu administrador que te otorgue el rol Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) de IAM en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

Este rol predefinido contiene los permisos necesarios para personalizar la cantidad de núcleos de CPU visibles. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para personalizar la cantidad de núcleos de CPU visibles:

  • Para personalizar la cantidad de núcleos de CPU visibles durante la creación de la VM:
    • compute.instances.create en el proyecto
    • Para usar una imagen personalizada con el fin de crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
    • Si deseas usar una instantánea para crear la VM, sigue estos pasos: compute.snapshots.useReadOnly en la instantánea
    • Para usar una plantilla de instancias a fin de crear la VM, haz lo siguiente: compute.instanceTemplates.useReadOnly en la plantilla de instancias
    • Para asignar una red heredada a la VM: compute.networks.use en el proyecto
    • Si deseas especificar una dirección IP estática para la VM; compute.addresses.use en el proyecto
    • Para asignar una dirección IP externa a la VM cuando se usa una red y punto heredado; compute.networks.useExternalIp en el proyecto
    • A fin de especificar una subred para la VM: compute.subnetworks.use en el proyecto o en la subred elegida
    • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida
    • A fin de configurar los metadatos de la instancia de VM para la VM y los puntos, sigue estos pasos: compute.instances.setMetadata en el proyecto
    • A fin de configurar etiquetas para la VM y los puntos; compute.instances.setTags en la VM
    • Si deseas configurar etiquetas para la VM, haz lo siguiente: compute.instances.setLabels en la VM
    • A fin de configurar una cuenta de servicio para que la VM la usecompute.instances.setServiceAccount en la VM
    • Si deseas crear un disco nuevo para la VM: compute.disks.create en el proyecto
    • Para conectar un disco existente en modo de solo lectura o de lectura y escritura, haz lo siguiente: compute.disks.use en el disco
    • Para conectar un disco existente en modo de solo lectura y dos puntos, sigue estos pasos: compute.disks.useReadOnly en el disco
  • Para personalizar la cantidad de núcleos de CPUs visibles en un grupo de VM mediante una plantilla de instancias: necesitas todos los permisos que usarías durante la creación de la VM y el compute.instanceTemplates.create en el proyecto.

También puedes obtener estos permisos con funciones personalizadas o con otras funciones predefinidas

CPU virtuales y cantidad de subprocesos por núcleo

La cantidad total de CPU virtuales en un tipo de máquina es la cantidad de núcleos de CPU visibles multiplicada por la cantidad de subprocesos por núcleo. Para la mayoría de las series de máquinas, la cantidad de subprocesos por núcleo es 2, pero puedes configurar la cantidad de subprocesos por núcleo de forma manual como 1.

En la siguiente tabla, se muestra cómo se relacionan los núcleos de CPU visibles, la cantidad de subprocesos por núcleo y el total de CPU virtuales disponibles con el tipo de máquina c2-standard-60 como ejemplo.

Tipo de máquina Núcleos de CPU visibles Subprocesos por núcleo CPU virtuales disponibles
c2-standard-60 30 (predeterminada) 2 (predeterminada) 60
c2-standard-60 30 (predeterminada) 1 30
c2-standard-60 20 2 (predeterminada) 40
c2-standard-60 20 1 20

Consideraciones sobre el rendimiento

Reducir la cantidad de núcleos visibles puede afectar el rendimiento de la VM.

Disco persistente

  • Los límites de rendimiento de los discos persistentes dependen del tipo de máquina y no se ven afectados por la cantidad de núcleos de CPU visibles. Para obtener más información, consulta Rendimiento del almacenamiento en bloque.

Salida de Herramientas de redes

  • Los límites de ancho de banda de salida de la red coinciden con el tipo de máquina y no se ven afectados por la cantidad de núcleos de CPU visibles. Sin embargo, el rendimiento de las herramientas de redes varía según la cantidad de CPU virtuales a las que puede acceder la VM. Por ejemplo, es posible que un tipo de máquina n2-standard-16 con un núcleo de CPU visible no pueda usar por completo una conexión de 32 Gbps.

Precios

Reducir la cantidad de núcleos visibles puede afectar el costo de tus VMs.

Costos de licencias del sistema operativo

  • Puedes reducir los costos de licencia para algunos sistemas operativos si reduces la cantidad de núcleos de CPU visibles. Los sistemas operativos aplicables son los que te cobran por cada CPU virtual que está disponible para la VM, por ejemplo, Windows Server y SQL Server. Si deseas obtener más información sobre las opciones de licencias para estos sistemas operativos en Compute Engine, consulta Licencias de Microsoft.

Costos, cuota y capacidad de las VMs

  • Los costos, la cuota y la capacidad de las VMs siguen siendo las mismas cuando personalizas la cantidad de núcleos de CPU visibles porque Compute Engine cobra, realiza un seguimiento de la cuota y asigna espacio en los tipos de máquinas para las VMs como si usaran la cantidad de núcleos de CPU del tipo de máquina. Si deseas obtener más información sobre cómo Compute Engine factura las VMs, consulta Precios de instancias de VM.

Limitaciones

  • No puedes personalizar la cantidad de núcleos de CPU visibles mientras una VM está en estado RUNNING. Para obtener más información sobre los estados de las VM, consulta la página Ciclo de vida de la instancia de VM.

  • En la consola de Google Cloud, cuando la cantidad de núcleos visibles se reduce, la métrica de uso de CPU no puede escalar verticalmente al 100%. Se limita a la cantidad de núcleos de CPU visibles dividida por la cantidad máxima de núcleos de CPU.

Tipos de máquinas admitidos y valores válidos para cada uno

Muchos tipos de máquinas admiten la personalización de la cantidad de núcleos de CPU visibles. El valor de la cantidad de núcleos de CPU visibles debe ser un número entero. El valor máximo es la cantidad de CPU virtuales (o GPU para los tipos de máquinas optimizados para aceleradores) del tipo de máquina dividida por la cantidad de subprocesos por núcleo de la VM.

En la siguiente tabla, se muestran los tipos de máquinas que admiten esta personalización, junto con los valores válidos correspondientes para los núcleos de CPU visibles de los tipos de máquinas en esas familias.

Familia de tipo de máquina Cantidad predefinido de CPU virtuales* Valores válidos para núcleos de CPU visibles
De uso general
C3D ≤ 180 Cualquiera
C3D 360 Múltiplos de 2
C3 4, 8, 22, 44 Múltiplos de 1
C3 88 Múltiplos de 2
C3 176 Múltiplos de 4
E2 ≤ 32 Cualquiera
N2 ≤ 32 Cualquiera
N2 > 32 Múltiplos de 2
N2D ≤ 24 Cualquiera
N2D > 24 Múltiplos de 2
N4 ≤ 80 Cualquiera
N1 ≤ 64 Cualquiera
N1 > 64 Múltiplos de 2
N1 (optimizada para TPU) 48 Cualquiera
N1 (optimizada para TPU) 96 Múltiplos de 2
Optimizada para el almacenamiento
Z3 88 Múltiplos de 2
Z3 176 Múltiplos de 4
Optimizadas para procesamiento
H3 88 Múltiplos de 4
C2 4, 8, 16, 30 Cualquiera
C2 60 Múltiplos de 2
Con optimización de memoria
M3 128 Múltiplos de 2
M3 32, 64 Cualquiera
M2 208 Múltiplos de 4
M2 416 Múltiplos de 8
M1 40 Cualquiera
M1 80, 96 Múltiplos de 2
M1 160 Múltiplos de 4
Con optimización de acelerador
A3 208 Múltiplos de 2
A2 ≤ 48 Cualquiera
A2 96 Múltiplos de 2
G2 ≤ 48 Cualquiera
G2 96 Múltiplos de 2
* El nombre de la mayoría de los tipos de máquina contiene la cantidad de CPUs virtuales. Sin embargo, para los tipos de máquinas optimizados para aceleradores A3 y A2, el nombre del tipo de máquina contiene la cantidad de GPUs predefinidas. Para ver el recuento de CPUs virtuales de los tipos de máquinas optimizados para aceleradores A3 y A2, revisa la documentación de la Familia de máquinas optimizada para aceleradores.

Personaliza la cantidad de núcleos de CPU visibles durante la creación de la VM

Para personalizar la cantidad de núcleos de CPU visibles mientras creas una sola VM, usa la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.

En el siguiente ejemplo, se muestra cómo crear una VM de SQL Server con una cantidad reducida de núcleos de CPU visibles.

Console

Para personalizar la cantidad de núcleos de CPU visibles mientras creas una VM, haz lo siguiente:

  • En Configuración de la máquina > Configuración avanzada > Recuento de núcleos visibles, selecciona la cantidad de núcleos visibles.

gcloud

Para crear una VM de SQL Server con una cantidad reducida de núcleos de CPU visibles, usa el siguiente comando gcloud compute instances create:

gcloud compute instances create VM_NAME \
    --image-project=windows-sql-cloud \
    --image-family=sql-ent-2019-win-2019 \
    --machine-type=MACHINE_TYPE \
    --visible-core-count=VISIBLE_CORE_COUNT \
    --zone=ZONE

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM

  • MACHINE_TYPE: un tipo de máquina compatible, por ejemplo, c2-standard-60.

  • VISIBLE_CORE_COUNT: la cantidad de núcleos de CPU visibles. Por ejemplo, cuando usas el tipo de máquina c2-standard-60, si se establece en 20 y la cantidad de subprocesos por núcleo es 2, 40 de las 60 CPU son visibles.

  • ZONE: la zona en la que se creará la VM.

REST

Para crear una VM de SQL Server con una cantidad reducida de núcleos de CPU visibles, usa el siguiente método instances.insert:

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

{
  "name": "VM_NAME",
  ...
  "advanced_machine_features": {
    ...
    "visibleCoreCount": "VISIBLE_CORE_COUNT"
  },
  ...
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto.

  • ZONE: la zona en la que se creará la VM.

  • VM_NAME: El nombre de la VM

  • VISIBLE_CORE_COUNT: la cantidad de núcleos de CPU visibles. Por ejemplo, cuando usas el tipo de máquina c2-standard-60, si se establece en 20 y la cantidad de subprocesos por núcleo es 2, 40 de las 60 CPU son visibles.

Personaliza la cantidad de núcleos de CPU visibles en un grupo de VM mediante una plantilla de instancias

Para personalizar la cantidad de núcleos de CPU visibles mientras creas una VM mediante una plantilla de instancias, usa la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.

En el siguiente ejemplo, se muestra cómo crear un grupo de VM de SQL Server idénticas con una cantidad reducida de núcleos de CPU visibles mediante una plantilla de instancias.

Console

Para personalizar la cantidad de núcleos de CPU visibles mientras creas una plantilla de instancias, haz lo siguiente:

  • En Configuración de la máquina > Configuración avanzada > Recuento de núcleos visibles, selecciona la cantidad de núcleos visibles.

gcloud

  1. Crea una plantilla de instancias para las VM de SQL Server, cada una con una cantidad reducida de núcleos de CPU visibles, mediante el siguiente comando gcloud compute instance-templates create:

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
       --image-project=windows-sql-cloud \
       --image-family=sql-ent-2019-win-2019 \
       --machine-type=MACHINE_TYPE \
       --visible-core-count=VISIBLE_CORE_COUNT \
       --zone=ZONE
    

    Reemplaza lo siguiente:

    • INSTANCE_TEMPLATE_NAME: es el nombre de la plantilla de instancias.

    • MACHINE_TYPE: un tipo de máquina compatible, por ejemplo, c2-standard-60.

    • VISIBLE_CORE_COUNT: la cantidad de núcleos de CPU visibles. Por ejemplo, cuando usas el tipo de máquina c2-standard-60, si se establece en 20 y la cantidad de subprocesos por núcleo es 2, 40 de las 60 CPU son visibles.

    • ZONE: Es la zona en la que se creará la VM.

  2. Crea las VM de SQL Server, cada una con una cantidad reducida de núcleos de CPU visibles, mediante el siguiente comando gcloud compute instances create:

    gcloud compute instances create INSTANCE_NAMES \
       --source-instance-template=INSTANCE_TEMPLATE_NAME
    

    Reemplaza lo siguiente:

    • INSTANCE_NAMES: los nombres de las VM, separados por espacios, para crear a partir de la plantilla de instancias

    • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias a partir de la que se crearán las VM.

REST

  1. Crea una plantilla de instancias para las VM de SQL Server, cada una con una cantidad reducida de núcleos de CPU visibles, mediante el siguiente método instanceTemplates.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    
    {
     "name": "INSTANCE_TEMPLATE_NAME",
     ...
     "advanced_machine_features": {
       ...
       "visible_core_count": "VISIBLE_CORE_COUNT"
     },
     ...
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto.

    • INSTANCE_TEMPLATE_NAME: es el nombre de la plantilla de instancias.

    • VISIBLE_CORE_COUNT: la cantidad de núcleos de CPU visibles. Por ejemplo, cuando usas el tipo de máquina c2-standard-60, si se establece en 20 y la cantidad de subprocesos por núcleo es 2, 40 de las 60 CPU son visibles.

  2. Crea las VM de SQL Server, cada una con una cantidad reducida de núcleos de CPU visibles, mediante el siguiente método instances.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?sourceInstanceTemplate=INSTANCE_TEMPLATE_NAME
    
    {
     "name": "VM_NAME",
     ...
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto

    • ZONE: Es la zona en la que se creará la VM.

    • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias a partir de la que se crearán las VM.

    • VM_NAME: el nombre de la VM que se creará a partir de la plantilla de instancias.

Personaliza la cantidad de núcleos de CPU visibles

Para personalizar la cantidad de núcleos de CPU visibles en una VM existente, usa la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.

Si personalizaste la cantidad de núcleos de CPU visibles en un grupo de VM mediante una plantilla de instancias, debes crear una plantilla de instancias nueva y, luego, crear VM nuevas a partir de esa plantilla. Para obtener más información sobre las plantillas de instancias, consulta Plantillas de instancias.

Console

Para personalizar la cantidad de núcleos de CPU visibles en una VM existente, haz lo siguiente:

  1. Detenga la VM.

  2. En Configuración de la máquina > Configuración avanzada > Recuento de núcleos visibles, selecciona la cantidad de núcleos visibles.

  3. Reinicia la VM.

gcloud

Para actualizar el valor de la cantidad de núcleos de CPU visibles en una VM existente, sigue estos pasos. Para obtener más información, consulta Actualiza las propiedades de las instancias.

  1. Exporta las propiedades de VM existentes a un archivo mediante el comando gcloud compute instances export.

  2. En el archivo que contiene las propiedades exportadas, modifica o agrega el valor de lo siguiente:

    advancedMachineFeatures:
     visibleCoreCount: VISIBLE_CORE_COUNT
    
  3. Actualiza las propiedades de la VM mediante el comando gcloud compute instances update-from-file con --most-disruptive-allowed-action=RESTART.

REST

Para actualizar la cantidad de núcleos de CPU visibles de la VM, usa el siguiente método instances.update:

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART

{
  ...
  "advanced_machine_features": {
    ...
    "visible_core_count": "VISIBLE_CORE_COUNT"
  },
  ...
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto

  • ZONE: La zona que contiene la VM

  • VM_NAME: El nombre de la VM desde la que se exportarán las propiedades

  • VISIBLE_CORE_COUNT: la cantidad de núcleos de CPU visibles.

¿Qué sigue?