![CPU 로드에 따라 -jN을 동적으로 만들 수 있습니까?](https://linux55.com/image/12474/CPU%20%EB%A1%9C%EB%93%9C%EC%97%90%20%EB%94%B0%EB%9D%BC%20-jN%EC%9D%84%20%EB%8F%99%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%A7%8C%EB%93%A4%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
예를 들어 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
서버 과부하를 방지하는 데에도 도움이 될 수 있습니다.