我想知道,我的linux系统的特定(VPN)接口上的平均传输速率是多少。
我从netstat获得以下信息:
# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 264453 0 0 0 145331 0 0 0 BMRU
lo 16436 0 382692 0 0 0 382692 0 0 0 LRU
tun0 1500 0 13158 0 0 0 21264 0 12 0 MOPRU
VPN接口是tun0。因此,该接口接收13158个数据包并发送21264个数据包。我的问题基于此:
收集这些统计数据的时间范围是多少?自从电脑启动以来?
# uptime
15:05:49 up 7 days, 20:40, 1 user, load average: 0.19, 0.08, 0.06
如何将13158“数据包”转换为数据kB以获得kbps?
或者我应该使用完全其他方法吗?
答案 0 :(得分:1)
问题1:
时间范围是从设备启动到现在(可能是几天或几周前,尝试从日志中计算出来!)。
这意味着要获得与您在系统监视器中看到的实际平均kbps数相当的平均kbps数或者例如显示CPU的top
或uptime
,您需要读取当前值两次(例如,介于两者之间),并从第一个值中减去第二个值。然后除以时间(如果你有1秒的延迟则没有必要),乘以8,除以1,000得到kbps。
问题2:
你没有。没有办法转换"数据包" to" bytes"数据包的大小可变。有一个"字节"你可以阅读的领域。
我的NAS机箱上的测试用例正在进行一些流量:
nas:# grep eth0 /proc/net/dev ; sleep 1 ; grep eth0 /proc/net/dev
eth0:137675373 166558 0 0 0 0 0 0 134406802 41228 0 0 0 0 0 0
eth0:156479566 182767 0 0 0 0 0 0 155912310 44479 0 0 0 0 0 0
结果是:(155912310 - 134406802)* 8/1000 = 172044 kbps(1Gbps网络使用172 Mbps)。
答案 1 :(得分:0)
如果您查看/proc/net/dev
而不是netstat -i
,则可以获取传输/接收的字节数(也可以通过ifconfig
或netstat -ie
获取,但更容易从{{/proc/net/dev
解析1}})。计数通常是在创建接口之后,通常是“真实”接口的启动时间。对于tun
接口,可能在隧道启动时,可能与系统启动不同,具体取决于您何时/如何创建它...