分散コンパイル環境 distcc [FreeBSD 8.0R、2010/05/23) [FreeBSD]
分散コンパイル環境を構築してみました。分散コンパイルとは簡単に言うと、コンパイル環境のクラスタ化です。例えばkernelコンパイルの一部を他のPCに肩代わりさせることができるようになります。古いパソコンをサーバにしていてCPUが非常に弱い場合などに効果的でしょう。
クラスタ化において、サーバ(コンパイル処理を手伝う側)、クライアント(コンパイル処理を依頼する側)という概念があります。サーバとクライアントで設定内容が微妙に異なりますが、共通作業として少なくともports/devel/distccのインストールが必須です。
まずサーバ側設定作業を行います。syslogに大量のログを吐くので、その周りを整備します。(portsインストール時に少し説明が出ます)
また、デーモンとして常駐させるにあたり、クライアントのネットワークアドレスレンジを設定します。設定が終わったらサービスを立ち上げて下さい。
クライアント側の設定は、以下のような感じです。
あとは普通にコンパイルするだけです。うまく動いていればサーバ側に以下のようなログが残るはずです。
※2011/01/02ちょっと修正
クラスタ化において、サーバ(コンパイル処理を手伝う側)、クライアント(コンパイル処理を依頼する側)という概念があります。サーバとクライアントで設定内容が微妙に異なりますが、共通作業として少なくとも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ちょっと修正