IPTables tire-t-il parti des processeurs multicœurs?


10

Chaque paquet est-il traité par un noyau différent? Ou s'agit-il d'un processus à fil unique?


2
Je ne sais pas pourquoi Chopper3 a fermé cette question. Pour y répondre cependant: Iptables n'est vraiment que le front-end de l'espace utilisateur pour le pare-feu Linux qui est netfilter. Netfilter est vraiment un système de hooks dans le noyau autour du traitement des paquets. Chaque paquet est traité par le noyau en déclenchant une interruption. Si votre noyau équilibre les interruptions sur plusieurs processeurs, cela dépend de son âge. Voir ce fil sur StackOverflow à ce sujet. stackoverflow.com/questions/7467688/…
JakePaulus

+1, car je pense que c'est une vraie question.
Sachin Divekar

@JakePaulus Cet équilibrage IRQ n'affectera jamais plus d'un cœur à une interruption. Donc, un changement de cœurs pour chaque paquet sur une seule ligne n'aura jamais lieu?
Nils

Du point de vue de la mémoire cache du processeur, le changement de cœurs pour une seule connexion n'a pas beaucoup de sens - il serait même préférable de ralentir les choses si ces cœurs ne partagent pas le même cache. Mais pourquoi posez-vous cette question?
Nils

@Nils Les interruptions générées par une interface peuvent être redirigées vers un autre processeur moins occupé. De plus, plusieurs interruptions peuvent voir leurs interruptions envoyées à différents CPU pour répartir la charge. Je pense que vous avez raison de dire que le trafic provenant d'une seule interface n'est pas équilibré entre les processeurs par paquet.
JakePaulus

Réponses:


6

Iptables n'est vraiment que le front-end de l'espace utilisateur pour le pare-feu Linux qui est netfilter. Netfilter est vraiment un système de hooks dans le noyau autour du traitement des paquets. Chaque paquet est traité par le noyau en déclenchant une interruption. Si votre noyau équilibre les interruptions sur plusieurs processeurs, cela dépend de son âge. Voir ce fil sur StackOverflow à ce sujet. /programming/7467688/netfilter-hooks-on-multi-core-system

Comme Nils l'a mentionné, ces interruptions ne seraient pas équilibrées par paquet. Ils seraient équilibrés par IRQ (par interface) ou éventuellement déplacés complètement vers un processeur différent si l'un devenait trop occupé.


vous pouvez également limiter vos interruptions ou les affiner à différents cœurs. J'ai vu dans certains cas, ils affinent toutes les interruptions du réseau à quelques cœurs pour assurer le moins de réorganisation des paquets et la migration des processus entre les cœurs.
chandank le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.