
初识集群作业调度系统
经过前面的简单学习,大家应该了解了HPC和集群的基本概念,集群有强大的运算力,那么如何管理集群资源的分配呢?如何管理和实现集群作业调度呢?平时我们在使用一台服务器进行一些作业时,只需要简单的登陆这台服务器执行相关指令即可。不过你是否思考过下面这些问题呢?
相信如果上学时学过计算机组成原理和操作系统的同学都能对上面几个问题有一些简单的认识。平时我们不用关心这些细节,是因为操作系统已经实现了进程的管理和调度。可见资源调度对于操作系统而言至关重要,集群是由若干台计算机组成的一个系统,它同样需要管理分配计算资源,这就是调度系统存在的意义。
但集群的调度系统和计算机操作系统的调度系统又有许多不同之处,集群的计算资源分散在系统中由网络互联,我们不可能像使用本地的计算资源一样使用它们。并且我们也不希望某个作业的资源发生竞争而影响执行效率,所以我们也不会采用轮转的方式。集群调度系统采用的是一种资源隔离和预分配的机制来调度资源。除此之外它还提供不同的资源分配策略和管理策略,我们再来思考几个问题:
- 当系统中空闲的资源不能满足更多的作业时如何处理作业?
- 如何保证系统容纳尽可能多的作业?(类似背包问题)
- 我能否让特定的作业优先获得资源?
- 能否让特定的作业运行在特定配置的节点上?
- 在多用户环境下能否限制某些用户的资源用量?
- 能否统计每个用户的资源使用量?
以上这些都是集群调度系统所要处理的问题,并且实际情况会更加复杂。一个优秀的调度系统应该具备多种灵活的调度策略,资源分配时要考虑多种复杂的因素来为作业分配资源,例如CPU、内存、GPU甚至节点所处的网络等,提供资源使用记录及管理,同时它还要能监控和管理节点的工作状态和资源使用情况,为集群提供尽可能高的使用效率。
调度系统对比
我们不会因为要做电子表格就自己做一个Excel出来,显然我们也不必因为要使用集群而自行开发这么一套系统,那市面上有哪些集群调度系统呢?打开Google搜索Cluster Scheduler,出来一大堆结果,这里我将我所了解的目前主流的调度系统为大家做一个简单的对比和梳理:
如果你用中文搜索“集群调度系统”,得到的结果与我们所讨论的集群作业调度系统有一些区别,国内对相关领域的研究的可参考文献较少,中文搜索的结果与我们要讨论的内容有偏差。建议使用Google进行相关资料检索
| 软件 | 厂商 | 授权许可 | 平台支持 | 最大节点数 | 是否收费 |
|---|---|---|---|---|---|
| OpenLava | Teraproc | GPL | Linux | 数千 | 免费 |
| PBS Pro | Altari | 商业授权 | Linux,Windows | 50k+ | 付费 |
| TORQUE | Adaptive Computing | 商业授权 | Linux, Unix | 数千 | 付费 |
| Moab Cluster Suite | Adaptive Computing | 商业授权 | 多平台 | 数千 | 付费 |
| Platform LSF | IBM | 商业授权 | Unix, Linux, Windows | 未知 | 付费 |
| Slurm | SchedMD | GPL | Linux,Unix | 120k+ | 免费 |
术语解释
本文中讨论的“调度系统”实际应该分成Workload Manager和Resource Manager分别讨论,但为了便于理解,我们讨论的“调度系统”即二者的合称。关于它们的区别:
- Resource Manager
- 为集群资源提供作业队列管理
- 创建作业队列
- Workload Manager
- 整合了一个或多个Resource Manager的调度管理器,给Resource Manager下指令
- 监控作业运行状态
- 收集和统计作业及资源使用信息
- 实现资源限制和策略制定等
历史
上面这些调度系统,实际上有一些有一些渊源。早期的LSF是开源的,后来成为了商用软件,OpenLava就是基于早期的LSF(Platform LSF 4.2)开发的开源软件。
然后我们说一说PBS,它最初是由MRJ Technology Solutions这家软件外包商于1991年6月开始为NASA所研发的作业调度系统,MRJ于20世纪90年代末被Veridian收购,2003年Altair公司通过收购Veridian获得了所有PBS技术和知识产权的权利。目前市面上有几个它的衍生产品:
- OpenPBS - 由MRJ于1998年发布的原始开源版本
- TORQUE - 由Adaptive Computing公司(前身为Cluster Resources公司)维护的OpenPBS分支
- PBS Professional(PBS Pro) -
Altair Engineering提供的PBS版本。
Torque其实是基于OpenPBS开发的,早期的Torque也是开源免费软件,不过2018年6月开始TORQUE不再开源。Moab的前生叫Maui,Torque自带的scheduler功能比较弱,所以通常是需要配合Maui使用的,Torque+Maui才是我们讨论的调度系统,Maui之前是开源免费的,后来变成了商用软件Moab后不再免费。PBS Pro截止2016年6月之前都是商用付费软件,从2016年6月起,Altair公司宣布提供开源许可并逐步开放源码。
Slurm前期主要由劳伦斯利弗莫尔国家实验室,SchedMD,Linux NetworX,Hewlett-Packard和Groupe Bull负责开发,它受到封闭源Quadrics RMS的启发,并且具有相似的语法。目前由社区和SchedMD公司共同维护,保持开源和免费,由SchedMD公司提供商业支持。
调度系统选择
上面已经分析和介绍了几款主流的调度系统,他们中的大多数如今都是商业软件,商业软件缺点是需要付费并且通常价格高昂,但它们提供一些开源免费软件所不具备的优势。例如PBS Pro背靠Altair,Altair生产了一些工业界常用的数值模拟软件,因为属于同一家公司,所以当你恰好需要的就是这些应用软件时,PBS Pro也许是不错的选择。LSF也有一些行业内的应用软件支持,并且它们都提供一些商业技术支持以及相关的完整的解决方案。所以如果你是商用、依赖特定厂商提供的应用层配套软件并且不差钱,这些商用调度系统是不错的选择。
但是综合考虑的话,我更倾向于推荐Slurm作为调度管理器。首先它是开源且免费的,我们可以学习它的源码,基于Slurm开发产品。其次从对比数据可以看出来它具备非常优秀的设计和性能,目前全球许多超算中心和超大规模的集群包括我国的天河二号等都采用Slurm作为调度系统。而且Slurm目前仍然处于活跃的开发和维护中,社区占有率和话题度都比较高,相关的学习资料也相当完善,并且官方提供了足够详细的使用文档。
后续的文章我将更加详细的介绍Slurm及其使用。