Linux
iproute2 和 ifconfig 報告的頻寬使用情況不同
我的小組設置了一台伺服器,用於使用FOG對我們的工作站進行映像。我有點好奇我們使用了多少頻寬。當我執行
ifconfig eth0
時,TX/RX 線讀取RX packets:166949376 errors:0 dropped:0 overruns:0 frame:0 TX packets:350126730 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:31757576798 (29.5 GiB) TX bytes:458006556301 (426.5 GiB)
但是當我執行時
ip -s link show eth0
,等效輸出是RX: bytes packets errors dropped overrun mcast 1693647583 166958818 0 0 0 18979 TX: bytes packets errors dropped carrier collsns 2741139294 350136238 0 0 0 0
這對應於大約 1.8/2.6 GiB 的 TX/RX。
iproute2
是什麼導致和報告的值之間存在差異ifconfig
?是否存在某種整數溢出iproute2
?謝謝!
我能夠找到一些
iproute2
對這個問題有所了解的文件。感謝喬納森羅斯的回答,我了解到
ifconfig
從/proc/net/dev
. 在iproute2
文件中,頻寬計數器似乎在iproute2
“超過架構上自然數據類型的最大長度時包裝”。很明顯,
iproute2
使用 32 位整數來儲存此資訊,因為這是一個 64 位系統。然後頻寬計數器將在 4 GiB 處換行。
從帶有庫的系統或從核心中提取流量統計資訊的方法有很多種,其中一種是
cat /proc/net/dev
. 我會檢查該文件以進行比較。有點 OT:顯然您可以
ifconfig
使用可載入的 NIC 核心驅動程序而不是內置驅動程序來重置計數器。