Slurm资源管理与作业调度系统的安装配置以及简单维护手册

Slurm是一个开源的,具有容错性和高可用性的linux集群超级计算机资源管理和作业调度系统,具有可以避免相互干扰,提高运行效率等特点。
摘要由CSDN通过智能技术生成

Slurm资源管理与作业调度系统的安装配置以及简单维护手册

该文档基于slurm 23.02.1及CentOS 7.9 x86_64、除特殊说明所有命令都在root环境下执行

1. Slurm简介

1.1 用途

Slurm是一个开源的,具有容错性和高可用性的linux集群超级计算机资源管理和作业调度系统,具有可以避免相互干扰,提高运行效率等特点。

1.2 专业术语

  • 节点:

    • Head Node :头节点,管理节点,控制节点
    • Compute Node :计算节点
    • Login Node :登陆节点
    • DBD Node : 数据库节点
  • 用户:

    • account : 账户,一个账户中包含多个用户
    • user : 用户,多个用户可以共享一个账户
    • bank account : 银行账户,对应付费和机时费
  • 资源:

    • GRES : 通用资源
    • TRES : 可追踪资源
    • QOS : 服务质量,作业优先度

1.3架构以及命令

Slurm具有四个守护进程,分别是Slurmctld,Slurmd,Slurmdbd,Slurmrestd.其中Slurmctld运行在控制节点,作为中心管理器用于检测资源和作业(可以配置备份的管理节点用于保证高可用性)。Slurmd运行在所有计算节点上,以便被用于作为远程shell使用:等待作业、执行作业、返回状态、再等待更多作业。Slurmdbd运行在数据库节点,一般用于与数据库进行交互,管理集群的记账信息。Slurmrestd(Slurm REST API Daemon)服务(非必需),该服务可以通过REST API与Slurm进行交互,所有功能都对应的API。

常见命令:

#用户作业工具
srun   										//提交运行作业
scacle										//取消运行作业
sinfo 										//查看系统运行状态
squeue										//查看作业状态
sacct 										//查看运行或结束的作业以及作业步信息
#系统管理命令
scontrol									//启动一个shell,作为管理工具、可以监控、修改集群的配置和状态信息等。
#数据库管理命令
sacctmgr 									//启动一个shell,用以管理数据库,可认证集群、有效用户、有效记账账户等。

1.4 配置模式

Slurm客户节点配置,有两种模式:

  • 传统模式:采用slurm.conf 等配置文件进行配置。
  • 无配置(configless)模式:客户节点无需配置 配置文件。

无配置模式是Slurm的一项新特性(从20.02版起支持),可以允许计算节点和用户登录节点从slurmctld守护进程获取配置而无需采用 /etc/slurm 等目录下的本地配置文件。集群在Slurm控制节点上统一控制配置文件,计算节点、登录节点和其它集群节点只需通过 /lib/systemd/system/slurmd.service 文件配置slurmd服务启动参数,利用启动后的slurmd服务获取所需配置信息即可,而无需复制管理节点上的这些文件成为本地文件(降低文件配置不一样的风险)。支持的配置文件有:

  • slurm.conf
  • acct_gather.conf
  • cgroup.conf
  • cgroup_allowed_devices_file.conf
  • cli_filter.lua
  • ext_sensors.conf
  • gres.conf
  • helpers.conf
  • job_container.conf
  • knl_cray.conf
  • knl_generic.conf
  • oci.conf
  • plugstack.conf
  • topology.conf

slurmd服务启动时将从指定的slurmctld节点获取配置文件,slurmctld节点可以采用 --conf-server 参数准确指定或利用DNS SRV记录指定,采用 --conf-server 参数指定的优先级高于采用DNS SRV记录指定:

  • 采用 --conf-server 参数指定(默认端口6817可省略):
    • 仅一个管理节点slurmctl-primary: slurmd --conf-server slurmctl-primary:6817
    • 一个管理节点slurmctl-primary和一个备份节点slurmctl-secondary: slurmd --conf-serverslurmctl-primary:6817,slurmctl-secondary
  • 采用DNS SRV记录:
    • _slurmctld._tcp 3600 IN SRV 10 0 6817 slurmctl-backup
    • _slurmctld._tcp 3600 IN SRV 0 0 6817 slurmctl-primary

