

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

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

AWS Batch 提供多個 API 操作，您可以一起用來追蹤佇列中服務任務的容量使用率。監控工作流程取決於連接到任務佇列的排程政策類型。

對於使用*先進先出 (FIFO) *排程政策的任務佇列：

1. 檢查總佇列使用率 (`GetJobQueueSnapshot`)。

1. 依狀態列出任務，例如 `SCHEDULED`和 `RUNNING`(`ListServiceJobs`)。

1. 檢查任何指定的任務 (`DescribeServiceJob`)。

對於使用*公平共用 (FSS)* 或*配額管理 (QM)* 排程政策的任務佇列：

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.aws.amazon.com/batch/latest/APIReference/API_GetJobQueueSnapshot.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_GetJobQueueSnapshot.html) 回應中的 `queueUtilization` 欄位提供point-in-time檢視。容量是以服務任務的執行個體計數來測量。

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

### 檢視容量使用率 (AWS CLI)
<a name="capacity-snapshots-service-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": "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.aws.amazon.com/batch/latest/APIReference/API_ListServiceJobs.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ListServiceJobs.html) API 操作來尋找主動貢獻使用率的服務任務。您可以依任務狀態進行篩選，以查看處於其他狀態的 `RUNNING`、 `SCHEDULED`或 任務。對於具有公平共用或配額管理排程政策的佇列，您也可以依共用識別符進行篩選，將結果縮小至特定共用。

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

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

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

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

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

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

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

此命令會傳回任務的完整資訊，包括：
+ 任務 ARN 和目前狀態
+ 服務資源識別符 （例如 SageMaker Training 任務 ARN)
+ 排程優先順序和重試組態
+ 包含原始服務參數的服務請求承載
+ 包含開始和停止時間的詳細嘗試資訊
+ 來自目標服務的狀態訊息

### 檢查基礎 SageMaker 訓練任務
<a name="track-sagemaker-training-jobs"></a>

透過 監控 SageMaker Training 任務時 AWS Batch，您可以同時存取 AWS Batch 任務資訊和基礎 SageMaker Training 任務詳細資訊。

任務詳細資訊中的服務資源識別符包含 SageMaker Training 任務 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}}
```

透過檢查 AWS Batch 狀態和 SageMaker Training 任務狀態來監控任務進度。 AWS Batch 任務狀態會顯示整體任務生命週期，而 SageMaker Training 任務狀態則提供訓練程序的服務特定詳細資訊。