Prácticas recomendadas para ejecutar aplicaciones de HPC especializadas en Compute Engine

Organízate con las colecciones Guarda y clasifica el contenido según tus preferencias.

En este documento se proporcionan prácticas recomendadas para ajustar los recursos de Google Cloud para optimizar el interfaz de transferencia de mensajes (MPI). Las grandes cargas de trabajo de computación de alto rendimiento (HPC) suelen usar MPI para comunicarse entre procesos e instancias. Para que un rendimiento de MPI sea óptimo, es fundamental que optimices los sistemas subyacentes y la infraestructura de red. Si ejecutas código basado en MPI en Google Cloud, sigue estas prácticas para obtener el mejor rendimiento posible.

Suposiciones y requisitos

Normalmente, los programadores de cargas de trabajo, como Slurm o HTCondor, se utilizan para gestionar instancias. Las recomendaciones y las prácticas recomendadas que se incluyen en este documento se aplican a todos los programadores y gestores de flujos de trabajo.

La implementación de estas prácticas recomendadas con los diferentes programadores o herramientas de flujo de trabajo no se trata en este documento. Otros documentos y tutoriales ofrecen herramientas de implementación y sus directrices.

Las directrices de este documento son generales y es posible que no beneficien a todas las aplicaciones. Te recomendamos que compares tus aplicaciones para que la configuración sea la más eficaz o rentable.

Usar una imagen de máquina virtual de HPC preconfigurada

En lugar de aplicar manualmente las prácticas recomendadas que se detallan en este documento, puedes usar la imagen de máquina virtual (HPC) de HPC, optimizada para cargas de trabajo con acoplamiento y de CMP. La imagen de máquina virtual de HPC empaqueta estas prácticas recomendadas y está disponible de forma gratuita a través de Google Cloud Marketplace. Para obtener más información, consulta la sección sobre cómo crear una instancia de máquina virtual de HPC.

Aplicar configuraciones mediante Bash o Ansible

En Google tenemos la opción de aplicar todas estas optimizaciones y prácticas recomendadas en una instancia de Compute Engine, o bien utilizar una secuencia de comandos de Bash o una secuencia de comandos sencilla. Estas secuencias de comandos se encuentran en el repositorio GitHub de HPC-Tools de Google. Las secuencias de comandos son compatibles con varias opciones que te permiten aplicar configuraciones individuales o aplicar varias configuraciones de forma simultánea.

Configuración de Compute Engine

En esta sección se incluyen las prácticas recomendadas para conseguir el mejor rendimiento de procesamiento para tu aplicación. Utilizar el tipo de máquina y la configuración correctos dentro del sistema pueden afectar considerablemente al rendimiento de la MPP.

Utilizar política de emplazamientos compacta

La política de emplazamientos te permite controlar la ubicación de tus máquinas virtuales en centros de datos. La política de ubicación compacta ofrece topologías de menor latencia para la ubicación de máquinas virtuales en una única zona de disponibilidad. Con las API actuales puedes crear hasta 22 máquinas virtuales optimizadas para la computación (C2) que están físicamente cerca el uno del otro. Si necesitas más de 22 instancias de C2 (más de 660 núcleos físicos), divide las instancias en varias políticas de ubicación. Te recomendamos que uses el número mínimo de políticas de emplazamiento que se ajusten a tu carga de trabajo.

Para utilizar políticas de emplazamientos, primero debes crear una política de emplazamiento con el número de máquinas virtuales requerida en una región:

gcloud compute resource-policies create group-placement \
    PLACEMENT_POLICY_NAME --collocation=collocated \
    --vm-count=NUMBER_OF_VMS

A continuación, crea instancias con la política en la zona necesaria:

gcloud compute instances create instance-1 \
    instance-2...instance-n --zone=us-central1-a \
    --resource-policies=PLACEMENT_POLICY_NAME \
    --maintenance-policy=TERMINATE ...

