

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

# 跟踪服务作业容量利用率
<a name="track-capacity-utilization-service-jobs"></a>

Amazon Batch 提供了多个 API 操作，您可以一起使用这些操作来跟踪队列中服务作业的容量利用率。监控工作流程取决于附加到作业队列的调度策略的类型。

对于使用*先进先出 (FIFO) 调*度策略的作业队列：

1. 检查队列总利用率 (`GetJobQueueSnapshot`)。

1. 按状态列出作业，例如`SCHEDULED`和 `RUNNING` (`ListServiceJobs`)。

1. 检查任何给定的工作 (`DescribeServiceJob`)。

对于使用*公平共享 (FSS) 或*配额管理 (Q* M) 调*度策略的任务队列：

1. 检查队列总利用率 (`GetJobQueueSnapshot`)。

1. 查看每股利用率 (`GetJobQueueSnapshot`)。

1. 按状态和共享列出积极提高利用率的作业，例如`SCHEDULED`和 `RUNNING` (`ListServiceJobs`)。

1. 检查任何给定的工作 (`DescribeServiceJob`)。

以下各节将详细介绍每个步骤。

有关跟踪 ECS、EKS 和 Fargate 计算任务的容量利用率的信息，请参阅。[跟踪计算任务容量利用率](track-capacity-utilization-compute-jobs.md)

