`
boisterous
  • 浏览: 62766 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类

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的效率。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics