8.5. Considérations sur la multidiffusion
Lorsque de multiples applications écoutent un groupe de multidiffusion, le code du noyau qui gère les trames de multidiffusion doit, de par sa conception, dupliquer les données réseau pour chaque socket individuel. Cette duplication prend du temps et se produit dans le contexte
softirq
.
Ainsi, l'ajout de multiples écouteurs sur un seul groupe de multidiffusion a un impact direct sur le temps d'exécution du contexte de
softirq
. L'ajout d'un écouteur à un groupe de multidiffusion implique que le noyau doit créer une copie supplémentaire pour chaque trame reçue pour ce groupe.
L'effet de ceci est minimal avec des faibles volumes de trafic et faibles nombres d'écouteurs. Cependant, lorsque de multiples sockets écoutent un groupe de multidiffusion à trafic volumineux, le temps d'exécution plus élevé du contexte
softirq
peut conduire à des pertes de trame sur les files de la carte réseau et des sockets. Un temps d'exécution softirq
plus élevé se traduit par une réduction des possibilités pour l'exécution des applications sur des systèmes lourdement chargés. Ainsi, la vitesse à laquelle les trames de multidiffusion sont perdues augmente au même rythme que le nombre d'applications écoutant un groupe de multidiffusion volumineux augmente.
Résolvez cette perte de trame en optimisant les files des sockets et mémoires tampon de matériel NIC, comme le décrit la Section 8.4.2, « File de sockets » ou la Section 8.4.1, « Mémoire tampon matérielle de la carte d'interface réseau (NIC) ». Alternativement, vous pouvez optimiser l'utilisation des sockets d'une application. Pour ce faire, configurez l'application pour contrôler un seul socket et rapidement disséminer les données de réseau reçues vers d'autres processus de l'espace utilisateur.