

# Melhorar a performance da rede entre instâncias do EC2 com ENA Express
<a name="ena-express"></a>

O ENA Express conta com a tecnologia AWS Scalable Reliable Datagram (SRD). SRD é um protocolo de transporte de rede de alta performance que usa roteamento dinâmico para aumentar o throughput e minimizar a latência final. Com o ENA Express, você pode se comunicar entre duas instâncias do EC2 na mesma Zona de disponibilidade ou entre Zonas de disponibilidade dentro da mesma Região.

**Benefícios do ENA Express**
+ Aumenta a largura de banda máxima que um único fluxo pode usar de 5 Gbps até 25 Gbps na mesma região, até o limite agregado de instâncias.
+ Reduz a latência final do tráfego de rede entre instâncias do EC2 na mesma Zona de disponibilidade, especialmente durante períodos de grande carga de rede.
+ Detecta e evita caminhos de rede congestionados.
+ Executa algumas tarefas diretamente na camada da rede, como a reordenação de pacotes na extremidade receptora e a maioria das retransmissões necessárias. Isso libera a camada de aplicação para outros trabalhos.

**nota**  
Se sua aplicação tem altos requisitos de pacotes por segundo e precisa otimizar a latência durante períodos não congestionados, [Redes avançadas](enhanced-networking.md) pode ser uma opção melhor.
O tráfego ENA Express não pode ser enviado numa Zona Local.
O suporte do ENA Express para tráfego entre Zonas de disponibilidade não está disponível na América do Sul (São Paulo), Oriente Médio (Bahrein) e Oriente Médio (Emirados Árabes Unidos) 

Depois que você habilita o ENA Express para a conexão da interface de rede em uma instância, a instância remetente inicia a comunicação com a instância destinatária, e o SRD detecta se o ENA Express está funcionando tanto na instância remetente quanto na instância destinatária. Se o ENA Express estiver operando, a comunicação poderá usar transmissão SRD. Se o ENA Express não estiver operando, a comunicação retornará para a transmissão por ENA padrão.

Durante períodos de baixo tráfego de rede, você poderá notar um ligeiro aumento na latência média dos pacotes (dezenas de microssegundos) quando o pacote usa o ENA Express. Durante esses períodos, as aplicações que priorizam características específicas de performance de rede podem se beneficiar do ENA Express da seguinte forma:
+ Os processos podem se beneficiar do aumento da largura de banda máxima de fluxo único, de 5 Gbps para até 25 Gbps, dentro da mesma região, respeitando o limite agregado da instância. Por exemplo, se um tipo de instância específico for compatível com até 12,5 Gbps, a largura de banda de um único fluxo também será limitada a 12,5 Gbps.
+ Processos de longa duração na mesma Zona de disponibilidade apresentarão latência final reduzida durante períodos de congestionamento de rede.
+ Os processos podem se beneficiar de uma distribuição mais suave e padrão dos tempos de resposta da rede.

