7.4.1 其他MPI作业资源调度技术

目前大型互联网公司的MPI集群的资源调度的主要做法是,基于Toroue的PBS方式进行任务和资源调度。PBS(Portable Batch System)最初由NASA的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需要,如集群系统、超级计算机和大规模并行系统。

PBS的主要特点有:代码开放,免费获取;支持批处理、交互式作业和串行、多种并行作业,如MPI、PVM、HPF、MPL。PBS是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一,PBS目前包括openPBS、PBS Pro和Torque三个主要分支。其中OpenPBS是最早的PBS系统,目前已经没有太多后续开发,PBS Pro是PBS的商业版本,功能最为丰富。Torque是Clustering公司接过了OpenPBS,并给与后续支持的一个开源版本。

由于MPI任务的运行需要执行MPIRUN命令,但是MPIRUN只能保证在一台机器上进行MPI的任务执行,而不能多台计算机MPI任务并行执行,并且,如果同时100个MPI任务执行MPIRUN,那么会同时启动100个进程争夺资源,这样CPU时间片会轮流分配给各个人的任务,从而影响所有人的正常作业。所以,为了能实现多机并行启动MPIRUN,并且针对有限的机器资源,能让多个MPI任务排队等待,形成任务队列,依次执行,有效分配资源,避免资源竞争。一种简单的做法就是利用PBS的任务调度方式来实现。

比如用Torque做任务管理系统,当多个用户使用同一个计算资源时,每个用户用Torque脚本提交自己的任务,由Torque对这些任务进行管理和资源的分配,提供对批处理作业和分散的计算节点的控制。

通过Torque命令提供任务的提交、队列管理、启动、超时中止、任务运行状态查看等。

由于Torque是一个类似于Windows任务管理器的作业管理系统,它不是一个可编程的专业的计算调度框架,它需要以人工输入命令的方式提交任务,然后以进程启动的方式执行,如果任务超时便杀死,它更像一个操作系统的任务管理工具,针对任务的启动和查看状态的进程管理,而不是重点在任务调度和资源调度上。

任务调度上,它没有一个调度器角色的概念,在启动MPI任务后,能够实时检测各任务的运行状态,并针对异常和任务完成状态作出处理和响应。当有异常产生时,基于Torque的任务工具无法容错,只能全盘中止,再重新计算。而且也无法检测到任务总体完成状况。

资源调度上,它无法进行计算机的CPU、内存、网络等资源的隔离和分配,根据MPI任务需要的资源,比如一个任务需要2个CPU,80G内存,它能够隔离出一台机器上符合要求的资源用于完成该任务,并且将剩余的资源用于其他任务。如果无法做到资源隔离和分配,那么不能达到高的资源利用率,容易造成浪费。

另外,Torque通过命令提交MPI任务,但是只当成普通的操作系统进程任务,并没有一个MPI任务包的概念,包括MPI的运行程序,所需资源和配置等。由于需要大量的命令参数来输入这些运行时的必要条件,造成移植性扩充性差,操作复杂。