En algunos casos, es posible que no tengas control directo sobre cómo se crean las VM. Por ejemplo, las máquinas virtuales se pueden crear mediante el uso de herramientas de terceros no integradas. Para aplicar una política de emplazamiento a máquinas virtuales, primero debes detener las máquinas virtuales y ejecutar el siguiente comando:

gcloud compute instances add-resource-policies \
    instance-1 instance-2...instance-n --zone=us-central1-a \
    --resource-policies=PLACEMENT_POLICY_NAME

Usar instancias optimizadas para la computación

Recomendamos utilizar instancias de C2 para ejecutar aplicaciones de HPC. Estas instancias han corregido una asignación de núcleo virtual virtual a físico y exponen la arquitectura de celdas NUMA al SO invitado, ambas de las cuales son fundamentales para el rendimiento de la computación de alta rendimiento con HPC aplicaciones.

Las instancias C2 tienen hasta 60 vCPU (30 núcleos físicos) y 240 GB de RAM. También pueden tener hasta 3 TB de almacenamiento SSD y admitir hasta 32 Gb/s del rendimiento de la red. Las instancias C2 también utilizan los procesadores escalables Intel Xeon de segunda generación, que proporcionan más ancho de banda de memoria y una mayor velocidad de reloj (hasta 3,8 GHz), en comparación con otros tipos de instancias. En las instancias C2, normalmente se mejora un rendimiento hasta en un 40% en comparación con los tipos de instancias N1.

Para reducir la sobrecarga de las comunicaciones entre máquinas, te recomendamos que agrupes tus cargas de trabajo en un número más pequeño de máquinas virtuales C2‐standard‐60 (con el mismo número de núcleos totales) en lugar de lanzar un mayor número de máquinas C2 más pequeñas. Máquinas virtuales.

Inhabilitar Hyper-Threading

Algunas aplicaciones MPDI mejoran el rendimiento inhabilitando Hyper-Threading en el SO invitado. Hyper-Threading asigna dos núcleos virtuales (vCPU) por núcleo físico en el nodo. Para muchas tareas informáticas generales o tareas que requieren mucha E/S, Hyper-Threading puede aumentar considerablemente el rendimiento de una aplicación. En el caso de las tareas con límite de procesamiento en las que ambos núcleos virtuales tienen un límite de computación, Hyper-Threading puede obstaculizar el rendimiento general de la aplicación y puede hacer que la tarea sea determinista de forma determinista. Si desactivas Hyper-Threading, podrás conseguir un rendimiento más predecible y disminuir los tiempos de los trabajos.

Puedes inhabilitar Hyper-Threading en las instancias C2, N1‐Ultramem y N2, ya sea en línea o reiniciando.

Para inhabilitar Hyper-Threading online, usa una secuencia de comandos como Manage_Hyperthreading.sh, que configura las CPU activas sin conexión.

Para inhabilitar Hyper-Threading, reinicia lo siguiente a la cadena GRUB_CMDLINE_LINUX en /etc/default/grub, donde NUM_CPU es el número de vCPUs divididas por dos. Por ejemplo, en el caso de una instancia C2‐standard‐60, NUM_CPU sería 30.

noht nosmt nr_cpus=NUM_CPU

Después de cambiar el archivo grub, ejecuta lo siguiente para actualizar el archivo de configuración del sistema GRUB y, a continuación, reinicia el sistema:

sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

Si tu sistema tiene un modo de inicio de BIOS antiguo, ejecuta el siguiente comando:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Para verificar que SMP (Hyper-Threading) esté inhabilitado en el sistema después de reiniciar, utiliza el siguiente comando:

lscpu | grep -e Socket -e Core -e Thread

El resultado es similar al siguiente, donde Thread(s) per core es 1 cuando el Hyper-Threading está inhabilitado y 2 cuando está habilitado Hyper-Threading:

Thread(s) per core:    1
Core(s) per socket:    15
Socket(s):             2

