网卡rx dropped问题

问题

有一些设备出现rx dropped,如下图示,或者通过ifconfig 查看

详细定位error分布

我遇到了物理网卡的dropped丢包问题,详细查找丢包原因可以通过ethtool -S ens2f0 查看具体丢包分布,如上图,所有的丢包点在rx_missed_errors,

那么rx_missed_errors 代表什么? 我又能做些什么?rx_fifo_errors,rx_over_errors丢包参数含义是什么?后文主要围绕这三点进行说明

rx_missed_errors 代表什么?

物理网卡接受数据buffer已经满了,无法接收数据计数

rx_missed_errors代表着DMA传送完成数据,发送硬件中断前,网卡的FIFO缓冲已经满了,导致数据丢掉的个数

Counts the number of missed packets. Packets are missed when the receive FIFO has insufficient space
to store the incoming packet. This can be caused because of too few buffers allocated, or because there
is insufficient bandwidth on the PCI bus. Events setting this counter causes ICR.Rx Miss, the Receiver
Overrun Interrupt, to be set. This register does not increment if receives are not enabled.
These packets are also counted in the Total Packets Received register as well as in Total Octets
Received.

rx_no_buffer

网卡通过DMA将设备FIFO中的数据传送给ring buffer时候,已经无内存可以放数据了,也就是说ringbuffer不足了,往往是系统处理数据较慢导致

rx_over_errors

系统ring buffer 满了,数据放不进去了,物理网卡无法通过DMA传送数据,该数据包被丢弃,尝尝发生在系统无法及时处理流量时候。

总结:

其实上面计数信息,不同网卡计数信息含义不同,在此不做解释了,具体遇到问题,再查找具体含义吧

不管怎么说出现rx_missed_errors代表还有有流量突发,导致网卡fifo满了,个人认为应该观察rx_missed_errors 后续增长情况,如果长时间不增长,可以不用做调整

如果持续增长,你就要看看你的网卡是不是次品了;如果很少切少量的增长,其实最难定位,像我遇到的这种情况,只有rx_missed_errors 没有rx_fifo_errors和rx_over_errors计数,网卡可以通过DMA将数据送给

系统内存中,这就很奇怪了,所以我怀疑,有两种可能性导致该问题:

可能性较大:在机器刚上线时候,网卡速率和交换机速率没有调整好导致,该计数后续不会增长了

可能性较小:网卡异常