Monitorar o desempenho de rede de instâncias do EC2
O driver Elastic Network Adapter (ENA) publica métricas de performance de rede com base nas instâncias em que elas estão habilitadas. É possível usar essas métricas para solucionar problemas de performance da instância, escolher o tamanho certo da instância para uma workload, planejar atividades de dimensionamento proativamente e comparar aplicações para determinar se eles maximizam a performance disponível em uma instância.
O Amazon EC2 define os máximos de rede no nível da instância para garantir uma experiência de rede de alta qualidade, incluindo performance consistente da rede entre tamanhos de instância. A AWS fornece máximos para o seguinte em cada instância:
-
Capacidade de largura de banda: cada instância do EC2 tem uma largura de banda máxima para tráfego agregado de entrada e saída, com base no tipo e no tamanho da instância. Algumas instâncias usam um mecanismo de crédito de E/S para alocar a largura de banda da rede com base na utilização média da largura de banda. O Amazon EC2 também tem largura de banda máxima para o tráfego da AWS Direct Connect e da Internet. Para ter mais informações, consulte Largura de banda de rede de instâncias do Amazon EC2.
-
Performance de pacote por segundo (PPS): cada instância do EC2 tem uma performance máxima de PPS, com base no tipo e no tamanho da instância.
-
Conexões rastreadas: o grupo de segurança rastreia cada conexão estabelecida para garantir que os pacotes de retorno sejam entregues como esperado. Há um número máximo de conexões que podem ser rastreadas por instância. Para obter mais informações, consulte Rastreamento de conexão de grupo de segurança do Amazon EC2
-
Acesso ao serviço de link local: o Amazon EC2 fornece um PPS máximo por interface de rede para tráfego a serviços, como o serviço de DNS, o serviço de metadados da instância e o Amazon Time Sync Service.
Quando o tráfego de rede de uma instância excede um máximo, a AWS formata o tráfego que excede o máximo ao enfileirar e eliminar pacotes de rede. É possível monitorar quando o tráfego excede um máximo usando as métricas de performance de rede. Essas métricas informam sobre o impacto no tráfego da rede e possíveis problemas de performance da rede, em tempo real.
Conteúdo
Requisitos
Instâncias do Linux
-
Instale o driver ENA versão 2.2.10 ou posterior. Para verificar a versão instalada, use o comando ethtool. No exemplo a seguir, a versão atende ao requisito mínimo.
[ec2-user ~]$
ethtool -i eth0 | grep version
version: 2.2.10
Para atualizar seu driver ENA, consulte Redes avançadas.
-
Para importar essas métricas para o Amazon CloudWatch, instale o agente CloudWatch. Para obter mais informações, consulte Coletar métricas de performance de rede no Guia do usuário do Amazon CloudWatch.
-
Para oferecer suporte à métrica
conntrack_allowance_available
, instale a versão 2.8.1 do driver do ENA.
Instâncias do Windows
-
Instalar o driver ENA versão 2.2.2 ou posterior. Para verificar a versão instalada, use o Gerenciador de dispositivos da seguinte forma.
-
Abra o Gerenciador de dispositivos executando
devmgmt.msc
. -
Expanda Network Adapters (Adaptadores de rede).
-
Escolha Amazon Elastic Network Adapter , Properties (Propriedades).
-
Na guia Driver, localize Driver Version (Versão do driver).
Para atualizar seu driver ENA, consulte Redes avançadas.
-
-
Para importar essas métricas para o Amazon CloudWatch, instale o agente CloudWatch. Para obter mais informações, consulte Coletar métricas avançadas de rede no Guia do usuário do Amazon CloudWatch.
Métricas para o driver ENA
O driver ENA entrega as seguintes métricas para a instância em tempo real. Elas fornecem o número cumulativo de pacotes na fila ou descartados em cada interface de rede desde a última restauração do driver.
Métrica | Descrição | Com suporte para |
---|---|---|
bw_in_allowance_exceeded |
Número de pacotes na fila ou descartados porque a largura de banda agregada de entrada excedeu o máximo para a instância. |
Todos os tipos de instâncias |
bw_out_allowance_exceeded |
Número de pacotes na fila ou descartados porque a largura de banda agregada de saída excedeu o máximo para a instância. |
Todos os tipos de instâncias |
conntrack_allowance_exceeded |
Número de pacotes descartados porque o monitoramento da conexão excedeu o máximo para a instância e não foi possível estabelecer novas conexões. Isso pode resultar em perda de pacotes para tráfego indo para a instância ou vindo da instância |
Todos os tipos de instâncias |
conntrack_allowance_available |
O número de conexões rastreadas que podem ser estabelecidas pela instância antes de atingir a cota de conexões rastreadas desse tipo de instância. | Somente em instâncias criadas no AWS Nitro System |
linklocal_allowance_exceeded |
Número de pacotes descartados porque o PPS do tráfego para os serviços de proxy local excedeu o máximo para a interface da rede. Isso afeta o tráfego para o serviço de DNS, o Instance Metadata Service e o Amazon Time Sync Service. |
Todos os tipos de instâncias |
pps_allowance_exceeded |
Número de pacotes na fila ou descartados porque o PPS bidirecional excedeu o máximo para a instância. |
Todos os tipos de instâncias |
Exibir as métricas de performance de rede para sua instância do
O procedimento usado dependerá do sistema operacional da instância.
É possível publicar métricas em suas ferramentas favoritas para visualizar os dados das métricas. Por exemplo, é possível publicar as métricas em Amazon CloudWatch usando o agente CloudWatch. O agente permite que você selecione métricas individuais e controle a publicação.
Também é possível usar o ethtool para recuperar as métricas para cada interface de rede, como eth0, conforme mostrado a seguir.
[ec2-user ~]$
ethtool -S
eth0
bw_in_allowance_exceeded: 0 bw_out_allowance_exceeded: 0 pps_allowance_exceeded: 0 conntrack_allowance_exceeded: 0 linklocal_allowance_exceeded: 0 conntrack_allowance_available: 136812
É possível visualizar as métricas usando qualquer consumidor de contadores de performance do Windows. Os dados podem ser analisados de acordo com o manifesto EnaperfCounters. Esse é um arquivo XML que define o provedor do contador de performance e seus countersets.
Para instalar o manifesto
Se você executou a instância usando uma AMI que contém o driver ENA 2.2.2 ou posterior ou usou o script de instalação no pacote de driver para o driver ENA 2.2.2, o manifesto já está instalado. Para instalar o manifesto manualmente, use as seguintes etapas:
-
Remova o manifesto existente usando o seguinte comando:
unlodctr /m:EnaPerfCounters.man
-
Copie o arquivo manifesto
EnaPerfCounters.man
do pacote de instalação do driver para%SystemRoot%\System32\drivers
. -
Instale o novo manifesto usando o seguinte comando:
lodctr /m:EnaPerfCounters.man
Para visualizar métricas usando o monitor de desempenho
-
Abra o Monitor de performance.
-
Pressione Ctrl+N para adicionar novos contadores.
-
Escolha ENA Packets Shaping (Modelagem de pacotes de ENA na lista.
-
Selecione as instâncias a serem monitoradas e escolha Add (Adicionar).
-
Escolha OK.
Métricas do ENA Express
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. Se você tiver habilitado o ENA Express para as anexos de interface de rede na instância de envio e na instância de recebimento, poderá usar as métricas do ENA Express para ajudar a garantir que as instâncias aproveitem ao máximo as melhorias de desempenho que a tecnologia SRD oferece. Por exemplo:
-
Avalie os recursos para garantir que tenham capacidade suficiente para estabelecer mais conexões por SRD.
-
Identifique onde existem potenciais problemas que impedem que pacotes de saída elegíveis usem o SRD.
-
Calcule a porcentagem de tráfego de saída que usa SRD para a instância.
-
Calcule a porcentagem de tráfego de entrada que usa SRD para a instância.
nota
Para produzir métricas, use a versão 2.8 ou superior do driver.
Para ver uma lista de métricas para instâncias do Linux filtradas para o ENA Express, execute o comando ethtool a seguir para a interface de rede (mostrado aqui como eth0
). Anote o valor da métrica ena_srd_mode
.
[ec2-user ~]$
ethtool -S
eth0
| grep ena_srdNIC statistics: ena_srd_mode: 1 ena_srd_tx_pkts: 0 ena_srd_eligible_tx_pkts: 0 ena_srd_rx_pkts: 0 ena_srd_resource_utilization: 0
As métricas a seguir estão disponíveis para todas as instâncias que têm o ENA Express habilitado.
- ena_srd_mode
-
Descreve quais recursos do ENA Express estão habilitados. Os valores são os seguintes:
-
0
= ENA Express desativado, UDP desativado -
1
= ENA Express ativado, UDP desativado -
2
= ENA Express desativado, UDP ativadonota
Isso só acontece quando o ENA Express foi originalmente habilitado e o UDP foi configurado para usá-lo. O valor anterior é retido para tráfego UDP.
-
3
= ENA Express ativado, UDP ativado
-
- ena_srd_eligible_tx_pkts
-
O número de redes é o seguinte:
-
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.
-
As instâncias de envio e de recebimento devem ter o ENA Express configurado.
-
As instâncias de envio e recebimento devem ser executadas na mesma zona de disponibilidade.
-
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.
nota
A métrica de elegibilidade do ENA Express abrange os requisitos de origem e destino e a rede entre os dois endpoints. Pacotes elegíveis ainda podem ser desqualificados depois de já terem sido contados. Por exemplo, se um pacote elegível estiver acima do limite da unidade de transmissão máxima (MTU), ele retornará para a transmissão ENA padrão, embora o pacote ainda apareça como elegível no contador.
-
- ena_srd_tx_pkts
-
O número de pacotes de SRD transmitidos em um determinado período.
- ena_srd_rx_pkts
-
O número de pacotes de SRD recebidos em um determinado período.
- ena_srd_resource_utilization
-
A porcentagem da utilização da memória máxima permitida para conexões por SRD simultâneas que a instância consumiu.
Para confirmar se a transmissão de pacotes está usando SRD, você pode comparar o número de pacotes elegíveis (métrica ena_srd_eligible_tx_pkts
) com o número de pacotes por SRD transmitidos (métrica ena_srd_tx_pkts
) durante um determinado período.
Tráfego de saída (pacotes de saída)
Para garantir que o tráfego de saída use SRD conforme esperado, compare o número de pacotes elegíveis para SRD (ena_srd_eligible_tx_pkts
) com o número de pacotes SRD enviados (ena_srd_tx_pkts
) em um determinado período.
Diferenças significativas entre o número de pacotes elegíveis e o número de pacotes SRD enviados geralmente são causadas por problemas de utilização de recursos. Quando a placa de rede anexada à instância esgota seus recursos máximos ou seus pacotes estão acima do limite de MTU, os pacotes elegíveis não podem ser transmitidos por SRD e devem retornar à transmissão ENA padrão. Os pacotes também podem apresentar essa diferença durante as migrações em tempo real ou as atualizações de servidores em tempo real. É necessária uma avaliação adicional para determinar a causa raiz.
nota
Você pode ignorar pequenas diferenças ocasionais entre o número de pacotes elegíveis e o número de pacotes SRD. Isso pode acontecer quando a instância estabelece uma conexão com outra instância para tráfego SRD, por exemplo.
Para descobrir qual porcentagem do tráfego total de saída em um determinado período usa SRD, compare o número de pacotes SRD enviados (ena_srd_tx_pkts
) com o número total de pacotes enviados para a instância (NetworkPacketOut
) durante esse período.
Tráfego de entrada (pacotes recebidos)
Para descobrir qual porcentagem do tráfego de entrada usa SRD, compare o número de pacotes SRD recebidos (ena_srd_rx_pkts
) em um determinado período com o número total de pacotes recebidos para a instância (NetworkPacketIn
) durante esse período.
Utilização de recursos
A utilização de recursos é baseada no número de conexões SRD simultâneas que uma única instância pode manter em um determinado momento. A métrica de utilização de recursos (ena_srd_resource_utilization
) monitora a utilização atual da instância. À medida que a utilização se aproxima de 100%, você pode esperar problemas de performance. O ENA Express deixa de usar SRD e volta à transmissão ENA padrão, e a possibilidade de pacotes descartados aumenta. A alta utilização de recursos é um sinal de que está na hora de aumentar a escala da instância horizontalmente para melhorar a performance da rede.
nota
Quando o tráfego de rede de uma instância excede um máximo, a AWS formata o tráfego que excede o máximo ao enfileirar e eliminar pacotes de rede.
Persistência
As métricas de saída e entrada são cumulativas enquanto o ENA Express está habilitado para a instância. As métricas deixarão de ser acumulativas se o ENA Express for desativado, mas persistirão enquanto a instância ainda estiver em execução. As métricas serão redefinidas se a instância for reinicializada ou encerrada ou se a interface de rede for desconectada da instância.
Métricas de performance de rede com o driver DPDK para ENA
O driver ENA versão 2.2.0 e posterior oferece suporte a relatórios de métricas de rede. O DPDK 20.11 inclui o driver ENA 2.2.0 e é a primeira versão do DPDK a suportar esse recurso.
É possível usar uma aplicação de exemplo para visualizar estatísticas DPDK. Para iniciar uma versão interativa da aplicação de exemplo, execute o seguinte comando.
./app/dpdk-testpmd -- -i
Dentro desta sessão interativa, é possível inserir um comando para recuperar dados estatísticos estendidos para uma porta. O comando de exemplo a seguir recupera as estatísticas da porta 0.
show port xstats 0
Veja a seguir um exemplo de uma sessão interativa com a aplicação de exemplo DPDK.
[root@ip-192.0.2.0 build]# ./app/dpdk-testpmd -- -i EAL: Detected 4 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: Probing VFIO support... EAL: Invalid NUMA socket, default to 0 EAL: Invalid NUMA socket, default to 0 EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket 0) EAL: No legacy callbacks, legacy socket not created Interactive-mode selected Port 0: link state change event testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc Warning! port-topology=paired and odd forward ports number, the last port will pair with itself. Configuring Port 0 (socket 0) Port 0: 02:C7:17:A2:60:B1 Checking link statuses... Done Error during enabling promiscuous mode for port 0: Operation not supported - ignore testpmd> show port xstats 0 ###### NIC extended statistics for port 0 rx_good_packets: 0 tx_good_packets: 0 rx_good_bytes: 0 tx_good_bytes: 0 rx_missed_errors: 0 rx_errors: 0 tx_errors: 0 rx_mbuf_allocation_errors: 0 rx_q0_packets: 0 rx_q0_bytes: 0 rx_q0_errors: 0 tx_q0_packets: 0 tx_q0_bytes: 0 wd_expired: 0 dev_start: 1 dev_stop: 0 tx_drops: 0 bw_in_allowance_exceeded: 0 bw_out_allowance_exceeded: 0 pps_allowance_exceeded: 0 conntrack_allowance_exceeded: 0 linklocal_allowance_exceeded: 0 rx_q0_cnt: 0 rx_q0_bytes: 0 rx_q0_refill_partial: 0 rx_q0_bad_csum: 0 rx_q0_mbuf_alloc_fail: 0 rx_q0_bad_desc_num: 0 rx_q0_bad_req_id: 0 tx_q0_cnt: 0 tx_q0_bytes: 0 tx_q0_prepare_ctx_err: 0 tx_q0_linearize: 0 tx_q0_linearize_failed: 0 tx_q0_tx_poll: 0 tx_q0_doorbells: 0 tx_q0_bad_req_id: 0 tx_q0_available_desc: 1023 testpmd>
Para obter mais informações sobre a aplicação de exemplo e usá-lo para recuperar dados estatísticos estendidos, consulte Guia do usuário da aplicação Testpmd
Métricas em instâncias que executam o FreeBSD
A partir da versão 2.3.0, o driver ENA FreeBSD suporta a coleta de métricas de performance de rede em instâncias que executam o FreeBSD. Para habilitar a coleção de métricas do FreeBSD, insira o seguinte comando e defina o intervalo
como um valor entre 1 e 3.600. Isso especifica com que frequência, em segundos, serão coletadas métricas do FreeBSD.
sysctl dev.ena.
network_interface
.eni_metrics.sample_interval=interval
Por exemplo, o comando a seguir define o driver para coletar métricas do FreeBSD na interface de rede 1 a cada 10 segundos:
sysctl dev.ena.1.eni_metrics.sample_interval=10
Para desativar a coleta de métricas do FreeBSD, é possível executar o comando anterior e especificar 0
como o interval
(intervalo).
Depois de habilitar a coleta de métricas do FreeBSD, é possível recuperar o conjunto mais recente de métricas coletadas ao executar o comando apresentado a seguir.
sysctl dev.ena.
network_interface
.eni_metrics