网络接口统计信息:tx_dropped 值始终为 0

网络接口统计信息:tx_dropped 值始终为 0

我正在编写一个程序,用于收集并显示位于/sys/class/net/文件夹中的网络接口指标。

当我阅读rx_dropped价值的含义时,我得出的结论是,这个值有很多可能的原因,例如本文第一个答案中指定的原因:

https://serverfault.com/questions/528290/ifconfig-eth0-rx-dropped-packets

但是,我找不到有关该tx_dropped值的任何信息。首先,我认为这与发送的未获得应答的 TCP 段有关,因此会从队列中删除。

然而,我正在运行curl 8.8.7.5,这显然会导致我可以在 Wireshark 中看到的重传,但 tx_dropped 值仍然为 0。

实际上,在我运行程序的所有时间中,我从未见过tx_dropped0.

什么情况下会tx_dropped增加?

答案1

tx_dropped( 和)计数器rx_dropped是特定于驱动程序的,您必须检查您所使用的驱动程序的文档或代码源,以弄清楚这些字段的确切含义。

例如,tg3用于 10G Intel NIC 的驱动程序仅具有以下代码路径来增加tx_dropped计数器:https://github.com/torvalds/linux/blob/fb054096aea0576f0c0a61c598e5e9676443ee86/drivers/net/ethernet/broadcom/tg3.c#L8139

我似乎认为大多数最终呼叫的位置goto drop;都与 TSO 和 GSO 卸载有关,或者由于校验和失败而忽略带有 VLAN 标记的数据包。除此之外,只有 DMA 内存分配失败才会导致tx_dropped增加。

如果您看到tx_dropped增加的情况,我建议尝试禁用 NIC 的所有卸载功能,看看是否有帮助。

相关内容