Chinaunix

标题: 讨论:网络子系统的AMP实现 [打印本页]

作者: 独孤九贱    时间: 2012-12-23 22:08
标题: 讨论:网络子系统的AMP实现
我的机器有四个CPU,我想让其中三个CPU一直运行网络软中断,而不再进行其它任务的处理。例如,在网络软中断中关闭本地CPU中断,然后死循环……大家能否讨论一下,这样会对内核造成哪些副作用?

我来开个头,这会影响到进程调度子系统。
作者: 灌水菜鸟    时间: 2012-12-25 11:28
试试isolcpus(kernel parameter in boot command line)外加中断亲和smp_affinity(in /proc/irq/xxx)呢?
作者: 独孤九贱    时间: 2012-12-25 11:38
灌水菜鸟 发表于 2012-12-25 11:28
试试isolcpus(kernel parameter in boot command line)外加中断亲和smp_affinity(in /proc/irq/xxx)呢?


你的意思是说,只显示前几个CPU online,但是中断又怎么触发后面的CPU呢?(被强制设置为非 online)
作者: 灌水菜鸟    时间: 2012-12-25 12:41
独孤九贱 发表于 2012-12-25 11:38
你的意思是说,只显示前几个CPU online,但是中断又怎么触发后面的CPU呢?(被强制设置为非 online)


不是hotplug,就是“isolcpus=<cpu number>,...,<cpu number>”,让调度器有意避开这几个CPU而已,中断该怎么着还怎么着。
作者: attonie    时间: 2012-12-26 11:42
本帖最后由 attonie 于 2012-12-26 21:01 编辑

APIC不能关闭吧,网络系统自己都依靠APIC运行
作者: 瀚海书香    时间: 2012-12-26 12:25
回复 1# 独孤九贱
可否说一下这样做的目的?

如果软中断在一颗CPU上,而上层处理在另一颗CPU上,那么cache miss和numa node导致的memory distance都会有很大的影响吧。

   
作者: 帅绝人寰    时间: 2012-12-26 12:55
如果用上了multiple socket的numa机器,那么,整个系统的资源和调度,都需要精细控制。

为什么网络子系统依赖acpi? 没道理啊。  不过正常的x86机器上,acpi不应该关闭倒是真的。
作者: 瀚海书香    时间: 2012-12-26 13:08
回复 7# 帅绝人寰
pcie应该需要acpi吧。
现在网卡都是pcie的了吧

   
作者: 帅绝人寰    时间: 2012-12-26 15:46
pcie不用依赖 acpi

只有mcfg访问256~4096配置空间区域时例外, 这又不是必须的。
作者: 独孤九贱    时间: 2012-12-26 16:41
本帖最后由 独孤九贱 于 2012-12-26 16:43 编辑

目的很简单,就是想锁死几个CPU在网络软中断上,不让它们干其它的活。现在基于网络的AMP思路很流行呀。
楼上提到isolcpus内核参数,可以将它们从进程调度子系统中独立出来。但是我想肯定还有其它子系统受影响吧。简单地说,应该就是看时钟心跳到来,每个CPU要执行哪些工作,假如其中某些CPU没有机会执行这些工作,会带来哪些负面的影响。
作者: attonie    时间: 2012-12-26 21:07
本帖最后由 attonie 于 2012-12-26 21:15 编辑
独孤九贱 发表于 2012-12-26 16:41
目的很简单,就是想锁死几个CPU在网络软中断上,不让它们干其它的活。现在基于网络的AMP思路很流行呀。
楼 ...


既然都不让他干其他活了,不如直接用一个微内核的系统,然后就跑一个tcp/ip栈,不过这样做的话驱动就麻烦了
作者: 独孤九贱    时间: 2012-12-27 09:55
attonie 发表于 2012-12-26 21:07
既然都不让他干其他活了,不如直接用一个微内核的系统,然后就跑一个tcp/ip栈,不过这样做的话驱动就麻烦了 ...


这种做法对我不现实,因为现在的整个业务都是基于Linux的tcp/ip栈的
作者: 灌水菜鸟    时间: 2012-12-27 14:14
独孤九贱 发表于 2012-12-26 16:41
目的很简单,就是想锁死几个CPU在网络软中断上,不让它们干其它的活。现在基于网络的AMP思路很流行呀。
楼 ...


如果有副作用,那说明isolcpus的实现有问题,呵呵。
作者: Godbach    时间: 2012-12-30 18:31
回复 1# 独孤九贱
九贱兄,你为什么要这么做啊。

多核的用法,以前通常是选择几个核跑业务,一两个做控制,还可以专门做核间通信。


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2