SSブログ

分散コンパイル環境 distcc [FreeBSD 8.0R、2010/05/23) [FreeBSD]

分散コンパイル環境を構築してみました。分散コンパイルとは簡単に言うと、コンパイル環境のクラスタ化です。例えばkernelコンパイルの一部を他のPCに肩代わりさせることができるようになります。古いパソコンをサーバにしていてCPUが非常に弱い場合などに効果的でしょう。

クラスタ化において、サーバ(コンパイル処理を手伝う側)、クライアント(コンパイル処理を依頼する側)という概念があります。サーバとクライアントで設定内容が微妙に異なりますが、共通作業として少なくともports/devel/distccのインストールが必須です。

まずサーバ側設定作業を行います。syslogに大量のログを吐くので、その周りを整備します。(portsインストール時に少し説明が出ます)
# cat /etc/syslog.conf
!distccd
*.*                                             /var/log/distccd.log

# cat /etc/newsyslog.conf
/var/log/distccd.log                    640  10    500  *     JC

また、デーモンとして常駐させるにあたり、クライアントのネットワークアドレスレンジを設定します。設定が終わったらサービスを立ち上げて下さい。
# cat /etc/rc.conf
distccd_enable="YES"
distccd_flags="-a 1.2.3.0/24 --user distcc --daemon -P /var/run/distccd.pid"

クライアント側の設定は、以下のような感じです。
# cat /etc/make.conf
MAKE_JOBS_NUMBER=16
CC=/usr/local/libexec/distcc/cc
CXX=/usr/local/libexec/distcc/c++

# cat ~/.cshrc
setenv  DISTCC_HOSTS "--randomize localhost/2 atom,lzo"

あとは普通にコンパイルするだけです。うまく動いていればサーバ側に以下のようなログが残るはずです。
(dcc_job_summary) client: 1.2.3.100:43882 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:1968ms cc thunar-vfs-job.c

※2011/01/02ちょっと修正

共通テーマ:日記・雑感