GNU/Linux >> Tutoriales Linux >  >> Linux

cat /proc/net/dev e ip -s link muestran diferentes estadísticas. ¿Cuál miente?

En una máquina Squeeze, confíe en /proc/net/dev . Es una forma más directa y confiable de ver los mismos datos.

Para el caso particular del conteo perdido, no puedo explicar el problema exacto, pero puedo observarlo en otras cajas Squeeze. Si me importara, lo informaría como un error a Debian (y sugeriría que alguien lo haga y lo informe aquí).

Ambos toman el número del tx_dropped campo de net_device_stats . En /proc/net/dev , la línea es generada por dev_seq_printf_stats desde net/core/dev.c .

ip va, como siempre, a través de netlink, y más precisamente para las estadísticas de dispositivos de red, rtnetlink. La estructura pasó al espacio de usuario, rtnl_link_stats .

La estructura nativa usa unsigned long s, rtnetlink usa __u32 , se realiza una conversión más o menos implícita en copy_rtnl_link_stats .

Es bastante fácil darse cuenta de que la versión de 32 bits se está utilizando desde el principio de la estructura, rx_packets:while /proc/net/dev muestra 1258629839430, ip muestra 244248462, que corresponde aproximadamente a los últimos 32 bits (más algunos bytes más entre comandos); lo mismo con el conteo de paquetes.

Aquí está el procesamiento de números para esos 2 primeros campos:

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

Las cosas mejoraron con la introducción de IFLA_STATS64 :

  • en el kernel (del compromiso 10708f37ae729baba9b67bd134c3720709d4ae62, disponible en sentido ascendente en v2.6.35 y posteriores)
  • en iproute2 (de la confirmación 8864ac9dc5bd5ce049280337deb21191673a02d0, disponible en sentido ascendente en v2.6.33-36 y posteriores).

Linux
  1. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  2. Cómo mapear dispositivos /dev/sdX y /dev/mapper/mpathY desde el dispositivo /dev/dm-Z

  3. ¿Qué son los archivos /dev/zero y /dev/null en Linux?

  4. ¿Cómo saber desde qué carpeta se está ejecutando un proceso?

  5. ¿Está mal vincular /dev/random a /dev/urandom en Linux?

Archivos /proc/cpuinfo y /proc/meminfo en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

kernel:deshabilitar /dev/kmem y /dev/mem

Cómo usa Linux /dev/tty y /dev/tty0

Crear un dispositivo de bloque virtual que escriba en /dev/null