

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

# 为作业设置资源限制
<a name="build-job-limits"></a>

提交到 Deadline Cloud 的作业可能取决于多个作业之间共享的资源。例如，对于特定资源，农场的工人人数可能多于浮动许可证。或者，共享文件服务器可能只能同时向有限数量的工作人员提供数据。在某些情况下，一个或多个作业可能会占用所有这些资源，从而在新员工开始工作时由于资源不可用而导致错误。

为了帮助解决这个问题，你可以对这些受*限*的资源使用限制。Deadline Cloud 考虑了受限资源的可用性，并使用这些信息来确保在新员工启动时资源可用，从而降低由于资源不可用而导致工作失败的可能性。

为整个服务器场创建了限制。提交到队列的作业只能获得与队列关联的限制。如果您为与队列无关的作业指定限制，则该作业不兼容且无法运行。

要使用限制，您 
+ [创建限制](job-limit-create.md)
+ [关联限制和队列](job-limit-associate.md)
+ [提交需要限制的职位](job-limit-job.md)

**注意**  
如果您在与限制无关的队列中运行一个资源受限的作业，则该作业可能会消耗所有资源。如果您的资源受限，请确保使用该资源的队列中作业中的所有步骤都与限制相关联。

对于在服务器场中定义的限制、与队列关联的限制以及在作业中指定的限制，可能会发生以下四种情况之一：
+ 如果您创建了限制，将其与队列关联并在作业的模板中指定了限制，则该作业将运行并仅使用限制中定义的资源。
+ 如果您创建了限制，在作业模板中指定该限制，但不要将限制与队列相关联，则该作业将被标记为不兼容且无法运行。
+ 如果您创建了限制，请勿将其与队列关联，也未在作业模板中指定限制，则作业会运行，但不会使用该限制。
+ 如果您根本不使用限制，则作业就会运行。

如果您将限制关联到多个队列，则这些队列将共享受该限制约束的资源。例如，如果您创建的限制为 100，而一个队列使用 60 个资源，则其他队列只能使用 40 个资源。资源被释放后，任务可以从任何队列中获取该资源。

