SoftIRQs e processamento rápido de pacotes na rede Linux

4

Eu tenho lido sobre o ajuste de desempenho do Linux para obter os tempos de processamento de pacotes mais rápidos ao receber dados do mercado financeiro. Vejo que quando o NIC recebe um pacote, ele o coloca na memória via DMA e, em seguida, gera um HardIRQ - que, por sua vez, define algumas configurações de NAPI e gera um SoftIRQ. O SoftIRQ, em seguida, usa drivers de dispositivo / NAPI para ler dados dos buffers RX via pesquisa, mas isso só é executado por algum tempo limitado (net.core.netdev_budget, padronizado para 300 pacotes). Estes são em referência a um servidor real rodando o Ubuntu, com uma placa de rede solarflare Minhas perguntas estão abaixo:

  1. Se cada HardIRQ gera um SoftIRQ, e o driver de dispositivo lê vários pacotes em 1 vez (netdev_budget), o que acontece com os SoftIRQs gerados por cada um dos pacotes que foram drenados do buffer RX em 1 go (Cada pacote recebido vai levantar um irq duro e depois macio)? Eles estão na fila?

  2. Por que o NAPI usa o polling para drenar o RX_buffer? O sistema acabou de gerar um SoftIRQ e está lendo o buffer RX, então por que o polling?

  3. Presumivelmente, a drenagem do RX_Buffer através do softirq, só acontecerá de um RX_Buffer específico e não de múltiplos RX_Buffers? Em caso afirmativo, aumentar o netdev_budget pode atrasar o processamento / drenagem de outros RX_buffers? Ou isso pode ser mitigado atribuindo diferentes RX_buffers a diferentes núcleos?

  4. Existem configurações para garantir que os HardIRQs sejam criados e tratados imediatamente. No entanto, os SoftIRQs podem ser processados posteriormente. Existem configurações / configurações para garantir que os SoftIRQs relacionados à rede RX também sejam tratados com prioridade máxima e sem atrasos?

por Nidhi 22.06.2016 / 14:27

1 resposta

0

Em relação à resposta à 4ª pergunta,

Sim, os cartões de rede NIC são os periféricos associados ao softirq, já que softirq é a prioridade mais alta em todos os mecanismos da metade inferior.

Então, para proibir o atraso que pode levar à queda do pacote, softirqs são usados.

Basicamente, o mecanismo NAPI também se destina a manipular os pacotes aqueles que estão chegando com uma velocidade que o kernel não pode manipular com o mecanismo de interrupção devido a algumas razões.

Eu sugiro apenas ir para o capítulo de drivers de rede no LDD3. Aqui é o link que pode ser útil para o mesmo.

    
por 15.11.2016 / 11:13