새소식

Cloud/Docker

Docker CPU 제어하기

  • -

Docker는 CPU 제한을 하지 않으면 

unlimited로 무제한으로 사용한다.

컨테이너에서 제한하면 이에 따라 cgroup이 리소스를 제공한다.

CPU Time Scheduling

CPU 사용시간 제어 - 기본값은 1024이다.

lscpu

위의 커맨드로 현재 hostos의 cpu를 확인할 수 있다.

docker run -d --name=cpu-1024 --cpu-shares=1024 leecloudo/stress:1.0 stress --cpu 4

docker run 할 떄 위 처럼 옵션을 주면, 
cpu 작업 시간을 제한할 수 있다.

cpu register에 등록되어 제어가 된다. 

위에처럼 stress로 부하테스트를 하면

이렇게 htop에서 cpu가 가득 차는 것을 확인할 수 있다.

student@hostos1:~$ ps -auxf | grep stress
student    14464  0.0  0.0  10524  2816 pts/0    S+   09:39   0:00  |           \_ grep --color=auto stress
root       14062  0.0  0.0   7488  1664 ?        Ss   09:36   0:00  \_ stress --cpu 4
root       14081 69.3  0.0   7488   128 ?        R    09:36   2:02      \_ stress --cpu 4
root       14082 68.4  0.0   7488   128 ?        R    09:36   2:01      \_ stress --cpu 4
root       14083 75.4  0.0   7488   128 ?        R    09:36   2:13      \_ stress --cpu 4
root       14084 70.9  0.0   7488   128 ?        R    09:36   2:05      \_ stress --cpu 4
root       14227  0.0  0.0   7488  1664 ?        Ss   09:37   0:00  \_ stress --cpu 4
root       14256 31.9  0.0   7488   128 ?        R    09:37   0:29      \_ stress --cpu 4
root       14257 32.3  0.0   7488   128 ?        R    09:37   0:29      \_ stress --cpu 4
root       14258 32.5  0.0   7488   128 ?        R    09:37   0:29      \_ stress --cpu 4
root       14259 42.7  0.0   7488   128 ?        R    09:37   0:38      \_ stress --cpu 4

CPU 번호 지정

docker run -d --name=cpuset1 --cpuset-cpus=0 leecloudo/stress:1.0 stress --cpu 1

#를 0 또는 0,3 또는 0-2
이런식으로 하나만 주거나 특정 번호만 주거나 범위를 주어
사용하고자 하는 cpu를 지정할 수 있다.

위에 처럼 부하테스트 하면 지정한 0번 cpu만 사용되는 것을 확인할 수 있다.

2개를 지정해도 똑같다.

docker run -d --name=cpuset2 --cpuset-cpus=0,3 leecloudo/stress:1.0 stress --cpu 2

CPU 사용 비율(%)

docker run --cpus=0.0

cpu 사용하고자 하는 비율을 특정할 수 있다.

아래에서 실제로 돌아가고 있는 컨테이너의 리소스를 수정할 수 있다. -> 이는 컨테이너가 프로세스 이기에 가능한 것이다.

 

docker update --cpus=0.2 cpuset1

 

'Cloud > Docker' 카테고리의 다른 글

Docker Architecture 그림으로 이해하기  (1) 2024.04.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.