CentOS 컴퓨터에 LLVM을 설치하려고 합니다. LLVM 설치 튜토리얼에서는 -jn
플래그가 와 함께 지정됩니다 make
.
공연을 하고 싶다고 했고 make -jn
, "make가 스왑 공간 문제를 겪지 않도록 n을 선택하십시오."
이 플래그의 용도는 무엇 -j
이며 n 값을 선택하는 방법은 무엇입니까?
답변1
make -j
플래그는 컴파일을 위해 할당하려는 스레드 수를 나타냅니다.
n
이 경우 프로세스 수에 대한 자리 표시자입니다.
일반적인 경험 법칙은 보안 n
= CPU의 코어 수라는 것입니다. 따라서 듀얼 코어 시스템을 사용하고 있다면 -j2
8 코어 시스템을 사용할 수 있습니다.-j8
실제로는 이것이 좋은 출발점이 될 수 있지만 자유롭게 시도해 보고 자신에게 가장 적합한 것이 무엇인지 확인해야 할 것입니다.
답변2
n = 코어 수를 사용하는 것이 안전한지 여부는 모든 병렬 컴파일/링크 작업에 충분한 메모리가 있는지 여부에 따라 달라집니다. 또한 디스크 I/O 문제가 발생할 수도 있습니다. 한 번만 실행하면 될 것으로 예상되는 만들기 작업인 경우 더 낮은 n을 선택하고 시간이 걸리도록 하는 것이 좋습니다.
답변3
이 -j
플래그는 make(1)
병렬로 실행 중인 프로세스 수를 알려줍니다. 최적의 값은 실행 중인 작업, 종속성에 따라 달라집니다. 경험적으로 보면 프로세서 수입니다. -j
(no n
) 만 지정하면 make
가능한 많은 프로세스가 병렬로 시작됩니다.
답변4
-j
이 플래그가 빌드 작업에 미치는 영향과 이를 주의해서 처리해야 하는 이유에 대한 구체적인 예는 다음과 같습니다.
LLVM 이 있다는 사실을 잊어버리고 MAKEFLAGS=-j5
빌드하려고 했습니다. 일단 97%
백분율에 도달하면 ld
동시에 5개의 프로세스가 생성되어 각각 1.5GB
+RAM을 소비합니다. 첫 번째는 20분 이내에 충돌이 발생했고 나머지는 내 컴퓨터를 사용할 수 없게 될 때까지 계속해서 더 많은 메모리를 소비했고 마침내 Ctrl+C
더 작은 것을 사용하기 로 결정했습니다 -j
. 내 -j3
컴퓨터는 여전히 ld
세 가지 프로세스로 인해 어려움을 겪고 있지만 적어도 다음과 같이 입력할 수 있습니다. 몇 가지 사소한 문제가 있습니다.