免费注册 查看新帖 |

Chinaunix

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

关于LINUX上中断在各个CPU之间的负载平衡问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-06-29 12:02 |只看该作者
看来真是个问题拉?

论坛徽章:
0
12 [报告]
发表于 2007-06-29 12:37 |只看该作者
好问题,确实!
密切关注!

论坛徽章:
0
13 [报告]
发表于 2007-06-29 13:01 |只看该作者
原帖由 zx_wing 于 2007-6-29 11:49 发表于 10楼  

是这个表。我不清楚在linux下有什么接口可以改它,但既然在/sys有,那就应该有相应的driver。
不太清楚linux里这部分,只能提供一点线索


已经很感谢了  我在看io_apic.c里的内容, 看看能不找到问题所在

论坛徽章:
0
14 [报告]
发表于 2007-06-29 13:20 |只看该作者
看看这篇线索文章,然后达人解释一下吧.

http://www.ibm.com/developerwork ... ernelint/index.html

我想在测试中还应该有一个叫做irqbalance东西吧.

[ 本帖最后由 wysilly 于 2007-6-29 13:22 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2007-06-29 13:24 |只看该作者
我引用的帖子的问题是,iptables重新启动后是平衡的,过了几个小时就严重不平衡了。


原帖由 wysilly 于 2007-6-29 13:20 发表于 14楼  
看看这篇线索文章,然后达人解释一下吧.

http://www.ibm.com/developerwork ... ernelint/index.html

我想在测试中还应该有一个叫做irqbalance东西吧.

论坛徽章:
0
16 [报告]
发表于 2007-06-29 13:29 |只看该作者
对啊,对啊。就是这个问题,与中断密切相关,要想了解为什么不平衡,不就要了解平衡原理吗?

双网卡,双cpu,刚好一个cpu管一个nic。

双网卡,4cpu好像不太好平衡。所以就又要看irqbalance的实现方式了。

论坛徽章:
0
17 [报告]
发表于 2007-06-29 13:36 |只看该作者
好象不是一个CPU管一个网卡。

你看:2个网卡2个CPU,eth1没有接网线,eth0基本上还是平衡的。


]# cat /proc/interrupts
           CPU0       CPU1
  0: 1218847937         40    IO-APIC-edge  timer
  2:          0          0          XT-PIC  cascade
  8:          0          1    IO-APIC-edge  rtc
14:         66          1    IO-APIC-edge  ide0
16:          0          0   IO-APIC-level  uhci_hcd
18:          0          0   IO-APIC-level  uhci_hcd
19:          0          0   IO-APIC-level  uhci_hcd
23:         13          1   IO-APIC-level  ehci_hcd
26:    9935950          1   IO-APIC-level  ioc0
48:   12783533   46127059   IO-APIC-level  eth0
49:    4903874          1   IO-APIC-level  eth1
NMI:          0          0
LOC: 1065696911 1065696910
ERR:          0
MIS:          0





原帖由 wysilly 于 2007-6-29 13:29 发表于 16楼  
对啊,对啊。就是这个问题,与中断密切相关,要想了解为什么不平衡,不就要了解平衡原理吗?

双网卡,双cpu,刚好一个cpu管一个nic。

双网卡,4cpu好像不太好平衡。所以就又要看irqbalance的实现方式了。

论坛徽章:
0
18 [报告]
发表于 2007-06-29 13:44 |只看该作者
我是说可以一个cpu绑一个nic,如以下。
           CPU0       CPU1      
169:  645187653          0   IO-APIC-level  eth1
177:       1186   34171661   IO-APIC-level  eth2
225: 3552116787 3976669860   IO-APIC-level  uhci_hcd:usb4, eth0
3个网卡,2cpu,我就让eth0由irqbalance来自动平衡.
eth1绑在cpu0上, cpu1绑eth2,这样效率高,irqbalance来自动平衡,效率差点。

论坛徽章:
0
19 [报告]
发表于 2007-06-29 18:54 |只看该作者
原帖由 思一克 于 2007-6-29 11:04 发表于 1楼  
关于LINUX上中断在各个CPU之间的负载平衡问题

看帖子
http://linux.chinaunix.net/bbs/thread-753474-1-1.html

说4个CPU有严重的不平衡问题。因为无条件实验,
LZ也不在回贴。所以请有兴趣的来参加实验 ...



在SMP多处理机上是负载不平衡是比较普遍的一种现象, 我也遇到了. 而且也想了一些办法, 不过还是没有成功.

我以前也发过这样的贴子. 当时我的分析如下:

其实irq_balance()虽然可以平衡多个CPU上面的中断数量,但是它仍然不能完全解决CPU负载不平衡的一些问题.
我分析了一下原因,因为中断是发向了一个CPU,而网络中断的下半部是仍软中断来实现的,而软中断会有CPU亲合的问题,就是说你在哪个CPU上触发了这个网卡硬中断,那么这个CPU也会去执行这个硬中断后来的软中断,所以说如果我的网络是1000M的环境的话,那么我的那个触发中断的CPU就会非常繁忙,而另外一个CPU就不会那么繁忙,就会出现了负载不平衡的问题.
而irq_balance()只能是平衡CPU上面的中断的数量,而并不能平衡CPU的负载情况.
而进程的load_balance()也不能很好地解决这个问题,因为软中断是一个进程,load_balance()是将繁忙的CPU上面的进程拉到当前的CPU上面来执行. 但它是不能将正在执行的软中断的进程给拉过来的.

不过后来没有做这方面的内容了. 所以也就没有怎么关心. 不过有一篇论文是关于这个方面的. 虽然比较老了, 但是也许还是有用.
贡献出来, 希望能对大家有一点帮助.

Linux SMP网络体系性能分析.pdf

263.79 KB, 下载次数: 872

论坛徽章:
0
20 [报告]
发表于 2007-06-29 19:29 |只看该作者
原帖由 albcamus 于 2007-6-29 11:24 发表于 4楼  


没用。

# cat /proc/cmdline
ro root=LABEL=/ vga=0x31B acpi_irq_balance

# grep eth0 /proc/interrupts
21:      19341          0   IO-APIC-fasteoi   libata, eth0

eth0和libata中断还是全 ...



我也是像您这样写过的, 不过写了之后过不了一会儿时间又回到了以前的状态.
当时把我郁闷得...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP