bcm 5709网卡驱动问题引发的线上问题

今年新上了一批机器用的是bcm 5709的网卡,由于使用的OS版本比较老,带的驱动bug比较多造成线上问题频繁。检查了一下

  
# lspci | grep -i Ethernet  
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)  
03:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)  
04:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)  
04:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)  

出问题的时候,都会显示有丢包

  
eth1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1  
RX packets:90203138365 errors:0 dropped:10164 overruns:0 frame:0  
TX packets:45099041450 errors:0 dropped:0 overruns:0 carrier:0  
collisions:0 txqueuelen:1000  
RX bytes:51723750152131 (47.0 TiB)  TX bytes:25022940331121 (22.7 TiB)  
Interrupt:170 Memory:f2000000-f2012800

另外的机器:  
eth1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
UP BROADCAST SLAVE MULTICAST  MTU:1500  Metric:1  
RX packets:440014 errors:0 dropped:381268 overruns:0 frame:0  
TX packets:149 errors:0 dropped:0 overruns:0 carrier:0  
collisions:0 txqueuelen:1000  
RX bytes:45635264 (43.5 MiB)  TX bytes:102438 (100.0 KiB)  
Interrupt:170 Memory:f2000000-f2012800

每个机器其实都是有2张网卡做bond的,我只是贴的一个网卡的信息。网上搜了一下,有的说是rx的设置问题,比如http://linux-troubleshooting.blogspot.com/2010/06/packet-drops-in-linux.html。然后我就改了一下rx的大小,查看配置如下

ethtool -g eth0

Ring parameters for eth0:
Pre-set maximums:
RX: 1020
RX Mini: 0
RX Jumbo: 4080
TX: 255
Current hardware settings:
RX: 255
RX Mini: 0
RX Jumbo: 0
TX: 255

ethtool -G eth0 rx 1020

修改配置

ethtool -g eth0

Ring parameters for eth0:
Pre-set maximums:
RX: 1020
RX Mini: 0
RX Jumbo: 4080
TX: 255
Current hardware settings:
RX: 1020
RX Mini: 0
RX Jumbo: 0
TX: 255

但是这样修改后发现并没有缓解,后来继续搜了一下,发现是http://suchalin.blog.163.com/blog/static/5530467720114230617948/。后来把RHEL的内核更新到最新版,问题得到了修复。

PS:
其实我一直不喜欢抱死在一个老树上,有bug的东西该升级就升级,不会做无效的推脱。现在线上有的机器就是一周挂几次,负责的人每天都说在排查。但是实际上又不做任何行动。