

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立任務的資源限制
<a name="build-job-limits"></a>

提交至 Deadline Cloud 的任務可能取決於多個任務之間共用的資源。例如，相較於浮動特定資源的授權，一個陣列可能有更多工作者。或者，共用檔案伺服器可能只能同時將資料提供給有限數量的工作者。在某些情況下，一或多個任務可以宣告所有這些資源，導致新工作者啟動時資源無法使用而造成錯誤。

為了協助解決此問題，您可以針對這些受限的資源使用*限制*。截止日期 雲端會考慮限制資源的可用性，並使用該資訊來確保資源在新工作者啟動時可用，以便任務因資源無法使用而失敗的可能性較低。

系統會為整個陣列建立限制。提交至佇列的任務只能取得與佇列相關聯的限制。如果您為未與佇列相關聯的任務指定限制，則該任務不相容且無法執行。

若要使用限制，您可以 
+ [建立限制](job-limit-create.md)
+ [關聯限制和佇列](job-limit-associate.md)
+ [提交需要限制的任務](job-limit-job.md)

**注意**  
如果您執行的任務在佇列中具有與限制無關的資源限制，則該任務可能會耗用所有資源。如果您有受限的資源，請確定佇列中使用該資源的任務中的所有步驟都與限制相關聯。

對於陣列中定義的限制、與佇列相關聯，以及在任務中指定的限制，可能會發生以下四種情況之一：
+ 如果您建立限制、將其與佇列建立關聯，並在任務的範本中指定限制，任務會執行並僅使用限制中定義的資源。
+ 如果您建立限制，請在任務範本中指定限制，但不要將限制與佇列建立關聯，任務會標記為不相容，且不會執行。
+ 如果您建立限制，請勿將其與佇列建立關聯，也不要在任務的範本中指定限制，任務會執行，但不會使用限制。
+ 如果您完全不使用限制，任務會執行。

如果您將限制與多個佇列建立關聯，佇列會共用限制限制的資源。例如，如果您建立限制為 100，且一個佇列使用 60 個資源，則其他佇列只能使用 40 個資源。釋出資源時，任務可以從任何佇列取得該資源。

Deadline Cloud 提供兩個AWS CloudFormation指標，協助您監控限制提供的資源。您可以監控目前使用中的資源數量，以及限制中可用的資源數量上限。如需詳細資訊，請參閱*《截止日期雲端開發人員指南*》中的[資源限制指標](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/cloudwatch-metrics.html#cloudwatch-metrics-limits)。

您可以將限制套用至任務範本中的任務步驟。當您在`hostRequirements`步驟的 `amounts`區段中指定限制的數量需求名稱，且具有相同限制與任務的佇列`amountRequirementName`相關聯時，為此步驟排程的任務會受到資源限制的限制。

如果步驟需要受限於達到限制的資源，則該步驟中的任務將不會由其他工作者取得。

您可以將多個限制套用至任務步驟。例如，如果步驟使用兩個不同的軟體授權，您可以為每個授權套用個別的限制。如果步驟需要兩個限制，並達到其中一個資源的限制，則在資源可用之前，該步驟中的任務將不會被其他工作者挑選。

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

當您停止或刪除佇列與限制之間的關聯時，使用限制的任務會從需要此限制的步驟停止排程任務，並封鎖為步驟建立新工作階段。

處於就緒狀態的任務會保持就緒狀態，且任務會自動繼續與佇列和限制之間的關聯，再次變為作用中。您不需要重新排入任何任務的佇列。

當您停止或刪除佇列與限制之間的關聯時，有兩種選擇可讓您停止執行中的任務：
+ 停止和取消任務 – 具有取得限制之工作階段的工作者會取消所有任務。
+ 停止並完成執行中的任務 – 具有取得限制之工作階段的工作者完成其任務。

當您使用主控台刪除限制時，工作者會先停止執行任務，或在任務完成時最終停止執行任務。刪除關聯時，會發生下列情況：
+ 需要限制的步驟標示為不相容。
+ 包含這些步驟的整個任務都會取消，包括不需要限制的步驟。
+ 任務標示為不相容。

如果與限制相關聯的佇列具有與限制數量需求名稱相符的機群功能相關聯的機群，則該機群將繼續處理具有指定限制的任務。

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

您可以使用截止日期雲端主控台或[截止日期雲端 API 中的 CreateLimit 操作](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateLimit.html)來建立限制。限制是針對陣列定義，但與佇列相關聯。建立限制之後，您可以將其與一或多個佇列建立關聯。

**建立限制**

1. 從截止日期雲端主控台 ([截止日期雲端主控台](https://console.aws.amazon.com/deadlinecloud/home)) 儀表板中，選取您要為其建立佇列的陣列。

1. 選擇要新增限制的陣列，選擇**限制**索引標籤，然後選擇**建立限制**。

1. 提供限制的詳細資訊。**金額需求名稱**是任務範本中用來識別限制的名稱。它必須以字首開頭，**amount.**後面接著金額名稱。在與限制相關聯的佇列中，數量需求名稱必須是唯一的。

1. 如果您選擇**設定最大數量**，即此限制允許的資源總數。如果您選擇**無最大數量**，則資源用量不受限制。即使資源用量不受限制，也會發出 `CurrentCount` Amazon CloudWatch 指標，以便您可以追蹤用量。如需詳細資訊，請參閱*《截止日期雲端開發人員指南*》中的 [CloudWatch 指標](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/cloudwatch-metrics.html)。

1. 如果您已經知道應使用限制的佇列，現在可以選擇它們。您不需要關聯佇列即可建立限制。

1. 選擇**建立限制**。

# 關聯限制和佇列
<a name="job-limit-associate"></a>

建立限制之後，您可以將一或多個佇列與限制建立關聯。只有與限制相關聯的佇列會使用限制中指定的值。

您可以使用截止日期雲端主控台或[截止日期雲端 API 中的 CreateQueueLimitAssociation 操作](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateQueueLimitAssociation.html)來建立與佇列的關聯。

**將佇列與限制建立關聯**

1. 從截止日期雲端主控台 ([截止日期雲端主控台](https://console.aws.amazon.com/deadlinecloud/home)) 儀表板中，選取您要將限制與佇列建立關聯的陣列。

1. 選擇**限制**索引標籤，選擇要與佇列建立關聯的限制，然後選擇**編輯限制**。

1. 在**關聯佇列**區段中，選擇要與限制建立關聯的佇列。

1. 選擇**儲存變更**。

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

您可以將限制指定為任務或任務步驟的主機需求，以套用限制。如果您未在步驟中指定限制，且該步驟使用相關聯的資源，則在排程任務時，該步驟的用量不會計入限制。

有些截止日期雲端提交者可讓您設定主機需求。您可以在提交者中指定限制的金額需求名稱，以套用限制。

如果您的提交者不支援新增主機需求，您也可以編輯任務的任務範本來套用限制。

**將限制套用至任務套件中的任務步驟**

1. 使用文字編輯器開啟任務的任務範本。任務範本位於任務的任務套件目錄中。如需詳細資訊，請參閱*《截止日期雲端開發人員指南*[》中的任務套件](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\$11* 和 *amount.name\$12* 取代為您限制的數量需求名稱。

------
#### [ 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. 將變更儲存至任務範本。