[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gentoojp-users 150] distcc を試してみました



  鈴木洋二と申します。

  3/10 の Gentoo Weekly Newsletter で紹介されていた distcc を試してみ
ました。

  distcc とは、CとC++の分散コンパイルをネットワーク上の複数のマシンで
行うもので、make の -j オプション(ジョブの並行処理)と組み合わせて使う
と効果的です。
  性能が今一なノートPCでも、テスクトップのパワフルなマシンがあれば、
emerge -u world でも早く終わるでしょう。

  で、とりあえずカーネルのビルドを試してみました。

  マシンは、
    1) Pentium-III/600MHz + メモリ192MB のノートPC
    2) AthronMP/1.2GHz *2 + メモリ512MB のデスクトップ
    3) Cerlon/450MHz *2 + メモリ448MB のデスクトップ
               (こいつはオーバークロックしたデュアルセルロンです)
  の3つで、100Mイーサで接続されています。
  1) のカーネルを再構築するため、2)と3)のマシンもコンパイルに使用し
  ました。

  まず、各マシンのgccのバージョンを揃えなければなりません。3台のうち一
番新しかったgcc-3.2.2にそろえました。

  次に、各マシンに  emerge distcc し、distccd を起動しておきます。
  localhostでは distccd を起動しなくても良いようです。

  最後に、環境変数を

  export PATH=/usr/lib/distcc/bin:$PATH
  export DISTCC_HOSTS="athlon cerlon localhost"

  として、make実行時に -j8 オプションを追加してビルドします。

  で、make dep ;make clean ; make bzImage ; make modules を実行するの
にかかった時間は、

    普通にビルド    : 20分
    distcc でビルド :  6分

  という結果になり、かなりのスピードアップができました。

#   ただ、AthlonMPのマシンでは、distccを使わなくても make -j3 でビルドす
# るだけで 5分で済んでしまうので、結局のところ3台全部を使わなくても
# AthlonMPだけでもかなり早くなるんですが。

  ということで、ノートPCに Gentoo を入れているけどパワフルなデスクトッ
プも持っている、というような人には distcc はとても嬉しいと思います。

  実のところ、Pentium-IIIのノートPC上の Gentoo をアップデートする際の
コンパイル時間をどうにかしようと、バイナリパッケージのクロスビルド
(AthlonMPでPentium-IIIのバイナリを作成する)を考えていたのですが、 
distcc のおかげで一挙に解決してしまいました。


  ついでながら、distcc を調べていると ccache というものに遭遇します。
これは、コンパイル結果をキャッシュすることで再コンパイルを高速化する、
というもので、カーネルや大きなパッケージを何度も再ビルドするような場合
には有効に働くでしょう。
  ちなみに、Pentium-IIIのノートPC上で、カーネルのビルドで distcc を使
わずに ccache を使用した場合、1回目は22分、2回目は 5分 でした。これも、
2回目以降は劇的な高速化になります。


# 上の計測結果は、何度もビルドを繰り返した結果なので、ディスクキャッシュ
# の効果が効いていると思います。 初回ならもう一回り時間がかかるでしょう。

----------------------------------------------------------------------
                                suzuki-youji@xxxxxxxxxxxxxx  鈴木洋二