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:
Ejecutas software, como Windows Server o SQL Server, cuya licencia se basa en el número de vCPUs disponibles.
Utilizas tipos de máquinas predefinidos, que no te permiten modificar el número de vCPUs ni la cantidad de RAM.
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 |
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, comoc2-standard-60
.VISIBLE_CORE_COUNT
: número de núcleos de CPU visibles. Por ejemplo, si se usa el tipo de máquinac2-standard-60
, se define como20
y el número de hilos por núcleo es2
, 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.insert
mé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áquinac2-standard-60
, se define como20
y el número de hilos por núcleo es2
, 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
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 create
comando: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, comoc2-standard-60
.VISIBLE_CORE_COUNT
: número de núcleos de CPU visibles. Por ejemplo, si se usa el tipo de máquinac2-standard-60
, se define como20
y el número de hilos por núcleo es2
, se verán 40 de las 60 CPUs.ZONE
: la zona en la que se crearán las VMs.
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 instanciaINSTANCE_TEMPLATE_NAME
: el nombre de la plantilla de instancia a partir de la que se crearán las VMs.
REST
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áquinac2-standard-60
, se define como20
y el número de hilos por núcleo es2
, se verán 40 de las 60 CPUs.
Crea las VMs de SQL Server, cada una con un número reducido de núcleos de CPU visibles, mediante el siguiente
instances.insert
mé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 proyectoZONE
: la zona en la que se creará la VMINSTANCE_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:
Detén la VM.
En Configuración del equipo > Configuraciones avanzadas > Número de núcleos visibles, selecciona el número de núcleos visibles.
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.
Exporta las propiedades de la VM a un archivo con el
gcloud compute instances export
comando.En el archivo que contiene las propiedades exportadas, modifique o añada el valor de lo siguiente:
advancedMachineFeatures: visibleCoreCount: VISIBLE_CORE_COUNT
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 proyectoZONE
: la zona que contiene la VMVM_NAME
: el nombre de la VM de la que se van a exportar las propiedadesVISIBLE_CORE_COUNT
: número de núcleos de CPU visibles
Siguientes pasos
Consulta cómo ver el número de núcleos de CPU visibles.
Consulta las opciones de licencias de software de Microsoft.
Consulta cómo configurar el número de hilos por núcleo.
Consulta los sistemas operativos que puedes ejecutar en máquinas virtuales de Compute Engine.