EC2ajuste de desempenho da instância - AWS Ground Station

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

EC2ajuste de desempenho da instância

nota

Se você provisionou seus AWS recursos usando CloudFormation modelos, esses ajustes serão aplicados automaticamente. Se você usou uma EC2 instância AMI ou criou manualmente, esses ajustes de desempenho devem ser aplicados para obter o desempenho mais confiável.

Lembre-se de reinicializar sua instância depois de aplicar qualquer ajuste.

Tópicos

Ajuste interrupções de hardware e filas de recebimento - impactos CPU e rede

Esta seção configura o uso CPU principal do systemd SMPIRQs, Receive Packet Steering (RPS) e Receive Flow Steering (). RFS Consulte Apêndice: Parâmetros recomendados para interrupção/sintonia RPS para ver um conjunto de configurações recomendadas com base no tipo de instância que você está usando.

  1. Afaste os processos do Systemd dos CPU núcleos dos agentes.

  2. Redirecione as solicitações de interrupção de hardware para fora dos CPU núcleos dos agentes.

  3. Configure RPS para evitar que a fila de hardware de uma única placa de interface de rede se torne um gargalo no tráfego da rede.

  4. Configure RFS para aumentar a taxa de acerto do CPU cache e, assim, reduzir a latência da rede.

O set_irq_affinity.sh script fornecido pelo RPM configura todas as opções acima para você. Adicione ao crontab, para que ele seja aplicado em cada inicialização:

echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '${interrupt_core_list}' '${rps_core_mask}' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • interrupt_core_listSubstitua por núcleos reservados para o kernel e o sistema operacional - normalmente o primeiro e o segundo, juntamente com pares de núcleos hiperencadeados. Isso não deve se sobrepor aos núcleos selecionados acima. (Ex: '0,1,48,49' para uma instância hyper-threaded de 96-). CPU

  • rps_core_maské uma máscara de bits hexadecimal que especifica quais CPUs devem processar os pacotes recebidos, com cada dígito representando 4. CPUs Também deve ser separado por vírgula a cada oito caracteres, começando pela direita. É recomendável permitir tudo CPUs e deixar o cache lidar com o balanceamento.

  • Exemplo para 96 CPU instâncias:

    echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '0,1,48,49' 'ffffffff,ffffffff,ffffffff' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root

Tune Rx interrompe a coalescência - afeta a rede

A coalescência de interrupções ajuda a evitar inundar o sistema host com muitas interrupções e ajuda a aumentar o throughput da rede. Com essa configuração, os pacotes são coletados e uma única interrupção é gerada a cada 128 microssegundos. Adicione ao crontab, para que ele seja aplicado em cada inicialização:

echo "@reboot sudo ethtool -C ${interface} rx-usecs 128 tx-usecs 128 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • Substitua interface pela interface de rede (adaptador Ethernet) configurada para receber dados. Normalmente, essa é eth0 a interface de rede padrão atribuída a uma EC2 instância.

Tune Rx ring buffer - afeta a rede

Aumente o número de entradas de anel para o buffer de anel Rx para evitar quedas ou sobrecargas de pacotes durante conexões intermitentes. Adicione ao crontab, para que fique configurado corretamente em cada inicialização:

echo "@reboot sudo ethtool -G ${interface} rx 16384 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • Substitua interface pela interface de rede (adaptador Ethernet) configurada para receber dados. Normalmente, essa é eth0 a interface de rede padrão atribuída a uma EC2 instância.

  • Ao configurar uma instância c6i.32xlarge, o comando precisa ser modificado para definir o buffer de anel como 8192 em vez de 16384.

Tune CPU C-State - impactos CPU

Defina o CPU estado C para evitar a inatividade, o que pode causar perda de pacotes durante o início de um contato. Requer reinicialização da instância.

echo "GRUB_CMDLINE_LINUX_DEFAULT=\"console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1\"" >/etc/default/grub echo "GRUB_TIMEOUT=0" >>/etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg

Portas de entrada de reserva - impacta a rede

Reserve todas as portas no intervalo de portas do endereço de entrada de AwsGroundStationAgentEndpoint para evitar conflitos com o uso do kernel. O conflito de uso da porta levará à falha no contato e na entrega de dados.

echo "net.ipv4.ip_local_reserved_ports=${port_range_min}-${port_range_max}" >> /etc/sysctl.conf
  • Exemplo: echo "net.ipv4.ip_local_reserved_ports=42000-43500" >> /etc/sysctl.conf.

Reinicializar

Depois que todos os ajustes forem aplicados com êxito, reinicialize a instância para que os ajustes entrem em vigor.

sudo reboot

Esta seção determina os valores de parâmetros recomendados para uso na seção Ajustar interrupções de hardware e filas de recebimento - impactos CPU e rede.

Família Tipo de instância ${interrupt_core_list} ${rps_core_mask}

c6i

  • c6i.32xlarge

  • 0,1,64,65

  • ffffffff,ffffffff,ffffffff,ffffffff

c5

  • c5.24xlarge

  • c5.18xlarge

  • c5.12xlarge

  • 0,1,48,49

  • 0,1,36,37

  • 0,1,24,25

  • ffffffff,ffffffff,ffffffff

  • ff,ffffffff,ffffffff

  • ffff,ffffffff

c5n

  • c5n.metal

  • c5n.18xlarge

  • 0,1,36,37

  • 0,1,36,37

  • ff,ffffffff,ffffffff

  • ff,ffffffff,ffffffff

m5

  • m5.24xlarge

  • m5.12xlarge

  • 0,1,48,49

  • 0,1,24,25

  • ffffffff,ffffffff,ffffffff

  • ffff,ffffffff

r5

  • r5.metal

  • r5.24xlarge

  • 0,1,48,49

  • 0,1,48,49

  • ffffffff,ffffffff,ffffffff

  • ffffffff,ffffffff,ffffffff

r5n

  • r5n.metal

  • r5n.24xlarge

  • 0,1,48,49

  • 0,1,48,49

  • ffffffff,ffffffff,ffffffff

  • ffffffff,ffffffff,ffffffff

g4dn

  • g4dn.metal

  • g4dn.16xlarge

  • g4dn.12xlarge

  • 0,1,48,49

  • 0,1,32,33

  • 0,1,24,25

  • ffffffff,ffffffff,ffffffff

  • ffffffff,ffffffff

  • ffff,ffffffff

p4d

  • p4d.24xlarge

  • 0,1,48,49

  • ffffffff,ffffffff,ffffffff

p3dn

  • p3dn.24xlarge

  • 0,1,48,49

  • ffffffff,ffffffff,ffffffff