

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

# 작업 대기열
<a name="job_queues"></a>

작업은 컴퓨팅 환경에서 실행되도록 예약할 수 있을 때까지 상주하는 작업 대기열에 제출됩니다. AWS 계정에는 여러 작업 대기열이 있을 수 있습니다. 예를 들어, 우선순위가 높은 작업에는 Amazon EC2 온디맨드 인스턴스를 사용하는 대기열을 생성하고, 우선순위가 낮은 작업에는 Amazon EC2 스팟 인스턴스를 사용하는 대기열을 생성할 수 있습니다. 작업 대기열에는 스케줄러에서 사용하는 우선순위가 지정되어 어느 대기열의 어느 작업이 먼저 실행될지가 결정됩니다.

**Topics**
+ [작업 대기열 생성](create-job-queue.md)
+ [에서 작업 대기열 보기 AWS Batch](job_queue_viewing_status.md)
+ [AWS Batch의 작업 대기열 삭제](delete-job-queue.md)
+ [공정 공유 예약 정책](job_scheduling.md)
+ [리소스 인식 일정 예약](resource-aware-scheduling.md)
+ [할당량 관리](quota-management.md)
+ [서비스 작업 용량 사용률 추적](track-capacity-utilization-service-jobs.md)
+ [컴퓨팅 작업 용량 사용률 추적](track-capacity-utilization-compute-jobs.md)

# 작업 대기열 생성
<a name="create-job-queue"></a>

AWS Batch에서 작업을 제출하려면 먼저 작업 대기열을 생성해야 합니다. 작업 대기열을 생성할 때, 대기열에 컴퓨팅 환경을 한 개 이상 연결하고 우선권 순서를 지정합니다.

또한 작업 대기열에 AWS 배치 스케줄러가 작업을 배치할 순서를 결정하는 우선 순위도 설정합니다. 이는 컴퓨팅 환경이 여러 작업 대기열에 연결된 경우, 우선 순위가 높은 작업 대기열에 우선권이 부여된다는 의미입니다.

**Topics**
+ [Amazon EC2 작업 대기열 생성](create-job-queue-ec2.md)
+ [Fargate 작업 대기열 생성](create-job-queue-fargate.md)
+ [Amazon EKS 작업 대기열 생성](create-job-queue-eks.md)
+ [AWS Batch에서 SageMaker 훈련 작업 대기열 생성](create-sagemaker-job-queue.md)
+ [작업 대기열 템플릿](job-queue-template.md)

# Amazon EC2 작업 대기열 생성
<a name="create-job-queue-ec2"></a>

Amazon Elastic Compute Cloud(Amazon EC2)에 대한 작업 대기열을 생성하려면 다음 단계를 완료합니다.

**Amazon EC2 작업 대기열을 생성하기 위해**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)에서 AWS Batch 콘솔을 엽니다.

1. 탐색 모음에서 사용할 AWS 리전(을)를 선택합니다.

1. 탐색 창에서 **작업 대기열**을 선택합니다.

1. **생성**을 선택합니다.

1. **오케스트레이션 유형**으로 **Amazon Elastic Compute Cloud(Amazon EC2)**를 선택합니다.

1. **이름**에 작업 대기열의 고유 이름을 입력합니다. 이름은 최대 128자까지 포함할 수 있으며, 대문자와 소문자, 숫자, 밑줄(\$1)을 포함할 수 있습니다.

1. **우선 순위**에 작업 대기열의 우선 순위 값을 정수로 입력합니다. 우선 순위가 높은 작업 대기열은 동일한 컴퓨팅 환경과 연결된 우선 순위가 낮은 작업 대기열보다 우선합니다. 우선 순위는 내림차순으로 결정됩니다. 예를 들어, 우선 순위 값이 1인 작업 대기열은 우선 순위 값이 10인 작업 대기열보다 먼저 일정이 예약됩니다.

1. (선택 사항)**예약 정책 Amazon 리소스 이름(ARN)**에서 기존 예약 정책을 선택합니다.

1. **연결된 컴퓨팅 환경** 섹션의 목록에서 작업 대기열과 연결할 컴퓨팅 환경을 한 개 이상 선택합니다. 대기열에서 작업 대기열 배치를 하려는 순서대로 컴퓨팅 환경을 선택합니다. 작업 스케줄러는 컴퓨팅 환경 순서를 사용하여 주어진 작업을 실행할 컴퓨팅 환경을 결정합니다. 작업 대기열과 연결하려면 컴퓨터 환경이 `VALID` 상태여야 합니다. 한 개의 작업 대기열에 최대 3개의 컴퓨팅 환경을 연결할 수 있습니다. 기존 컴퓨팅 환경이 없는 경우 **컴퓨팅 환경 생성**을 선택합니다.
**참고**  
작업 대기열에 연결된 모든 컴퓨팅 환경은 동일한 프로비저닝 모델을 공유해야 합니다. AWS Batch(은)는 단일 작업 대기열에서 프로비저닝 모델을 혼합하여 사용하는 것을 지원하지 않습니다.

1. **컴퓨팅 환경 순서**에서 위/아래 화살표를 선택하여 원하는 순서를 구성합니다.

1. **생성**을 선택하여 완료하고 작업 대기열을 생성합니다.

# Fargate 작업 대기열 생성
<a name="create-job-queue-fargate"></a>

AWS Fargate에 대한 작업 대기열을 생성하려면 다음 단계를 완료합니다.

**Fargate 작업 대기열을 생성하려면**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)에서 AWS Batch 콘솔을 엽니다.

1. 탐색 모음에서 사용할 AWS 리전(을)를 선택합니다.

1. 탐색 창에서 **작업 대기열**을 선택합니다.

1. **생성**을 선택합니다.

1. **오케스트레이션 유형**에서 **Fargate**를 선택합니다.

1. **이름**에 작업 대기열의 고유 이름을 입력합니다. 이름은 최대 128자까지 포함할 수 있으며, 대문자와 소문자, 숫자, 밑줄(\$1)을 포함할 수 있습니다.

1. **우선 순위**에 작업 대기열의 우선 순위 값을 정수로 입력합니다. 우선 순위가 높은 작업 대기열은 동일한 컴퓨팅 환경과 연결된 우선 순위가 낮은 작업 대기열보다 우선합니다. 우선 순위는 내림차순으로 결정됩니다. 예를 들어, 우선 순위 값이 1인 작업 대기열은 우선 순위 값이 10인 작업 대기열보다 먼저 일정이 예약됩니다.

1. (선택 사항)**예약 정책 Amazon 리소스 이름(ARN)**에서 기존 예약 정책을 선택합니다.

1. **연결된 컴퓨팅 환경** 섹션의 목록에서 작업 대기열과 연결할 컴퓨팅 환경을 한 개 이상 선택합니다. 대기열에서 작업 대기열 배치를 하려는 순서대로 컴퓨팅 환경을 선택합니다. 작업 스케줄러는 컴퓨팅 환경 순서를 사용하여 주어진 작업을 실행할 컴퓨팅 환경을 결정합니다. 작업 대기열과 연결하려면 컴퓨터 환경이 `VALID` 상태여야 합니다. 한 개의 작업 대기열에 최대 3개의 컴퓨팅 환경을 연결할 수 있습니다.
**참고**  
작업 대기열에 연결된 모든 컴퓨팅 환경은 동일한 프로비저닝 모델을 공유해야 합니다. AWS Batch(은)는 단일 작업 대기열에서 프로비저닝 모델을 혼합하여 사용하는 것을 지원하지 않습니다.

1. **컴퓨팅 환경 순서**에서 위/아래 화살표를 선택하여 원하는 순서를 구성합니다.

1. **생성**을 선택하여 완료하고 작업 대기열을 생성합니다.

# Amazon EKS 작업 대기열 생성
<a name="create-job-queue-eks"></a>

Amazon Elastic Kubernetes Service(Amazon EKS)에 대한 작업 대기열을 생성하려면 다음 단계를 완료합니다.

**Amazon EKS 작업 대기열 생성하기 위해**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)에서 AWS Batch 콘솔을 엽니다.

1. 탐색 모음에서 사용할 AWS 리전(을)를 선택합니다.

1. 탐색 창에서 **작업 대기열**을 선택합니다.

1. **생성**을 선택합니다.

1. **오케스트레이션 유형**으로 **Amazon Elastic Kubernetes Service(Amazon EKS)**를 선택합니다.

1. **이름**에 작업 대기열의 고유 이름을 입력합니다. 이름은 최대 128자까지 포함할 수 있으며, 대문자와 소문자, 숫자, 밑줄(\$1)을 포함할 수 있습니다.

1. **우선 순위**에 작업 대기열의 우선 순위 값을 정수로 입력합니다. 우선 순위가 높은 작업 대기열은 동일한 컴퓨팅 환경과 연결된 우선 순위가 낮은 작업 대기열보다 우선합니다. 우선 순위는 내림차순으로 결정됩니다. 예를 들어, 우선 순위 값이 1인 작업 대기열은 우선 순위 값이 10인 작업 대기열보다 먼저 일정이 예약됩니다.

1. (선택 사항)**예약 정책 Amazon 리소스 이름(ARN)**에서 기존 예약 정책을 선택합니다.

1. **연결된 컴퓨팅 환경** 섹션의 목록에서 작업 대기열과 연결할 컴퓨팅 환경을 한 개 이상 선택합니다. 대기열에서 작업 대기열 배치를 하려는 순서대로 컴퓨팅 환경을 선택합니다. 작업 스케줄러는 컴퓨팅 환경 순서를 사용하여 주어진 작업을 실행할 컴퓨팅 환경을 결정합니다. 작업 대기열과 연결하려면 컴퓨터 환경이 `VALID` 상태여야 합니다. 한 개의 작업 대기열에 최대 3개의 컴퓨팅 환경을 연결할 수 있습니다.
**참고**  
작업 대기열에 연결된 모든 컴퓨팅 환경은 동일한 프로비저닝 모델을 공유해야 합니다. AWS Batch(은)는 단일 작업 대기열에서 프로비저닝 모델을 혼합하여 사용하는 것을 지원하지 않습니다.
**참고**  
작업 대기열과 연관된 모든 컴퓨팅 환경은 동일한 아키텍처를 공유해야 합니다. AWS Batch(은)는 단일 작업 대기열에서의 혼합 컴퓨팅 환경 아키텍처 유형을 지원하지 않습니다.