**Topics**
+ [Como o ENA Express funciona](#ena-express-how-it-works)
+ [Tipos de instâncias compatíveis com o ENA Express](#ena-express-supported-instance-types)
+ [Ajustar a performance das configurações do ENA Express em instâncias do Linux](#ena-express-tune)
+ [Revisar as configurações do ENA Express para instâncias do EC2](ena-express-list-view.md)
+ [Definir as configurações do ENA Express para instâncias do EC2](ena-express-configure.md)

## Como o ENA Express funciona
<a name="ena-express-how-it-works"></a>

O ENA Express conta com a tecnologia AWS Scalable Reliable Datagram (SRD). O mecanismo distribui pacotes para cada fluxo de rede em diferentes caminhos de rede da AWS e ajusta dinamicamente a distribuição quando detecta sinais de congestionamento. Ele também gerencia a reordenação de pacotes na extremidade receptora.

Para garantir que o ENA Express possa gerenciar o tráfego de rede conforme previsto, as instâncias de envio e recebimento e a comunicação entre elas devem atender a todos os seguintes requisitos:
+ Os tipos de instâncias de envio e de recebimento são compatíveis. Para obter mais informações, consulte a tabela [Tipos de instâncias compatíveis com o ENA Express](#ena-express-supported-instance-types).
+ As instâncias de envio e de recebimento devem ter o ENA Express configurado. Se houver diferenças na configuração, você pode se deparar com situações em que o tráfego use a transmissão ENA padrão. O cenário a seguir mostra o que pode acontecer.

  **Cenário: diferenças na configuração**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/ena-express.html)

  Nesse caso, o tráfego TCP entre as duas instâncias pode usar o ENA Express, pois ambas as instâncias o habilitaram. No entanto, como uma das instâncias não usa o ENA Express para tráfego UDP, a comunicação entre essas duas instâncias por UDP usa a transmissão ENA padrão.
+ As instâncias de envio e recebimento devem ser executadas na mesma região.
+ O caminho da rede entre as instâncias não deve incluir caixas de middleware. No momento, o ENA Express não é compatível com caixas de middleware.
+ (Somente para instâncias do Linux) Para utilizar todo o potencial da largura de banda, use a versão 2.2.9 ou versões posteriores do driver.
+ (Somente para instâncias do Linux) Para produzir métricas, use a versão 2.8 ou versões posteriores do driver.

Se algum requisito não for atendido, as instâncias usarão o protocolo TCP/UDP padrão, mas sem o SRD para comunicação.

Para garantir que o driver de rede da instância esteja configurado para performance ideal, analise as melhores práticas recomendadas para drivers do ENA. Essas práticas recomendadas também se aplicam ao ENA Express. Para obter mais informações, consulte [ENA Linux Driver Best Practices and Performance Optimization Guide](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst) (Guia de Práticas Recomendadas e Otimização de Performance do Driver) no GitHub.

**nota**  
O Amazon EC2 se refere à relação entre uma instância e uma interface de rede que está anexada a ela como um *anexo*. As configurações do ENA Express se aplicam ao anexo. Se a interface de rede for separada da instância, o anexo deixará de existir e as configurações do ENA Express aplicadas a ele não estarão mais em vigor. O mesmo acontece quando uma instância é encerrada, mesmo que a interface de rede permaneça.

Depois de habilitar o ENA Express para os anexos de interface de rede na instância de envio e na instância de recebimento, é possível usar as métricas do ENA Express para ajudar a garantir que as instâncias aproveitem ao máximo as melhorias de performance que a tecnologia SRD oferece. Para obter mais informações sobre as métricas do ENA Express, consulte [Métricas do ENA Express](monitoring-network-performance-ena.md#network-performance-metrics-ena-express).

## Tipos de instâncias compatíveis com o ENA Express
<a name="ena-express-supported-instance-types"></a>

Os tipos de instância a seguir são compatíveis com o ENA Express.

------
#### [ General purpose ]


| Tipo de instância | Arquitetura | 
| --- | --- | 
| m6a.12xlarge | x86\_64 | 
| m6a.16xlarge | x86\_64 | 
| m6a.24xlarge | x86\_64 | 
| m6a.32xlarge | x86\_64 | 
| m6a.48xlarge | x86\_64 | 
| m6a.metal | x86\_64 | 
| m6i.8xlarge | x86\_64 | 
| m6i.12xlarge | x86\_64 | 
| m6i.16xlarge | x86\_64 | 
| m6i.24xlarge | x86\_64 | 
| m6i.32xlarge | x86\_64 | 
| m6i.metal | x86\_64 | 
| m6id.8xlarge | x86\_64 | 
| m6id.12xlarge | x86\_64 | 
| m6id.16xlarge | x86\_64 | 
| m6id.24xlarge | x86\_64 | 
| m6id.32xlarge | x86\_64 | 
| m6id.metal | x86\_64 | 
| m6idn.8xlarge | x86\_64 | 
| m6idn.12xlarge | x86\_64 | 
| m6idn.16xlarge | x86\_64 | 
| m6idn.24xlarge | x86\_64 | 
| m6idn.32xlarge | x86\_64 | 
| m6idn.metal | x86\_64 | 
| m6in.8xlarge | x86\_64 | 
| m6in.12xlarge | x86\_64 | 
| m6in.16xlarge | x86\_64 | 
| m6in.24xlarge | x86\_64 | 
| m6in.32xlarge | x86\_64 | 
| m6in.metal | x86\_64 | 
| m7a.12xlarge | x86\_64 | 
| m7a.16xlarge | x86\_64 | 
| m7a.24xlarge | x86\_64 | 
| m7a.32xlarge | x86\_64 | 
| m7a.48xlarge | x86\_64 | 
| m7a.metal-48xl | x86\_64 | 
| m7g.12xlarge | arm64 | 
| m7g.16xlarge | arm64 | 
| m7g.metal | arm64 | 
| m7gd.12xlarge | arm64 | 
| m7gd.16xlarge | arm64 | 
| m7gd.metal | arm64 | 
| m7i.12xlarge | x86\_64 | 
| m7i.16xlarge | x86\_64 | 
| m7i.24xlarge | x86\_64 | 
| m7i.48xlarge | x86\_64 | 
| m7i.metal-24xl | x86\_64 | 
| m7i.metal-48xl | x86\_64 | 
| m8a.16xlarge | x86\_64 | 
| m8a.24xlarge | x86\_64 | 
| m8a.48xlarge | x86\_64 | 
| m8a.metal-24xl | x86\_64 | 
| m8a.metal-48xl | x86\_64 | 
| m8azn.12xlarge | x86\_64 | 
| m8azn.24xlarge | x86\_64 | 
| m8azn.metal-12xl | x86\_64 | 
| m8azn.metal-24xl | x86\_64 | 
| m8g.12xlarge | arm64 | 
| m8g.16xlarge | arm64 | 
| m8g.24xlarge | arm64 | 
| m8g.48xlarge | arm64 | 
| m8g.metal-24xl | arm64 | 
| m8g.metal-48xl | arm64 | 
| m8gb.8xlarge | arm64 | 
| m8gb.12xlarge | arm64 | 
| m8gb.16xlarge | arm64 | 
| m8gb.24xlarge | arm64 | 
| m8gb.48xlarge | arm64 | 
| m8gb.metal-24xl | arm64 | 
| m8gb.metal-48xl | arm64 | 
| m8gd.12xlarge | arm64 | 
| m8gd.16xlarge | arm64 | 
| m8gd.24xlarge | arm64 | 
| m8gd.48xlarge | arm64 | 
| m8gd.metal-24xl | arm64 | 
| m8gd.metal-48xl | arm64 | 
| m8gn.8xlarge | arm64 | 
| m8gn.12xlarge | arm64 | 
| m8gn.16xlarge | arm64 | 
| m8gn.24xlarge | arm64 | 
| m8gn.48xlarge | arm64 | 
| m8gn.metal-24xl | arm64 | 
| m8gn.metal-48xl | arm64 | 
| m8i.24xlarge | x86\_64 | 
| m8i.32xlarge | x86\_64 | 
| m8i.48xlarge | x86\_64 | 
| m8i.96xlarge | x86\_64 | 
| m8i.metal-48xl | x86\_64 | 
| m8i.metal-96xl | x86\_64 | 
| m8id.24xlarge | x86\_64 | 
| m8id.32xlarge | x86\_64 | 
| m8id.48xlarge | x86\_64 | 
| m8id.96xlarge | x86\_64 | 
| m8id.metal-48xl | x86\_64 | 
| m8id.metal-96xl | x86\_64 | 
| m8in.12xlarge | x86\_64 | 
| m8in.16xlarge | x86\_64 | 
| m8in.24xlarge | x86\_64 | 
| m8in.32xlarge | x86\_64 | 
| m8in.48xlarge | x86\_64 | 
| m8in.96xlarge | x86\_64 | 
| m8idn.12xlarge | x86\_64 | 
| m8idn.16xlarge | x86\_64 | 
| m8idn.24xlarge | x86\_64 | 
| m8idn.32xlarge | x86\_64 | 
| m8idn.48xlarge | x86\_64 | 
| m8idn.96xlarge | x86\_64 | 
| m8ib.12xlarge | x86\_64 | 
| m8ib.16xlarge | x86\_64 | 
| m8ib.24xlarge | x86\_64 | 
| m8ib.32xlarge | x86\_64 | 
| m8ib.48xlarge | x86\_64 | 
| m8ib.96xlarge | x86\_64 | 
| m8idb.12xlarge | x86\_64 | 
| m8idb.16xlarge | x86\_64 | 
| m8idb.24xlarge | x86\_64 | 
| m8idb.32xlarge | x86\_64 | 
| m8idb.48xlarge | x86\_64 | 
| m8idb.96xlarge | x86\_64 | 

------
#### [ Compute optimized ]


| Tipo de instância | Arquitetura | 
| --- | --- | 
| c6a.12xlarge | x86\_64 | 
| c6a.16xlarge | x86\_64 | 
| c6a.24xlarge | x86\_64 | 
| c6a.32xlarge | x86\_64 | 
| c6a.48xlarge | x86\_64 | 
| c6a.metal | x86\_64 | 
| c6gn.4xlarge | arm64 | 
| c6gn.8xlarge | arm64 | 
| c6gn.12xlarge | arm64 | 
| c6gn.16xlarge | arm64 | 
| c6i.8xlarge | x86\_64 | 
| c6i.12xlarge | x86\_64 | 
| c6i.16xlarge | x86\_64 | 
| c6i.24xlarge | x86\_64 | 
| c6i.32xlarge | x86\_64 | 
| c6i.metal | x86\_64 | 
| c6id.8xlarge | x86\_64 | 
| c6id.12xlarge | x86\_64 | 
| c6id.16xlarge | x86\_64 | 
| c6id.24xlarge | x86\_64 | 
| c6id.32xlarge | x86\_64 | 
| c6id.metal | x86\_64 | 
| c6in.8xlarge | x86\_64 | 
| c6in.12xlarge | x86\_64 | 
| c6in.16xlarge | x86\_64 | 
| c6in.24xlarge | x86\_64 | 
| c6in.32xlarge | x86\_64 | 
| c6in.metal | x86\_64 | 
| c7a.12xlarge | x86\_64 | 
| c7a.16xlarge | x86\_64 | 
| c7a.24xlarge | x86\_64 | 
| c7a.32xlarge | x86\_64 | 
| c7a.48xlarge | x86\_64 | 
| c7a.metal-48xl | x86\_64 | 
| c7g.12xlarge | arm64 | 
| c7g.16xlarge | arm64 | 
| c7g.metal | arm64 | 
| c7gd.12xlarge | arm64 | 
| c7gd.16xlarge | arm64 | 
| c7gd.metal | arm64 | 
| c7gn.4xlarge | arm64 | 
| c7gn.8xlarge | arm64 | 
| c7gn.12xlarge | arm64 | 
| c7gn.16xlarge | arm64 | 
| c7gn.metal | arm64 | 
| c7i.12xlarge | x86\_64 | 
| c7i.16xlarge | x86\_64 | 
| c7i.24xlarge | x86\_64 | 
| c7i.48xlarge | x86\_64 | 
| c7i.metal-24xl | x86\_64 | 
| c7i.metal-48xl | x86\_64 | 
| c8a.16xlarge | x86\_64 | 
| c8a.24xlarge | x86\_64 | 
| c8a.48xlarge | x86\_64 | 
| c8a.metal-24xl | x86\_64 | 
| c8a.metal-48xl | x86\_64 | 
| c8g.12xlarge | arm64 | 
| c8g.16xlarge | arm64 | 
| c8g.24xlarge | arm64 | 
| c8g.48xlarge | arm64 | 
| c8g.metal-24xl | arm64 | 
| c8g.metal-48xl | arm64 | 
| c8gb.8xlarge | arm64 | 
| c8gb.12xlarge | arm64 | 
| c8gb.16xlarge | arm64 | 
| c8gb.24xlarge | arm64 | 
| c8gb.48xlarge | arm64 | 
| c8gb.metal-24xl | arm64 | 
| c8gb.metal-48xl | arm64 | 
| c8gd.12xlarge | arm64 | 
| c8gd.16xlarge | arm64 | 
| c8gd.24xlarge | arm64 | 
| c8gd.48xlarge | arm64 | 
| c8gd.metal-24xl | arm64 | 
| c8gd.metal-48xl | arm64 | 
| c8gn.8xlarge | arm64 | 
| c8gn.12xlarge | arm64 | 
| c8gn.16xlarge | arm64 | 
| c8gn.24xlarge | arm64 | 
| c8gn.48xlarge | arm64 | 
| c8gn.metal-24xl | arm64 | 
| c8gn.metal-48xl | arm64 | 
| c8i.24xlarge | x86\_64 | 
| c8i.32xlarge | x86\_64 | 
| c8i.48xlarge | x86\_64 | 
| c8i.96xlarge | x86\_64 | 
| c8i.metal-48xl | x86\_64 | 
| c8i.metal-96xl | x86\_64 | 
| c8id.24xlarge | x86\_64 | 
| c8id.32xlarge | x86\_64 | 
| c8id.48xlarge | x86\_64 | 
| c8id.96xlarge | x86\_64 | 
| c8id.metal-48xl | x86\_64 | 
| c8id.metal-96xl | x86\_64 | 
| c8in.12xlarge | x86\_64 | 
| c8in.16xlarge | x86\_64 | 
| c8in.24xlarge | x86\_64 | 
| c8in.32xlarge | x86\_64 | 
| c8in.48xlarge | x86\_64 | 
| c8in.96xlarge | x86\_64 | 
| c8in.metal-48xl | x86\_64 | 
| c8in.metal-96xl | x86\_64 | 
| c8ib.12xlarge | x86\_64 | 
| c8ib.16xlarge | x86\_64 | 
| c8ib.24xlarge | x86\_64 | 
| c8ib.32xlarge | x86\_64 | 
| c8ib.48xlarge | x86\_64 | 
| c8ib.96xlarge | x86\_64 | 
| c8ib.metal-48xl | x86\_64 | 
| c8ib.metal-96xl | x86\_64 | 

------
#### [ Memory optimized ]


| Tipo de instância | Arquitetura | 
| --- | --- | 
| r6a.12xlarge | x86\_64 | 
| r6a.16xlarge | x86\_64 | 
| r6a.24xlarge | x86\_64 | 
| r6a.32xlarge | x86\_64 | 
| r6a.48xlarge | x86\_64 | 
| r6a.metal | x86\_64 | 
| r6i.8xlarge | x86\_64 | 
| r6i.12xlarge | x86\_64 | 
| r6i.16xlarge | x86\_64 | 
| r6i.24xlarge | x86\_64 | 
| r6i.32xlarge | x86\_64 | 
| r6i.metal | x86\_64 | 
| r6id.8xlarge | x86\_64 | 
| r6id.12xlarge | x86\_64 | 
| r6id.16xlarge | x86\_64 | 
| r6id.24xlarge | x86\_64 | 
| r6id.32xlarge | x86\_64 | 
| r6id.metal | x86\_64 | 
| r6idn.8xlarge | x86\_64 | 
| r6idn.12xlarge | x86\_64 | 
| r6idn.16xlarge | x86\_64 | 
| r6idn.24xlarge | x86\_64 | 
| r6idn.32xlarge | x86\_64 | 
| r6idn.metal | x86\_64 | 
| r6in.8xlarge | x86\_64 | 
| r6in.12xlarge | x86\_64 | 
| r6in.16xlarge | x86\_64 | 
| r6in.24xlarge | x86\_64 | 
| r6in.32xlarge | x86\_64 | 
| r6in.metal | x86\_64 | 
| r7a.12xlarge | x86\_64 | 
| r7a.16xlarge | x86\_64 | 
| r7a.24xlarge | x86\_64 | 
| r7a.32xlarge | x86\_64 | 
| r7a.48xlarge | x86\_64 | 
| r7a.metal-48xl | x86\_64 | 
| r7g.12xlarge | arm64 | 
| r7g.16xlarge | arm64 | 
| r7g.metal | arm64 | 
| r7gd.12xlarge | arm64 | 
| r7gd.16xlarge | arm64 | 
| r7gd.metal | arm64 | 
| r7i.12xlarge | x86\_64 | 
| r7i.16xlarge | x86\_64 | 
| r7i.24xlarge | x86\_64 | 
| r7i.48xlarge | x86\_64 | 
| r7i.metal-24xl | x86\_64 | 
| r7i.metal-48xl | x86\_64 | 
| r7iz.8xlarge | x86\_64 | 
| r7iz.12xlarge | x86\_64 | 
| r7iz.16xlarge | x86\_64 | 
| r7iz.32xlarge | x86\_64 | 
| r7iz.metal-16xl | x86\_64 | 
| r7iz.metal-32xl | x86\_64 | 
| r8a.16xlarge | x86\_64 | 
| r8a.24xlarge | x86\_64 | 
| r8a.48xlarge | x86\_64 | 
| r8a.metal-24xl | x86\_64 | 
| r8a.metal-48xl | x86\_64 | 
| r8g.12xlarge | arm64 | 
| r8g.16xlarge | arm64 | 
| r8g.24xlarge | arm64 | 
| r8g.48xlarge | arm64 | 
| r8g.metal-24xl | arm64 | 
| r8g.metal-48xl | arm64 | 
| r8gb.8xlarge | arm64 | 
| r8gb.12xlarge | arm64 | 
| r8gb.16xlarge | arm64 | 
| r8gb.24xlarge | arm64 | 
| r8gb.48xlarge | arm64 | 
| r8gb.metal-24xl | arm64 | 
| r8gb.metal-48xl | arm64 | 
| r8gd.12xlarge | arm64 | 
| r8gd.16xlarge | arm64 | 
| r8gd.24xlarge | arm64 | 
| r8gd.48xlarge | arm64 | 
| r8gd.metal-24xl | arm64 | 
| r8gd.metal-48xl | arm64 | 
| r8gn.8xlarge | arm64 | 
| r8gn.12xlarge | arm64 | 
| r8gn.16xlarge | arm64 | 
| r8gn.24xlarge | arm64 | 
| r8gn.48xlarge | arm64 | 
| r8gn.metal-24xl | arm64 | 
| r8gn.metal-48xl | arm64 | 
| r8i.24xlarge | x86\_64 | 
| r8i.32xlarge | x86\_64 | 
| r8i.48xlarge | x86\_64 | 
| r8i.96xlarge | x86\_64 | 
| r8i.metal-48xl | x86\_64 | 
| r8i.metal-96xl | x86\_64 | 
| r8id.24xlarge | x86\_64 | 
| r8id.32xlarge | x86\_64 | 
| r8id.48xlarge | x86\_64 | 
| r8id.96xlarge | x86\_64 | 
| r8id.metal-48xl | x86\_64 | 
| r8id.metal-96xl | x86\_64 | 
| r8in.12xlarge | x86\_64 | 
| r8in.16xlarge | x86\_64 | 
| r8in.24xlarge | x86\_64 | 
| r8in.32xlarge | x86\_64 | 
| r8in.48xlarge | x86\_64 | 
| r8in.96xlarge | x86\_64 | 
| r8idn.12xlarge | x86\_64 | 
| r8idn.16xlarge | x86\_64 | 
| r8idn.24xlarge | x86\_64 | 
| r8idn.32xlarge | x86\_64 | 
| r8idn.48xlarge | x86\_64 | 
| r8idn.96xlarge | x86\_64 | 
| r8ib.12xlarge | x86\_64 | 
| r8ib.16xlarge | x86\_64 | 
| r8ib.24xlarge | x86\_64 | 
| r8ib.32xlarge | x86\_64 | 
| r8ib.48xlarge | x86\_64 | 
| r8ib.96xlarge | x86\_64 | 
| r8idb.12xlarge | x86\_64 | 
| r8idb.16xlarge | x86\_64 | 
| r8idb.24xlarge | x86\_64 | 
| r8idb.32xlarge | x86\_64 | 
| r8idb.48xlarge | x86\_64 | 
| r8idb.96xlarge | x86\_64 | 
| u7i-6tb.112xlarge | x86\_64 | 
| u7i-8tb.112xlarge | x86\_64 | 
| u7i-12tb.224xlarge | x86\_64 | 
| u7in-16tb.224xlarge | x86\_64 | 
| u7in-24tb.224xlarge | x86\_64 | 
| u7in-32tb.224xlarge | x86\_64 | 
| u7inh-32tb.480xlarge | x86\_64 | 
| x2idn.16xlarge | x86\_64 | 
| x2idn.24xlarge | x86\_64 | 
| x2idn.32xlarge | x86\_64 | 
| x2idn.metal | x86\_64 | 
| x2iedn.8xlarge | x86\_64 | 
| x2iedn.16xlarge | x86\_64 | 
| x2iedn.24xlarge | x86\_64 | 
| x2iedn.32xlarge | x86\_64 | 
| x2iedn.metal | x86\_64 | 
| x8g.12xlarge | arm64 | 
| x8g.16xlarge | arm64 | 
| x8g.24xlarge | arm64 | 
| x8g.48xlarge | arm64 | 
| x8g.metal-24xl | arm64 | 
| x8g.metal-48xl | arm64 | 
| x8aedz.24xlarge | x86\_64 | 
| x8aedz.metal-24xl | x86\_64 | 
| x8i.24xlarge | x86\_64 | 
| x8i.32xlarge | x86\_64 | 
| x8i.48xlarge | x86\_64 | 
| x8i.64xlarge | x86\_64 | 
| x8i.96xlarge | x86\_64 | 
| x8i.metal-48xl | x86\_64 | 
| x8i.metal-96xl | x86\_64 | 

------
#### [ Accelerated computing ]


| Tipo de instância | Arquitetura | 
| --- | --- | 
| g6.48xlarge | x86\_64 | 
| g6e.12xlarge | x86\_64 | 
| g6e.24xlarge | x86\_64 | 
| g6e.48xlarge | x86\_64 | 
| g7e.12xlarge | x86\_64 | 
| g7e.24xlarge | x86\_64 | 
| g7e.48xlarge | x86\_64 | 
| p5.4xlarge | x86\_64 | 
| p5.48xlarge | x86\_64 | 
| p5e.48xlarge | x86\_64 | 
| p5en.48xlarge | x86\_64 | 
| p6-b200.48xlarge | x86\_64 | 
| p6-b300.48xlarge | x86\_64 | 

------
#### [ Storage optimized ]


| Tipo de instância | Arquitetura | 
| --- | --- | 
| i4g.4xlarge | arm64 | 
| i4g.8xlarge | arm64 | 
| i4g.16xlarge | arm64 | 
| i4i.8xlarge | x86\_64 | 
| i4i.12xlarge | x86\_64 | 
| i4i.16xlarge | x86\_64 | 
| i4i.24xlarge | x86\_64 | 
| i4i.32xlarge | x86\_64 | 
| i4i.metal | x86\_64 | 
| i7i.12xlarge | x86\_64 | 
| i7i.16xlarge | x86\_64 | 
| i7i.24xlarge | x86\_64 | 
| i7i.48xlarge | x86\_64 | 
| i7i.metal-24xl | x86\_64 | 
| i7i.metal-48xl | x86\_64 | 
| i7ie.12xlarge | x86\_64 | 
| i7ie.18xlarge | x86\_64 | 
| i7ie.24xlarge | x86\_64 | 
| i7ie.48xlarge | x86\_64 | 
| i7ie.metal-24xl | x86\_64 | 
| i7ie.metal-48xl | x86\_64 | 
| i8g.12xlarge | arm64 | 
| i8g.16xlarge | arm64 | 
| i8g.24xlarge | arm64 | 
| i8g.48xlarge | arm64 | 
| i8g.metal-24xl | arm64 | 
| i8g.metal-48xl | arm64 | 
| i8ge.12xlarge | arm64 | 
| i8ge.18xlarge | arm64 | 
| i8ge.24xlarge | arm64 | 
| i8ge.48xlarge | arm64 | 
| i8ge.metal-24xl | arm64 | 
| i8ge.metal-48xl | arm64 | 
| im4gn.4xlarge | arm64 | 
| im4gn.8xlarge | arm64 | 
| im4gn.16xlarge | arm64 | 

------

## Ajustar a performance das configurações do ENA Express em instâncias do Linux
<a name="ena-express-tune"></a>

Para garantir que o ENA Express funcione de forma eficaz, sua instância Linux deve atender a vários requisitos de configuração de rede.

Em vez de configurar cada opção manualmente, você pode baixar e executar o script de verificação de configurações do ENA Express usando o repositório do Amazon GitHub. O script valida sua instância em relação às configurações necessárias e recomendadas para o ENA Express e emite os comandos exatos para corrigir os problemas encontrados.

[https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh](https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh)

O script verifica as seguintes configurações e configurações:
+ **Tamanho da MTU**: o ENA Express exige uma MTU menor do que a padrão para acomodar cabeçalhos adicionais do AWS SRD. As conexões TCP recém-estabelecidas bloqueiam automaticamente o MSS para mitigar isso, mas o tráfego UDP ainda requer uma MTU menor.
+ **Limite de tamanho da fila de saída TCP**: verifica se o limite de bytes em voo por soquete é suficiente para sustentar o alto throughput. Ambientes com maior latência de rede exigem um limite maior.
+ **Limite da fila de bytes**: confirma se o limite da fila de bytes (BQL) está desativado na interface de rede. O BQL pode restringir a quantidade de dados em fila para transmissão em nível de dispositivo, o que limita o desempenho do ENA Express.
**nota**  
O driver do ENA para a distribuição Amazon Linux desabilita os limites da fila de bytes por padrão.
+ **Autocorking TCP**: verifica se o autocorking TCP está desabilitado. A desabilitação do autocorking pode reduzir a latência de determinados padrões de tráfego TCP do ENA Express, como workloads de solicitação de resposta. Isso pode resultar em um aumento mínimo na sobrecarga de processamento de pacotes.
+ **Tamanho da fila de TX e LLQ grande**: verifica se o tamanho da fila de transmissão da interface de rede é grande o suficiente para um desempenho ideal. O script também verifica se o parâmetro do módulo ENA desabilita explicitamente o atributo Large Low Latency Queue (Large LLQ), pois ele pode reduzir a profundidade da fila de TX disponível. Para obter mais informações sobre o Large LLQ e seu impacto no tamanho da fila de TX, consulte [Large Low Latency Queue (Large LLQ)](https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena#large-low-latency-queue-large-llq) no GitHub.
+ **Tamanho da fila de RX**: verifica se o buffer do anel de recepção da interface de rede é grande o suficiente para lidar com o tráfego de entrada de forma eficiente e evitar quedas de pacotes sob carga.
+ **Tamanhos de buffer TCP e de soquete de rede**: valida se os tamanhos máximos do buffer de recebimento e envio TCP, bem como os padrões e máximos do buffer do soquete de rede principal, são grandes o suficiente para sustentar uma alta de throughput. Essas configurações são importantes em ambientes com maior latência de rede, onde você precisa de buffers maiores para utilizar a conexão.
+ **Controle de congestionamento TCP**: verifica se a configuração do controle de congestionamento TCP está otimizada para uso com o ENA Express em ambientes com maior latência de rede.

O script também relata informações adicionais de diagnóstico, incluindo a versão do driver ENA, estatísticas do ENA SRD, configurações de moderação de interrupção, configuração de fila e tamanhos de buffer de soquete. Essas informações podem ser úteis para solucionar problemas de desempenho do ENA Express.

Para garantir que o driver de rede da sua instância esteja configurado para obter o melhor desempenho, consulte também [ENA Linux Driver Best Practices and Performance Optimization Guide](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst) no GitHub.