Mac의 Docker에서 인산 CPU 코어를 최대한 사용
3398 단어 boot2dockerDockerMac
로컬을 오염시키지 않을 뿐만 아니라 가벼운 개발 환경을 만들 수도 있고 다른 기계에 환경을 분배할 수도 있고 서버에 디자인을 할 수도 있다.
저는 주로 Docker를 개발 환경으로 삼아 컨테이너 안에서 호스트 편지에서 설치된 원본 코드를 실행함으로써 코드와 실행 환경을 분리합니다.
수백만 건의 데이터를 처리하고 때로는 CPU 중량급 처리를 하려고 할 때도 있다. 이때 우리는 Docker 컨테이너에서 인산효소 CPU를 최대한 활용하는 방법을 조사했다.
그나저나 환경은 물리 2핵, 가상 4핵의 맥북 프로다.
이번에 사용한 Docker 버전
이런 느낌이에요.
Boot2Docker version 1.8.2, build master : aba6192 - Thu Sep 10 20:58:17 UTC 2015
Docker version 1.8.2, build 0a8c2e3
docker-machine version 0.4.1 (e2c88d6)
CPU 로드 테스트용 이미지 준비 및 시도
CPU에 부하를 가하기 위한 좋은 인상이 있기 때문에 CPU가 정말 사용할 수 있는지 테스트하기 위해 이pull을 먼저 꺼냅니다.
$ docker pull jess/stress
만약 이 그림에서 용기를 작동시켜 호스트 측 기계의 CPU에 부하를 가할 수 있다면 CPU는 잘 사용할 수 있을 것이다.빨리 시동 걸어봐.지령은 여기 있습니다.
$ docker run --rm -it jess/stress --cpu 4
마지막--cpu4는 컨테이너를 시작할 때 실행되는 명령 옵션으로 테스트 부하의 CPU 수를 지정할 수 있습니다.이번에 테스트를 이용한 MBP는 가상 4 핵심이기 때문에 cpu에서 4개를 지정했습니다.
실행한 결과는 어떻게 될까요?
$ stress: info: [1] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd
성공적으로 시작했습니다.top 명령으로 CPU 사용률을 확인합니다.Boot2 Docker의 공급자가 VirtualBox를 사용하기 때문에 호스트 측면에서 볼 수 있는 명령 이름은 VBoxHeadless입니다.
PID COMMAND %CPU
36580 VBoxHeadless 100.3
아이고, 부하가 증가하는 CPU 수에 4를 지정했는데 실제 부하가 증가하는 것은 100%(가상1핵)이다.컨테이너에서 호스트의 CPU를 모두 사용하지 않은 것 같습니다.
Boot2 Docker에 할당된 코어 수 확인
여기서 확인해야 할 것은 Mac는 Docker를 직접 설치할 수 없기 때문에 어떤 가상 환경에서 Boot2 Docker라는 Docker 전용 환경을 구축하여 Docker 컨테이너를 이동할 수 있다.
따라서 VirtualBox에서 시작하는 Boot2 Docker의 설정을 확인합니다.
Boot2 Docker를 중지한 다음 VirtualBox를 엽니다.
왼쪽 위에 있는 톱니바퀴 아이콘의 설정 단추에서 시스템→프로세서로 전진하면...
역시 1CPU만 할당된 것으로 알고 있습니다.
이 때문에 stress 용기에서 2개 이상의 CPU 코어에 부하를 가하더라도 사실상 1개의 코어만 사용할 수 있기 때문이다.
그러면 여기를 녹색 범위의 최대치인 4CPU로 지정하고 다시 시도해 보세요.
결실
실행할 명령은 아까와 같다.
$ docker run --rm -it jess/stress --cpu 4
top 지령은 어떻게 돼요?PID COMMAND %CPU
36580 VBoxHeadless 370.8
370.8%로 볼 수 있으며 기본적으로 가상 4개 코어의 400%를 사용할 수 있다.이렇게 용기 안에서 대량의 처리를 병행하려고 할 때도 호스트의 CPU 출력을 충분히 이용할 수 있다!
추가: CPU 사용량을 반대로 제한
VirtualBox에 Boot2 Docker가 활용할 수 있는 코어 수를 추가하면 VM에서 이동하는 모든 컨테이너가 해당 CPU 리소스를 활용할 수 있습니다.
마음에 들지 않으면 컨테이너를 시작할 때 사용할 수 있는 CPU를 지정하는 옵션을 사용하여 컨테이너 단위로 사용할 CPU를 제한할 수 있다.
구체적으로 말하면
$ docker run --rm -it --cpuset-cpus="0,1" jess/stress --cpu 4
이런 느낌으로 - cpust-cpus 선택을 사용합니다.'0'을 지정하면 0번째 CPU만 있고,'0, 1, 2'를 지정하면 0, 1, 2개만 사용하는 CPU를 제한할 수 있다.0-3 등의 범위를 지정할 수도 있습니다.
방금 4개의 코어로 설정된 Boot2 DockerVM에서 컨테이너를 시작해 확인했습니다.
가상 4핵 0, 1, 2, 3호의 핵심이 있기 때문에 이 중 0, 1, 2, 3개의 CPU를 사용할 수 있도록 제한하고 용기를 가동해 본다.로드할 CPU 수를 4로 설정합니다.
$ docker run --rm -it --cpuset-cpus="0,1,2" jess/stress --cpu 4
탑명령 확인해봐.PID COMMAND %CPU
36580 VBoxHeadless 297.2
4개의 로드된 CPU 수를 지정했지만 가상 4코어 400% 중 약 300%인 3개의 CPU 리소스만 사용할 수 있습니다.제한이 잘 됐다고요?
Reference
이 문제에 관하여(Mac의 Docker에서 인산 CPU 코어를 최대한 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yuhsak/items/d1438d83e480a93423c9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)