**Topics**
+ [检查队列利用率](#capacity-utilization-snapshots-service)
+ [查看每股利用率](#share-utilization-monitoring-service)
+ [按状态和共享列出服务作业](#list-service-jobs-by-share)
+ [检查特定的服务作业](#examine-service-job)

## 检查队列利用率
<a name="capacity-utilization-snapshots-service"></a>

[https://docs.amazonaws.cn/batch/latest/APIReference/API_GetJobQueueSnapshot.html](https://docs.amazonaws.cn/batch/latest/APIReference/API_GetJobQueueSnapshot.html)响应中的`queueUtilization`字段提供从队列调度的任务消耗了多少计算容量的 point-in-time视图。容量以服务作业的实例数来衡量。

对于使用公平共享或配额管理调度策略的任务队列，响应还包括每股明细，因此您可以查看容量在共享之间的分布情况。有关更多信息，请参阅 [查看每股利用率](#share-utilization-monitoring-service)。

### 查看容量利用率 (Amazon CLI)
<a name="capacity-snapshots-service-cli"></a>

使用[get-job-queue-snapshot](https://docs.amazonaws.cn/cli/latest/reference/batch/get-job-queue-snapshot.html)命令检索作业队列的容量利用率快照。

```
aws batch get-job-queue-snapshot \
    --job-queue my-job-queue
```

根据附加到任务队列的调度策略，响应会有所不同。选择您的计划策略类型的选项卡以查看示例响应。

------
#### [ First-in, first-out (FIFO) ]

以下是 FIFO 任务队列的示例响应。由于 FIFO 队列不使用调度策略，因此响应不包括每共享利用率。

```
{
    "frontOfQueue": {
        "jobs": [],
        "lastUpdatedAt": 1700000000000
    },
    "queueUtilization": {
        "totalCapacityUsage": [
            {
                "capacityUnit": "ml.m5.large",
                "quantity": 9.0
            }
        ],
        "lastUpdatedAt": 1700000000000
    }
}
```

在此示例中，队列在所有已调度任务中总共消耗 9 个实例。

------
#### [ Fair-share scheduling (FSS) ]

以下是公平共享任务队列的响应示例。该`queueUtilization`对象包含队列中所有已调度任务消耗的总容量的 point-in-time快照，以及每个共享的明细。

```
{
    "frontOfQueue": {
        "jobs": [],
        "lastUpdatedAt": 1700000000000
    },
    "queueUtilization": {
        "totalCapacityUsage": [
            {
                "capacityUnit": "NUM_INSTANCES",
                "quantity": 9.0
            }
        ],
        "fairshareUtilization": {
            "activeShareCount": 2,
            "topCapacityUtilization": [
                {
                    "shareIdentifier": "team-a",
                    "capacityUsage": [
                        {
                            "capacityUnit": "NUM_INSTANCES",
                            "quantity": 5.0
                        }
                    ]
                },
                {
                    "shareIdentifier": "team-b",
                    "capacityUsage": [
                        {
                            "capacityUnit": "NUM_INSTANCES",
                            "quantity": 4.0
                        }
                    ]
                }
            ]
        },
        "lastUpdatedAt": 1700000000000
    }
}
```

在此示例中，该`totalCapacityUsage`字段显示队列总共消耗 9 个实例。该`fairshareUtilization`对象显示每股明细。该共享`team-a`消耗 5 个实例，共享`team-b`消耗 4 个实例。

------
#### [ Quota management (QM) ]

以下是配额管理任务队列的响应示例。该`queueUtilization`对象包含队列中所有已调度任务消耗的总容量的 point-in-time快照以及 per-quota-share明细表。该`frontOfQuotaShares`对象显示每个配额`RUNNABLE`份额的第一个任务。

```
{
    "frontOfQueue": {
        "jobs": [],
        "lastUpdatedAt": 1700000000000
    },
    "frontOfQuotaShares": {
        "quotaShares": {
            "team-a-share": [],
            "team-b-share": []
        },
        "lastUpdatedAt": 1700000000000
    },
    "queueUtilization": {
        "totalCapacityUsage": [
            {
                "capacityUnit": "ml.m5.large",
                "quantity": 9.0
            }
        ],
        "quotaShareUtilization": {
            "topCapacityUtilization": [
                {
                    "quotaShareName": "team-a-share",
                    "capacityUsage": [
                        {
                            "capacityUnit": "ml.m5.large",
                            "quantity": 5.0
                        }
                    ]
                },
                {
                    "quotaShareName": "team-b-share",
                    "capacityUsage": [
                        {
                            "capacityUnit": "ml.m5.large",
                            "quantity": 4.0
                        }
                    ]
                }
            ]
        },
        "lastUpdatedAt": 1700000000000
    }
}
```

在此示例中，该`totalCapacityUsage`字段显示队列总共消耗 9 个实例。该`quotaShareUtilization`物体显示了 per-quota-share细分。配额份额`team-a-share`消耗 5 个实例，配额份额`team-b-share`消耗 4 个实例。该`frontOfQuotaShares`对象显示每个配额份额的第一份`RUNNABLE`工作，以及该任务到达该职位的最早时间。

------

## 查看每股利用率
<a name="share-utilization-monitoring-service"></a>

对于采用公平共享或配额管理调度策略的任务队列，来自的`queueUtilization`响应`GetJobQueueSnapshot`包括一个利用率对象，其`topCapacityUtilization`数组列出了按消耗量列出排名靠前的活跃份额。

此信息可以帮助您：
+ 确定哪些共享消耗的资源最多。
+ 验证资源是否按预期分布在共享中。
+ 检测可能已饱和或未充分利用其配置的股票。
+ 确定是否调整您的日程安排策略配置。

有关公平分配计划政策的更多信息，请参阅。[公平份额调度策略](job_scheduling.md)

有关配额份额的更多信息，请参阅[配额份额](quota-shares.md)。

## 按状态和共享列出服务作业
<a name="list-service-jobs-by-share"></a>

确定总体队列和每共享利用率后，使用 [https://docs.amazonaws.cn/batch/latest/APIReference/API_ListServiceJobs.html](https://docs.amazonaws.cn/batch/latest/APIReference/API_ListServiceJobs.html)API 操作查找积极提高利用率的服务作业。您可以按作业状态进行筛选，以查看处于`RUNNING``SCHEDULED`、或处于其他状态的作业。对于采用公平共享或配额管理计划策略的队列，您也可以按份额标识符进行筛选，将结果缩小到特定份额。

**注意**  
`SHARE_IDENTIFIER`和`QUOTA_SHARE_NAME`过滤器是唯一可以与`jobStatus`参数组合的过滤器。使用其他过滤器时，该`jobStatus`参数将被忽略。

### 列出服务作业 (Amazon CLI)
<a name="list-service-jobs-by-share-cli"></a>

使用带`--job-status`参数的[list-service-jobs](https://docs.amazonaws.cn/cli/latest/reference/batch/list-service-jobs.html)命令按状态筛选。

查看队列中正在运行的服务作业：

```
aws batch list-service-jobs \
    --job-queue my-job-queue \
    --job-status RUNNING
```

对于采用公平共享调度策略的队列，请使用带的`--filters`参数列`SHARE_IDENTIFIER`出特定共享的作业。对于采用配额管理调度策略的队列，使用列`QUOTA_SHARE_NAME`出特定配额份额的作业。当您确定容量消耗较高的份额并想查看哪些作业负责时，这很有用。

仅列出公平共享队列中共享的`RUNNING`服务作业：

```
aws batch list-service-jobs \
    --job-queue my-job-queue \
    --job-status RUNNING \
    --filters name=SHARE_IDENTIFIER,values="team-a"
```

对于采用配额管理调度策略的队列，请使用筛选器：`QUOTA_SHARE_NAME`

```
aws batch list-service-jobs \
    --job-queue my-job-queue \
    --job-status RUNNING \
    --filters name=QUOTA_SHARE_NAME,values="my-quota-share"
```

以下是在公平共享队列中列出按共享标识符筛选的正在运行的服务作业的响应示例。

```
{
    "jobSummaryList": [
        {
            "jobArn": "arn:aws:batch:us-east-1:123456789012:service-job/a4d6c728-8ee8-4c65-8e2a-9a5e8f4b7c3d",
            "jobId": "a4d6c728-8ee8-4c65-8e2a-9a5e8f4b7c3d",
            "jobName": "my-training-job",
            "serviceJobType": "SAGEMAKER_TRAINING",
            "status": "RUNNING",
            "shareIdentifier": "team-a",
            "createdAt": 1700000000000,
            "scheduledAt": 1700000060000,
            "startedAt": 1700000120000,
            "capacityUsage": [
                {
                    "capacityUnit": "ml.m5.large",
                    "quantity": 5.0
                }
            ],
            "latestAttempt": {
                "serviceResourceId": {
                    "name": "TrainingJobArn",
                    "value": "arn:aws:sagemaker:us-east-1:123456789012:training-job/my-training-job"
                }
            }
        }
    ]
}
```

在此示例中，响应包括显示任务属于`team-a`共享的`shareIdentifier`字段，以及显示该任务消耗 5 个`ml.m5.large`实例的`capacityUsage`数组。该`latestAttempt`对象包含服务资源标识符，您可以使用该标识符从目标服务获取更多详细信息。

## 检查特定的服务作业
<a name="examine-service-job"></a>

确定感兴趣的服务作业后，使用该[https://docs.amazonaws.cn/batch/latest/APIReference/API_DescribeServiceJob.html](https://docs.amazonaws.cn/batch/latest/APIReference/API_DescribeServiceJob.html)操作获取有关该任务的全面信息，包括其当前状态、服务资源标识符和详细的尝试信息。

查看有关特定服务任务的详细信息：

```
aws batch describe-service-job \
    --job-id a4d6c728-8ee8-4c65-8e2a-9a5e8f4b7c3d
```

此命令会返回有关此作业的全面信息，包括：
+ 作业 ARN 和当前状态
+ 服务资源标识符（例如 SageMaker 训练作业 ARN）
+ 调度优先级和重试配置
+ 包含原始服务参数的服务请求有效载荷
+ 详细尝试信息，包括启动和停止时间
+ 来自目标服务的状态消息

### 检查基础 SageMaker 训练作业
<a name="track-sagemaker-training-jobs"></a>

通过监控 SageMaker 训练作业时 Amazon Batch，您可以访问 Amazon Batch 作业信息和基础 SageMaker 培训作业详细信息。

任务详情中的服务资源标识符包含 SageMaker 训练作业 ARN：

```
{
    "latestAttempt": {
        "serviceResourceId": {
            "name": "TrainingJobArn",
            "value": "arn:aws:sagemaker:us-east-1:123456789012:training-job/my-training-job"
        }
    }
}
```

您可以使用此 ARN 直接从以下地址获取更多详情： SageMaker

```
aws sagemaker describe-training-job \
    --training-job-name my-training-job
```

通过检查 Amazon Batch 状态和 SageMaker 训练作业状态来监控作业进度。 Amazon Batch 作业状态显示整个作业生命周期，而 SageMaker 训练作业状态则提供有关训练过程的特定于服务的详细信息。