Back to page

+ Links

 Print 

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

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

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

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

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

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

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

**インストール [#n1179c02]
 # emerge distcc

おっしまい。分散コンパイルに参加させたいホストは全部やってやります
**設定 [#u732ce9c]
 # 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をちょいと編集してしまいました。
**make.confの設定 [#r69ac3a6]
make.confにMAKEOPT,FEATURESを追加してやります。
 MAKEOPTS="-j4"
 FEATURES="distcc"
ここでは4にしてますが、1台のPCのCPUの数+1×PC台数分です。うちだとCPU1つのPCが2つ。なので
(1+1)×2で4になるわけですね。
*さて、実行結果は? [#pc04a8a0]
自動的にジョブ数が均等になるようにdistccが分散してくれます。普通のemergeもmakeの並列コンパイルに対応してると勝手に分散します。特に効果がでかかったのは、カーネルのコンパイル。

 # make menuconfig
 # make -j4
 # make modules_install

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

  

  • Backup source of GentooLinuxな生活/分散コンパイルで悩む(No. All)
    • Cur: 2009-08-19 (Wed) 01:23:05 maruo