Como otimizar o desempenho da SSD local

O gráfico de desempenho por tipo de disco descreve o desempenho máximo possível para partições SSD locais. Para otimizar os apps e as instâncias de VM visando atingir essas velocidades, use as seguintes práticas recomendadas:

Como usar otimizações do ambiente de convidado para SSDs locais

Por padrão, a maioria das imagens Linux fornecidas pelo Compute Engine executa automaticamente um script de otimização que configura a instância para garantir o desempenho máximo de SSD local. O script também ativa determinadas configurações de filas sysfs (link em inglês) que melhoram o desempenho geral da máquina e mascaram solicitações de interrupção (IRQs, na sigla em inglês) para CPUs virtuais (vCPUs) específicas. Esse script só otimiza o desempenho das partições SSD locais do Compute Engine.

Imagens Ubuntu, SLES e outras mais antigas talvez não estejam configuradas para incluir essa otimização de desempenho. Se você usa qualquer uma dessas imagens ou uma mais antiga que a v20141218, é possível instalar o ambiente convidado para ativar essas otimizações.

Escolha uma interface para conectar os SSDs locais

É possível conectar SSDs locais às suas VMs usando as interfaces NVMe ou SCSI. A escolha certa depende do sistema operacional (SO) que você está usando. Para a maioria das configurações de carga de trabalho que envolvem SSDs locais, o uso da interface NVMe garante um melhor desempenho.

  • Se você precisar usar um SO específico, escolha uma interface para as partições de SSDs locais que funcionam melhor com sua imagem do disco de inicialização.

  • Se você tiver uma configuração que requer o uso de uma interface SCSI, use uma imagem compatível com SCSI de várias filas para conseguir um desempenho melhor em relação ao SCSI padrão.

Ativar o SCSI de várias filas

Algumas imagens públicas são compatíveis com o SCSI de várias filas. Para usar o SCSI de várias filas em imagens personalizadas importadas para seu projeto, você precisa ativá-lo. Suas imagens importadas do Linux usam o SCSI de várias filas somente quando incluem a versão 3.19 ou posterior do kernel.

Para ativar o SCSI multifilas em uma imagem personalizada, importe a imagem com o recurso do sistema operacional convidado VIRTIO_SCSI_MULTIQUEUE ativado e inclua uma entrada na configuração do GRUB:

CentOS

Apenas para o CentOS7.

  1. Importe a imagem personalizada usando a API e inclua um item guestOsFeatures com um valor type de VIRTIO_SCSI_MULTIQUEUE.

  2. Crie uma instância usando sua imagem personalizada e anexe um ou mais SSDs locais.

  3. Conecte-se à instância pelo SSH.

  4. Verifique o valor do arquivo /sys/module/scsi_mod/parameters/use_blk_mq

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

    Se o valor desse arquivo for Y, o SCSI multifilas já estará ativado na imagem importada. Se o valor for N, inclua scsi_mod.use_blk_mq=Y na entrada GRUB_CMDLINE_LINUX do arquivo de configuração GRUB e reinicie o sistema.

    1. Abra o arquivo de configuração GRUB /etc/default/grub em um editor de texto.

      $ sudo vi /etc/default/grub
      
    2. Adicione scsi_mod.use_blk_mq=Y à entrada GRUB_CMDLINE_LINUX.

      GRUB_CMDLINE_LINUX=" vconsole.keymap=us console=ttyS0,38400n8 vconsole.font=latarcyrheb-sun16 scsi_mod.use_blk_mq=Y"
      
    3. Salve o arquivo de configuração.

    4. Execute o comando grub2-mkconfig para gerar novamente o arquivo GRUB e concluir a configuração.

      $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      
    5. Reinicie a instância.

      $ sudo reboot
      

Ubuntu

  1. Importe a imagem personalizada usando a API do Compute Engine e inclua um item guestOsFeatures com um valor type de VIRTIO_SCSI_MULTIQUEUE.

  2. Crie uma instância usando a imagem personalizada e anexe um ou mais SSDs locais usando a interface SCSI.

  3. Conecte-se à instância pelo SSH.

  4. Verifique o valor do arquivo /sys/module/scsi_mod/parameters/use_blk_mq.

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

    Se o valor desse arquivo for Y, o SCSI multifilas já estará ativado na imagem importada. Se o valor for N, inclua scsi_mod.use_blk_mq=Y na entrada GRUB_CMDLINE_LINUX do arquivo de configuração GRUB e reinicie o sistema.

    1. Abra o arquivo de configuração GRUB sudo nano /etc/default/grub em um editor de texto.

      $ sudo nano /etc/default/grub
      
    2. Adicione scsi_mod.use_blk_mq=Y à entrada GRUB_CMDLINE_LINUX.

      GRUB_CMDLINE_LINUX="scsi_mod.use_blk_mq=Y"
      
    3. Salve o arquivo de configuração.

    4. Execute o comando update-grub para gerar novamente o arquivo GRUB e concluir a configuração.

      $ sudo update-grub
      
    5. Reinicie a instância.

      $ sudo reboot
      

Desativar a limpeza do cache de gravação

Os sistemas de arquivos, bancos de dados e outros apps usam a limpeza de cache (em inglês) para garantir que os dados sejam confirmados para armazenamento durável em diversos checkpoints. Para a maioria dos dispositivos de armazenamento, esse padrão faz sentido. No entanto, as limpezas do cache de gravação são muito lentas em SSDs locais. É possível melhorar o desempenho de gravação para alguns apps desativando comandos de limpeza automática neles ou opções de limpeza no nível do sistema de arquivos.

Os SSDs locais sempre limpam gravações em cache dentro de dois segundos, independentemente dos comandos de limpeza definidos para os sistemas de arquivos e os apps. Dessa forma, as falhas de hardware temporárias podem fazer você perder, no máximo, apenas dois segundos de gravações armazenados em cache. As falhas permanentes de hardware ainda podem causar perda de todos os dados no dispositivo, mesmo eles sendo limpos ou não. Por isso, faça o backup de dados importantes em discos permanentes ou buckets do Cloud Storage.

Para desativar a limpeza do cache de gravação em sistemas de arquivos ext4, inclua a configuração nobarrier (link em inglês) nas opções de ativação ou nas entradas de /etc/fstab. Por exemplo:

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

em que [LOCAL_SSD_ID] é o ID de dispositivo do SSD local que você quer ativar e [MNT_DIR] é o diretório de montagem.

A seguir