网卡的ring buffer调整

555 阅读1分钟

【互联网后台技术】网卡的ring buffer调整

  (2011-10-13 13:57:43)

转载▼

标签: ### 网卡 ### ringbuffer ### it分类: 互联网运维技术
服务器的NIC(eth0)上的RX dropped数量一直在增多时可以考虑试着调整ring busffer看看效果
 ​$ ifconfigeth0 ​ ​ ​ ​ ​ Link encap:Ethernet ​ HWaddr 00:22:19:6A:67:F8  ​ ​ ​ ​ ​ ​ ​ ​ ​ inet addr:172.24.85.42 ​ Bcast:172.24.85.255 ​ Mask:255.255.255.0  ​ ​ ​ ​ ​ ​ ​ ​ ​ inet6 addr: fe80::222:19ff:fe6a:67f8/64 Scope:Link  ​ ​ ​ ​ ​ ​ ​ ​ ​ UP BROADCAST RUNNING MULTICAST ​ MTU:1500 ​ Metric:1  ​ ​ ​ ​ ​ ​ ​ ​ ​ RX packets:340149863 errors:0 dropped:970 overruns:0 frame:0  ​ ​ ​ ​ ​ ​ ​ ​ ​ TX packets:345666108 errors:0 dropped:0 overruns:0 carrier:0  ​ ​ ​ ​ ​ ​ ​ ​ ​ collisions:0 txqueuelen:1000  ​ ​ ​ ​ ​ ​ ​ ​ ​ RX bytes:59390621898 (55.3 GiB) ​ TX bytes:27610690334 (25.7 GiB)  ​ ​ ​ ​ ​ ​ ​ ​ ​ Interrupt:82 Memory:d6000000-d6012800
RX : Receive eXchange(数据接收)
TX : Transmit eXchange(数据发送)
尝试增加rx的(ring buffer)大小。 
◆ 现在配置
Ring parameters for eth0: Pre-set maximums: RX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 2040 ​ ← 最大值 RX Mini: ​ ​ ​ ​ ​ ​ ​ 0 RX Jumbo: ​ ​ ​ ​ ​ ​ 8160 TX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 255 Current hardware settings: RX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 255 ​ ← 配置值 RX Mini: ​ ​ ​ ​ ​ ​ ​ 0 RX Jumbo: ​ ​ ​ ​ ​ ​ 0 TX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 255
g --show-ring
              Queries the specified ethernet device for rx/tx  ring  parameter
              information.
 

目前我还不知道用什么命令确认当前的ring buffer使用率,有知道的朋友请一定告知。 ring buffer如果已经被占满,则后续的数据帧回会覆盖当前最古老的数据帧。

 ​

◆ 修改配置

用以下命令可以修改大小(需要根用户权限)。

$ ethtool -G eth0 rx 512

       -G --set-ring
              Changes  the  rx/tx  ring  parameters  of the specified ethernet
              device.
注意:命令输入之后会有link down/up发生,数据通信出现瞬断。

◆ 配置之后的结果确认

Ring parameters for eth0: Pre-set maximums: RX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 2040 ​ ← 最大值 RX Mini: ​ ​ ​ ​ ​ ​ ​ 0 RX Jumbo: ​ ​ ​ ​ ​ ​ 8160 TX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 255 Current hardware settings: RX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​512 ​ ← 配置成功 RX Mini: ​ ​ ​ ​ ​ ​ ​ 0 RX Jumbo: ​ ​ ​ ​ ​ ​ 0 TX: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 255

 ​

 ​

◆ 确认配置修改之后的效果

确认修改配置之后是不是drop数还在不断增加,注意ring buffer更改后nic的统计数据会被reset 等待一段时间后确认dropped数量没有增加。

 ​$ ifconfigeth0 ​ ​ ​ ​ ​ Link encap:Ethernet ​ HWaddr 00:22:19:6A:67:F8  ​ ​ ​ ​ ​ ​ ​ ​ ​ inet addr:172.24.85.42 ​ Bcast:172.24.85.255 ​ Mask:255.255.255.0  ​ ​ ​ ​ ​ ​ ​ ​ ​ inet6 addr: fe80::222:19ff:fe6a:67f8/64 Scope:Link  ​ ​ ​ ​ ​ ​ ​ ​ ​ UP BROADCAST RUNNING MULTICAST ​ MTU:1500 ​ Metric:1  ​ ​ ​ ​ ​ ​ ​ ​ ​ RX packets:340149863 errors:0 dropped:0 overruns:0 frame:0  ​ ​ ​ ​ ​ ​ ​ ​ ​ TX packets:345666108 errors:0 dropped:0 overruns:0 carrier:0  ​ ​ ​ ​ ​ ​ ​ ​ ​ collisions:0 txqueuelen:1000  ​ ​ ​ ​ ​ ​ ​ ​ ​ RX bytes:59390621898 (55.3 GiB) ​ TX bytes:27610690334 (25.7 GiB)  ​ ​ ​ ​ ​ ​ ​ ​ ​ Interrupt:82 Memory:d6000000-d6012800

 ​

◆ 配置永久化

**
**把配置加入到rc.local。\

 ​$ vi /etc/rc.d/rc.local ​#!/bin/sh ​ethtool -G eth0 rx 512