- 论坛徽章:
- 0
|
原帖由 terryfe 于 2009-5-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的瓶颈。
...
这是一种硬件方案。
软件上可以模拟这个方案,把RSS这种东西在协议栈级别实现,Solaris叫fanout, 基于连接来负载均衡。
[ 本帖最后由 Solaris12 于 2009-5-20 13:33 编辑 ] |
|