

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# `Scheduling` 部分
<a name="Scheduling-v3"></a>

**（必需）**定义集群中使用的作业调度器以及该作业调度器管理的计算实例。您可以使用Slurm或 AWS Batch 调度程序。每个调度器支持一组不同的设置和属性。

**Topics**
+ [`Scheduling` 属性](#Scheduling-v3.properties)
+ [`AwsBatchQueues`](#Scheduling-v3-AwsBatchQueues)
+ [`SlurmQueues`](#Scheduling-v3-SlurmQueues)
+ [`SlurmSettings`](#Scheduling-v3-SlurmSettings)

```
Scheduling:
  Scheduler: slurm
  ScalingStrategy: string    
  SlurmSettings:
    MungeKeySecretArn: string        
    ScaledownIdletime: integer    
    QueueUpdateStrategy: string
    EnableMemoryBasedScheduling: boolean
    CustomSlurmSettings: [dict]
    CustomSlurmSettingsIncludeFile: string
    Database:
      Uri: string
      UserName: string
      PasswordSecretArn: string
      DatabaseName: string    
    ExternalSlurmdbd: boolean
      Host: string
      Port: integer  
    Dns:
      DisableManagedDns: boolean
      HostedZoneId: string
      UseEc2Hostnames: boolean  
  SlurmQueues:
    - Name: string  
      ComputeSettings:
        LocalStorage:
          RootVolume:
            Size: integer
            Encrypted: boolean
            VolumeType: string
            Iops: integer
            Throughput: integer
          EphemeralVolume:
            MountDir: string
      CapacityReservationTarget:
        CapacityReservationId: string
        CapacityReservationResourceGroupArn: string
      CapacityType: string
      AllocationStrategy: string
      JobExclusiveAllocation: boolean
      CustomSlurmSettings: dict
      Tags:
        - Key: string
          Value: string
      HealthChecks:
        Gpu:
          Enabled: boolean
      Networking:
        SubnetIds:
          - string
        AssignPublicIp: boolean
        SecurityGroups:
          - string
        AdditionalSecurityGroups:
          - string
        PlacementGroup:
          Enabled: boolean
          Id: string
          Name: string
        Proxy:
          HttpProxyAddress: string
      ComputeResources:
        - Name: string
          InstanceType: string
          Instances:
            - InstanceType: string
          MinCount: integer
          MaxCount: integer
          DynamicNodePriority: integer
          StaticNodePriority: integer
          SpotPrice: float
          DisableSimultaneousMultithreading: boolean
          SchedulableMemory: integer
          HealthChecks:
            Gpu:
              Enabled: boolean
          Efa:
            Enabled: boolean
            GdrSupport: boolean          
          CapacityReservationTarget:
            CapacityReservationId: string
            CapacityReservationResourceGroupArn: string
          Networking:   
            PlacementGroup:
              Enabled: boolean
              Name: string
          CustomSlurmSettings: dict
          Tags:
            - Key: string
              Value: string
          LaunchTemplateOverrides:
            LaunchTemplateId: string
            Version: string
      CustomActions:
        OnNodeStart:
          Sequence:
            - Script: string
              Args:
                - string
          Script: string
          Args:
            - string
        OnNodeConfigured:
          Sequence:
            - Script: string
              Args:
                - string
          Script: string
          Args:
            - string
      Iam:
        InstanceProfile: string
        InstanceRole: string
        S3Access:
          - BucketName: string
            EnableWriteAccess: boolean
            KeyName: string
        AdditionalIamPolicies:
          - Policy: string
      Image:
        CustomAmi: string
```

```
Scheduling:
  Scheduler: awsbatch
  AwsBatchQueues:
    - Name: string
      CapacityType: string
      Networking:
        SubnetIds:
          - string
        AssignPublicIp: boolean
        SecurityGroups:
          - string
        AdditionalSecurityGroups:
          - string
      ComputeResources:  # this maps to a Batch compute environment (initially we support only 1)
        - Name: string
          InstanceTypes:
            - string
          MinvCpus: integer
          DesiredvCpus: integer
          MaxvCpus: integer
          SpotBidPercentage: float
```

## `Scheduling` 属性
<a name="Scheduling-v3.properties"></a>

**`Scheduler`（**必需**，`String`）**  
指定使用的调度器的类型。支持的值为 `slurm` 和 `awsbatch`。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)  
`awsbatch` 仅支持 `alinux2` 操作系统和 `x86_64` 平台。

**`ScalingStrategy`（**可选**，`String`）**  
让您能够选择动态 Slurm 节点的纵向扩展方式。支持的值为 `all-or-nothing`、`greedy-all-or-nothing` 和 `best-effort`，默认值为 `all-or-nothing`。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
扩展策略仅适用于 Slurm 即将恢复的节点，而不适用于最终已在运行的节点。
+ `all-or-nothing`此策略严格遵循 all-or-nothing-approach，旨在避免在扩展过程结束时出现空闲实例。它是在 all-or-nothing基础上运行的，这意味着它要么完全扩展，要么根本不扩展。请注意，当作业需要超过 500 个节点或跨多个计算资源时，临时启动的实例可能会产生额外费用。在三种可能的扩展策略中，该策略的吞吐量最低。扩展时间取决于每次执行 Slurm 恢复程序时提交的作业数量。此外，您的扩展不能远远超过每次执行的默认 RunInstances 资源帐户限制，默认情况下为 1000 个实例。更多详情可在 [Amazon EC2 API 节流文档](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html)中找到
+ `greedy-all-or-nothing `与该 all-or-nothing策略类似，它旨在避免在缩放后出现闲置实例。此策略允许在扩展过程中临时超额扩展，以实现比该 all-or-nothing方法更高的吞吐量，但也具有与 RunInstances 资源账户限制相同的扩展限制，即 1000 个实例。
+ `best-effort `该策略优先考虑高吞吐量，即使这意味着某些实例在扩展过程结束时可能处于闲置状态。该策略会尝试分配作业要求的尽可能多的节点，但有可能无法满足全部要求。与其他策略不同，尽力而为的方法可以积累比标准 RunInstances限制更多的实例，但代价是在执行多个扩展过程时会有闲置资源。

每种策略都旨在满足不同的扩展需求，您可以根据自己的具体要求和限制条件进行选择。

## `AwsBatchQueues`
<a name="Scheduling-v3-AwsBatchQueues"></a>

**（可选）** AWS Batch 队列设置。仅支持一个队列。如果 [`Scheduler`](#yaml-Scheduling-Scheduler) 设置为 `awsbatch`，则此部分是必需的。有关 `awsbatch` 调度器的更多信息，请参阅[联网设置](network-configuration-v3-batch.md)和 [将 AWS Batch (`awsbatch`) 调度器与 AWS ParallelCluster](awsbatchcli-v3.md)。

```
AwsBatchQueues:
  - Name: string
    CapacityType: string
    Networking:
      SubnetIds:
        - string
      AssignPublicIp: boolean
      SecurityGroups:
        - string
      AdditionalSecurityGroups:
        - string
    ComputeResources:  # this maps to a Batch compute environment (initially we support only 1)
      - Name: string
        InstanceTypes:
          - string
        MinvCpus: integer
        DesiredvCpus: integer
        MaxvCpus: integer
        SpotBidPercentage: float
```

[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

### `AwsBatchQueues` 属性
<a name="Scheduling-v3-AwsBatchQueues.properties"></a>

**`Name`（**必需**，`String`）**  
 AWS Batch 队列的名称。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**`CapacityType`（**可选**，`String`）**  
 AWS Batch 队列使用的计算资源的类型。支持的值为 `ONDEMAND`、`SPOT` 或 `CAPACITY_BLOCK`。默认值为 `ONDEMAND`。  
如果将 `CapacityType` 设置为 `SPOT`，则您的账户必须包含 `AWSServiceRoleForEC2Spot` 服务相关角色。您可以使用以下 AWS CLI 命令创建此角色。  

```
$ aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
```
有关更多信息，请参阅《Amazon EC2 用户指南（适用于 Linux 实例）》**中的[竞价型实例请求的服务相关角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html#service-linked-roles-spot-instance-requests)。
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

#### `Networking`
<a name="Scheduling-v3-AwsBatchQueues-Networking"></a>

**（必需）**定义 AWS Batch 队列的网络配置。

```
Networking:
  SubnetIds:
    - string
  AssignPublicIp: boolean
  SecurityGroups:
    - string
  AdditionalSecurityGroups:
    - string
```

##### `Networking` 属性
<a name="Scheduling-v3-AwsBatchQueues-Networking.properties"></a>

**`SubnetIds`（**必需**，`[String]`）**  
指定要在其中配置 AWS Batch 队列的现有子网的 ID。目前仅支持一个子网。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`AssignPublicIp`（**可选**，`String`）**  
为 AWS Batch 队列中的节点创建或分配公有 IP 地址。支持的值为 `true` 和 `false`。默认值取决于您指定的子网。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**`SecurityGroups`（**可选**，`[String]`）**  
 AWS Batch 队列使用的安全组列表。如果您未指定安全组，则 AWS ParallelCluster 会创建新的安全组。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`AdditionalSecurityGroups`（**可选**，`[String]`）**  
 AWS Batch 队列使用的安全组列表。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

#### `ComputeResources`
<a name="Scheduling-v3-AwsBatchQueues-ComputeResources"></a>

**（必需）**定义 AWS Batch 队列的 ComputeResources 配置。

```
ComputeResources:  # this maps to a Batch compute environment (initially we support only 1)
  - Name: string
    InstanceTypes:
      - string
    MinvCpus: integer
    DesiredvCpus: integer
    MaxvCpus: integer
    SpotBidPercentage: float
```

##### `ComputeResources` 属性
<a name="Scheduling-v3-AwsBatchQueues-ComputeResources.properties"></a>

**`Name`（**必需**，`String`）**  
 AWS Batch 队列计算环境的名称。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`InstanceTypes`（**必需**，`[String]`）**  
实例类型的 AWS Batch 计算环境数组。所有实例类型都必须使用 `x86_64` 架构。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`MinvCpus`（**可选**，`Integer`）**  
 AWS Batch 计算环境可以使用的最小数量。 VCPUs   
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`DesiredVcpus`（**可选**，`Integer`）**  
 AWS Batch 计算环境 VCPUs 中所需的数量。 AWS Batch `MaxvCpus`根据任务队列中的需求在`MinvCpus`和之间调整此值。  
[更新策略：在更新期间不分析此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-ignored-v3)

**`MaxvCpus`（**可选**，`Integer`）**  
 AWS Batch 计算环境的最大数量。 VCPUs 不能将此值设置为低于 `DesiredVcpus`。  
[更新策略：更新期间不能减小此设置。](using-pcluster-update-cluster-v3.md#update-policy-no-decrease-v3)

**`SpotBidPercentage`（**可选**，`Float`）**  
在启动实例之前，与该实例类型的按需价格相比，Amazon EC2 竞价型实例价格可以达到的最大百分比。默认值为 `100` (100%)。支持的范围是 `1`-`100`。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

## `SlurmQueues`
<a name="Scheduling-v3-SlurmQueues"></a>

**（可选）**Slurm 队列的设置。如果 [`Scheduler`](#yaml-Scheduling-Scheduler) 设置为 `slurm`，则此部分是必需的。

```
SlurmQueues:
  - Name: string
    ComputeSettings:
      LocalStorage:
        RootVolume:
          Size: integer
          Encrypted: boolean
          VolumeType: string
          Iops: integer
          Throughput: integer
        EphemeralVolume:
          MountDir: string
    CapacityReservationTarget:
      CapacityReservationId: string
      CapacityReservationResourceGroupArn: string
    CapacityType: string
    AllocationStrategy: string
    JobExclusiveAllocation: boolean
    CustomSlurmSettings: dict
    Tags:
      - Key: string
        Value: string
    HealthChecks:
      Gpu:
        Enabled: boolean
    Networking:
      SubnetIds:
        - string
      AssignPublicIp: boolean
      SecurityGroups:
        - string
      AdditionalSecurityGroups:
        - string
      PlacementGroup:
        Enabled: boolean
        Id: string
        Name: string
      Proxy:
        HttpProxyAddress: string
    ComputeResources:
      - Name: string
        InstanceType: string
        Instances:
          - InstanceType: string        
        MinCount: integer
        MaxCount: integer
        DynamicNodePriority: integer
        StaticNodePriority: integer
        SpotPrice: float
        DisableSimultaneousMultithreading: boolean
        SchedulableMemory: integer
        HealthChecks:
          Gpu:
            Enabled: boolean
        Efa:
          Enabled: boolean
          GdrSupport: boolean    
        CapacityReservationTarget:
          CapacityReservationId: string
          CapacityReservationResourceGroupArn: string     
        Networking:   
          PlacementGroup:
            Enabled: boolean
            Name: string
        CustomSlurmSettings: dict
        Tags:
          - Key: string
            Value: string
        LaunchTemplateOverrides:
          LaunchTemplateId: string
          Version: string
    CustomActions:
      OnNodeStart:
        Sequence:
          - Script: string
            Args:
              - string
        Script: string
        Args:
          - string
      OnNodeConfigured:
        Sequence:
          - Script: string
            Args:
              - string        
        Script: string
        Args:
          - string
    Iam:
      InstanceProfile: string
      InstanceRole: string
      S3Access:
        - BucketName: string
          EnableWriteAccess: boolean
          KeyName: string
      AdditionalIamPolicies:
        - Policy: string
    Image:
      CustomAmi: string
```

[更新策略：对于此列表值设置，可以在更新期间添加新值，或者在删除现有值时必须停止计算实例集。](using-pcluster-update-cluster-v3.md#update-policy-list-values-v3)

### `SlurmQueues` 属性
<a name="Scheduling-v3-SlurmQueues.properties"></a>

**`Name`（**必需**，`String`）**  
Slurm 队列的名称。  
在更新期间，集群大小可能会更改。有关更多信息，请参阅[集群容量大小和更新](slurm-workload-manager-v3.md)
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**`CapacityReservationTarget`**  
`CapacityReservationTarget`已在 3.3.0 AWS ParallelCluster 版本中添加。

```
CapacityReservationTarget:
   CapacityReservationId: string
   CapacityReservationResourceGroupArn: string
```
指定队列计算资源的按需容量预留。    
**`CapacityReservationId`（**可选**，`String`）**  
要用于队列计算资源的现有容量预留的 ID。ID 可以指的是 [ODCR](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) 或[适用于 ML 的容量块](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-blocks.html)。  
预留使用的平台必须与实例使用的平台相同。例如，如果您的实例在 `rhel8` 上运行，则您的容量预留必须在 Red Hat Enterprise Linux 平台上运行。有关更多信息，请参阅 *Amazon EC2 用户指南（适用于 Linux 实例）*中的[支持的平台](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html#capacity-reservations-platforms)。  
如果在集群配置中包含 [`Instances`](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)，则必须从配置中排除此队列级别 `CapacityReservationId` 设置。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`CapacityReservationResourceGroupArn`（**可选**，`String`）**  
用作队列计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。 AWS ParallelCluster 根据以下条件确定并使用资源组中最适当的容量预留。  
+ 如果在 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)或 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)//中启用 [`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)，`PlacementGroup`则 AWS ParallelCluster 选择以实例类型为目标的资源组，如果计算资源存在，则`PlacementGroup`为计算资源选择资源组。[`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)

  `PlacementGroup` 必须以 [`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources) 中定义的实例类型之一为目标。
+ 如果`PlacementGroup`未在 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)或 [`SlurmQueues`[`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)](#Scheduling-v3-SlurmQueues)/中启用 [`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)，则 AWS ParallelCluster 选择仅针对计算资源的实例类型的资源组（如果存在计算资源）。
在队列的所有计算资源和可用区中，资源组必须为可用区中的每种实例类型保留至少一个 ODCR。有关更多信息，请参阅 [使用按需容量预留（ODCR）启动实例](launch-instances-odcr-v3.md)。  
有关多子网配置要求的更多信息，请参阅 [`Networking`](#Scheduling-v3-SlurmQueues-Networking)/[`SubnetIds`](#yaml-Scheduling-SlurmQueues-Networking-SubnetIds)。  
3.4.0 AWS ParallelCluster 版本中添加了多个可用区。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`CapacityType`（**可选**，`String`）**  
Slurm 队列使用的计算资源的类型。支持的值为 `ONDEMAND`、`SPOT` 或 `CAPACITY_BLOCK`。默认值为 `ONDEMAND`。  
如果将 `CapacityType` 设置为 `SPOT`，则您的账户必须具有 `AWSServiceRoleForEC2Spot` 服务相关角色。您可以使用以下 AWS CLI 命令来创建此角色。  

```
$ aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
```
有关更多信息，请参阅《Amazon EC2 用户指南（适用于 Linux 实例）》**中的[竞价型实例请求的服务相关角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html#service-linked-roles-spot-instance-requests)。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`AllocationStrategy`（**可选**，`String`）**  
为 [`Instances`](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances) 中定义的所有计算资源指定分配策略。  
有效值：`lowest-price` \$1 `capacity-optimized` \$1 `price-capacity-optimized` \$1 `prioritized` \$1 `capacity-optimized-prioritized`       
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/parallelcluster/latest/ug/Scheduling-v3.html)
默认值：`lowest-price`    
**`lowest-price`**  
+ 如果使用 `CapacityType = ONDEMAND`，Amazon EC2 Fleet 将使用价格来确定顺序，并最先启动价格最低的实例。
+ 如果使用 `CapacityType = SPOT`，Amazon EC2 Fleet 将从具有可用容量的最低价格竞价型实例池中启动实例。如果池在满足您的所需容量之前已用完容量，Amazon EC2 队列会通过为您启动实例来满足您的请求。具体而言，Amazon EC2 Fleet 将从具有可用容量的最低价格竞价型实例池中启动实例。Amazon EC2 Fleet 可能会从多个不同的池中启动竞价型实例。
+ 如果设置 `CapacityType = CAPACITY_BLOCK`，则没有分配策略，因此无法配置 `AllocationStrategy` 参数。  
**`capacity-optimized`**  
+ 如果设置 `CapacityType = ONDEMAND`，则 `capacity-optimized` 不可用。
+ 如果设置 `CapacityType = SPOT`，Amazon EC2 Fleet 将从容量最适合所要启动的实例数的竞价型实例池中启动实例。  
**`price-capacity-optimized`**  
+ 如果设置 `CapacityType = ONDEMAND`，则 `capacity-optimized` 不可用。
+ 如果设置 `CapacityType = SPOT`，Amazon EC2 Fleet 将为正在启动的实例数识别具有最高可用容量的池。这意味着我们将从我们认为短期内中断概率最低的池中请求竞价型实例。然后，Amazon EC2 Fleet 从这些池中价格最低的池请求竞价型实例。  
**`prioritized`**  
+ 如果您进行了设置`CapacityType = ONDEMAND`，则在指定多个子网时，Amazon EC2 队列将遵循 AWS ParallelCluster 适用于 LaunchTemplate 替代的优先顺序。 AWS ParallelCluster `priority`从目标子网的位置派生替代项，其中第一个子网的优先级最高。`SlurmQueues/Networking/SubnetIds`优先级按 AWS ParallelCluster 降序排列，第一个 SubnetId 优先级最高`SlurmQueues/Networking/SubnetIds`，最后一个 subnetId 的优先级最低。
+ 如果设置 `CapacityType = SPOT`，则 `prioritized` 不可用。  
**`capacity-optimized-prioritized`**  
+ 如果设置 `CapacityType = ONDEMAND`，则 `capacity-optimized-prioritized` 不可用。
+ 如果您设置`CapacityType = SPOT`，Amazon EC2 队列会先优化容量，然后尽力应用 AWS ParallelCluster 分配给替代项的优先顺序。 LaunchTemplate 优先级按 AWS ParallelCluster 降序排列，第一个 SubnetId 优先级最高`SlurmQueues/Networking/SubnetIds`，最后一个 subnetId 的优先级最低。所有以相同子网为目标的替代项都将获得相同的优先级值。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
从 AWS ParallelCluster 版本 3.3.0 开始支持 `AllocationStrategy`。  
**3.14.0 中的新增功能**：`prioritized`（用于点播）和`capacity-optimized-prioritized`（适用于竞价版）。

**`JobExclusiveAllocation`（**可选**，`String`）**  
如果设置为 `true`，则 Slurm 分区 `OverSubscribe` 标志设置为 `EXCLUSIVE`。当 `OverSubscribe`=`EXCLUSIVE` 时，分区中的作业将对分配的所有节点具有独占访问权限。有关更多信息，请参阅 Slurm 文档中的 [EXCLUSIVE](https://slurm.schedmd.com/slurm.conf.html#OPT_EXCLUSIVE)。  
有效值：`true` \$1 `false`  
默认值：`false`  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
从 AWS ParallelCluster 版本 3.7.0 开始支持 `JobExclusiveAllocation`。

**`CustomSlurmSettings`（**可选**，`Dict`）**  
定义自定义 Slurm 分区（队列）配置设置。  
指定应用于队列（分区）的自定义 Slurm 配置参数键值对的字典。  
每个单独的键值对（例如 `Param1: Value1`）都以 `Param1=Value1` 格式单独添加到 Slurm 分区配置行的末尾。  
您只能指定未在 `CustomSlurmSettings` 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息，请参阅 [被拒登名单 Slurm 的配置参数 `CustomSlurmSettings`](slurm-configuration-settings-v3.md#slurm-configuration-denylists-v3)。  
AWS ParallelCluster 仅检查参数是否在拒绝列表中。 AWS ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败，从而导致集群创建和更新失败。  
有关如何使用指定自定义Slurm配置参数的更多信息 AWS ParallelCluster，请参阅[Slurm 配置自定义](slurm-configuration-settings-v3.md)。  
有关 Slurm 配置参数的更多信息，请参阅 Slurm 文档中的 [slurm.conf](https://slurm.schedmd.com/slurm.conf.html)。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
从 AWS ParallelCluster 版本 3.6.0 开始支持 `CustomSlurmSettings`。

**`Tags`（**可选**，[字符串]）**  
标签键值对的列表。[`ComputeResource`](#yaml-Scheduling-SlurmQueues-ComputeResources-Tags) 标签覆盖 [`Tags` 部分](Tags-v3.md)或 `SlurmQueues`/`Tags` 中指定的重复标签。    
**`Key`（**可选**，`String`）**  
标签键。  
**`Value`（**可选**，`String`）**  
标签值。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`HealthChecks`（**可选**）**  
指定队列中所有计算资源上的计算节点运行状况检查。    
`Gpu`（**可选**）  
指定队列中所有计算资源上的 GPU 运行状况检查。  
AWS ParallelCluster 在使用 `alinux2` ARM 操作系统的节点`Gpu`中不支持`HealthChecks`/。这些平台不支持 [NVIDIA 数据中心 GPU 管理器 (DCGM)](https://docs.nvidia.com/datacenter/dcgm/latest/user-guide/getting-started.html#supported-linux-distributions)。  
不建议在使用 GPU 内存总大小高于 327680 MiB 的实例类型时启用 GPU 运行状况检查。  
`Enabled`（**可选**，`Boolean`）  
是否 AWS ParallelCluster 对计算节点执行 GPU 运行状况检查。默认值为 `false`。

**`Gpu` 运行状况检查行为**
+ 如果 `Gpu`/`Enabled` 设置为 `true`，则 AWS ParallelCluster 对队列中的计算资源执行 GPU 运行状况检查。
+ `Gpu` 运行状况检查会对计算资源执行 GPU 运行状况检查，以防止在 GPU 降级的节点上提交作业。
+ 如果某个计算节点未通过 `Gpu` 运行状况检查，则该计算节点的状态将更改为 `DRAIN`。新作业不会在此节点上启动。现有作业将运行至完成。所有正在运行的作业完成后，如果该计算节点是动态节点，则会终止；如果是静态节点，则会被替换。
+ `Gpu`运行状况检查的持续时间取决于所选实例类型、实例 GPUs 中的数量、GPU 内存总量和`Gpu`运行状况检查目标的数量（等同于作业 GPU 目标的数量）。例如，在 p4d.24xlarge 上，典型的持续时间为 3 分钟。
+ 如果 `Gpu` 运行状况检查在不受支持的实例上运行，它将退出，作业将在计算节点上运行。例如，如果一个实例没有 GPU，或者一个实例有 GPU，但不是 NVIDIA GPU，则运行状况检查将会退出，作业将在计算节点上运行。仅支持 NVIDIA GPUs 。
+ `Gpu` 运行状况检查使用 `dcgmi` 工具对节点执行运行状况检查，并采取以下步骤：

  当在节点中开始 `Gpu` 运行状况检查时：

  1. 它会检测 `nvidia-dcgm` 和 `nvidia-fabricmanager` 服务是否正在运行。

  1. 如果这些服务未运行，则 `Gpu` 运行状况检查将会启动这些服务。

  1. 它会检测是否启用了持久性模式。

  1. 如果未启用持久性模式，则 `Gpu` 运行状况检查将会启用该模式。

  在运行状况检查结束时，`Gpu` 运行状况检查会将这些服务和资源还原到其初始状态。
+ 如果任务分配给一组特定的节点 GPUs，则运行`Gpu`状况检查仅在该特定节点上运行。否则，运行`Gpu`状况检查将在节点 GPUs 中的所有节点上运行。
+ 如果计算节点同时收到 2 个或更多个 `Gpu` 运行状况检查请求，则仅运行第一个运行状况检查，并跳过其他运行状况检查。目标节点的运行状况检查也是如此 GPUs。您可以查看日志文件以获取有关此情况的更多信息。
+ `/var/log/parallelcluster/slurm_health_check.log` 文件中提供了特定计算节点的运行状况检查日志。该文件可在 Amazon CloudWatch 的集群 CloudWatch 日志组中找到，您可以在其中找到：
  + 有关 `Gpu` 运行状况检查运行的操作的详细信息，包括启用和禁用服务以及持久性模式。
  + GPU 标识符、序列号和 UUID。
  + 运行状况检查输出。
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
`HealthChecks`从 3.6.0 AWS ParallelCluster 版开始受支持。

#### `Networking`
<a name="Scheduling-v3-SlurmQueues-Networking"></a>

**（必需）**定义 Slurm 队列的网络配置。

```
Networking:
  SubnetIds:
    - string
  AssignPublicIp: boolean
  SecurityGroups:
    - string
  AdditionalSecurityGroups:
    - string
  PlacementGroup:
    Enabled: boolean
    Id: string
    Name: string
  Proxy:
    HttpProxyAddress: string
```

[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

##### `Networking` 属性
<a name="Scheduling-v3-SlurmQueues-Networking.properties"></a>

**`SubnetIds`（**必需**，`[String]`）**  
您在 IDs 其中配置Slurm队列的现有子网。  
如果您在 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)/[`InstanceType`](#yaml-Scheduling-SlurmQueues-ComputeResources-InstanceType) 中配置实例类型，则只能定义一个子网。  
如果您在 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)/[`Instances`](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances) 中配置实例类型，则可以定义单个子网或多个子网。  
如果您使用多个子网，则为队列定义的所有子网都必须位于同一 VPC 中，每个子网位于单独的可用区 (AZ) 中。  
例如，假设您为队列定义了 subnet-1 和 subnet-2。  
则 `subnet-1` 和 `subnet-2` 不能都在 AZ-1 中。  
`subnet-1` 可以在 AZ-1 中，`subnet-2` 可以在 AZ-2 中。  
如果您只配置一种实例类型并想要使用多个子网，请在 `Instances` 而不是 `InstanceType` 中定义您的实例类型。  
例如，定义 `ComputeResources`/`Instances`/`InstanceType`=`instance.type` 而不是 `ComputeResources`/`InstanceType`=`instance.type`。  
不支持在不同的可用区之间使用 Elastic Fabric Adapter (EFA)。
使用多个可用区可能会导致存储网络延迟增加，并提高可用区间的数据传输成本。例如，当实例访问位于不同 AZ 的文件存储时，可能会发生这种情况。有关更多信息，请参阅[同一 AWS 区域内的数据传输](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer_within_the_same_AWS_Region)。  

**集群更新为从使用单个子网改为使用多个子网：**
+ 假设集群的子网定义是用单个子网和一个 Lustre AWS ParallelCluster 托管 FSx 文件系统定义的。则您无法使用更新的子网 ID 定义直接更新此集群。要更新该集群，必须先将托管文件系统更改为外部文件系统。有关更多信息，请参阅 [将 AWS ParallelCluster 托管存储转换为外部存储](shared-storage-conversion-v3.md)。
+ 假设集群的子网定义是用单个子网和一个外部 Amazon EFS 文件系统定义的，前提是定义为要添加的多个子网的所有子网都不存在 EFS 挂载目标。 AZs 则您无法使用更新的子网 ID 定义直接更新此集群。要更新集群或创建集群，必须先为已定义的多个子网的所有创建所有挂载目标。 AZs 

**可用区和集群容量预留定义于 [CapacityReservationResourceGroupArn](#yaml-Scheduling-SlurmQueues-CapacityReservationResourceGroupArn)：**
+ 如果定义的容量预留资源组所涵盖的实例类型和可用区集合与为队列定义的实例类型和可用区集合之间没有重叠，则无法创建集群。
+ 如果定义的容量预留资源组所涵盖的实例类型和可用区集与为队列定义的一组实例类型和可用区之间存在部分重叠，则可以创建集群。 AWS ParallelCluster 会发送一条警告消息，说明这种情况存在部分重叠。
+ 有关更多信息，请参阅 [使用按需容量预留（ODCR）启动实例](launch-instances-odcr-v3.md)。
3.4.0 AWS ParallelCluster 版本中添加了多个可用区。
此警告适用于 3.3.1 之前的所有 3.x.y AWS ParallelCluster 版本。 AWS ParallelCluster 如果更改此参数，版本 3.3.1 不会受到影响。  
对于 3.3.1 之前的 AWS ParallelCluster 3 个版本：  
如果您更改此参数并更新群集，则会创建一个新的 Lustre 托管 FSx 文件系统，并在不保留现有数据的情况下删除现有 FSx 的 Lustre 托管文件系统。这会导致数据丢失。在继续操作之前，如果要保留数据，请务必备份现有 FSx Lustre 文件系统的数据。有关更多信息，请参阅 fo [r *Lustre 用户指南*中的使用备份](https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-backups-fsx.html)。FSx 
如果添加了新子网值，[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
如果删除了子网值，[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`AssignPublicIp`（**可选**，`String`）**  
为 Slurm 队列中的节点创建或分配公有 IP 地址。支持的值为 `true` 和 `false`。您指定的子网决定默认值。具有公共 IPs 默认值的子网，用于分配公有 IP 地址。  
如果您定义了p4d或hpc6id实例类型，或者其他具有多个网络接口或网络接口卡的实例类型，则必须将 [`HeadNode`](HeadNode-v3.md)/[`Networking`](HeadNode-v3.md#HeadNode-v3-Networking)/设置为[`ElasticIp`](HeadNode-v3.md#yaml-HeadNode-Networking-ElasticIp)`true`以提供公共访问权限。 AWS public IPs 只能分配给使用单个网络接口启动的实例。对于这种情况，我们建议您使用 [NAT 网关](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)为集群计算节点提供公有访问权限。在这种情况下，请将 `AssignPublicIp` 设置为 `false`。有关 IP 地址的更多信息，请参阅《适用于 *Linux 实例的 Amazon EC2 用户指南》中的 “在实例*[启动期间分配公有 IPv4 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#public-ip-addresses)”。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**`SecurityGroups`（**可选**，`[String]`）**  
用于Slurm 队列的安全组的列表。如果未指定安全组，则会为您 AWS ParallelCluster 创建安全组。  
验证您的[SharedStorage](SharedStorage-v3.md)系统是否正确配置了安全组。  
此警告适用于所有 3. *x*。 *y* AWS ParallelCluster 3.3.0 之前的版本。 AWS ParallelCluster 如果更改此参数，版本 3.3.0 不会受到影响。  
对于 3.3.0 之前的 AWS ParallelCluster 3 个版本：  
如果您更改此参数并更新群集，则会创建一个新的 Lustre 托管 FSx 文件系统，并在不保留现有数据的情况下删除现有 FSx 的 Lustre 托管文件系统。这会导致数据丢失。如果要保留数据，请务必备份现有 F FSx or Lustre 文件系统的数据。有关更多信息，请参阅 fo [r *Lustre 用户指南*中的使用备份](https://docs.aws.amazon.com/fsx/latest/LustreGuide/using-backups-fsx.html)。FSx 
如果您为计算实例启用 [Efa](#yaml-Scheduling-SlurmQueues-ComputeResources-Efa)，请确保启用了 EFA 的实例是允许进出自身的所有入站和出站流量的安全组的成员。
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`AdditionalSecurityGroups`（**可选**，`[String]`）**  
用于Slurm 队列的其他安全组的列表。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`PlacementGroup`（**可选**）**  
指定 Slurm 队列的置放群组设置。  

```
PlacementGroup:
  Enabled: boolean
  Id: string
  Name: string
```
[更新策略：必须停止所有计算节点才能删除托管置放群组。必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-remove-placement-group-v3)    
**`Enabled`（**可选**，`Boolean`）**  
指示是否对 Slurm 队列使用置放群组。默认值为 `false`。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Id`（**可选**，`String`）**  
Slurm队列使用的现有集群置放群组的置放群组 ID。请务必提供置放群组 *ID* *而不是名称*。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Name`（**可选**，`String`）**  
Slurm 队列使用的现有集群置放群组的置放群组名称。确保提供置放群组*名称* 而*不是 ID*。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)
+ 如果 `PlacementGroup`/`Enabled` 设置为 `true` 而未定义 `Name` 或 `Id`，则会为每个计算资源分配自己的托管置放群组，除非将 [`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)/[`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)/[`PlacementGroup`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking-PlacementGroup) 定义为覆盖此设置。
+ 从 AWS ParallelCluster 版本 3.3.0 开始，添加[`Name`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Name)了 [`SlurmQueues`[`Networking`[`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)](#Scheduling-v3-SlurmQueues-Networking)](#Scheduling-v3-SlurmQueues)///作为/ [`SlurmQueues`[`Networking`[`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)](#Scheduling-v3-SlurmQueues-Networking)](#Scheduling-v3-SlurmQueues)/[`Id`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Id)的首选替代方案。

  [`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)/[`Id`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Id) 和 [`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)/[`Name`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Name) 是等效的。您可以使用任何一个。

   如果同时包含 [`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)/[`Id`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Id)和 [`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)/[`Name`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Name)， AWS ParallelCluster 则失败。您只能选择其中一项。

  您无需更新集群即可使用 [`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)/[`Name`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Name)。
+ 使用容量块预留时，不应设置置放群组约束，因为即使容量预留还有剩余容量，也可能由于预留之外的放置限制而出现容量不足错误。

**`Proxy`（**可选**）**  
指定 Slurm 队列的代理设置。  

```
Proxy:
  HttpProxyAddress: string
```
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)    
**`HttpProxyAddress`（**可选**，`String`）**  
为 Slurm 队列定义 HTTP 或 HTTPS 代理服务器。通常为 `https://x.x.x.x:8080`。  
没有默认值。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

#### `Image`
<a name="Scheduling-v3-SlurmQueues-Image"></a>

**（可选）**指定要用于 Slurm 队列的映像。要对所有节点使用相同的 AMI，请使用[`Image`部分](Image-v3.md)中的[CustomAmi](Image-v3.md#yaml-Image-CustomAmi)设置。

```
Image:
  CustomAmi: string
```

[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

##### `Image` 属性
<a name="Scheduling-v3-SlurmQueues-Image.properties"></a>

**`CustomAmi`（**可选**，`String`）**  
用于Slurm队列的 AMI，而不是默认的 AMI AMIs。您可以使用 C pcluster LI 命令查看默认值列表 AMIs。  
AMI 必须基于头节点所使用的相同操作系统。

```
pcluster list-official-images
```
如果自定义 AMI 需要其他权限才能启动，则必须将这些权限添加到头节点策略中。  
例如，如果自定义 AMI 具有与之关联的加密快照，则头节点策略中需要以下其他策略：    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:ReEncrypt*",
                "kms:CreateGrant",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:111122223333:key/<AWS_KMS_KEY_ID>"
            ]
        }
    ]
}
```
要排查自定义 AMI 验证警告，请参阅[排查自定义 AMI 问题](troubleshooting-v3-custom-amis.md)。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

#### `ComputeResources`
<a name="Scheduling-v3-SlurmQueues-ComputeResources"></a>

**（必需）**定义 Slurm 队列的 `ComputeResources` 配置。

**注意**  
在更新期间，集群大小可能会更改。有关更多信息，请参阅[集群容量大小和更新](slurm-workload-manager-v3.md)。
只有当新的计算资源部署在属于创建集群时存在的 CIDR 块的子网中时，才能将其添加到集群。

```
ComputeResources:
  - Name: string
    InstanceType: string
    Instances:
      - InstanceType: string    
    MinCount: integer
    MaxCount: integer
    DynamicNodePriority: integer
    StaticNodePriority: integer
    SpotPrice: float
    DisableSimultaneousMultithreading: boolean
    SchedulableMemory: integer
    HealthChecks:
      Gpu:    
        Enabled: boolean
    Efa:
      Enabled: boolean
      GdrSupport: boolean
    CapacityReservationTarget:
      CapacityReservationId: string
      CapacityReservationResourceGroupArn: string
    Networking:   
      PlacementGroup:
        Enabled: boolean
        Name: string
    CustomSlurmSettings: dict   
    Tags:
      - Key: string
        Value: string
    LaunchTemplateOverrides:
      LaunchTemplateId: string
      Version: string
```

[更新策略：对于此列表值设置，可以在更新期间添加新值，或者在删除现有值时必须停止计算实例集。](using-pcluster-update-cluster-v3.md#update-policy-list-values-v3)

##### `ComputeResources` 属性
<a name="Scheduling-v3-SlurmQueues-ComputeResources.properties"></a>

**`Name`（**必需**，`String`）**  
Slurm 队列计算环境的名称。名称最多可以包含 25 个字符。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**`InstanceType`（**必需**，`String`）**  
此 Slurm 计算资源中使用的实例类型。集群中的所有实例类型都必须使用相同的处理器架构。实例可以使用 `x86_64` 或 `arm64` 架构。  
集群配置必须定义[InstanceType](#yaml-Scheduling-SlurmQueues-ComputeResources-InstanceType)或[实例](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)。如果两者都被定义， AWS ParallelCluster 则失败。  
定义 `InstanceType` 时，不能定义多个子网。如果您只配置一种实例类型并想要使用多个子网，请在 `Instances` 而不是 `InstanceType` 中定义您的实例类型。有关更多信息，请参阅 [`Networking`](#Scheduling-v3-SlurmQueues-Networking)/[`SubnetIds`](#yaml-Scheduling-SlurmQueues-Networking-SubnetIds)。  
如果您定义了p4d或hpc6id实例类型，或者其他具有多个网络接口或网络接口卡的实例类型，则必须按照中所述在私有子网中启动计算实例[AWS ParallelCluster 使用两个子网](network-configuration-v3-two-subnets.md)。 AWS public IPs 只能分配给使用单个网络接口启动的实例。有关更多信息，请参阅《适用于 *Linux 实例的 Amazon EC2 用户指南》中的 “在实例*[启动期间分配公有 IPv4 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#public-ip-addresses)”。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`Instances`（**必需**）**  
指定计算资源的实例类型列表。要为实例类型列表指定分配策略，请参阅 [`AllocationStrategy`](#yaml-Scheduling-SlurmQueues-AllocationStrategy)。  
集群配置必须定义 [`InstanceType`](#yaml-Scheduling-SlurmQueues-ComputeResources-InstanceType) 或 [`Instances`](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)。如果同时定义了两者，则 AWS ParallelCluster 将会失败。  
有关更多信息，请参阅 [Slurm 的多实例类型分配](slurm-multiple-instance-allocation-v3.md)。  

```
`Instances`:
   - `InstanceType`: string
```
[从 3.7.0 AWS ParallelCluster 版开始，如果您在实例中配置了多个实例类型，则`EnableMemoryBasedScheduling`可以启用。](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)  
适用于 3.2.0 到 3.6 AWS ParallelCluster 版本。 *x*[，如果您在实例中配置了多个实例类型，则`EnableMemoryBasedScheduling`无法启用。](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)
[更新策略：对于此列表值设置，可以在更新期间添加新值，或者在删除现有值时必须停止计算实例集。](using-pcluster-update-cluster-v3.md#update-policy-list-values-v3)    
**`InstanceType`（**必需**，`String`）**  
要在此 Slurm 计算资源中使用的实例类型。集群中的所有实例类型都必须使用相同的处理器架构，即 `x86_64` 或 `arm64`。  
[`Instances`](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances) 中列出的实例类型必须：  
+ 相同数量的 vCPUs，或者，如果设置[`DisableSimultaneousMultithreading`](#yaml-Scheduling-SlurmQueues-ComputeResources-DisableSimultaneousMultithreading)为`true`，则为相同数量的内核。
+ 具有相同制造商的相同数量的加速器。
+ 支持 EFA，如果 [`Efa`](#yaml-Scheduling-SlurmQueues-ComputeResources-Efa)/[`Enabled`](#yaml-Scheduling-SlurmQueues-ComputeResources-Efa-Enabled) 设置为 `true`。
[`Instances`](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances) 中列出的实例类型可以具有：  
+ 不同的内存量。

  在这种情况下，应将最小内存设置为可消耗的 Slurm 资源。
**注意**  
[从 3.7.0 AWS ParallelCluster 版开始，如果您在实例中配置了多个实例类型，则`EnableMemoryBasedScheduling`可以启用。](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)  
适用于 3.2.0 到 3.6 AWS ParallelCluster 版本。 *x*[，如果您在实例中配置了多个实例类型，则`EnableMemoryBasedScheduling`无法启用。](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)
+ 不同的网卡。

  在这种情况下，为计算资源配置的网络接口数量由网卡数量最少的实例类型定义。
+ 不同的网络带宽。
+ 不同的实例存储大小。
如果您定义了p4d或hpc6id实例类型，或者其他具有多个网络接口或网络接口卡的实例类型，则必须按照中所述在私有子网中启动计算实例[AWS ParallelCluster 使用两个子网](network-configuration-v3-two-subnets.md)。 AWS public IPs 只能分配给使用单个网络接口启动的实例。有关更多信息，请参阅《适用于 *Linux 实例的 Amazon EC2 用户指南》中的 “在实例*[启动期间分配公有 IPv4 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#public-ip-addresses)”。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)
`Instances`从 3.3.0 AWS ParallelCluster 版开始受支持。

**`MinCount`（**可选**，`Integer`）**  
Slurm 计算资源使用的最小实例数量。默认值是 0。  
在更新期间，集群大小可能会更改。有关更多信息，请参阅[集群容量大小和更新](slurm-workload-manager-v3.md)
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`MaxCount`（**可选**，`Integer`）**  
Slurm 计算资源使用的最大实例数量。默认值为 10。  
使用时`CapacityType = CAPACITY_BLOCK`，`MaxCount`必须等于`MinCount`和大于 0，因为容量块预留的所有实例部分都作为静态节点进行管理。  
在创建集群时，头节点会等待所有静态节点准备就绪，然后再发出集群创建成功的信号。但是，当您使用时`CapacityType = CAPACITY_BLOCK`，此检查将不考虑与容量块关联的计算资源的节点部分。即使不是所有配置的容量块都处于活动状态，也会创建集群。  
在更新期间，集群大小可能会更改。有关更多信息，请参阅[集群容量大小和更新](slurm-workload-manager-v3.md)
 

**`DynamicNodePriority`（**可选**，`Integer`）**  
队列计算资源中动态节点的优先级。该优先级映射到计算资源动态节点的 Slurm 节点 [https://slurm.schedmd.com/slurm.conf.html#OPT_Weight](https://slurm.schedmd.com/slurm.conf.html#OPT_Weight) 配置参数。默认值为 `1000`。  
Slurm 将 `Weight` 值最低的节点设置为最高优先级。  
在 Slurm 分区（队列）中使用许多不同的 `Weight` 值可能会减慢队列中作业调度的速度。  
在 AWS ParallelCluster 3.7.0 之前的版本中，静态节点和动态节点的默认权重相同。`1`在这种情况下，由于静态和动态节点的命名架构，Slurm 可能会将空闲的动态节点的优先级设置为高于空闲的静态节点。如果所有其他条件相同，Slurm 会按名称的字母顺序调度节点。
`DynamicNodePriority`已在 3.7.0 AWS ParallelCluster 版本中添加。
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`StaticNodePriority`（**可选**，`Integer`）**  
队列计算资源中静态节点的优先级。该优先级映射到计算资源静态节点的 Slurm 节点 [https://slurm.schedmd.com/slurm.conf.html#OPT_Weight](https://slurm.schedmd.com/slurm.conf.html#OPT_Weight) 配置参数。默认值为 `1`。  
Slurm 将 `Weight` 值最低的节点设置为最高优先级。  
在 Slurm 分区（队列）中使用许多不同的 `Weight` 值可能会减慢队列中作业调度的速度。
`StaticNodePriority`已在 3.7.0 AWS ParallelCluster 版本中添加。
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`SpotPrice`（**可选**，`Float`）**  
在启动任何实例之前为 Amazon EC2 竞价型实例支付的最高价格。默认值为按需价格。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`DisableSimultaneousMultithreading`（**可选**，`Boolean`）**  
如果为 `true`，则禁用 Slurm 队列中节点上的多线程。默认值为 `false`。  
并非所有实例类型都可禁用多线程。有关支持禁用多线程的实例类型列表，请参阅《Amazon EC2 用户指南》**中的[每种实例类型的 CPU 内核以及每个 CPU 内核的线程](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html#cpu-options-supported-instances-values)。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`SchedulableMemory`（**可选**，`Integer`）**  
在 Slurm 参数 `RealMemory` 中为计算资源的计算节点配置的内存量，以 MiB 为单位。如果启用了 [`SlurmSettings`](#Scheduling-v3-SlurmSettings)/[`EnableMemoryBasedScheduling`](#yaml-Scheduling-SlurmSettings-EnableMemoryBasedScheduling)，则此值为可供作业使用的节点内存的上限。默认值是 [Amazon EC2 实例类型中列出并由亚马逊 EC2](https://aws.amazon.com/ec2/instance-types) API 返回的内存的 95% [DescribeInstanceTypes](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTypes.html)。确保将以 GiB 为单位给出的值转换为 MiB 单位。  
支持的值：`1-EC2Memory`  
`EC2Memory`是在 [Amazon EC2 实例类型中列出并由亚马逊 EC2 API](https://aws.amazon.com/ec2/instance-types) 返回的内存（以 MiB 为单位）。[DescribeInstanceTypes](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTypes.html)确保将以 GiB 为单位给出的值转换为 MiB 单位。  
当启用了 [`SlurmSettings`](#Scheduling-v3-SlurmSettings)/[`EnableMemoryBasedScheduling`](#yaml-Scheduling-SlurmSettings-EnableMemoryBasedScheduling) 时，此选项最相关。有关更多信息，请参阅 [Slurm 基于内存的调度](slurm-mem-based-scheduling-v3.md)。  
从 AWS ParallelCluster 版本 3.2.0 开始支持 `SchedulableMemory`。  
从版本 3.2.0 开始，默认情况下， AWS ParallelCluster 将Slurm计算节点配置`RealMemory`为 Amazon EC2 API 返回的内存的 95%。`DescribeInstanceTypes`此配置与 `EnableMemoryBasedScheduling` 的值无关。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`HealthChecks`（**可选**）**  
指定计算资源上的运行状况检查。    
`Gpu`（**可选**）  
指定计算资源上的 GPU 运行状况检查。    
`Enabled`（**可选**，`Boolean`）  
是否 AWS ParallelCluster 对队列中的计算资源执行 GPU 运行状况检查。默认值为 `false`。  
AWS ParallelCluster 在使用 `alinux2` ARM 操作系统的节点`Gpu`中不支持`HealthChecks`/。这些平台不支持 [NVIDIA 数据中心 GPU 管理器 (DCGM)](https://docs.nvidia.com/datacenter/dcgm/latest/user-guide/getting-started.html#supported-linux-distributions)。

**`Gpu` 运行状况检查行为**
+ 如果 `Gpu` /设置`Enabled`为`true`，则对计算资源 AWS ParallelCluster 执行 GPU 运行状况检查。
+ `Gpu` 运行状况检查会对计算资源执行运行状况检查，以防止在 GPU 降级的节点上提交作业。
+ 如果某个计算节点未通过 `Gpu` 运行状况检查，则该计算节点的状态将更改为 `DRAIN`。新作业不会在此节点上启动。现有作业将运行至完成。所有正在运行的作业完成后，如果该计算节点是动态节点，则会终止；如果是静态节点，则会被替换。
+ `Gpu`运行状况检查的持续时间取决于所选实例类型、实例 GPUs 中的数量和`Gpu`运行状况检查目标的数量（等同于作业 GPU 目标的数量）。对于具有 8 的实例 GPUs，典型持续时间小于 3 分钟。
+ 如果 `Gpu` 运行状况检查在不受支持的实例上运行，它将退出，作业将在计算节点上运行。例如，如果一个实例没有 GPU，或者一个实例有 GPU，但不是 NVIDIA GPU，则运行状况检查将会退出，作业将在计算节点上运行。仅支持 NVIDIA GPUs 。
+ `Gpu` 运行状况检查使用 `dcgmi` 工具对节点执行运行状况检查，并采取以下步骤：

  当在节点中开始 `Gpu` 运行状况检查时：

  1. 它会检测 `nvidia-dcgm` 和 `nvidia-fabricmanager` 服务是否正在运行。

  1. 如果这些服务未运行，则 `Gpu` 运行状况检查将会启动这些服务。

  1. 它会检测是否启用了持久性模式。

  1. 如果未启用持久性模式，则 `Gpu` 运行状况检查将会启用该模式。

  在运行状况检查结束时，`Gpu` 运行状况检查会将这些服务和资源还原到其初始状态。
+ 如果任务分配给一组特定的节点 GPUs，则运行`Gpu`状况检查仅在该特定节点上运行。否则，运行`Gpu`状况检查将在节点 GPUs 中的所有节点上运行。
+ 如果计算节点同时收到 2 个或更多个 `Gpu` 运行状况检查请求，则仅运行第一个运行状况检查，并跳过其他运行状况检查。针对节点的运行状况检查也是如此 GPUs。您可以查看日志文件以获取有关此情况的更多信息。
+ `/var/log/parallelcluster/slurm_health_check.log` 文件中提供了特定计算节点的运行状况检查日志。此文件可在 Amazon CloudWatch 的集群 CloudWatch 日志组中找到，您可以在其中找到：
  + 有关 `Gpu` 运行状况检查运行的操作的详细信息，包括启用和禁用服务以及持久性模式。
  + GPU 标识符、序列号和 UUID。
  + 运行状况检查输出。
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
`HealthChecks`从 3.6.0 AWS ParallelCluster 版开始受支持。

**`Efa`（**可选**）**  
为 Slurm 队列中的节点指定 Elastic Fabric Adapter (EFA) 设置。  

```
Efa:
  Enabled: boolean
  GdrSupport: boolean
```
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)    
**`Enabled`（**可选**，`Boolean`）**  
指定 Elastic Fabric Adapter (EFA) 已启用。要查看支持 EFA 的 Amazon EC2 实例的列表，请参阅《Amazon EC2 用户指南（适用于 Linux 实例）》**中的[支持的实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html#efa-instance-types)。有关更多信息，请参阅 [Elastic Fabric Adapter](efa-v3.md)。我们建议您使用集群 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`Networking`](#Scheduling-v3-SlurmQueues-Networking)/[`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup) 最大限度地缩短实例之间的延迟。  
默认值为 `false`。  
不支持在不同的可用区之间使用 Elastic Fabric Adapter (EFA)。有关更多信息，请参阅 [SubnetIds](#yaml-Scheduling-SlurmQueues-Networking-SubnetIds)。
如果您在中定义自定义安全组 [SecurityGroups](#yaml-Scheduling-SlurmQueues-Networking-SecurityGroups)，请确保您的启用 EFA 的实例是允许所有入站和出站流量进入自身的安全组的成员。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`GdrSupport`（**可选**，`Boolean`）**  
**（可选）**从 AWS ParallelCluster 版本 3.0.2 开始，此设置无效。如果计算资源和操作系统的实例类型支持 GPUDirect RDMA（远程直接内存访问）的 Elastic Fabric Adapter (EFA)，则始终启用对 RDMA（远程直接内存访问）Slurm的支持。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`CapacityReservationTarget`**  

```
CapacityReservationTarget:
   CapacityReservationId: string
   CapacityReservationResourceGroupArn: string
```
指定要用于计算资源的按需容量预留。    
**`CapacityReservationId`（**可选**，`String`）**  
要用于队列计算资源的现有容量预留的 ID。ID 可以指的是 [ODCR](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) 或[适用于 ML 的容量块](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-blocks.html)。  
如果在计算资源级别指定此参数 InstanceType是可选的，则将自动从预留中检索该参数。  
**`CapacityReservationResourceGroupArn`（**可选**，`String`）**  
指示用作计算资源的服务相关容量预留组的资源组的 Amazon 资源名称 (ARN)。 AWS ParallelCluster 确定并使用组中最适当的容量预留。对于为计算资源列出的每种实例类型，资源组必须至少有一个 ODCR。有关更多信息，请参阅 [使用按需容量预留（ODCR）启动实例](launch-instances-odcr-v3.md)。  
+ 如果`PlacementGroup`在 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)或 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)//中启用 [`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)，则 AWS ParallelCluster 选择以实例类型`PlacementGroup`为目标的资源组和计算资源（如果存在）。[`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)

  `PlacementGroup` 必须以 [`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources) 中定义的实例类型之一为目标。
+ 如果`PlacementGroup`未在 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)或 [`SlurmQueues`[`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)](#Scheduling-v3-SlurmQueues)/中启用 [`Networking`](#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)，则 AWS ParallelCluster 选择仅针对计算资源的实例类型（如果存在）的资源组。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
从 AWS ParallelCluster 版本 3.3.0 开始添加了 `CapacityReservationTarget`。

**`Networking`**  

```
Networking:   
  PlacementGroup:
    Enabled: boolean
    Name: string
```
[更新策略：必须停止所有计算节点才能删除托管置放群组。必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-remove-placement-group-v3)    
**`PlacementGroup`（**可选**）**  
指定计算资源的置放群组设置。    
**`Enabled`（**可选**，`Boolean`）**  
指示是否对计算资源使用置放群组。  
+ 如果设置为 `true` 而未定义 `Name`，则无论 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`Networking`](#Scheduling-v3-SlurmQueues-Networking)/[`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup) 设置如何，都会为该计算资源分配自己的托管置放群组。
+ 如果设置为 `true` 且定义了 `Name`，则无论 `SlurmQueues`/`Networking`/`PlacementGroup` 设置如何，都将为该计算资源分配命名的置放群组。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Name`（**可选**，`String`）**  
用于计算资源的现有集群置放群组的置放群组名称。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)
+ 如果 `PlacementGroup`/`Enabled` 和 `Name` 都未设置，则它们各自的值默认为 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`Networking`](#Scheduling-v3-SlurmQueues-Networking)/[`PlacementGroup`](#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup) 设置。
+ 使用容量块预留时，不应设置置放群组约束，因为即使容量预留还有剩余容量，也可能由于预留之外的放置限制而出现容量不足错误。
+ `ComputeResources`/`Networking`/已`PlacementGroup`在 3.3.0 AWS ParallelCluster 版本中添加。

**`CustomSlurmSettings`（**可选**，`Dict`）**  
**（可选）**定义自定义 Slurm 节点（计算资源）配置设置。  
指定应用于 Slurm 节点（计算资源）的自定义 Slurm 配置参数键值对的字典。  
每个单独的键值对（例如 `Param1: Value1`）都以 `Param1=Value1` 格式单独添加到 Slurm 节点配置行的末尾。  
您只能指定未在 `CustomSlurmSettings` 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息，请参阅 [被拒登名单 Slurm 的配置参数 `CustomSlurmSettings`](slurm-configuration-settings-v3.md#slurm-configuration-denylists-v3)。  
AWS ParallelCluster 仅检查参数是否在拒绝列表中。 AWS ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败，从而导致集群创建和更新失败。  
有关如何使用指定自定义Slurm配置参数的更多信息 AWS ParallelCluster，请参阅[Slurm 配置自定义](slurm-configuration-settings-v3.md)。  
有关 Slurm 配置参数的更多信息，请参阅 Slurm 文档中的 [slurm.conf](https://slurm.schedmd.com/slurm.conf.html)。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
从 AWS ParallelCluster 版本 3.6.0 开始支持 `CustomSlurmSettings`。

**`Tags`（**可选**，[字符串]）**  
标签键值对的列表。`ComputeResource` 标签覆盖 [`Tags` 部分](Tags-v3.md)或 [`SlurmQueues`](#yaml-Scheduling-SlurmQueues-Tags)/`Tags` 中指定的重复标签。    
**`Key`（**可选**，`String`）**  
标签键。  
**`Value`（**可选**，`String`）**  
标签值。
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`LaunchTemplateOverrides`（**可选**）**  
`LaunchTemplateOverrides`已在 3.15.0 AWS ParallelCluster 版本中添加。
指定启动模板以覆盖为计算资源 AWS ParallelCluster 创建的默认启动模板。启动模板应仅包含网络接口替代项。 AWS ParallelCluster 验证启动模板并防止覆盖其他参数。有关如何使用此替代的更多信息，请参阅[使用启动模板覆盖自定义计算节点网络接口](tutorial-network-customization-v3.md)。  

```
LaunchTemplateOverrides:
  LaunchTemplateId: string
  Version: string
```  
**`LaunchTemplateId`（**必需**，`String`）**  
启动模板的 ID。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Version`（**必需**，`String`）**  
启动模板的版本号。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

#### `ComputeSettings`
<a name="Scheduling-v3-SlurmQueues-ComputeSettings"></a>

**（必需）**定义 Slurm 队列的 `ComputeSettings` 配置。

##### `ComputeSettings` 属性
<a name="Scheduling-v3-SlurmQueues-ComputeSettings.properties"></a>

指定 Slurm 队列中节点的 `ComputeSettings` 的属性。

```
ComputeSettings:
  LocalStorage:
    RootVolume:
      Size: integer
      Encrypted: boolean
      VolumeType: string
      Iops: integer
      Throughput: integer
     EphemeralVolume:
      MountDir: string
```

[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`LocalStorage`（**可选**）**  
指定 Slurm 队列中节点的 `LocalStorage` 的属性。  

```
LocalStorage:
  RootVolume:
    Size: integer
    Encrypted: boolean
    VolumeType: string
    Iops: integer
    Throughput: integer
  EphemeralVolume:
    MountDir: string
```
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)    
**`RootVolume`（**可选**）**  
指定 Slurm 队列中节点的根卷的详细信息。  

```
RootVolume:
  Size: integer
  Encrypted: boolean
  VolumeType: string
  Iops: integer
  Throughput: integer
```
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)    
**`Size`（**可选**，`Integer`）**  
指定 Slurm 队列中节点的根卷大小，以吉字节 (GiB) 为单位。默认大小来自 AMI。如果使用不同的大小，则 AMI 必须支持 `growroot`。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Encrypted`（**可选**，`Boolean`）**  
如果为 `true`，则对 Slurm 队列中节点的根卷进行加密。默认值为 `true`。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`VolumeType`（**可选**，`String`）**  
指定 Slurm 队列中节点的 [Amazon EBS 卷类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)。支持的值为 `gp2`、`gp3`、`io1`、`io2`、`sc1`、`st1` 和 `standard`。默认值为 `gp3`。  
有关更多信息，请参阅《Amazon EC2 用户指南》中的 [Amazon EBS 卷类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Iops`（**可选**，`Boolean`）**  
定义 `io1`、`io2` 和 `gp3` 类型卷的 IOPS 数。  
默认值、支持的值以及 `volume_size`/`volume_iops` 比率因 `VolumeType` 和 `Size` 而异。    
**`VolumeType` = `io1`**  
默认值：`Iops` = 100  
支持的值：`Iops` = 100–64000 †  
最大 `volume_iops`/`volume_size` 比率 = 50 IOPS/GiB。5000 IOPS 需要至少 100 GiB 的 `volume_size`。  
**`VolumeType` = `io2`**  
默认值：`Iops` = 100  
支持的值：`Iops` = 100–64000（`io2` Block Express 卷为 256000）†  
最大 `Iops`/`Size` 比率 = 500 IOPS/GiB。5000 IOPS 需要至少 10 GiB 的 `Size`。  
**`VolumeType` = `gp3`**  
默认值：`Iops` = 3000  
支持的值：`Iops` = 3000–16000 †  
最大 `Iops`/`Size` 比率 = 500 IOPS/GiB（对于 IOPS 大于 3000 的卷）。
† 只有[在 Nitro System 上构建的实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)也配置超过 32000 IOPS 时，才能保证最大 IOPS。其他实例最高可具有 32000 IOPS。除非您[修改卷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modify-volume.html)，否则较早的 `io1` 卷可能无法实现完全性能。`io2`Block Express 卷在 `R5b` 实例类型上支持高达 256000 的 `volume_iops` 值。有关更多信息，请参阅《Amazon EC2 用户指南》**中的 [`io2`Block Express 卷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#io2-block-express)。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Throughput`（**可选**，`Integer`）**  
定义 `gp3` 卷类型的吞吐量，以 MiB/s 为单位。此设置仅在 `VolumeType` 为 `gp3` 时有效。默认值为 `125`。支持的值：125–1000 MiB/s  
`Throughput` 与 `Iops` 的比率不能超过 0.25。如果最大吞吐量为 1000，则该`Iops`设置 MiB/s 必须至少为 4000。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`EphemeralVolume`（**可选**，`Boolean`）**  
指定临时卷的设置。临时卷是通过将所有实例存储卷合并到 `ext4` 文件系统格式的单个逻辑卷而创建的。默认值为 `/scratch`。如果实例类型没有任何实例存储卷，则不会创建临时卷。有关更多信息，请参阅 *Amazon EC2 用户指南*中的[实例存储卷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#instance-store-volumes)。  

```
EphemeralVolume:
  MountDir: string
```
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)    
**`MountDir`（**可选**，`String`）**  
Slurm 队列中每个节点的临时卷的挂载目录。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

#### `CustomActions`
<a name="Scheduling-v3-SlurmQueues-CustomActions"></a>

**（可选）**指定要在 Slurm 队列中的节点上运行的自定义脚本。

```
CustomActions:
  OnNodeStart:
    Sequence:
      - Script: string
        Args:
          - string
    Script: string
    Args:
      - string
  OnNodeConfigured:
    Sequence:
      - Script: string
        Args:
          - string
    Script: string
    Args:
      - string
```

[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

##### `CustomActions` 属性
<a name="Scheduling-v3-SlurmQueues-CustomActions.properties"></a>

**`OnNodeStart`（**可选**，`String`）**  
指定在启动任何节点部署引导操作之前，要在 Slurm 队列中的节点上运行的脚本序列或单个脚本。 AWS ParallelCluster 不支持同一个自定义操作同时包含单个脚本和 `Sequence`。有关更多信息，请参阅[自定义引导操作](custom-bootstrap-actions-v3.md)。    
**`Sequence`（**可选**）**  
要运行的脚本的列表。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)    
**`Script`（**必需**，`String`）**  
要使用的文件。文件路径可以 `https://` 或 `s3://` 开头。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Args`（**可选**，`[String]`）**  
要传递到脚本的参数的列表。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Script`（**必需**，`String`）**  
用于单个脚本的文件。文件路径可以 `https://` 或 `s3://` 开头。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Args`（**可选**，`[String]`）**  
要传递到单个脚本的参数的列表。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)

**`OnNodeConfigured`（**可选**，`String`）**  
指定在所有节点引导操作完成之后，要在 Slurm 队列中的节点上运行的脚本序列或单个脚本。 AWS ParallelCluster 不支持同一个自定义操作同时包含单个脚本和 `Sequence`。有关更多信息，请参阅[自定义引导操作](custom-bootstrap-actions-v3.md)。    
**`Sequence`（**可选**）**  
要运行的脚本的列表。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)    
**`Script`（**必需**，`String`）**  
要使用的文件。文件路径可以 `https://` 或 `s3://` 开头。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Args`（**可选**，`[String]`）**  
要传递到脚本的参数的列表。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Script`（**必需**，`String`）**  
用于单个脚本的文件。文件路径可以 `https://` 或 `s3://` 开头。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
**`Args`（**可选**，`[String]`）**  
要传递到单个脚本的参数的列表。  
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)
[更新策略：必须停止计算实例集或必须设置 QueueUpdateStrategy 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
`Sequence`是从 3.6.0 AWS ParallelCluster 版本开始添加的。指定后`Sequence`，您可以列出一个自定义操作的多个脚本。 AWS ParallelCluster 继续支持使用单个脚本配置自定义操作，不包括脚本`Sequence`。  
AWS ParallelCluster 不支持同时包含单个脚本和`Sequence`同一个自定义操作。

#### `Iam`
<a name="Scheduling-v3-SlurmQueues-Iam"></a>

**（可选）**定义 Slurm 队列的可选 IAM 设置。

```
Iam:
  S3Access:
    - BucketName: string
      EnableWriteAccess: boolean
      KeyName: string
  AdditionalIamPolicies:
    - Policy: string
  InstanceProfile: string
  InstanceRole: string
```

[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

##### `Iam` 属性
<a name="Scheduling-v3-SlurmQueues-Iam.properties"></a>

**`InstanceProfile`（**可选**，`String`）**  
指定用于覆盖 Slurm 队列默认实例角色或实例配置文件的实例配置文件。您不能同时指定 `InstanceProfile` 和 `InstanceRole`。格式为 `arn:${Partition}:iam::${Account}:instance-profile/${InstanceProfileName}`。  
如果指定此设置，则不能指定 `S3Access` 和 `AdditionalIamPolicies` 设置。  
我们建议您指定 `S3Access` 和 `AdditionalIamPolicies` 设置中的一个或两个，因为添加到 AWS ParallelCluster 中的功能通常需要新权限。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`InstanceRole`（**可选**，`String`）**  
指定用于覆盖 Slurm 队列默认实例角色或实例配置文件的实例角色。您不能同时指定 `InstanceProfile` 和 `InstanceRole`。格式为 `arn:${Partition}:iam::${Account}:role/${RoleName}`。  
如果指定此设置，则不能指定 `S3Access` 和 `AdditionalIamPolicies` 设置。  
我们建议您指定 `S3Access` 和 `AdditionalIamPolicies` 设置中的一个或两个，因为添加到 AWS ParallelCluster 中的功能通常需要新权限。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`S3Access`（**可选**）**  
为 Slurm 队列指定存储桶。此设置用于生成针对 Slurm 队列中的存储桶授予指定访问权限的策略。  
如果指定此设置，则不能指定 `InstanceProfile` 和 `InstanceRole` 设置。  
我们建议您指定 `S3Access` 和 `AdditionalIamPolicies` 设置中的一个或两个，因为添加到 AWS ParallelCluster 中的功能通常需要新权限。  

```
S3Access:
  - BucketName: string
    EnableWriteAccess: boolean
    KeyName: string
```
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)    
**`BucketName`（**必需**，`String`）**  
存储桶的名称。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
**`KeyName`（**可选**，`String`）**  
存储桶的密钥。默认值为 `*`。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
**`EnableWriteAccess`（**可选**，`Boolean`）**  
指示是否为存储桶启用写入权限。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

**`AdditionalIamPolicies`（**可选**）**  
指定 Amazon EC2 的 IAM 策略的 Amazon 资源名称 (ARN) 列表。除了所需的权限外，此列表还附在用于Slurm队列的根角色上 AWS ParallelCluster。  
IAM 策略名称及其 ARN 不相同。不能使用名称。  
如果指定此设置，则不能指定 `InstanceProfile` 和 `InstanceRole` 设置。  
我们建议您使用 `AdditionalIamPolicies`，因为 `AdditionalIamPolicies` 已经添加到 AWS ParallelCluster 所需的权限中，而 `InstanceRole` 必须包含所有必需的权限。随着功能的不断添加，所需权限通常会随版本发生变化。  
没有默认值。  

```
AdditionalIamPolicies:
  - Policy: string
```
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)    
**`Policy`（**必需**，`[String]`）**  
IAM 策略的列表。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

## `SlurmSettings`
<a name="Scheduling-v3-SlurmSettings"></a>

**（可选）**为 Slurm 定义应用到整个集群的设置。

```
SlurmSettings:
  ScaledownIdletime: integer
  QueueUpdateStrategy: string
  EnableMemoryBasedScheduling: boolean
  CustomSlurmSettings: [dict] 
  CustomSlurmSettingsIncludeFile: string
  Database:
    Uri: string
    UserName: string
    PasswordSecretArn: string
  ExternalSlurmdbd:
    Host: string
    Port: integer
  Dns:
    DisableManagedDns: boolean
    HostedZoneId: string
    UseEc2Hostnames: boolean
```

### `SlurmSettings` 属性
<a name="Scheduling-v3-SlurmSettings.properties"></a>

**`ScaledownIdletime`（**可选**，`Integer`）**  
定义 Slurm 节点终止前没有作业的时间（以分钟为单位）。  
默认值为 `10`。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`MungeKeySecretArn`（**可选**，`String`）**  
 纯文本 Secrets AWS Manager 密钥的亚马逊资源名称 (ARN)，其中包含要在集群中使用的 base64 编码的 munge 密钥。Slurm该 munge 密钥将用于验证 Slurm 客户端命令与作为远程服务器的 Slurm 进程守护程序之间的 RPC 调用。如果未提供， AWS ParallelCluster 将 MungeKeySecretArn 为集群生成一个随机 munge 密钥。  
从 AWS ParallelCluster 版本 3.8.0 开始支持 `MungeKeySecretArn`。
如果 MungeKeySecretArn 是新添加到现有集群中，则在回滚或稍后移除时 ParallelCluster不会恢复之前的 munge Key。 MungeKeySecretArn相反，将生成一个新的随机 munge 密钥。
如果 AWS ParallelCluster 用户有权[ DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html)访问该特定机密资源， MungeKeySecretArn 则会进行验证。 MungeKeySecretArn 在以下情况下有效：  
+ 指定的密钥存在；
+ 密钥为明文，包含一个有效的 base64 编码字符串；
+ 解码后的二进制 munge 密钥大小介于 256 和 8192 位之间。
如果 pcluster 用户 IAM 策略不包括 DescribeSecret， MungeKeySecretArn则不进行验证并显示警告消息。有关更多信息，请参阅 [基本 AWS ParallelCluster `pcluster` 用户策略](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-base-user-policy)。  
更新时 MungeKeySecretArn，必须停止计算队列和所有登录节点。  
如果密钥 ARN 中的密钥值被修改，而 ARN 保持不变，则不会自动用新的 munge 密钥更新集群。要使用密钥 ARN 的新 munge 密钥，必须停止计算实例集和登录节点，然后从头节点运行以下命令。  
`sudo /opt/parallelcluster/scripts/slurm/update_munge_key.sh`  
运行命令后，您可以恢复计算队列和登录节点：新配置的计算和登录节点将自动开始使用新的 munge 密钥。  
要生成 base64 编码的自定义 munge 密钥，可以使用 munge 软件随附的 [mungekey 实用程序](https://github.com/dun/munge/wiki/Man-8-mungekey)，然后使用操作系统中常见的 base64 实用程序对其进行编码。或者，也可以使用 bash（请将 bs 参数设置在 32 至 1024 之间）  
`dd if=/dev/random bs=128 count=1 2>/dev/null | base64 -w 0`  
或 Python，如下所示：  

```
import random
import os
import base64

# key length in bytes
key_length=128

base64.b64encode(os.urandom(key_length)).decode("utf-8")
```
[更新策略：必须停止计算队列和登录节点，才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md)

**`QueueUpdateStrategy`（**可选**，`String`）**  
为具有以下更新策略的 [`SlurmQueues`](#Scheduling-v3-SlurmQueues) 部分参数指定替换策略：  
[更新策略：必须停止计算实例集或必须设置 `QueueUpdateStrategy` 才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-queue-update-strategy-v3)  
仅在集群更新过程开始时使用 `QueueUpdateStrategy` 值。  
有效值：`COMPUTE_FLEET_STOP` \$1`DRAIN` \$1`TERMINATE`  
默认值：`COMPUTE_FLEET_STOP`    
**`DRAIN`**  
队列中更改了参数值的节点将设置为 `DRAINING`。处于此状态的节点不接受新作业，正在运行的作业会继续运行，直至完成。  
在节点变成 `idle` (`DRAINED`) 之后，如果是静态节点，则将替换该节点；如果是动态节点，则将终止该节点。其他队列中未更改参数值的其他节点不受影响。  
此策略替换更改了参数值的所有队列节点所需的时间取决于正在运行的工作负载。。  
**`COMPUTE_FLEET_STOP`**  
`QueueUpdateStrategy` 参数的默认值。使用此设置，更新该[`SlurmQueues`](#Scheduling-v3-SlurmQueues)部分下的参数要求您在执行集群更新之前[停止计算队列](pcluster.update-compute-fleet-v3.md)：  

```
$ pcluster update-compute-fleet --status STOP_REQUESTED
```  
**`TERMINATE`**  
在更改了参数值的队列中，将会终止正在运行的作业并立即关闭节点。  
静态节点将被替换，动态节点将被终止。  
其他队列中未更改参数值的其他节点不受影响。
[更新策略：在更新期间不分析此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-ignored-v3)  
从 AWS ParallelCluster 版本 3.2.0 开始支持 `QueueUpdateStrategy`。

**`EnableMemoryBasedScheduling`（**可选**，`Boolean`）**  
如果为 `true`，则在 Slurm 中启用基于内存的调度。有关更多信息，请参阅 [`SlurmQueues`](#Scheduling-v3-SlurmQueues)/[`ComputeResources`](#Scheduling-v3-SlurmQueues-ComputeResources)/[`SchedulableMemory`](#yaml-Scheduling-SlurmQueues-ComputeResources-SchedulableMemory)。  
默认值为 `false`。  
启用基于内存的调度会影响 Slurm 调度器处理作业和节点分配的方式。  
有关更多信息，请参阅 [Slurm 基于内存的调度](slurm-mem-based-scheduling-v3.md)。
从 AWS ParallelCluster 版本 3.2.0 开始支持 `EnableMemoryBasedScheduling`。
[从 3.7.0 AWS ParallelCluster 版开始，如果您在实例中配置了多个实例类型，则`EnableMemoryBasedScheduling`可以启用。](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)  
适用于 3.2.0 到 3.6 AWS ParallelCluster 版本。 *x*[，如果您在实例中配置了多个实例类型，则`EnableMemoryBasedScheduling`无法启用。](#yaml-Scheduling-SlurmQueues-ComputeResources-Instances)
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`CustomSlurmSettings`（**可选**，`[Dict]`）**  
定义应用到整个集群的自定义 Slurm 设置。  
指定要附加到 AWS ParallelCluster 生成的 `slurm.conf` 文件末尾的键值对的 Slurm 配置字典列表。  
列表中的每个字典都显示为添加到 Slurm 配置文件中的单独一行。您可指定简单参数或复杂参数。  
简单参数包含单个键值对，如以下示例所示：  

```
 - Param1: 100
 - Param2: "SubParam1,SubParam2=SubValue2"
```
在 Slurm 配置中呈现的示例：  

```
Param1=100
Param2=SubParam1,SubParam2=SubValue2
```
复杂的 Slurm 配置参数包含多个以空格分隔的键值对，如以下示例所示：  

```
 - NodeName: test-nodes[1-10]
   CPUs: 4
   RealMemory: 4196
   ... # other node settings
 - NodeSet: test-nodeset
   Nodes: test-nodes[1-10]
   ... # other nodeset settings
 - PartitionName: test-partition
   Nodes: test-nodeset
   ... # other partition settings
```
在 Slurm 配置中呈现的示例：  

```
NodeName=test-nodes[1-10] CPUs=4 RealMemory=4196 ... # other node settings
NodeSet=test-nodeset Nodes=test-nodes[1-10] ... # other nodeset settings
PartitionName=test-partition Nodes=test-nodeset ... # other partition settings
```
自定义 Slurm 节点的名称中不得包含 `-st-` 或 `-dy-` 模式。这些模式是为 AWS ParallelCluster托管的节点预留的。
如果您在 `CustomSlurmSettings` 中指定自定义 Slurm 配置参数，则不得为 `CustomSlurmSettingsIncludeFile` 指定自定义 Slurm 配置参数。  
您只能指定未在 `CustomSlurmSettings` 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息，请参阅 [被拒登名单 Slurm 的配置参数 `CustomSlurmSettings`](slurm-configuration-settings-v3.md#slurm-configuration-denylists-v3)。  
AWS ParallelCluster 仅检查参数是否在拒绝列表中。 AWS ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败，从而导致集群创建和更新失败。  
有关如何使用指定自定义Slurm配置参数的更多信息 AWS ParallelCluster，请参阅[Slurm 配置自定义](slurm-configuration-settings-v3.md)。  
有关 Slurm 配置参数的更多信息，请参阅 Slurm 文档中的 [slurm.conf](https://slurm.schedmd.com/slurm.conf.html)。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
从 AWS ParallelCluster 版本 3.6.0 开始支持 `CustomSlurmSettings`。

**`CustomSlurmSettingsIncludeFile`（**可选**，`String`）**  
定义应用到整个集群的自定义 Slurm 设置。  
指定将包含自定义 Slurm 配置参数的自定义 Slurm 文件附加到 AWS ParallelCluster 生成的 `slurm.conf` 文件的末尾。  
必须包括该文件的路径。路径可以 `https://` 或 `s3://` 开头。  
如果您为 `CustomSlurmSettingsIncludeFile` 指定自定义 Slurm 配置参数，则不得为 `CustomSlurmSettings` 指定自定义 Slurm 配置参数。  
自定义 Slurm 节点的名称中不得包含 `-st-` 或 `-dy-` 模式。这些模式是为 AWS ParallelCluster托管的节点预留的。
您只能指定未在 `CustomSlurmSettingsIncludeFile` 中列入拒绝列表的 Slurm 配置参数。有关列入拒绝列表的 Slurm 配置参数的信息，请参阅 [被拒登名单 Slurm 的配置参数 `CustomSlurmSettings`](slurm-configuration-settings-v3.md#slurm-configuration-denylists-v3)。  
AWS ParallelCluster 仅检查参数是否在拒绝列表中。 AWS ParallelCluster 不会验证您的自定义Slurm配置参数语法或语义。您有责任验证您的自定义Slurm配置参数。无效的自定义 Slurm 配置参数可能会导致 Slurm 进程守护程序失败，从而导致集群创建和更新失败。  
有关如何使用指定自定义Slurm配置参数的更多信息 AWS ParallelCluster，请参阅[Slurm 配置自定义](slurm-configuration-settings-v3.md)。  
有关 Slurm 配置参数的更多信息，请参阅 Slurm 文档中的 [slurm.conf](https://slurm.schedmd.com/slurm.conf.html)。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)  
从 AWS ParallelCluster 版本 3.6.0 开始支持 `CustomSlurmSettings`。

### `Database`
<a name="Scheduling-v3-SlurmSettings-Database"></a>

**（可选）**定义用于在集群上启用 Slurm 会计的设置。有关更多信息，请参阅 [Slurm会计 AWS ParallelCluster](slurm-accounting-v3.md)。

```
Database:
   Uri: string
   UserName: string
   PasswordSecretArn: string
```

[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

#### `Database` 属性
<a name="Scheduling-v3-SlurmSettings-Database.properties"></a>

**`Uri`（**必需**，`String`）**  
用作 Slurm 会计后端的数据库服务器的地址。此 URI 必须采用 `host:port` 格式且不得包含架构，例如 `mysql://`。主机可以是 IP 地址，也可以是头节点可解析的 DNS 名称。如果未提供端口， AWS ParallelCluster 将使用 MySQL 默认端口 3306。  
AWS ParallelCluster 将Slurm记账数据库引导到集群，并且必须访问该数据库。  
在执行以下操作之前，必须可以访问该数据库：  
+ 创建集群。
+ 通过集群更新启用 Slurm 会计。
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`UserName`（**必需**，`String`）**  
Slurm 用于连接数据库、写入会计日志和执行查询的身份。用户必须对数据库具有读取和写入权限。  
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`PasswordSecretArn`（**必需**，`String`）**  
包含`UserName`纯文本密码的 AWS Secrets Manager 密钥的 Amazon 资源名称 (ARN)。此密码与 `UserName` 和 Slurm 会计一起使用，用于在数据库服务器上进行身份验证。  
+ 使用 AWS Secrets Manager 控制台创建密钥时，请务必选择 “其他类型的密钥”，选择纯文本，并且仅在密钥中包含密码文本。
+ 你不能在数据库密码中使用 “\$1” 字符，因为 Slurm 在 slurmdbd.conf 中不支持它。
+ 有关如何使用创建密钥 AWS Secrets Manager 的更多信息，请参阅[创建 AWS Secrets Manager 密钥](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret)。
如果用户拥有 [DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html) 的权限，则会验证 `PasswordSecretArn`。如果指定的密钥存在，则 `PasswordSecretArn` 有效。如果用户 IAM 策略不包括 `DescribeSecret`，则不验证 `PasswordSecretArn` 并显示警告消息。有关更多信息，请参阅 [基本 AWS ParallelCluster `pcluster` 用户策略](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-base-user-policy)。  
更新 `PasswordSecretArn` 时，必须停止计算实例集。如果更改了密钥值而未更改密钥 ARN，则不会使用新数据库密码自动更新集群。要针对新密钥值更新集群，您必须在停止计算实例集后从头节点内运行以下命令。  

```
$ sudo /opt/parallelcluster/scripts/slurm/update_slurm_database_password.sh
```
我们建议仅在已停止计算实例集的情况下更改数据库密码以避免会计数据丢失。
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**`DatabaseName`（**可选**，`String`）**  
数据库服务器上用于 Slurm 会计的数据库名称（由 Uri 参数定义）。  
数据库名称可以包含小写字母、数字和下划线。名称长度不得超过 64 个字符。  
此参数映射到 [slurmdbd.conf](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageLoc) 的 `StorageLoc` 参数。  
如果未提供，`DatabaseName`则 ParallelCluster 将使用集群的名称为定义值`StorageLoc`。  
允许更新 `DatabaseName`，但要注意以下几点：  
+ 如果数据库服务器上尚 DatabaseName 不存在具有名称的数据库，slurmdbd 将创建该数据库。您有责任根据需要重新配置新数据库（例如，添加会计实体 — 集群、账户、用户 QOSs、关联等）。
+ 如果数据库服务器上 DatabaseName 已经存在同名数据库，slurmdbd 会将其用于会计功能。Slurm
[更新策略：必须停止计算实例集才能更改此设置以进行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

**注意**  
从版本 3.3.0 开始添加了 `Database`。

### ExternalSlurmdbd
<a name="Scheduling-v3-SlurmSettings-ExternalSlurmdbd"></a>

**（可选）**定义通过外部 slurmdbd 服务器启用 Slurm Accounting 的设置。有关更多信息，请参阅[使用进行Slurm会计 AWS ParallelCluster](slurm-accounting-v3.md)。

```
ExternalSlurmdbd:
  Host: string
  Port: integer
```

#### `ExternalSlurmdbd` 属性
<a name="Scheduling-v3-SlurmSettings-ExternalSlurmdbd.properties"></a>

** `Host`（**必需**，`String`）**  
用于 Slurm 会计的外部 slurmdbd 服务器的地址。主机可以是 IP 地址，也可以是头节点可解析的 DNS 名称。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

** `Port`（**可选**，`Integer`）**  
slurmdbd 服务监听的端口。默认值为 `6819`。  
[更新策略：可以在更新期间更改此设置。](using-pcluster-update-cluster-v3.md#update-policy-setting-supported-v3)

### `Dns`
<a name="Scheduling-v3-SlurmSettings-Dns"></a>

**（可选）**为 Slurm 定义应用到整个集群的设置。

```
Dns:
  DisableManagedDns: boolean
  HostedZoneId: string
  UseEc2Hostnames: boolean
```

#### `Dns` 属性
<a name="Scheduling-v3-SlurmSettings-Dns.properties"></a>

**`DisableManagedDns`（**可选**，`Boolean`）**  
如果为 `true`，则不创建集群的 DNS 条目，并且无法解析 Slurm 节点名称。  
默认情况下， AWS ParallelCluster 创建一个 Route 53 托管区域，启动时将在其中注册节点。默认值为 `false`。如果设置`DisableManagedDns`为`true`，则托管区域不是由创建的 AWS ParallelCluster。  
要了解如何使用此设置在没有互联网访问权限的子网中部署集群，请参阅[AWS ParallelCluster 在无法访问互联网的单个子网中](aws-parallelcluster-in-a-single-public-subnet-no-internet-v3.md)。  
集群需要名称解析系统才能正常运行。如果 `DisableManagedDns` 设置为 `true`，则必须提供名称解析系统。要使用 Amazon EC2 默认 DNS，请将 `UseEc2Hostnames` 设置为 `true`。或者配置您自己的 DNS 解析程序，并确保在启动实例时注册节点名称。例如，您可以通过配置 [`CustomActions`](#Scheduling-v3-SlurmQueues-CustomActions)/[`OnNodeStart`](#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeStart) 来实现这一目标。
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**`HostedZoneId`（**可选**，`String`）**  
定义要用于集群 DNS 名称解析的自定义 Route 53 托管区 ID。如果提供，则在指定的托管区域中 AWS ParallelCluster 注册集群节点，并且不会创建托管托管区域。  
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)

**`UseEc2Hostnames`（**可选**，`Boolean`）**  
如果为 `true`，则使用默认 EC2 主机名配置集群计算节点。还会使用此信息更新 Slurm `NodeHostName`。默认值为 `false`。  
要了解如何使用此设置在没有互联网访问权限的子网中部署集群，请参阅[AWS ParallelCluster 在无法访问互联网的单个子网中](aws-parallelcluster-in-a-single-public-subnet-no-internet-v3.md)。  
**从 AWS ParallelCluster 版本 3.3.0 开始，此备注不相关。**  
对于 3.3.0 之前的 AWS ParallelCluster 支持版本：  
如果设置`UseEc2Hostnames`为`true`，则使用 AWS ParallelCluster `prolog`和`epilog`脚本设置 Slurm 配置文件：  
+ 分配了每个作业后，`prolog` 用于向计算节点上的 `/etc/hosts` 中添加节点信息。
+ `epilog` 用于清理 `prolog` 写入的内容。
要添加自定义 `epilog` 或 `prolog` 脚本，请分别将其添加到 `/opt/slurm/etc/pcluster/prolog.d/` 或 `/opt/slurm/etc/pcluster/epilog.d/` 文件夹。
[更新策略：如果更改此设置，则不允许更新。](using-pcluster-update-cluster-v3.md#update-policy-fail-v3)