Personalizar el número de núcleos de CPU visibles


Personalizar el número de núcleos de CPU visibles puede proporcionar un control granular sobre los costes de las licencias, al tiempo que se mantiene el rendimiento de las redes y los discos persistentes. Esta personalización reduce el número de vCPUs disponibles para la instancia de máquina virtual (VM), pero no cambia el tipo de máquina ni el precio.

Compute Engine implementa cada CPU virtual (vCPU) como un único multihilo de hardware que se ejecuta en un núcleo de CPU física. Para reducir el número de vCPUs disponibles para una VM, Compute Engine te permite personalizar el número de núcleos de CPU visibles.

Los núcleos visibles son los núcleos de CPU del hardware subyacente que consumen tus máquinas virtuales. De forma predeterminada, el número de núcleos de CPU que puede ver una VM es el número de vCPUs del tipo de máquina dividido entre el número de hilos por núcleo:

  • Núcleos de CPU visibles = vCPUs del tipo de máquina/hilos por núcleo

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

Considera la posibilidad de personalizar el número de núcleos de CPU visibles si se dan las dos condiciones siguientes:

Antes de personalizar el número de vCPUs disponibles para una VM, te recomendamos que utilices un tipo de máquina personalizada.

Roles obligatorios

Para obtener los permisos que necesitas para personalizar el número de núcleos de CPU visibles, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para personalizar el número de núcleos de CPU visibles. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para personalizar el número de núcleos de CPU visibles, se necesitan los siguientes permisos:

  • Para personalizar el número de núcleos de CPU visibles durante la creación de la VM, siga estos pasos:
    • compute.instances.create en el proyecto
    • Para usar una imagen personalizada para crear la VM, haz clic en compute.images.useReadOnly en la imagen.
    • Para usar una captura para crear la VM, compute.snapshots.useReadOnly en la captura
    • Para usar una plantilla de instancia para crear la VM, haz clic en compute.instanceTemplates.useReadOnly en la plantilla de instancia.
    • Para asignar una red antigua a la VM, haz lo siguiente: compute.networks.use en el proyecto
    • Para especificar una dirección IP estática para la máquina virtual, compute.addresses.use en el proyecto
    • Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente: 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 de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida.
    • Para definir los metadatos de la instancia de VM de la VM: compute.instances.setMetadata en el proyecto,
    • Para definir etiquetas en la máquina virtual, compute.instances.setTags en la máquina virtual
    • Para definir etiquetas de la VM, compute.instances.setLabels en la VM
    • Para definir una cuenta de servicio que use la VM, haz lo siguiente en la VM: compute.instances.setServiceAccount
    • Para crear un disco para la VM compute.disks.create del proyecto, sigue estos pasos:
    • Para adjuntar un disco en modo de solo lectura o de lectura y escritura, haz lo siguiente: compute.disks.use en el disco
    • Para adjuntar un disco en modo de solo lectura, compute.disks.useReadOnly en el disco.
  • Para personalizar el número de núcleos de CPU visibles en un grupo de VMs mediante una plantilla de instancia, debes tener 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 roles personalizados u otros roles predefinidos.

vCPUs y el número de subprocesos por núcleo

El número total de vCPUs de un tipo de máquina es el número de núcleos de CPU visibles multiplicado por el número de hilos por núcleo. En la mayoría de las series de máquinas, el número de hilos por núcleo es 2, pero puedes definir manualmente el número de hilos por núcleo en 1.

En la siguiente tabla se muestra la relación entre los núcleos de CPU visibles, el número de hilos por núcleo y el total de vCPUs disponibles. Para ello, se usa el tipo de máquina c2-standard-60 como ejemplo.

Tipo de máquina Núcleos de CPU visibles Hilos por núcleo vCPUs 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 sobre el rendimiento.

En esta sección se explica cómo puede afectar al rendimiento de tu VM la reducción del número de núcleos visibles.

Disco persistente

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

Salida de red

Los límites de ancho de banda de la salida de red coinciden con el tipo de máquina y no se ven afectados por el número de núcleos de CPU visibles. Sin embargo, el rendimiento de la red varía en función del número de vCPUs a los 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 completamente una conexión de 32 Gbps.

Precios

