linux自带流量统计计数溢出的问题

发布于 2022-09-04 06:55:28 字数 530 浏览 23 评论 0

本人自己写了一个程序,能够让QT在树莓派B+上通过FrameBuffer输出到一块LCD上显示一些树莓派的运行信息(以上都不是重点),其中有个内容就是网卡的上下载流量,用来推断出下载机的工作状态(aria2的那个json-rpc不想连了,也没有地方显示过多的信息),现在的解决方案就是用QFile打开linux自身带的一个网卡的流量统计文件,叫/proc/net/dev,然后从里边切出来想要的数据.后来发现一个很蛋疼的问题,每次传输数据量(上传下载单算)超过4GB(2^32Byte,好巧哦,我家Int也这范围)就会导致溢出然后从新计数,本来以为是我程序里变量开小了,后来才发现,原来是linux的变量开小了.
那天我专门从树莓派上下载一个大文件,然后用命令行盯着这个文件,显示屏上的数字一归零,立刻

cat /proc/net/dev

然后惊奇的发现upload的字节数已经因为溢出重新计数了.....
不知道这个蛋疼的问题能否解决,所以来此问问大神们的观点,另外对那些常年不关的linux服务器是如何低资源消耗地统计流量(第三方的能不考虑就尽量不考虑)这个问题.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

自由范儿 2022-09-11 06:55:28

一个简单的方法是改内核,具体在这个文件里。
include/linux/netdevice.h
然而这些会破坏二进制兼容性。
所以另一个方法就是另起炉灶,要做一个内核模块自己计数用long long unsigned存储。
然后话说回来,为啥你不用ip link。。。。有了ifla_stats64之后,ip link 可以直接读取到64位的计数器。。。。

橘亓 2022-09-11 06:55:28

简单点,用一个归零计数器记录溢出的次数,然后 总流量= 2^32 * 归零次数 + 当前值

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文