免费注册 查看新帖 |

Chinaunix

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

请教I/O APIC对中断分发的问题 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-01-16 23:04 |只看该作者
非常实用的讨论.

论坛徽章:
0
32 [报告]
发表于 2009-01-17 19:02 |只看该作者
网卡的中断不应该平均分配给不同的CPU。也就是说平衡不应该太好。

因为TCP层要对包进行顺序组合,正常情况下包的到来顺序是基本不乱的,也就是需要重新组合的不多。
而如果平衡好的,那么不该快到来的包到的早了,TCP层就麻烦了。re-order的代价十分大,反而减慢了网络的速度。

理想情况下,应该是将某一段时间存在的一个链接来的中断都给同一个CPU处理。
按链接进行中断包在CPU间分配。

论坛徽章:
0
33 [报告]
发表于 2009-01-17 22:39 |只看该作者
原帖由 思一克 于 2009-1-17 19:02 发表
网卡的中断不应该平均分配给不同的CPU。也就是说平衡不应该太好。

因为TCP层要对包进行顺序组合,正常情况下包的到来顺序是基本不乱的,也就是需要重新组合的不多。
而如果平衡好的,那么不该快到来的包到的 ...


嗯。是会对TCP层造成一些影响。
不过个人认为,需要用到负载均衡的地方,一般都是在网络出口作转发的设备上,且网络流量很大,一般都只是在IP层,很少到达TCP层。

论坛徽章:
0
34 [报告]
发表于 2009-01-18 11:44 |只看该作者
做转发的也有该问题。
是给被服务的机器造成re-order问题。
所以,也应该按链接分配,尽量将同一个链接的中断给一个CPU处理。

原帖由 scutan 于 2009-1-17 22:39 发表


嗯。是会对TCP层造成一些影响。
不过个人认为,需要用到负载均衡的地方,一般都是在网络出口作转发的设备上,且网络流量很大,一般都只是在IP层,很少到达TCP层。

论坛徽章:
0
35 [报告]
发表于 2009-01-18 12:42 |只看该作者
原帖由 思一克 于 2009-1-18 11:44 发表
做转发的也有该问题。
是给被服务的机器造成re-order问题。
所以,也应该按链接分配,尽量将同一个链接的中断给一个CPU处理。


如果在分发中断的时候考虑到连接跟踪表的话,是否会影响转发机器的性能呢?

论坛徽章:
0
36 [报告]
发表于 2009-01-18 12:59 |只看该作者
会。

所以, IPTABLES 的connection tracking就是一个很费劲的工作。

原帖由 scutan 于 2009-1-18 12:42 发表

如果在分发中断的时候考虑到连接跟踪表的话,是否会影响转发机器的性能呢?

论坛徽章:
0
37 [报告]
发表于 2009-01-18 13:38 |只看该作者
原帖由 思一克 于 2009-1-18 12:59 发表
会。

所以, IPTABLES 的connection tracking就是一个很费劲的工作。



嗯。刚刚查了一下,国内外关于connection tracking方面的论文也比较少。

论坛徽章:
0
38 [报告]
发表于 2009-01-18 14:35 |只看该作者
原帖由 思一克 于 2009-1-17 19:02 发表
网卡的中断不应该平均分配给不同的CPU。也就是说平衡不应该太好。

因为TCP层要对包进行顺序组合,正常情况下包的到来顺序是基本不乱的,也就是需要重新组合的不多。
而如果平衡好的,那么不该快到来的包到的 ...


所以说,需要在协议栈实现一个软件的包分类器。

其实,目前新的网卡都硬件实现多个MSI-X加上一个硬件的RSS,不然一样会有这个问题。

Solaris目前这两方面都做了支持。

论坛徽章:
0
39 [报告]
发表于 2009-01-18 14:52 |只看该作者
原帖由 Solaris12 于 2009-1-18 14:35 发表


所以说,需要在协议栈实现一个软件的包分类器。

其实,目前新的网卡都硬件实现多个MSI-X加上一个硬件的RSS,不然一样会有这个问题。

Solaris目前这两方面都做了支持。


能否介绍一下Solaris是如何在软件协议栈上支持的?或者提供一下相关的资料呢,谢谢!

论坛徽章:
0
40 [报告]
发表于 2009-01-19 11:48 |只看该作者
原帖由 scutan 于 2009-1-18 14:52 发表


能否介绍一下Solaris是如何在软件协议栈上支持的?或者提供一下相关的资料呢,谢谢!


这个最早是Solaris 10的Fireengine项目实现的,Fireengine是一个Solaris协议栈的项目,主要是把影响Solaris 性能最严重的STREAM在TCP/IP这个路径上给去掉了。

我们讨论的这部分叫做IP Fan-out Classifier,就是把中断得到的包做load balance.

因为Solaris大部分都是运行在很多个CPU的服务器上的缘故,所以这个需求很强烈,

下面是个简单介绍,

www.sun.com/bigadmin/content/networkperf/FireEngine_WP.pdf

另外Solaris internal第二版也有提到,另外就是Solaris源代码本来就是公开的,在opensolaris.org上就有。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP