linux – 如何解决rx_missed_errors问题?

linux – 如何解决rx_missed_errors问题?,第1张

概述在设置所有服务之后,从旧服务器迁移到新服务器,我注意到我的NIC中丢弃了大量rx数据包: $ifconfig eth2 | grep 'RX.*drop' RX packets:2059646370 errors:0 dropped:7142467 overruns:0 frame:0 但/ sys / class / net / eth2 / statistics / rx_ 在设置所有服务之后,从旧服务器迁移到新服务器,我注意到我的NIC中丢弃了大量rx数据包:
$ifconfig eth2 | grep 'RX.*drop'          RX packets:2059646370 errors:0 dropped:7142467 overruns:0 frame:0

但/ sys / class / net / eth2 / statistics / rx_dropped没有显示任何内容:

$cat /sys/class/net/eth2/statistics/rx_dropped0

然后,我看到rx_missed_errors:

$cat /sys/class/net/eth2/statistics/rx_missed_errors7142467

我如何排除故障并找出导致rx_missed_errors的原因?

我正在运行Ubuntu 12.04.5 LTS,其中:

$ethtool -i eth2driver: ixgbeversion: 3.15.1-kfirmware-version: 0x800003e1bus-info: 0000:07:00.0supports-statistics: yessupports-test: yessupports-eeprom-access: yessupports-register-dump: yes
解决方法 大多数驱动程序交换使用计数器rx_missed_errors,rx_fifo_errors和rx_over_errors,但它们通常将这些计数器中的一个或多个设置为MPC(丢失数据包计数)计数器,当数据包到达时它会递增并因为卡的FIFO队列而丢失已满.

这是ixgbe驱动程序的情况:

$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;

因此ixgbe的rx_missed_errors是MPC.

英特尔网站上有一篇很棒的博客文章,用一个很好的比喻来描述MPC下降的原因:https://communities.intel.com/community/tech/wired/blog/2009/11/04/how-the-kitchen-sink-and-statistics-explain-and-treat-dropped-packets

此外,请确保NIC和交换机之间没有速度和双工不匹配.如果您的交换机认为您的NIC比实际更快,那么您在NIC方面会遇到问题.

最后,如果根本原因在突发时最终成为性能,那么最大化NIC的环形缓冲区的大小可能会有所帮助.您可以使用ethtool -g eth2找到最大值,然后使用ethtool -G进行设置.

总结

以上是内存溢出为你收集整理的linux – 如何解决rx_missed_errors问题?全部内容,希望文章能够帮你解决linux – 如何解决rx_missed_errors问题?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1044045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存