How to troubleshoot rx_missed_errors?
Most drivers interchange their use of the counters rx_missed_errors
, rx_fifo_errors
, and rx_over_errors
, but they typically set one or more of these counters to the MPC (missed packet count) counter, which is incremented when a packet arrives and is lost because the card's FIFO queue is full.
This is the case for the ixgbe driver:
$ grep rx_missed_errors drivers/net/ixgbe/*
drivers/net/ixgbe/ixgbe_ethtool.c: {"rx_missed_errors", IXGBE_STAT(net_stats.rx_missed_errors)},
drivers/net/ixgbe/ixgbe_main.c: adapter->net_stats.rx_missed_errors = total_mpc;
So rx_missed_errors
for ixgbe is the MPC.
There's a great blog post on the Intel website that describes the causes of MPC drops using a great analogy: https://communities.intel.com/community/tech/wired/blog/2009/11/04/how-the-kitchen-sink-and-statistics-explain-and-treat-dropped-packets
Also, make sure there isn't a speed and duplex mis-match between your NIC and the switch. If your switch thinks your NIC is faster than it really is, then you'll have problems on the NIC side of things.
Finally, maxing the size of your NIC's ring buffer might help if the root cause ends up being performance in the face of bursts. You can find the max value with ethtool -g eth2
and then set it with ethtool -G
.