Todos os produtos
Search
Central de documentação

Elastic Compute Service:NIC multi-queue

Última atualização: Jul 02, 2026

Distribua o processamento de pacotes entre vários núcleos de CPU para melhorar o throughput da rede e reduzir a latência.

Por que usar NIC multi-queue

Uma interface de rede com fila única depende de um único núcleo de CPU para todos os pacotes, o que pode causar sobrecarga da CPU, latência e perda de pacotes. O NIC multi-queue distribui o tráfego entre vários núcleos para melhorar a utilização dos recursos.

Nas mesmas condições de PPS e largura de banda, duas filas melhoram o desempenho da rede em 50% a 100% em comparação a uma fila única. Quatro filas proporcionam ganhos ainda maiores:

  • Melhor utilização de múltiplos núcleos: Distribui o tráfego entre os núcleos da CPU para equilibrar a carga e aumentar a utilização.

  • Maior throughput: O processamento paralelo de pacotes aumenta o throughput, especialmente sob cargas elevadas.

  • Menor latência: A distribuição de pacotes entre filas reduz o congestionamento e a latência.

  • Redução na perda de pacotes: Evita a perda de pacotes causada pela sobrecarga de uma fila única durante picos de tráfego.

Configurações inadequadas podem degradar o desempenho. Por exemplo, uma contagem incorreta de filas ou ajustes errados de afinidade de CPU causam trocas de contexto desnecessárias, e poucas filas subutilizam os recursos de hardware.

Quando uma ENI é associada a uma instância, sua contagem de filas assume o valor padrão do tipo de instância. Para ajustar manualmente essa contagem, avalie primeiro seu caso de uso e as condições de hardware.

Como funciona o NIC multi-queue

  • Arquitetura de filas

    Uma ENI suporta múltiplas filas combinadas, cada uma processada por um núcleo de CPU independente. Isso permite o processamento paralelo de pacotes, reduz a contenção de locks e aproveita totalmente o desempenho de múltiplos núcleos.

    As filas de recebimento (RX) e transmissão (TX) são os dois tipos usados para processar pacotes. Cada fila combinada consiste em uma fila RX e uma fila TX:

    • Fila RX: Processa pacotes recebidos. A interface de rede distribui cada pacote para uma fila RX específica com base nas regras de Receive Side Scaling (RSS), como round-robin ou hash baseado em fluxo.

      Algumas famílias de tipos de instância suportam RSS personalizado para ENIs, que utiliza algoritmos de hash para distribuir o tráfego entre diferentes filas RX.

    • Fila TX: Gerencia pacotes enviados. As aplicações colocam os pacotes em uma fila TX, e a interface de rede os envia com base na sequência ou prioridade.

  • Suporte a afinidade de IRQ

    Cada fila possui uma interrupção independente. A afinidade de IRQ distribui o tratamento de interrupções entre os núcleos da CPU para evitar que um único núcleo fique sobrecarregado.

    A afinidade de IRQ está ativada por padrão em todas as imagens públicas, exceto no Red Hat Enterprise Linux. Consulte Configure afinidade de IRQ.