Ajustar los límites de usuarios

Los sistemas de Unix tienen límites predeterminados en los recursos del sistema, como en los archivos abiertos y en la cantidad de procesos que puede utilizar cualquier usuario. Estos límites impiden que un usuario monopolice los recursos del sistema y afecte al trabajo de otros. Sin embargo, en el contexto de la HPC, estos límites suelen ser innecesarios porque los nodos de computación del clúster no se comparten directamente entre los usuarios.

Para ajustar los límites de los usuarios, edita el archivo /etc/security/limits.conf e inicia sesión de nuevo en el nodo. Además, puedes automatizar estos cambios en una imagen de máquina virtual o ajustar los límites cuando se despliegue a través de herramientas como Deployment Manager, Terraform o Ansible.

Cuando ajustes los límites de usuarios, cambia los valores de los siguientes límites:

  • nproc: número máximo de procesos
  • memlock: espacio de dirección en memoria bloqueada (KB) máxima bloqueada
  • stack: tamaño máximo de la pila (KB)
  • nofile: número máximo de archivos abiertos
  • cpu: tiempo máximo de CPU (minutos)
  • rtprio: prioridad máxima en tiempo real permitida para procesos sin privilegios (Linux 2.6.12 y posteriores)

Estos límites se configuran en el archivo de configuración del sistema /etc/security/limits.conf para la mayoría de los sistemas Unix y Linux, incluidos Debian, CentOS y Red Hat.

Para cambiar los límites de los usuarios, use un editor de texto para cambiar los siguientes valores:

  • En /etc/security/limits.conf:

    *            -     nproc     unlimited
    *            -     memlock   unlimited
    *            -     stack     unlimited
    *            -     nofile    1048576
    *            -     cpu       unlimited
    *            -     rtprio    unlimited
    
  • En /etc/security/limits.d/20-nproc.conf:

    *            -    nproc      unlimited
    

Configurar claves de host SSH

Intel MPI requiere claves de host para todos los nodos del clúster en el archivo ~/.ssh/known_hosts del nodo que ejecuta mpirun. También debes guardar tus claves SSH en authorized_keys.

Para añadir claves de host, ejecuta lo siguiente:

ssh-keyscan -H 'cat HOSTFILE' >> ~/.ssh/known_hosts

Otra forma de hacerlo es añadir StrictHostKeyChecking=no al archivo ~/.ssh/config ejecutando lo siguiente:

Host *
StrictHostKeyChecking no

Almacenamiento

El rendimiento de muchas aplicaciones de HPC depende en gran medida del rendimiento del sistema de almacenamiento subyacente. Esto se aplica especialmente a las aplicaciones que leen o escriben muchos datos o que crean o acceden a muchos archivos u objetos. Ocurre lo mismo cuando varias clasificaciones acceden al sistema de almacenamiento de forma simultánea.

Elige un sistema de archivos NFS o un sistema de archivos paralelos

A continuación se indican las opciones de almacenamiento principales para las aplicaciones que funcionan en conjunto. Cada opción tiene su propio coste, perfil de rendimiento, API y semántica de coherencia:

  • Las soluciones basadas en NFS como Filestore y NetApp Cloud Volumes son la forma más fácil de desplegar opciones de almacenamiento compartido. Ambas opciones se gestionan por completo en Google Cloud y son la mejor opción cuando la aplicación no tiene requisitos de E/S extremas para un mismo conjunto de datos y solo se puede compartir datos entre los nodos de computación durante la aplicación. ejecución y actualizaciones. Para conocer los límites de rendimiento, consulta la documentación de Filestore y NetApp Cloud Volumes.
  • Los sistemas de archivos paralelos basados en POSIX son los que más utilizan las aplicaciones MPI. Entre las opciones de POSIX, se incluyen el código abierto de Lustre y la oferta de Lustre totalmente compatible, DAN Storage EXAscaler Cloud. Cuando los nodos de computación generan y comparten datos, suelen depender del rendimiento extremizado que proporcionan los sistemas de archivos paralelos y la compatibilidad con semánticas POSIX completa. Los sistemas de archivos paralelos, como Lustre, ofrecen datos a los superordenadores más grandes y pueden ser compatibles con miles de clientes. Lustre también admite bibliotecas de datos y E/S, como NetCDF y HDF5, además de MPI‐IO, que permite la E/S en paralelo para un gran número de dominios de aplicación.

