View a markdown version of this page

追蹤服務任務容量使用率 - AWS Batch

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

追蹤服務任務容量使用率

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

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

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

  2. 依狀態列出任務,例如 SCHEDULEDRUNNING(ListServiceJobs)。

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

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

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

  2. 檢視每個共用使用率 (GetJobQueueSnapshot)。

  3. 依狀態列出主動影響使用率的任務和共用,例如 SCHEDULEDRUNNING(ListServiceJobs)。

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

以下各節會詳細說明每個步驟。

如需有關追蹤 ECS、EKS 和 Fargate 運算任務容量使用率的資訊,請參閱 追蹤運算任務容量使用率

檢查佇列使用率

GetJobQueueSnapshot 回應中的 queueUtilization 欄位提供point-in-time檢視。容量是以服務任務的執行個體計數來測量。

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

檢視容量使用率 (AWS CLI)

使用 get-job-queue-snapshot 命令擷取任務佇列容量使用率的快照。

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任務,以及任務最早到達該位置的時間。

檢視每個共用使用率

對於具有公平共用或配額管理排程政策的任務佇列, 的queueUtilization回應GetJobQueueSnapshot包含使用率物件,其topCapacityUtilization陣列會依耗用量列出最佳作用中共用。

此資訊可協助您:

  • 識別哪些共用耗用最多資源。

  • 驗證資源是否如預期分散至共用。

  • 偵測可能飽和或充分利用其配置的共用。

  • 決定是否調整排程政策組態。

如需公平共用排程政策的詳細資訊,請參閱 公平共用排程政策

如需配額共享的詳細資訊,請參閱 配額共享

依狀態和共用列出服務任務

在您識別整體佇列和共享使用率之後,請使用 ListServiceJobs API 操作來尋找主動貢獻使用率的服務任務。您可以依任務狀態進行篩選,以查看處於其他狀態的 RUNNINGSCHEDULED或 任務。對於具有公平共用或配額管理排程政策的佇列,您也可以依共用識別符進行篩選,將結果縮小至特定共用。

注意

SHARE_IDENTIFIERQUOTA_SHARE_NAME篩選條件是唯一可與 jobStatus 參數結合的篩選條件。當您使用其他篩選條件時,會忽略 jobStatus 參數。

列出服務任務 (AWS CLI)

使用 list-service-jobs 命令搭配 --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 物件包含您可用來從目標服務取得其他詳細資訊的服務資源識別符。

檢查特定服務任務

識別感興趣的服務任務之後,請使用 DescribeServiceJob操作來取得任務的完整資訊,包括其目前狀態、服務資源識別符和詳細的嘗試資訊。

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

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

此命令會傳回任務的完整資訊,包括:

  • 任務 ARN 和目前狀態

  • 服務資源識別符 (例如 SageMaker Training 任務 ARN)

  • 排程優先順序和重試組態

  • 包含原始服務參數的服務請求承載

  • 包含開始和停止時間的詳細嘗試資訊

  • 來自目標服務的狀態訊息

檢查基礎 SageMaker 訓練任務

透過 監控 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 任務狀態則提供訓練程序的服務特定詳細資訊。