当我们测试 eth 卡时,ethtool -S
我们得到 rx_missed_errors: 4649
。
是什么意思 rx_missed_errors
?这是一个大问题吗?
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_fifo_errors: 0
rx_missed_errors: 4649
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_csum_offload_errors:
ethtool -g eth847
Ring parameters for eth847:
Pre-set maximums:
RX: 8192
RX Mini: 0
RX Jumbo: 0
TX: 8192
Current hardware settings:
RX: 1024
RX Mini: 0
RX Jumbo: 0
TX: 1024
答案1
的确切含义rx_missed_errors
取决于所使用的以太网驱动程序,但它应该计算接收端丢失的数据包,IENIC 收到但由于无法存储或处理而不得不丢弃的数据包 — 通常是因为它们所在的 FIFO 已满。
这是否是一个主要问题取决于所丢弃的流量。在大多数情况下,丢弃的数据包最终将在必要时由堆栈的一层或另一层重新传输。
如果丢弃是突发性的,您可以尝试增加缓冲区(如果您的 NIC 允许):使用 检查最大设置ethtool -g
,然后使用 进行设置ethtool -G
。对于您的情况,您可以将接收和传输环设置为最大 8192 的任何值:
ethtool -G eth847 rx 8192
立即将缓冲区设置为最大值不一定是个好主意:较大的缓冲区可能会导致延迟增加。我建议逐步增加缓冲区,并观察错误率以了解其变化情况。