Deadline Cloud 提供了两个AWS CloudFormation指标来帮助您监控限额提供的资源。您可以监控当前使用的资源数量以及限制中可用的最大资源数量。有关更多信息，请参阅 De *adline Cloud 开发者指南*中的[资源限制指标](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/cloudwatch-metrics.html#cloudwatch-metrics-limits)。

您可以对作业模板中的作业步骤应用限制。当您在步骤的`amounts`部分中指定限制的金额要求名称，并且与任务队列关联的限制与该限制关联时，为该步骤安排的任务将受到资源限制的限制。`hostRequirements` `amountRequirementName`

如果某个步骤需要的资源受到达到限制的限制，则该步骤中的任务将不会由其他工作人员接管。

您可以对一个任务步骤应用多个限制。例如，如果该步骤使用两个不同的软件许可证，则可以为每个许可证应用单独的限制。如果一个步骤需要两个限制，并且已达到其中一个资源的限制，则在资源可用之前，该步骤中的任务不会被其他工作人员接管。

## 停止和删除限制
<a name="job-limit-stop-delete"></a>

当您停止或删除队列与限制之间的关联时，使用该限制的作业会停止从需要此限制的步骤中调度任务，并阻止为步骤创建新会话。

处于 READY 状态的任务仍处于就绪状态，任务会自动恢复，队列和限制之间的关联再次变为活动状态。您无需重新排队任何作业。

停止或删除队列与限制之间的关联时，在如何停止运行任务方面有两种选择：
+ 停止和取消任务 — 会话达到限制的工作人员会取消所有任务。
+ 停止并完成正在运行的任务 — 会话达到限制的工作人员完成任务。

使用控制台删除限制时，工作人员首先会立即停止运行任务，或者最终在任务完成后停止运行。删除关联后，会发生以下情况：
+ 需要限制的步骤标记为 “不兼容”。
+ 包含这些步骤的整个任务都将被取消，包括不需要限制的步骤。
+ 该作业被标记为不兼容。

如果与限制关联的队列的关联队列具有与限制的数量要求名称相匹配的队列，则该队列将继续处理具有指定限制的任务。

# 创建限制
<a name="job-limit-create"></a>

您可以使用 Deadline Cloud 控制台或 Deadline C [loud API 中的CreateLimit 操作](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateLimit.html)来创建限制。限制是为服务器场定义的，但与队列相关联。创建限制后，您可以将其与一个或多个队列关联。

**要创建限制**

1. 从 Deadline Clou [d 控制台（Deadline Cloud 控制台）控制台](https://console.aws.amazon.com/deadlinecloud/home)中，选择要为其创建队列的场。

1. 选择要添加限制的场，选择 “**限制**” 选项卡，然后选择 “**创建限制**”。

1. 提供限制的详细信息。**金额要求名称**是作业模板中用来标识限额的名称。它必须以前缀开头，**amount.**后跟金额名称。金额要求名称在与限额关联的队列中必须是唯一的。

1. 如果您选择 “**设置最大数量**”，则即该限制允许的资源总数。如果选择 “**无最大数量**”，则资源使用量不受限制。即使资源使用不受限制，也会发布 `CurrentCount` Amazon CloudWatch 指标，以便您可以跟踪使用情况。有关更多信息，请参阅 De *adline Cloud 开发者指南*中的[CloudWatch指标](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/cloudwatch-metrics.html)。

1. 如果您已经知道应该使用限制的队列，则可以立即选择它们。您无需关联队列即可创建限制。

1. 选择 “**创建限制**”。

# 关联限制和队列
<a name="job-limit-associate"></a>

创建限制后，您可以将一个或多个队列与限制相关联。只有与限制关联的队列才使用限制中指定的值。

您可以使用 Deadline Cloud 控制台或 Deadline Cloud [API 中的CreateQueueLimitAssociation 操作创建与队列的](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateQueueLimitAssociation.html)关联。

**将队列与限制相关联**

1. 从 Deadline Cl [oud 控制台（Deadline Cloud 控制台）控制台](https://console.aws.amazon.com/deadlinecloud/home)中，选择要将限制与队列关联的场。

1. 选择 “**限制**” 选项卡，选择要与队列关联的限制，然后选择 “**编辑限制”**。

1. 在**关联队列**部分中，选择要与限制关联的队列。

1. 选择**保存更改**。

# 提交需要限制的职位
<a name="job-limit-job"></a>

您可以通过将其指定为作业或作业步骤的主机要求来应用限制。如果您未在步骤中指定限制，并且该步骤使用关联的资源，则该步骤的使用量不会计入计划作业时的限制。

某些 Deadline Cloud 提交者允许您设置主机要求。您可以在提交者中指定限额的金额要求名称以应用限额。

如果您的提交者不支持添加主持人要求，您也可以通过编辑职位的作业模板来应用限制。

**对任务捆绑包中的任务步骤应用限制**

1. 使用文本编辑器打开作业模板。作业模板位于作业的作业捆绑包目录中。有关更多信息，请参阅 De *adline Cloud 开发者指南*中的 [Job 捆绑包](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/build-job-bundle.html)。

1. 找到要应用限制的步骤的步骤定义。

1. 将以下内容添加到步骤定义中。*amount.name*替换为限额的金额要求名称。对于典型用法，应将该`min`值设置为 1。

------
#### [ YAML ]

   ```
     hostRequirements:
       amounts:
       - name: amount.name
         min: 1
   ```

------
#### [ JSON ]

   ```
   "hostRequirements": {
       "amounts": [
           {
               "name": "amount.name",
               "min": "1"
           }
       }
   }
   ```

------

   您可以按如下方式向任务步骤添加多个限制。*amount.name\$12*用限额的金额要求名称替换*amount.name\$11*和。

------
#### [ YAML ]

   ```
     hostRequirements:
       amounts:
       - name: amount.name_1
         min: 1
       - name: amount.name_2
         min: 1
   ```

------
#### [ JSON ]

   ```
   "hostRequirements": {
       "amounts": [
           {
               "name": "amount.name_1",
               "min": "1"
           },
           {
               "name": "amount.name_2",
               "min": "1"
           }
       }
   }
   ```

------

1. 保存对作业模板的更改。