rx_packets
比 大得多rx_pkts_nic
。为什么会这样呢?
是否有一份文档对所有 NIC 统计字段进行了解释?
答案1
的输出ethtool -S
与驱动程序有关。看来您使用了一些英特尔网卡。
可能您已启用某些卸载(GRO
- 通用接收卸载、LRO
- 大型接收卸载)。您可以检查 的输出ethtool -k <iface>
。
在这种情况下,多个接收到的数据包(以 计数rx_pkts_nic
)将合并为一个更大的数据包(以 计数rx_packets
)。然后,只有这个大数据包才会传递到系统网络堆栈中。
不幸的是,我不知道各种 NIC 计数器的完整文档和详细描述。它们中的大多数都有直观的名称,但不是全部。您可以尝试使用 Linux 内核邮件列表消息来理解其中一些。您也可以尝试写信给邮件列表以询问含义。
更新
我研究了驱动程序的源代码并发现了一些有趣的东西。
这
rx_packets
计数器值来自系统中网络设备的统计信息,而不是硬件。此值被视为和所有 NIC 队列的数据包数。此值还包括坏数据包。这
rx_pkts_nic
是从硬件接收的,而且它rx_missed
值减少。似乎这个值只包括好的数据包(这个计数器的真实名称是gprc
,也就是说good packets received count
)。rx_packets
因此,如果和之间存在差异rx_pkts_nic
,请检查错误计数器。调查 NIC 统计计数器的一个好东西是
ethtool --register-dump <iface>
命令。