GNU/Linux >> Belajar Linux >  >> Linux

cat /proc/net/dev dan ip -s link menunjukkan statistik yang berbeda. Yang mana yang berbohong?

Pada mesin Squeeze, percayakan /proc/net/dev . Ini cara yang lebih mudah dan andal dalam melihat data yang sama.

Untuk kasus tertentu dari jumlah yang dijatuhkan, saya tidak dapat menjelaskan masalah sebenarnya, tetapi saya dapat mengamatinya di kotak Squeeze lainnya. Jika saya peduli, saya akan melaporkannya sebagai bug ke Debian (dan menyarankan seseorang melakukannya dan melaporkan kembali ke sini).

Keduanya mengambil nomor dari tx_dropped bidang net_device_stats . Di /proc/net/dev , baris dihasilkan oleh dev_seq_printf_stats dari net/core/dev.c .

ip berjalan, seperti biasa, melalui netlink, dan lebih tepatnya untuk statistik perangkat jaringan, rtnetlink. Struktur diteruskan ke userspace, rtnl_link_stats .

Struktur asli menggunakan unsigned long s, rtnetlink menggunakan __u32 , kurang lebih konversi implisit dilakukan di copy_rtnl_link_stats .

Sangat mudah untuk menangkap versi 32-bit yang digunakan dari awal struktur, rx_packets:while /proc/net/dev menunjukkan 1258629839430, ip menunjukkan 244248462, yang kira-kira sama dengan 32 bit terakhir (ditambah beberapa byte lagi di antara perintah); hal yang sama dengan jumlah paket.

Inilah angka yang dihitung untuk 2 bidang pertama tersebut:

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

Segalanya menjadi lebih baik dengan diperkenalkannya IFLA_STATS64 :

  • di kernel (dari komit 10708f37ae729baba9b67bd134c3720709d4ae62, tersedia upstream di v2.6.35 dan yang lebih baru)
  • di iproute2 (dari komit 8864ac9dc5bd5ce049280337deb21191673a02d0, tersedia upstream di v2.6.33-36 dan yang lebih baru).

Linux
  1. Cara memetakan perangkat /dev/sdX dan /dev/mapper/mpathY dari perangkat /dev/dm-Z

  2. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  2. Mengapa < atau > diperlukan untuk menggunakan /dev/tcp

  3. Perbedaan antara /dev/sda dan /dev/sda1

  1. Kapan Menggunakan /dev/random Vs /dev/urandom?

  2. Apa itu file /dev/zero dan /dev/null di Linux?

  3. /proc/[pid]/pagemaps dan /proc/[pid]/maps | linux