컨테이너 인스턴스 메모리 관리 - Amazon Elastic Container Service

컨테이너 인스턴스 메모리 관리

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

태스크에 대해 8,192MiB를 지정하고, 이 요건을 충족하기 위해 8,192MiB 이상의 메모리를 사용할 수 있는 컨테이너 인스턴스가 없는 경우 태스크 클러스터에 배치될 수 없습니다 .

또한, Amazon ECS 컨테이너 에이전트 및 컨테이너 인스턴스의 기타 핵심 시스템 프로세스에 대해 일부 메모리를 예약해야 합니다. 그래야 작업의 컨테이너가 동일한 메모리와 경합하지 않고, 그에 따라 시스템 오류가 발생하지 않을 수 있습니다. 기본 AWS Batch 컴퓨팅 리소스 AMI는 또한 Amazon ECS 컨테이너 에이전트 및 기타 중요 시스템 프로세스에 대해 32MiB의 메모리를 예약합니다. 자세한 내용은 시스템 메모리 예약 섹션을 참조하세요.

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 AMI를 실행하는 m4.large 인스턴스의 출력 예.

TotalPhysicalMemory 8589524992

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

시스템 메모리 예약

컨테이너 인스턴스의 모든 메모리가 태스크으로 가득 찬 경우 태스크이 메모리의 중요 시스템 프로세스와 경합하여 시스템 오류가 발생할 수 있습니다. Amazon ECS 컨테이너 에이전트는 ECS_RESERVED_MEMORY라는 구성 변수를 제공합니다. 이를 사용하여 태스크에 할당된 풀의 지정된 메모리 용량(MiB)을 제거할 수 있습니다. 이를 통해 중요 시스템 프로세스에 대한 메모리를 효율적으로 예약합니다.

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

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

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

컨테이너 인스턴스 메모리를 보려면

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

  2. 보려는 컨테이너 인스턴스를 호스팅하는 클러스터를 선택합니다.

  3. ECS 인스턴스(ECS Instances)를 선택하고 보려는 컨테이너 인스턴스(Container Instance 열에서 컨테이너 인스턴스를 선택합니다.

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

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