Slurm(Simple Linux Utility for Resource Management)是开源集群管理和作业调度系统,广泛用于 HPC 环境的资源分配与作业调度。
核心功能
| 功能 | 说明 |
|---|
| 资源管理 | 追踪 CPU、内存、GPU,按分区配置资源限制 |
| 作业调度 | FIFO、优先级调度、公平共享调度 |
| 作业管理 | 提交、监控、取消作业 |
| 弹性扩展 | 动态增减计算节点 |
| 高可用 | 多控制器模式故障切换 |
典型工作流程
编写作业脚本
1
2
3
4
5
6
7
8
9
10
11
| #!/bin/bash
#SBATCH --job-name=my_job # 作业名称
#SBATCH --output=output.log # 输出文件
#SBATCH --error=error.log # 错误日志
#SBATCH --ntasks=1 # 任务数
#SBATCH --time=01:00:00 # 最大运行时间
#SBATCH --mem=4G # 内存需求
#SBATCH --gres=gpu:1 # GPU 需求
module load python/3.8
python my_script.py
|
常用命令
1
2
3
4
5
| sbatch my_job.sh # 提交作业
squeue -u $USER # 查看作业状态
scancel <job_id> # 取消作业
sinfo # 查看分区状态
sacct # 查看历史作业
|
调度策略
| 策略 | 说明 |
|---|
| 多队列调度 | 不同用户/作业类型分配不同队列 |
| 优先级调度 | 按优先级分配资源 |
| 公平共享调度 | 确保资源在用户间公平分配 |
应用场景
- 科学计算:气候模拟、基因组分析
- 工程仿真:CFD、碰撞模拟
- 机器学习:大规模 GPU 训练任务调度
参考资源
Comments