뭔가를 만들 때 오늘 아침, 나는 실행하기로 결정 make
으로
$ make -j
아마도 다른 프로그램과 습관 중 같은 cabal
곳 -j
합리적인 제한 기본값.
약 20 초 후에 내 전체 데스크탑이 정지 됩니다. 다양한 활동의 징후를 찾습니다. 팬이 회전하지 않습니다. HDD 표시등이 녹색으로 켜져 있지만 디스크 작동이 들리지 않습니다. 흠. 10 분의 침묵 후에 마침내 몇 년 전에 처음으로 눌렀 던 키 누르기에 대한 응답을 보게되었고 디스크 스 래싱이라는 너무 친숙한 소리도 들리기 시작합니다. 20 분 후이 응답하지 않는 머신에서 터미널로 천천히 들어 가려고했지만 REISUB를 사용했습니다.
처음에는 관련없는 데스크톱 응용 프로그램이 범인이되어야한다고 생각했습니다. 오랫동안 대화식 bash 세션에 메모리 제한을 두어 오랫동안 이러한 상황에 처하게되는 것을 막았습니다. 그러나 /var/log/syslog
다른 이야기를한다. 뒤에 왼쪽 OOM 킬러 일부 ps
덤프 의심되는 포장 과 c++
및 cc1plus
프로세스!
이러한 덤프 중 하나의 빈도 분석은 다음과 같습니다.
Command Number of appearances
'sh' 322
'c++' 321
'cc1plus' 321
'chrome' 27
'make' 27
'bash' 3
all else combined 120
그래서 GNU make 매뉴얼 페이지를 확인하십시오 : (강조 추가)
-j [jobs], --jobs [= jobs] 동시에 실행할 작업 (명령) 수를 지정합니다. -j 옵션이 둘 이상인 경우 마지막 옵션이 유효합니다. -j 옵션이 인수없이 제공되면 make는 동시에 실행할 수있는 작업 수를 제한하지 않습니다.
나는이 문제를 재현 할 수 있는지 확인하기를 꺼려 해요 (I 할 때 상처 의사를 이 ...) 하지만, 조사 결과는 지금까지 홈런 것 같다 : 분명히, make -j
그리고 그 결과 프로세스의 수백 이 있어야합니다 되어 요령 및 디스크 탈곡의 원인. 즉, 인터넷을 검색하면서 나는 그것에 대해 많은 경고를 찾을 수 없습니다. 나는 결론에 뛰어 들고 있는가?
make -j
나에게 보이는 것처럼 위험한 가요 ? 그렇다면 왜 지상 에 존재하며, 그것을 교정하기 위해 무엇을 할 수 있습니까?
alias make="make -j4"
을 제거하기 위해를 추가하는 것을 고려하고 있지만 가능한 모든 결과를 고려하지는 않았습니다.-jN