

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

# 公平份额调度策略
公平份额调度策略

 AWS Batch 调度器评估何时、何地以及如何运行提交到作业队列的作业。如果您在创建作业队列时未指定调度策略，则 AWS Batch 作业调度器默认为先进先出 (FIFO) 策略。FIFO 策略可能会导致重要的工作“滞留”在之前提交的工作之后。通过指定不同的调度策略，您可以根据自己的特定需求分配计算资源。

**注意**  
如果要安排作业的特定运行顺序，请使用中的`[dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html#Batch-SubmitJob-request-dependsOn)`参数[SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)来指定每个作业的依赖关系。

如果您创建了调度策略并将其附加到作业队列，则公平份额调度将处于开启状态。如果作业队列有调度策略，则调度策略决定作业的运行顺序。有关更多信息，请参阅 [使用调度策略分配份额标识符](scheduling-policies.md)。

**Topics**
+ [

# 使用份额标识符标识工作负载
](share-identifiers.md)
+ [

# 使用调度策略分配份额标识符
](scheduling-policies.md)
+ [

# 使用公平份额调度来帮助调度作业
](fair-share-scheduling.md)
+ [

# 教程：创建公平分享计划政策
](create-scheduling-policy.md)
+ [

# 参考：公平份额调度策略模板
](scheduling-policy-template.md)

# 使用份额标识符标识工作负载
使用份额标识符

您可以使用份额标识符来标记作业并区分用户和工作负载。 AWS Batch 调度器使用`(T * weightFactor)`公式跟踪每个共享标识符的使用情况，其中 *`T`*vCPU 使用率随时间变化而变化。调度器从份额标识符中挑选使用率最低的作业。您可以使用份额标识符而不将其覆盖。

**注意**  
份额标识符在作业队列中是唯一的，并且不会在作业队列中汇总。

您可以设置公平份额调度优先级，根据份额标识符配置作业的运行顺序。具有较高调度优先级的作业优先调度。如果您未指定公平份额调度策略，则提交到该作业队列的所有作业都将按照 FIFO 顺序进行调度。您不能在提交作业时指定份额标识符或公平份额调度优先级。

**注意**  
除非明确覆盖，否则附加的计算资源将在所有份额标识符之间平均分配。

# 使用调度策略分配份额标识符
使用计划策略

您可以使用公平共享调度策略来配置如何在用户或工作负载之间分配作业队列中的计算资源。使用公平共享计划策略，您可以为工作负载或用户分配不同的共享标识符。 AWS Batch 为每个共享标识符分配一段时间内可用资源总量的百分比。

公平份额百分比是使用 `shareDecaySeconds` 和 `shareDistribution` 值计算的。您可以通过为策略分配份额衰减时间来增加公平份额分析的时间。增加时间会增加时间的权重，而减少定义的权重。您可以通过指定计算预留来保留计算资源，以备非活动份额标识符使用。有关更多信息，请参阅 [SchedulingPolicyDetail](https://docs.aws.amazon.com/batch/latest/APIReference/API_SchedulingPolicyDetail.html)。

# 使用公平份额调度来帮助调度作业
使用公平份额调度

公平份额调度提供了一组控件来帮助调度作业。有关调度策略参数的更多信息，请参阅 [SchedulingPolicyDetail](https://docs.aws.amazon.com/batch/latest/APIReference/API_SchedulingPolicyDetail.html)。
+ **股票衰减秒 —** AWS Batch 调度程序用于计算每个股票标识符的公平份额百分比的时间段（以秒为单位）。值为零表示仅测量当前使用量。更长的衰减时间会增加时间的权重。
**注意**  
衰减时间段的计算公式为：*`shareDecaySeconds + OrderMinutes`* 其中 *`OrderMinutes `* 是顺序中的时间（以分钟为单位）。
+ **计算预留** - 防止单个份额标识符中的作业耗尽附加到作业队列的所有资源。预留比为 `(computeReservation/100)^ActiveFairShares`，其中 `ActiveFairShares` 是活动份额标识符的数量。
**注意**  
如果份额标识符的作业处于`SUBMITTED`、`PENDING`、`RUNNABLE`、`STARTING` 或 `RUNNING` 状态，则该标识符被视为有效份额标识符。衰减期限到期后，份额标识符被视为非活动状态。
+ **权重系数 -** 份额标识符的权重系数。默认值是 1。较低的值允许份额标识符中的作业运行，或者为份额标识符提供额外的运行时间。例如，使用权重因子为 0.125（1/8）的共享标识符的作业获得的计算资源是使用权重因子为 1 的共享标识符的作业的 8 倍。
**注意**  
只有在需要更新默认权重系数 1 时才需要定义此属性。

当作业队列处于活动状态并处理作业时，您可以通过作业队列快照查看前 100 个 `RUNNABLE` 作业的列表。有关更多信息，请参阅 [在中查看作业队列 AWS Batch](job_queue_viewing_status.md)。

# 教程：创建公平分享计划政策


在创建带有计划策略的任务队列之前，您必须创建计划策略。创建公平份额调度策略时，您可以将一个或多个份额标识符或份额标识符前缀与队列的权重相关联，还可以选择为策略分配衰减周期和计算预留。

**创建公平分享计划政策**

1. 打开 AWS Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 从导航栏中，选择要使用的区域。

1. 在导航窗格中，选择**创建策略**和**创建**。

1. 对于 **Name**，请为您的计划策略输入唯一的名称。最多能包含 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. 选择**提交**以完成并创建您的计划策略。

# 参考：公平份额调度策略模板


空的公平分享计划策略模板如下所示。您可以使用此模板来创建您的日程安排策略，然后将其保存到文件中并与该 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": ""
    }
}
```