Monitorar a performance de rede de sua instância do EC2 - Amazon Elastic Compute Cloud

Monitorar a performance de rede de sua instância 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 do grupo de segurança

  • 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.

Requisitos

Os seguintes requisitos se aplicam às 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 o driver ENA versão 2.8.1.

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.

As métricas a seguir estão disponíveis em instâncias do Linux, instâncias do FreeBSD e ambientes DPDK.

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 desenvolvidas no AWS Nitro System.

Não é compatível com instâncias do FreeBSD ou ambientes DPDK.

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 Linux

É 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

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. Você pode usar as métricas do ENA Express para ajudar a garantir que suas instâncias aproveitem ao máximo as melhorias de performance 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.

As seguintes métricas do ENA Express estão disponíveis por meio do comando ethtool para instâncias baseadas no Linux.

  • 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 ativado

      nota

      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 pacotes de rede enviados em um determinado período que atendem aos requisitos de elegibilidade do SRD, como se segue:

    • 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 sub-rede.

    • 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 ver uma lista de métricas filtradas para o ENA Express, execute o seguinte comando ethtool para a interface de rede (mostrado aqui como eth0):

[ec2-user ~]$ ethtool -S eth0 | grep ena_srd NIC statistics: ena_srd_mode: 0 ena_srd_tx_pkts: 0 ena_srd_eligible_tx_pkts: 0 ena_srd_rx_pkts: 0 ena_srd_resource_utilization: 0
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 na documentação do DPDK.

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 coletar métricas do FreeBSD, será possível recuperar o conjunto mais recente de métricas coletadas executando o seguinte comando.

sysctl dev.ena.network_interface.eni_metrics