1. **컴퓨팅 환경 순서**에서 위/아래 화살표를 선택하여 원하는 순서를 구성합니다.

1. **생성**을 선택하여 완료하고 작업 대기열을 생성합니다.

# AWS Batch에서 SageMaker 훈련 작업 대기열 생성
<a name="create-sagemaker-job-queue"></a>

SageMaker 훈련 작업 대기열은 SageMaker AI 서비스와 직접 통합되어 기본 컴퓨팅 인프라를 관리할 필요 없이 서버리스 작업 예약을 제공합니다.

## 사전 조건
<a name="sagemaker-job-queue-prerequisites"></a>

SageMaker 훈련 작업 대기열을 생성하기 전에 다음을 갖추어야 합니다.
+ **서비스 환경** - 용량 제한을 정의하는 서비스 환경. 자세한 내용은 [에서 서비스 환경 생성 AWS Batch](create-service-environments.md) 섹션을 참조하세요.
+ **IAM 권한** - AWS Batch 작업 대기열 및 서비스 환경을 생성하고 관리할 수 있는 권한. 자세한 내용은 [AWS Batch IAM 정책, 역할 및 권한](IAM_policies.md) 섹션을 참조하세요.

------
#### [ Create a SageMaker Training job queue (AWS Batch console) ]

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)에서 AWS Batch 콘솔을 엽니다.

1. 탐색 창에서 **작업 대기열**을 선택한 다음 **생성**을 선택합니다.

1. **오케스트레이션 유형**에서 **SageMaker 훈련**을 선택합니다.

1. **작업 대기열 구성**에서 다음을 수행합니다.

   1. **이름**에 작업 대기열의 이름을 입력합니다.

   1. **우선 순위**에 0에서 1000 사이의 값을 입력합니다. 우선 순위가 높은 작업 대기열에는 서비스 환경에 대해 더 높은 선호도가 지정됩니다.

   1. (선택 사항)**예약 정책 Amazon 리소스 이름(ARN)**에서 기존 예약 정책을 선택합니다.

   1. **연결된 서비스 환경**의 목록에서 작업 대기열과 연결할 서비스 환경을 선택합니다.

1. (선택 사항) **작업 상태 제한**의 경우:

   1. **잘못된 구성**에서 `SERVICE_ENVIRONMENT_MAX_RESOURCE`를 선택하고 **최대 실행 가능 시간(초)**을 입력합니다.

   1. **용량**에서 `INSUFFICIENT_INSTANCE_CAPACITY`를 선택하고 **최대 실행 가능 시간(초)**을 입력합니다.

1. **작업 대기열 생성**을 선택합니다.

------
#### [ Create a SageMaker Training job queue (AWS CLI) ]

`create-job-queue` 명령을 사용하여 SageMaker 훈련 작업 대기열을 생성합니다.

다음 예제는 서비스 환경을 사용하는 기본 SageMaker 훈련 작업 대기열을 생성합니다.

```
aws batch create-job-queue \
  --job-queue-name my-sm-training-fifo-jq \
  --job-queue-type SAGEMAKER_TRAINING \
  --priority 1 \
  --service-environment-order order=1,serviceEnvironment=ExampleServiceEnvironment
```

*ExampleServiceEnvironment*를 서비스 환경의 이름으로 바꿉니다.

이 명령은 다음과 비슷한 출력을 반환합니다.

```
{
  "jobQueueName": "my-sm-training-fifo-jq",
  "jobQueueArn": "arn:aws:batch:region:account:job-queue/my-sm-training-fifo-jq"
}
```

작업 대기열을 생성한 후 성공적으로 생성되었고 유효한 상태에 있는지 확인합니다.

`describe-job-queues` 명령을 사용하여 작업 대기열에 대한 세부 정보를 봅니다.

```
aws batch describe-job-queues --job-queues my-sm-training-fifo-jq
```

이 명령은 다음과 비슷한 출력을 반환합니다.

```
{
  "jobQueues": [
    {
      "jobQueueName": "my-sm-training-fifo-jq",
      "jobQueueArn": "arn:aws:batch:region:account:job-queue/my-sm-training-fifo-jq",
      "state": "ENABLED",
      "status": "VALID",
      "statusReason": "JobQueue Healthy",
      "priority": 1,
      "computeEnvironmentOrder": [],
      "serviceEnvironmentOrder": [
        {
          "order": 1,
          "serviceEnvironment": "arn:aws:batch:region:account:service-environment/ExampleServiceEnvironment"
        }
      ],
      "jobQueueType": "SAGEMAKER_TRAINING",
      "tags": {},
      "jobStateTimeLimitActions": []
    }
  ]
}
```

다음을 확인하세요.
+ `state`는 `ENABLED`입니다.
+ `status`는 `VALID`입니다.
+ `statusReason`은 `JobQueue Healthy`입니다.
+ `jobQueueType`은 `SAGEMAKER_TRAINING`입니다.
+ `serviceEnvironmentOrder`는 서비스 환경을 참조합니다.

------

# 작업 대기열 템플릿
<a name="job-queue-template"></a>

다음은 빈 작업 대기열 템플릿입니다. 이 템플릿을 사용하여 작업 대기열을 생성할 수 있습니다. 그런 다음 이 작업 대기열을 파일에 저장하고 AWS CLI `--cli-input-json` 옵션과 함께 사용할 수 있습니다. 이러한 파라미터에 대한 자세한 내용은 *AWS Batch API 참조*에서 [CreateJobQueue](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateJobQueue.html)를 참조하세요.

**참고**  
다음 AWS CLI 명령을 사용하여 위의 작업 대기열 템플릿을 생성할 수 있습니다.  

```
$ aws batch create-job-queue --generate-cli-skeleton
```

```
{
   "computeEnvironmentOrder": [ 
      { 
         "computeEnvironment": "",
         "order": 0
      }
   ],
   "jobQueueName": "",
   "jobStateTimeLimitActions": [ 
      { 
         "state": "RUNNABLE",
         "action": "CANCEL",
		 "maxTimeSeconds": 0,
         "reason": ""

      }
   ],
   "priority": 0,
   "schedulingPolicyArn": "",
   "state": "ENABLED",
   "tags": { 
      "KeyName": ""
   }
}
```

# 에서 작업 대기열 보기 AWS Batch
<a name="job_queue_viewing_status"></a>

작업 대기열을 생성하고 작업을 제출한 후에는 진행 상황을 모니터링할 수 있어야 합니다. **작업 세부 정보** 페이지를 사용하여 작업 대기열을 검토하고, 관리하고, 모니터링할 수 있습니다.

## 작업 대기열 정보 보기
<a name="view-job-queue-info"></a>

 AWS Batch 콘솔에서 탐색 창에서 **작업 대기열을** 선택하고 원하는 작업 대기열을 선택하여 세부 정보를 봅니다. 이 페이지에서 작업 대기열을 검토 및 관리하고 작업 대기열 스냅샷, 작업 상태 제한, 환경 순서, 태그, 작업 대기열 JSON 코드 등과 같은 대기열 작업에 대한 추가 정보를 볼 수 있습니다.

### 작업 대기열 세부 정보
<a name="job-queue-info-details"></a>

이 섹션에서는 작업 대기열에 대한 개요와 유지 관리 옵션을 제공합니다. 또한 이 섹션에서 Amazon 리소스 이름(ARN)을 찾을 수 있습니다.

를 통해이 정보를 찾으려면 작업 대기열 이름 또는 해당 ARN과 함께 [https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobQueues.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobQueues.html) 작업을 AWS Command Line Interface사용합니다.

### 활성 공유
<a name="top-active-shares"></a>

공정 공유 일정을 사용하는 작업 대기열의 경우는 서로 다른 공유 식별자가 용량을 소비하는 방식에 대한 가시성을 AWS Batch 제공합니다. 이 정보는 리소스 배포를 이해하고 조정이 필요할 수 있는 공유를 식별하는 데 도움이 됩니다.

**참고**  
**활성 공유** 탭은 작업 대기열의 **예약 알고리즘**이 공정 공유인 경우에만 표시됩니다.

상위 20개 활성 공유 섹션에는 예약, 시작 및 실행 중인 작업이 있는 공유 식별자가 표시됩니다. 이 보기에는 다음이 포함됩니다.
+ **공유 식별자 이름** - 공유의 고유 식별자입니다.

  공유 식별자는 공정 공유 예약을 위해 작업을 그룹화하는 레이블입니다. 공유 식별자가 동일한 작업을 제출하면는 리소스 할당을 위해 해당 작업을 동일한 워크로드의 일부로 AWS Batch 처리합니다. 공유 식별자는 다양한 팀, 프로젝트 또는 워크로드 유형에 컴퓨팅 용량을 공평하게 분산하는 데 도움이 됩니다. 자세한 내용은 [공유 식별자를 사용하여 워크로드 식별](share-identifiers.md) 단원을 참조하십시오.
+ **용량 사용률** - 작업이 사용하도록 구성된 리소스의 양입니다. 이는 환경에 `vCPU` 따라 `cpu`, 또는 `instances`로 측정됩니다.
+ **작업 보기 작업** - 해당 공유에 대한 모든 작업을 볼 수 있는 링크입니다.

이 정보는 목록 형식과 차트 형식으로 모두 볼 수 있습니다.
+ **목록 보기** - 정확한 용량 번호가 포함된 테이블 형식 표시
+ **차트 보기** - 상대적 사용률을 보여주는 시각적 막대 차트

### 작업 대기열 스냅샷
<a name="job-queue-info-snapshot"></a>

