

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 서비스 작업 용량 사용률 추적
<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` 객체는 공유별 분석을 보여줍니다. 공유는 인스턴스 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` 작업이 해당 위치에 도달한 가장 빠른 시간과 함께 각 할당량 공유의 첫 번째 작업을 표시합니다.

------

## 공유당 사용률 보기
<a name="share-utilization-monitoring-service"></a>

공정 공유 또는 할당량 관리 예약 정책이 있는 작업 대기열의 경우의 `queueUtilization` 응답에는 사용량별로 상위 활성 공유를 나열하는 `topCapacityUtilization` 배열이 있는 사용률 객체가 `GetJobQueueSnapshot` 포함됩니다.

이 정보는 다음에 도움이 됩니다.
+ 가장 많은 리소스를 소비하는 공유를 식별합니다.
+ 리소스가 예상대로 공유에 분산되어 있는지 확인합니다.
+ 할당을 포화시키거나 과소 사용할 수 있는 공유를 감지합니다.
+ 예약 정책 구성을 조정할지 여부를 결정합니다.

공정 공유 예약 정책에 대한 자세한 내용은 섹션을 참조하세요[공정 공유 예약 정책](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 훈련 작업 ARN)
+ 예약 우선 순위 및 재시도 구성
+ 원래 서비스 파라미터를 포함하는 서비스 요청 페이로드
+ 시작 및 중지 시간이 포함된 자세한 시도 정보
+ 대상 서비스의 상태 메시지

### 기본 SageMaker 훈련 작업 검사
<a name="track-sagemaker-training-jobs"></a>

를 통해 SageMaker 훈련 작업을 모니터링할 때 AWS Batch 작업 정보와 기본 SageMaker 훈련 작업 세부 정보에 모두 액세스할 AWS Batch수 있습니다.

작업 세부 정보의 서비스 리소스 식별자에는 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 훈련 작업 상태를 모두 확인하여 작업 진행 상황을 모니터링합니다. AWS Batch 작업 상태에는 전체 작업 수명 주기를 표시하는 반면, SageMaker 훈련 작업 상태는 훈련 프로세스에 대한 서비스별 세부 정보를 제공합니다.