読者です 読者をやめる 読者になる 読者になる

distccで分散コンパイルする

FreeBSDでのソースコンパイルを高速化させるためにdistccを利用してみました。
今回は2コア4スレッド処理可能なATOM 330を載せたファイルサーバを分散先。PentiumM 1.4GHzのThinkPad T41を分散元にしてみました。
まずは両方のマシンでdistccをインストールする

# cd /usr/ports/devel/distcc/
# make config-recursive
# make install clean
# rehash

/etc/syslog.confに次の2行を追記しておく。

!distccd
*.*                                     /var/log/distccd.log

書き換えたのでsyslogを再起動しておく

# /etc/rc.d/syslogd restart

サーバ側の/etc/rc.confを編集してdistccdの起動と受け入れるネットワークの範囲を決めておく。

distccd_enable=YES
distccd_flags="-a 192.168.X.0/24 --user distcc --daemon -P /var/run/distccd.pid --listen 192.168.X.10"

クライアント側の/etc/rc.confにもdistccdの起動に関する記述を行う。

distccd_enable=YES
distccd_flags="-a 192.168.X.0/24 --user distcc --daemon -P /var/run/distccd.pid"

双方のマシンでdistccdを起動する

# /usr/local/etc/rc.d/distccd start
Starting distccd.

さらに双方の/etc/make.confに次の記述を追加

CC=/usr/local/bin/distcc cc
CXX=/usr/local/bin/distcc c++

続いてクライアント側のシェル設定の中に下記を追記する

setenv DISTCC_HOSTS "192.168.X.10 127.0.0.1"

この状態でクライアント側でカーネル再構築を行う。

# cd /usr/src
# make update
# make -j6 buildkernel

サーバ側でtopコマンドなどを利用し、cc1やcc1plusというプロセスが動いていて、さらにdistccdでCOMPILE_OKが出てるログがあれば分散コンパイルができてるはず。
/etc/make.confにMAKE_JOBS_NUMBER=Xと記述しておけばportsコンパイルでも分散が使えるらしい。

分散コンパイルでサーバ、クライアントという表現が正しいかどうかは別にして。