GNU/Linux >> Tutoriels Linux >  >> Linux

cat /proc/net/dev et le lien ip -s affichent des statistiques différentes. Lequel ment ?

Sur une machine Squeeze, faites confiance à /proc/net/dev . C'est une façon plus simple et plus fiable d'examiner les mêmes données.

Pour le cas particulier du compte abandonné, je ne peux pas expliquer le problème exact, mais je peux l'observer sur d'autres boîtes Squeeze. Si je m'en souciais, je le signalerais comme un bogue à Debian (et suggérerais que quelqu'un le fasse et le rapporte ici).

Les deux prennent le numéro du tx_dropped champ de net_device_stats . En /proc/net/dev , la ligne est générée par dev_seq_printf_stats à partir de net/core/dev.c .

ip passe, comme d'habitude, par netlink, et plus précisément pour les statistiques des périphériques réseau, rtnetlink. La structure transmise à l'espace utilisateur, rtnl_link_stats .

La structure native utilise unsigned long s, rtnetlink utilise __u32 , une conversion plus ou moins implicite se fait en copy_rtnl_link_stats .

Il est assez facile de comprendre que la version 32 bits est utilisée depuis le début de la structure, rx_packets :tandis que /proc/net/dev affiche 1258629839430, ip affiche 244248462, ce qui correspond approximativement aux 32 derniers bits (plus quelques octets supplémentaires entre les commandes) ; même chose avec le nombre de paquets.

Voici le calcul des chiffres pour ces 2 premiers champs :

% echo '1258629839430 % (2^32)'|bc; echo 244248462
204421702
244248462
% echo '12545003042 % (2^32)'|bc; echo 3955476484 
3955068450
3955476484

Les choses se sont améliorées avec l'introduction de IFLA_STATS64 :

  • dans le noyau (à partir du commit 10708f37ae729baba9b67bd134c3720709d4ae62, disponible en amont dans la v2.6.35 et les versions ultérieures)
  • dans iproute2 (du commit 8864ac9dc5bd5ce049280337deb21191673a02d0, disponible en amont dans v2.6.33-36 et versions ultérieures).

Linux
  1. Comment mapper les périphériques /dev/sdX et /dev/mapper/mpathY à partir du périphérique /dev/dm-Z

  2. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  3. Comment Linux utilise /dev/tty et /dev/tty0

  4. Est-ce une erreur de lier /dev/random à /dev/urandom sous Linux ?

  5. echo ou print /dev/stdin /dev/stdout /dev/stderr

Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

Fichiers /proc/cpuinfo et /proc/meminfo sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

noyau :désactiver /dev/kmem et /dev/mem

Créer un périphérique de bloc virtuel qui écrit dans /dev/null