본문으로 바로가기

make가 병렬 컴파일이 지원되는 줄 오늘에야 알았다..
흑.. 내 시간…

-j 옵션없이 컴파일..

$ make
....
real    3m5.355s
user    0m0.980s
sys     0m1.836s


프로세스 4개 부여하여 컴파일..

$ make -j4
....
real    1m0.297s
user    0m0.979s
sys     0m2.233s


프로세스 8개 부여하여 컴파일..

$ make -j8
....
real    0m41.000s
user    0m1.010s
sys     0m2.417s


프로세스 16개 부여하여 컴파일..

$ make -j16
....
real    0m36.750s
user    0m1.131s
sys     0m3.057s


기본 환경변수로 등록도 가능.

$ export MAKEFLAGS=-j16
$ make


아래 참고..


출처: http://www.digipine.com/index.php?mid=clan&document_srl=598
make의 -j 옵션은 한번에 수행할 수 있는 명령(Job)을 지정하는 병렬 실행(Parallel Execution) 옵션입니다.
예를 들어 CPU코어가 4개라면 한번에 수행할 수 있는 명령을 -j4로 지정하여 프로세스가 4개 생성되어 병렬로 컴파일합니다.
명령수는 프레스의 수로 정의됩니다.
이렇게하여 소스를 컴파일시 4개 CPU의 자원을 최대한 활용하게 되는 것입니다. top 명령으로 확인하면 바로 알수있습니다.
make의 개발자에 의하면 CPU 총 코어 갯수에서 20%의 코어 갯수를 추가하는 것이 속도가 가장 좋게 작업되었다고 합니다.
코어가 8개이면 8 + 1.6 (8 의 20%) 이므로 -j 10 정도가 적당할 것 같습니다.
일반적으로 커널 소스 빌드시에는
간단히 > make -j`cat /proc/cpuinfo | grep cores | wc -l` kernel.img 하는 것이 좋습니다.
아래는 최상의 속도를 내는 스크립트 예제 입니다.

#!/bin/bash
cpunum='cat /proc/cpuinfo | grep cores | wc -l`
let bestnum=$cpunum+$(printf %.0f`echo "$cpunum*0.2"|bc`)
make -j`echo $bestnum` kernel.img

 

'블로그 (Blog) > 개발로그 (Devlogs)' 카테고리의 다른 글

Triangle Remeshing  (0) 2024.03.08
h5pp  (0) 2024.03.08
날씨 정보 RSS  (0) 2024.03.08
optimesh  (0) 2024.03.08
OpenCASCADE 연동 진행 상황  (0) 2024.03.08