CANARYPWN'S NATÏVE BLOG

CentOS8 下 slurm 的安装配置

CentOS8 下 slurm 的安装配置
Canarypwn
Jan 18, 2021
It takes 9 minutes to read this article.

Slurm 任务调度工具(前身为极简Linux资源管理工具,英文:Simple Linux Utility for Resource Management,取首字母,简写为SLURM),或 Slurm,是一个用于 Linux 和 Unix 内核系统的免费、开源的任务调度工具,被世界范围内的超级计算机计算机群广泛采用。它提供了三个关键功能。第一,为用户分配一定时间的专享或非专享的资源(计算机节点),以供用户执行工作。第二,它提供了一个框架,用于启动、执行、监测在节点上运行着的任务(通常是并行的任务,例如 MPI),第三,为任务队列合理地分配资源。

安装步骤

系统为 CentOS 8, 一共有两个 node 。其中 node1 作为主节点, node2 作为计算节点。

设置slurm账户

# 新建用户。-m 为用户创建家目录;-G wheel 将用户添加到 wheel 用户组
useradd -m -G wheel slurm
# 设置密码
passwd slurm
# 查看账户相关性喜
id slurm
# 所有节点的 slurm 组 id 必须一致。否则无法启动成功

安装munge

yum -y install epel-release
yum -y install gtk2
yum -y install gtk-devel
yum -y install munge
yum -y install munge-devel
yum -y install hdf5-devel

手动创建目录,这些目录在munge安装时不会自动创建,分别用于munge的配置、运行、日志等需求。

mkdir -p /etc/munge
mkdir -p /var/run/munge
mkdir -p /var/lib/munge
mkdir -p /var/log/munge

修改上述目录的属主为 slurm

chown -R slurm:slurm /etc/munge
chown -R slurm:slurm /var/run/munge
chown -R slurm:slurm /var/lib/munge
chown -R slurm:slurm /var/log/munge
# 以下看需要,我用到了
chown slurm:slurm /var/run/munge/munge.socket.2.lock
chown slurm:slurm /var/log/munge/munged.log
chown slurm:slurm /etc/munge/munge.key

在 master 主节点上通过/usr/sbin/create-munge-key命令生成 munge 密钥文件,将此文件需要存储在所有节点的 /etc/munge/ 下。

使用 slurm 账户启动 munge

su slurm
munged
ps aux|grep munge
# 如果发现之前已经有munge在运行了,kill掉它

安装slurm

去官网可以下载slurm的安装包。地址:https://www.schedmd.com/ 安装的方式有好几种,源码编译安装、rpm包安装这两个方式我试过,都可以。这里选择源码编译安装。 将包使用tar命令解压,进入解压目录编译安装。这个过程需要gcc编译器。

yum install gcc
./configure
make -j
make install
# 当发现缺少 HDF5 时更改 configure 并重新编译
# ./configure --with-hdf5=no
# make -j
# make install

在 CentOS 下,安装目录在 /usr/local/lib/slurm

配置 slurm

使用 Slurm System Configuration Tool (schedmd.com) 进行文件配置,并且有简单版本Slurm System Configuration Tool (schedmd.com)

配置文件在 /usr/local/etc/slurm.conf ,运行 slurmctld -c 显然。

参考

# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
SlurmctldHost=epyc.node1
#
#MailProg=/bin/mail
MpiDefault=none
#MpiParams=ports=#-#
ProctrackType=proctrack/cgroup
ReturnToService=0
SlurmctldPidFile=/var/run/slurmctld.pid
#SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
#SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=slurm1
#SlurmdUser=root
StateSaveLocation=/var/spool
SwitchType=switch/none
TaskPlugin=task/affinity
#
#
# TIMERS
#KillWait=30
#MinJobAge=300
#SlurmctldTimeout=120
#SlurmdTimeout=300
#
#
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
#
#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
ClusterName=epyc.node1
#JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
#SlurmctldDebug=info
#SlurmctldLogFile=
#SlurmdDebug=info
#SlurmdLogFile=
#
#
# COMPUTE NODES
NodeName=epyc.node1 NodeAddr=10.15.89.111 CPUs=256 RealMemory=1031895 Sockets=2 CoresPerSocket=64 ThreadsPerCore=2 State=UNKNOWN
NodeName=epyc.node2  NodeAddr=10.15.89.112 CPUs=256 RealMemory=1031895 Sockets=2 CoresPerSocket=64 ThreadsPerCore=2 State=UNKNOWN
PartitionName=control Nodes=epyc.node1 Default=YES MaxTime=INFINITE State=UP
PartitionName=computer Nodes=epyc.node2 Default=YES MaxTime=INFINITE State=UP····

配置完成通过服务启动slurm,控制节点需要执行slurmctld -cslurmd -c。计算节点只需要执行slurmd -c

参考

HPC 系列文章 (6):Slurm 部署

unable to ‘make’ slurm · Issue #12 · mknoxnv/ubuntu-slurm (github.com)

Slurm Workload Manager - Quick Start Administrator Guide (schedmd.com)

slurm安装配置 - 尘曲的个人博客