rx_queue_*_csum_err 和 rx_fifo_errors 的含义

rx_queue_*_csum_err 和 rx_fifo_errors 的含义

我正在尝试调试一台服务器的一些网络问题。我用多个监视器监视这台机器,发现 ping 错误率有时会跳升至 5/10%

我在 ubuntu 上运行,我看到 ethtool -S eth0 的输出显示 rx_queue_*_csum_errboth rx_fifo_errors 为正值(几千个)。

这些计数器实际上跟踪什么,是否存在一些众所周知的原因导致它们非 0?

答案1

rx_fifo_errors= rx_queue_*_drops 总数

rx_queue_*_drops= 每个队列丢弃的数据包数

听起来 RX 中断没有足够快地分配缓冲区,导致适配器丢弃数据包。

检查并增加环形缓冲区。

# ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX:        4096
RX Mini:      0
RX Jumbo:     0
TX:        4096
Current hardware settings:
RX:         256
RX Mini:      0
RX Jumbo:     0
TX:         256

您可以将“ Current Hardware Settings”设置为“ ”,最高可达“ ”RX中显示的限额Pre-set maximums

# ethtool -G eth0 rx 4096

笔记:此设置将不是重启后仍能继续使用。你可能需要使用rc.local(或类似的东西)

答案2

根据Linux 内核文档

RX Queue Checksum errors表示物理链路错误。 RX Fifo errors表示 FIFO 溢出,如下所述@Signal15

rx_crc_errors

    Number of packets received with a CRC error. Part of aggregate "frame" errors in /proc/net/dev.

    For IEEE 802.3 devices this counter must be equivalent to:

        30.3.1.1.6 aFrameCheckSequenceErrors

我建议在生产机器上调整 RX FIFO 大小时要小心,因为我在某些配置下遇到了不稳定性,例如:当接口是 BRIDGE 或 BOND 组的一部分时。

相关内容