

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

# 公平共用排程政策
<a name="job_scheduling"></a>

 AWS Batch 排程器會評估何時、何處以及如何執行提交至任務佇列的任務。如果您在建立任務佇列時未指定排程政策， AWS Batch 任務排程器會預設為先進先出 (FIFO) 策略。FIFO 策略可能會導致重要的任務落後於先前提交的任務。透過指定不同的排程政策，您可以根據您的特定需求配置運算資源。

**注意**  
如果您想要排程任務執行的特定順序，請使用 [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html) 中的 `[dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html#Batch-SubmitJob-request-dependsOn)` 參數來指定每個任務的相依性。

如果您建立排程政策並將其連接到任務佇列，則會開啟公平共用排程。如果任務佇列具有排程政策，則排程政策會決定任務執行的順序。如需詳細資訊，請參閱[使用公平共用排程政策來指派共用識別符](scheduling-policies.md)。

**Topics**
+ [使用共用識別符來識別工作負載](share-identifiers.md)
+ [使用公平共用排程政策來指派共用識別符](scheduling-policies.md)
+ [使用公平共用排程來協助排程任務](fair-share-scheduling.md)
+ [教學課程：建立公平共用排程政策](create-scheduling-policy.md)
+ [參考：公平共用排程政策範本](scheduling-policy-template.md)

# 使用共用識別符來識別工作負載
<a name="share-identifiers"></a>

您可以使用共用識別符來標記任務，並區分使用者和工作負載。 AWS Batch 排程器會使用 `(T * weightFactor)`公式追蹤每個共用識別符的用量，其中 *`T`* 是一段時間內的 vCPU 用量。排程器會從共用識別符挑選使用量最低的任務。您可以使用共用識別符，而不覆寫它。

**注意**  
共用識別符在任務佇列中是唯一的，不會跨任務佇列彙總。

您可以設定公平共用排程優先順序，以設定任務在共用識別符上執行的順序。排程優先順序較高的任務會先排程。如果您未指定公平共用排程政策，則提交至任務佇列的所有任務都會以 FIFO 順序排程。當您提交任務時，您無法指定共用識別符或公平共用排程優先順序。

**注意**  
除非明確覆寫，否則連接運算資源會在所有共用識別符中平均分配。

# 使用公平共用排程政策來指派共用識別符
<a name="scheduling-policies"></a>

您可以使用公平共用排程政策來設定如何在使用者或工作負載之間配置任務佇列中的運算資源。使用公平共用排程政策，您可以將不同的共用識別符指派給工作負載或使用者。 會 AWS Batch 為每個共用識別符指派一段時間內可用資源總數的百分比。

