어제 소스 에서 ROOT 패키지 를 컴파일하려고했습니다 . 6 코어 몬스터 머신에서 컴파일하고 있었으므로을 사용하여 여러 코어를 사용하여 빌드하기로 결정했습니다 make -j 6
. 컴파일은 처음에는 매끄럽고 빨랐지만 어느 시점에서는 make
하나의 코어에서 100 % CPU를 사용하여 중단되었습니다.
인터넷 검색 을 통해 ROOT 게시판 에서이 게시물을 찾았 습니다. 이 컴퓨터를 직접 만들었으므로 방열판을 제대로 적용하지 않았고 CPU가 과열 된 것 등이 걱정되었습니다. 불행히도, 나는 여기에 붙일 수있는 냉장고가 없습니다. ;-)
lm-sensors
패키지를 설치하고 make -j 6
이번에는 CPU 온도를 모니터링하면서 다시 실행 했습니다. 온도가 높았지만 (60 ° C에 근접) 높거나 임계 온도를 넘지 않았습니다.
나는 달리기를 시도 make -j 4
했지만 make
컴파일 중에 언젠가 다시 멈추었습니다. 이번에는 다른 지점에 있습니다.
결국, 나는 방금 달리기를 컴파일 make
했고 잘 작동했습니다. 내 질문은 : 왜 걸려 있었습니까? 그것이 두 가지 다른 지점에서 멈췄다는 사실 때문에, 그것은 일종의 경쟁 조건 때문이라고 생각하지만 옵션을 make
제공하기 때문에 모든 것을 올바른 순서로 얻을 수있을만큼 영리해야 한다고 생각 합니다 -j
.
-j >1
.
$(shell ...)
있었으며 결국 입력을 기다리는stdin
명령을 실행하고있었습니다 . 변수가 비어 있고 파일 인수가 명령에 전달되지 않았을 때 발생합니다.
strace -p <pid>
보고 /보고있는 것을 찾을 수 있는지 확인하는 것입니다. strace는 syscall (기능 호출이 아님) 만 표시하지만 특정 파일을 보거나 검색하는 동안 회전하는 경우 여전히 유용한 정보를 제공 할 수 있습니다.