본문 바로가기

Docker

컨테이너 자원 할당 제한

도커 컨테이너 자원 할당


컨테이너를 생성하는 명령어에서 컨테이너의 자원 할당량을 조정하도록 옵션을 입력할 수 있다. 

 

이미 실행 중인 컨테이너의 자원 제한을 변경하려면 docker update 명령어를 사용한다.

 

### 자원 제한을 변경하려면 update명령어 사용
docker update --cpuset-cpus=1 centos ubuntu

 

컨테이너 메모리 제한


docker run -d --memory="1g" --name memory_1g nginx

 

컨테이너가 사용하는 메모리를 위 명령어 같이 제한할 수 있다. 최소 메모리는 4MB이다.

 

컨테이너 내에서 동작하는 프로세스가 컨테이너에 할당된 메모리를 초과하면 컨테이너는 자동으로 종료된다.

 

Swap 메모리는 메모리의 2배로 설정되지만 별도로 지정할 수 있다.

 

docker run -it --name swap_500m --memory=200m --memory-swap=500m ubuntu:14.04

 

컨테이너 CPU 제한


 

--cpu-shares 옵션은 컨테이너에 가중치를 설정해 해당 컨테이너가 CPU를 상대적으로 얼마나 사용할 수 있는지를 나타낸다. --cpu-shares 옵션은 상대적인 값이다. 1024는 CPU 할당에서 1의 비중을 뜻한다.

 

docker run -it --name cpu_share --cpu-shares 1024 ubuntu:14.04

 

 

--cpuset-cpu 옵션은 특정 CPU만 사용하도록 설정 할 수 있다.

 

### 컨테이너가 3번째 CPU만 사용하도록 설정한다.
docker run -d --name cpuset_2 --cpuset-cpu=2 ubuntu:14.04

 

--cpuset-cpus="0,3"은 1, 4번째 CPU를, --cpuset-cpus="0-2"는 1, 2, 3번째 CPU를 사용하도록 설정한다

 

--cpus 옵션은 직관적으로 CPU의 개수를 직접 지정한다.

 

### CPU을 50% 점유율로 실행한다
docker run -d --name cpus_container --cpus=0.5 ubuntu:14.04

 

병렬 처리를 우해 CPU를 많이 소모하는 워크로드를 수행해야 한다면 --cpuset-cpu 옵션을 사용하는 것이 좋다.

--cpuset-cpu 옵션을 사용하면 특정 컨테이너가 특정 CPU에서만 동작하는 CPU 친화성(Affinity)을 보정할 수 있고 CPU 캐시 미스 또는 컨텍스트 스위칭과 같이 성능을 하락시키는 요인을 최소화할 가능성이 높아지기 때문이다.

'Docker' 카테고리의 다른 글

도커 파일  (0) 2021.09.12
도커 이미지 관리  (0) 2021.09.11
도커 네트워크  (0) 2021.09.11
도커 볼륨  (0) 2021.09.10
도커 실행 옵션 정리  (0) 2021.09.09