Como testar o recurso NAPI do Linux?

1

Estou tentando testar as funcionalidades do NAPI no ambiente Linux incorporado. Eu usei ' pktgen ' para gerar o grande número de pacotes e tentei verificar a contagem de interrupções da minha interface de rede em / proc / interrupts .

Descobri que a contagem de interrupções é comparativamente menor que os pacotes gerados. Também estou tentando ajustar o valor ' netdev_budget ' de 1 para 1000 (o padrão é 300) para que eu possa observar a redução na interrupção conta quando o netdev_budget é aumentado.

No entanto, aumentar o netdev_budget não parece ajudar. A interrupção é semelhante àquela da contagem de interrupções observada com o netdev_budget configurado para 300.

Então, aqui estão minhas perguntas:

  1. Qual é o efeito de 'netdev_budget' no NAPI?
  2. Quais outros parâmetros eu posso / devo ajustar para observar as mudanças na contagem de interrupções?
  3. Existe alguma outra maneira que eu possa usar para testar a funcionalidade da NAPI no Linux? (Além de observar diretamente o código do driver de rede)

Qualquer ajuda é muito apreciada.

Obrigado antecipadamente.

    
por sunisiha 07.07.2016 / 07:35

1 resposta

2

Eu escrevi uma postagem abrangente no blog sobre abrangente ajuste de rede que explica tudo sobre monitoramento, ajuste e otimização da pilha de rede do Linux (incluindo o peso do NAPI). Dê uma olhada.

Lembre-se: alguns drivers não desabilitam IRQs da NIC quando o NAPI é iniciado. Eles devem, mas alguns simplesmente não. Você pode verificar isso examinando o manipulador de IRQ no driver para ver se os IRQs estão sendo desativados.

Observe que os IRQs pesados são reativados em alguns casos, conforme mencionado no post do blog e abaixo.

Em relação às suas perguntas:

  1. O aumento de netdev_budget aumenta o número de pacotes que o softirq NET_RX pode processar. O número de pacotes que podem ser processados também é limitado por um limite de tempo, que não é ajustável. Isso é para evitar que o softirq NET_RX comer 100% do uso da CPU. Se o dispositivo não receber pacotes suficientes para processar durante sua alocação de tempo, os hardirqs serão reneabled e o NAPI será desativado.

  2. Você também pode tentar modificar suas configurações de coalescência de IRQ para a NIC, se ela for suportada. Veja a postagem do blog acima para mais informações sobre como fazer isso e o que isso significa exatamente.

  3. Você deve adicionar monitoramento ao seu arquivo /proc/net/softnet_stat . Os campos neste arquivo podem ajudá-lo a descobrir quantos pacotes estão sendo processados, se você está ficando sem tempo, etc.

Uma pergunta para você considerar, se eu puder:

Por que sua taxa de hardirq é importante? Provavelmente não importa, diretamente. O manipulador do hardirq no driver da NIC deve fazer o mínimo de trabalho possível, portanto, executar muito provavelmente não é um problema para o sistema. Se for, você deve medir isso com cuidado, pois parece muito improvável. No entanto, você pode ajustar as configurações de coalescência de IRQ e a afinidade da CPU de IRQ para distribuir o processamento para alterar o número de hardirqs gerados pela NIC e processados por uma CPU específica, respectivamente.

Você deve considerar se provavelmente está mais interessado no processamento de pacotes ou na latência do processamento de pacotes. Dependendo de qual é a preocupação, você pode ajustar sua pilha de rede adequadamente.

Lembre-se: para ajustar e otimizar completamente sua pilha de rede Linux, você precisa monitorar e ajustar cada componente. Eles estão todos interligados e é difícil (e muitas vezes incorreto) monitorar e ajustar apenas um único aspecto da pilha.

    
por 07.07.2016 / 16:50