runqueue balance in multiprocessor system

来源:互联网 发布:s90pos机怎样设置网络 编辑:程序博客网 时间:2024/06/05 17:45

为了使得进程能够平均地分配到多个cpu之间,linux使用scheduling domain的概念来管理多个cpu,内核保证一个scheduling domain内,负载是均衡的。
具体来说,在每个时钟tick的处理函数中会调用rebalance_tick(),这个函数会根据当前处理器的使用情况,比如是否处于空闲或忙碌状态来决定是否要调用load_balance()(当当前cpu的runqueue是空
时,该函数调用较为频繁)
而load_balance()则首先找到domain里busiest cpu,然后将其runqueue里的进程迁移到当前cpu上来。如果失败了,则寻找到domain里一个最空闲的cpu,将找到的busiest cpu里的任务迁移到那个
最空闲的cpu的队列里去,从而完成负载的均衡。
2009/02/02 一

原创粉丝点击