1 votes

Influence de l'exécution du code du noyau sur la charge moyenne dans top?

Je teste la quantité de CPU utilisée par iptables pour le NAT. Peut-être serait-il plus précis de dire "la quantité de CPU utilisée par le module kernel netfilter".

L'approche que j'ai prise a été d'essayer de vider le système de tous les processus utilisateur, d'exécuter le streaming et de vérifier la charge moyenne dans top. Dans ce cas, les charges moyennes sont assez faibles, comme si le processeur n'était pas affecté par le routage des paquets.

Cependant, après avoir lu un peu sur ce que signifie la charge moyenne (ici), il semble que cela ne représente pas l'utilisation du CPU mais la longueur de la file d'attente des processus.

D'après ma compréhension actuelle, l'exécution des modules kernel n'est pas considérée comme des processus, c'est pourquoi elle ne sera jamais répertoriée dans la file d'attente des processus.

Cela signifie-t-il que la seule façon de détecter une surcharge du CPU par du code kernel est de l'exécuter avec un code utilisateur et de voir le code utilisateur échouer car il ne reçoit pas de temps de processeur ?

Un exemple simple pour formuler la question. Si un morceau de code kernel avait un bug de "boucle occupée", comment détecteriez-vous que c'est le kernel qui surutilise le cpu ?

1voto

F. Hauri Points 969

Vous pourriez simplement ajouter vos propres règles de traçage (en utilisant un port tcp inutilisé, par exemple) :

for table in $(

``Une fois les règles prêtes, vous pourriez établir une connexion depuis un autre endroit :

nc 192.168.1.31 8
(UNKNOWN) [192.168.1.31] 8 (?) : Connection refused

Ensuite, jetez un œil à votre kern.log :

Dec 22 12:15:33 localhost kernel: [4237698.275654] start-nat-PREROUTING IN=br0 OUT= PHYSIN=eth0 MAC=01...
Dec 22 12:15:33 localhost kernel: [4237698.275662] end-nat-PREROUTING IN=br0 OUT= PHYSIN=eth0 MAC=01...
Dec 22 12:15:33 localhost kernel: [4237698.275674] start-filter-INPUT IN=br0 OUT= PHYSIN=eth0 MAC=01...
Dec 22 12:15:33 localhost kernel: [4237698.275681] end-filter-INPUT IN=br0 OUT= PHYSIN=eth0 MAC=01...
Dec 22 12:15:33 localhost kernel: [4237698.275688] start-nat-INPUT IN=br0 OUT= PHYSIN=eth0 MAC=01...
Dec 22 12:15:33 localhost kernel: [4237698.275695] end-nat-INPUT IN=br0 OUT= PHYSIN=eth0 MAC=01...

Ces règles de test peuvent être simplement supprimées :

iptables-save |
    sed -ne '/^\*/{s/^.//;h;};
             /dport 8 -j LOG/{G;s/^-A\(.*\)\n\(.*\)$/iptables -t \2 -D\1/;p}
    ' | sh``

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X