Cuando sea posible, Compute Engine habilita multiprocesamiento simultáneo (SMT) de forma predeterminada. Con el SMT habilitado, un solo núcleo de CPU físico puede ejecutar 2 CPU virtuales, cada una como subprocesos independientes. Puedes inhabilitar el SMT si reduces la cantidad de subprocesos (la cantidad de CPU virtuales efectivas) por núcleo a 1. En este documento, se describe por qué podrías cambiar la cantidad de subprocesos que se ejecutan en cada núcleo de CPU físico y cómo hacerlo.
Consideraciones para configurar el SMT
- Rendimiento
- Reducir la cantidad de subprocesos que se ejecutan en cada núcleo de CPU físico puede ayudar a mejorar el rendimiento de las cargas de trabajo que son muy paralelas o que realizan cálculos de punto flotante.
- Seguridad
- Si una VM ejecuta código no confiable, reducir la cantidad de subprocesos por núcleo puede ayudar a mitigar las vulnerabilidades de CPU, como el muestreo de datos de microarquitectura.
- Licencias
- Algunos contratos de licencia tienen requisitos relacionados con la cantidad de CPU virtuales que consumes. Inhabilitar la SMT reduce la cantidad de CPU virtuales para cada núcleo de 2 a 1, lo que podría reducir los costos de licencia. Para obtener más información, consulta tu contrato de licencia.
Limitaciones
La cantidad de subprocesos por núcleo no se puede configurar en las siguientes VM:
VM que se ejecutan en tipos de máquinas que tienen menos de 2 CPU virtuales, por ejemplo,
n1-standard-1
o máquinas con núcleo compartido, comoe2-small
VM que se ejecutan en el tipo de máquina Tau T2D
Precios
Se te factura por la cantidad de CPU virtuales definidas por el tipo de máquina de una VM, no por la cantidad de subprocesos que se ejecutan en cada núcleo. Por ejemplo, el tipo de máquina n2-standard-8
puede ejecutar hasta 8 CPU virtuales, que son 2 CPU virtuales para cada uno de los 4 núcleos de CPU físicos. Si decides ejecutar solo 1 subproceso por núcleo, es decir, 4 CPU virtuales, de todos modos se te facturarán 8 CPU virtuales. Para obtener más información sobre cómo se facturan las VM, consulta Precios de instancias de VM.
Configura el SMT en una VM nueva
Configura el SMT en una VM nueva mediante el siguiente procedimiento.
Permisos necesarios para esta tarea
Para realizar esta tarea, debes tener los siguientes permisos:
- Todos los permisos necesarios para crear una VM nueva
gcloud
Inhabilita el SMT mientras creas una VM con el siguiente comando gcloud beta compute
instances create
.
gcloud beta compute instances create VM_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --threads-per-core=THREADS_PER_CORE
Reemplaza lo siguiente:
VM_NAME
: Es el nombre de la VM nueva.ZONE
: Es la zona para la VM nueva.MACHINE_TYPE
: Es el tipo de máquina para la nueva VM. Debe ser un tipo de máquina con 2 CPU virtuales o más.THREADS_PER_CORE
: Es la cantidad de subprocesos visibles por núcleo físico. Los procesadores actuales admiten 2 subprocesos por núcleo para SMT, que está habilitado de forma predeterminada. Para inhabilitar el SMT, configúralo como1
.
API
Configura el SMT mientras creas una VM mediante el método instances.insert
con el campo threadsPerCore
.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances { ... "advancedMachineFeatures": { ... "threadsPerCore": "THREADS_PER_CORE" }, ... }
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto.ZONE
: Es la zona para la VM nueva.THREADS_PER_CORE
: Es la cantidad de subprocesos visibles por núcleo físico. Los procesadores actuales admiten 2 subprocesos por núcleo para SMT, que está habilitado de forma predeterminada. Para inhabilitar el SMT, configúralo como1
.
Configura el SMT en una VM existente
Configura el SMT en una VM existente mediante el siguiente procedimiento.
Permisos necesarios para esta tarea
Para realizar esta tarea, debes tener los siguientes permisos:
-
compute.instances.get
en el proyecto -
compute.instances.update
en el proyecto
gcloud
Exporta las propiedades de la VM mediante el siguiente comando
gcloud beta compute instances export
:gcloud beta compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE
Reemplaza lo siguiente:
VM_NAME
: El nombre de la VM desde la que se exportarán las propiedadesYAML_FILE_PATH
: La ruta de acceso y el nombre de un archivo .yaml en el que se guardarán los datos de configuración exportadosZONE
: La zona que contiene la VM
En el archivo de configuración de VM que se guardó en FILE_PATH, actualiza el valor de
threadsPerCore
. Si el valor no está en el archivo, agrega lo siguiente:advancedMachineFeatures: threadsPerCore: THREADS_PER_CORE
Actualiza la VM con el nuevo recuento de subprocesos por núcleo mediante el siguiente comando
gcloud beta compute instances update-from-file
:gcloud beta compute instances update-from-file VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE
Reemplaza lo siguiente:
VM_NAME
: El nombre de la VM que se actualizaráFILE_PATH
: La ruta de acceso al archivo de configuración de VM actualizadaZONE
: la zona que contiene la VM que se actualizará
API
Actualiza los subprocesos por núcleo de la VM mediante el siguiente método instances.update
:
PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART { ... "advanced_machine_features": { ... "threadsPerCore": "THREADS_PER_CORE" }, ... }
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyectoZONE
: La zona que contiene la VMVM_NAME
: El nombre de la VM desde la que se exportarán las propiedadesTHREADS_PER_CORE
: La cantidad de subprocesos por núcleo
Verifica la configuración del SMT
Verifica la configuración del SMT mediante el procedimiento que corresponde al SO que se ejecuta en la VM.
Linux
Verifica la configuración del SMT en las VM basadas en Linux mediante el siguiente procedimiento:
Ejecuta el comando
lscpu
.lscpu
En el resultado, verifica el valor de la cantidad de subprocesos por núcleo.
En el siguiente resultado de muestra, el valor de la cantidad de subprocesos por núcleo es
1
.... CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) CPU ...
Windows
Verifica la configuración del SMT en las VM basadas en Windows mediante el siguiente procedimiento:
Abre la interfaz de línea de comandos para Instrumental de administración de Windows (WMI).
wmic
Ejecuta el siguiente comando para ver la cantidad de núcleos y de procesadores lógicos:
CPU Get NumberOfCores,NumberofLogicalProcessors
En el resultado, verifica el valor de la cantidad de subprocesos por núcleo.
En el siguiente resultado de muestra, el valor de la cantidad de subprocesos por núcleo es
1
.NumberOfCores NumberOfLogicalProcessors 1 1
¿Qué sigue?
- Obtén más información sobre los sistemas operativos que puedes ejecutar en las VM de Compute Engine.