기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EKS AWS Batch 의에 대한 메모리 및 vCPU 고려 사항
Amazon EKS의 AWS Batch 에서 컨테이너에 사용할 수 있는 리소스를 지정할 수 있습니다. 예를 들어 vCPU 및 메모리 리소스에 대해 requests 또는 limits 값을 지정할 수 있습니다.
vCPU 리소스를 지정하기 위한 제약 조건은 다음과 같습니다.
-
vCPU
requests또는limits중 하나는 지정해야 합니다. -
vCPU 유닛 1개는 물리적 코어 또는 가상 코어 1개와 동일합니다.
-
vCPU 값은 정수로 입력하거나 0.25씩 증분하여 입력해야 합니다.
-
유효한 vCPU 값 중 가장 작은 값은 0.25입니다.
-
두 값이 지정되면,
requests값은limits값에 대해 지정된 값과 같거나 이보다 작아야 합니다. 이렇게 하면 소프트 vCPU 구성과 하드 vCPU 구성을 모두 구성할 수 있습니다. -
vCPU 값은 milliCPU 형식으로 지정할 수 없습니다. 예를 들어,
100m(은)는 유효한 형식이 아닙니다. -
AWS Batch 는 조정 결정에
requests값을 사용합니다.requests값이 지정되지 않은 경우limits값이requests값에 복사됩니다.
다음은 메모리 리소스를 지정하기 위한 제약 조건입니다.
-
메모리
requests또는limits중 하나는 지정해야 합니다. -
메모리 값은 mebibytes(MiBs)이어야 합니다.
-
둘 다 지정된 경우
requests값은limits값과 같아야 합니다. -
AWS Batch 는 조정 결정에
requests값을 사용합니다.requests값이 지정되지 않은 경우limits값이requests값에 복사됩니다.
다음은 GPU 리소스를 지정하기 위한 제약 조건입니다.
-
둘 다 지정된 경우
requests값은limits값과 같아야 합니다. -
AWS Batch 는 조정 결정에
requests값을 사용합니다.requests값이 지정되지 않은 경우limits값이requests값에 복사됩니다.
예제: 작업 정의
Amazon EKS 작업 정의 AWS Batch 에서 다음는 소프트 vCPU 공유를 구성합니다. 이렇게 AWS Batch 하면 Amazon EKS에서 인스턴스 유형에 대한 모든 vCPU 용량을 사용할 수 있습니다. 하지만 실행 중인 다른 작업이 있는 경우 작업에는 최대 2개의 vCPU가 할당됩니다. 메모리는 2GB로 제한됩니다.
{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "2", "memory": "2048Mi" } } } ] } } }
Amazon EKS 작업 정의 AWS Batch 의 다음는 request 값이 1 이고 작업에 최대 4 vCPUs를 할당합니다.
{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "1" }, "limits": { "cpu": "4", "memory": "2048Mi" } } } ] } } }
Amazon EKS 작업 정의 AWS Batch 에서 다음는 vCPU limits 값을 1 로 설정하고 메모리 limits 값을 1GB로 설정합니다.
{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ] } } }
가 Amazon EKS AWS Batch 의 작업을 Amazon EKS 포드로 AWS Batch 변환하면 값을 requests 값으로 AWS Batch 복사limits합니다. 이는 requests 값이 지정되지 않은 경우입니다. 위의 예제 작업 정의를 제출하면 포드 spec(은)는 다음과 같습니다.
apiVersion: v1 kind: Pod ... spec: ... containers: - command: - sleep - 60 image: public.ecr.aws/amazonlinux/amazonlinux:2 resources: limits: cpu: 1 memory: 1024Mi requests: cpu: 1 memory: 1024Mi ...
노드 CPU 및 메모리 예약
AWS Batch 는 vCPU 및 메모리 예약에 대한 bootstrap.sh 파일의 기본 로직을 사용합니다. bootstrap.sh 파일에 대한 자세한 내용은 bootstrap.sh
참고
실행 중인 인스턴스가 없는 경우 vCPU 및 메모리 예약은 처음에 AWS Batch 조정 로직 및 의사 결정에 영향을 미칠 수 있습니다. 인스턴스가 실행된 후는 초기 할당을 AWS Batch 조정합니다.
예제: 노드 CPU 예약
CPU 예약 값은 인스턴스에 사용할 수 있는 총 vCPU 수를 사용하여 밀리코어 단위로 계산됩니다.
| vCPU 번호 | 예약 비율(%) |
|---|---|
| 1 | 6% |
| 2 | 1% |
| 3~4 | 0.5% |
| 4 이상 | 0.25% |
위 값을 사용하면 다음과 같습니다.
-
vCPU가 2개 있는
c5.large인스턴스의 CPU 예약 값은 70m입니다. 이 값은 다음과 같은 방식으로 계산됩니다. (1*60)+(1*10)=70m. -
vCPU가 96개 있는
c5.24xlarge인스턴스의 CPU 예약 값은 310m입니다. 이는 다음과 같은 방식으로 계산됩니다. (1*60)+(1*10)+(2*5)+(92*2.5)=310m.
이 예제에서는 c5.large 인스턴스에서 작업을 실행하는 데 사용할 수 있는 밀리코어 vCPU 유닛이 1,930개(2,000~70개로 계산)입니다. 작업에 2 (2*1000 m) vCPU 유닛이 필요한데, 작업이 단일 c5.large 인스턴스에 맞지 않다고 가정하겠습니다. 하지만 1.75 vCPU 유닛이 필요한 작업에는 적합합니다.
예제: 노드 메모리 예약
메모리 예약 값은 다음을 사용하여 메비바이트 단위로 계산됩니다.
-
인스턴스 용량(MiB) 예를 들어 8GB 인스턴스는 7,748MiB입니다.
-
kubeReserved값kubeReserved값은 시스템 대몬(daemon)용으로 예약할 메모리 양입니다.kubeReserved값은 다음과 같은 방식으로 계산됩니다. ((11*인스턴스 유형에서 지원하는 최대 포드 수)+255). 각 인스턴스 유형별로 지원되는 최대 포드 수 목록은 GitHub에서 eni-max-pods.txt를 참조하세요. -
HardEvictionLimit값 사용 가능한 메모리가HardEvictionLimit값 아래로 떨어지면 인스턴스는 포드를 제거하려고 시도합니다.
할당 가능한 메모리를 계산하는 공식은 다음과 같습니다. (instance_capacity_in_MiB)-(11*(maximum_number_of_pods))-255-()).HardEvictionLimit value.
c5.large 인스턴스는 최대 29개의 포드를 지원합니다. c5.large 값이 100MiB인 8GB HardEvictionLimit 인스턴스의 경우 할당 가능한 메모리는 7,074MiB입니다. 이 값은 다음과 같은 방식으로 계산됩니다. (774-(11* 29)-255-100)=7074MiB. 이 예제에서 8,192MiB 작업은 8gibibyte(GiB) 인스턴스임에도 불구하고 이 인스턴스에 맞지 않습니다.
DaemonSets
DaemonSets(을)를 사용할 때 다음 사항을 고려하세요.
-
Amazon EKS 인스턴스 AWS Batch 에서 실행 중인 인스턴스가 없는 경우는 처음에 AWS Batch 조정 로직 및 의사 결정에 영향을 미칠 DaemonSets 수 있습니다.는 AWS Batch 처음에 예상에 대해 0.5개의 vCPU 단위와 500MiB를 할당합니다DaemonSets. 인스턴스가 실행된 후는 초기 할당을 AWS Batch 조정합니다.
-
가 vCPU 또는 메모리 제한을 DaemonSet 정의하는 경우 Amazon EKS 작업 AWS Batch 의 리소스는 더 적습니다. AWS Batch 작업에 DaemonSets 할당된의 수를 최대한 낮게 유지하는 것이 좋습니다.