logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

make -j 옵션으로 컴파일 속도 최적화 하기

by digipine posted Nov 01, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

make의 -j 옵션은 한번에 수행할 수 있는 명령(Job)을 지정하는 병렬 실행(Parallel Execution) 옵션입니다.

예를 들어 CPU코어가 4개라면 한번에 수행할 수 있는 명령을 -j4로 지정하여 프로세스가 4개 생성되어 병렬로 컴파일합니다.
명령수는 프레스의 수로 정의됩니다.
이렇게하여 소스를 컴파일시 4개 CPU의 자원을 최대한 활용하게 되는 것입니다. top 명령으로 확인하면 바로 알수있습니다.

make의 개발자에 의하면 CPU 총 코어 갯수에서 20%의 코어 갯수를 추가하는 것이 속도가 가장 좋게 작업되었다고 합니다.
코어가 8개이면 8 + 1.6 (8 의 20%) 이므로 -j10 정도가 적당할 것 같습니다.

일반적으로 커널 소스 빌드시에는

간단히 > 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

 

TAG •

List of Articles
No. Subject Author Date Views
21 [shared lib] so 동적 라이브러리 만들기와 사용법 - 리눅스 digipine 2017.11.01 816
20 [linux] zlib build 방법 digipine 2017.11.01 222
19 [Linux] Pthread 사용법, Thread 동기화 총정리 digipine 2017.11.01 1575
18 [C/C++] 현재시간 구하기 digipine 2017.10.28 205
17 wchar_t에 대하여 digipine 2017.11.01 214
16 Unix C/C++ Input and Output Function Reference digipine 2017.11.01 185
15 STL MAP 예제로 공부하기 digipine 2017.10.29 269
14 Solaris에서 pmap을 이용하여 백그라운드 프로세스 메모리 크기 구하기 digipine 2017.10.29 102
13 Solaris 10에 개발 Tool (gcc,vim,gdb) 설치 digipine 2017.10.29 200
12 MD5 파일 변조 검사 관련 소스 (리눅스/Windows) digipine 2017.10.29 451
» make -j 옵션으로 컴파일 속도 최적화 하기 digipine 2017.11.01 414
10 Linux C 언어로 Shell 명령어 실행하기 digipine 2017.11.01 3456
9 Introduce to Singly-linked List file digipine 2017.11.01 145
8 fopen 파일 열기 모드 옵션 정리 digipine 2017.11.02 482
7 C를 이용한 객체지향 프로그래밍 digipine 2017.11.01 102
6 Callback in C++ 와 Delegate 차이점 digipine 2017.11.01 357
5 C++에서 extern의 역할, 기능 digipine 2017.10.29 172
4 C++ 컴파일 오류(error): variable 'std::istringstream sstream' has initializer but incomplete type digipine 2017.11.02 234
3 C++ Atomic 클래스에 대해서 file 엉뚱도마뱀 2017.12.13 404
2 C 에서 Overloading 구현 digipine 2017.11.01 176
Board Pagination Prev 1 2 Next
/ 2