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のコンパイルでも分散が使えるらしい。
分散コンパイルでサーバ、クライアントという表現が正しいかどうかは別にして。