Amazon ECS에서 컨테이너 스왑 메모리 공간 관리 - Amazon Elastic Container Service

Amazon ECS에서 컨테이너 스왑 메모리 공간 관리

Amazon ECS를 사용하면 컨테이너 수준에서 Linux 기반 Amazon EC2 인스턴스의 스왑 메모리 공간 사용을 제어할 수 있습니다. 컨테이너별 스왑 구성을 사용하면 태스크 정의 내의 각 컨테이너에서 스왑을 사용 설정 또는 사용 중지할 수 있습니다. 이 기능을 사용 설정한 사용자의 경우, 사용되는 최대 스왑 공간을 제한할 수 있습니다. 예를 들어, 대기 시간이 중요한 컨테이너는 스왑을 사용 중지할 수 있습니다. 반면, 일시적인 메모리 요구가 높은 컨테이너는 스왑을 켜서 컨테이너가 로드될 때 메모리 부족 오류가 발생할 가능성을 줄일 수 있습니다.

컨테이너의 스왑 구성은 다음 컨테이너 정의 파라미터로 관리됩니다.

maxSwap

컨테이너가 사용할 수 있는 총 스왑 메모리 양(MiB) 이 파라미터는 docker run에 대한 --memory-swap 옵션으로 변환되며 컨테이너 메모리의 합계에 maxSwap 값을 더한 값이 됩니다.

0maxSwap 값이 지정되면 컨테이너는 스왑을 사용하지 않습니다. 허용되는 값은 0 또는 양수입니다. maxSwap 파라미터를 생략하면 컨테이너는 실행 중인 컨테이너 인스턴스에 대한 스왑 구성을 사용합니다. swappiness 매개 변수를 사용하려면 maxSwap 값을 설정해야 합니다.

swappiness

이를 통해 컨테이너의 메모리 스왑 동작을 조정할 수 있습니다. 필요한 경우가 아니면 swappiness 값이 0이 되어 스와핑이 발생하지 않도록 합니다. 100swappiness 값은 페이지가 적극적으로 스와핑되도록 합니다. 허용되는 값은 0100 사이의 숫자입니다. swappiness 파라미터를 지정하지 않으면 60의 기본값이 사용됩니다. maxSwap 값이 지정되지 않은 경우 이 파라미터는 무시됩니다. 이 파라미터는 docker run에 대한 --memory-swappiness 옵션에 매핑됩니다.

다음 예에서는 JSON 구문이 제공됩니다.

"containerDefinitions": [{ ... "linuxParameters": { "maxSwap": integer, "swappiness": integer }, ... }]

고려 사항

컨테이너별 스왑 구성을 사용하는 경우 다음을 고려하세요.

  • 컨테이너를 사용하려면 작업을 호스팅하는 Amazon EC2 인스턴스에서 스왑 공간을 사용 설정하고 할당해야 합니다. Amazon ECS에 최적화된 AMI에는 기본적으로 스왑이 사용 설정되어 있지 않습니다. 이 기능을 사용하려면 인스턴스에서 스왑을 활성화해야합니다. 자세한 내용은 Amazon EC2사용자 안내서의 인스턴스 스토어 스왑 볼륨 또는 스왑 파일을 사용하여 Amazon EC2 인스턴스에서 스왑 스페이스로 작동하도록 메모리를 할당하려면 어떻게 해야 하나요?를 참조하세요.

  • 스왑 공간 컨테이너 정의 파라미터는 EC2 시작 유형을 지정하는 작업 정의에 대해서만 지원됩니다. 이러한 파라미터는 Fargate의 Amazon ECS 사용 전용 작업 정의에는 지원되지 않습니다.

  • 이 기능은 Linux 컨테이너에서만 지원됩니다. 현재 Windows 컨테이너는 지원되지 않습니다.

  • 만약maxSwapswappiness컨테이너 정의 파라미터가 태스크 정의에서 생략되는 경우, 각 컨테이너는 swappiness의 기본값으로 60을 갖습니다. 또한 총 스왑 사용량은 컨테이너 메모리의 두 배로 제한됩니다.

  • Amazon Linux 2023에서 작업을 사용하는 경우에는 swappiness 파라미터가 지원되지 않습니다.