【互联网后台技术】网卡的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 |
|---|