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
.
Related videos on Youtube
cuonglm
Updated on September 18, 2022Comments
-
cuonglm almost 2 years
Migrating from old server to new one, after setting all services, I notice a big dropped rx packets in my NIC:
$ ifconfig eth2 | grep 'RX.*drop' RX packets:2059646370 errors:0 dropped:7142467 overruns:0 frame:0
But
/sys/class/net/eth2/statistics/rx_dropped
show nothing:$ cat /sys/class/net/eth2/statistics/rx_dropped 0
Then, I see that
rx_missed_errors
:$ cat /sys/class/net/eth2/statistics/rx_missed_errors 7142467
How can I troubleshoot and find out what cause
rx_missed_errors
?
I'm running Ubuntu 12.04.5 LTS, with:
$ ethtool -i eth2 driver: ixgbe version: 3.15.1-k firmware-version: 0x800003e1 bus-info: 0000:07:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes
-
cuonglm about 9 years@GeraintJones: I updated question.
-
Geraint Jones about 9 yearsHave youu followed this ? sourceforge.net/p/e1000/bugs/383/#fb68
-
Mary almost 9 yearsFree associating here: Possibility of configuration mismatch for your NICs between the two servers (and therefore between new server and your network infrastructure)? Any difference running ethtool against NIC on the older server (if that is an option)? Also, any difference plugging in a different port on the NIC in the server, or different port on the switch to which it is connected? For the comparison between the two NICs, use ethtool -k eth2 (instead of -i).
-
Kassandry almost 9 yearsYou might try putting the NIC into
promiscuous
mode, as outlined here novell.com/support/kb/doc.php?id=7007165 and seeing if the counter keeps incrementing. Was the old server running a kernel older than 2.6.37 as well? -
vijay rajah over 8 yearsI would try to increase the ring buffer size. check with 'ethtool -s eth0'. See if rx_no_buffer_count is high as well. if it is then you need to increase the ring buffer size
-
-
Theuni almost 7 yearsThe link is gone by now, but Google still has it in cache:webcache.googleusercontent.com/…
-
claymation over 4 yearsAnd if Google's cache doesn't work, it's on the wayback machine: web.archive.org/web/20141220043139/https://…