首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

FreeBSD上利用网卡的polling模式减少高数据量上的系统负载办法

2012-07-27 
FreeBSD下利用网卡的polling模式减少高数据量下的系统负载办法FreeBSD在做IPsec-Gateway或作路由的情况下,

FreeBSD下利用网卡的polling模式减少高数据量下的系统负载办法
FreeBSD在做IPsec-Gateway或作路由的情况下,当处理的数据包到达一定数量级(>15000包/每秒)时,系统的负载会很高,表现是输入任何命令响应很慢。

用TOP显示CPU的状态时,大量时间被中断(interrupt),如下:
CPU states: 0.0% user, 0.0% nice, 1.0% system, 98.8% interrupt, 0.2% idle

原因是每个数据包过来,网卡都会请求CPU中断,当包的数量过高时,CPU很难正常处理其它事情。

这时候可以利用网卡的polling模式解决这个问题,polling模式就是让cpu定期去取网卡内存中的数据包。虽然平时看上去这种方法效率低
,但在网卡处理的包数量很高时能提高CPU的处理效率。

支持polling的模式的网卡有:dc(4), em(4), fwe(4), fxp(4), nge(4), rl(4), sis(4), ste(4)

在内核配置中加入了下面两条:

options DEVICE_POLLING
options HZ=2000

用新内核起动后,运行下面命令:

/sbin/sysctl -w kern.polling.enable=1
/sbin/sysctl -w kern.polling.burst_max=600

就能大量提高CPU的效率。

热点排行