

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

# 追蹤運算任務容量使用率
<a name="track-capacity-utilization-compute-jobs"></a>

AWS 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.aws.amazon.com/batch/latest/APIReference/API_GetJobQueueSnapshot.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_GetJobQueueSnapshot.html) 回應中的 `queueUtilization` 欄位提供point-in-time檢視。容量是以運算任務vCPUs 測量。

對於使用公平共用排程政策的任務佇列，回應也包含每個共用明細，以便您可以查看容量如何分散在共用中。如需詳細資訊，請參閱[檢視每個共用使用率](#share-utilization-monitoring-compute)。

### 檢視容量使用率 (AWS CLI)
<a name="capacity-snapshots-compute-cli"></a>

使用 [get-job-queue-snapshot](https://docs.aws.amazon.com/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
    }
}
```

在此範例中，佇列在所有分派的任務中總共耗用 96 vCPUs。

------
#### [ 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 vCPUs。`fairshareUtilization` 物件會顯示每個共用明細。共享`team-a`耗用 128 vCPUs，共享`team-b`耗用 64 vCPUs。

------

## 檢視每個共用使用率
<a name="share-utilization-monitoring-compute"></a>

對於具有公平共用排程政策的任務佇列， 的`queueUtilization`回應`GetJobQueueSnapshot`包含具有陣列的`fairshareUtilization`物件，該`topCapacityUtilization`陣列會依耗用量列出最佳作用中共用。

此資訊可協助您：
+ 識別哪些共用耗用最多資源。
+ 驗證公平共用排程是否如預期分配資源。
+ 偵測可能飽和或充分利用其配置的共用。
+ 決定是否在排程政策中調整共享權重。

如需公平共用排程政策的詳細資訊，請參閱 [公平共用排程政策](job_scheduling.md)。

## 依狀態和共用列出運算任務
<a name="list-compute-jobs-by-share"></a>

在您識別整體佇列和每個共用使用率之後，請使用 [https://docs.aws.amazon.com/batch/latest/APIReference/API_ListJobs.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ListJobs.html) API 操作來尋找主動貢獻使用率的運算任務。您可以依任務狀態進行篩選，以查看處於其他狀態的 `RUNNING`、 `RUNNABLE`或 任務。對於具有公平共用排程政策的佇列，您也可以依共用識別符進行篩選，將結果縮小至特定共用。

**注意**  
`SHARE_IDENTIFIER` 篩選條件是唯一可與 `jobStatus` 參數結合的篩選條件。當您使用其他篩選條件時，會忽略 `jobStatus` 參數。

### 列出運算任務 (AWS CLI)
<a name="list-compute-jobs-by-share-cli"></a>

使用 [list-jobs](https://docs.aws.amazon.com/cli/latest/reference/batch/list-jobs.html) 命令搭配 `--job-status` 參數來依狀態篩選。

檢視佇列中正在執行的運算任務：

```
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.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html)操作來取得任務的完整資訊，包括其目前狀態、容器詳細資訊和資源組態。

檢視特定運算任務的詳細資訊：

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

此命令會傳回任務的完整資訊，包括：
+ 任務 ARN 和目前狀態
+ 容器組態和資源需求 (vCPUs和記憶體）
+ 任務定義和運算環境詳細資訊
+ 排程優先順序和重試組態
+ 包含開始和停止時間的詳細嘗試資訊
+ 存取容器日誌的日誌串流資訊