考虑下面的动态负载平衡问题:任务动态产生,但一旦任务被产生,他们就可以立即被调度(然后运行),而不存在其它的依赖关系,而且,相对于可用的处理器数目来说,当前可以提供的任务数量总是足够的(平均来看),而且,任务之间没有相互(或者很少)的交互。这种情形下的任务的负载平衡的困难性主要是因为下面的两个原因:
☆ 任务是动态产生的,所以有可能出现有的处理器有太多任务,而有的处理器却"吃不饱"
☆ 任务的计算规模(所需要的执行时间)未知,这样无法有效的在任务产生的时候将任务分配给合适的处理器。
下面我们将针对上面的动态负载平衡问题,介绍几种常用的动态负载平衡策略。这些策略在某些情况下相当有效:比如与任务相关联的数据量相对较少,这样任务在处理器的移动开销也会很小(与将它们在本地的处理器上执行的开销相比),这样就可能使处理器间的负载达到平衡状态。
|