網絡的各指標計算方法(參考sar)

目前只計算一些簡單的信息,主要分析/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的差,除以兩次讀取的時間間隔

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章