张健 国家超级计算天津中心
超级计算机是通过高速互联网络连接并由多个独立计算节点组成的超大型计算机。高速互联网络是计算节点之间发送和接收数据的通道。每个计算节点包含独立的CPU、内存和操作系统,所有计算节点通过挂载分布式共享存储的方式使用同一套存储。超级计算机的这种结构,使得既可以满足单机用户的小规模串行任务需求,也可以满足科研、企业用户的大规模并行任务需求。在超级计算机上给用户提供资源调度、作业管理、记账分析等功能的软件,就是作业管理系统。
超级计算机上有成百上千的用户,假设每个用户提交十个作业,那么作业的规模就会成千上万,这些作业有串行的、有并行的,有交互式的、有批处理的,有计算密集型的、有I/O密集型的,这些作业都会对超级计算机的资源造成争抢。所以,超级计算机需要一种管理软件,用于对用户的作业进行实时响应、调度以及管理,同时,为了保障超级计算机的资源得到充分利用,还应该具有作业监控、作业记账、作业统计和历史作业查询的功能,这个软件就是作业管理系统。一个好的作业管理系统不仅要求保证计算集群有高的吞吐率、高的响应速度,还应提供调优过的作业调度策略来提高用户作业响应速度和执行时间。目前在超级计算机上使用较多的作业管理系统有Slurm、PBS和LSF。
Slurm是LLNL等开发的一种开源作业管理系统,主要功能包括支持细粒度资源选择的资源分配、基于综合优先级的作业调度、提供快速加载大规模并行任务的加载命令、基于检查点的自动作业容错、节点空闲后自动降低功耗等。Slurm具有高效性、灵活性、可靠性、易用性、易管理型、安全性等主要特点。Slurm不仅对MPICH,Open MPI,BlueGene MPI等多种不同实现的MPI提供良好支持,还支持对图形处理器(GPU)、集成众核(Many Integrated Core,MIC)、网络带宽甚至内存带宽等“通用计算资源”的分配。
Slurm主要由控制进程slurmctld、节点监控进程slurmd、作业管理进程slurmstepd、记账存储进程slurmdbd和命令工具集组成。控制进程slurmctld和记账存储进程slurmdbd都部署在管理节点上面,其中slurmctld是Slurm的大脑,负责整个超级计算机的资源分配、作业调度和管理控制,而slurmdbd是用户与控制进程访问记账数据库的中间层,起到用户认证与安全隔离作用。节点监控进程slurmd是计算节点的守护进程,负责收集节点的资源状态并向控制进程报告,同时,slurmd接收来自控制进程与用户命令的请求,进行作业步任务加载、作业取消等。作业管理进程slurmstepd由slurmd在加载作业步任务或批处理作业时派生,负责提供本节点上相应作业步的所有任务的启动、I/O 转发、信号传递、记账信息收集等功能。
PBS全称叫Portable Batch System,是由美国NASA的Ames研究中心开发的作业管理系统。PBS支持多种操作平台,包括主流的Windows和LINUX平台;支持批处理、交互式作业和串行、多种并行作业,如MPI,PVM,HPF,MPL。PBS的特点包括支持多种作业调度方式、提供多种过程语言以便实现新的调度策略、通过用户认证保证安全、故障自动探测和规避等。PBS主要有openPBS、Torque和PBS Pro三个版本:openPBS是较早开发的版本,无后续更新;Torque是开源的PBS版本;PBS Pro是商业版的PBS,提供企业范围内的作业调度。
PBS由server、mom、scheduler模块和命令工具集组成。server是管理模块,负责用户任务的管理、提交,保障整个作业管理系统的稳定运行。mom是作业执行模块,也叫作业执行器,是一个守护进程,负责将用户提交的作业放入执行队列,并在作业运行后将作业的输出返回给用户,一个PBS系统可以存在多个不同mom,以通过不同的作业调度策略满足不同用户的需求。Scheduler是作业调度模块,也叫作业调度器,负责调度执行队列中的作业应该什么时候运行、在哪个计算节点运行、以什么方式运行,它可以和不同的mom通信并获取执行队列状态,然后通过server验证作业有效性,最后根据调度策略进行作业调度。PBS的命令工具集主要用于作业的提交、监视、修改和删除。
LSF全称叫Load Sharing Facility,是由加拿大的Platform公司开发的一个分布式作业管理系统。同Slurm和PBS类似,LSF也支持批处理作业、交互作业、串行作业和多种并行作业。LSF能够自动、安全地收集负载和资源信息,具有良好的容错性,提供多种调度策略、进程迁移和断点检查功能[4]。
LSF是松耦合结构,主要由LSF Base、LSF Batch、LSF Jobscheduler、LSF Multi-Cluster和LSF Analyzer这五个部分组成,其中LSF Base提供动态的负载管理和透明的资源访问,LSF Batch提供异构环境下的作业无缝调度处理,LSF Job-scheduler提供基于计算节点的由时间驱动的作业调度,LSF Multi-Cluster支持网络连通的多台超级计算机的资源共享,LSF Analyzer负责提供作业的全面数据分析,并生成记账报告。LSF Base的功能主要通过守护进程LIM、RES、PIM和ELIM实现,LSF Batch的功能主要通过守护进程MBATCHD、MBSCHD和SBATCHD实现。
本文对目前比较流行的三个作业管理系统Slurm、PBS和LSF进行了概述。通过作业管理系统,超级计算机上用户作业的调度、运行、统计和分析能到得到有效保障。在作业管理系统未来的发展中,将主要面临两个挑战:1、跨平台的作业调度需求将会越来越大,作业管理系统需要提供功能更加强大的调度接口;2、随着云计算、大数据和人工智能的发展,作业管理系统需要加强对云计算技术、大数据技术和人工智能技术的支持。