前言

作业调度开源软件Slurm的安装与使用。


一、Slurm是什么?

Slurm,Simple Linux Utility for Resource Management。可以用于集群或者单机上,作为任务管理程序。
Slurm安装简单,使用便捷,以下介绍在Ubuntu 22.04上安装slurm,并进行配置。

作业调度开源软件Slurm的安装与使用-LMLPHP

二、安装步骤

Step 1. 安装依赖的软件包

sudo apt update
sudo apt install slurm-wlm
sudo apt install slurmd #启动、监控任务、分层通信
sudo apt install slurmctld #管理任务、故障切换、资源监控、队列管理、作业调度

Step 2. 找到slurm-wlm-configurator.html文件,进入该目录下

代码如下(示例):

dpkg -L slurmctld | grep slurm-wlm-configurator.html
#/usr/share/doc/slurmctld/slurm-wlm-configurator.html
sudo chmod +r /usr/share/doc/slurmctld/slurm-wlm-configurator.html

Step 3. 生成配置文件

cd /usr/share/doc/slurmctld
python3 -m http.server
#Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

浏览器打开,点击进入 slurm-wlm-configurator.html 按照配置需求填写以下必要设置。
SlurmctldHost: 计算机名(用hostname命令查看)
PartitionName: 分区名,比如设置为computing
cpus:cpu数量,线程数
Sockets: 指定cpu插槽数
CoresPerSocket: 每个插槽有多少core
ThreadsPerCore: 2
slurmuser:root
Process Tracking:选择 LinuxProc或者pgid

点击submit,生成slurm.conf网页。将内容保存到 /etc/slurm/slurm.conf
修改 sudo vim /etc/slurm/slurm.conf
修改 GresTypes:gpu
加入以下内容,保存

NodeName=XXX Gres=gpu:1 RealMemory=32000 Sockets=1 CoresPerSocket=8 ThreadsPerCore=2 State=UNKNOWN
PartitionName=computing Nodes=ALL Default=YES MaxTime=INFINITE State=UP

XXX:为hostname输出本机名称
Gres=gpu:1 ##GPU数量
RealMemory=32000 Sockets=1 CoresPerSocket=8 ThreadsPerCore=2 #表示32G内存,单颗CPU8核16线程
修改sudo vim /etc/slurm/gres.conf

##################################################################
# Slurm's Generic Resource (GRES) configuration file
# Define GPU device, with AutoDetect sanity checking
##################################################################
#AutoDetect=nvml
NodeName=XXX Name=gpu Type=K40   File=/dev/nvidia0

Type=K40 ## GPU型号

Step 4. 手动创建slurm的输出文件目录

sudo mkdir /var/spool/slurmd
sudo mkdir /var/spool/slurmctld

Step 5. 启动 slurm 服务

依次启动程序:
sudo systemctl start slurmd
sudo systemctl enable slurmd
sudo systemctl status slurmd

sudo systemctl start slurmctld
sudo systemctl enable slurmctld
sudo systemctl status slurmctld

#赋予可读取写入权限:
sudo chmod -R 755 /var/lib/slurm/slurmd
sudo chmod -R 755 /var/lib/slurm/slurmctld
sudo chmod 755 /var/log/slurm/slurmd.log
sudo chmod 755 /var/log/slurm/slurmctld.log

#如果需要修改/etc/slurm/slurm.conf配置,需要依次重新启动:
sudo scontrol reconfig
sudo systemctl restart slurmd
sudo systemctl restart slurmctld

#如果启动失败,如下查看问题
sudo slurmd -Dvvv

三、Slurm作业调度

Slurm 3种作业提交模式

分别为交互(srun),批处理(sbatch),分配(salloc),可使用的主要参数:

-c, --cpu-per-task=NCPUs        #指定每个进程使用核数,不指定默认为1
-J, --job-name=JOBNAME          #指定作业名称
-n, --ntask=NTASKs 						  #指定总进程数;不使用cpus-per-task,可理解为进程数即为核数 
--ntask-per-node=N 						  #指定每个节点进程数/核数,使用-n参数后变为每个节点最多运行的进程数
-N, --nodes=N                   #指定节点数量
-o, --output=out_filename       #指定输出文件输出
-p, --partion=computing         #指定分区
-t, --time=dd-hh:mm:ss          #作业最大运行时间
--mem-per-cpu=MB                #指定计算cpu最大占用内存大小
--mail-type=END/FAIL/ALL        #邮件提醒,可选:END,FAIL,ALL
--mail-user=mail_address        #通知邮箱地址

sbatch模式

批处理模式是指用户编写作业脚本,指定资源需求约束,提交后台执行作业。
运行提交任务后,工作目录中会生成以 slurm 开头的.out 文件为输出文件。

作业提交命令:sbatch filename

#!/bin/bash                     
#批处理脚本

#SBATCH --job-name=JOBNAME      %指定作业名称
#SBATCH --partition=computing   %指定分区
#SBATCH --nodes=2               %指定节点数量
#SBATCH --cpus-per-task=1       %指定每个进程使用核数,不指定默认为1
#SBATCH -n 32       %指定总进程数;不使用cpus-per-task,可理解为进程数即为核数
#SBATCH --ntasks-per-node=16    %指定每个节点进程数/核数,使用-n参数(优先级更高),变为每个节点最多运行的任务数
#SBATCH --time=dd-hh:mm:ss      %作业最大运行时长,参考格式填写
#SBATCH --mail-type=ALL         %邮件提醒,可选:END,FAIL,ALL
#SBATCH --mail-user=address     %通知邮箱地址

###task### 

Slurm 命令

Sinfo命令:
sinfo               	#查看所有分区状态
sinfo -a            	#查看所有分区状态
sinfo -N            	#查看节点状态
sinfo -n node-name 	 	#查看指定节点状态
sinfo --help        	#查看sinfo的说明

节点状态 STATE:
作业调度开源软件Slurm的安装与使用-LMLPHP
恢复和设置节点状态:

sudo scontrol update NodeName=XXX State=RESUME

作业调度开源软件Slurm的安装与使用-LMLPHP
查看运行信息:

scontrol show job JOBID         			#查看作业的详细信息
scontrol show node              			#查看所有节点详细信息
scontrol show node node-name    			#查看指定节点详细信息
scontrol show node | grep CPU   			#查看各节点cpu状态
scontrol show node node-name | grep CPU		#查看指定节点cpu状态

作业提交后,可使用slurm命令,查看,取消,修改作业。


总结

作业调度开源软件Slurm的安装与使用。

参考资料

  1. https://blog.csdn.net/r1141207831/article/details/125272108
  2. https://blog.csdn.net/weixin_45277161/article/details/129908143
  3. https://zhuanlan.zhihu.com/p/571973164
02-09 10:59