杨敏 李淑倩 关宇 何芸 侯波
摘要:集群作业管理系统作为高性能计算领域的核心技术,伴随着计算机技术的发展进步逐渐成为计算机学科的热点研究领域。作为集群系统软件的重要组成部分,集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。传统作业管理系统大多需要以命令行的方式进行管理,用户需要熟练掌握多种调度器命令。Slurm 是一种可用于大型计算节点集群的高度可伸缩和容错的集群管理器和作业调度系统,被世界范围内的超级计算机和计算集群广泛采用。本文以Slurm作业调度器为例,对其体系结构、作业执行过程做了重点研究,重点阐述其在地震处理软件中的应用。其高效便捷的操作方式,极大提升工作效率,极大程度地优化了集群管理工作。
关键词:Slurm;高性能计算;作业调度系统
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2021)36-0153-02
开放科学(资源服务)标识码(OSID):
1 引言
新疆油田公司地球物理研究所主要业务是地震资料处理解释勘探研究,同时也是高性能计算中心。油气地震勘探研究是利用高性能计算机的数据处理能力对野外收集的原始资料进行各种去粗取精、去伪存真的数据处理加工工作。随着地震勘探技术进步,特别是近几年油气勘探地质目标逐步转向“低、深、隐、难”的小断裂和薄储层识别,野外高密度宽方位地震采集技术逐步推广,采集的地震资料数据量动辄几十TB甚至上百TB,数据体规模越来越大,数据类型繁杂,数据结构复杂,地震勘探研究迈进大数据时代随着油气地震勘探工作难度的日益增大,引进以密集计算为特征的新的地震资料处理方法和运行平台HPC集群,来满足复杂地质目标研究需求。我所建成了一套计算规模9000多核CPU+GPU异构集群,每秒354.55Tflops万亿次浮点运算的理论处理能力,为油田公司资料数据处理提供了有力保障。主要应用于Paradigm2011处理系统、CGGVeritas Geovation处理系统、Geoeast处理解释一体化平台、AGT逆时偏移软件、Lightning叠前偏移软件。集群节点应用层面,地震资料处理过程中的常规处理工作依旧通过CPU节点进行,地震叠前逆时偏移等高精度成像技术由于计算量巨大,通过CPU/GPU节点的协同进行数据并行计算。这么大规模的集群存储节点,集群作业调度系统作为集群系统软件的重要组成部分,是地震勘探处理软件的核心内容。用户自定义集群分组信息,作业在分组计算节点单元按需求运行,Slurm操作界面高效管理和便捷调度,保障用户作业有序高效进行,共享整个集群计算资源,提高计算节点资源的利用率和吞吐率。Slurm是具备开源、容错、高可伸缩的集群管理和大型小型 Linux 集群作业调度系统。由60万行C代码组成。它不需要对操作系统内核进行修改,而是相对独立的。Slurm在一段时间内为用户分配独占或者非独占的计算资源节点,按照自定义好的计算资源执行作业任务;其次,它能提供管理功能,用于分配的计算节点集上启动作业、执行作业、监视计算资源利用情况的功能,常规是并行作业任务;最后,它通过管理挂起的工作队列,来仲裁资源争夺问题。
2 Slurm技术架构
处理集群通常有多个用途,安装多种应用软件,为多个用户提供服务、集群用途和系统配置经常调整,日常维护服务体系复杂。集群资源调度难,需要将通用的集群监控调度软件和集群运维定制开发工具相结合,搭建适用于实际工作环境的集群资源调度管理体系,通过监控收集集群运行数据,支撑集群优化,保障系统高效稳定运行。
Slurm是适应不同计算规模Linux集群的资源管理和调度软件。它提供高效的资源与作业管理。包括状态监控、资源管理、作业调度和用量记账。
Slurm技术架构如下:
1)运行在每个计算节点上的Slurmd守护进程;
2)运行在管理节点上的中央Slurmctld守护进程(可选的故障切换节点模式) 。
它的一个管理控制进程是Slurmctld运行在管理节点,是资源的控制中枢。它负责记录节点状态、进行分区作业管理、作业调度和资源分配。记账存储进程Slurmdbd也运行在管理节点,它将作业信息保存到数据库,记录用户、账号、资源限制、QOS等信息,负责用户认证和安全隔离。节点监控进程Slurmd运行在每个计算节点,监控节点状态,并向控制进程注册,接收来自控制进程与用户的请求并进行处理。作业管理进程Slurmstepd加载计算任务时由节点监控进程启动,管理一个作业步的所有任务,启动计算任务进程、标准I/O转发,信号传递和任务控制与资源使用信息收集。
如下图2所示,由这些 Slurm 守护程序管理的实体,包括:
1)计算资源node;
2)计算资源组成的逻辑集partition;
3)分配给用户指定的时间量的资源分配job;
4)作业中的一组任务(有可能是并行任务)。
这些分区可以被视为作业队列, 其中每一个都有各种约束, 如作业大小限制、工作时间限制、允许使用它的用户等。 按照优先级排序的作业,从队列中分配节点,直至该队列分资源,如节点、处理器、内存等耗尽。一旦一个job分配了一组节点后, 用户就能够按照任何分配配置,以作业步骤形式启动并行工作。 例如, 可以启动一个作業步骤, 利用分配给作业的所有节点, 或者多个作业步骤可以独立地使用分配的一部分。
作业运行模式分为:交互模式、批处理模式和分配模式。这几种模式只是用户使用方式区别,管理、调度和记账是一样的模式。交互模式作业yhrun,在终端提交资源分配请求,指定资源数量与限制,等待资源分配,获得资源后,加载计算任务,运行中,可与任务进行交互,任务结束后资源释放。批处理模式yhbatch,用户编写作业脚本、提交作业、作业排队等资源分配,分配后,在首节点加载执行作业脚本,脚本运行结束,释放资源,运行结果定向到指定的文件中记录。一个作业可使用多个yhrun生成多个作业步。分配模式yhalloc,它的模式是提交资源分配请求,作业排队等待资源分配,执行用户指定命令,命令执行结束后,释放资源。
3 Slurm 在生产中的应用
基于Slurm的高性能集群管理,选定一台机器作为控制节点,其他机器作为计算节点;获取到集群中所有计算节点的主机名或IP信息,将集群安装包和安装脚本拷贝到各个计算节点;在控制节点上通过SSH服务登录到各个计算节点,通过安装脚本完成节点上集群环境的搭建部署;在控制节点部署控制接收进程,用于监控计算资源,接收计算节点发送的信息;在各个计算节点上存在守护进程用来管控集群中的计算节点,定时采集节点状态以及节点上信息并通过SSH服务發送给控制节点;对计算节点及冗余备份节点进行协同管理;基于Slurm作业管理机制和节点状态监控进程,依据集群系统资源的当前状况对队列中的作业进行部署、监控和分配操作。
笔者单位共64个节点,建立了7组队列,每个队列节点不一,同时并发执行,Slurm管理查看界面分为工作列表、分区列表、节点情况等,故障点标红宜排查,能够实时监测查看队列作业执行情况,管理操作高效简洁。
4 结论
本文从高性能计算集群管理的需求环境背景,到Slurm作业调度系统研究背景、技术架构和应用前景等进行了深入分析阐述。从应用实践得出,Slurm 是优秀的开源作业调度系统,Slurm 集成度更高,操作管理简洁,性能稳定且功能强大。
参考文献:
[1] 张军华,臧胜涛,单联瑜,等.高性能计算的发展现状及趋势[J].石油地球物理勘探,2010,45(6):918-925,936,791-792.
[2] 段新华,王宏勇,丁汨.集群作业管理系统的关键技术分析及比较[J].计算机技术与发展,2009,19(2):87-90.
[3] 薛勇,万伟,艾建文.高性能地学计算进展[J].世界科技研究与发展,2008,30(3):314-319.
[4] 栾翠菊,宋广华,郑耀,等.一种网格并行任务执行时间预测算法[J].计算机集成制造系统,2007,13(9):1805-1810.
[5] 赵宗弟,胡凯,胡建平.基于PBS的集群作业调度策略的设计与实现[J].计算机与数字工程,2006,34(11):123-127.
[6] 罗红兵,张晓霞,魏勇.大规模并行计算机作业调度评价[J].计算机工程与应用,2006,42(10):79-83.
【通联编辑:李雅琪】