본문 바로가기
운영_설치/리눅스_유닉스

distcc 사용

by 써드아이 2020. 3. 10.

성능이 제각각인 젠투 머신 3대가 있다.

각각의 스펙은 

pluto - opteron x3216, 16G
lenovo - i5-4570T, 8G
vmlinux - i5-9400F, 12G (가상)


패키지 빌드 속도는 아무래도 lenovo > vmlinux > pluto 가 되지 싶다.

활용도는 pluto가 가장 높고 vmlinux가 가장 낮다

이들을 적당히 섞어섯 빌드 속도를 높이고 싶어졌다.


방법1. 
가장 성능이 좋은 lenovo에서 바이너르 패키지로 빌드를 해서 뿌리는 방법이다.
괜찮은 방법이긴 한데 다른 기기에서 패키지를 설치할 때 lenovo 에서 
필요한 패키지를 모두 알아서 잘 바이너리로 만들어주어야한다. 
(알아서 잘 하겠지.. 안해봐서..)


방법2.
distcc를 이용하는 방법이다
분산하는 만큼 모든 머신을 활용할 수 있다.
단점으로는 모든 패키지가(ebuild가) 대응하지는 않는다고 한다.



방법2. 를 사용하기로 했다.
분산할 때 우선순위를 줄 수 있는데 lenovo를 가장 높은 우선순위로 주면 될듯하다.
pluto의 경우 분산 빌드를 지원하지 않는 패키지의 겅우 로컬에서 빌드를 해야하기 때문에
속터질 수 있다.

약간이나마 속도 향상을 위해 emerge가 빌드시 사용하는 /var/tmp/portage 디렉토리를 tmpfs를 사용하기로 했다.

 

 

각 기기의 gcc 버전은 동일하고 -march 옵션은 사용하지 않았다

 

우선순위 

1 : lenovor
2 : VM linux
3 : microserver


실제 컴파일 할 모든 머신에 distcc 서버를 설치, 실행하고 "--allow 192.168.0.0/24" 를 준다

/etc/conf.d/distccd


distcc-config는 셋다 동일하다 --set-hosts "lenovo ip VM linux ip microserver ip"

 

모니터링은 빌드를 시도한 기기에서

 

DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text 0.5

 

 

 

 

/etc/portage/make.conf

 

MAKEOPTS=""

FEATURES="distcc ccache"

 


pluto : 2 core
lenovo : 4 core
vm : 4 core

pluto + lenovo + vm : (2 * (2 + 4 + 4)) + 1 --> j21
distcc-config --set-hosts "192.168.0.30 192.168.0.40 192.168.0.20"

pluto + lenovo : (2 * (2 + 4)) + 1 --> j13
distcc-config --set-hosts "192.168.0.30 192.168.0.20"

pluto : 2 * 2 + 1 --> -j5
disable distcc

lenovo + vm : (2 * (4 + 4)) + 1 --> j17
distcc-config --set-hosts "192.168.0.30 192.168.0.40"

lenovo : (2 * 4) + 1 --> -j9
distcc-config --set-hosts "192.168.0.30"

 

 

 

실제로 emerge를 시도하니까 거의분산되지 않는다..

왜지??

 

 

 

**** 2020-03-18 추가 내용

 

더 확인해봐야겠지만

/etc/portage/make.conf 파일에서

 

MAKEOPTS="-j?? -l??" 에서 -l 부분을 빼면 좀 분산이 되는듯 하다

 

 

'운영_설치 > 리눅스_유닉스' 카테고리의 다른 글

wget 다운 받으면서 압축 풀기  (0) 2020.06.10
ifconfig & route 대체 프로그램  (0) 2020.03.20
portage 공유  (0) 2020.03.08
2020년 2월 21일 젠투 설치  (0) 2020.03.07
2020년 3월 7일 - 커널 설정  (0) 2020.02.27