作业管理👉Slurm
1. Slurm作业管理系统
超算集群不能在登陆节点计算任务,需要提交到计算节点,怎么提交呢?用作业管理系统提交。Slurm就是其中一种。
Slurm(Simple Linux Utility for Resource Management)是一种可扩展的工作负载管理器,已被全世界的国家超级计算机中心广泛采用。 它是免费且开源的,根据GPL通用公共许可证发行。
2. 常用命令
sinfo:查看当前系统中所有计算节点的状态。
std1@master:~# sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
GPU* up infinite 24 mix node[40-46,48,50-55,57-59,61-67]
GPU* up infinite 4 idle node[47,49,56,60]
CPU up 1-12:00:00 2 drain* node[03-04]
CPU up 1-12:00:00 1 alloc node02
sbatch:提交作业脚本运行作业。
作业脚本示例,假设脚本名称为sub_job.sh
#!/bin/bash
#SBATCH -o %j.out #以作业号.out的格式输出运行结果
#SBATCH -J job_name #这里改为作业的名称,在squeue结果中显示
#SBATCH -p GPU #选择分区为GPU
#SBATCH --nodes=1 #申请一个计算节点
#SBATCH --ntasks=1 #1个CPU进程
#SBATCH --gres=gpu:1 #1张显卡
module load xxx #加载某某环境变量
mpirun -np $SLURM_NTASKS xxx
用以下方式提交作业:
sbatch sub_job.sh
squeue:查看USER_LIST的作业状态信息。
std1@master:~# squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
55684 CPU job_name hubukk PD 0:00 1 (Resources)
54933 CPU job_name gxy66 R 1-00:30:28 1 node02
56434 GPU job_name daigl R 9:17 1 node46
56439 GPU job_name yixuan R 29:50 1 node48
关键词 | 含义 | 备注 |
JOBID | 任务编号 | 唯一编号,方便追溯 |
PARTITION | 计算分区名 | 可用sinfo查询 |
NAME | 任务名 | #SBATCH -J job_name |
USER | 用户名 | 提交该任务的用户名 |
ST | 任务状态 | PD排队 R运行 S挂起 CG正在退出 |
TIME | 任务运行时间 | |
NODES | 任务所占节点数 | |
NODELIST(REASON) | 节点列表(排队原因) |
scancel:取消作业。
1)确定任务编号
使用squeue命令查看任务编号
std1@master:~# squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
34217 CPU vasp_opt std1 R 36:21 1 node01
34232 CPU vasp_band std1 R 12:07 1 node02
例如想要取消node02节点上任务编号为34232的作业
2)取消任务
std1@master:~# scancel 34217
3)再次使用squeue命令确定任务已被取消
std1@master:~# squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
34217 CPU vasp_opt std1 R 37:45 1 node01