Optimiza el rendimiento de SSD locales

En el gráfico de rendimiento por tipo de disco, se describe el rendimiento máximo que se puede lograr para las particiones de SSD locales. Para optimizar las apps y las instancias de VM a fin de alcanzar estas velocidades, usa las siguientes prácticas recomendadas:

Usa optimizaciones del entorno de invitado para los SSD locales

De forma predeterminada, la mayoría de las imágenes de Linux que proporciona Compute Engine ejecutan automáticamente una secuencia de comandos de optimización que configura la instancia para el rendimiento máximo del SSD local. La secuencia de comandos habilita ciertas opciones de configuración de la cola sysfs que mejoran el rendimiento general de la máquina y enmascaran solicitudes de interrupción (IRQ) a CPU virtuales específicas. Esta secuencia de comandos solo optimiza el rendimiento de las particiones de SSD locales de Compute Engine.

Puede que Ubuntu, SLES y otras imágenes más antiguas no estén configuradas para incluir esta optimización de rendimiento. Si usas alguna de estas imágenes o una imagen anterior a la versión v20141218, puedes instalar el entorno de invitado para habilitar estas optimizaciones.

Selecciona la mejor imagen para las interfaces NVMe o SCSI

Los SSD locales pueden exponer una interfaz NVMe o SCSI. La mejor opción depende del sistema operativo que uses. Elige una interfaz para las particiones de SSD locales que funcione mejor con la imagen de disco de arranque. Si tus instancias se conectan a SSD locales mediante interfaces SCSI, puedes habilitar una SCSI de múltiples colas en el SO invitado para conseguir un rendimiento óptimo a través de la interfaz SCSI.

Habilita una SCSI de múltiples colas en instancias con imágenes personalizadas y SSD locales

Algunas imágenes públicas admiten SCSI de múltiples colas. Si necesitas la capacidad de una SCSI de múltiples colas en las imágenes personalizadas que importas a tu proyecto, debes habilitarla tú mismo. Tus imágenes de Linux importadas pueden usar una SCSI de múltiples colas solo si incluyen la versión de kernel 3.19 o una posterior.

Para habilitar una SCSI de múltiples colas en una imagen personalizada, importa la imagen con la característica VIRTIO_SCSI_MULTIQUEUE del SO invitado habilitada y agrega una entrada a tu configuración de GRUB:

CentOS

Solo para CentOS7.

  1. Importa tu imagen personalizada con la API y, luego, incluye un elemento guestOsFeatures con un valor type de VIRTIO_SCSI_MULTIQUEUE.

  2. Crea una instancia con tu imagen personalizada y adjunta uno o más SSD locales.

  3. Conéctate a tu instancia a través de SSH.

  4. Verifica el valor del archivo /sys/module/scsi_mod/parameters/use_blk_mq.

    $ cat /sys/module/scsi_mod/parameters/use_blk_mq
    

    Si el valor de este archivo es Y, entonces la SCSI de múltiples colas ya está habilitada en tu imagen importada. Si el valor del archivo es N, incluye scsi_mod.use_blk_mq=Y en la entrada GRUB_CMDLINE_LINUX de tu archivo de configuración GRUB y reinicia el sistema.

    1. Abre el archivo de configuración GRUB /etc/default/grub en un editor de texto.

      $ sudo vi /etc/default/grub
      
    2. Agrega scsi_mod.use_blk_mq=Y a la entrada GRUB_CMDLINE_LINUX.

      GRUB_CMDLINE_LINUX=" vconsole.keymap=us console=ttyS0,38400n8 vconsole.font=latarcyrheb-sun16 scsi_mod.use_blk_mq=Y"
      
    3. Guarda el archivo de configuración.

    4. Ejecuta el comando grub2-mkconfig para regenerar el archivo GRUB y completar la configuración.

      $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      
    5. Reinicia la instancia.

      $ sudo reboot
      

Ubuntu

  1. Importa tu imagen personalizada con la API de Compute Engine y, luego, incluye un elemento guestOsFeatures con un valor type de VIRTIO_SCSI_MULTIQUEUE.

  2. Crea una instancia con tu imagen personalizada y adjunta uno o más SSD locales mediante la interfaz SCSI.

  3. Conéctate a tu instancia a través de SSH.

  4. Verifica el valor del archivo /sys/module/scsi_mod/parameters/use_blk_mq.

    $ cat /sys/module/scsi_mod/parameters/use_blk_mq
    

    Si el valor de este archivo es Y, entonces la SCSI de múltiples colas ya está habilitada en tu imagen importada. Si el valor del archivo es N, incluye scsi_mod.use_blk_mq=Y en la entrada GRUB_CMDLINE_LINUX de tu archivo de configuración GRUB y reinicia el sistema.

    1. Abre el archivo de configuración GRUB sudo nano /etc/default/grub en un editor de texto.

      $ sudo nano /etc/default/grub
      
    2. Agrega scsi_mod.use_blk_mq=Y a la entrada GRUB_CMDLINE_LINUX.

      GRUB_CMDLINE_LINUX="scsi_mod.use_blk_mq=Y"
      
    3. Guarda el archivo de configuración.

    4. Ejecuta el comando update-grub para regenerar el archivo GRUB y completar la configuración.

      $ sudo update-grub
      
    5. Reinicia la instancia.

      $ sudo reboot
      

Inhabilita la limpieza de caché de escritura

Los sistemas de archivos, las bases de datos y otras apps usan la limpieza de caché para garantizar que los datos se envíen a un almacenamiento duradero en varios puntos de control. Para la mayoría de los dispositivos de almacenamiento, esta configuración predeterminada tiene sentido. Sin embargo, las limpiezas de caché de escritura son bastante lentas en los SSD locales. Puedes aumentar el rendimiento de las operaciones de escritura para algunas apps si inhabilitas los comandos de limpieza automática en ellas o si inhabilitas las opciones de limpieza a nivel del sistema de archivos.

Los SSD locales siempre limpian las escrituras almacenadas en caché en dos segundos, sin importar los comandos de limpieza que establezcas para las apps y los sistemas de archivos; por lo tanto, las fallas temporales de hardware te pueden hacer perder dos segundos de escritura en caché como máximo. Las fallas permanentes de hardware pueden causar la pérdida de todos los datos del dispositivo, más allá de la limpieza de los datos, por lo que debes crear copias de seguridad de los datos críticos en discos persistentes o depósitos de Cloud Storage.

Para inhabilitar la limpieza de caché de escritura en sistemas de archivos ext4, incluye la configuración nobarrier en tus opciones de activación o en tus entradas /etc/fstab. Por ejemplo:

$ sudo mount -o discard,defaults,nobarrier /dev/[LOCAL_SSD_ID] /mnt/disks/[MNT_DIR]

En el ejemplo anterior, [LOCAL_SSD_ID] es el ID de dispositivo del SSD local que deseas activar y [MNT_DIR] es el directorio en el que se debe activar.

Próximos pasos