我想和大家验证一下我的想法。假设:
- 我正在测量带宽的设备是一个基于 Linux 的内部路由器。
- 如果 NIC 配置为 100mbps,则网络至少为 100mbps(也就是说,NIC 的速度设置限制了带宽,而不是网络及其延迟等)
- CPU 等元素对带宽没有影响。
以下做法正确吗:
- 每 10 秒运行一次 ifconfig
- 根据 ifconfig 的结果计算每秒 TX+RX 的字节数
- 将字节数乘以 8(假设为 X)
- 获取网卡速度设置(10mbps、100mbps、1000mbps,此为 Y)
- 计算带宽使用率百分比为:X/(Y*1024*1024)
这是正确的吗? 重复性会如何影响此计算?
答案1
理论上这是正确的。但是,使用 ifconfig 检索相关数据是一种非常迂回的方法。使用 SNMP 会更好。所有接口在标准 SNMP MIB 中都有条目,这些条目描述了它们以及它们的当前连接速度,以及各种相关计数器。
据我所知,所有 Linux 发行版的标准软件包中都提供 SNMP,您可以使用 snmpwalk 或 snmpget 等工具(如果您只想检索数据)或 MRTG 或 cacti(如果您想要绘制数据图表)。尤其是 cacti 允许将公式(公式?)应用于您的数据,并且应该很容易从中获得百分比图表。