間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

distcc

distccを使ってみたくなったのでめも

参考URL
http://elsidion.blogspot.com/2005/09/debiandistcc.html

cd /usr/local/bin
ln -s /usr/bin/distcc ./gcc


結果
@VM@1CPU@XP@Athlon64 X2:~/linux-2.6.23# make clean ; time make -j3 bzImage
real 26m8.540s
user 20m44.110s
sys 5m30.965s

@実機@Celeron 550# make clean ; time make -j3 bzImage
real 46m45.806s
user 42m52.553s
sys 3m32.549s

@上記2機でdistcc、ホストは実機
:~/linux-2.6.23# export "DISTCC_HOSTS=etchdistcc localhost" ; make clean ; time make -j 5 bzImage
real 16m46.790s
user 13m38.923s
sys 2m46.570s

@上記2機でdistcc@VM2CPU設定、ホストは実機
:~/linux-2.6.23# export "DISTCC_HOSTS=etchdistcc localhost" ; make clean ; time make -j 7 bzImage
real 13m35.050s
user 10m37.604s
sys 2m40.246s

@distcc@VM2CPU@Athlon64 X2、ホストは実機
:~/linux-2.6.23# export "DISTCC_HOSTS=etchdistcc" ; make clean ; time make -j 7 bzImage
real 10m9.248s
user 6m4.275s
sys 2m25.761s



実行状態確認

watch /usr/bin/distccmon-text


http://www.ibm.com/developerworks/jp/linux/library/l-distcc/

最後に一点、バージョンに関しての注意です。distccプログラムは、distccクラスターの全ノードに渡ってgccのモニターのバージョンに同じものを使った場合に最大の効果を発揮します。異なったバージョンのモニターを使うと不安定なビルドになったり、時にはビルドのプロセスが完全に失敗したりすることもあります。これはバージョンが異なると、問題を引き起こすくらいgccの中の部分が異なっているためです。例えば上の例でmymachineとflimとjabberwockyがgcc 3.3.1を実行しており、flamがgcc 3.2.2を実行したとすると、どのマシンでどの部分のビルドが行われるかによって、OpenSSHのビルドは完全に成功するかも知れず、失敗するかも知れないのです。この場合では、成功したビルドであっても期待したようには動作しないかも知れないことを警告しておきます。

どのビルドも完全で安定なものとするには、同じバージョンのモニターを使うことが重要です(例えばgcc 3.3.4とgcc 3.3.1は共にgcc 3.3.xなので、この組み合わせは問題ありません)。もし何かがおかしいとしたら、おそらくdistccに関連した問題ではないはずです。

ほー

参考 distcc内部動作
http://sakurai.sumomo.ne.jp/page/distcc

プリプロセス後のコンパイル(またはアセンブル)をリモートホストに行わせるプログラム。 プリプロセス、リンク等はローカルで行う。
distccは、ccやgccの代わりに呼ばれるプログラム。 distcc自体が並列ビルドを行うわけではない。 並列ビルドは、make -jの仕事。

このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。