En esta sección se explica cómo puede influir la reducción del número de núcleos visibles en el coste de tus VMs.

Costes de licencias de sistemas operativos

Puedes reducir los costes de licencia de algunos sistemas operativos disminuyendo el número de núcleos de CPU visibles. Los sistemas operativos aplicables son aquellos que te cobran por cada vCPU disponible para la VM, como Windows Server y SQL Server. Para obtener más información sobre las opciones de licencia de estos sistemas operativos en Compute Engine, consulta Licencias de Microsoft.

Costes, cuotas y capacidad de las VMs

Los costes, la cuota y la capacidad de las VMs siguen siendo los mismos cuando personalizas el número de núcleos de CPU visibles, ya que Compute Engine cobra, monitoriza la cuota y asigna espacio en los tipos de máquinas para las VMs como si estuvieran usando el número de núcleos de CPU del tipo de máquina. Para obtener más información sobre cómo factura Compute Engine las máquinas virtuales, consulta los precios de las instancias de máquinas virtuales.

Limitaciones

  • No puedes personalizar el número de núcleos de CPU visibles mientras una VM está en el estado RUNNING. Para obtener más información sobre los estados de las VMs, consulta el ciclo de vida de las instancias de VM.

  • En la consola Google Cloud , cuando se reduce el número de núcleos visibles, la métrica de uso de CPU no puede aumentar hasta el 100%. Se limita al número de núcleos de CPU visibles dividido entre el número máximo de núcleos de CPU.

  • No puedes usar esta función para personalizar el número de núcleos de CPU visibles de las instancias de Bare Metal.

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

Muchos tipos de máquinas admiten la personalización del número de núcleos de CPU visibles. El valor del número de núcleos de CPU visibles debe ser un número entero. El valor máximo es el número de vCPUs (o GPUs en el caso de los tipos de máquinas optimizados para aceleradores) del tipo de máquina dividido entre el número de hilos por núcleo de la VM.

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

Familia de tipos de máquinas Número de vCPUs predefinidas* Valores válidos para los núcleos de CPU visibles
Uso general
C4D Todos los tipos de máquinas Múltiplos de 2
C4 4, 8, 16, 24, 32, 48 Cualquiera
C4 96 Múltiplos de 2
C4 144 Múltiplos de 3
C4 192 Múltiplos de 4
C4 288 Múltiplos de 6
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 (optimizado para TPU) 48 Cualquiera
N1 (optimizado para TPU) 96 Múltiplos de 2
Optimizado para el almacenamiento
Z3 ≤ 44 Cualquiera
Z3 88 Múltiplos de 2
Z3 176 Múltiplos de 4
Optimizada para la computación
H3 88 Múltiplos de 4
C2 4, 8, 16, 30 Cualquiera
C2 60 Múltiplos de 2
Con memoria optimizada
M4 16, 28, 32, 56 Cualquiera
M4 64.112 Múltiplos de 2
M4 224 Múltiplos de 4
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
Optimizada para aceleradores
A4 224 Múltiplos de 2
A3 26, 52, 104, 208 y 224 Múltiplos de 2
A2 ≤ 48 Cualquiera
A2 96 Múltiplos de 2
G2 ≤ 48 Cualquiera
G2 96 Múltiplos de 2
G4 (vista previa) Todos los tipos de máquinas Múltiplos de 2
* El nombre de la mayoría de los tipos de máquina incluye el número de vCPUs. Sin embargo, en los tipos de máquinas optimizados para aceleradores que no sean G2 ni G4, el nombre del tipo de máquina contiene el número de GPUs predefinido. Para ver el número de vCPUs de los tipos de máquinas optimizadas para aceleradores, consulta la documentación de la familia de máquinas optimizadas para aceleradores.

Personalizar el número de núcleos de CPU visibles durante la creación de la VM

Para personalizar el número de núcleos de CPU visibles al crear una sola VM, sigue los pasos que se explican en esta sección.

En el ejemplo siguiente se muestra cómo crear una VM de SQL Server con un número reducido de núcleos de CPU visibles.

Consola

Para personalizar el número de núcleos de CPU visibles al crear una VM, sigue estos pasos:

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

gcloud

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

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

