Amazon ECS Linux 컨테이너 인스턴스 메모리 예약 - Amazon Elastic Container Service

Amazon ECS Linux 컨테이너 인스턴스 메모리 예약

Amazon ECS 컨테이너 에이전트가 클러스터에 컨테이너 인스턴스를 등록할 때 에이전트는 컨테이너 인스턴스에서 태스크에 대해 예약할 수 있는 메모리 크기를 결정해야 합니다. 플랫폼 메모리 오버헤드와 운영 체제 커널이 차지하는 메모리로 인해 이 수치가 Amazon EC2 인스턴스에 대해 공급된 설치된 메모리 용량과 다르기 때문입니다 예를 들어, m4.large 인스턴스의 설치된 메모리는 8GiB입니다. 그러나 컨테이너 인스턴스 등록 시 항상 작업에 정확히 8,192MiB의 메모리를 사용할 수 있는 것은 아닙니다.

Amazon ECS 컨테이너 에이전트는 ECS_RESERVED_MEMORY라는 구성 변수를 제공합니다. 이를 사용하여 작업에 할당된 풀에서 지정된 메모리 크기(MiB)를 제거할 수 있습니다. 이를 통해 중요 시스템 프로세스에 대한 메모리를 효율적으로 예약합니다.

컨테이너 인스턴스의 모든 메모리를 작업에 사용하는 경우 작업 및 메모리의 중요 시스템 프로세스 경합으로 인해 시스템 오류가 발생할 수 있습니다.

예를 들어, 컨테이너 에이전트 구성 파일에서 ECS_RESERVED_MEMORY=256을 지정한 경우 에이전트는 인스턴스에 대해 총 메모리에서 256MiB를 제외하고 등록하며, 이 256MiB의 메모리는 ECS 작업에 할당될 수 없습니다. 에이전트 구성 변수 및 이를 설정하는 방법에 대한 자세한 정보는 Amazon ECS 컨테이너 에이전트 구성데이터 전달을 위한 Amazon ECS Linux 컨테이너 인스턴스 부트스트래핑 섹션을 참조하세요.

작업에 대해 8,192MiB를 지정하고, 이 요구 사항을 충족하기 위해 8,192MiB 이상의 메모리를 사용할 수 있는 컨테이너 인스턴스가 없는 경우 작업은 클러스터에 배치될 수 없습니다. 관리형 컴퓨팅 환경을 사용 중인 경우 AWS Batch는 요청을 수용하기 위해 더 큰 인스턴스 유형을 시작해야 합니다.

또한, Amazon ECS 컨테이너 에이전트 및 컨테이너 인스턴스의 기타 핵심 시스템 프로세스에 대해 일부 메모리를 예약해야 합니다. 그래야 작업의 컨테이너가 동일한 메모리와 경합하지 않고, 그에 따라 시스템 오류가 발생하지 않을 수 있습니다.

Amazon ECS 컨테이너 에이전트는 Docker ReadMemInfo() 함수를 사용하여 운영 체제가 사용할 수 있는 전체 메모리를 쿼리합니다. Linux 및 Windows 모두 명령줄 유틸리티를 제공하여 총 메모리를 결정합니다.

예 - Linux 총 메모리 결정

free 명령은 운영 체제가 인식한 총 메모리를 반환합니다.

$ free -b

Amazon ECS 최적화된 Amazon Linux AMI를 실행하는 m4.large 인스턴스의 출력 예.

total used free shared buffers cached Mem: 8373026816 348180480 8024846336 90112 25534464 205418496 -/+ buffers/cache: 117227520 8255799296

이 인스턴스의 총 메모리는 8,373,026,816바이트로, 이는 태스크에 대해 7,985MiB를 사용할 수 있음을 의미합니다.

예 - Windows 총 메모리 결정

wmic 명령은 운영 체제가 인식한 총 메모리를 반환합니다.

C:\> wmic ComputerSystem get TotalPhysicalMemory

Amazon ECS 최적화 Windows Server AMI를 실행하는 m4.large 인스턴스의 출력 예제.

TotalPhysicalMemory 8589524992

이 인스턴스의 총 메모리는 8,589,524,992바이트로, 이는 작업에 대해 8,191MiB를 사용할 수 있음을 의미합니다.

컨테이너 인스턴스 메모리 보기

컨테이너 인스턴스가 Amazon ECS 콘솔(또는 DescribeContainerInstances API 작업)에 등록하는 메모리 크기를 확인할 수 있습니다. 특정 인스턴스 유형에 대해 가능한 한 많은 메모리를 작업에 제공하여 리소스 사용률을 극대화하려는 경우 해당 컨테이너 인스턴스에 사용 가능한 메모리를 관찰한 다음, 작업에 그만큼의 메모리를 할당할 수 있습니다.

컨테이너 인스턴스 메모리를 보는 방법
  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 탐색 창에서 클러스터를 선택하고 컨테이너 인스턴스를 호스팅하는 클러스터를 선택합니다.

  3. 인프라를 선택한 다음, 컨테이너 인스턴스에서 컨테이너 인스턴스를 선택합니다.

  4. 리소스 섹션에서는 컨테이너 인스턴스에 대해 등록된 메모리와 사용 가능한 메모리를 보여줍니다.

    등록됨 메모리 값은 처음 시작할 때 Amazon ECS에 등록된 컨테이너 인스턴스의 값이며, 사용 가능 메모리 값은 작업에 할당되지 않은 값입니다.