컨테이너 서비스에서 사용자 별로 자원 제한


#1

들어가며

사용자에게 컨테이너를 제공하는 서비스에서 사용자 별로 cpu와 메모리, 디스크등에 대한 자원을 제한해 보자. 컨테이너별로 cpu와 메모리를 제한하는 방법을 살펴보려고 한다.

CPU

  • cpu-quota 와 cpu-priod와 함께 사용한다.
    • cpu-priod의 기본 값은 100000(100ms)로, cpu-quota를 이용해서 100ms 동안 어느정도의 cpu 할당할 것인지를 설정할 수 있다.
    • cpu-quota가 25000 이라면, 1/4 만큼의 cpu 자원을 사용 할 수 있다.

cpu-quota와 cpu-priod는 아래와 같이 사용한다.

$ docker run --cpu-period=100000 --cpu-quota=25000 -it ubuntu /bin/bash

cpu-period를 50000으로 하고 --cpu-quota를 25000으로 할 경우, cpu-quota는 그대로이지만 cpu 주기가 1/2로 줄어들었기 때문에 cpu자원의 1/2만큼이 할당된다.

  • cpuset
    • 컨테이너가 사용할 cpu core 갯수를 할당 할 수 있다. –cpuset-cpus=0 : 0번째 cpu 하나를 할당한다. –cpuset-cpus=0,1 : 0, 1번째 cpu를 할당한다.

Memory

memory-swap를 이용해서, 물리메모리와 스왑메모리에 대한 제한을 걸 수 있다.

  • –memory : 물리적인 메모리의 크기
  • –memory-swap : 스왑메모리 + 물리메모리의 크기 즉, 전체 메모리의 크기다.