- 论坛徽章:
- 0
|
在SMP多处理机上是负载不平衡是比较普遍的一种现象, 我也遇到了. 而且也想了一些办法, 不过还是没有成功.
我以前也发过这样的贴子. 当时我的分析如下:
其实irq_balance()虽然可以平衡多个CPU上面的中断数量,但是它仍然不能完全解决CPU负载不平衡的一些问题.
我分析了一下原因,因为中断是发向了一个CPU,而网络中断的下半部是仍软中断来实现的,而软中断会有CPU亲合的问题,就是说你在哪个CPU上触发了这个网卡硬中断,那么这个CPU也会去执行这个硬中断后来的软中断,所以说如果我的网络是1000M的环境的话,那么我的那个触发中断的CPU就会非常繁忙,而另外一个CPU就不会那么繁忙,就会出现了负载不平衡的问题.
而irq_balance()只能是平衡CPU上面的中断的数量,而并不能平衡CPU的负载情况.
而进程的load_balance()也不能很好地解决这个问题,因为软中断是一个进程,load_balance()是将繁忙的CPU上面的进程拉到当前的CPU上面来执行. 但它是不能将正在执行的软中断的进程给拉过来的.
不过后来没有做这方面的内容了. 所以也就没有怎么关心. 不过有一篇论文是关于这个方面的. 虽然比较老了, 但是也许还是有用.
贡献出来, 希望能对大家有一点帮助. |
|