CPU 로드에 따라 -jN을 동적으로 만들 수 있습니까?

CPU 로드에 따라 -jN을 동적으로 만들 수 있습니까?

예를 들어 CPU 부하가 낮은 구성 단계에서는 -jN > nrcpus를 사용하는 것이 유익하지 않을까요? 그러면 -jN=nrcpus로 컴파일할 때 각 CPU에 부하를 균등하게 분배해야 할까요?

빌드 환경에서 이를 구현하는 것이 얼마나 어려울까요? 모든 단계에서 모든 구성 파일을 변경해야 합니까? 동일한 "make" 프로그램을 사용하는 경우 여러 프로젝트를 자동화할 수 있습니까?

이는 워크로드가 I/O 바인딩되지 않는다고 가정합니다.

답변1

지정된 N make -jN은 고정된 최대값이지만 시스템 로드에 따라 병렬 작업을 제한하는 방법이 있습니다. 를 참고 make -l load하시거나make --load-average[=load]

인용하다:

https://www.gnu.org/software/make/manual/make.html#Options-Summary https://www.gnu.org/software/make/manual/make.html#Parallel

-l load최신 gnu make는 이 옵션을 지원하지만 설치된 버전은 이전 버전일 수 있습니다.

로드 선택에 대한 예는 다음과 같습니다. 먼저 -jN서버에서 최상의 성능을 위해 조정하고(빌드 소스도 사용해 보십시오 ) 로드 평균을 관찰한 후 값이 빌드 활동을 지원하기에 충분하도록 gcc -pipe조정합니다 . -l load튜닝은 -l load서버 과부하를 방지하는 데에도 도움이 될 수 있습니다.

관련 정보