如何使用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函数和结构以查看是否找到合适的东西为您的任务。