随着信息技术的飞速发展,高性能计算HPC得到众多科研领域的青睐,如生物基因、材料设计、金融计算、计算机科学等领域[1]。高性能计算是计算机科学的分支之一,其采用并行化技术,将计算复杂度较高的计算任务分解成众多小型计算任务,将其分配给众多处理器同时计算,以实现高性能计算的目的[2]。
目前,高性能计算已成为继理论科学和实验科学之后科学探索的第三范式,被广泛应用在高能物理学、材料科学、航天航空飞行器设计、国民经济预测与决策、能源勘探、卫星图像处理、情报分析、互联网服务、工业仿真等领域,对国民经济发展和国防建设具有重要价值。
来源:安徽大学官网
高性能计算平台一般由管理节点、登录节点、网络管理节点、计算节点和存储资源构成,其中计算节点一般包括CPU计算节点和GPU计算节点[3]。此外,高性能计算平台还可以扩展公有云的校外计算资源,由此构成一套完整的异构化的混合计算平台。高性能计算平台中各计算节点由高性能网络(InfiniBand/OPA)相互连接,构成一个高性能计算集群。
Slurm是可用于高性能计算集群的开源集群管理器和作业调度系统,维护待处理的作业队列并管理此集群的整体资源[4,5]。针对Slurm的调度软件的应用,众多学者在其基础上提出了许多适应于自身平台的优化改进策略。
例如,为应对超大规模计算系统带来的大量监控数据,文献[6]提出了超大规模计算系统的监控、调度及网络优化实践,使集群节点数量可以达到上万。针对Slurm的计费功能,文献[7]提出了一种基于Slurm作业调度系统的预计费装置和方法,通过将Slurm调度系统与GOLD机时记账系统集成,将作业使用机时从用户可用机时中预约,作业结束后扣除机时。此外,文献[8]还提出一种基于Slurm作业管理的可视化调度系统,通过Web前端实现了用户以可视化方式使用作业调度系统。
Slurm系统也存在不足,Slurm调度系统默认实现用户在各节点间的无障碍跳转,也就是说用户可以通过登录节点直接SSH登录任意计算节点,并在此节点直接绕过Slurm调度软件进行作业计算[9]。这将导致用户可以不再受Slurm资源管理的限制,随意使用计算资源,造成管理和运维的不便。此外,Slurm在登录节点的监管方面也存在严重缺陷,用户可以直接无限制使用资源,而这将增加平台登录节点宕机的可能性。
针对上述问题,本文提出一套基于Slurm的智能化高性能计算资源管理方法,该方法包含一系列的控制功能:限制节点访问、智能化管理资源、资源异常查杀等,为平台的有效运行提供了一套完备的管理手段和策略。
展开全文
Slurm简介
Slurm资源调度工具是面向Linux、Unix类似内核的免费和开源工作调度程序,由世界上许多超级计算机和计算机集群使用。它提供了三个关键功能:首先,它在一段时间内为用户分配对资源(计算机节点)独占和/或非独占的访问权限,以便他们可以执行工作;其次,它提供了一个框架,用于在一组分配的节点上启动、执行和监视工作(通常是并行作业,例如MPI);最后,它通过管理待处理作业队列来仲裁资源争用。
Slurm的设计非常模块化,有大约100个可选插件。在最简单的配置中,它可以在几分钟内完成安装和配置,并为更复杂的配置提供数据库集成,管理资源限制和工作负载优先级[10]。
Slurm资源管理系统的正常运行还需要一些系统服务与支撑环境的正确设置,比如系统配置、节点、分区、调度、记账存储、网络拓扑等。Slurm提供了丰富的配置文件,如主配置文件、记账存储服务配置文件、节点配置文件、分区配置文件和通用资源配置文件等。
Slurm资源管理系统由多个部分构成,如控制进程、记账存储进程、节点监控进程、作业管理进程、命令工具等,其系统结构如图1所示。
图1 Slurm系统结构
基于Slurm的资源管理策略优化
本文主要针对高性能计算集群的登录节点、管理节点和计算节点进行资源和权限的管理配置,其中使用到的软件资源有:Slurm、CpuLimit模块、pam_access.so插件和Linux基本的指令集。实现的功能如下:
1.对各节点的root进行固定IP访问限制;
2.限制登录节点中用户的资源使用;
3.限制用户登录无作业的计算节点;
4.在计算节点查杀非Slurm用户的大计算进程;
5.GPU节点的异常作业处理。
通过上述工具配置相应策略,可实现高性能计算平台的安全运行和资源智能化、自动化的监管与调度。
root固定IP访问限制
高性能计算平台默认为用户提供计算服务器,所以访问端口对外开放。root用户拥有整个系统中至高无上的权力,为了避免一些潜在的风险,我们需对root用户进行访问权限的设置。该功能需要使用pam_access.so插件,该插件的功能和作用是根据主机名(包括普通主机名或者FQDN)、IP地址和用户实现全面的访问控制。pam_access.so模块的具体工作行为根据配置文件/etc/security/access.conf来决定。具体设置策略如下:
管理节点只允许指定IP地址root访问,禁止非root用户访问;登录节点允许指定IP的root访问和所有用户访问;计算节点允许指定IP的root访问,禁止用户直接访问。
实现方法:
1.在/etc/pam.d/sshd添加如下一句accountrequiredpam_access.so
2.在/etc/security/access.conf添加
该配置文件的主体包含了三个字段:权限、用户和访问发起方。格式上是一个用“:”隔开的表。其中第一个字段:权限(permission),使用“+”表示授予权限,用“-”表示禁止权限。第二个字段:用户(user),定义了用户、组以及用“@”表示的不同主机上的同名用户和同一主机上不同名用户。第三个字段:访问发起方(origins),定义了发起访问的主机名称、域名称和终端名称。
登录节点中用户的资源使用限制
登录节点是高性能计算的门户,主要用于用户的登录访问和作业提交功能。若用户在登录节点执行大规模的计算任务,会导致该登录节点宕机。我们通过定时检测用户的进程信息,对CPU使用率比较高的进程进行CPU资源限制。CPU资源限制选用的是cpulimit插件,具体设置策略如下:
1.通过在登录节点执行如下命令实现对用户进程的获取(grep-h'^.[0-9]\{4\}'是依据安徽大学的账户规则进行的匹配筛选):
2.对检测到的进行pid,进行CPU资源对比,超过阈值的pid进行cpu限制:
登录节点的大规模计算资源限制的处理流程如图2所示,配置crontab定时任务计划,使脚本定制执行。
图2 登录节点资源限制流程
限制用户登录无作业的计算节点
该功能主要实现用户在登录节点无法直接SSH到计算节点,只有用户通过Slurm提交作业后,才有权限SSH到运行该作业的计算节点。本功能需要使用Slurm的PAM插件来实现。
实现方法:
1.添加不包含pam_systemd.so的PAM配置:
2./etc/security/access.conf里添加如下:
3./etc/pam.d/sshd添加:
4.在/etc/pam.d/目录下创建slurm文件,文件内容如下:
计算节点查杀非Slurm用户的大计算进程
用户在作业运行期间,可以SSH到相应的计算节点。这时用户可以直接在该计算节点进行提交作业操作,这个操作是系统不允许的。但是如果作业结束后,直接阻截该用户的所有进程,也不合理。为此,我们添加了对计算节点异常进程的查杀操作,操作流程如图3所示,其具体设置策略如下:
图3 计算节点的异常进程处理流程
1.通过squeue查询当前计算节点的作业信息;
2.通过ps指令查询排除提交作业用户的进程信息;
3.对各进程信息的CPU使用率进行检测,对使用率较高的进程进行查杀操作。
GPU节点异常作业处理
GPU计算节点主要用于计算深度学习等高性能计算,不允许提交传统的CPU计算作业,但是Slurm无法准确判断和管理该功能。为此,我们编写了在异常GPU作业查杀的模块。其操作流程如图4所示,具体设置策略如下所示:
图4 GPU节点的异常进程处理流程
1.通过squeue查询当前计算节点的作业信息;
2.通过scontrol轮询各作业,判断是否有申请GPU的字段信息(TresPerNode=gpu),对未使用GPU的作业进行scancel操作。
策略部署与性能测试
本文针对安徽大学校级高性能计算平台在实际运行中遇到的问题提出了基于Slurm的资源管理调度优化方法。
该优化策略包括:根据IP地址的类型确定是否允许IP地址访问对应的节点,以及根据用户的类型确定是否允许用户访问对应的节点;根据用户在登录节点使用的CPU资源和预设的CPU资源阈值,确定是否进行CPU限制;根据用户提交作业的情况,确定是否允许用户登录到计算节点;获取已提交作业的用户信息,根据非作业用户进程的CPU使用率和预设的使用率阈值,确定是否查杀该用户进程;对GPU计算节点中的非GPU作业进行取消等功能。
本文将Slurm的优化策略在安徽大学校级高性能计算平台进行部署,并测试其性能。安徽大学高性能计算平台是集传统超算和GPU计算于一体的混合计算平台,该平台系统拓扑图如图5所示。
图5 安徽大学高性能计算平台拓扑
目前,该平台的建设规模如下:
存储空间186T,CPU总核数3340核,GPU总卡数59张,总计算节点数量为85个CPU节点和10个GPU节点,平台单精度性能总算力1316.8Tflops。
安徽大学高性能计算平台于2021年底部署了基于Slurm的资源管理优化策略,并结合用户培训、群里通知等方式协助管理。经过2022年第一季度实际测试,统计异常平台记录如表1所示。从表中可以看出,平台的异常IP的节点访问现象显著降低,有效解决了登录节点异常宕机的问题,同时切实保证了作业正常运行,极大减少了平台运维工程师的工作量。
表1 安徽大学高性能计算平台的异常信息统计
本文提出一种基于Slurm的智能化的高性能计算平台的资源管理优化策略,其能够保证高性能计算平台资源管理和分配,有效避免了Slurm的常见漏洞;此外,该策略能够限制root的安全访问权限和计算节点的权限访问,同时也限制登录节点中用户的资源使用和计算节点的异常进程查杀。
参考文献
[1]聂含伊,杨希,张文喆.面向多领域的高性能计算机应用综述[J].计算机工程与科学,2018,40:1-9.
[2]汪洋,李鹏,季一木,等.高性能计算与天文大数据研究综述[J].计算机科学,2020,47(1):1-6.
[3]唐少宇.高性能计算机体系结构综述[J].计算机光盘软件与应用,2010,15:51-52.
[4]郑文旭,潘晓东,马迪,等.用于高性能计算的作业调度能效性研究综述[J].计算机工程与科学,2019,041(009):1525-1533.
[5]Bacchini F,Olshevsky V,Lapenta G.Slurm:An innovative Particle-in-Cell Method for Magnetohydrodynamics [J].American Physical Society,2016:1-1.
[6]秦晓宁,王家尧,胡梦龙,等.面向超大规模计算系统的监控,调度及网络优化实践[J].数据与计算发展前沿,2020,2(1):15.
[7]郝文静,张涛,原帅,等.一种基于SLURM作业调度系统的预计费装置和方法[P],CN111198755A.2020.
[8]曲德源,吴登勇,孙超,等.一种基于Slurm作业管理的可视化调度系统[P],CN108319514A.2018.
[9]杨敏,李淑倩,关宇,等.Slurm作业调度系统在高性能集群中的应用[J].电脑知识与技术:学术版,2021,17(36):1-3.
[10]张威.基于超级计算的复杂CAE作业管理系统的研究与实现[D].湖南大学,2015.
基金项目:安徽省教育厅高校自然科学重点项目(KJ2021A0013)
作者:段运生(安徽大学网络信息中心)
责编:陈荣
投稿或合作,请联系:eduinfo@cernet.com
特别声明
本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。