(2) 负载平衡系统的主要技术
1) 负载平衡决策时机
从任务分配决策时机的角度出发,负载平衡技术可分为静态和动态两大类。所谓静态方法就是在编译时针对用户程序中的各种信息(如各个任务的计算量大小、依赖关系和通信关系等)以及并行系统本身的状况(如网络结构,各处理结点计算能力等)对用户程序中的并行任务作出静态分配决策;而在运行该程序的过程中依照静态分配方案将任务分配到相应结点。理论证明,静态算法求最优调度方案属于NP-Complete问题,因此在实践中往往采用求次优解的算法。静态算法要求获知完整的任务依赖关系信息,但在高度并行的多计算机领域,特别是在多用户方式下,各处理机上的任务负载是动态产生的,不可能作出准确的预测。因此,静态负载平衡方法多用作理论研究和辅助工具。
动态负载平衡方法则是在应用程序运行过程中实现负载平衡的。它通过分析并行系统的实时负载信息,动态地将任务在各处理机之间进行分配和调整,以消除系统中负载分布的不均匀性。由于各处理机上的任务是动态产生的,因此在程序执行期间,某台处理机上的负载就可能突发性地增加或减少。这时,重载(负载较重)的处理机应及时地把多余的任务分配到轻载的处理机上去(或者轻载的处理机及时地向重载的处理机申请任务)。动态负载平衡的特点是算法简单,实时控制,但同时也增加了系统的额外开销。
2) 调度系统模式
动态调度系统模式可分为集中式和分布式。
集中式负载平衡控制一般通过Master/Slave的方式来实现,最典型的是任务池(Pool of Tasks)方法。该方法由Master创建和维护任务池(一般组织成队列形式),并向空闲的Slave处理机分派任务。如果每个任务粒度不同,则粒度较大的任务一般处于队列头部。在Master/Slave方式的负载平衡控制中,各Slave只服从Master的命令,互相间不进行通信;另一种比较典型的集中式负载平衡方法是换维平衡法(Dimension
Exchange Method),该方法是一种全局控制的、完全同步的策略。它首先将N个处理机组织成log(N)维,然后每次在某一维的处理机集合中进行负载平衡。通过更换不同维的处理机集合,利用维与维之间处理机的重叠特性,达到全局负载平衡的效果。集中式负载平衡在大规模并行处理系统中可能会出现系统瓶颈现象。
在分布式负载平衡控制中,各处理机分别进行调度。它又可分为合作型以及非合作型两类。前者的调度决策基于整个系统状况,准确度高但网络开销大;而后者的调度决策则基于局部信息,相对而言网络开销小,但决策准确度低。所以,实际的系统实现往往是这两种类型的折衷。分布式控制系统不会因一个结点的故障而崩溃,故健壮性较强。
3) 负载指标的设计与收集
动态调度中需要获得各结点负载信息,这包括CPU处理能力、CPU利用率、CPU就绪队列长度和进程响应时间等。CPU处理能力反映的是不同类型的处理机计算能力的强弱。CPU利用率定义为单位时间内CPU处理用户进程与处理核心进程的时间比。当CPU利用率很低时,可以认为CPU处于空闲状态;当CPU利用率接近100%时,采用CPU就绪队列长度衡量负载轻重。由于UNIX系统是有优先级的固定时间片分时系统,故还可采用测试特定进程响应时间的方法来估计系统负载。另外,磁盘可用空间、内存,以及I/O利用率也作为一项重要的负载指标。
在集中式负载平衡控制中,各结点收集本地负载信息,并以一定时间间隔向控制结点报告。这里时间间隔的设置对性能影响很大:太短会引起通讯拥挤,太长则影响调度的准确性。在分布式控制中,各结点也必须收集本地负载信息,在信息交换时可以有两种选择,既可以定时交换,又可以只在发生任务调度时交换。
4) 负载调度策略
负载调度策略的作用是决定调度由谁发起,和由谁接受任务。常用的方式包括直接传递(Direct)、全局信息式(Focused Addressing)和竞争式(Bidding)。
在直接传递方式下,各结点根据本身及相邻结点信息发出任务或申请任务。它还包括派生者发起(SI)和接受者发起(RI) 两种类型。SI(Sender-initiated)策略利用处理机邻域的负载信息,由重载处理机主动发起负载平衡,将过多的负载送到邻域中的轻载处理机上,因此它是一种高度分布的方案。在SI系统中,全局负载平衡通过重载区域向轻载区域扩散负载来实现。这里有两个主要问题:如何确定一个处理机负载已达到阈值和如何选择任务要送到的结点。SI方式在系统平均负载较轻的情况下更有效。RI(Receiver-initiated)方式又称为选拔法,在RI系统中,负载平衡由轻载处理机主动发起申请,邻域中的重载处理机在收到该申请后,将适量的负载传递给轻载处理机。由于轻载处理机承担了绝大部分负载平衡的开销,因此RI方法在系统平均负载较重的情况下性能较好。RI方式采用重叠域思想,是目前分布式负载控制技术中,特别适合于支持大规模并行系统解决各种应用问题的优选方法。
在全局信息方式下,每个结点都保留一份全局负载信息表,在任务派生时将任务直接发送给最轻载的处理机。
竞争方式则是在结点发生任务派生时向各个结点发出申请,各个结点根据自身负载情况进行竞争,最终将任务发送给负载最轻的结点。