이 섹션에서는 대기열에 있는 처음 100개 `RUNNABLE` 작업의 정적 목록을 제공합니다. 검색 필드를 사용하면 결과 섹션의 모든 열에서 정보를 검색하여 목록의 범위를 좁힐 수 있습니다. 스냅샷 결과 영역의 작업은 작업 대기열의 실행 전략에 따라 정렬됩니다. 선입선출(FIFO) 작업 대기열의 경우 작업 순서는 제출 시간을 기준으로 합니다. [공정 공유 예약](fair-share-scheduling.md) 작업 대기열의 경우 작업 순서는 작업 우선 순위 및 공유 사용량을 기준으로 합니다. **용량 필요** 필드에는 작업이 사용하도록 구성된 리소스의 양이 표시됩니다.

결과는 작업 대기열의 스냅샷이므로 결과 목록이 자동으로 업데이트되지 않습니다. 목록을 업데이트하려면 섹션 상단에 있는 새로 고침을 선택합니다. 작업의 이름 하이퍼링크를 선택하여 **작업 세부 정보**로 이동하고 작업의 상태 및 기타 관련 정보를 확인합니다.

를 통해이 정보를 찾으려면 작업 대기열 이름 또는 해당 ARN과 함께 [https://docs.aws.amazon.com/batch/latest/APIReference/API_GetJobQueueSnapshot.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_GetJobQueueSnapshot.html) 작업을 AWS CLI사용합니다.

```
aws batch get-job-queue-snapshot --job-queue my-sm-training-fifo-jq
```

### 작업 상태 제한
<a name="job-queue-info-state-limits"></a>

이 탭을 사용하여 작업이 취소되기 전에 `RUNNABLE` 상태를 유지할 수 있는 시간과 관련된 구성 정보를 검토합니다.

를 통해이 정보를 찾으려면 작업 대기열 이름 또는 해당 ARN과 함께 [https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobQueues.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobQueues.html) 작업을 AWS CLI사용합니다.

### 환경 순서
<a name="job-queue-info-env-order"></a>

작업 대기열이 여러 환경에서 실행되는 경우 이 탭은 작업 대기열 순서와 개요를 제공합니다.

를 통해이 정보를 찾으려면 작업 대기열 이름 또는 해당 ARN과 함께 [https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobQueues.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobQueues.html) 작업을 AWS CLI사용합니다.

### Tags
<a name="job-queue-info-tags"></a>

이 탭을 사용하여 이 작업 대기열과 연결된 태그를 검토하고 관리합니다.

### JSON
<a name="job-queue-info-json"></a>

이 탭을 사용하여 이 작업 대기열과 연결된 JSON 코드를 복사합니다. 그런 다음 AWS CloudFormation 템플릿 및 스크립트에 JSON AWS CLI 을 재사용할 수 있습니다.

# AWS Batch의 작업 대기열 삭제
<a name="delete-job-queue"></a>

작업 대기열이 더 이상 필요하지 않게 되면 작업 대기열을 비활성화하고 삭제할 수 있습니다.

------
#### [ Delete a job queue (AWS Batch console) ]

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)에서 AWS Batch 콘솔을 엽니다.

1. 탐색 창에서 **작업 대기열**을 선택한 다음 작업 대기열을 선택합니다.

1. **작업**을 선택한 다음 **비활성화**를 선택합니다.

1. 작업 대기열의 상태가 **비활성화**가 되면 **작업**을 선택한 다음 **삭제**를 선택합니다.

1. 모달 창에서 **작업 대기열 삭제**를 선택합니다.

------
#### [ Delete a job queue (AWS CLI) ]

1. 작업 대기열을 비활성화하여 새 작업 제출을 방지합니다.

   ```
   aws batch update-job-queue \
     --job-queue my-sm-training-fifo-jq \
     --state DISABLED
   ```

1. 실행 중인 작업이 완료될 때까지 기다린 다음 작업 대기열을 삭제합니다.

   ```
   aws batch delete-job-queue \
     --job-queue my-sm-training-fifo-jq
   ```

------

# 공정 공유 예약 정책
<a name="job_scheduling"></a>

 AWS Batch 스케줄러는 작업 대기열에 제출된 작업을 실행하는 시기, 위치 및 방법을 평가합니다. 작업 대기열을 생성할 때 예약 정책을 지정하지 않으면 AWS Batch 작업 스케줄러는 기본적으로 선입선출(FIFO) 전략으로 설정됩니다. FIFO 전략을 사용하면 중요한 작업이 이전에 제출된 작업 뒤에 “묶여” 있을 수 있습니다. 다른 스케줄 정책을 지정하여 특정 요구 사항에 따른 컴퓨팅 리소스를 할당할 수 있습니다.

**참고**  
작업이 실행되는 특정 순서를 예약하려면 [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)의 `[dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html#Batch-SubmitJob-request-dependsOn)` 파라미터를 사용하여 각 작업의 종속성을 지정합니다.

예약 정책을 생성하여 작업 대기열에 연결하면 공정 공유 예약이 활성화됩니다. 작업 대기열에 예약 정책이 있으면 예약 정책이 작업 실행 순서를 결정합니다. 자세한 내용은 [공정 공유 예약 정책을 사용하여 공유 식별자 할당](scheduling-policies.md) 단원을 참조하십시오.

**Topics**
+ [공유 식별자를 사용하여 워크로드 식별](share-identifiers.md)
+ [공정 공유 예약 정책을 사용하여 공유 식별자 할당](scheduling-policies.md)
+ [공정 공유 일정을 사용하여 작업 예약 지원](fair-share-scheduling.md)
+ [자습서: 공정 공유 예약 정책 생성](create-scheduling-policy.md)
+ [참조: 공정 공유 예약 정책 템플릿](scheduling-policy-template.md)

# 공유 식별자를 사용하여 워크로드 식별
<a name="share-identifiers"></a>

공유 식별자를 사용하여 작업에 태그를 지정하고 사용자와 워크로드를 구분할 수 있습니다. AWS Batch 스케줄러는 `(T * weightFactor)` 공식을 사용하여 각 공유 식별자의 사용량을 추적합니다. 여기서 *`T`*는 시간 경과에 따른 vCPU 사용량입니다. 스케줄러는 공유 식별자에서 사용량이 가장 적은 작업을 선택합니다. 공유 식별자는 재정의하지 않고도 사용할 수 있습니다.

**참고**  
공유 식별자는 작업 대기열 내에서만 유효하며 작업 대기열 간에 집계되지 않습니다.

공정 공유 예약 우선 순위를 설정하여 공유 식별자에서 작업이 실행되는 순서를 구성할 수 있습니다. 예약 우선 순위가 높은 작업이 먼저 예약됩니다. 공정 공유 예약 정책을 지정하지 않으면 작업 대기열에 제출된 모든 작업이 FIFO 순서로 예약됩니다. 작업을 제출할 때 공유 식별자나 공정 공유 예약 우선 순위를 지정할 수 없습니다.

**참고**  
연결된 컴퓨팅 리소스는 명시적으로 재정의되지 않는 한 모든 공유 식별자에게 동일하게 할당됩니다.

# 공정 공유 예약 정책을 사용하여 공유 식별자 할당
<a name="scheduling-policies"></a>

공정 공유 예약 정책을 사용하여 작업 대기열의 컴퓨팅 리소스가 사용자 또는 워크로드 간에 할당되는 방식을 구성할 수 있습니다. 공정 공유 예약 정책을 사용하면 워크로드 또는 사용자에게 서로 다른 공유 식별자를 할당할 수 있습니다.는 일정 기간 동안 사용 가능한 총 리소스의 백분율을 각 공유 식별자에 AWS Batch 할당합니다.

