免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 独孤九贱
打印 上一主题 下一主题

在多核系统上网络数据转发实验和一点思考 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2009-05-20 10:17 |显示全部楼层
做了好久的SMP环境下的包转发,总结几点:
1. 对于普通网卡Linux协议栈无法进行实质上的多CPU负载均衡,需要支持RSS(多队列)的网卡,千兆比如intel 82575/6,万兆如intel 82598等。网卡对数据流进行hash然后分配到多个队列上,每个队列对应一个msi-x中断vector。这样就真正实现了多CPU同时处理协议栈。
2. linux内核从2.6.23开始支持多队列的网卡,到2.6.27才完整支持(仍需要hack达到性能最优),主要是NAPI结构的修改和Qdisc的多队列化。这种情况下在nehalem之前的平台上,万兆网卡测试转发时FSB成为瓶颈(多CPU争用)。
3. Nehalem可以解决FSB的问题,万兆多队列卡转发可以做到500万pps,此时PCIE的pps成为瓶颈。
4. 继续上升可能需要PCIE v2.0 的支持,或者像某些NP架构中使用专用总线避开PCIE的瓶颈。

论坛徽章:
0
2 [报告]
发表于 2009-05-20 17:13 |显示全部楼层
原帖由 ShadowStar 于 2009-5-20 16:33 发表


其实,我觉得软RSS的实现,在超过2个CPU核心以上才有意义。
或者说,这种均衡在CPU核心数量越多的情况下越有利。

不清楚Solaris上是否有类似Linux的netfilter conntrack来处理网络连接?

如果有的话 ...

fanout机制确实是想多利用sparc的CMT技术,但是目前还是受制于PCIE总线的限制,至少我用ixgbe的硬件hash在opensolaris上只能做到160wpps(进行了大量hask....)。
NIU那块走专用总线的卡应该可以解决该问题,但是现在的内核协议栈支持好像还差不少....

软件实现的问题可能在于用于分发的CPU很可能成为瓶颈,因为同时只能有一个CPU来做这件事情,sparc的主频低啊== .....
不过一直没时间去试solaris在x86上软RSS实现的表现,不过想做到单机万兆线速只能上硬件了..

估计未来的nehalem架构+PCIE2.0的万兆RSS网卡可以接近极限

论坛徽章:
0
3 [报告]
发表于 2009-05-20 17:50 |显示全部楼层
原帖由 Solaris12 于 2009-5-20 17:38 发表


NIU + Crossbow的bug还很多呢。

如果是single ring的话, fanout的确是一个CPU做,但多个队列的时候,如果用pcitool把中断放到不同的core,理论上每个接收中断上来的CPU都可以做吧。

前提就是硬件的多队列嘛。所以软RSS的实现在高压力下治标不治本啊...

论坛徽章:
0
4 [报告]
发表于 2009-05-21 14:17 |显示全部楼层
原帖由 Solaris12 于 2009-5-21 12:14 发表


嗯,关键是目前CPU的核数远远多于NIC的RING的数目。

即便是ixgbe这样的硬件,64个ring,但只有16个MSI-X vector.

目前Solaris ixgbe网卡属于起步阶段,Crossbow刚做完第一阶段,未来协议栈充分利用多核 ...

至少现在想达到万兆线速的话不需要那么多核..
等到出40GE,100GE的时候估计就用得上了

论坛徽章:
0
5 [报告]
发表于 2009-06-29 12:29 |显示全部楼层
至少是2.6.27内核以上,但是还需要几个细致的调整才能达到性能最优。
不过千兆卡无所谓了。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP