본문 바로가기
DevOps/Docker

[Docker] : 도커 컨테이너 CPU 제한 / --cpu-shares 활용하기

by 오주현 2022. 2. 21.
반응형

--cpu-shares 옵션은 컨테이너에 가중치를 설정해 해당 컨테이너가 CPU를 상대적으로 얼마나 사용할 수 있는지 나타낸다.

 

사용 예시이다. 위 옵션은 상대적인 값을 가지는데 아무런 설정을 하지 않으면 컨테이너는 1024값을 갖게 되고 이것은 CPU 할당에서 1의 비중을 뜻한다.

 

1개의 CPU를 가지는 호스트에서 테스트를 해본다.

 

옵션으로 1024의 값을 할당하고 컨테이너의 명령어는 1개의 프로세스로 CPU에 부하를 주는 명령어(stress —cpu 1)로 설정을 해줬다.

 

—cpu-shares의 값이 1024로 설정되었지만 호스트에 다른 컨테이너가 존재하지 않기 때문에 CPU를 거의 100% 사용하고 있음을 알 수 있다. 이때 —cpu-shares의 값이 512로 설정이 된 컨테이너가 같이 실행이 된다면 어떻게 될까?

 

시간이 흐르고 CPU 사용률을 확인해 본다.

 

ps aux | grep stress

두 컨테이너가 각각 CPU를 사용하고 있고 2:1의 비율로 CPU를 나눠쓰는 것을 확인할 수 있다. 이처럼 —cpu-shares에 설정된 값의 비율에 따라 컨테이너가 CPU를 사용할 수 있는 비율이 정해지게 된다.

 

위에서 사용한 stress라는 명령어는 CPU와 메모리에 과부하를 줘서 성능을 테스트하는데 우분투 컨테이너에서 아래 명령어로 설치할 수 있다. alicek106/stress 도커 이미지는 미리 준비한 stress가 설치된 우분투 이미지이다.

 

apt-get install stress

위에서 생성한 컨테이너는 -d 옵션으로 생성되어 백그라운드에서 계속 CPU에 부하를 주므로 테스트가 끝나고 반드시 컨테이너를 삭제해야 한다.

 


📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다.

반응형

댓글