8.5. Considerações do Multicast
Quando várias aplicações escutam um grupo de multicast, o código do kernel que lida com quadros multicast é exigido pelo projeto para duplicar os dados da rede para cada soquete individual. Esta duplicação é demorada e ocorre no contexto
softirq
.
Adicionar vários ouvintes em um único grupo multicast, portanto, tem um impacto direto sobre o tempo de execução do contexto
softirq
. Adicionar um ouvinte a um grupo multicast implica que o kernel deve criar uma cópia adicional para cada quadro recebido para esse grupo.
O efeito disto é mínimo em baixo volume de tráfego e números ouvinte pequenos. No entanto, quando soquetes múltiplas escutam um grupo de multicast de alto tráfego, o aumento do tempo de execução do contexto
softirq
pode levar a despejos de quadros, tanto na placa de rede quanto na fila de socket. Aumento de tempos de execução do softirq
traduzi em uma redução de oportunidade para que aplicações sejam executados em sistemas fortemente carregados, por isso a taxa em que os quadros multicast são perdidos aumenta à medida que o número de aplicações de escuta de grupos de multicast de alto volume aumenta.
Resolva esta perda de quadro otimizando suas filas de sockets e buffers de hardware NIC, como descrito em Seção 8.4.2, “Fila de Soquete” or Seção 8.4.1, “Buffer de Hardware NIC”. Como forma alternativa, você poderá otimizar o uso de um soquete de aplicativo. Para fazer isto, configure o aplicativo para controlar um soquete único e disseminar os dados de rede recebidos rapidamente para outros processo de espaço de usuário.