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).