Elige una infraestructura de almacenamiento

Los requisitos de rendimiento de la aplicación deben guiar la infraestructura de almacenamiento o el nivel de almacenamiento del sistema de archivos que elijas. Por ejemplo, si despliegas SSD en aplicaciones que no necesitan operaciones de E/S de alta calidad por segundo, es posible que aumenten los costes sin mucho beneficio.

Los servicios de almacenamiento gestionado Filestore y NetApp Volumes ofrecen varios niveles de rendimiento que se escalan en función de la capacidad.

Para determinar la infraestructura correcta de opend Lustre o DDN Storage EXAscaler Cloud, debes comprender la vCPU y la capacidad que necesario para alcanzar el rendimiento necesario con un disco persistente estándar, un disco persistente SSD o un SSD local. Para obtener más información sobre cómo determinar la infraestructura correcta, consulta los artículos Bloquear información sobre el rendimiento del almacenamiento y Optimizar el rendimiento del disco persistente. Por ejemplo, si usas Lustre, puedes desplegar soluciones de bajo coste y de ancho de banda alto. Para ello, debes usar el disco persistente SSD para el servidor de metadatos (MDS) y el disco persistente estándar de los servidores de almacenamiento (OSS).

Configuración de red

El rendimiento de las redes de IMP es fundamental para muchas aplicaciones de HPC. Esto es especialmente cierto en el caso de las aplicaciones emparejadas en las que la MPI procesa en diferentes nodos se comunica con frecuencia o con un gran volumen de datos. En esta sección se incluyen las prácticas recomendadas para ajustar la configuración de tu red y obtener un rendimiento de MPI óptimo.

Aumentar ajustes tcp_*mem

Las máquinas C2 admiten hasta un ancho de banda de 32 Gbps, lo que requiere una memoria TCP más grande que la configuración predeterminada de Linux. Para mejorar el rendimiento de la red, aumenta el valor tcp_mem.

Para aumentar los límites de memoria de TCP, actualiza los siguientes valores en /etc/sysctl.conf:

net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216

Para cargar los nuevos valores en /etc/sysctl.conf, ejecuta sysctl -p.

Usar el perfil de latencia de red

Puedes mejorar el rendimiento de algunas aplicaciones habilitando el modo de encuesta activa. Las encuestas concurridas ayudan a reducir la latencia de la ruta de recepción de la red al permitir que el código de la capa de socket sirva para sondear la cola de recepción de un dispositivo de red e inhabilitar las interrupciones en la red. Evalúa la latencia de tu aplicación para ver si ayuda a la hora de responder a una encuesta.

El perfil de latencia de la red se reinicia durante los reinicios. Si tu sistema tiene instalado tuned-adm, puedes habilitar el perfil de latencia de red ejecutando el siguiente comando en CentOS:

tuned-adm profile network-latency

Si tu sistema no tiene instalado tuned-adm, puedes habilitar las encuestas ocupadas añadiendo lo siguiente a /etc/sysctl.conf:

net.core.busy_poll = 50
net.core.busy_read = 50

Para cargar los nuevos valores en /etc/sysctl.conf, ejecuta sysctl -p.

Bibliotecas MPI y aplicaciones de usuario

La configuración de las bibliotecas de MPI y las configuraciones de aplicaciones de HPC pueden afectar al rendimiento de las aplicaciones. Para obtener el mejor rendimiento de las aplicaciones de HPC, es importante ajustar esos ajustes o configuraciones. En esta sección se incluyen las prácticas recomendadas para ajustar las bibliotecas de MPI y las aplicaciones de usuario para obtener un rendimiento óptimo de MPI.

