Back to page

− Links

 Print 

GentooLinuxな生活​/分散コンパイルで悩む :: Nest Of Hawk

xpwiki:GentooLinuxな生活/分散コンパイルで悩む

Gentoo Linuxな生活​/サーバ設定関連[1]

Table of contents
  • Gentooといえば
  • distcc
    • インストール
    • 設定
    • make.confの設定
  • さて、実行結果は?

Gentooといえば anchor.png[2]

コンパイルしてパッケージをインストールするディストリビューションですからね。常にコンパイルから離れることはできません。しかしコンパイルはひじょ~に時間がかかるもの。なんとか短縮したいものですよね。そこでいくつか考えられますね。

  • 早いCPUに乗せ変えてせこせこコンパイル
  • 多くのPCで分担してコンパイルする

で、早いCPUに乗せかえるのは金がかかってしまいますので、お休みしているパソコンちゃんに分散してやらせるのがいい手ですね。そもそもCPUが遊んでるなら利用しない手はありません

Page Top

distcc anchor.png[3]

そこで登場するのがdistccです。gccで分散コンパイルをやらせるお手軽ツールちゃんです

Page Top

インストール anchor.png[4]

# emerge distcc

おっしまい。分散コンパイルに参加させたいホストは全部やってやります

Page Top

設定 anchor.png[5]

# distcc-config --set-hosts IPアドレス1 IPアドレス2 .....

と並べて記述していきます。これで分散させるホストが決定します。

さらに/etc/conf.d/distccdを編集いたします。ほとんどそのままでよいのですが、DISTCC_OPTSに--allow, --listenを追加してやると、セキュリティ的に安心になります。--allowは要求を許可するホストをネットワークアドレスで書いてやります。--listenはサーバ側がポートを開くアドレスを指定してやります。

DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/16" みたいに

さらにインストールすると環境変数DCCC_PATHが追加されます。内容は"/usr/lib/distcc/bin"になってます。このPATHを/usr/binよりも前に追加してやると、gcc,cc等のコマンドがdistccで分散させるための実行コマンドに変わります。私は/etc/profileをちょいと編集してしまいました。

Page Top

make.confの設定 anchor.png[6]

make.confにMAKEOPT,FEATURESを追加してやります。

MAKEOPTS="-j4"
FEATURES="distcc"

ここでは4にしてますが、1台のPCのCPUの数+1×PC台数分です。うちだとCPU1つのPCが2つ。なので (1+1)×2で4になるわけですね。

Page Top

さて、実行結果は? anchor.png[7]

自動的にジョブ数が均等になるようにdistccが分散してくれます。普通のemergeもmakeの並列コンパイルに対応してると勝手に分散します。特に効果がでかかったのは、カーネルのコンパイル。

# make menuconfig
# make -j4
# make modules_install

でLinux2.6のコンパイルは終了いたしますが、Pentium3の800MHzのノートでコンパイルすると1時間ぐらいかかるカーネルのコンパイルが、Celron2.6GHzのサーバもコンパイルに参加させるので、20分ぐらいで終了します。さらにPCの台数を増やすとどんどんコンパイル速度が速くなるという仕組み。これならチープなCPUのパソにGentooをインストールするのも怖くなくなりますねぇ~。うっふっふ


Last-modified: 2009-08-19 (Wed) 01:23:05 (JST) (4124d) by maruo