如何计算传输和接收的网络利用率
如何使用 C 或 shell 脚本计算传输和接收的网络利用率?
我的系统是嵌入式linux。我当前的方法是记录收到的字节(b1),等待1秒,然后再次记录(b2)。然后知道链接速度,我计算所使用的接收带宽的百分比。
接收利用率 = (((b2 - b1)*8)/link_speed)*100
有更好的方法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
感谢“csl”为我指明了 vnstat 的方向。这里使用 vnstat 示例是我计算网络利用率的方法。
thanks to 'csl' for pointing me in the direction of vnstat. using vnstat example here is how I calculate network utilization.
查看执行类似操作的开源程序。
我的搜索发现了一个名为 vnstat 的小工具。
它尝试查询 /proc 文件系统(如果可用),并使用 getifaddrs 适用于没有它的系统。然后它会获取正确的 AF_LINK 接口,获取相应的 if_data 结构,然后读出发送和接收的字节,如下所示:
另请记住 sleep() 可能睡眠时间超过 1 秒,因此您应该使用高分辨率(挂钟) ) 计时器在你的等式中——或者你可以深入研究 if 函数和结构,看看是否找到适合你任务的东西。
Check out open source programs that does something similar.
My search turned up a little tool called vnstat.
It tries to query the /proc file system, if available, and uses getifaddrs for systems that do not have it. It then fetches the correct AF_LINK interface, fetches the corresponding if_data struct and then reads out transmitted and received bytes, like this:
Also remember that sleep() might sleep longer than exactly 1 second, so you should probably use a high resolution (wall clock) timer in your equation -- or you could delve into the if-functions and structures to see if you find anything appropriate for your task.