slurm环境
时间: 2025-07-04 21:16:40 浏览: 14
### Slurm 环境配置指南
Slurm(Simple Linux Utility for Resource Management)是一个开源的作业调度系统,广泛用于高性能计算(HPC)集群中。它可以帮助用户管理计算资源、提交和监控作业,并优化资源利用率。以下是关于如何配置 Slurm 环境的详细指南。
#### 1. 安装 Slurm
在基于 Debian/Ubuntu 的系统上安装 Slurm:
```bash
sudo apt update
sudo apt install slurm-wlm
```
对于 Red Hat/CentOS 系统:
```bash
sudo yum install epel-release
sudo yum install slurm
```
如果需要从源代码编译安装,可以访问 [Slurm 官方网站](https://slurm.schedmd.com/download.html) 下载最新版本,并参考 `configuration.html` 文件进行配置[^2]。
#### 2. 配置 Slurm
Slurm 的主配置文件通常是 `/etc/slurm/slurm.conf` 或 `/usr/local/etc/slurm.conf`,具体路径取决于安装方式。以下是一个基本的配置示例:
```conf
# Cluster Name
ClusterName=cluster01
# Control Machine (Primary Controller)
ControlMachine=localhost
ControlAddr=127.0.0.1
# Node Configuration
NodeName=node01 CPUs=4 State=UNKNOWN
NodeName=node02 CPUs=8 State=UNKNOWN
# Partition Configuration
PartitionName=debug Nodes=node01,node02 Default=YES MaxTime=INFINITE State=UP
```
需要注意的是,`SlurmUser` 和 `SlurmdUser` 是两个不同的变量,默认是 `root`,如果要用其他用户运行,例如 `tomxice`,就需要有这两行:
```conf
SlurmUser=tomxice
SlurmdUser=tomxice
```
#### 3. 启动与验证 Slurm 服务
启动并启用 Slurm 控制器服务:
```bash
sudo systemctl start slurmctld
sudo systemctl enable slurmctld
```
检查状态以确保服务正常运行:
```bash
scontrol show nodes
```
这将显示当前节点的状态信息,确认 Slurm 是否成功识别所有节点[^2]。
#### 4. 提交作业
使用 `sbatch` 提交一个简单的作业脚本:
```bash
#!/bin/bash
#SBATCH --job-name=test_job
#SBATCH --output=res.txt
#SBATCH --ntasks=1
#SBATCH --time=10:00
echo "Hello, SLURM!"
sleep 60
```
保存为 `test_job.sh` 并提交:
```bash
sbatch test_job.sh
```
查看作业状态:
```bash
squeue
```
#### 5. Python 脚本与 Slurm 集成
简易 Slurm 是一个基于 Python 的轻量级库,专为简化与 Slurm Workload Manager 的交互设计。它由 amq92 开发并维护,旨在提供一种直观且灵活的方式去生成和管理 Slurm 作业脚本。通过这个库,Python 程序员可以更加便捷地配置复杂的 Slurm 参数,如任务分配、依赖关系和资源请求等,从而高效利用分布式计算环境[^4]。
安装该库:
```bash
pip install easyslurm
```
示例代码如下:
```python
from easyslurm import Job
job = Job(
name="my_python_job",
output="output.log",
error="error.log",
time="01:00:00",
cpus_per_task=2,
mem_per_cpu=2048
)
job.run("python my_script.py")
```
#### 6. Prometheus 监控集成
为了使 Prometheus 能够抓取 Slurm 的指标,你需要在 Prometheus 的配置文件中加入类似以下的内容:
```yaml
- job_name: 'slurm-prod-scraper'
scrape_interval: 30s
scrape_timeout: 30s
static_configs:
- targets: ['localhost:9092']
```
确保 Slurm Exporter 正在运行,并监听在指定端口(如 `9092`),这样 Prometheus 就可以定期抓取这些指标[^1]。
#### 7. 深度学习任务配置
在 Slurm 中运行深度学习任务时,通常需要指定 GPU 资源。以下是一个典型的 Slurm 脚本示例,用于运行 Python 深度学习脚本:
```bash
#!/bin/bash
#SBATCH --job-name=dl_train
#SBATCH --output=train_output.log
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:1
#SBATCH --time=02:00:00
module load cuda/10.1
source activate myenv
python train_model.py
```
此脚本指定了使用一张 GPU 卡,并加载了 CUDA 10.1 环境以及激活了虚拟环境 `myenv`[^3]。
---
阅读全文
相关推荐


















