distcc を使うと、複数のマシンで並列分散コンパイルを行うことができるようになり、
処理時間を短縮することができます。
カーネルのビルドや、アプリケーションのビルドに有効です。
Ubuntu での設定をまとめます。
1. apt-get で、distcc をインストールします。
# apt-get install distcc
2. /etc/default/distcc を編集します。
# vi /etc/default/distcc (編集するのは、下記 3 箇所) STARTDISTCC="true" ALLOWEDNETS="192.168.0.0/24" → アクセスを許可するネットワークを指定 LISTENER="192.168.0.10" → アクセスを許可する NIC の IP アドレスを指定
3. distcc を起動します。
apt-get でインストールした時点で、自動起動するようにはなっています。
# /etc/init.d/distcc start
4. ビルドを実行する PC (CPU を借りる側) で、環境変数 DISTCC_HOSTS を設定します。
~/.bashrc にでも書いておくと良いです。
$ export DISTCC_HOSTS='localhost 192.168.0.20' (localhost と分散先を指定します)
■ 使用例 1: make を実行する場合
$ make -j 10 CC=distcc CXX=distcc
■ 使用例 2: configure を実行する場合
$ CC=distcc CXX=distcc ./configrue $ make -j 10
■ 使用例 3: kernel をビルドする場合
# MAKEFLAGS="CC=distcc CXX=distcc" CONCURRENCY_LEVEL=10 make-kpkg --initrd kernel_image kernel_headers
ちなみに、CPU を貸す側 PC の処理優先度は、nice 値 25 で実行されます。
(つまり、優先度低)
top の実行結果 (抜粋) 24034 distccd 25 5 37460 34m 4732 R 30 1.7 0:00.90 cc1 7864 root 20 0 40448 15m 6268 S 1 0.8 0:55.04 Xorg 8496 masao 20 0 20208 8824 7308 S 1 0.4 0:02.25 metacity 24035 distccd 25 5 5920 4084 844 R 1 0.2 0:00.02 as 8497 masao 20 0 41008 20m 15m S 0 1.0 0:01.72 gnome-panel 8540 masao 20 0 52772 20m 10m S 0 1.0 0:05.70 gnome-terminal 23650 distccd 25 5 2100 712 372 S 0 0.0 0:00.13 distccd 23671 distccd 25 5 2100 568 372 S 0 0.0 0:00.19 distccd 23807 distccd 25 5 2100 664 372 S 0 0.0 0:00.09 distccd 24046 distccd 25 5 10908 4924 2152 R 0 0.2 0:00.01 cc1 ...
■ 2009/10/08 追記
distccmon-text コマンドを使うと、どの PC で何の処理をしているかモニタリングすることができます。
$ distccmon-text 2 (2 は 2 秒ごとに更新) 5858 Blocked [0] 5918 Compile translate.c 192.168.0.30[0] 5700 Compile log.c 192.168.0.30[1] 5772 Compile entries.c 192.168.0.30[2] 5873 Compile questions.c 192.168.0.20[0] 5879 Compile merge.c 192.168.0.20[0] 5868 Compile lock.c 192.168.0.20[0] 5884 Compile props.c localhost[0] 5847 Compile relocate.c localhost[1]
● distcc, 並列, 分散, build, ビルド, compile, コンパイル, distccmon-text
1 件のコメント:
nice 値は標準の優先度 (20) に対する相対値なので、この場合は 5 です (A 型)。
コメントを投稿