Docker 컨테이너에서 허용되는 CPU 수


14

내 구체적인 시나리오는 다음과 같습니다. 특정 cpuset으로 도커 컨테이너를 시작합니다.

docker run --cpuset-cpus="0-2" # ...

해당 컨테이너 내에서 시작점으로 쉘 스크립트를 실행하고 해당 쉘 스크립트는 make어느 시점에서 실행 됩니다. 나는 많은 일자리 ( -j)가 무엇인지 알아 내고 싶습니다 . 물론 환경을 통해 할당 된 CPU 수를 전달할 수는 있지만 자동으로 감지하는 것이 훨씬 좋습니다.

내가 사용할 수 있습니다 알고 taskset -c -p $$또는 cat /proc/self/status | grep Cpus_allowed_list를 검색하기 위해 Cpus_allowed현재 프로세스에 대한,하지만 난 허용 CPU의 실제 번호를 검색하는 방법을 모르겠어요. 해당 명령의 출력을 구문 분석하거나 Cpus_allowed마스크 로 조정하지 않으려 고 하지만 옵션이 없을 때 수행합니다.


1
nproc-이용 가능한 처리 장치 수를 인쇄하십시오
Brian

@Brian 너무 쉬웠다.
pmr

답변:


19

nproc쉘 스크립트 도구를 사용할 수 있습니다 .

따라서 -j$(nproc)make 명령 행에있을 것입니다.


1
"docker run --rm --cpus 2 데비안 nproc"-> 8?
Evan Benn

2
@EvanBenn --cpus="2"은 처리 장치 수를 제한하지 않으며에 해당합니다 -cpu-period="100000" and --cpu-quota="200000".
Brian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.