目前只计算一些简单的信息,主要分析/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的差,除以两次读取的时间间隔