Amazon ECS에서 컨테이너 스왑 메모리 공간 관리
Amazon ECS에서 컨테이너 스왑 메모리 공간 관리
Amazon ECS를 사용하면 Linux 기반 Amazon EC2 인스턴스의 스왑 메모리 공간 사용을 컨테이너 수준에서 제어할 수 있어요. 컨테이너별 스왑 구성을 통해 각 컨테이너의 스왑을 활성화하거나 비활성화할 수 있어요.
출처: 문서
본문
Amazon ECS를 사용하면 Linux 기반 Amazon EC2 인스턴스의 스왑 메모리 공간 사용을 컨테이너 수준에서 제어할 수 있습니다. 컨테이너별 스왑 구성을 사용하면 작업 정의 내의 각 컨테이너에 대해 스왑을 활성화하거나 비활성화할 수 있습니다. 활성화된 컨테이너는 사용되는 최대 스왑 공간을 제한할 수 있습니다. 예를 들어, 지연 시간이 중요한 컨테이너는 스왑을 비활성화할 수 있습니다. 반대로 일시적 메모리 수요가 높은 컨테이너는 부하가 걸렸을 때 메모리 부족 오류의 가능성을 줄이기 위해 스왑을 켤 수 있습니다.
컨테이너의 스왑 구성은 다음 컨테이너 정의 매개변수로 관리됩니다.
maxSwap– 컨테이너가 사용할 수 있는 총 스왑 메모리 양(MiB)입니다. 이 매개변수는docker run의--memory-swap옵션으로 변환되며, 그 값은 컨테이너 메모리와maxSwap값의 합입니다.maxSwap값으로0을 지정하면 컨테이너는 스왑을 사용하지 않습니다. 허용되는 값은0또는 양의 정수입니다.maxSwap매개변수를 생략하면 컨테이너는 실행 중인 컨테이너 인스턴스의 스왑 구성을 사용합니다.swappiness매개변수를 사용하려면maxSwap값을 설정해야 합니다.swappiness– 컨테이너의 메모리 스와피니스 동작을 조정하는 데 사용할 수 있습니다.swappiness값이0이면 필요할 때까지 스와핑이 발생하지 않습니다.swappiness값이100이면 페이지가 적극적으로 스와핑됩니다. 허용되는 값은0과100사이의 정수입니다.swappiness매개변수를 지정하지 않으면 기본값60이 사용됩니다.maxSwap에 값을 지정하지 않으면 이 매개변수는 무시됩니다. 이 매개변수는docker run의--memory-swappiness옵션에 매핑됩니다.
다음 예시는 JSON 구문을 보여줍니다.
"containerDefinitions": [{
...
"linuxParameters": {
"maxSwap": integer,
"swappiness": integer
},
...
}]
고려 사항
컨테이너별 스왑 구성을 사용할 때 다음을 고려하세요.
- 컨테이너가 사용하려면 작업을 호스팅하는 Amazon EC2 인스턴스에서 스왑 공간이 활성화되고 할당되어야 합니다. 기본적으로 Amazon ECS 최적화 AMI는 스왑이 활성화되어 있지 않습니다. 이 기능을 사용하려면 인스턴스에서 스왑을 활성화해야 합니다. 자세한 내용은 Amazon EC2 User Guide의 Instance Store Swap Volumes이나 How do I allocate memory to work as swap space in an Amazon EC2 instance?를 참고하세요.
- 스왑 공간 컨테이너 정의 매개변수는
EC2를 지정하는 작업 정의에서만 지원됩니다. 이 매개변수는 Fargate의 Amazon ECS용으로만 만들어진 작업 정의에서는 지원되지 않습니다. - 이 기능은 Linux 컨테이너에서만 지원됩니다. Windows 컨테이너는 현재 지원되지 않습니다.
- 작업 정의에서
maxSwap와swappiness컨테이너 정의 매개변수를 생략하면 각 컨테이너는 기본swappiness값60을 갖습니다. 또한 총 스왑 사용은 컨테이너 메모리의 두 배로 제한됩니다. - Amazon Linux 2023에서 작업을 사용한다면
swappiness매개변수는 지원되지 않습니다.