按照计划,本想写一篇负载均衡的调度算法分析,但查看了网上的资料,发现这篇文章已经写的比较好,我都没用那么大的耐心写的那么详细。
下面是我在网上找到的资料,这里发个链接。
http://blog.csdn.net/dog250/article/details/6538240
另外,在这里简单总结一下:
1,负载均衡的调度只是针对非实时任务,原因,参考我前面的文章:实时任务调度算法分析
2,负载均衡就要涉及在那些CPU上均衡,怎么判断计算这些CPU的负载。在内核中,根据CPU的拓扑结构,把系统的CPU按照树形结构组织起来,通过调度域保存相关信息。
3,系统尽可能的不进行任务迁移,因为,迁移是需要成本的。系统进行迁移时是从下往上的,这与我们的日常的工作类似。比如,工作任务很多,首先,先在小组内进行平衡,小组内的人员都已经分了任务了,还有任务怎么办,协调到另外一个小组去,再不行,就上升到大组里面去,再不行,就上升到部门去。非常的好理解。但越往上,任务迁移的阻力越大。
4,为了计算这些阻力,系统在/proc/sys/kernel/sched_domain下开放了很多的配置参数,可供管理员配置。