外观
Slurm 调度系统
Slurm 是智算平台用于计算资源管理和作业调度的系统。用户需要通过 Slurm 将计算任务提交到队列,由调度系统根据队列、资源申请和集群状态安排作业运行。
正式计算任务请提交到计算队列运行,不要在登录节点直接长时间运行程序。登录节点主要用于登录、文件整理、环境配置、代码编译和短时间测试。

常用命令
| 命令 | 用途 |
|---|---|
sinfo | 查看队列和节点状态 |
squeue | 查看排队和运行中的作业 |
sbatch | 提交批处理作业脚本 |
srun | 提交交互式任务或在作业中启动任务 |
salloc | 申请一段交互式计算资源 |
scancel | 取消排队或运行中的作业 |
sacct | 查看作业历史和资源使用情况 |
seff | 查看作业效率统计 |
作业运行方式
Slurm 常见作业方式有三种。一般情况下,正式计算任务优先使用 sbatch;需要临时验证命令或查看实时输出时使用 srun;需要先占用一台计算节点,再在节点上运行 JupyterLab、VSCode Server 或连续调试命令时使用 salloc。
| 方式 | 命令 | 适用场景 |
|---|---|---|
| 批处理作业 | sbatch | 后台排队运行,适合正式计算和长时间任务 |
| 交互式作业 | srun | 立即申请资源并运行命令,适合短时间测试和调试 |
| 交互式资源申请 | salloc | 先申请资源,再登录节点运行多个命令或图形化开发工具 |
详细示例可以查看:
查看队列和节点
查看集群队列和节点状态:
bash
sinfo查看节点级信息:
bash
sinfo -N查看指定队列:
bash
sinfo --partition=qcpu常见节点状态:
| 状态 | 含义 |
|---|---|
idle | 节点空闲 |
alloc | 节点资源已分配 |
mix | 节点部分资源已使用,仍有剩余资源 |
down | 节点下线 |
drain | 节点维护或故障,不再接收新作业 |
查看作业状态
查看当前用户排队和运行中的作业:
bash
squeue查看指定作业:
bash
squeue -j 作业ID只查看正在运行的作业:
bash
squeue --state=R只查看正在排队的作业:
bash
squeue --state=PD常见作业状态:
| 状态 | 含义 |
|---|---|
R | 正在运行 |
PD | 正在排队 |
CG | 即将完成 |
CD | 已完成 |
F | 运行失败 |
CA | 已取消 |
提交批处理作业
批处理作业通常使用 sbatch 提交脚本。它适合不需要一直盯着终端的正式任务,例如软件批量计算、训练任务、脚本化数据处理等。
最基本的提交方式:
bash
sbatch job.sh一个基础作业脚本示例:
bash
#!/bin/bash
#SBATCH --job-name=test_job
#SBATCH --partition=qcpu
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=8G
#SBATCH --time=02:00:00
#SBATCH --output=slurm-%j.out
#SBATCH --error=slurm-%j.err
hostname
date
# 在这里写自己的计算命令
python run.py常用资源参数:
| 参数 | 说明 |
|---|---|
--job-name | 作业名称 |
--partition | 使用的队列 |
--nodes | 申请节点数 |
--ntasks | 任务数 |
--cpus-per-task | 每个任务使用的 CPU 核数 |
--mem | 申请内存 |
--time | 最长运行时间 |
--output | 标准输出文件 |
--error | 错误输出文件 |
交互式测试
短时间调试可使用 srun。它会申请资源并直接运行命令,命令输出会显示在当前终端里:
bash
srun --partition=qcpu --cpus-per-task=4 --mem=8G --time=01:00:00 --pty bash进入交互式环境后,可运行测试命令。测试结束后输入:
bash
exit交互式任务适合检查环境、调试脚本和短时间验证,不建议长时间占用。
如果需要先获得一段计算资源,再在计算节点上连续执行多个命令,可以使用 salloc:
bash
salloc -N 1 --cpus-per-task=4 --mem=8G --time=01:00:00 --partition=qcpu资源分配成功后,根据提示登录到分配的节点,再运行自己的程序。使用结束后退出节点,并取消或结束对应作业,避免资源一直占用。
取消作业
取消指定作业:
bash
scancel 作业ID取消当前用户的所有作业时请谨慎:
bash
scancel -u 用户名查看作业历史和资源使用
查看指定作业的历史记录:
bash
sacct -j 作业ID查看作业资源使用情况:
bash
sacct -j 作业ID --format=jobid,jobname,reqcpus,reqmem,averss,maxrss,elapsed,state%20,exitcode --unit=G查看作业效率:
bash
seff 作业ID示例输出:

使用建议
- 正式计算任务使用
sbatch提交。 - 临时测试或查看实时输出使用
srun。 - 需要 JupyterLab、VSCode Server 或连续调试时使用
salloc。 - 提交前先确认队列、CPU、内存、GPU、运行时间是否合理。
- 不要在登录节点直接运行长时间或高负载任务。
- 作业提交后及时查看
squeue,确认是否排队或运行。 - 作业结束后查看输出文件、错误文件和
sacct记录。 - 资源申请过大可能导致排队时间变长,资源申请过小可能导致作业失败。
相关页面:队列介绍、用户资源限制、tmux 终端复用、sbatch 批量提交作业、srun 交互式提交作业、salloc 交互式资源申请
