gpt4 book ai didi

interface - 在用户空间中获取 Linux 接口(interface)流量 64 位统计信息

转载 作者:行者123 更新时间:2023-12-02 02:56:42 24 4
gpt4 key购买 nike

我要获取网卡驱动 64位统计用户空间 ,以最简单的方式。
API 函数 getifaddrs() 的手册页建议了一个简单的示例程序,它使用 32 位“ struct rtnl_link_stats ”(可以在此处查看,例如:http://man7.org/linux/man-pages/man3/getifaddrs.3.html)。

这个结构的问题很明显:32 位变量快速回绕(超过 2^32)(例如“ rx_bytes ”)。

在包含 的同一头文件 ( linux/if_link.h ) 中结构 rtnl_link_stats ,有一个类似的 64 位变量结构:结构 rtnl_link_stats64 .
我确信我非常接近在 64 位变量上获得相同的统计数据,但不幸的是,我没有这样做。

等功能dev_get_stats() ,但它们都是为内核空间编写的。

像“ ethtool -S ”这样的程序以 64 位值显示这些统计信息,但我认为它们会进行一些操作而不是填充 结构 rtnl_link_stats64 以一种简单的方式。

直接阅读 /sys/class/net/ethX/statistics/rx_bytes (使用 fopen、fscanf...)是可以的,但它的性能不如使用 API 读取。

有没有简单的方法在用户空间 拥有结构 rtnl_link_stats64 充满了相关的统计数据,我想念吗?

最佳答案

显然,我发现的最佳(性能方面)方法是使用库 libnl 中的 netlink API。

这是我找到的一个简单示例程序的链接,它实现了它:
https://gist.github.com/beejeebus/cc4fb07472cf5a0afd41

关于interface - 在用户空间中获取 Linux 接口(interface)流量 64 位统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48987493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com