Skip to content

🅁 总阅读量: -

🅅 总访问量: -

◷ 更新于: 2026-08-11

🅆 字数: 0

🅁 阅读: -

slurminstallUbuntumail

Slurm 本地单机安装与邮件通知

本文记录在 Ubuntu 22.04 单台机器上部署 Slurm(slurm-wlm),并配置任务邮件通知的完整流程,适用于个人工作站或单机测试环境。

环境准备

  • 操作系统:Ubuntu 22.04
  • 权限:具备 sudo 的账户(下文服务以 root 运行)
  • 主机名:记下令 hostname 命令输出的主机名,下文统一用占位符 master 表示,请将其全部替换为你的实际主机名

Slurm 要求控制节点(slurmctld)与计算节点(slurmd)的主机名可解析。单机部署时两者为同一台机器,因此 ControlMachineNodeName 需使用同一个主机名。

一、安装 Slurm

bash
sudo apt update
sudo apt install slurm-wlm slurm-wlm-doc -y

安装过程中若弹出配置向导(如邮件组件或内核相关提示),一路回车采用默认即可。

验证安装版本:

bash
slurm --version
# 输出版本号,如 slurm-wlm 21.08.x(随 Ubuntu 仓库变化)

二、配置 slurm.conf

配置文件位于 /etc/slurm-llnl/slurm.conf(若不存在请新建):

bash
sudo vi /etc/slurm-llnl/slurm.conf

参考配置如下(说明已统一改为 # 注释,请按需替换 master 与 CPU 参数):

ini
ClusterName=cool
ControlMachine=[user]

MailProg=/usr/bin/s-nail
SlurmUser=root
SlurmctldPort=6817
SlurmdPort=6818
AuthType=auth/munge
StateSaveLocation=/var/spool/slurmctld
SlurmdSpoolDir=/var/spool/slurmd
SwitchType=switch/none
MpiDefault=none
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
ProctrackType=proctrack/pgid
ReturnToService=0

# TIMERS
SlurmctldTimeout=300
SlurmdTimeout=300
InactiveLimit=0
MinJobAge=300
KillWait=30
Waittime=0

# SCHEDULING
SchedulerType=sched/backfill

# LOGGING
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
JobCompType=jobcomp/none

# COMPUTE NODES
PartitionName=[user] Nodes=[user] Default=NO MaxTime=INFINITE State=UP
NodeName=[user] Sockets=[Sockets] CoresPerSocket=[cpus] ThreadsPerCore=[tpc] State=UNKNOWN

关键参数说明

参数含义
ControlMachine控制节点主机名,必须与 hostname 输出一致
MailProg邮件发送程序路径,须指向后文安装的 s-nail
PartitionName分区名,提交任务时用 -p 指定;Default=NO 时需显式指定 -p master
NodeName计算节点定义;Sockets=物理 CPU 数,CoresPerSocket=每 CPU 核数,ThreadsPerCore=每核线程数(开启超线程为 2,否则为 1
State=UNKNOWN节点初始状态,slurmd 启动后会自动转为 idle

获取参数值

用于填写 Sockets / CoresPerSocket

bash
# Sockets
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# CoresPerSocket
cat /proc/cpuinfo| grep "cpu cores"| uniq

用于填写 ThreadsPerCore

bash
#!/bin/bash
cpunum=`cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l`
echo "CPU 个数: $cpunum";
cpuhx=`cat /proc/cpuinfo | grep "cores" | uniq | awk -F":" '{print $2}'`
echo "CPU 核心数:$cpuhx" ; 
cpuxc=`cat /proc/cpuinfo | grep "processor" | wc -l`
echo "CPU 线程数:$cpuxc" ;
  
if [[ `expr $cpunum\*$[cpuhx*2] ` -eq $cpuxc ]];
then
    echo "2"
else
    echo "1"
fi

超线程判断:若逻辑处理器总数(CPU(s))等于 Socket(s) × Core(s) per socket × 2,即已开启超线程,设 ThreadsPerCore=2;否则设 ThreadsPerCore=1

三、启动 Slurm

bash
sudo systemctl enable slurmctld --now
sudo systemctl enable slurmd --now

查看节点状态:

bash
sinfo

sinfo

若节点 STATE 不是 idle(例如 drained / down),手动恢复:

bash
sudo scontrol update NodeName=master State=RESUME

危险

若节点状态始终异常,参考排查文档:https://github.com/aws/aws-parallelcluster/issues/2467

四、配置邮件通知

Ubuntu 18.04 之后推荐使用 s-nail(而非 mailx / mailutils)作为邮件发送程序,与上文 MailProg 对应。

安装:

bash
sudo apt install s-nail -y

编辑 /etc/s-nail.rc,在末尾追加(以 QQ 邮箱为例):

ini
set from="你的邮箱@qq.com"
set smtp="smtps://smtp.qq.com:465"
set smtp-auth-user="你的邮箱@qq.com"
set smtp-auth-password="邮箱授权码"
set smtp-auth=login

发送测试邮件,确认可正常投递:

bash
echo "邮件内容" | s-nail -s "邮件主题" 你的邮箱@qq.com

确认收到后,重启控制服务使 MailProg 配置生效:

bash
sudo systemctl restart slurmctld

五、测试 sbatch 任务

创建测试脚本 test.slurm

bash
vi test.slurm
bash
#!/bin/bash
#SBATCH -J dog
#SBATCH -p master
#SBATCH -N 1
#SBATCH -n 1
#SBATCH --mail-user=你的qq邮箱@qq.com
#SBATCH --mail-type=ALL

sleep 5
whoami

提交任务并观察是否收到邮件:

bash
sbatch test.slurm

说明:-p master 对应 PartitionName=master;因该分区 Default=NO,必须显式指定 -p--mail-type=ALL 会在任务开始、结束、失败时均发送邮件。

文章来源

基于 CC BY-NC-SA 4.0 许可发布