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.
No canto superior esquerdo da página, selecione uma região e um grupo de recursos.
Clique em no ID da ENI secundária desejada para abrir sua página de detalhes.
-
Na seção Basic Information, localize o parâmetro Queues. Este valor representa a contagem atual de filas.

Se você modificou a contagem de filas, o valor alterado será exibido.
-
Caso não tenha modificado a contagem de filas:
Se a ENI não estiver associada a uma instância, nenhum valor será exibido.
Se a ENI estiver associada a uma instância, a contagem padrão de filas para o tipo de instância será exibida.
Se você modificou a contagem de filas, o valor alterado será exibido.
-
Caso não tenha modificado a contagem de filas:
Se a ENI não estiver associada a uma instância, nenhum valor será exibido.
Se a ENI estiver associada a uma instância, a contagem padrão de filas para o tipo de instância será exibida.
-
Conectar-se a uma instância Linux.
NotaPara instâncias Windows, visualize a contagem de filas da ENI no ECS console ou chamando uma operação da API.
-
Visualize a configuração de rede com
ip a:
-
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 eth0Analise 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.

Para modificar a contagem máxima de filas, consulte Modifique a contagem de filas de uma ENI.
Para modificar a contagem de filas do SO, consulte Modifique a contagem de filas usada pelo SO.
Só é possível modificar a contagem de filas quando a ENI estiver Available, ou Bound com a instância Stopped.
A contagem de filas não pode exceder o número máximo de filas por ENI para o tipo de instância.
A contagem total de filas de todas as ENIs em uma instância não pode exceder a cota total de filas para o tipo de instância.
No canto superior esquerdo da página, selecione uma região e um grupo de recursos.
Clique em no ID da ENI secundária desejada para abrir sua página de detalhes.
-
Clique em Modify Queue Count.

Clique em OK.
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.
-
Visualize a configuração de rede com
ip address show:
-
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 três estão em uso.

-
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 NNé o número de filas que você deseja que a ENI utilize.Ndeve 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 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.
-
(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 -
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 -
Descompacte o pacote
ecs_mq:tar -xzf ecs_mq_latest.tgz -
Acesse o diretório de trabalho:
cd ecs_mq/ -
Execute o script de instalação do
ecs_mq:bash install.sh redhat 9NotaSubstitua
redhate9pelo nome e número da versão principal do seu sistema operacional. -
Inicie o serviço
ecs_mq:systemctl start ecs_mqO serviço ativa automaticamente a afinidade de IRQ.
Visualize a contagem de filas da ENI
Use the console
Use the API
Chame a operação DescribeNetworkInterfaceAttribute. O parâmetro de resposta QueueNumber indica a contagem de filas.
Check within the instance
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
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.
O exemplo a seguir ajusta o número de filas em uma instância Alibaba Cloud Linux 3 com NIC multi-queue.
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.
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.
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.