make -jn은 무슨 뜻인가요?

make -jn은 무슨 뜻인가요?

CentOS 컴퓨터에 LLVM을 설치하려고 합니다. LLVM 설치 튜토리얼에서는 -jn플래그가 와 함께 지정됩니다 make.

공연을 하고 싶다고 했고 make -jn, "make가 스왑 공간 문제를 겪지 않도록 n을 선택하십시오."

이 플래그의 용도는 무엇 -j이며 n 값을 선택하는 방법은 무엇입니까?

답변1

make -j플래그는 컴파일을 위해 할당하려는 스레드 수를 나타냅니다.

n이 경우 프로세스 수에 대한 자리 표시자입니다.

일반적인 경험 법칙은 보안 n= CPU의 코어 수라는 것입니다. 따라서 듀얼 코어 시스템을 사용하고 있다면 -j28 코어 시스템을 사용할 수 있습니다.-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세 가지 프로세스로 인해 어려움을 겪고 있지만 적어도 다음과 같이 입력할 수 있습니다. 몇 가지 사소한 문제가 있습니다.

관련 정보