公平共用百分比是使用 `shareDecaySeconds`和 `shareDistribution`值計算。您可以透過將共用衰減時間指派給政策，將時間新增至公平共用分析。新增時間可增加時間的權重，減少定義的權重。您可以指定運算保留，為未處於作用中狀態的共用識別符保留運算資源。如需詳細資訊，請參閱 [SchedulingPolicyDetail](https://docs.aws.amazon.com/batch/latest/APIReference/API_SchedulingPolicyDetail.html)。

# 使用公平共用排程來協助排程任務
<a name="fair-share-scheduling"></a>

公平共用排程提供一組控制項，以協助排程任務。如需排程政策參數的詳細資訊，請參閱 [SchedulingPolicyDetail](https://docs.aws.amazon.com/batch/latest/APIReference/API_SchedulingPolicyDetail.html)。
+ **共用衰減秒數 –** AWS Batch 排程器用來計算每個共用識別符公平共用百分比的期間 （以秒為單位）。值為零表示只會測量目前的用量。較長的衰減時間可為時間提供更多權重。
**注意**  
衰減的期間計算方式為：*`shareDecaySeconds + OrderMinutes`*其中 *`OrderMinutes `*是以分鐘為單位的時間。
+ **運算保留 –** 防止單一共用識別符中的任務用完連接至任務佇列的所有資源。預留比率是 `(computeReservation/100)^ActiveFairShares`，其中 `ActiveFairShares`是作用中共享識別符的數量。
**注意**  
如果共用識別符的任務處於 `SUBMITTED`、`PENDING`、`STARTING`、 `RUNNABLE`或 `RUNNING` 狀態，則視為作用中的共用識別符。在衰減期間到期之後，共享識別符會被視為非作用中。
+ **權重因數 –** 共享識別符的權重因數。預設值為 1. 較低的值可讓共用識別符中的任務執行，或為共用識別符提供額外的執行時間。例如，使用權重因數為 0.125 (1/8) 之共用識別符的任務，會被指派為使用權重因數為 1 之共用識別符的任務運算資源的八倍。
**注意**  
只有在您需要更新預設權重因數為 1 時，才需要定義此屬性。

當任務佇列處於作用中狀態且正在處理任務時，您可以透過`RUNNABLE`任務佇列快照檢閱前 100 個任務的清單。如需詳細資訊，請參閱[在 中檢視任務佇列 AWS Batch](job_queue_viewing_status.md)。

# 教學課程：建立公平共用排程政策
<a name="create-scheduling-policy"></a>

您必須建立排程政策，才能使用排程政策建立任務佇列。當您建立公平共用排程政策時，您可以將一或多個共用識別符或共用識別符字首與佇列的權重建立關聯，並選擇性地將衰減期間和運算保留指派給政策。

**建立公平共用排程政策**

1. 在 https：//[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) 開啟 AWS Batch 主控台。

1. 從導覽列中選取要使用的「區域」。

1. 在導覽窗格中，選擇**排程政策**、**建立**。

1. 在**名稱**中，輸入排程政策的唯一名稱。可以包含最多可達 128 個字元 (大小寫)、數字、連字號和底線。

1. （選用） 針對**共用衰減秒**數，輸入公平共用排程政策的共用衰減時間的整數值。在排程任務時，較長的共用衰減時間將在較長的時間內使用更多的運算資源用量。這可以允許使用共用識別符的任務暫時使用比該共用識別符的權重更多的運算資源，如果該共用識別符最近未使用運算資源，則會允許該共用識別符。

1. （選用） 針對**運算保留**，輸入公平共用排程政策運算保留的整數值。運算保留將保留一些 vCPUs，以用於目前非作用中的共用識別符。

   預留比率是 `(computeReservation/100)^ActiveFairShares` *ActiveFairShares* 是作用中共享識別符的數量。

   例如，`computeReservation`值 50 表示如果只有一個共用識別符，則 AWS Batch 應該保留最大可用 VCPU 的 50%，如果有兩個共用識別符，則保留 25%，如果有三個共用識別符，則保留 12.5%。如果只有一個共用識別符，`computeReservation`則值為 25 表示 AWS Batch 應該保留最大可用 VCPU 的 25%，如果有兩個共用識別符，則保留 6.25%，如果有三個共用識別符，則保留 1.56%。

1. 在**共用屬性**區段中，您可以為要與公平共用排程政策建立關聯的每個共用識別符指定共用識別符和權重。

   1. 選擇**新增共用識別符**。

   1. 針對**共用識別符**，指定共用識別符。如果字串以「\$1」結尾，這將成為共享識別符字首，用於比對任務的共享識別符。排程政策中的所有共用識別符和共用識別符字首必須是唯一的且不能重疊。例如，您不能在相同的公平共用排程政策中具有共用識別符字首 'UserA\$1' 和共用識別符 'UserA1'。

   1. 針對**權重因**數，指定共用識別符的相對權重。預設值為 1.0。較低的值對於運算資源的優先順序較高。如果使用共用識別符字首，具有以字首開頭的共用識別符的任務將共用權重因素。這可有效地增加這些任務的權重因素，降低其個別優先順序，但維持共用識別符字首的相同權重因素。

1. （選用） 在**標籤**區段中，您可以指定要與排程政策建立關聯的每個標籤的索引鍵和值。如需詳細資訊，請參閱[標記您的 AWS Batch 資源](using-tags.md)。

1. 選擇**提交**以完成並建立排程政策。

# 參考：公平共用排程政策範本
<a name="scheduling-policy-template"></a>

空的公平共用排程政策範本如下所示。您可以使用此範本來建立排程政策，然後將其儲存至 檔案，並搭配 AWS CLI `--cli-input-json`選項使用。如需這些參數的詳細資訊，請參閱 *AWS Batch API 參考*中的 [CreateSchedulingPolicy](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateSchedulingPolicy.html)。

**注意**  
您可以使用下列 AWS CLI 命令產生任務佇列範本。  

```
$ aws batch create-scheduling-policy --generate-cli-skeleton
```

```
{
    "name": "",
    "fairsharePolicy": {
        "shareDecaySeconds": 0,
        "computeReservation": 0,
        "shareDistribution": [
            {
                "shareIdentifier": "",
                "weightFactor": 0.0
            }
        ]
    },
    "tags": {
        "KeyName": ""
    }
}
```