Gentoo에서 Distcc를 사용하는데 있어어 알아야할 몇가지
distcc는 linux 또는 gcc compiler를 사용함에 있어 낮은 자원의 computer로 하여금
높은 자원을 가진 computer 의 cpu resource를 사용할 수 있게 함으로서
서로 나누어 먹는 아름다운 삽질사회를 만들기위한 기초적인 도구로 사용될 수 있는 프로그램이다.
distcc는 극단적으로 말해 내 컴퓨터의 cpu가 낮은경우 좋은 시스템의 cpu를 컴파일시에만
빌려서 쓸 수 있게 함으로서 컴파일 시간 및 자원의 활용도를 높이는데 그 목적이 있는데
이렇게 사용하기 위해서는 몇가지 전제 조건이 필요하다.
1. distcc로 연결되는 computer는 서로 network이 되어야 한다.(당연하다...)
2. distcc로 연결되는 computer는 서로 gcc의 버전이 같아야 한다.
3. distcc로 연결되는 computer는 서로 아키텍처가 틀려도 작동할 수 있다.
3번의 조건에 대해서는 다른곳에서 추가적으로 다루기로 하고 일단은 1번과 2번에 대해 생각해보기로 하겠다.
일단 아래의 허접한 diagram을 참고해 주기 바란다.
위의 diagram에서 일단 distcc client부터 살펴보기로 한다.
distcc를 사용하기 위해서는 일단 distcc가 설치되어 있어야 한다.
emerge distcc
물론 이 이전에 distcc client와 distcc server의 gcc version을 맞추어 주어야 하는것은 기본조건.
가능한한 아키텍처도 같은 x86으로 맞추어 주는것이 좋다.
이렇게 distcc를 설치한다음 client에서는 내가 어느 서버를 사용하게 될지를 설정하여야 한다.
distcc-config --set-hosts "192.168.0.11 192.168.0.12"
이런식으로 작성을 한다. distcc server1에 cpu가 2개여서 한꺼번에 2개의 컴파일을 진행할 수 있는 경우는 다음과 같이 하면 된다.
distcc-config --set-hosts "192.168.0.11 192.168.0.11 192.168.0.12"
저렇게 같은 ip를 두번 적어주면 된다.
distcc는 기본적으로 동급이거나 높은 cpu인 경우에 효과가 좋다.
본인의 경우에는 distcc client가 노트북이기때문에 localhost등은 distcc host에 추가하지 않았다.
그다음 gentoo에서는 2가지 가량의 환경변수를 세팅하여야 한다.
MAKEOPTS="-j5"
FEATURES="distcc"
위의 2가지 환경변수중 MAKEOPTS는 cpu의 개수 +1을 말한다. 이 경우 cpu를 3개를 사용하는것과 같은 효과를
낼 수 있기때문에 -j4정도로 지정하는것이 옳다고 생각한다.
그 밑의 FEATURES는 컴파일시에 distcc를 사용한다는 환경변수이며 두 환경변수 모두
/etc/make.conf
에 설정하는것이 gentoo distcc guide에서 권장하는 방법이다.
distcc를 설치하는경우 distcc server와 distcc util들이 설치되는데 distcc client의 경우는 distcc server를 별도로 설정할 필요가 없다.
distcc server의 경우는 distcc util과는 전혀 상관없이 distcc server만 설정을 하고 distcc daemon만 구동시켜주면 된다.
/etc/conf.d/distccd 파일을 보면
DISTCCD_OPTS라는부분이 보인다. 여기서 이 부분을 다음과 같이 수정한다
(행여 미리 되어있다면 굳이 수정할 필요는 없다)
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/24"
이것은 현재 같은 C class를 사용하는 컴퓨터들에게서 distcc에 대한 요청을 받아들인다는 뜻이다.
이다음 /etc/init.d/distccd 를 실행시켜 distcc daemon을 구동시키기만하면 distcc를 사용할 준비는 끝나게 된다.
distcc가 올바르게 구동되는지 알아볼 수 있게하기위해 distcc util중에서 distccmon 이라는 프로그램이 제공된다.
이 모니터 프로그램은 distccmon-text distccmon-gtk distccmon-gnome 으로 나뉘게되며
gentoo의 USE flag에 따라 gtk버전과 gnome버전은 distcc 이버징시 빌드되지 않는 경우도 있다.
DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-gnome
이렇게 콘솔에서 사용을 하게되면 distccmon-gnome이 구동되면서 distcc의 작동상황을 모니터링 할 수 있다.
이때 모니터링은 서버에서 사용하는것이 아니라.... distcc client에서 구동을 하게된다.
모니터 프로그램은 distcc 서비스를 제공하는 distcc daemon의 상태를 모니터링 해주는것이 아니라
distcc client에서 어떤 리소스들을 사용하는지에 대한 모니터링을 해주는 프로그램이다.