Usar Intel MPI

Para obtener el mejor rendimiento, te recomendamos que utilices Intel MPI.

Para las versiones Intel MPI 2018, especifica las telas de comunicación subyacentes para usar TCP con el proveedor de solo memoria compartida cuando se ejecute en Google Cloud:

mpirun -hostfile HOSTFILE -np NUM_PROCESSES \
    -ppn PROCESSES_PER_NODE -genv I_MPI_FABRICS "shm:tcp" APPLICATION

En las versiones Intel MPI 2019+, especifica las telas de comunicación subyacentes para usar TCP con el proveedor de ROFM OFI para obtener un mejor rendimiento:

mpirun -hostfile HOSTFILE -np NUM_PROCESSES \
    -ppn PROCESSES_PER_NODE -genv I_MPI_FABRICS "ofi_rxm;tcp" APPLICATION

Usar ajuste de MPP para hacer ajustes

Las implementaciones de MPI, como Intel MPI y OpenMPI, tienen muchos parámetros de configuración internos que pueden afectar al rendimiento de la comunicación. Estos parámetros son especialmente relevantes para la comunicación MPDI Collectiva, que permite especificar algoritmos y parámetros de configuración que pueden funcionar de manera muy diferente en el entorno de Google Cloud. Te recomendamos que ajustes los parámetros de configuración en función de las características de tus aplicaciones.

Si quieres especificar manualmente los algoritmos y los parámetros de configuración de las comunicaciones progresivas de MPI, te recomendamos que uses mpitune. Para ejecutar un comando mpitune, debes tener acceso de escritura al directorio o ejecutar el comando como raíz.

Cuando utilizas mpitune, defines cada combinación de número de máquinas virtuales y número de procesos por máquina virtual. Por ejemplo, si utilizas versiones Intel MPI 2018, puedes centrarte en 22 máquinas virtuales y 30 procesos por máquina virtual de la siguiente manera:

mpitune -hf HOSTFILE -fl 'shm:tcp' -pr 30:30 -hr 22:22

El comando mpitune anterior genera un archivo de configuración en el directorio Intel MPI que puedes usar más adelante para ejecutar aplicaciones.

Para usar la configuración de ajuste de una aplicación, añade la opción -tune al comando mpirun:

mpirun -tune -hostfile HOSTFILE -genv I_MPI_FABRICS 'shm:tcp' -np 660 -ppn 30 ./app

Para habilitar el ajuste, debes proporcionar explícitamente la variable de entorno I_MPI_FABRICS, y el número de nodos por VM y el número de procesos por nodo deben coincidir con los valores utilizados durante el ajuste.

Puedes encontrar los archivos de ajuste generados en el directorio de instalación de Intel MPI en intel/mpi/2018.1/etc64.

Los nombres de archivo se codifican en el dispositivo, el número de nodos y otra información, como los siguientes:

mpiexec_shm-tcp_nn_22_np_660_ppn_30.conf

Puedes reutilizar el archivo en un conjunto de máquinas virtuales diferente con configuraciones similares copiando el archivo en el directorio correspondiente y añadiendo la opción -tune al comando mpirun. También puedes añadir el archivo de configuración como un argumento después del parámetro -tune.

Utilizar el modo híbrido de MPP OpenMP

Muchas aplicaciones MPI son compatibles con un modo híbrido que puedes usar para habilitar OpenMP en aplicaciones MPI. En el modo híbrido, cada proceso de MPI puede usar un número fijo de hilos para acelerar la ejecución de determinadas estructuras de bucles.

Te recomendamos que pruebes la opción de modo híbrido cuando quieras optimizar el rendimiento de la aplicación. El uso del modo híbrido puede reducir el procesamiento de MPP en cada máquina virtual, lo que reduce la comunicación entre procesos y reduce el tiempo de comunicación general.

