Skip to content

Commit 556d0dc

Browse files
Harry-CheniBug
authored andcommitted
scheduler: resolve some review comments
Signed-off-by: Shengqi Chen <harry-chen@outlook.com>
1 parent 9314d8c commit 556d0dc

1 file changed

Lines changed: 13 additions & 13 deletions

File tree

docs/advanced/hpc/scheduler.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ icon: fontawesome/solid/tasks
2222
* [中国科大超级计算中心用户使用手册——Slurm 作业调度系统](https://scc.ustc.edu.cn/zlsc/user_doc/html/slurm/slurm.html),以及相应的[幻灯片](https://scc.ustc.edu.cn/hmli/doc/training/slurm-slide.pdf)
2323
* [中科院高能所计算中心——Slurm 计算集群使用方法](https://afsapply.ihep.ac.cn/cchelp/zh/local-cluster/jobs/slurm/)
2424

25-
## Slurm 部署
25+
## Slurm 部署 {#slurm-deployment}
2626

2727
!!! note "前提要求"
2828

2929
我们假设读者已经具备一定的基本概念,了解常见的名词(如 node、partition、job 等)。如果不熟悉这些概念,建议先阅读 Slurm 官方文档的[概述](https://slurm.schedmd.com/overview.html),以及上面的用户文档。
3030

3131
此部分的撰写参考了 [Slurm 资源管理与作业调度系统安装配置](https://scc.ustc.edu.cn/hmli/doc/linux/slurm-install/slurm-install.html) 的内容,并修改为使用 Debian 原生软件包,而非使用官方打包版本,或者从源码编译安装。
3232

33-
### 组件构成
33+
### 组件构成 {#components}
3434

3535
![Slurm 架构](https://slurm.schedmd.com/arch.gif)
3636

@@ -45,7 +45,7 @@ icon: fontawesome/solid/tasks
4545
* 登录、控制、数据库合一节点 `foo00`:部署 `slurmctld``slurmdbd`,同时也安装 Slurm 客户端工具,供用户登录和提交作业。
4646
* 计算节点 `foo[01-15]`:部署 `slurmd`,不允许用户登录,作为计算结点执行用户作业。
4747

48-
### 基本依赖
48+
### 前置要求 {#prerequisites}
4949

5050
需要保证集群上的所有结点,可以通过主机名(hostname)解析所有结点的 IP 地址。建议使用静态 IP 或 DHCP 绑定,并配置好 DNS 服务,或者同步 `/etc/hosts` 文件。
5151

@@ -74,7 +74,7 @@ icon: fontawesome/solid/tasks
7474

7575
统一的文件系统(如 NFS 或分布式文件系统)、网络配置和用户管理(如 LDAP)并非部署任何作业调度系统的强制要求,但通常是高性能计算集群的基础设施。请参阅本项目中的其他文档对此部分进行配置。
7676

77-
### Slurm 配置文件
77+
### Slurm 配置文件 {#slurm-config-files}
7878

7979
Slurm 需要的所有配置文件均存储在 `/etc/slurm` 下,管理员**务必**时刻保证集群中所有结点上文件内容一致(Slurm 会检查 hash),否则可能导致不可预期的错误。目前推荐的方式是使用 Configless Slurm(见后文),仅在管理结点上维护配置文件,其他结点实时进行拉取,以减少管理负担。
8080

@@ -100,7 +100,7 @@ ConstrainRAMSpace=yes # 启用内存约束
100100

101101
如果修改了任何 slurm 配置文件,通常需要执行 `scontrol reconfigure` 使得修改生效;在部分情况下,可能还需要重启 slurmctld。在一般情况下,重启 slurmctld 不会影响正在运行的作业,也不会导致作业丢失,但依旧需要谨慎操作。
102102

103-
### 数据管理:slurmdbd
103+
### 数据管理:slurmdbd {#slurmdbd}
104104

105105
slurmdbd 是其他守护进程访问数据库的代理,可以避免在配置文件中直接暴露数据库连接信息。目前 slurmdbd 只支持 MySQL/MariaDB 作为后端,并只支持通过网络连接(而非 UNIX Domain Socket)。
106106

@@ -118,7 +118,7 @@ systemctl enable --now slurmdbd
118118

119119
多个不同的 slurm 集群在技术上可以共享同一个 slurmdbd,但作者不推荐这样做,除非有明确的需要(如同样的用户群体需要访问多个集群的资源,又确实无法实现统一管理)。
120120

121-
### 管理结点:slurmctld
121+
### 管理结点:slurmctld {#slurmctld}
122122

123123
在管理结点上安装并启用 Slurm 控制守护进程:
124124

@@ -130,7 +130,7 @@ systemctl enable --now slurmctld
130130

131131
此时运行 `sinfo`,应当能看到集群的分区和结点信息。由于没有 slurmd 在计算结点上运行,所有结点都应该均显示为 `UNK` 状态。
132132

133-
### 计算结点:slurmd
133+
### 计算结点:slurmd {#slurmd}
134134

135135
```shell
136136
apt-get install -y slurmd
@@ -148,7 +148,7 @@ After=systemd-modules-load.service
148148

149149
并在 `/etc/modules-load.d/` 下创建配置文件,保证相应的内核模块在系统启动时被加载(如 `nvidia`)。或者,仅针对于 NVIDIA 设备,也可以直接依赖于 `nvidia-persistenced` 服务,或者 `nvidia-modprobe` 工具。
150150

151-
## 权限管理与 QoS
151+
## 权限管理与 QoS {#accounting-and-qos}
152152

153153
Slurm 的权限管理依赖于其账户数据库,因此需要 slurmdbd 的支持。管理员可以通过 [`sacctmgr`][sacctmgr.1] 命令行工具对账户数据库进行管理,包括创建和删除用户、组、账户和 QoS 等。Slurm 的权限实体是一个四元组:`(user, account, cluster, partition)`,其中:
154154

@@ -198,7 +198,7 @@ Slurm 的权限管理依赖于其账户数据库,因此需要 slurmdbd 的支
198198

199199
此配置体现了短作业优先和 QoS 导向的策略,鼓励短小作业,并给予高优先级用户更多的资源倾斜。
200200

201-
## 最佳实践
201+
## 最佳实践 {#best-practices}
202202

203203
### pam_slurm_adopt
204204

@@ -248,7 +248,7 @@ Slurm 的权限管理依赖于其账户数据库,因此需要 slurmdbd 的支
248248
249249
### Configless Slurm
250250
251-
在 20.02 版本后,Slurm 增加加了 [Configless](https://slurm.schedmd.com/configless_slurm.html) 的功能,只需要在运行 slurmctld 的控制结点上维护一份配置,其他结点的 slurmd 或者 slurm 客户端在有需要时会自动拉取最新的配置,而在运行时 reconfig 也不用担心受到本地惨烈配置的影响
251+
在 20.02 版本后,Slurm 增加了 [Configless](https://slurm.schedmd.com/configless_slurm.html) 的功能,只需要在运行 slurmctld 的控制结点上维护一份配置,其他结点的 slurmd 或者 slurm 客户端在有需要时会自动拉取最新的配置,而在运行时进行 reconfig 也不用担心受到本地残留配置的影响
252252
253253
文档指出,实现 configless 需要满足以下要求:
254254
@@ -271,7 +271,7 @@ TemporaryFileSystem=/etc/slurm
271271

272272
??? tip "trixie 前的特殊配置"
273273

274-
较旧(trixie 前)的 `slurmd.service` 中含有多余的 `ConditionPathExists=/etc/slurm/ slurmd.conf`,需要一并覆盖清除,否则会导致无配置的情况下,服务无法正常启动:
274+
较旧(trixie 前)的 `slurmd.service` 中含有多余的 `ConditionPathExists=/etc/slurm/slurmd.conf`,需要一并覆盖清除,否则会导致无配置的情况下,服务无法正常启动:
275275

276276
```init
277277
[Unit]
@@ -286,11 +286,11 @@ echo 'SACKD_OPTIONS="--conf-server your_ctl_server:6817"' >> /etc/default/sackd
286286
systemctl enable --now sackd
287287
```
288288

289-
## 延伸阅读
289+
## 延伸阅读 {#further-reading}
290290

291291
此部分简述 Slurm 近年的新功能,供有兴趣的读者进一步探索。
292292

293-
### Slurm 与容器的集成
293+
### Slurm 与容器的集成 {#container-integration}
294294

295295
目前有大量的高性能计算工作负载已经迁移到了容器化环境中运行,Slurm 也提供了对容器的原生支持,这包括两步:
296296

0 commit comments

Comments
 (0)