

# Amazon ECS에서 컨테이너 스왑 메모리 스페이스 관리
<a name="container-swap"></a>

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

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

`maxSwap`  
컨테이너가 사용할 수 있는 총 스왑 메모리 양(MiB) 이 파라미터는 docker run에 대한 `--memory-swap` 옵션으로 변환되며 컨테이너 메모리의 합계에 `maxSwap` 값을 더한 값이 됩니다.  
`0`의 `maxSwap` 값이 지정되면 컨테이너는 스왑을 사용하지 않습니다. 허용되는 값은 `0` 또는 양수입니다. `maxSwap` 파라미터를 생략하면 컨테이너는 실행 중인 컨테이너 인스턴스에 대한 스왑 구성을 사용합니다. `swappiness` 매개 변수를 사용하려면 `maxSwap` 값을 설정해야 합니다.

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

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

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

## 고려 사항
<a name="container-swap-considerations"></a>

컨테이너별 스왑 구성을 사용하는 경우 다음을 고려하세요.
+ 컨테이너를 사용하려면 작업을 호스팅하는 Amazon EC2 인스턴스에서 스왑 스페이스를 사용 설정하고 할당해야 합니다. Amazon ECS에 최적화된 AMI에는 기본적으로 스왑이 사용 설정되어 있지 않습니다. 이 기능을 사용하려면 인스턴스에서 스왑을 활성화해야합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 스토어 스왑 볼륨](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html) 또는 [Amazon EC2 인스턴스에서 스왑 스페이스로 작동하도록 메모리를 할당하려면 어떻게 해야 하나요?](https://repost.aws/knowledge-center/ec2-memory-swap-file)를 참조하세요.
+ 스왑 스페이스 컨테이너 정의 파라미터는 EC2를 지정하는 태스크 정의에 대해서만 지원됩니다. 이러한 파라미터는 Fargate의 Amazon ECS 사용 전용 작업 정의에는 지원되지 않습니다.
+ 이 기능은 Linux 컨테이너에서만 지원됩니다. 현재 Windows 컨테이너는 지원되지 않습니다.
+ 만약`maxSwap`과 `swappiness`컨테이너 정의 파라미터가 태스크 정의에서 생략되는 경우, 각 컨테이너는 `swappiness`의 기본값으로 `60`을 갖습니다. 또한 총 스왑 사용량은 컨테이너 메모리의 두 배로 제한됩니다.
+ Amazon Linux 2023에서 작업을 사용하는 경우에는 `swappiness` 파라미터가 지원되지 않습니다.