Limitações

  • Apenas alguns tipos de instância suportam NIC multi-queue. Consulte Famílias de tipos de instância. Se o valor da coluna Multi-queue for maior que 1, o tipo de instância suporta NIC multi-queue.

    • Para tipos de instância suportados, o NIC multi-queue é ativado automaticamente ao associar uma ENI.

    • A contagem de filas listada para um tipo de instância refere-se ao número máximo de filas por ENI suportado por esse tipo.

    • Chame a operação da API DescribeInstanceTypes com o parâmetro InstanceTypeFamily para consultar métricas relacionadas a filas:

      • Contagem padrão de filas

        PrimaryEniQueueNumber: contagem padrão de filas para a ENI primária. SecondaryEniQueueNumber: contagem padrão de filas para uma ENI secundária.

      • Máximo de filas por ENI

        MaximumQueueNumberPerEni: número máximo de filas por ENI para a família de tipos de instância.

      • Cota total de filas

        TotalEniQueueQuantity: cota total de filas para a família de tipos de instância.

  • Imagens públicas com versões de kernel anteriores a 2.6 podem não suportar NIC multi-queue. Utilize as imagens públicas mais recentes.

  • Visualize a contagem de filas da ENI

    Use the console

    1. Acesse ECS Console - Elastic Network Interfaces.

    2. No canto superior esquerdo da página, selecione uma região e um grupo de recursos.地域

    3. Clique em no ID da ENI secundária desejada para abrir sua página de detalhes.

    4. Na seção Basic Information, localize o parâmetro Queues. Este valor representa a contagem atual de filas.

      image

      • Se você modificou a contagem de filas, o valor alterado será exibido.

      • Caso não tenha modificado a contagem de filas:

    Use the API

    Chame a operação DescribeNetworkInterfaceAttribute. O parâmetro de resposta QueueNumber indica a contagem de filas.

    • Se você modificou a contagem de filas, o valor alterado será exibido.

    • Caso não tenha modificado a contagem de filas:

    Check within the instance

    1. Conectar-se a uma instância Linux.

      Nota

      Para instâncias Windows, visualize a contagem de filas da ENI no ECS console ou chamando uma operação da API.

    2. Visualize a configuração de rede com ip a:

      image

    3. Verifique se a ENI primária eth0 suporta NIC multi-queue.

      Este exemplo usa a ENI primária. Para verificar uma ENI secundária, substitua o identificador por eth1, eth2 ou outro valor.

      ethtool -l eth0

      Analise a saída:

      • Se "Combined" em "Pre-set maximums" for maior que 1, a ENI suporta NIC multi-queue. Esse valor corresponde à contagem máxima de filas.

      • "Combined" em "Current hardware settings" indica a contagem atual de filas em uso.

      Neste exemplo, a ENI suporta no máximo três filas combinadas (RX+TX) e atualmente utiliza três.

      image

    Modifique a contagem de filas da ENI

    Ao associar uma ENI a uma instância, sua contagem de filas assume o valor padrão do tipo de instância. É possível ajustá-la no console ou chamando uma operação da API. Observe o seguinte:

    Use the console

    1. Acesse ECS Console - Elastic Network Interfaces.

    2. No canto superior esquerdo da página, selecione uma região e um grupo de recursos.地域

    3. Clique em no ID da ENI secundária desejada para abrir sua página de detalhes.

    4. Clique em Modify Queue Count.

      image

    5. Clique em OK.

    Use the API

    Chame a operação ModifyNetworkInterfaceAttribute e defina o parâmetro QueueNumber para modificar a contagem de filas.

    A nova contagem de filas entra em vigor na próxima vez que a instância associada for iniciada.

    Modifique a contagem de filas do SO

    Ao modificar a contagem de filas da ENI, o SO aplica automaticamente a nova configuração.

    Também é possível ajustar o número de filas que a ENI usa ativamente. Esse valor deve ser menor ou igual à contagem de filas configurada.

    Nota
    • Alterar a contagem de filas usada pelo SO não afeta a contagem configurada da ENI nem aparece no console ou nas respostas da API.

    • Essa alteração é temporária e não persiste após reinicializações da instância.

    O exemplo a seguir ajusta o número de filas em uma instância Alibaba Cloud Linux 3 com NIC multi-queue.

    1. Conectar-se a uma instância Linux.

    2. Visualize a configuração de rede com ip address show:

      image

    3. Verifique se a ENI primária eth0 suporta NIC multi-queue.

      Este exemplo usa a ENI primária. Para verificar uma ENI secundária, substitua o identificador por eth1, eth2 ou outro valor.

      ethtool -l eth0
    4. Analise a saída:

      • Se "Combined" em "Pre-set maximums" for maior que 1, a ENI suporta NIC multi-queue. Esse valor corresponde à contagem máxima de filas.

      • "Combined" em "Current hardware settings" indica a contagem atual de filas em uso.

      Neste exemplo, a ENI suporta no máximo três filas combinadas (RX+TX) e três estão em uso.

      image

    5. Defina o número de filas ativas para a ENI primária eth0 como 2.

      Este exemplo usa a ENI primária. Para ajustar uma ENI secundária, substitua o identificador por eth1, eth2 ou outro valor.

      sudo ethtool -L eth0 combined N

      N é o número de filas que você deseja que a ENI utilize. N deve ser menor ou igual ao valor "Combined" em "Pre-set maximums".

      Defina a contagem de filas da ENI primária como 2:

      sudo ethtool -L eth0 combined 2

    Configure afinidade de IRQ

    O NIC multi-queue geralmente requer a configuração de afinidade de IRQ para atribuir interrupções de diferentes filas a núcleos específicos da CPU, reduzindo a contenção e melhorando o desempenho.

    Nota
    • Todas as imagens públicas, exceto Red Hat Enterprise Linux, têm a afinidade de IRQ ativada por padrão.

    • O Red Hat Enterprise Linux suporta afinidade de IRQ, mas não a ativa por padrão. Siga as etapas abaixo para configurá-la.

    As etapas a seguir utilizam o script ecs_mq para configurar a afinidade de IRQ em uma imagem Red Hat Enterprise Linux 9.2. Outras imagens possuem a afinidade de IRQ ativada por padrão.

    1. Conectar-se a uma instância Linux.

    2. (Opcional) Pare o serviço irqbalance.

      O serviço irqbalance ajusta dinamicamente a afinidade de IRQ, o que pode entrar em conflito com o ecs_mq. Pare-o primeiro.

      systemctl stop irqbalance.service
    3. Baixe a versão mais recente do script ecs_mq:

      wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/ecs_mq/ecs_mq_latest.tgz

      Correções na versão mais recente do ecs_mq

      Correções na versão mais recente do ecs_mq em comparação à versão anterior do ecs_mq:

      • Prioriza a vinculação de interrupções a CPUs no mesmo nó NUMA do dispositivo PCIe da ENI.

      • Otimiza a lógica de ajuste para múltiplos dispositivos de rede.

      • Ajusta a lógica de vinculação de interrupções com base na proporção entre filas da NIC e núcleos de CPU.

      • Otimiza a vinculação de interrupções com base na posição dos siblings da CPU.

      • Corrige o aumento na latência de acesso à memória causado por vinculações cross-NUMA na versão anterior.

      • O novo modo do ecs_mq está ativado por padrão. Alterne entre os modos:

        • Modo antigo do ecs_mq: ecs_mq_rps_rfs old

        • Novo modo do ecs_mq: ecs_mq_rps_rfs new

      • Corrige um problema em que o comando ethtool não era encontrado durante o hot-plugging de ENI em alguns sistemas, causando falha no ecs_mq_rps_rfs.

      Nota

      O novo ecs_mq oferece uma melhoria de 5% a 30% no desempenho de rede em comparação ao ecs_mq antigo para a maioria dos cenários de PPS e BPS em testes de rede.

    4. Descompacte o pacote ecs_mq:

      tar -xzf ecs_mq_latest.tgz
    5. Acesse o diretório de trabalho:

      cd ecs_mq/
    6. Execute o script de instalação do ecs_mq:

      bash install.sh redhat 9
      Nota

      Substitua redhat e 9 pelo nome e número da versão principal do seu sistema operacional.

    7. Inicie o serviço ecs_mq:

      systemctl start ecs_mq

      O serviço ativa automaticamente a afinidade de IRQ.

    Teste diferentes combinações de contagem de filas e afinidade de IRQ enquanto monitora o throughput e a latência para encontrar o equilíbrio ideal.