北京超算 SLURM 作业管理:从提交到监控的 3 种状态与 5 条关键命令

📅 2026/7/12 3:00:50 👤 编程新知 🏷️ 技术资讯
北京超算 SLURM 作业管理:从提交到监控的 3 种状态与 5 条关键命令 北京超算 SLURM 作业管理从提交到监控的 3 种状态与 5 条关键命令对于需要在超算平台上运行长时任务的科研用户来说掌握作业调度系统的核心操作是提高工作效率的关键。本文将深入解析北京超级云计算中心采用的SLURM作业管理系统从作业生命周期管理的角度帮助用户理解排队PD、运行R、完成CD等状态背后的资源调度逻辑并提供5条核心命令的详细使用指南。1. SLURM作业生命周期与核心状态解析SLURMSimple Linux Utility for Resource Management作为当前主流的集群管理和作业调度系统其作业状态机制直接反映了超算中心的资源分配策略。理解这些状态对于合理规划计算任务至关重要。1.1 三种基础状态及其转换关系排队中PD - PENDING作业已提交但尚未获得所需资源。此时系统会检查用户账户是否有足够权限和资源配额请求的节点类型是否可用分区partition资源是否充足常见排队原因可通过parajobs命令的NODELIST(REASON)列查看典型情况包括Resources等待特定类型节点Priority低优先级作业排队Dependency依赖其他作业完成运行中R - RUNNING作业已分配到计算节点并开始执行。此时会计费需注意实际资源占用是否与请求一致通过ssh登录节点后可用nvidia-smi监控GPU使用输出日志实时写入slurm-XXX.out文件已完成CD - COMPLETED作业正常结束包括程序返回0退出码达到运行时间限制通过--time参数设置手动正常终止相关衍生状态CGCOMPLETING资源释放中FFAILED非零退出码TOTIMEOUT超时强制终止1.2 状态监控决策树开始 │ ├── 提交作业 → 状态PD? → 是 → 检查排队原因 │ │ ├─ Resources → 调整节点请求 │ │ ├─ Priority → 联系管理员 │ │ └─ Dependency → 检查依赖条件 │ │ │ └→ 状态R? → 是 → 监控资源使用 │ │ ├─ nvidia-smi查GPU │ │ └─ 检查日志输出 │ │ │ └→ 状态CD/F? → 是 → 分析结果/错误 │ └── 需要干预? → 是 → 执行scancel或调整参数2. 核心命令实战指南2.1 作业提交sbatch的进阶用法基础提交命令格式sbatch --gresgpu:1 -p gpu -N 1 -n 4 --time24:00:00 sub.sh关键参数说明参数作用推荐值--gresGPU资源请求gpu:1-4-p指定分区gpu/cpu-N节点数量根据并行需求-n总CPU核数通常为节点核数倍数--time最大运行时间预估时间×1.2--mem内存需求单位MB/GB-o输出日志路径%j替换为作业ID实战技巧使用--array参数提交作业数组sbatch --array1-10%2 sub.sh # 同时最多运行2个通过--dependency设置作业依赖sbatch --dependencyafterok:1234 sub.sh # 1234成功后运行2.2 状态查询parajobs输出深度解读执行parajobs后的典型输出示例JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 12345 gpu train user1 R 12:34:56 1 g0012 12346 cpu preproc user2 PD 00:00:00 2 (Resources)各列详细说明JOBID唯一标识符用于后续操作PARTITION作业所在队列gpuGPU加速队列cpu纯CPU计算队列ST状态代码R运行中计费状态PD排队中不计费CG收尾阶段短暂状态NODELIST(REASON)运行作业显示节点名称如g0012排队作业显示等待原因高级查询技巧查看特定用户作业parajobs -u username显示完整格式parajobs --formatstandard2.3 节点访问ssh连接与资源监控登录计算节点的标准方法ssh g0012 # 替换为实际节点名登录后关键监控命令GPU监控watch -n 1 nvidia-smi # 每秒刷新GPU状态输出关键指标GPU-Util计算单元利用率Mem-Usage显存使用情况Processes运行中的进程CPU/内存监控top -u $USER # 查看用户进程 free -h # 内存使用概览注意长时间保持ssh连接可能因网络中断导致会话终止建议使用tmux或screen工具保持会话。2.4 实时监控nvidia-smi数据解读nvidia-smi输出示例----------------------------------------------------------------------------- | NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 | |--------------------------------------------------------------------------- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | || | 0 NVIDIA A100 80G... On | 00000000:3B:00.0 Off | 0 | | N/A 45C P0 250W / 300W| 32560MiB / 81920MiB| 95% Default | | | | Enabled | ---------------------------------------------------------------------------关键指标说明指标正常范围异常处理GPU-Util70-100%低于50%可能存在IO瓶颈Memory-Usage根据模型调整接近上限需增大batch sizeTemp80℃过高需检查散热Power低于TDP持续满载可能触发降频自动化监控方案# 将监控数据写入日志 nvidia-smi --query-gputimestamp,utilization.gpu,memory.used --formatcsv -l 60 gpu.log 2.5 作业控制scancel的灵活应用基础取消命令scancel 12345 # 终止单个作业高级用法取消用户所有作业scancel -u $USER取消特定状态的作业scancel -t PD # 取消所有排队作业批量取消作业数组scancel 12345_[1-10]重要提示取消的作业无法恢复关键作业建议先保存检查点再操作。3. 实战问题排查指南3.1 常见作业失败原因分析通过parajobs查看到作业状态为FFAILED时可按以下步骤排查检查日志文件tail -n 100 slurm-12345.out # 替换为实际作业ID常见错误Out Of Memory增加--mem参数CUDA error检查CUDA版本兼容性Permission denied确认文件权限审查资源请求GPU型号是否匹配A100/V100CPU核数是否足够内存是否充足验证环境依赖# 登录计算节点后检查 module list conda list3.2 性能优化建议针对长期运行的深度学习训练任务GPU利用率提升使用混合精度训练增加--batch-size直到显存占满启用CUDA GraphPyTorch 1.10IO优化# 在sub.sh中添加 export NCCL_P2P_DISABLE1 # 避免PCIe带宽竞争 export TF_CPP_MIN_LOG_LEVEL2 # 减少TensorFlow日志检查点设置# PyTorch示例 torch.save({ epoch: epoch, model_state_dict: model.state_dict(), optimizer_state_dict: optimizer.state_dict(), }, fcheckpoint_{epoch}.pt)4. 高效使用北京超算的最佳实践4.1 资源请求策略根据任务类型选择配置任务类型推荐配置注意事项单GPU训练--gresgpu:1 -N 1 -n 8配套8CPU核多GPU数据并行--gresgpu:4 -N 1 -n 32需修改程序支持CPU密集型-N 2 -n 64 --mem128G避免跨节点通信参数搜索--array1-20控制并发数量4.2 环境配置技巧模块系统使用module avail # 查看可用软件 module load cuda/11.3 # 加载CUDA module list # 查看已加载conda环境隔离conda create -n myenv python3.8 conda activate myenv pip install -r requirements.txt数据管理建议小文件打包传输使用/tmp存放临时文件定期清理旧结果4.3 计费优化方案北京超算采用按实际使用核时计费节省技巧精确设置--time参数实际用时×1.2排队期间不计费可提前提交使用--nice100降低优先级节省费用大批量作业采用数组提交最后要提醒的是超算平台与本地开发环境存在诸多差异建议初次使用时先用小规模数据测试完整流程确认无误后再提交长时任务。遇到问题时北京超算提供了7×24小时的技术支持服务可通过官网提交工单获取专业帮助。