리눅스 컴파일 속도 향상시키기 make -j



개발자든 관리자든 리눅스를 사용하다보면 make를 사용할 일이 은근히 많다.


서버 스펙이 좋든 나쁘든 별다른 옵션없이 make 를 쓰는 경우가 많은데... 성능낭비다.


좋은 스펙이라면 job을 병렬로 실행해 훨씬 빠른 속도로 컴파일을 마칠수 있다.



make -j INT



1. 테스트서버


테스트서버 : Xeon E5-2630, 96G RAM, 6ea 15000k SAS


6core CPU가 2개이므로 12core. 하이퍼스레딩을 포함하면 총 24core 이다.



2. 테스트


테스트 대상은 mariadb 소스컴파일 설치시 진행하는 make를 기준으로 진행하며


동일한 cmake 옵션으로 configure 하고 -j 옵션의 인자값만 바꿔가며 테스트해보기로 한다.


테스트 서버가 아주 노는 서버는 아니므로 4가지로 인자를 바꾸며 테스트 하는 과정을 1세트로 총 3세트를 진행해 오차를 줄였다. 



2.1 make 


처음 테스트는 아무옵션 없이 그냥 make 를 실행했다.


병렬처리가 안되기 때문에 아래 그림에서 보는것처럼 core별 사용량이 특별한게 없다.




make 총 시간 : 18분



2.2 make -j 5


5개로 분할해서 처리 해보니 몇몇 core가 튀는게 사용량이 좀되는듯하다.



make 총시간 : 4분



2.3 make -j 10 


10개로 분할하니 거의 모든 core가 사용되는듯하다.



make 총시간 : 2분



2.4 make -j 20


20개로 분할했을때 결과가 조금 의아했는데... 


모든 core를 사용하고 있었는데 시간은 10개에 비해 고작 20초가 줄었을 뿐이다.



make 총시간 : 1분 40초 



3. 결론


테스트 결과 core가 많은 장비라면 -j 옵션을 사용할 이유가 너무도 명확해졌다.


물론 10개와 20개로 분할했을때의 차이가 거의 나지않는건 좀 이상했지만...


core사용량 스샷이나 총시간을 감안했을때 하이퍼스레딩은 이번 테스트에서 영향이 없는게 아닐까...


실제 12core 만큼의 성능만 보여주는듯하다. 30개로 한번 더해봤다면 좋았을텐데.. 이놈의 귀차니즘...ㅠ



추가로.... 3세트로 진행해 평균으로 총시간을 기록했지만 사실 3세트 모두 결과가 같았다는.....음...;




'리눅스ETC' 카테고리의 다른 글

HAProxy 설치하기  (0) 2016.05.04
iscsi 구성하기  (0) 2016.04.06
php configure 에러  (0) 2016.04.06
리눅스 CentOS / netatalk 로 타임캡슐 만들기  (0) 2016.04.06
mysql 설치 에러  (0) 2016.04.05

to Top