---
title: 服务器调度
description: "- 节点较少时，使用 “--nodelist“ 指定一个或多个节点。可用如下命令："
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/instg-osc/kunpengslurm_03_0027.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/instg-osc/kunpengslurm_03_0027.html
indexId: 87921e2a29ccaffa88654f03e373281cd13cf890a96652d8624947906d79c9e368
---
# 服务器调度

- 节点较少时，使用 “--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来实现，具体步骤如下：

1. 使用PuTTY工具，以root用户登录Slurm控制节点服务器。
2. 执行以下命令，编辑 slurm.conf配置文件。
  vim /usr/local/etc/slurm.conf

3. 找到节点定义部分（例如 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`）。

4. 执行以下命令，重启Slurm服务。
  slurmctld -c

  systemctl restart slurmctld.service

5. 执行以下命令，验证标签是否生效。
  sinfo -o "%N %f"

  执行结果回显举例如下：

```
NODELIST AVAIL_FEATURES
node-001
arm,gpu
master (null)
node-002
arm
```


  arm、gpu为生效的标签示例。

6. 执行以下命令，查看单个节点的Features。
  scontrol show node node-001 | grep Features

  执行结果回显示例如下：

```
AvailableFeatures=arm,gpu
ActiveFeatures=arm,gpu
```


7. 执行以下命令，在作业提交时使用标签。
  srun --constraint="arm" -N2 hostname

  执行结果回显示例如下：

```
node-001
node-002
```