2. 安装准备

  • 所有节点中的slurm服务应由slurm用户守护运行,且节点间的slurm用户应拥有同一uid。应使用useradd -u 命令在所有节点添加slurm用户并将相应文件的属主改为此用户
  • 节点间采用munge进行通讯认证,所有munge应使用同一个munge.key文件运行,可使用munge -n | ssh ip unmunge 验证节点间通讯是否成功
  • 为数据库节点安装mysql数据库,并创建对应的数据库,数据库用户,并授权

3. 编译安装slurm

可以采用第三方已经编译好的RPM或者DEB包,也可以在任意节点进行源码编译方式进行安装

3.1 安装依赖

安装编译Slurm时所需要的依赖性,执行一下命令

yum -y install mariadb mariadb-devel mariadb-server munge munge-libs munge-devel hwloc-libs hwloc-devel hdf5-devel pam-devel perl-ExtUtils-MakeMaker python3 readline-devel kernel-headers dbus-devel rpm-build

3.2 下载Slurm源码包

访问 https://www.schedmd.com/downloads.php 复制所需版本下载源码包链接后,执行:

wget https://download.schedmd.com/slurm/slurm-23.02.1.tar.bz2

3.3 编译RPM包

Slurm-23.02.1.tar.bz2 文件所在的目录执行

rpmbuild -tb slurm-23.02.1.tar.bz2

成功后将在 /root/rpmbuild/RPMS/x86_64/ 目录下生成类似如下RPM文件:

slurm-23.02.1-1.el7.x86_64.rpm
slurm-libpmi-23.02.1-1.el7.x86_64.rpm
slurm-slurmctld-23.02.1-1.el7.x86_64.rpm
slurm-contribs-23.02.1-1.el7.x86_64.rpm
slurm-openlava-23.02.1-1.el7.x86_64.rpm
slurm-slurmd-23.02.1-1.el7.x86_64.rpm
slurm-devel-23.02.1-1.el7.x86_64.rpm
slurm-pam_slurm-23.02.1-1.el7.x86_64.rpm
slurm-slurmdbd-23.02.1-1.el7.x86_64.rpm
slurm-example-configs-23.02.1-1.el7.x86_64.rpm
slurm-perlapi-23.02.1-1.el7.x86_64.rpm
slurm-torque-23.02.1-1.el7.x86_64.rpm

3.4 不同节点间安装的安装包

  • 管理节点

    • slurm
    • slurm-perlapi
    • slurm-slurmctld
  • 计算节点

    • slurm
    • slurm-perlapi
    • slurm-slurmd
  • 数据库节点

    • slurm
    • slurm-slurmdbd

可以通过nfs共享或者使用配置本地yum源,或者直接使用scp将对应的安装包分发到对应的节点

4. 配置文件设置

slurm的配置配置文件主要在/etc/slurm/目录下

4.1 主配置文件

  • 主配置文件: slurm.conf

内容模板可访问 https://slurm.schedmd.com/configurator.html 填写相应信息生成,然后修改

# Cluster Name:集群名
 ClusterName=MyCluster # 集群名,任意英文和数字名字

# Control Machines:Slurmctld控制进程节点
 SlurmctldHost=admin # 启动slurmctld进程的节点名,如这里的admin
 BackupController=   # 冗余备份节点,可空着
 SlurmctldParameters=enable_configless # 采用无配置模式

 # Slurm User:Slurm用户
 SlurmUser=slurm # slurmctld启动时采用的用户名

 # Slurm Port Numbers:Slurm服务通信端口
 SlurmctldPort=6817 # Slurmctld服务端口,设为6817,如不设置,默认为6817号端口
 SlurmdPort=6818    # Slurmd服务端口,设为6818,如不设置,默认为6818号端口

 # State Preservation:状态保持
 StateSaveLocation=/var/spool/slurmctld # 存储slurmctld服务状态的目录,如有备份控制节点,则需要所有SlurmctldHost节点都能共享读写该目录
 SlurmdSpoolDir=/var/spool/slurmd # Slurmd服务所需要的目录,为各节点各自私有目录,不得多个slurmd节点共享

 ReturnToService=1 #设定当DOWN(失去响应)状态节点如何恢复服务,默认为0。
     # 0: 节点状态保持DOWN状态,只有当管理员明确使其恢复服务时才恢复
     # 1: 仅当由于无响应而将DOWN节点设置为DOWN状态时,才可以当有效配置注册后使DOWN节点恢复服务。如节点由于任何其它原因(内存不足、意外重启等)被设置为DOWN,其状态将不会自动更改。当节点的内存、GRES、CPU计数等等于或大于slurm.conf中配置的值时,该节点才注册为有效配置。
     # 2: 使用有效配置注册后,DOWN节点将可供使用。该节点可能因任何原因被设置为DOWN状态。当节点的内存、GRES、CPU计数等等于或大于slurm.conf 中配置的值,该节点才注册为有效配置。

 # Default MPI Type:默认MPI类型
 MPIDefault=None
     # MPI-PMI2: 对支持PMI2的MPI实现
     # MPI-PMIx: Exascale PMI实现
     # None: 对于大多数其它MPI,建议设置

 # Process Tracking:进程追踪,定义用于确定特定的作业所对应的进程的算法,它使用信号、杀死和记账与作业步相关联的进程
 ProctrackType=proctrack/cgroup
     # Cgroup: 采用Linux cgroup来生成作业容器并追踪进程,需要设定/etc/slurm/cgroup.conf文件
     # Cray XC: 采用Cray XC专有进程追踪
     # LinuxProc: 采用父进程
  • 31
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Slurm作业调度系统是一个用于分配和管理计算任务的开源软件。它允许用户在一个大规模的计算集群上提交、管理和监视作业。 首先,用户需要了解Slurm的基本概念。在Slurm中,一个作业是用户指定的一项计算任务,可以包括一个或多个任务。任务是作业的一个单元,可能会在不同的计算节点上执行。作业可以使用不同的资源进行调度,如CPU、内存和 GPU。用户需要清楚地定义作业的资源需求,以便Slurm可以正确地分配资源。 使用Slurm提交作业非常简单。用户只需要编写一个作业提交脚本,该脚本包含了作业的配置信息,如资源需求、输入文件、输出文件等。然后使用`sbatch`命令提交这个脚本即可。Slurm会按照其配置进行作业调度,将作业分配给相应的计算节点进行执行。 一旦作业提交后,用户可以使用`squeue`命令来跟踪作业的状态。该命令显示了作业的ID、状态、开始时间和节点信息等。用户可以根据需要使用`scancel`命令来取消作业。 Slurm还提供了一些高级功能,用于更精细地控制作业的调度和资源分配。用户可以使用`srun`命令在计算节点上启动特定的任务,并通过在作业提交脚本中设置一些参数来控制任务的执行方式。 总之,Slurm作业调度系统是一个强大且灵活的工具,可以帮助用户有效地管理和调度计算任务。通过了解基本概念和使用指南,用户可以更好地使用Slurm来利用集群资源进行高性能计算。 ### 回答2: Slurm作业调度系统是一个开源的、高效的集群管理和作业调度工具。它被广泛用于大规模计算集群和超级计算机系统。以下是使用Slurm的一些指南: 1. 提交作业:通过使用sbatch命令,可以向Slurm系统提交作业。作业通常是一个可执行的程序或脚本。可以使用sbatch命令指定作业的名称、资源需求、作业优先级等。 2. 查看作业状态:可以使用squeue命令查看当前正在运行的作业以及等待运行的作业和队列中的作业。squeue命令可以提供作业的ID、状态、用户等信息。 3. 取消作业:如果需要取消一个已经提交的作业,可以使用scancel命令。需要提供作业的ID来取消作业。 4. 调整作业优先级:使用sprio命令可以调整作业的优先级。较高优先级的作业将更早地得到处理。可以根据需求调整作业的优先级。 5. 资源管理Slurm可以有效地分配集群的资源给不同的作业。可以使用scontrol命令设置和管理资源分配策略。可以向Slurm系统添加、删除或修改节点。 6. 队列管理:使用squeue和scontrol命令可以管理队列。可以创建、暂停、恢复、删除队列。可以根据不同的作业需求和优先级配置不同的队列。 7. 使用预定义脚本:Slurm提供了一些预定义的脚本,可以用于常见的作业操作,比如提交作业、取消作业等。可以根据需要进行修改和使用这些脚本。 8. 集群监控:Slurm提供一些工具来监控集群的状态和性能。可以使用sinfo命令查看集群中的节点状态和资源使用情况。可以使用sacct命令查看作业的执行情况和资源使用情况。 总之,Slurm作业调度系统是一个功能强大的集群管理工具,可以帮助用户高效地管理和调度作业。通过使用上述指南,用户可以更好地了解和使用Slurm系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值