服务器调度
- 节点较少时,使用 “--nodelist“ 指定一个或多个节点。可用如下命令:
sbatch --nodelist=node-001,node-002 script.sh # node-001,node-002表示待调度的节点,script.sh 表示待执行的脚本或应用
srun --nodelist=node-001,node-002 command_to_run # 交互式执行。node-001,node-002表示待调度的节点,command_to_run 表示待执行的命令
- 节点较多时,可通过指定标签(“--constraint” 或 “-C” 选项)来选择具有特定特性的计算节点。这通常用于确保作业运行在满足某些硬件或软件要求的节点上。
sbatch --constraint=x86_64 script.sh # --constraint=x86_64表示指定了作业只能运行在带有 "x86_64" 标签的节点上
srun --constraint=arm command_to_run # --constraint=arm表示指定了作业只能运行在带有 "arm" 标签的节点上。
节点打标签操作步骤
在Slurm中为节点打标签(即设置节点属性或特征)主要通过配置节点的Features或Gres(通用资源)属性来实现。Features是Slurm中用于标记节点特性的字段,常用于标识硬件、软件或功能特性(如GPU型号、存储类型等)。Gres用于定义节点的特殊资源(如GPU、FPGA等),支持设置资源的类型和数量。以下打标签步骤主要使用Features来实现,具体步骤如下:
- 使用PuTTY工具,以root用户登录Slurm控制节点服务器。
- 执行以下命令,编辑 slurm.conf配置文件。
vim /usr/local/etc/slurm.conf
- 找到节点定义部分(例如 NodeName),在节点配置行中添加 Features参数。
NodeName=node-001 NodeAddr=192.168.1.3 CPUs=16 Features=arm,gpu State=UNKNOWN NodeName=node-002 NodeAddr=192.168.1.4 CPUs=16 Features=arm State=UNKNOWN
- 这里为 "node-001" 添加了 "arm" 和 "gpu" 两个标签,为 "node-002" 添加了 "arm" 标签。
- 标签命名规范:避免使用空格或特殊字符,推荐小写字母和短横线(如 `gpu-v100`)。
- 执行以下命令,重启Slurm服务。
slurmctld -c
systemctl restart slurmctld.service
- 执行以下命令,验证标签是否生效。
sinfo -o "%N %f"
执行结果回显举例如下:
NODELIST AVAIL_FEATURES node-001 arm,gpu master (null) node-002 arm
arm、gpu为生效的标签示例。
- 执行以下命令,查看单个节点的Features。
scontrol show node node-001 | grep Features
执行结果回显示例如下:
AvailableFeatures=arm,gpu ActiveFeatures=arm,gpu
- 执行以下命令,在作业提交时使用标签。
srun --constraint="arm" -N2 hostname
执行结果回显示例如下:
node-001 node-002