8.3. Aperçu des réceptions de paquets
Pour mieux analyser les congestions réseau et problèmes de performance, il faut comprendre comment la réception de paquets fonctionne. La réception de paquets est importante dans les réglages des performances réseau car le chemin de réception est souvent l'endroit où les trames sont perdues. Les trames perdues dans le chemin de réception peuvent causer un handicap significatif aux performances réseau.
Figure 8.1. Diagramme du chemin de réception réseau
Le noyau Linux reçoit chaque trame et la soumet à un processus composé de quatre étapes :
- Réception du matériel : la carte d'interface réseau (ou NIC) reçoit la trame sur le fil. Selon la configuration de son pilote, la carte réseau transfère la trame à une mémoire-tampon de matériel interne ou à un tampon en anneau spécifié.
- IRQ matérielle : la NIC affirme la présence d'une trame net en interrompant le CPU. Ceci cause au pilote NIC de reconnaître l'interruption et de programmer une opération IRQ logicielle.
- IRQ logicielle : cette étape implémente le processus de réception de trames et est exécuté dans un contexte
softirq
. Cela signifie que l'étape empêche toutes les applications de s'exécuter sur le CPU spécifié, mais permet toujours à des IRQ matérielles d'être affirmées.Dans ce contexte (exécution sur le même CPU en tant qu'IRQ matérielle, minimisant ainsi l'en-tête de verrouillage), le noyau supprime la trame des tampons du matériel de la carte réseau et la traite via la pile réseau. À partir de là, la trame est transférée, abandonnée, ou passée à un socket d'écoute cible.Lorsque passée à un socket, la trame est ajoutée à l'application propriétaire du socket. Ce processus est effectué de manière itérative jusqu'à ce qu'il ne reste plus de trames au tampon du matériel de la NIC, ou jusqu'à ce que device weight (dev_weight
) soit atteint. Pour obtenir davantage d'informations sur « device weight », veuillez consulter la Section 8.4.1, « Mémoire tampon matérielle de la carte d'interface réseau (NIC) ». - Réception de l'application : l'application reçoit la trame et la sort de toute file d'attente de sockets possédés via des appels POSIX standards (
read
,recv
,recvfrom
). À ce moment, les données reçues sur le réseau n'existent plus sur la pile réseau.
CPU/cache affinity
Pour maintenir un haut débit sur le chemin de réception, il est recommandé de conserver le cache L2 à chaud. Comme décrit précédemment, les tampons réseau sont reçus sur le même CPU que les IRQ qui ont signalés leurs présences. Cela signifie que les données de tampon seront sur le cache L2 de ce CPU de réception.
Pour tirer profit de ceci, veuillez placer les affinités de processus sur les applications censées recevoir le plus de données sur la carte réseau qui partage le même cœur que le cache L2. Cela maximisera les chances d'accès au cache et améliorera les performances par la même occasion.