目前只計算一些簡單的信息,主要分析/proc/net/dev文件和雙工速度信息
/proc/net/dev文件信息如下:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 353771172504 2684040276 0 0 0 0 0 0 353771172504 2684040276 0 0 0 0 0 0
face:網絡接口名
rx_bytes:接收數據的總字節數
rx_packets:接收數據包總數
rx_errors:接收錯誤的包總數
rx_dropped:接收丟棄的總包數(because of a lack of space in linux buffers)
rx_fifo_errors:接收的FIFO溢出錯誤數
rx_frame_errors:接收的數據包上發生的幀對齊錯誤數
rx_compressed:接收的壓縮數據包數
multicast:接收的多播幀數
tx_bytes:發送數據的總字節數
tx_packets:發送數據總包數
tx_errors:發送錯誤的總包數
tx_dropped:發送丟棄的總包數
tx_fifo_errors:發送的FIFO溢出錯誤數
collisions:傳輸數據包時發生的衝突數
tx_carrier_errors:傳輸數據包時發生的載波錯誤數量
tx_compressed:發送的壓縮數據包數
雙工狀態可以從文件"/sys/class/net/*/duplex"中獲取,其中“*”代表網絡接口名,速度可以從文件"/sys/class/net/*/speed",其中“*”代表網絡接口名。根據我對於我所使用的linux服務器的觀察,好像只有處於運行狀態的網絡接口才能獲取這兩個信息,不處於運行狀態的網絡接口這兩個文件內的信息好像沒有意義。
執行“sar -n DEV 1”,基本的打印信息如下:
IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
eth1 25803.00 24701.00 18208.05 19104.01 0.00 0.00 4740.00 15.65
各個域的計算方法,都是通過兩次讀取文件/proc/net/dev的數據的差,除以兩次讀取的時間間隔
IFACE:對應上面的face,網絡接口名
rxpck/s:每秒接收的包數,計算方法:兩次讀取的rx_packets的差,除以兩次讀取的時間間隔
txpck/s:每秒發送的包數,計算方法:兩次讀取的tx_packets的差,除以兩次讀取的時間間隔
rxkB/s:每秒發送的包數,計算方法:兩次讀取的rx_bytes的差,除以兩次讀取的時間間隔(注意單位)
txkB/s:兩次讀取的tx_bytes的差,除以兩次讀取的時間間隔(注意單位)
rxcmp/s:兩次讀取的rx_compressed的差,除以兩次讀取的時間間隔
txcmp/s:兩次讀取的tx_compressed的差,除以兩次讀取的時間間隔
rxmcst/s:兩次讀取的multicast的差,除以兩次讀取的時間間隔
%ifutil:網絡帶寬的利用率,這個與採用的全雙工還是半雙工有關,全雙工的話只需要計算讀和寫中的比較大的一項就可以,不過要注意帶寬使用的以位爲單位的,所以要做相應的單位轉化。用收和發中數量大的字節除以帶寬就可以了。單雙工的話需要將收和發的字節加起來,再除以帶寬。
執行“sar -n EDEV 1”,基本的打印信息如下:
IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s
eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
IFACE:網絡接口名
rxerr/s:每秒發送錯誤的總包數,計算方法:兩次讀取的rx_errors的差,除以兩次讀取的時間間隔
txerr/s:每秒接收錯誤的總包數,計算方法:兩次讀取的tx_errors的差,除以兩次讀取的時間間隔
coll/s:每秒發生的衝突數 ,計算方法:兩次讀取的collisions的差,除以兩次讀取的時間間隔
rxdrop/s:每秒接收丟棄的包數,計算方法:兩次讀取的rx_dropped的差,除以兩次讀取的時間間隔
txdrop/s:每秒發送丟棄的包數,計算方法:兩次讀取的tx_dropped的差,除以兩次讀取的時間間隔
txcarr/s:每秒發生的載波錯誤數量,計算方法:兩次讀取的tx_carrier_errors的差,除以兩次讀取的時間間隔
rxfram/s:每秒發生的幀對齊錯誤數,計算方法:兩次讀取的rx_frame_errors的差,除以兩次讀取的時間間隔
rxfifo/s:每秒接收的FIFO溢出錯誤數,計算方法:兩次讀取的rx_fifo_errors的差,除以兩次讀取的時間間隔
txfifo/s:每秒發送的FIFO溢出錯誤數,計算方法:兩次讀取的tx_fifo_errors的差,除以兩次讀取的時間間隔