La habilitación del modo híbrido o OpenMP depende de las aplicaciones. En muchos casos, puedes habilitar el modo híbrido definiendo la siguiente variable de entorno:

export OMP_NUM_THREADS=NUM_THREADS

Si utilizas este método híbrido, recomendamos que el número total de conversaciones no supere la cantidad de núcleos físicos que hay en la máquina virtual. Las máquinas virtuales C2‐standard‐60 tienen 2 NUMA de 15 núcleos y 30 vCPU cada una. Te recomendamos que no tengas ningún proceso de MPI con hilos OpenMP que abarquen NUMA nodos.

Compila aplicaciones siguiendo instrucciones de vectores y la biblioteca de matemáticas

Las máquinas virtuales C2 son compatibles con las instrucciones de vectores de AVX2, AVX512. Si quieres mejorar el rendimiento de muchas aplicaciones de HPC, puedes combinarlas con instrucciones de AVX. Algunas aplicaciones funcionan mejor si utilizas AVX2 en lugar de AVX512. Te recomendamos que pruebes ambas instrucciones para AVXs de tu carga de trabajo. Para mejorar el rendimiento de los cálculos científicos, también te recomendamos que utilices la biblioteca Intel Math Kernel (Intel MKL).

Utiliza una numeración de CPU adecuada

En el modelo C2‐standard‐60, hay sockets con NUMA, y las CPU están numeradas en relación con los nodos de NUMA:

NUMA node0 CPU(s):     0-14,30-44
NUMA node1 CPU(s):     15-29,45-59

En el siguiente diagrama se muestra la asignación de números de CPU a cada una de las CPU en los nodos NUMA de una instancia C2‐standard‐60. El socket 0 corresponde a NUMA node0 con CPUs de 0 a 14 y de 44. El socket 1 corresponde a NUMA nodo1 con CPUs 15-29 y 45-59.

Numeración virtual virtual para nodos C2-standard-60.

Los elementos que siguen estas estructuras que están asignados a un solo núcleo de la VM son (0,30)(1,31)..(29,59).

Intel MPI utiliza los números de CPU NUMA para permitir el procesador de las tareas de MPP. Si quieres usar un solo hilo por núcleo en todos los nodos que sean uniformes en las distintas ejecuciones, usa los números de CPU del 0 al 29.

OpenPDI utiliza números de CPU lógicos, según se indica en la localidad de hardware portátil (hwloc). Al usar OpenPDI, los elementos del mismo nivel se agrupan de forma consecutiva de la siguiente manera:

  • Socket 0: 0 (núcleo 0 HT 0), 1 (núcleo 0 Hz 1), 2 (núcleo 1 HT 0),... 28 (núcleo 14 HT 0) y 29 (núcleo de 14 HT 1)

  • Socket 1: 30 (núcleo 0 HT 0), 31 (núcleo 0 Hz 1), 2 (núcleo 1 HT 0), 58 (núcleo de 14 HT 0) y 59 (núcleo de 14 HT 1)

El resultado es similar al siguiente:

lstopo-no-graphics
Machine (240GB total)
  NUMANode L#0 (P#0 120GB) + Package L#0 + L3 L#0 (25MB)
    L2 L#0 (1024KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
      PU L#0 (P#0)
      PU L#1 (P#30)
    L2 L#1 (1024KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1
      PU L#2 (P#1)
      PU L#3 (P#31)

Cuando usas OpenMPI, puedes usar un solo hilo por núcleo en todos los nodos que sean uniformes en todas las ejecuciones con los números de CPU 0,2,4,..58. Para forzar la vinculación de un PDI a un núcleo, usa la opción --bind-to core cuando ejecutes openMPI y, a continuación, valida la vinculación correcta con la opción --report-bindings.

Configuración de seguridad

