Como posso obter o máximo desempenho de E/S de volumes do EBS hospedados em instâncias do EC2 baseadas em Nitro?

4 minuto de leitura
0

Eu executo minha workload em instâncias do Amazon Elastic Compute Cloud (Amazon EC2) baseadas em Nitro. Quero ter certeza de obter o máximo desempenho de E/S dos volumes do Amazon Elastic Block Store (Amazon EBS) hospedados em minhas instâncias.

Resolução

1.     Verifique se o volume do EBS atingiu sua cota de IOPS. A latência pode aumentar quando seu volume atinge sua cota de IOPS, e o aumento da latência afeta o desempenho. Para obter mais informações, consulte How do I optimize the performance of my Amazon EBS Provisioned IOPS volumes?
Observação: se você estiver usando um volume GP2, verifique se seu volume não esgotou os créditos de intermitência.

2.    Para usar o armazenamento NVMe, você deve executar um destes sistemas operacionais (SOs):

  • Imagem de máquina da Amazon (AMI) do Amazon Linux ou posterior e kernel 4.12 ou posterior
  • CentOS - 7.0 ou posterior e kernel 3.10 ou posterior
  • Red Hat - 7.0 ou posterior e kernel 3.10 ou posterior
  • Ubuntu 19.10 com kernel 5.0 ou Ubuntu 18.04.03 com kernel 5.0 e posteriores
    Observação: para essas versões do Ubuntu, o recurso de várias filas está ativado por padrão.
  • Ubuntu - 16.04 ou 16.10
    Observação: para essas versões do Ubuntu, os programadores de várias filas não são compilados no kernel e precisam de carregamento de módulo separado
  • SUSE 12 ou SUSE 11 com SP3 ou posterior
  • Windows Server 2008 R2, 2012 R2 e 2016 ou posterior

Ou certifique-se de que a versão do kernel seja compatível com um programador de E/S com recurso de várias filas. Os programadores de E/S de várias filas mais usados são kyber, mq-deadline e budget fair queue (bfq).

Observação: para sistemas operacionais como Oracle, Linux ou Debian, use uma versão do kernel que inclua ou que seja compatível com um programador de E/S de várias filas. O CentOS e sua versão do kernel são compatíveis com um programador de E/S de várias filas.

Se você usar uma versão anterior desses sistemas operacionais, poderá observar um declínio no desempenho de E/S porque as instâncias baseadas em Nitro têm processamento de várias filas no nível do host. Isso cria incompatibilidade entre o programador nos níveis do sistema operacional e do host.

Antes que o volume intercepte as solicitações de leitura ou gravação de E/S enviadas ao volume do EBS, as solicitações percorrem várias camadas. Para versões mais antigas do kernel com programadores sem recurso de várias filas em instâncias baseadas em Nitro, às vezes há um atraso na camada do programador de E/S (I2D). O atraso ocorre em testes e resultados de avaliações comparativas que usam as ferramentas blktrace, blkparse e btt. Para obter mais informações sobre essas ferramentas, consulte blktrace, blkparse e btt no site die.net.

Para melhorar o desempenho de E/S em instâncias baseadas em Nitro, o CentOS 7 tem o Mecanismo de enfileiramento (blk-mq) que permite que os drivers de dispositivos mapeiem solicitações de E/S para várias filas de hardware ou software. Para obter o máximo desempenho em sistemas baseados em Nitro, é uma prática recomendada usar um sistema operacional atualizado com o kernel mais recente.

Programador de E/S no CentOS 6

$cat /sys/block/xvdf/queue/scheduler noop anticipatory deadline \[cfq\]$cat config-2.6.32-754.30.2.el6.x86\_64 | grep -i blk\_mq

Observação: como o arquivo de configuração no kernel do CentOS 6 usa o programador noop, ele não retorna o blk_mq.

Programador de E/S no Redhat 9 e Kernel 5.14 e posteriores

cat /sys/block/<EBS device name>/queue/scheduler \[none\] mq-deadline kyber bfq

Antes de escolher um programador, revise os detalhes de cada um. Para obter mais informações, consulte Available disk schedulers no site da Red Hat.

Para atualizar o programador no nível do sistema operacional durante o tempo de execução da instância do EC2, execute o seguinte comando:

#sudo echo 'kyber'> /sys/block/<EBS device name>/queue/scheduler

Para alterar permanentemente o programador de E/S, modifique a configuração do grub e atualize o parâmetro elevador. As etapas a seguir são direcionadas para CentOS e Red Hat Enterprise Linux (RHEL):

1.    Execute o seguinte comando:

#sudo vim /etc/default/grubGRUB\_CMDLINE\_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet elevator=kyber"

2.    Execute o seguinte comando:

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

Se a instância for reinicializada, o programador de E/S permanecerá configurado.

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses