1. Slurm简介 您所在的位置:网站首页 系统配置管理系统 1. Slurm简介

1. Slurm简介

2023-10-25 20:52| 来源: 网络整理| 查看: 265

1. Slurm简介¶

备注

该文档基于 Slurm 21.08 及 CentOS 7.9 x86_64 ,除非特殊说明,所有命令均采用 root 用户在命令行终端下执行。

1.1. 用途¶

Slurm(Simple Linux Utility for Resource Management, http://slurm.schedmd.com/ )是开源的、具有容错性和高度可扩展的Linux集群超级计算系统资源管理和作业调度系统。超级计算系统可利用Slurm对资源和作业进行管理,以避免相互干扰,提高运行效率。所有需运行的作业,无论是用于程序调试还是业务计算,都可以通过交互式并行 srun 、批处理式 sbatch 或分配式 salloc 等命令提交,提交后可以利用相关命令查询作业状态等。

1.2. 架构¶

Slurm采用slurmctld服务(守护进程)作为中心管理器用于监测资源和作业,为了提高可用性,还可以配置另一个备份冗余管理器。各计算节点需启动slurmd守护进程,以便被用于作为远程shell使用:等待作业、执行作业、返回状态、再等待更多作业。slurmdbd(Slurm DataBase Daemon)数据库守护进程(非必需,建议采用,也可以记录到纯文本中等),可以将多个slurm管理的集群的记账信息记录在同一个数据库中。还可以启用slurmrestd(Slurm REST API Daemon)服务(非必需),该服务可以通过REST API与Slurm进行交互,所有功能都对应的API。用户工具包含 srun 运行作业、 scancel 终止排队中或运行中的作业、 sinfo 查看系统状态、 squeue 查看作业状态、 sacct 查看运行中或结束了的作业及作业步信息等命令。 sview 命令可以图形化显示系统和作业状态(可含有网络拓扑)。 scontrol 作为管理工具,可以监控、修改集群的配置和状态信息等。用于管理数据库的命令是 sacctmgr ,可认证集群、有效用户、有效记账账户等。

1.3. 术语¶ 节点

Hea Node:头节点、管理节点、控制节点,运行slurmctld管理服务的节点。

Compute Node:计算节点,运行作业计算任务的节点,需运行slurmd服务。

Login Node:用户登录节点,用于用户登录的节点。

SlurmDBD Node:SlurmDBD节点、SlurmDBD数据库节点,存储调度策略、记账和作业等信息的节点,需运行slurmdbd服务。

客户节点:含计算节点和用户登录节点。

用户

account:账户,一个账户可以含有多个用户。

user:用户,多个用户可以共享一个账户。

bank account:银行账户,对应机时费等。

资源

GRES:Generic Resource,通用资源。

TRES:Trackable RESources,可追踪资源。

QOS:Quality of Service,服务质量,作业优先级。

association:关联。可利用其实现,如用户的关联不在数据库中,这将阻止用户运行作业。该选项可以阻止用户访问无效账户。

Partition:队列、分区。用于对计算节点、作业并行规模、作业时长、用户等进行分组管理,以合理分配资源。

1.4. 插件¶

Slurm含有一些通用目的插件可以使用,采用这些插件可以方便地支持多种基础结构,允许利用构建块方式吸纳多种Slurm配置,主要包括如下插件:

记账存储(Accounting Storage):主要用于存储作业历史数据。当采用SlurmDBD时,可以支持有限的基于系统的历史系统状态。

账户收集能源(Account Gather Energy):收集系统中每个作业或节点的能源(电力)消耗,该插件与记账存储Accounting Storage和作业记账收集Job Account Gather插件一起使用。

通信认证(Authentication of communications):提供在Slurm不同组件之间进行认证机制。

容器(Containers):HPC作业负载容器支持及实现。

信用(Credential,数字签名生成,Digital Signature Generation):用于生成电子签名的机制,可用于验证作业步在某节点上具有执行权限。与用于身份验证的插件不同,因为作业步请求从用户的 srun 命令发送,而不是直接从slurmctld守护进程发送,该守护进程将生成作业步凭据及其数字签名。

通用资源(Generic Resources):提供用于控制通用资源(如GPU)的接口。

作业提交(Job Submit):该插件提供特殊控制,以允许站点覆盖作业在提交和更新时提出的需求。

作业记账收集(Job Accounting Gather):收集作业步资源使用数据。

作业完成记录(Job Completion Logging):记录作业完成数据,一般是记账存储插件的子数据集。

启动器(Launchers):控制srun启动任务时的机制。

MPI:针对多种MPI实现提供不同钩子,可用于设置MPI环境变量等。

抢占(Preempt):决定哪些作业可以抢占其它作业以及所采用的抢占机制。

优先级(Priority):在作业提交时赋予作业优先级,且在运行中生效(如,它们生命期)。

进程追踪(Process tracking,为了信号控制):提供用于确认各作业关联的进程,可用于作业记账及信号控制。

调度器(Scheduler):用于决定Slurm何时及如何调度作业的插件。

节点选择(Node selection):用于决定作业分配的资源插件。

站点因子(Site Factor,站点优先级):将作业多因子组件中的特殊的site_factor优先级在作业提交时赋予作业,且在运行中生效(如,它们生命期)。

交换及互联(Switch or interconnect):用于网络交换和互联接口的插件。对于多数网络系统(以太网或InifiniBand)并不需要。

作业亲和性(Task Affinity):提供一种用于将作业和其独立的任务绑定到特定处理器的机制。

网络拓扑(Network Topology):基于网络拓扑提供资源选择优化,用于作业分配和提前预留资源。

1.5. 配置模式¶

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

传统模式:客户节点采用 /etc/slurm/ 目录下的 slurm.conf 等配置文件进行配置。

无配置(configless)模式:客户节点无需配置 /etc/slurm 目录下相应的配置文件。

无配置模式是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-server slurmctl-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

参见: 无配置(configless)模式

2. 规划准备¶

集群名:MyCluster

管理节点admin:

内网IP:191.168.1.254

/opt/ 目录:通过NFS网络共享给其它节点使用

配置文件: /etc/slurm/ 目录下的 cgroup.conf 、 slurm.conf 、 slurmdbd.conf 等文件

需要启动(按顺序)的守护进程服务:

通信认证:munge

系统数据库:mariadb(也可采用文本保存,更简单,本文不涉及)

Slurm数据库:slurmdbd

主控管理器:slurmctld

数据库节点(运行slurmdbd服务)admin:

可与管理节点共用,本文档与管理节点共用

用户登录节点login:

内网IP:191.168.1.250

/opt/ 目录:通过NFS服务共享管理节点上的 /opt/ 目录

计算节点node[1-10]:

内网IP:191.168.1.[1-10]

/opt/ 目录:通过NFS服务共享管理节点上的 /opt/ 目录

需要启动(按顺序)的服务:

通信认证:munge

Slurm数据库:slurmdbd

各节点node[1-10],login:

admin节点root用户可以通过密钥无需输入密码ssh进入各节点

安装好munge包

配置有NIS或LDAP等用户信息服务同步admin节点用户信息(管理节点建立slurm用户后,各节点执行 id slurm 可确认其slurm用户是否存在)

并行操作:

各节点执行同样命令可以利用 pdsh 命令或for循环处理:

如需安装PDSH并行shell包,可利用源 http://mirrors.ustc.edu.cn/epel/ 进行安装配置。

在node[1-10]节点执行 id slurm 可用下述命令之一:

pdsh: pdsh -w node[1-10] id slurm

for循环: for i in `seq 1 10`; do ssh node$i id slurm; done

复制 /etc/hosts 文件到node[1-3,5,7-10]节点 /etc 目录下可执行下述命令之一:

pdsh: pdcp -w node[1-3,5,7-10] /etc/hosts /etc

for循环: for i in `seq 1 10`; do scp -a /etc/hosts node$i:/etc/; done

管理服务的常用命令(以slurmd为例):

设置开机自启动服务: systemctl enable slurmd

启动服务: systemctl start slurmd

重新启动服务: systemctl restart slurmd

停止服务: systemctl stop slurmd

查看服务状态及出错信息: systemctl status slurmd

查看服务日志: journalctl -xe

3. 编译安装slurm¶

可以采用第三方已编译好的RPM或DEB包进行安装,也可以采用源码编译方式。

可以在安装有所需的依赖包的任何节点处理,本例在管理节点进行。

3.1. 安装编译slurm所需的依赖包¶

安装编译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-21.08.2.tar.bz2 3.3. 编译成RPM包¶

在 slurm-21.08.2.tar.bz2 文件所在目录执行(如有必要改变生成包的内容,可以提前设置 ~/.rpmmacros 文件):

rpmbuild -ta slurm-21.08.2.tar.bz2

备注

如提示缺少库、包等,请安装对应的包后再执行上面命令。

如所依赖的包安装的不全,上述命令即使没有报错,能生成RPM包,也有可能所需的功能没有。

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

slurm-21.08.2-1.el7.x86_64.rpm slurm-libpmi-21.08.2-1.el7.x86_64.rpm slurm-slurmctld-21.08.2-1.el7.x86_64.rpm slurm-contribs-21.08.2-1.el7.x86_64.rpm slurm-openlava-21.08.2-1.el7.x86_64.rpm slurm-slurmd-21.08.2-1.el7.x86_64.rpm slurm-devel-21.08.2-1.el7.x86_64.rpm slurm-pam_slurm-21.08.2-1.el7.x86_64.rpm slurm-slurmdbd-21.08.2-1.el7.x86_64.rpm slurm-example-configs-21.08.2-1.el7.x86_64.rpm slurm-perlapi-21.08.2-1.el7.x86_64.rpm slurm-torque-21.08.2-1.el7.x86_64.rpm 3.4. 不同节点类型所需安装包¶ 管理节点(Head Node,运行slurmctld服务)、计算节点(Compute Node)和用户登录节点(Login Node):

slurm

slurm-perlapi

slurm-slurmctld(仅管理节点需要)

slurm-slurmd(仅计算节点需要,用户登录节点如采用无配置模式,则也需要)

SlurmDBD节点:

slurm

slurm-slurmdbd

4. 管理节点操作(也为其它节点配置)¶ 4.1. 设置Slurm的YUM软件仓库¶

可以将前面生成的RPM通过NFS服务共享或直接复制到各节点,然后执行 yum localinstall 包文件名 命令安装,或采用下面建立YUM软件仓库后直接用包名方式安装。

建立YUM仓库目录:

mkdir -p /opt/src/slurm

复制前面生成的RPM文件到 /opt/src/slurm/ 目录:

cp /root/rpmbuild/RPMS/x86_64/*.rpm /opt/src/slurm/

建立YUM仓库RPM文件索引:

在 /opt/src/slurm/ 目录下运行 createrepo . 命令生成仓库索引。

生成repo配置文件,执行命令:

cat >/etc/yum.repos.d/slurm.repo


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有