[Docker] Resource Control

Memory

--memory 옵션을 통해서 컨테이너 메모리 사용량을 제한할 수 있다. 최소 메모리는 4MB이며 너무 적게 할당하는 경우에는 메모리가 부족해 컨테이너가 실행되지 않는다. 또한 SWAP메모리도 설정이 가능한데 기본적으로 SWAP메모리는 컨테이너에 할당된 메모리 * 2가 할당된다.

CPU

—cpu-shares

--cpu-shares는 시스템 CPU를 얼마만큼의 비중으로 나눠 쓸 것인지를 명시하는 옵션이다.

—cpuset-cpu

--cpuset-cpus는 컨테이너가 특정 CPU만 사용하도록 지정하는 옵션이다. 특정 CPU만 사용하도록 하면 CPU Affinity를 보장할 수 있고 Cache MissContext Switching같은 성능 하락 요인을 최소화할 가능성이 높아진다.

—cpu-period, —cpu-quota

컨테이너의 CFS(Completely Fair Schedule) 주기는 기본적으로 100ms이다. --cpu-period를 통해 CFS 주기를 변경할 수 있고 --cpu-quota를 통해 얼마나 할당할 것인지를 지정할 수 있다.

—cpus

--cpus는 직관적으로 CPU 개수를 지정할 수 있다. 만약 0.5를 할당하게 되면 컨테이너가 최대한 CPU 0.5개의 파워를 사용할 수 있게 된다.

Block I/O

--device-write-bps --device-read-bps를 통해 입출력 블록 크기 제한을 걸 수 있다. KB/s MB/s GB/s 단위로 제한할 수 있다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/20/Docker/resource-control/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.