2011-04-09 6 views
4

저는 "make -j8"을 사용하여 빌드 속도를 높이는 팬입니다. (현 재 현재 컴퓨터의 코어 수는 8 개로 바꾸십시오.) N 파일을 병렬로 컴파일하면 컴파일 시간이 단축됩니다. ... 컴파일 프로세스 중 일부가 메모리가 많이 소모되어 RAM이 부족한 경우가 아니라면 모든 다양한 컴파일 프로세스가 서로 스왑을 시작하고 모든 것이 크롤링 속도가 느려지므로 - 처음에는 병렬 컴파일.낮은 메모리/스왑 조건에 지능적으로 반응 할만큼 똑똑한 병렬 작성 시스템이 있습니까?

이제이 문제에 대한 분명한 해결책은 "더 많은 RAM 구입"입니다.하지만 그렇게하기에는 너무 싸기 때문에 'make'를 구현하는 것이 가능해야합니다 (또는 그와 동등한 것)은 시스템의 사용 가능한 RAM을 감시하고 RAM이 거의 0에 가까워지고 시스템이 스와핑을 시작할 때 make는 자동으로 들어 와서 생성 한 하나 이상의 컴파일 프로세스에 SIGSTOP을 보냅니다. 이렇게하면 중지 된 프로세스가 완전히 스왑 아웃되어 다른 프로세스가 더 이상 스와핑하지 않고 컴파일을 완료 할 수 있습니다. 그런 다음 다른 프로세스가 종료되고 더 많은 RAM을 사용할 수있게되면 'make'프로세스가 일시 중지 된 프로세스에 SIGCONT를 보내 자신이 처리를 재개 할 수있게합니다. 그런 식으로 대부분의 교환은 피할 수 있었고 모든 코어에서 안전하게 컴파일 할 수있었습니다.

누구든지이 논리를 구현하는 프로그램을 알고 있습니까? 반대로, 그러한 프로그램이 작동하지 않거나 작동하지 못할만한 좋은 이유가 있습니까? 나는이 표준 옵션이 있지만, 생각하지 않는

-l [load], --load-average[=load] 
     Specifies that no new jobs (commands) should be started if there are others jobs running and the load average is at least load (a floating- 
     point number). With no argument, removes a previous load limit. 

: GNU는 확인을 위해

+0

"아니오"대답을 수락 하시겠습니까? ;) – 0xC0000022L

답변

0

-l 옵션이있다.