Personaliza la cantidad de núcleos de CPU visibles


Personalizar la cantidad de núcleos de CPU visibles puede proporcionar un control granular sobre los costos de licencia, manteniendo al mismo tiempo el rendimiento de las redes y los discos persistentes. Esta personalización reduce la cantidad de vCPU que están disponibles para la instancia de máquina virtual (VM); no cambia el tipo de máquina ni el precio.

Compute Engine implementa cada CPU virtual (vCPU) como un único subproceso de hardware que se ejecuta en un núcleo de CPU físico. Para reducir la cantidad de vCPU 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 consumen sus máquinas virtuales. De forma predeterminada, la cantidad de núcleos de CPU que son visibles para una VM es la cantidad de vCPU en el tipo de máquina dividida por la cantidad de subprocesos por núcleo :

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

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

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

Antes de personalizar la cantidad de vCPU que están disponibles para una máquina virtual, primero considere usar un tipo de máquina personalizada .

Roles requeridos

Para obtener los permisos que necesita para personalizar la cantidad de núcleos de CPU visibles, solicite a su administrador que le otorgue la función de IAM Compute Instance Admin (v1) ( roles/compute.instanceAdmin.v1 ) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Esta función predefinida contiene los permisos necesarios para personalizar la cantidad de núcleos de CPU visibles. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

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 VM:
    • compute.instances.create en el proyecto.
    • Para usar una imagen personalizada para crear la VM: compute.images.useReadOnly en la imagen
    • Para usar una instantánea para crear la VM: compute.snapshots.useReadOnly en la instantánea
    • Para usar una plantilla de instancia para crear la VM: compute.instanceTemplates.useReadOnly en la plantilla de instancia
    • Para asignar una red heredada a la VM: compute.networks.use en el proyecto
    • Para 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 heredada: compute.networks.useExternalIp en el proyecto
    • Para 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 VPC: compute.subnetworks.useExternalIp en el proyecto o en la subred elegida
    • Para configurar metadatos de instancia de VM para la VM: compute.instances.setMetadata en el proyecto
    • Para configurar etiquetas para la VM: compute.instances.setTags en la VM
    • Para configurar etiquetas para la VM: compute.instances.setLabels en la VM
    • Para configurar una cuenta de servicio para que la use la VM: compute.instances.setServiceAccount en la VM
    • Para crear un nuevo disco para la VM: compute.disks.create en el proyecto
    • Para conectar un disco existente en modo de solo lectura o lectura-escritura: compute.disks.use en el disco
    • Para conectar un disco existente en modo de solo lectura: compute.disks.useReadOnly en el disco
  • Para personalizar la cantidad de núcleos de CPU visibles en un grupo de máquinas virtuales mediante el uso de una plantilla de instancia: necesita todos los permisos que usaría durante la creación de la máquina virtual y el compute.instanceTemplates.create en el proyecto.

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

vCPU y número de subprocesos por núcleo

El total de vCPU 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 puede configurar manualmente la cantidad de subprocesos por núcleo en 1.

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

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

Consideraciones de rendimiento

Reducir la cantidad de núcleos visibles puede afectar el rendimiento de su 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, consulte Rendimiento del almacenamiento en bloque .

Salida de red

  • Los límites de ancho de banda de salida de 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 la red varía según la cantidad de vCPU 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 utilizar completamente una conexión de 32 Gbps.

Precios

Reducir la cantidad de núcleos visibles puede afectar el costo de sus máquinas virtuales.

Costos de licencia del sistema operativo

  • Puede reducir los costos de licencia para algunos sistemas operativos reduciendo la cantidad de núcleos de CPU visibles. Los sistemas operativos aplicables son aquellos que le cobran por cada vCPU que está disponible para la VM, por ejemplo, Windows Server y SQL Server. Para obtener más información sobre las opciones de licencia para estos sistemas operativos en Compute Engine, consulte Licencias de Microsoft .

Costos, cuotas y capacidad de VM

  • Los costos, la cuota y la capacidad de las VM siguen siendo los mismos cuando personalizas la cantidad de núcleos de CPU visibles porque Compute Engine cobra, rastrea la cuota y asigna espacio en los tipos de máquinas para las VM como si estuvieran usando la cantidad de núcleos de CPU del tipo de máquina. Para obtener más información sobre cómo factura Compute Engine las VM, consulta Precios de instancias de VM .

Limitaciones

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

  • En la consola de Google Cloud, cuando se reduce la cantidad de núcleos visibles, la métrica de utilización de la CPU no puede escalar hasta el 100 %. Está limitado al número de núcleos de CPU visibles dividido por el número máximo de núcleos de CPU.

Tipos de máquinas admitidas y valores válidos para cada una

Muchos tipos de máquinas admiten la personalización de la cantidad de núcleos de CPU visibles. El valor del recuento de núcleos de CPU visibles debe ser un número entero. El valor máximo es la cantidad de vCPU (o GPU para tipos de máquinas optimizadas para acelerador) en el tipo de máquina dividida por la cantidad de subprocesos por núcleo para la VM.

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