Haz los cambios siguientes:

  • VM_NAME: el nombre de la VM.

  • MACHINE_TYPE: un tipo de máquina admitido, como c2-standard-60.

  • VISIBLE_CORE_COUNT: número de núcleos de CPU visibles. Por ejemplo, si se usa el tipo de máquina c2-standard-60, se define como 20 y el número de hilos por núcleo es 2, se verán 40 de las 60 CPUs.

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

REST

Para crear una VM de SQL Server con un número reducido de núcleos de CPU visibles, usa el siguiente instances.insertmétodo:

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

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

Haz los cambios siguientes:

  • 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: número de núcleos de CPU visibles. Por ejemplo, si se usa el tipo de máquina c2-standard-60, se define como 20 y el número de hilos por núcleo es 2, se verán 40 de las 60 CPUs.

Personalizar el número de núcleos de CPU visibles en un grupo de VMs mediante una plantilla de instancia

Para personalizar el número de núcleos de CPU visibles al crear una VM mediante una plantilla de instancia, sigue los pasos que se explican en esta sección.

En el siguiente ejemplo se muestra cómo crear un grupo de VMs de SQL Server idénticas con un número reducido de núcleos de CPU visibles mediante una plantilla de instancia.

Consola

Para personalizar el número de núcleos de CPU visibles al crear una plantilla de instancia, siga estos pasos:

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

gcloud

  1. Crea una plantilla de instancia para las VMs de SQL Server, cada una con un número reducido de núcleos de CPU visibles, mediante el siguiente gcloud compute instance-templates createcomando:

    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
    

    Haz los cambios siguientes:

    • INSTANCE_TEMPLATE_NAME: nombre de la plantilla de instancia.

    • MACHINE_TYPE: un tipo de máquina admitido, como c2-standard-60.

    • VISIBLE_CORE_COUNT: número de núcleos de CPU visibles. Por ejemplo, si se usa el tipo de máquina c2-standard-60, se define como 20 y el número de hilos por núcleo es 2, se verán 40 de las 60 CPUs.

    • ZONE: la zona en la que se crearán las VMs.

  2. Crea las VMs de SQL Server, cada una con un número reducido de núcleos de CPU visibles, mediante el siguiente gcloud compute instances create comando:

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

    Haz los cambios siguientes:

    • INSTANCE_NAMES: los nombres de las VMs, separados por espacios, que se van a crear a partir de la plantilla de instancia

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

REST

  1. Crea una plantilla de instancia para las VMs de SQL Server, cada una con un número reducido de núcleos de CPU visibles, mediante el siguiente instanceTemplates.insert método:

    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"
     },
     ...
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto.

    • INSTANCE_TEMPLATE_NAME: nombre de la plantilla de instancia.

    • VISIBLE_CORE_COUNT: número de núcleos de CPU visibles. Por ejemplo, si se usa el tipo de máquina c2-standard-60, se define como 20 y el número de hilos por núcleo es 2, se verán 40 de las 60 CPUs.

  2. Crea las VMs de SQL Server, cada una con un número reducido de núcleos de CPU visibles, mediante el siguiente instances.insertmétodo:

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

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto

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

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

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

Personalizar el número de núcleos de CPU visibles

Para personalizar el número de núcleos de CPU visibles en una VM, sigue los pasos que se explican en esta sección.

Si has personalizado el número de núcleos de CPU visibles en un grupo de VMs mediante una plantilla de instancia, debes crear una nueva plantilla de instancia y, a continuación, crear VMs a partir de ella. Para obtener más información sobre las plantillas de instancia, consulta Plantillas de instancia.

Consola

Para personalizar el número de núcleos de CPU visibles en una VM, sigue estos pasos:

  1. Detén la VM.

  2. En Configuración del equipo > Configuraciones avanzadas > Número de núcleos visibles, selecciona el número de núcleos visibles.

  3. Reinicia la VM.

gcloud

Para actualizar el valor del número de núcleos de CPU visibles en una máquina virtual, sigue estos pasos. Para obtener más información, consulta Actualizar propiedades de la instancia.

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

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

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

REST

Para actualizar el número 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"
  },
  ...
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto

  • ZONE: la zona que contiene la VM

  • VM_NAME: el nombre de la VM de la que se van a exportar las propiedades

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

Siguientes pasos