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 オブジェクトには、共有ごとの内訳が表示されます。共有は 5 つのインスタンスをteam-a消費し、共有は 4 つのインスタンスをteam-b消費します。

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内訳が表示されます。クォータ共有は 5 つのインスタンスをteam-a-share消費し、クォータ共有は 4 つのインスタンスをteam-b-share消費します。frontOfQuotaShares オブジェクトには、各クォータ共有の最初のRUNNABLEジョブと、ジョブがその位置に達した最も早い時刻が表示されます。

共有あたりの使用率を表示する

公平配分またはクォータ管理スケジューリングポリシーを持つジョブキューの場合、 からのqueueUtilizationレスポンスには、消費別に上位のアクティブな共有を一覧表示するtopCapacityUtilization配列を持つ使用率オブジェクトGetJobQueueSnapshotが含まれます。

この情報は、以下に役立ちます。

  • リソースを最も多く消費する共有を特定します。

  • リソースが想定どおりに共有に分散されていることを確認します。

  • 割り当てを飽和または十分に活用していない可能性のある共有を検出します。

  • スケジューリングポリシーの設定を調整するかどうかを決定します。

公平配分スケジューリングポリシーの詳細については、「」を参照してください公平配分スケジューリングポリシー

クォータ共有の詳細については、「」を参照してくださいクォータ共有

サービスジョブをステータス別および共有別に一覧表示する

キュー全体と共有ごとの使用率を特定したら、 ListServiceJobs API オペレーションを使用して、使用率に積極的に寄与しているサービスジョブを見つけます。ジョブステータスでフィルタリングしてRUNNING、、SCHEDULED、または別の状態のジョブを表示できます。公平配分またはクォータ管理スケジューリングポリシーを持つキューの場合、共有識別子でフィルタリングして結果を特定の共有に絞り込むこともできます。

注記

SHARE_IDENTIFIER および QUOTA_SHARE_NAMEフィルターは、 jobStatusパラメータと組み合わせることができる唯一のフィルターです。他のフィルターを使用すると、 jobStatusパラメータは無視されます。

サービスジョブを一覧表示する (AWS CLI)

listlist-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 トレーニングジョブ ARN など)

  • 優先度と再試行設定のスケジューリング

  • 元のサービスパラメータを含むサービスリクエストペイロード

  • 開始時刻と停止時刻を含む詳細な試行情報

  • ターゲットサービスからのステータスメッセージ

基盤となる SageMaker トレーニングジョブを調べる

を使用して SageMaker トレーニングジョブをモニタリングする場合 AWS Batch、 AWS 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

AWS Batch ステータスと SageMaker Training ジョブのステータスの両方を確認して、ジョブの進行状況をモニタリングします。 AWS Batch ジョブのステータスはジョブのライフサイクル全体を示し、SageMaker トレーニングジョブのステータスはトレーニングプロセスに関するサービス固有の詳細を提供します。