make 명령에서 $($(nproc) + 1)을 사용하는 논리는 무엇입니까?

make 명령에서 $($(nproc) + 1)을 사용하는 논리는 무엇입니까?

일부 온라인 가이드에 따라 Ubuntu에 OpenCV를 설치하려고 합니다. 가이드 중 한 명은이것. 다음 줄이 있습니다.

make -j $(($(nproc) + 1))

nproc시스템에서 사용 가능한 프로세서/스레드 수를 반환합니다 . 그렇다면 이미 사용 가능한 키보다 키가 크면 어떤 이점이 있을까요?

답변1

대부분의 빌드는 CPU 바인딩이 아닌 I/O 바인딩이므로 nproc시작하기 좋은 곳은 while입니다.-j를 만들기 위해 전달된 최대 옵션 수를 결정하는 방법은 무엇입니까?), 대부분의 빌드에서는 더 많은 것을 사용할 수 있습니다. 이는 작은 가상 머신(빌드 팜에서 흔히 볼 수 있음)으로 빌드하는 경우 특히 그렇습니다. 여기서는 -j 1또는 을 -j 2사용하면 일반적으로 다음과 같은 것보다 빌드 시간이 단축됩니다 . 서버에서 발견되는 더 큰 스레드 수는 물론 8스레드 시스템에서도 문제를 일으킬 수 있는 수식 관련 위험이 있습니다.-j 2-j 3$(nproc) * 2

관련 정보