Puedes mejorar el rendimiento de MPI inhabilitando algunas funciones de seguridad de Linux integradas. Las ventajas de inhabilitar cada una de estas funciones varían. Si tienes la certeza de que tus sistemas están bien protegidos, puedes evaluar la inhabilitación de las siguientes funciones de seguridad.

Inhabilitar cortafuegos de Linux

En las imágenes de Google Cloud CentOS para Linux, el cortafuegos está activado de forma predeterminada. Para inhabilitar el cortafuegos, ejecuta e inhabilita el daemon firewalld ejecutando los siguientes comandos:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask --now firewalld

Inhabilitar SELinux

SELinux está activado de forma predeterminada en CentOS. Para inhabilitar SELinux, edita el archivo /etc/selinux/config y sustituye las líneas SELINUX=enforcing o SELINUX=permissive por SELINUX=disabled.

Debes reiniciar para que se aplique este cambio.

Desactivar la reducción de vulnerabilidades y de la reducción de vulnerabilidades

Los siguientes parches de seguridad están habilitados de forma predeterminada en los sistemas Linux:

  • Variante 1, Spectre: CVE‐2017‐5753
  • Variante 2, Spectre: CVE‐2017‐5715
  • Variante 3, Meltdown: CVE-2017-5754
  • Variante 4: Especulación: tienda CVE-2018-3639

Las vulnerabilidades de seguridad descritas en estas CVE se pueden encontrar en microprocesadores modernos, incluidos los procesadores desplegados en Google Cloud. Puedes inhabilitar una o varias de estas vulnerabilidades y incurrir en los riesgos de seguridad asociados. Para ello, usa la línea de comandos de kernel en el arranque (perfecto en reinicios) o mediante debugfs durante el entorno de ejecución (no se reinicia durante el reinicio).

Para inhabilitar permanentemente las mitigaciones de seguridad anteriores, sigue estos pasos:

  1. Modifica el archivo /etc/default/grub:

    sudo sed -i 's/^GRUB_CMDLINE_LINUX=\"\(.*\)\"/GRUB_CMDLINE_LINUX=\"\1 spectre_v2=off nopti spec_store_bypass_disable=off\"/' /etc/default/grub
    
  2. Después de cambiar el archivo grub, ejecuta lo siguiente para actualizar el archivo de configuración del sistema GRUB y, a continuación, reinicia el sistema:

    sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    

    Si tu sistema tiene un modo de inicio de BIOS antiguo, ejecuta el siguiente comando:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. Reiniciar.

Si un sistema ya está en ejecución, puedes inhabilitar las excepciones de seguridad anteriores ejecutando los siguientes comandos. Esto no pasa entre los reinicios.

echo 0 > /sys/kernel/debug/x86/pti_enabled
echo 0 > /sys/kernel/debug/x86/retp_enabled
echo 0 > /sys/kernel/debug/x86/ibrs_enabled
echo 0 > /sys/kernel/debug/x86/ssbd_enabled

Para obtener información sobre cómo pueden afectar las diferentes atenuaciones a tus sistemas y cómo controlarlos, consulta la documentación de Red Hat para Controlar el impacto del rendimiento de los códigos de seguridad y los códigos de seguridad y Ataque a la parte del canal que dirige el Kriel mediante el fino de la tienda especulativa en tu teléfono Android.

Para localizar las vulnerabilidades afectadas de una CPU, ejecuta lo siguiente:

grep . /sys/devices/system/cpu/vulnerabilities/*

Ejecuta el siguiente comando para averiguar qué medidas están habilitadas:

grep . /sys/kernel/debug/x86/*_enabled

Resumen de la lista de comprobación

En la siguiente tabla se resumen las prácticas recomendadas para usar MPI en Compute Engine.

Áreas Tasks
Configuración de Compute Engine
Almacenamiento
Configuración de red
Bibliotecas MPI y aplicaciones de usuario
Configuración de seguridad

Siguientes pasos