

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

# 跟踪计算任务容量利用率
<a name="track-capacity-utilization-compute-jobs"></a>

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

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

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

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

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

对于使用*公平共享 (FSS) 调*度策略的任务队列：

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

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

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

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

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

有关跟踪服务作业容量利用率的信息，请参阅[跟踪服务作业容量利用率](track-capacity-utilization-service-jobs.md)。

**Topics**
+ [检查队列利用率](#capacity-utilization-snapshots-compute)
+ [查看每股利用率](#share-utilization-monitoring-compute)
+ [按状态和份额列出计算作业](#list-compute-jobs-by-share)
+ [检查特定的计算作业](#examine-compute-job)

## 检查队列利用率
<a name="capacity-utilization-snapshots-compute"></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视图。计算作业的容量以 v CPUs 为单位进行测量。

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

### 查看容量利用率 (Amazon CLI)
<a name="capacity-snapshots-compute-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": "vCPU",
                "quantity": 96.0
            }
        ],
        "lastUpdatedAt": 1700000000000
    }
}
```

在此示例中，队列在CPUs 所有调度任务中总共消耗 96 v。

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

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

```
{
    "frontOfQueue": {
        "jobs": [],
        "lastUpdatedAt": 1700000000000
    },
    "queueUtilization": {
        "totalCapacityUsage": [
            {
                "capacityUnit": "vCPU",
                "quantity": 192.0
            }
        ],
        "fairshareUtilization": {
            "activeShareCount": 2,
            "topCapacityUtilization": [
                {
                    "shareIdentifier": "team-a",
                    "capacityUsage": [
                        {
                            "capacityUnit": "vCPU",
                            "quantity": 128.0
                        }
                    ]
                },
                {
                    "shareIdentifier": "team-b",
                    "capacityUsage": [
                        {
                            "capacityUnit": "vCPU",
                            "quantity": 64.0
                        }
                    ]
                }
            ]
        },
        "lastUpdatedAt": 1700000000000
    }
}
```

在此示例中，该`totalCapacityUsage`字段显示队列总共消耗 192 v CPUs。 该`fairshareUtilization`对象显示每股明细。该份额`team-a`消耗 128 vCPUs ，该份额`team-b`消耗 64 v。CPUs

------

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

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

此信息可以帮助您：
+ 确定哪些共享消耗的资源最多。
+ 验证公平共享计划是否按预期分配资源。
+ 检测可能已饱和或未充分利用其配置的股票。
+ 确定是否调整计划策略中的份额权重。

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

## 按状态和份额列出计算作业
<a name="list-compute-jobs-by-share"></a>

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

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

### 列出计算任务 (Amazon CLI)
<a name="list-compute-jobs-by-share-cli"></a>

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

查看队列中正在运行的计算作业：

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

查看等待调度的计算作业：

```
aws batch list-jobs \
    --job-queue my-job-queue \
    --job-status RUNNABLE
```

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

仅列出公平共享队列中共享的`RUNNING`计算任务：

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

以下是列出正在运行的计算作业的响应示例。

```
{
    "jobSummaryList": [
        {
            "jobArn": "arn:aws:batch:us-east-1:123456789012:job/b5e7d839-9ff9-5d76-9f3b-0b6f9g5c8e4f",
            "jobId": "b5e7d839-9ff9-5d76-9f3b-0b6f9g5c8e4f",
            "jobName": "my-data-processing-job",
            "status": "RUNNING",
            "shareIdentifier": "team-a",
            "createdAt": 1700000000000,
            "startedAt": 1700000120000,
            "capacityUsage": [
                {
                    "capacityUnit": "vCPU",
                    "quantity": 4.0
                }
            ],
            "container": {
                "exitCode": null
            },
            "jobDefinition": "arn:aws:batch:us-east-1:123456789012:job-definition/my-job-def:1"
        }
    ]
}
```

## 检查特定的计算作业
<a name="examine-compute-job"></a>

确定感兴趣的计算任务后，使用该[https://docs.amazonaws.cn/batch/latest/APIReference/API_DescribeJobs.html](https://docs.amazonaws.cn/batch/latest/APIReference/API_DescribeJobs.html)操作获取有关该任务的全面信息，包括其当前状态、容器详细信息和资源配置。

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

```
aws batch describe-jobs \
    --jobs b5e7d839-9ff9-5d76-9f3b-0b6f9g5c8e4f
```

此命令会返回有关此作业的全面信息，包括：
+ 作业 ARN 和当前状态
+ 容器配置和资源要求（v CPUs 和内存）
+ Job 定义和计算环境详情
+ 调度优先级和重试配置
+ 详细尝试信息，包括启动和停止时间
+ 用于访问容器日志的日志流信息