GNU/Linux >> Linux Esercitazione >  >> Linux

cat /proc/net/dev e ip -s link mostrano statistiche diverse. Quale sta mentendo?

Su una macchina Squeeze, fidati di /proc/net/dev . È un modo più diretto e affidabile di esaminare gli stessi dati.

Per il caso particolare del conteggio delle cadute, non posso spiegare il problema esatto, ma posso osservarlo su altre scatole di Squeeze. Se mi interessasse, lo segnalerei come un bug a Debian (e suggerirei che qualcuno lo faccia e lo riporti qui).

Entrambi prendono il numero dal tx_dropped campo di net_device_stats . In /proc/net/dev , la riga è generata da dev_seq_printf_stats da net/core/dev.c .

ip va, come al solito, tramite netlink, e più precisamente per le statistiche dei dispositivi di rete, rtnetlink. La struttura passata allo spazio utente, rtnl_link_stats .

La struttura nativa utilizza unsigned long s, rtnetlink utilizza __u32 , viene eseguita una conversione più o meno implicita in copy_rtnl_link_stats .

È piuttosto facile rilevare che la versione a 32 bit viene utilizzata dall'inizio della struttura, rx_packets:while /proc/net/dev mostra 1258629839430, ip mostra 244248462, che corrisponde all'incirca agli ultimi 32 bit (più qualche altro byte tra i comandi); stessa cosa con il conteggio dei pacchetti.

Ecco il numero che scricchiola per quei 2 primi campi:

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

Le cose sono migliorate con l'introduzione di IFLA_STATS64 :

  • nel kernel (dal commit 10708f37ae729baba9b67bd134c3720709d4ae62, disponibile a monte nella v2.6.35 e successive)
  • in iproute2 (dal commit 8864ac9dc5bd5ce049280337deb21191673a02d0, disponibile a monte nella versione 2.6.33-36 e successive).

Linux
  1. Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

  2. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  3. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

  4. kernel:disabilitare /dev/kmem e /dev/mem

  5. È sbagliato collegare /dev/random a /dev/urandom su Linux?

In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

Quando usare /dev/random vs /dev/urandom?

/proc/cpuinfo e /proc/meminfo in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions