如何使用C或Shell脚本计算发送和接收的网络利用率?

我的系统是嵌入式Linux。我当前的方法是记录接收到的字节(b1),等待1秒钟,然后再次记录(b2)。然后知道链接速度,就可以计算出所使用的接收带宽的百分比。

接收利用率=(((b2-b1)* 8)/link_speed)* 100

有没有更好的方法?

最佳答案

查看具有类似功能的开源程序。

我的搜索出现了一个名为vnstat的小工具。

它尝试查询/proc文件系统(如果有),并将getifaddrs用于没有该文件系统的系统。然后,它获取正确的AF_LINK接口(interface),获取相应的if_data结构,然后读取发送和接收的字节,如下所示:

ifinfo.rx = ifd->ifi_ibytes;
ifinfo.tx = ifd->ifi_obytes;

还要记住,sleep()的睡眠时间可能超过1秒,因此您可能需要在方程式中使用高分辨率(壁钟)计时器-否则您可以深入研究if函数和结构以查看是否找到合适的东西为您的任务。

07-24 09:46
查看更多