Familia de tipos de máquinas Recuento de vCPU predefinido * Valores válidos para núcleos de CPU visibles
Propósito general
C4 4, 8, 16, 32, 48 Cualquier
C4 96 Múltiplos de 2
C4 192 Múltiplos de 4
C3D ≤ 180 Cualquier
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
c3-*-metal 192 No compatible
E2 ≤ 32 Cualquier
N2 ≤ 32 Cualquier
N2 > 32 Múltiplos de 2
N2D ≤ 24 Cualquier
N2D > 24 Múltiplos de 2
N4 ≤ 80 Cualquier
N1 ≤ 64 Cualquier
N1 > 64 Múltiplos de 2
N1 (TPU optimizado) 48 Cualquier
N1 (TPU optimizado) 96 Múltiplos de 2
Almacenamiento optimizado
Z3 88 Múltiplos de 2
Z3 176 Múltiplos de 4
Optimizado para computación
H3 88 Múltiplos de 4
C2 4, 8, 16, 30 Cualquier
C2 60 Múltiplos de 2
Optimizado para memoria
M4 56 Múltiplos de 1
M4 112 Múltiplos de 2
M4 224 Múltiplos de 4
M3 128 Múltiplos de 2
M3 32, 64 Cualquier
M2 208 Múltiplos de 4
M2 416 Múltiplos de 8
M1 40 Cualquier
M1 80, 96 Múltiplos de 2
M1 160 Múltiplos de 4
Optimizado para acelerador
A4 224 Múltiplos de 2
A3 26, 52, 104, 208, 224 Múltiplos de 2
A2 ≤ 48 Cualquier
A2 96 Múltiplos de 2
G2 ≤ 48 Cualquier
G2 96 Múltiplos de 2
* El nombre de la mayoría de los tipos de máquinas contiene el recuento de vCPU. Sin embargo, para los tipos de máquinas optimizadas para acelerador que no sean G2, el nombre del tipo de máquina contiene el recuento de GPU predefinido. Para ver el recuento de vCPU para los tipos de máquinas optimizadas para acelerador, revise la documentación de la familia de máquinas optimizadas para acelerador .

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

Para personalizar la cantidad de núcleos de CPU visibles al crear una única VM, use la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.

El siguiente ejemplo muestra cómo crear una máquina virtual con SQL Server con una cantidad reducida de núcleos de CPU visibles.

Consola

Para personalizar la cantidad de núcleos de CPU visibles al crear una VM, haga lo siguiente:

  • En Configuración de la máquina > Configuraciones avanzadas > Recuento de núcleos visibles , seleccione el número de núcleos visibles.

nube de gcloud

Para crear una máquina virtual con SQL Server con una cantidad reducida de núcleos de CPU visibles, use 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

Reemplace 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 : el número de núcleos de CPU visibles. Por ejemplo, cuando se utiliza el tipo de máquina c2-standard-60 , si se establece en 20 y el número de subprocesos por núcleo es 2 , 40 de las 60 CPU son visibles.

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

DESCANSAR

Para crear una máquina virtual de SQL Server con una cantidad reducida de núcleos de CPU visibles, utilice 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"
  },
  ...
}

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto.

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

  • VM_NAME : el nombre de la VM.

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

Personalice la cantidad de núcleos de CPU visibles en un grupo de máquinas virtuales mediante una plantilla de instancia

Para personalizar la cantidad de núcleos de CPU visibles al crear una VM mediante una plantilla de instancia, use la consola de Google Cloud, la CLI de gcloud o la API de Compute Engine.

El siguiente ejemplo muestra cómo crear un grupo de máquinas virtuales con SQL Server idénticas con una cantidad reducida de núcleos de CPU visibles mediante una plantilla de instancia.

Consola

Para personalizar la cantidad de núcleos de CPU visibles al crear una plantilla de instancia, haga lo siguiente:

  • En Configuración de la máquina > Configuraciones avanzadas > Recuento de núcleos visibles , seleccione el número de núcleos visibles.

nube de gcloud

  1. Cree una plantilla de instancia para máquinas virtuales 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
    

    Reemplace lo siguiente:

    • INSTANCE_TEMPLATE_NAME : el nombre de la plantilla de instancia.

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

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

    • ZONE : la zona en la que se crearán las máquinas virtuales.

  2. Cree las máquinas virtuales 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
    

    Reemplace lo siguiente:

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

    • INSTANCE_TEMPLATE_NAME : el nombre de la plantilla de instancia desde la cual crear las máquinas virtuales.

DESCANSAR

  1. Cree una plantilla de instancia para máquinas virtuales 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"
     },
     ...
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto.

    • INSTANCE_TEMPLATE_NAME : el nombre de la plantilla de instancia.

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

  2. Cree las máquinas virtuales 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",
     ...
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto

    • ZONE : la zona para crear la VM en

    • INSTANCE_TEMPLATE_NAME : el nombre de la plantilla de instancia desde la cual crear las máquinas virtuales.

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

Personaliza la cantidad de núcleos de CPU visibles

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

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

Consola

Para personalizar la cantidad de núcleos de CPU visibles en una máquina virtual existente, haga lo siguiente:

  1. Detenga la máquina virtual.

  2. En Configuración de la máquina > Configuraciones avanzadas > Recuento de núcleos visibles , seleccione el número de núcleos visibles.

  3. Reinicie la máquina virtual.

nube de gcloud

Para actualizar el valor de la cantidad de núcleos de CPU visibles en una máquina virtual existente, siga los siguientes pasos. Para obtener más información, consulte Actualizar propiedades de instancia .

  1. Exporte las propiedades de la máquina virtual existente a un archivo mediante el comando gcloud compute instances export .

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

    advancedMachineFeatures:
     visibleCoreCount: VISIBLE_CORE_COUNT
    
  3. Actualice las propiedades de la máquina virtual mediante el comando gcloud compute instances update-from-file con --most-disruptive-allowed-action=RESTART .

DESCANSAR

Para actualizar el recuento de núcleos de CPU visibles de la VM, utilice 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"
  },
  ...
}

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto

  • ZONE : la zona que contiene la VM

  • VM_NAME : el nombre de la VM desde la cual exportar propiedades

  • VISIBLE_CORE_COUNT : el número de núcleos de CPU visibles

¿Qué sigue?