免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5506 | 回复: 24
打印 上一主题 下一主题

突发奇想:如果舍弃网络接受部分的软中断处理? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-13 13:59 |只看该作者 |倒序浏览
在软中断比较复杂情况下(比如许多iptables规则)的多CPU均衡问题很苦恼,忽然突发奇想:
如果我们将软中断的部分直接改成内核线程是不是就可以解决这个问题呢?

这个函数很关键:netif_rx(),呵呵,,,

这个假设基于以下几点:
1, 我认为软中断不过就是ksoftirqd模拟的中断,而且强制加了很多限制,最要命的一条就是必须由“处理中断的CPU处理软中断”。
2, 软中断的设计应该是为了较少的使用锁?但是如果能保证每条数据流都在一个CPU执行,那么很多情况下是不是就可以避免锁?
3, 内核线程的灵活性非常好,,,,想把包哪个CPU就可以保证给到,自己做均衡算法啦

我认为可能的问题:
1, 优先级问题;
2, 锁的问题;
3, 连接跟踪的问题(能确定同一个流都在一个CPU上,一般的conntrack没问题,helper什么的再斟酌);
4, 四层我不熟,,,
5, 其他内核部分不熟,,,

我认为SMP架构,在作为包转发器件的时候,性能是完全可以随CPU数线性增长的,如solaris一般,只要设计好一个完美的纵向周界,因为,
我认为,IP协议是*基于网络的数据包是没有任何关联的*,这样,锁就是非必要的!
现在SMP性能差,是系统问题,而不是架构问题。

论坛徽章:
0
2 [报告]
发表于 2009-02-13 14:24 |只看该作者
晕,刚才搜了下,居然有个志同道合的哥们!

softirq vs kernel thread :
http://forum.soft32.com/linux2/k ... q-ftopict15213.html

关键句:
>
> If I implement kernel thread that support net_tx and net_rx
> (I do not use the default softirq net_tx and net_rx), will the performance
> be impacted???

I don't think using your own kernel thread rather
than the standard softirq stuff will have any
negative impact on performance. On 2.6 softirqs
are handled by a kernel thread anyway.

Switches to and from a kernel thread are the most
efficient kind of thread switches the scheduler
can perform because of the lazy switching of page
tables and FPU state.

论坛徽章:
0
3 [报告]
发表于 2009-02-13 14:41 |只看该作者
原帖由 eagleleopard 于 2009-2-13 13:59 发表
在软中断比较复杂情况下(比如许多iptables规则)的多CPU均衡问题很苦恼,忽然突发奇想:
如果我们将软中断的部分直接改成内核线程是不是就可以解决这个问题呢?

这个函数很关键:netif_rx(),呵呵,,, ...


以前思一克版主做了相关的工作的, 你看看:
http://linux.chinaunix.net/bbs/v ... p;extra=&page=8

另外, 有的网卡支持多队列的方式, 对性能有一定的提升, 如Intel 82575网卡以及相应的igb驱动. 能够对接收负载进行平衡. 不过我没有测试过具体的性能效果.

论坛徽章:
0
4 [报告]
发表于 2009-02-13 15:16 |只看该作者

回复 #3 scutan 的帖子

恩,seeker的是把softirq的后半放到keventd里面了?
我在考虑,是否完全不用softirq也可以实现呢?
纯线程好啊,可调度,可并行,甚至可休眠,,,

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
5 [报告]
发表于 2009-02-15 09:15 |只看该作者

回复 #1 eagleleopard 的帖子

非常有创意有想法,可以经过实践来考察实施验证一下

论坛徽章:
0
6 [报告]
发表于 2009-02-15 15:48 |只看该作者
原帖由 eagleleopard 于 2009-2-13 13:59 发表
在软中断比较复杂情况下(比如许多iptables规则)的多CPU均衡问题很苦恼,忽然突发奇想:
如果我们将软中断的部分直接改成内核线程是不是就可以解决这个问题呢?

这个函数很关键:netif_rx(),呵呵,,, ...


看来你是研究过Solaris协议栈啊。呵呵,Solaris就是这么做的。在CPU越多的机器上,就越有优势。

具体实现可以参考snv_105以后的代码。

[ 本帖最后由 Solaris12 于 2009-2-15 15:50 编辑 ]

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
7 [报告]
发表于 2009-02-15 18:36 |只看该作者
原帖由 Solaris12 于 2009-2-15 15:48 发表


看来你是研究过Solaris协议栈啊。呵呵,Solaris就是这么做的。在CPU越多的机器上,就越有优势。

具体实现可以参考snv_105以后的代码。


能简单谈一下Solaris的实现细节么?

论坛徽章:
0
8 [报告]
发表于 2009-02-17 14:53 |只看该作者

回复 #6 Solaris12 的帖子

solaris我只看过很肤浅的东西,,,,后悔啊。。。。
soalris现在在协议栈做了很多project,来提高多核的性能,最新的几乎从网卡起就可将数据包分类,匹配特定cpu,都有点非对称多核的感觉了
network OS...

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
9 [报告]
发表于 2009-02-17 17:06 |只看该作者
原帖由 eagleleopard 于 2009-2-17 14:53 发表
solaris我只看过很肤浅的东西,,,,后悔啊。。。。
soalris现在在协议栈做了很多project,来提高多核的性能,最新的几乎从网卡起就可将数据包分类,匹配特定cpu,都有点非对称多核的感觉了
network OS...


现在solaris这部分代码也是开源的吧?如果是,可以拿出来大家一起分析总结一下,一定大有益处的。

论坛徽章:
0
10 [报告]
发表于 2009-02-17 20:46 |只看该作者

回复 #9 dreamice 的帖子

Sun说到底还是卖硬件的公司,Solaris配上sparc才NB,他的东西拿到X86起码在网络子系统性能比linux差不少(逐步逼近中),,,,
我个人的感觉是solaris远不如linux透明,许多东西为了照顾版本兼容性,被改的千疮百孔的,看起来非常非常乱,接口也非常杂,,,,
不过还是祈祷Sun能撑过这波危机,这种geek云集的单纯的崇尚技术公司以后会越来越少了。。。

[ 本帖最后由 eagleleopard 于 2009-2-17 20:51 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP