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 |