8

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
  • What make/model NIC is it? – Geraint Jones Jun 30 '15 at 10:23
  • @GeraintJones: I updated question. – cuonglm Jun 30 '15 at 10:28
  • Have youu followed this ? sourceforge.net/p/e1000/bugs/383/#fb68 – Geraint Jones Jun 30 '15 at 10:31
  • @GeraintJones: Thanks for the link, I have read it but it seem that the issue wasn't shown? – cuonglm Jun 30 '15 at 10:43
  • Free 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). – Mary Aug 5 '15 at 21:16
8

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.