Docker

Docker 컨테이너에 자원 할당 및 관리

Joon0464 2021. 7. 8. 17:47

[실행중인 컨테이너 자원 할당 정보 확인]

docker stats

여러 컨테이너를 지정할 수 있다.

docker stats 만 입력하면 실행중인 모든 컨테이너 정보가 출력된다.

CPU 사용률, 메모리 사용량, 총 메모리, 메모리 점유율, 네트워크 트래픽 등을 확인 가능

 

[컨테이너 메모리 자원 할당]

docker update --memory

컨테이너 실행시 --memory 옵션을 지정하면 원하는 만큼 메모리를 할당하여 컨테이너 실행이 가능하다.

Swap memory는 지정하지 않으면 memory의 2배(400m)로 자동 설정된다.

docker update 명령어로 원하는 자원 할당을 업데이트할 수 있다. 하지만 메모리를 확장할 경우 Swap 메모리가 모자라다는 오류가 발생한다.

swap memory를 동시에 할당하면 오류가 출력되지 않고 업데이트 된다.

 

[컨테이너 CPU 자원 할당]

1. -c(--cpu-shares)

컨테이너 실행에 사용된 이미지는 stress 패키지가 설치되어 있으며 stress --cpu 1 을 옵션으로 사용하여 컨테이너 실행과 동시에 cpu 부하를 가하도록 설정했다.

-c 옵션을 사용하여 하나의 컨테이너에는 1024를 하나의 컨테이너에는 512의 값을 할당한 모습이다.

-c 옵션은 가중치를 의미한다. 즉, 1024를 할당한 컨테이너가 512가 할당된 컨테이너에 비해 2배 더 많은 CPU 자원이 할당된다는 뜻이다.

docker stat으로 확인해보면 2:1 비율로 자원이 할당된 것을 볼 수 있다.

 

2. --cpus

docker run -itd --name c1 --cpus 1 centos:7
docker run -itd --name c2 --cpus 0.25 centos:7

--cpus 옵션은 할당할 코어의 숫자를 직접 지정하는 옵션이다.

--cpus를 10진수로 지정하면 코어의 개수를 의미하고 소수로 지정하면 비율을 의미한다.

이미 할당된 cpu 정보를 update 명령어로 변경할 수 있다.

 

[디스크 읽기 쓰기 속도 제한]

1. 절대적인 값으로 변환

--device-write-bps
--device-read-bps

사용 예시 및 확인

2. 상대적인 값으로 변환

--device-write-iops
--device-read-iops

상대적인 값을 5 할당한 c1과 10 할당한 c2는 쓰기 테스트에서 각각 2.6MB/s와 5.2MB/s로 2배의 성능차이가 나는 것을 볼 수 있다.