我正在编写一个程序,用于收集并显示位于/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_dropped
除0
.
什么情况下会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 的所有卸载功能,看看是否有帮助。