공정 공유율은 `shareDecaySeconds` 및 `shareDistribution` 값을 사용하여 계산됩니다. 사용자는 정책에 공유 소멸 시간을 할당하여 공정 공유 분석에 시간을 늘릴 수 있습니다. 시간을 추가하면 시간에 더 많은 가중치가 부여되고 지정된 가중치는 줄어듭니다. 사용자는 컴퓨팅 예약을 지정하여 활성 상태가 아닌 공유 식별자를 위해 컴퓨팅 리소스를 유보해 둘 수 있습니다. 자세한 내용은 [SchedulingPolicyDetail](https://docs.aws.amazon.com/batch/latest/APIReference/API_SchedulingPolicyDetail.html)을 참조하세요.

# 공정 공유 일정을 사용하여 작업 예약 지원
<a name="fair-share-scheduling"></a>

공정 공유 예약은 작업 예약에 도움이 되는 일련의 제어 기능을 제공합니다. 예약 정책 파라미터에 대한 자세한 내용은 [SchedulingPolicyDetail](https://docs.aws.amazon.com/batch/latest/APIReference/API_SchedulingPolicyDetail.html)을 참조하세요.
+ **감소 초 공유 **- AWS Batch 스케줄러가 각 공유 식별자에 대한 공정 공유 백분율을 계산하는 데 사용하는 기간(초)입니다. 값이 0이면 현재 사용량만 측정됨을 나타냅니다. 성능 저하 시간이 길수록 시간에 더 많은 가중치를 부여합니다.
**참고**  
성능 저하 시간은 다음과 같이 계산됩니다. *`shareDecaySeconds + OrderMinutes`* 여기서 *`OrderMinutes `* 시간은 분 단위로 정렬됩니다.
+ **컴퓨팅 예약 —** 단일 공유 식별자의 작업이 작업 대기열에 연결된 모든 리소스를 사용하는 것을 방지합니다. 예약 비율은 `(computeReservation/100)^ActiveFairShares`입니다. 여기서 `ActiveFairShares`는 활성 공유 식별자 수입니다.
**참고**  
공유 식별자에 작업이 `SUBMITTED`, `PENDING`, `RUNNABLE`, `STARTING` 또는 `RUNNING` 상태이면 활성 공유 식별자로 간주됩니다. 성능 저하 기간이 만료되면 공유 식별자는 비활성 상태로 간주됩니다.
+ **가중치 계수 –** 공유 식별자의 가중치 계수입니다. 기본값은 1입니다. 값이 낮을수록 공유 식별자의 작업이 실행되도록 허용하거나 공유 식별자에 추가 런타임이 제공됩니다. 예를 들어, 가중치 0.125(1/8)로 공유 식별자를 사용하는 작업은 가중치 1로 공유 식별자를 사용하는 작업 보다 8배의 1 컴퓨팅 리소스를 할당 받습니다.
**참고**  
기본 가중치 계수인 1을 업데이트해야 하는 경우에만 이 속성을 정의하면 됩니다.

작업 대기열이 활성 상태이고 작업을 처리 중인 경우 작업 대기열 스냅샷을 통해 처음 100개의 `RUNNABLE` 작업 목록을 검토할 수 있습니다. 자세한 내용은 [에서 작업 대기열 보기 AWS Batch](job_queue_viewing_status.md) 단원을 참조하십시오.

# 자습서: 공정 공유 예약 정책 생성
<a name="create-scheduling-policy"></a>

예약 정책을 사용하여 작업 대기열을 생성하려면 먼저 예약 정책을 생성해야 합니다. 공정 공유 예약 정책을 생성할 때는 하나 이상의 공유 식별자 또는 공유 식별자 접두사를 대기열의 가중치와 연결하고 선택적으로 정책에 저하 기간 및 컴퓨팅 예약을 할당합니다.

**공정 공유 예약 정책을 생성하려면**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

1. 탐색 모음에서 사용할 리전을 선택합니다.

1. 탐색 창에서 **예약 정책**, **생성**을 선택합니다.

1. **이름**에 정책의 고유 이름을 입력합니다. 최대 128개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

1. (선택 사항) **성능 저하 초 공유**에는 공정 공유 예약 정책의 공유 저하 시간을 정수 값으로 입력합니다. 공유 저하 시간이 길수록 작업을 예약할 때 상당히 더 많은 컴퓨팅 리소스가 사용됩니다. 이렇게 하면 해당 공유 식별자가 최근에 컴퓨팅 리소스를 사용한 적이 없다는 가정하에 공유 식별자를 사용하는 작업이 공유 식별자에 대한 가중치가 허용하는 것보다 더 많은 컴퓨팅 리소스를 일시적으로 사용할 수 있습니다.

1. (선택 사항) **컴퓨팅 예약**에는 공정 공유 예약 정책의 컴퓨팅 예약에 대한 정수 값을 입력합니다. 컴퓨팅 예약은 현재 활성화되지 않은 공유 식별자에 사용할 수 있도록 일부 vCPU를 예비 보관합니다.

   예약 비율은 `(computeReservation/100)^ActiveFairShares`이며 *ActiveFairShares*는 활성화된 공유 식별자 수입니다.

   예를 들어 값이 `computeReservation` 50이면가 공유 식별자가 하나뿐인 경우 사용 가능한 최대 VCPU의 50%, 공유 식별자가 두 개 있는 경우 25%, 공유 식별자가 세 개 있는 경우 12.5%를 예약 AWS Batch 해야 함을 나타냅니다. `computeReservation` 값이 25인 경우 AWS Batch 는 공정 공유 식별자가 1개뿐이면 사용 가능한 최대 VCPU의 25%, 공유 식별자가 2개이면 6.25%, 공유 식별자가 3개이면 1.56%를 예약해야 함을 나타냅니다.

1. **속성 공유** 섹션에서 각 공유 식별자의 공유 식별자 및 가중치를 지정하여 공정 공유 예약 정책과 연결할 수 있습니다.

   1. **공유 식별자 추가**를 선택합니다.

   1. **공유 식별자**에는 공유 식별자를 지정합니다. 문자열이 '\$1'로 끝나는 경우 이는 작업의 공유 식별자를 일치시키는 데 사용되는 공유 식별자 접두사가 됩니다. 예약 정책의 모든 공유 식별자와 공유 식별자 접두사는 고유해야 하며 중복되지 않아야 합니다. 예를 들어 동일한 공정 공유 일정 정책에 공유 식별자 접두사 'UserA\$1'와 공유 식별자 'UserA1'을 사용할 수 없습니다.

   1. **가중치 계수**에는 공유 식별자의 상대적 가중치를 지정합니다. 기본값은 1.0입니다. 값이 낮을수록 컴퓨팅 리소스에 대한 우선순위가 높아집니다. 공유 식별자 접두사를 사용하는 경우 해당 접두사로 시작하는 공유 식별자가 있는 작업도 가중치 계수를 공유합니다. 이렇게 하면 해당 작업에 대한 가중치 계수가 효과적으로 증가하여 개별 우선 순위는 낮아지지만 공유 식별자 접두사의 가중치 계수는 동일하게 유지됩니다.

1. (선택 사항) **태그** 섹션에 각 태그에 대한 키와 값을 지정하여 예약 정책과 연결합니다. 자세한 내용은 [AWS Batch 리소스 태깅](using-tags.md) 단원을 참조하십시오.

1. **제출**을 선택하여 작업을 완료하고 예약 정책을 생성합니다.

# 참조: 공정 공유 예약 정책 템플릿
<a name="scheduling-policy-template"></a>

빈 공정 공유 예약 정책 템플릿은 다음과 같습니다. 이 템플릿을 사용하여 예약 정책을 생성한 다음 파일에 저장하고 옵션과 함께 사용할 수 있습니다 AWS CLI `--cli-input-json`. 이 파라미터에 대한 자세한 내용을 알아보려면 *AWS Batch API 참조*의 [CreateSchedulingPolicy](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateSchedulingPolicy.html) 작업을 참조하세요.

**참고**  
다음 AWS CLI 명령을 사용하여 작업 대기열 템플릿을 생성할 수 있습니다.  

```
$ aws batch create-scheduling-policy --generate-cli-skeleton
```

```
{
    "name": "",
    "fairsharePolicy": {
        "shareDecaySeconds": 0,
        "computeReservation": 0,
        "shareDistribution": [
            {
                "shareIdentifier": "",
                "weightFactor": 0.0
            }
        ]
    },
    "tags": {
        "KeyName": ""
    }
}
```

# 리소스 인식 일정 예약
<a name="resource-aware-scheduling"></a>

AWS Batch 는 작업 대기열(JQ)과 연결된 컴퓨팅 환경(CE)에서 vCPU, GPU 및 메모리 가용성을 기반으로 작업을 예약합니다. 그러나 때로는 작업이 다른 필수 리소스에 종속될 수 있으므로 성공적으로 실행된다고 보장할 수 없고 해당 작업이 취소되거나 종료될 수 있으므로 이러한 CE 리소스의 가용성만으로는 작업이 성공적으로 실행된다고 보장할 수 없습니다. 이는 컴퓨팅 리소스의 비효율적인 사용을 유발합니다. 이 문제를 해결하기 위해 리소스 인식 예약은 CE에서 작업을 실행하도록 예약하기 전에 종속된 비CE 리소스의 가용성을 확인할 수 있습니다.

AWS Batch resource-aware scheduling을 사용하면 타사 라이선스 토큰, 데이터베이스 액세스 대역폭, 타사 API에 대한 호출 제한 필요성 등 작업을 실행하는 데 필요한 소모적인 리소스를 기반으로 작업을 예약할 수 있습니다. 작업을 실행하는 데 필요한 소모성 리소스를 지정하면 Batch는 작업을 예약할 때 이러한 리소스 종속성을 고려합니다. 소모성 리소스 부족으로 인한 작업 실패와 긴 대기 시간을 제거하기 위한 수동 개입을 방지할 수 있습니다. 필요한 모든 리소스를 사용할 수 있는 작업만 할당하여 컴퓨팅 리소스의 사용 부족을 줄일 수 있습니다.

리소스 인식 예약은 FIFO 및 공정 공유 예약 정책 모두에 사용할 수 있으며 EKS, ECS 및 Fargate를 포함하여 Batch에서 지원하는 모든 컴퓨팅 플랫폼에서 사용할 수 있습니다. 배열 작업, 다중 노드 병렬(MNP) 작업 및 일반 배치 작업과 함께 사용할 수 있습니다.

리소스 인식 예약을 구성하려면 먼저 각 리소스의 사용 가능한 총 수와 함께 작업을 실행하는 데 필요한 모든 소모성 리소스를 지정합니다. 그런 다음 소모성 리소스가 필요한 각 작업에 대해, 필요한 각 리소스의 이름과 필요한 수량을 지정합니다. Batch는 작업 대기열의 작업에 사용할 수 있는 소모성 리소스 수를 추적하고 작업이 성공적으로 실행되는 데 필요한 모든 소모성 리소스를 사용할 수 있는 경우에만 작업이 실행되도록 예약합니다.

**Topics**
+ [소모성 리소스 생성](resource-aware-scheduling-how-to-create.md)
+ [작업을 실행하는 데 필요한 리소스 지정](resource-aware-scheduling-how-to-for-jobs.md)
+ [사용 중이고 사용 가능한 리소스 수 확인](resource-aware-scheduling-how-to-check-resources-check-resources.md)
+ [작업에서 사용 중인 리소스의 수량 업데이트](resource-aware-scheduling-how-to-update-quantity.md)
+ [특정 소모성 리소스가 필요한 작업 찾기](resource-aware-scheduling-how-to-find-jobs.md)
+ [소모성 리소스 삭제](resource-aware-scheduling-how-to-delete.md)

# 소모성 리소스 생성
<a name="resource-aware-scheduling-how-to-create"></a>

먼저 작업이 실행 중일 때 사용되고 제한된 수량으로만 사용할 수 있는 비CE 리소스를 나타내는 소모성 리소스를 생성해야 합니다. 각 소모성 리소스는 다음과 같은 요소를 가집니다.
+ 계정 수준에서 고유해야 하는 리소스 이름(`consumableResourceName`).
+ (선택 사항) 작업이 완료된 후 리소스를 재사용할 수 있는지 여부를 나타내는 리소스 유형(`resourceType`). 이는 다음 중 하나일 수 있습니다.
  + `REPLENISHABLE`(기본값)
  + `NON_REPLENISHABLE`
+ 사용 가능한 소모성 리소스의 총량을 지정하는 총 수량(`totalQuantity`).

계정당 소모성 리소스의 최대 수는 5만 개입니다.

**콘솔**:

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 패널에서 **소모성 리소스**를 선택합니다.

1. **소모성 리소스 생성**을 선택합니다.

1. 고유한 **리소스 이름**, **총 리소스 수량**을 입력하고 **리소스 유형**이 **보충 가능**인지 **보충 불가**인지 선택합니다.

1. **소모성 리소스 생성**을 선택합니다.

**API:**

[`CreateConsumableResource` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateConsumableResource.html)를 사용하여 원하는 리소스를 정의합니다.

# 작업을 실행하는 데 필요한 리소스 지정
<a name="resource-aware-scheduling-how-to-for-jobs"></a>

작업을 등록할 때 생성한 하나 이상의 리소스 이름(`consumableResource`)과 작업의 각 인스턴스에 필요한 해당 리소스의 수량(`quantity`)을 지정할 수 있습니다.

Batch는 주어진 시점에 각 리소스의 사용 가능한 유닛을 추적합니다. 작업 대기열의 각 작업에 대해 Batch 스케줄러는 지정된 리소스 종속성을 사용할 수 있는 경우에만 작업이 실행되도록 합니다.

작업이 대기열의 앞부분에 도달할 때 작업을 위한 소모성 리소스를 사용할 수 없는 경우, 작업은 필요한 모든 리소스를 사용할 수 있게 되거나 작업 상태 시간 제한에 도달할 때까지 `RUNNABLE` 상태로 대기합니다([에서 작업 대기열 보기 AWS Batch](job_queue_viewing_status.md) 참조). Batch가 모든 리소스를 사용할 수 있는지 확인하면 작업이 `STARTING` 상태로 전환되었다가 `RUNNING`으로 전환됩니다. 작업이 일단 `STARTING`으로 이동하면 리소스가 잠기고 작업이 `SUCCEEDED` 또는 `FAILED`로 이동하면 잠금 해제됩니다.

작업을 제출할 때 특정 작업에 필요한 리소스의 수량도 업데이트할 수 있습니다.

**콘솔**:

**작업을 정의할 때 리소스와 필요한 수량을 지정하려면:**

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)에서 작업 정의 마법사를 사용하여 작업을 정의합니다(**작업 정의** -> **생성**).

1. 마법사의 4단계: **컨테이너 구성**의 **소모성 리소스** 아래의 목록에서 필요한 리소스의 **이름**을 선택합니다. **요청된 값** 필드에 이 작업의 인스턴스에 필요한 이 리소스의 수량을 입력한 다음 **소모성 리소스 추가**를 선택합니다.

1. 작업에 필요한 모든 소모성 리소스에 대해 이전 단계를 반복합니다. 정의한 각 작업에 대해 최대 5개의 리소스를 지정할 수 있습니다.

1. 작업 정의 마법사를 완료한 후 **작업 정의 생성**을 선택하기 전에 생성한 소모성 리소스의 목록이 표시됩니다.

**작업을 제출할 때 필요한 리소스 양을 업데이트하려면:**

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 창에서 **작업**을 선택한 다음 **새 작업 제출**을 선택합니다.

1. 마법사의 2단계: **재정의 구성**의 **소모성 리소스 재정의**에서 작업에 필요한 수량을 재정의할 모든 소모성 리소스에 대해 새 **요청된 값**을 입력합니다.

1. 이 작업에 대해 수행할 모든 재정의를 완료한 후 **다음**을 선택하여 **검토 및 제출**을 계속합니다.

**API:**

[`RegisterJobDefinition` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)에 작업을 등록할 때 요청의 `consumableResourceProperties` 부분에 `consumableResourceList`를 사용하여 작업의 인스턴스를 실행하는 데 필요한 소모성 리소스와 각 리소스의 수량을 지정합니다.

[`SubmitJob` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)를 사용하여 작업을 제출할 때 요청의 `consumableResourcePropertiesOverride` 부분을 사용하여 소모성 리소스 목록과 각 리소스의 수량을 재정의할 수 있습니다. 이렇게 하면 작업의 각 인스턴스에 필요한 리소스 수량만 재정의되고 사용 가능한 총 수량은 재정의되지 않습니다.

# 사용 중이고 사용 가능한 리소스 수 확인
<a name="resource-aware-scheduling-how-to-check-resources-check-resources"></a>

Batch를 사용하면 주어진 시점에 사용 가능한 리소스 수(`availableQuantity`), 사용 중인 리소스 수(`inUseQuantity`) 및 총 리소스(`totalQuantity`)를 쿼리할 수 있습니다.

작업이 `STARTING` 상태가 되면 소모된 리소스는 해당 리소스의 사용 가능한 수량에서 차감됩니다. 리소스가 `REPLENISHABLE`인 경우, 작업이 SUCCEEDED 또는 FAILED 상태로 전환되는 즉시 소비된 리소스 수가 사용 가능한 수량에 다시 추가되고 총 수량은 동일하게 유지됩니다. 리소스가 `NON_REPLENISHABLE`인 경우, 소모된 리소스 수는 총 수량 및 사용 가능한 수량 모두에서 차감되며 작업이 `SUCCEEDED` 또는 `FAILED` 상태로 이동하는지 여부에 관계없이 다시 추가되지 않습니다.

**참고**  
이 정보는 최대 30초까지 지연될 수 있습니다.

**콘솔**:

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 패널에서 **소모성 리소스**를 선택합니다.

1. **보충 가능** 또는 **보충 불가능** 탭을 선택하여 생성한 해당 유형의 리소스를 봅니다.

1. 각 **보충 가능** 리소스에 대해 콘솔에는 **이름**, 리소스의 **총** 수량, 현재 **사용 중**인 수 및 아직 **사용 가능한** 수가 **사용률** 계산(사용 중인 리소스 수를 해당 리소스의 총 수량으로 나눈 값)과 함께 표시됩니다.

   각 **보충 불가** 리소스에 대해 콘솔에는 **이름**, 현재 **사용 중**인 수 및 여전히 **사용 가능**한 수가 표시됩니다.

콘솔의 작업 세부 정보 페이지에서 사용 가능한 리소스에 대한 현재 정보를 볼 수도 있습니다.

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 패널에서 **작업**을 선택한 다음 작업 이름을 선택하여 해당 작업에 대한 세부 정보 페이지를 엽니다.

1. **보충 가능 리소스**와 **보충 불가 리소스** 모두에 대한 정보는 작업에 리소스가 필요한 경우 확인할 수 있습니다. 두 유형 모두에 대해 콘솔에는 **이름**, 작업에 **요청된** 수량, 여전히 **사용 가능**한 수량, 현재 **사용 중**인 수량, **총** 리소스 수량이 **현재 사용률** 계산(작업에서 사용 중인 리소스 수를 해당 리소스의 총 수량으로 나눈 값)과 함께 표시됩니다.

**API:**

다음 정보를 반환하는 [`DescribeConsumableResource` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeConsumableResource.html)를 사용합니다.

```
{
   "availableQuantity": number,
   "consumableResourceArn": "string",
   "consumableResourceName": "string",
   "createdAt": number,
   "inUseQuantity": number,
   "resourceType": "string",
   "tags": { 
      "string" : "string" 
   },
   "totalQuantity": number
}
```

또한 [`ListConsumableResources` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_ListConsumableResources.html)는 사용 중인 리소스 수(`inUseQuantity`)와 현재 사용 가능한 총 리소스 수(`totalQuantity`)를 계정에서 생성한 모든 소모성 리소스 목록의 일부로 보고합니다. 또한 이 API를 사용하면 소모성 리소스 이름을 기반으로 소모성 리소스 목록 쿼리를 필터링할 수 있습니다.

# 작업에서 사용 중인 리소스의 수량 업데이트
<a name="resource-aware-scheduling-how-to-update-quantity"></a>

리소스의 총 수량을 새 값으로 재설정하거나, 총 수량에 추가하거나, 리소스에서 차감할 수 있습니다.

지정한 새 총 수량이 이전보다 큰 경우 Batch는 적절히 더 많은 작업을 예약합니다. 새 총 수량이 이전보다 작고 사용 중인 이 리소스의 유닛이 없는 경우 Batch는 총(또는 사용 가능한) 수량을 줄입니다. 사용 중인 유닛이 있는 경우, Batch는 사용 가능한 수량을 즉시 줄이고 작업이 완료되면 총(사용 가능한) 수량을 줄여 결국 새 수량에 도달합니다.

**콘솔**:

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 패널에서 **소모성 리소스**를 선택합니다.

1. **보충 가능** 또는 **보충 불가능** 탭을 선택하여 생성한 해당 유형의 리소스를 봅니다.

1. **보충 불가**한 리소스의 경우:

   1. 업데이트할 리소스를 선택한 다음 **작업**을 선택하고 **리소스 설정**, **리소스 추가** 또는 **리소스 제거**를 선택합니다.

   1. 이전 단계에서 선택한 작업에 따라 **총 값을 설정**하거나, **리소스를 추가**하거나 **리소스를 제거**할 수 있는 팝업 창이 나타납니다. 새 총 값으로 설정할 수량, 총 수량에 추가할 수량 또는 총 수량에서 차감할 수량을 입력한 다음 **확인**을 선택합니다.

   **보충 불가**한 리소스의 경우:

   1. 업데이트할 리소스를 선택한 다음 **작업**을 선택하고 **리소스 설정**, **리소스 추가** 또는 **리소스 제거**를 선택합니다.

   1. 이전 단계에서 선택한 작업에 따라 **사용 가능 값을 설정**하거나, **리소스를 추가**하거나 **리소스를 제거**할 수 있는 팝업 창이 나타납니다. 새 사용 가능 값으로 설정할 수량, 사용 가능 수량에 추가할 수량 또는 사용 가능 수량에서 차감할 수량을 입력한 다음 **확인**을 선택합니다.

**API:**

[`UpdateConsumableResource` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateConsumableResource.html)를 사용하여 리소스에 대한 새 총 수량을 설정하거나 총 수량을 늘리거나 줄입니다.

# 특정 소모성 리소스가 필요한 작업 찾기
<a name="resource-aware-scheduling-how-to-find-jobs"></a>

Batch를 사용하여 특정 소모성 리소스가 필요한 작업 목록을 검색할 수 있습니다.

**콘솔**:

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 패널에서 **소모성 리소스**를 선택합니다.

1. 목록에서 소모성 리소스의 이름을 선택합니다. 해당 리소스에 대한 세부 정보 페이지가 열립니다.

1. **작업 검색** 아래에 작업 목록에 적용할 필터를 입력합니다. **작업 이름**('같음', '다음으로 시작'), **날짜 범위**(작업이 생성된 날짜) 및 **추가 기준**('작업 대기열', '작업 정의', '공유 작업 식별자')으로 필터링할 수 있습니다. 적용할 각 필터 유형에 대해 드롭다운 목록의 사용 가능한 옵션 중에서 선택하고 요청된 추가 정보를 입력합니다.

   **검색**을 선택합니다.

1. 작업 이름, 상태, 소모성 리소스의 요청된 유닛 수, 기타 필요한 소모성 리소스 등을 포함하여 소모성 리소스가 필요한 작업의 (필터링된) 목록이 표시됩니다. 이 목록을 사용하여 **취소**하거나 **종료**할 작업을 하나 이상 선택할 수 있습니다. 작업 이름을 선택하여 해당 작업의 세부 정보 페이지를 열 수도 있습니다.

1. 이제 **작업 검색**에서 **결과를 새로 고침**하거나 **검색을 지우고** 다시 시작할 수 있습니다.

**API:**

[`ListJobsByConsumableResource` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_ListJobsByConsumableResource.html)에서 특정 소모성 리소스를 사용하는 작업의 목록을 가져올 수 있습니다. 또한 이 API를 사용하면 작업 상태 또는 작업 이름을 사용하여 작업 목록 쿼리를 필터링할 수 있습니다.

# 소모성 리소스 삭제
<a name="resource-aware-scheduling-how-to-delete"></a>

리소스가 필요한 작업이 여전히 실행 중인 경우에도 언제든지 소모성 리소스를 삭제할 수 있습니다. 소모성 리소스가 삭제되면 삭제 명령이 수신된 시간과 작업 스케줄러가 삭제를 준수하는 시간 사이에 간격이 있을 수 있으므로 리소스를 사용하는 작업이 삭제 호출 직후 예약될 수 있습니다. 삭제된 소모성 리소스에 리소스 유형(`resourceType`) `REPLENISHABLE`이 있는 경우 이는 작업이 완료되면 무시됩니다. 소모성 리소스를 삭제하고 동일한 이름으로 다시 생성하는 경우 동일한 리소스로 간주되며 `RUNNABLE` 작업에서 사용할 수 있습니다.

**콘솔**:

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 패널에서 **소모성 리소스**를 선택합니다.

1. **보충 가능** 또는 **보충 불가능** 탭을 선택하여 생성한 해당 유형의 리소스를 봅니다.

1. 삭제하려는 각 리소스를 선택한 다음 **삭제**를 선택합니다. **소모성 리소스 삭제** 팝업 창이 나타납니다. 삭제를 확인하려면 **삭제**를 선택합니다.

콘솔의 세부 정보 페이지에서 소모성 리소스를 삭제할 수도 있습니다.

1. [AWS Batch 콘솔](https://console.aws.amazon.com/batch)의 왼쪽 탐색 패널에서 **소모성 리소스**를 선택합니다.

1. **보충 가능** 또는 **보충 불가능** 탭을 선택하여 생성한 해당 유형의 리소스를 봅니다.

1. 삭제할 리소스의 이름을 선택합니다. 소모성 리소스의 세부 정보 페이지가 나타납니다. **삭제**를 선택합니다. **소모성 리소스 삭제** 팝업 창이 나타납니다. 삭제를 확인하려면 **삭제**를 선택합니다.

**API:**

[`DeleteConsumableResource` API](https://docs.aws.amazon.com/batch/latest/APIReference/API_DeleteConsumableResource.html)를 사용하여 소모성 리소스를 삭제합니다.

# 할당량 관리
<a name="quota-management"></a>

AWS Batch 는 작업에 필요한 리소스와 연결된 서비스 환경(SE)에서 사용 가능한 용량을 기반으로 작업을 예약하여 컴퓨팅 리소스의 활용도를 높입니다. 또한 관리자는 할당량 관리를 통해 팀 또는 프로젝트가 더 세분화된 리소스 할당을 통해 사용할 수 있는 리소스 수를 제어할 수 있습니다.

할당량 관리를 통해 관리자는 컴퓨팅 **할당량(용량 제한) 및 유휴 컴퓨팅을 위한 리소스 공유 전략을 포함하는 리소스**와 같은 관련 할당량 공유를 정의하여 팀과 프로젝트 간에 공유 컴퓨팅 리소스를 효율적으로 할당할 수 있습니다. AWS Batch **** 각 할당량 공유는 연결된 작업 대기열 내에 중첩된 가상 대기열로 작동합니다. 작업 대기열에 대한 작업을 예약할 때 AWS Batch 는 연결된 모든 할당량 공유를 반복합니다.

관리자는 할당량 공유 간에 리소스 공유를 자신 있게 활성화할 수 있습니다. **선점**은 모든 할당량 공유가 필요할 때 다른 사람에게 임대한 리소스를 회수할 수 있도록 허용하기 때문입니다. 할당량 공유 내에서 우선 순위가 높은 작업에 대해 실행 중인 작업을 선점할지 아니면 실행 중인 작업을 완료할지 선택할 수 있습니다. 작업 우선 순위는 제출 시 설정하고 나중에 업데이트할 수 있습니다. 선점 결정이 내려지면 업데이트된 우선 순위가 고려됩니다. 용량 사용률은 대기열, 할당량 공유 및 작업 수준 세부 수준에서 모니터링할 수 있습니다.

할당량 관리는 `SAGEMAKER_TRAINING` 서비스 환경에 연결된 작업 대기열에서만 지원됩니다.

**Topics**
+ [할당량 공유](quota-shares.md)
+ [선점](preemption.md)
+ [할당량 관리 리소스 생성](create-quota-management-resources.md)
+ [할당량 공유 생성](create-quota-shares.md)
+ [할당량 공유에 작업 제출](submit-job-quota-share.md)

# 할당량 공유
<a name="quota-shares"></a>

**할당량 공유**는 작업 대기열 아래에 중첩되는 가상 대기열입니다. 최대 20개의를 모든 작업 대기열에 연결할 수 있습니다. 할당량 공유를 사용하면 **용량 제한을** 사용하여 팀 또는 프로젝트에 컴퓨팅 할당량을 할당할 수 있습니다. 할당량 공유는 하나 이상의 용량 제한을 제공해야 하며 최대 5개의 용량 제한을 지원합니다. 각 용량 제한은 지원되는 SageMaker 훈련 작업 인스턴스 유형에 대한 인스턴스 제한으로 표시되어야 합니다.

## 할당량 공유 리소스 공유 전략
<a name="quota-share-resource-sharing"></a>

할당량 공유에는 명시적 리소스 공유 구성도 있습니다.
+ 할당량 공유의 유휴 컴퓨팅을 해당 작업에 대해서만 예약해야 하는 경우를 선택합니다`RESERVE`.
+ 할당량 공유의 유휴 컴퓨팅을 다른 할당량 공유에 임대할 수 있는 경우를 선택합니다`LEND`.
+ 할당량 공유의 유휴 컴퓨팅을 다른 할당량 공유에 임대할 수 있고 할당량 공유의 작업이 유휴 컴퓨팅을 임대하도록 허용해야 하는 경우 구성된 임대 한도`LEND_AND_BORROW`로를 선택합니다.

## 선점으로 용량 복원
<a name="capacity-limit-restoration"></a>

AWS Batch 는 **교차 공유 선점 작업을** 수행하여 작업이 도착할 때 빌린 용량을 할당량 공유로 복원합니다. 선점할 작업을 선택할 때는 작업이 빌리는 인스턴스의 수와 유형, 작업의 상대적 우선순위 및 작업 기간을 AWS Batch 고려하고 사용자 지정 휴리스틱을 적용합니다.

할당량 공유의 용량 제한을 낮추는 관리자는 해당 할당량 공유에서 이미 소비`RESERVE`한 용량이 감소된 용량 제한을 초과하는 경우 리소스 공유 전략으로 `LEND` 또는를 선택했더라도 해당 할당량 내 , `SCHEDULED` `STARTING`또는 `RUNNING` 작업을 선점할 수 있습니다.

# 선점
<a name="preemption"></a>

할당량 관리는 **선점을** 통합하는 유일한 AWS Batch 예약 알고리즘으로,는 `SCHEDULED`, `STARTING`또는 `RUNNING` 작업을 AWS Batch 중지하여 `RUNNABLE` 작업 용량을 생성합니다.

## 교차 공유 선점
<a name="cross-share-preemption"></a>

할당량 관리는 **교차 공유 선점을** 사용하여 작업이 도착할 때 빌린 용량을 할당량 공유로 복원합니다.

할당량 공유의 용량 제한을 낮추는 관리자는 해당 할당량 공유가 소비하는 용량이 이제 구성된 용량 제한을 초과하는 경우 해당 할당량 내의 , `SCHEDULED` `STARTING`또는 `RUNNING` 작업을 선점 대상으로 지정할 수도 있습니다.

## 공유 중 선점
<a name="in-share-preemption"></a>

할당량 공유는 **공유 중 선점** 사항을 활성화하도록 구성할 수 있습니다. 이렇게 하면 우선 순위가 높은 `RUNNABLE` 작업이 `SCHEDULED`, `STARTING`또는에 입력된 동일한 할당량 공유 내에서 우선 순위가 낮은 작업의 선점을 트리거할 수 있습니다`RUNNING`.

## 선점 선택 알고리즘
<a name="preemption-selection-algorithm"></a>

선점할 작업을 선택할 때 작업이 빌리는 인스턴스의 수와 유형, 작업의 상대적 우선순위 및 작업 기간을 AWS Batch 고려하고 사용자 지정 휴리스틱을 적용합니다. [UpdateServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateServiceJob.html) API 호출을 사용하여 제출 후 작업`schedulingPriority`의를 업데이트할 수 있습니다. 이는 `RUNNING` 작업의 우선순위를 낮추거나(선점 가능성 증가) 공유 선점 기능이 활성화된 할당량 공유에서 `RUNNABLE` 작업의 우선순위를 높여 작업이 이미 실행 중인 작업을 선점할 수 있도록 하는 데 유용할 수 있습니다.

## 선점 재시도
<a name="preemption-retries"></a>

기본값은 선점된 작업을 제한 `RUNNABLE` 없이 다시 대기열에 추가하기 위한 것입니다. 작업 경험의 선점 횟수를 제한하려면 작업 제출 `preemptionRetriesBeforeTermination` 시를 설정합니다. `preemptionRetriesBeforeTermination`가 0으로 설정되면 작업은 첫 번째 선점 `FAILED` 시 로 이동합니다.

최근 선점 시도의 슬라이딩 윈도우는 작업에 저장되며 [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)을 통해 볼 수 있습니다.

# 할당량 관리 리소스 생성
<a name="create-quota-management-resources"></a>

할당량 관리는 연결된 예약 정책, 서비스 환경 및 작업 대기열을 생성할 때 특정 설정이 필요합니다.

## 사전 조건
<a name="quota-management-resources-prerequisites"></a>

할당량 관리 리소스를 생성하기 전에 다음을 수행해야 합니다.
+ **IAM 권한** - 작업 대기열, 예약 정책 및 서비스 환경을 생성하고 관리할 AWS Batch 수 있는 권한입니다. 자세한 내용은 [AWS Batch IAM 정책, 역할 및 권한](IAM_policies.md) 단원을 참조하십시오.

------
#### [ Configure quota management resources (AWS Batch console) ]

 AWS Batch 콘솔은 할당량 관리에 필요한 모든 리소스를 생성하기 위한 통합 워크플로를 제공합니다. 할당량 관리 작업 대기열 생성 워크플로는 할당량 관리 지원 예약 정책 및 서비스 환경도 생성합니다.

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

1. 탐색 창에서 **작업 대기열을** 선택한 다음 **생성을** 선택합니다.

1. **오케스트레이션 유형**에서 **SageMaker 훈련**을 선택합니다.

1. **작업 대기열 구성**에서 다음을 수행합니다.

   1. **이름**에 작업 대기열의 이름을 입력합니다.

   1. **Priority**에 0에서 1000 사이의 값을 입력합니다. 우선 순위가 높은 작업 대기열에는 서비스 환경에 대한 기본 설정이 지정됩니다.

1. **예약의** 경우:

   1. **예약 알고리즘**에서 **할당량 관리를** 선택합니다.

   1. **예약 정책 ARN의** 경우:
      + 할당량 관리를 지정하는 예약 정책이 이미 있는 경우 드롭다운에서 선택합니다.
      + 그렇지 않으면 **예약 정책 생성을** 선택합니다.

        1. 사이드바가 열리고 할당량 관리 예약 정책을 구성합니다.

        1. 예약 정책의 **이름을** 입력합니다.

        1. **생성(Create)**을 선택합니다. 이제 **예약 정책 ARN** 필드가 채워집니다.

1. **서비스 환경** 구성의 경우 **연결된 서비스 환경에서** 다음을 수행합니다.
**참고**  
할당량 관리가 활성화된 서비스 환경은 단일 할당량 관리가 활성화된 작업 대기열에만 연결할 수 있습니다.

   1. 할당량 관리와 호환되고 아직 할당량 관리가 활성화된 작업 대기열에 연결되지 않은 서비스 환경이 이미 생성된 경우 드롭다운에서 선택합니다.

   1. 그렇지 않으면 **서비스 환경 생성을** 선택합니다. 사이드바가 열리고 서비스 환경을 구성합니다.

      1. 서비스 환경의 **이름을** 입력합니다.

      1. 하나 이상의 용량 제한(및 최대 5개)을 제공합니다. 각 용량 제한에 대해 드롭다운에서 **인스턴스 유형**과 **최대 인스턴스 수**를 선택합니다.

1. (선택 사항) **작업 상태 제한**의 경우:

   1. **구성 오류**에서 둘 중 하나를 선택하고 **최대 실행 가능 시간(초)을** `SERVICE_ENVIRONMENT_MAX_RESOURCE` 입력합니다.

   1. **용량**에서 `INSUFFICIENT_INSTANCE_CAPACITY`를 선택하고 **최대 실행 가능 시간(초)**을 입력합니다.

1. **작업 대기열 생성을** 선택합니다.

------
#### [ Configure quota management resources (AWS CLI) ]

 AWS CLI를 통해 할당량 관리를 구성하려면 예약 정책, 서비스 환경 및 작업 대기열을 생성합니다. 예약 정책과 서비스 환경 모두 할당량 관리와 호환되어야 하며 작업 대기열을 생성하기 전에 생성되어야 합니다.

**예약 정책 생성**

`create-scheduling-policy` 명령을 사용하여 할당량 관리 호환 예약 정책을 생성합니다. 생성 중에 할당량 공유 정책을 제공합니다.

```
aws batch create-scheduling-policy \
  --name my-qm-sagemaker-scheduling-policy \
  --quota-share-policy idleResourceAssignmentStrategy="FIFO"
```

예약 정책이 성공적으로 생성되었는지 확인합니다.

```
aws batch describe-scheduling-policies \
  --arns arn-for-my-qm-sagemaker-scheduling-policy
```

**서비스 환경 생성**

`create-service-environment` 명령을 사용하여 할당량 관리가 활성화된 서비스 환경을 생성합니다. 용량 제한이 `ml.g6.xlarge` 또는와 같이 SageMaker 훈련 작업에서 허용하는 인스턴스 유형을 사용하는지 확인합니다`ml.p4d.24xlarge`.

```
aws batch create-service-environment \
  --service-environment-name my-qm-sagemaker-service-env \
  --service-environment-type SAGEMAKER_TRAINING \
  --capacity-limits capacityUnit=instance_type,maxCapacity=instance_count
```

서비스 환경이 성공적으로 생성되었는지 확인합니다.

```
aws batch describe-service-environments \
  --service-environments my-qm-sagemaker-service-env
```

**작업 대기열 생성**

`create-job-queue` 명령을 사용하여 할당량 관리가 활성화된 작업 대기열을 생성합니다. 단, 다음 기준을 만족해야 합니다.
+ 현재 다른 작업 대기열에 연결되지 않은 단일 `SAGEMAKER_TRAINING` 서비스 환경을 제공해야 합니다.
+ 서비스 환경은 `ml.m6i.xlarge`가 아닌와 같은 인스턴스 유형 측면에서 용량 제한을 표시해야 합니다`NUM_INSTANCES`.
+ 가 포함된 예약 정책을 연결해야 합니다`quotaSharePolicy`.
+ `jobQueueType`이 `SAGEMAKER_TRAINING`이어야 합니다.

```
aws batch create-job-queue \
  --job-queue-name my-qm-sagemaker-jq \
  --job-queue-type SAGEMAKER_TRAINING \
  --priority 1 \
  --service-environment-order order=1,serviceEnvironment=my-qm-sagemaker-service-env \
  --scheduling-policy-arn arn-for-my-qm-sagemaker-scheduling-policy
```

작업 대기열이 성공적으로 생성되었는지 확인합니다.

```
aws batch describe-job-queues \
  --job-queues my-qm-sagemaker-jq
```

다음을 확인하세요.
+ `state`는 `ENABLED`입니다.
+ `status`는 `VALID`입니다.
+ `statusReason`은 `JobQueue Healthy`입니다.

------

# 할당량 공유 생성
<a name="create-quota-shares"></a>

할당량은 스케줄러가 예약할 때 반복하는 연결된 작업 대기열 내의 가상 대기열로 함수를 AWS Batch 공유합니다. 이를 통해 관리자는 리소스 공유 전략에 대한 명시적 구성을 ` capacity limits `사용하여를 통해 팀 또는 프로젝트에 컴퓨팅 할당량을 할당할 수 있습니다.

## 사전 조건
<a name="create-quota-shares-prerequisites"></a>

할당량 공유를 생성하기 전에 다음을 확인해야 합니다.
+ **할당량 관리 예약 정책, 서비스 환경 및 작업 대기열** - 할당량 관리 예약 정책, 서비스 환경 및 할당량 관리가 활성화된 작업 대기열입니다. 자세한 내용은 [할당량 관리 리소스 생성](create-quota-management-resources.md) 단원을 참조하십시오.
+ **IAM 권한** - 할당량 공유를 생성하고 관리할 AWS Batch 수 있는 권한입니다. 자세한 내용은 [AWS Batch IAM 정책, 역할 및 권한](IAM_policies.md) 단원을 참조하십시오.

------
#### [ Configure quota shares (AWS Batch console) ]

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) AWS Batch 콘솔을 엽니다.

1. 탐색 창의 **작업 대기열을** 선택하고 목록에서 할당량 관리가 활성화된 작업 대기열을 선택합니다. 작업 대기열 이름 링크를 선택합니다.

1. **할당량 공유** 섹션에서 **할당량 공유 생성을** 선택합니다.

1. 할당량 공유의 **이름을** 입력합니다.

1. **용량 제한**에서 **용량 제한 추가**를 선택합니다. 용량 제한을 하나 이상 지정해야 합니다.

   1. 드롭다운에서 **인스턴스 유형을** 선택하고이 할당량 공유가 할당한 **최대 인스턴스**를 설정합니다.

   1. (선택 사항) **용량 제한 추가**를 선택하고 반복하여 최대 5개의 용량 제한을 연결합니다.

1. **용량 공유**에서이 할당량 공유가 동일한 작업 대기열의 다른 할당량 공유와 용량을 공유하는 방법을 선택합니다.
   + 할당량 공유가 유휴 컴퓨팅을 대여하거나 빌려서는 안 되는 경우 **예약을** 선택합니다.
   + 할당량 공유가 유휴 컴퓨팅을 다른 할당량 공유에 부여할 수 있는 경우 **대출**을 선택합니다.
   + 할당량 공유가 유휴 컴퓨팅을 대여 및 대여할 수 있는 경우 **대출 및** 대여를 선택하고, 작업이 도착하면 교차 공유 선점을 통해 임대 컴퓨팅을 회수합니다.

1. (선택 사항) **공유 중 선점**에서 공유 중 선점 활성화 또는 비활성화 여부를 선택합니다. 공유 중 선점 기능을 활성화하면 우선 순위가 높은 작업이 이미 `SCHEDULED`, `STARTING`또는 `RUNNING` 상태인 우선 순위가 낮은 작업을 선점할 수 있습니다. 공유 중 선점을 비활성화하면 우선 순위가 높은 작업이 용량이 사용 가능해질 때까지 대기합니다.

1. **할당량 공유 생성을** 선택합니다.

------
#### [ Configure quota shares (AWS CLI) ]

`create-quota-share` 명령을 사용하여 할당량 공유를 생성합니다. 리소스 공유 전략과 공유 내 선점 활성화 여부를 선택해야 합니다.

**대출 및 대여 예제**

다음 예제에서는 유휴 용량을 대여하고 대여할 수 있는 할당량 공유를 생성하며, 대여 한도는 구성된 용량 한도의 100%입니다. 또한 공유 중 선점도 활성화하므로 우선 순위가 높은 작업은 SageMaker AI 내에서 예약된 우선 순위가 낮은 작업이 완료될 때까지 기다리지 않습니다.

```
aws batch create-quota-share \
  --quota-share-name lend_and_borrow_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=5,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=LEND_AND_BORROW,borrowLimit=100 \
  --preemption-configuration inSharePreemption=ENABLED
```

**대출 전용 예제**

할당량 공유는 유휴 용량만 대여하고 직접 빌리지 않도록 구성할 수 있습니다. 다음 예제는 공유 내 선점 비활성화`LEND`가 있는 페어입니다.

```
aws batch create-quota-share \
  --quota-share-name lend_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=8,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=LEND \
  --preemption-configuration inSharePreemption=DISABLED
```

**예약 예제**

유휴 용량을 예약하도록 할당량 공유를 구성할 수도 있습니다. 할당량 공유에 유휴 용량이 있는 경우 새로 제출된 작업은 더 빨리 시작될 수 있지만 할당량 공유에 작업이 없는 경우 전체 대기열 사용률이 낮아집니다.

```
aws batch create-quota-share \
  --quota-share-name reserved_qs \
  --job-queue my-qm-sagemaker-jq \
  --capacity-limits maxCapacity=2,capacityUnit=ml.m6i.large \
  --resource-sharing-configuration strategy=RESERVE \
  --preemption-configuration inSharePreemption=DISABLED
```

------

# 할당량 공유에 작업 제출
<a name="submit-job-quota-share"></a>

할당량 관리 작업 대기열에서는 모든 작업이 작업 제출 시 할당량 공유를 지정해야 합니다. 할당량 공유에 작업을 제출하려면 [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html)`quotaShareName`에서를 지정합니다. 선택적으로를 제공하여 작업 시도가에 들어가기 전에 선점 시도 횟수를 제한할 `preemptionConfiguration` 수 있습니다`FAILED`. 작업 경험의 선점 횟수를 제한하려면 작업 제출 시 [ServiceJobPreemptionConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_ServiceJobPreemptionConfiguration.html) `preemptionRetriesBeforeTermination` 내에서를 설정합니다.

## 사전 조건
<a name="submit-job-quota-share-prerequisites"></a>

할당량 공유에 작업을 제출하기 전에 다음을 갖추어야 합니다.
+ **할당량 관리 리소스** - 할당량 관리를 위해 구성된 예약 정책, 서비스 환경 및 작업 대기열입니다. 자세한 내용은 [할당량 관리 리소스 생성](create-quota-management-resources.md) 단원을 참조하십시오.
+ **할당량 공유** - 작업 대기열에 하나 이상의 할당량 공유가 생성되었습니다. 자세한 내용은 [할당량 공유 생성](create-quota-shares.md) 단원을 참조하십시오.
+ **IAM 권한** - 작업을 제출할 수 있는 권한입니다 AWS Batch. 자세한 내용은 [AWS Batch IAM 정책, 역할 및 권한](IAM_policies.md) 단원을 참조하십시오.

## 할당량 공유에 서비스 작업 제출
<a name="submit-job-quota-share-example"></a>

아래 표는 SageMaker Python SDK 또는 AWS CLI를 사용하여 할당량 공유에 서비스 작업을 제출하는 방법을 보여줍니다.

------
#### [ Submit using the SageMaker Python SDK ]

[SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/v3-examples/training-examples/aws_batch/sm-training-queues_quota-management.html)는 할당량 관리가 활성화된 작업 대기열에 작업을 제출할 수 있도록 기본적으로 지원됩니다. 다음 예제에서는 모델 트레이너를 생성하고, 훈련 대기열을 생성하고, 할당량 공유에 작업을 제출하는 방법을 보여줍니다. 전체 예제는 GitHub의 [전체 샘플 노트북](https://github.com/aws/sagemaker-python-sdk/blob/master/v3-examples/training-examples/aws_batch/sm-training-queues_quota-management.ipynb)을 참조하세요.

훈련 작업 구성을 `ModelTrainer` 정의하는를 생성합니다.

```
from sagemaker.train.model_trainer import ModelTrainer
from sagemaker.train.configs import SourceCode, Compute, StoppingCondition

source_code = SourceCode(command="echo 'Hello World'")

model_trainer = ModelTrainer(
    training_image="123456789012.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:2.5-gpu-py311",
    source_code=source_code,
    base_job_name="my-training-job",
    compute=Compute(instance_type="ml.g5.xlarge", instance_count=1),
    stopping_condition=StoppingCondition(max_runtime_in_seconds=300),
)
```

할당량 관리가 활성화된 작업 대기열을 이름으로 참조하는 `TrainingQueue` 객체를 생성합니다.

```
from sagemaker.train.aws_batch.training_queue import TrainingQueue

queue = TrainingQueue("my-sagemaker-job-queue")
```

를 호출`queue.submit`하고를 지정하여 할당량 공유에 작업을 제출합니다`quota_share_name`. 할당량 공유 내에서 작업 순서에 영향을 미치`priority`려면를 설정해야 합니다. 실제 환경에서`ModelTrainer`는 훈련할 데이터가 `inputs` 있어야 합니다.

```
job = queue.submit(
    job_name="my-training-job",
    training_job=model_trainer,
    quota_share_name="my_quota_share",
    priority=3,
    inputs=None,
)
```

------
#### [ Submit using the AWS CLI ]

다음 예제에서는 **submit-service-job** 명령을 사용하여 할당량 공유에 작업을 제출합니다.

```
aws batch submit-service-job \
    --job-name "my-sagemaker-training-job" \
    --job-queue "my-sagemaker-job-queue" \
    --service-job-type "SAGEMAKER_TRAINING" \
    --quota-share-name "my_quota_share" \
    --timeout-config '{"attemptDurationSeconds":3600}' \
    --scheduling-priority 5 \
    --service-request-payload '{\"TrainingJobName\": \"sagemaker-training-job-example\", \"AlgorithmSpecification\": {\"TrainingImage\": \"123456789012.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:1.8.0-cpu-py3\", \"TrainingInputMode\": \"File\", \"ContainerEntrypoint\":  [\"sleep\", \"1\"]}, \"RoleArn\":\"arn:aws:iam::123456789012:role/SageMakerExecutionRole\", \"OutputDataConfig\": {\"S3OutputPath\": \"s3://example-bucket/model-output/\"}, \"ResourceConfig\": {\"InstanceType\": \"ml.m5.large\", \"InstanceCount\": 1, \"VolumeSizeInGB\": 1}}'"
```

------

# 서비스 작업 용량 사용률 추적
<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 훈련 작업 상태는 훈련 프로세스에 대한 서비스별 세부 정보를 제공합니다.

# 컴퓨팅 작업 용량 사용률 추적
<a name="track-capacity-utilization-compute-jobs"></a>

AWS Batch 는 대기열에서 ECS, EKS 및 Fargate 컴퓨팅 작업의 용량 사용률을 추적하는 데 함께 사용할 수 있는 여러 API 작업을 제공합니다. 모니터링 워크플로는 작업 대기열에 연결된 예약 정책의 유형에 따라 달라집니다.

*선입선출(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
    }
}
```

이 예제에서 대기열은 모든 디스패치된 작업에서 총 96vCPUs를 사용합니다.

------
#### [ 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` 필드는 대기열이 총 192vCPUs를 소비함을 보여줍니다. `fairshareUtilization` 객체는 공유별 분석을 보여줍니다. 공유는 128개의 vCPUs `team-a` 소비하고 공유는 64개의 vCPU를 `team-b` 소비합니다. vCPUs

------

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

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

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

공정 공유 예약 정책에 대한 자세한 내용은 섹션을 참조하세요[공정 공유 예약 정책](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 및 메모리)
+ 작업 정의 및 컴퓨팅 환경 세부 정보
+ 예약 우선 순위 및 재시도 구성
+ 시작 및 중지 시간이 포함된 자세한 시도 정보
+ 컨테이너 로그에 액세스하기 위한 로그 스트림 정보