GNU/Linux >> LINUX-Kenntnisse >  >> Linux

cat /proc/net/dev und ip -s link zeigen unterschiedliche Statistiken. Welcher lügt?

Vertrauen Sie auf einer Squeeze-Maschine /proc/net/dev . Es ist eine einfachere und zuverlässigere Art, dieselben Daten zu betrachten.

Für den besonderen Fall des Dropped Count kann ich das genaue Problem nicht erklären, aber ich kann es bei anderen Squeeze-Boxen beobachten. Wenn es mich interessierte, würde ich es als Fehler an Debian melden (und vorschlagen, dass jemand es tut und hier zurückmeldet).

Beide nehmen die Nummer aus der tx_dropped Feld von net_device_stats . In /proc/net/dev , die Zeile wird durch dev_seq_printf_stats generiert ab net/core/dev.c .

ip geht wie üblich über netlink, genauer gesagt für Netzwerkgerätestatistiken, rtnetlink. Die an den Userspace übergebene Struktur, rtnl_link_stats .

Die native Struktur verwendet unsigned long s, rtnetlink verwendet __u32 , erfolgt eine mehr oder weniger implizite Konvertierung in copy_rtnl_link_stats .

Es ist ziemlich einfach zu erkennen, dass die 32-Bit-Version vom Anfang der Struktur verwendet wird, rx_packets:while /proc/net/dev zeigt 1258629839430, ip zeigt 244248462, was ungefähr den letzten 32 Bits entspricht (plus ein paar weitere Bytes zwischen den Befehlen); dasselbe gilt für die Paketanzahl.

Hier ist die Zahlenverarbeitung für diese beiden ersten Felder:

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

Mit der Einführung von IFLA_STATS64 wurde es besser :

  • im Kernel (von Commit 10708f37ae729baba9b67bd134c3720709d4ae62, verfügbar in v2.6.35 und höher)
  • in iproute2 (von Commit 8864ac9dc5bd5ce049280337deb21191673a02d0, verfügbar in Version 2.6.33-36 und höher).

Linux
  1. So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

  2. /proc/[pid]/pagemaps und /proc/[pid]/maps | Linux

  3. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

  4. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0

  5. Ist es falsch, /dev/random unter Linux mit /dev/urandom zu verknüpfen?

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Kernel:/dev/kmem und /dev/mem deaktivieren

Wie Linux /dev/tty und /dev/tty0 verwendet

Erstellen Sie ein virtuelles Blockgerät, das in /dev/null schreibt