[Armadillo:07593] Re: Atmark Distでカーネルmakeを並列実行
Takenoshita Koyo
email@hidden
2011年 9月 22日 (木) 19:35:48 JST
竹之下です。
カーネルは-jオプションに対応しているので、並列コンパイルでかなり
速くなりますね。もし、遊んでいるPCがあるのであれば、distcc[*1]を
使って分散コンパイルするともっと速くできると思います。
> ユーザランドのmakeは、何も考えないで並列実行させると、まだで
> きあがってないターゲットを別のmakeで参照するようで、期待した
> 動きをしないようです。
> こちら何かよい情報をお持ちの方いらっしゃいましたら、アドバイ
> スをいただけると嬉しいです。
Atmark Distは、残念ながら-jオプションに対応していません。しかし、
ビルド時間を短縮するには、ccache[*2]を使うという手があります。
手元の環境では、Armadillo-420の標準イメージのビルドが
real 12m12.447s
user 11m2.977s
sys 1m51.003s
ぐらいかかっていたのが、
ccache 有効にすると、
real 5m11.607s
user 3m43.006s
sys 1m14.785s
ぐらいに短縮できました。
ccacheを有効にするために、atmark-distに添付のパッチを当てています。
また、ccache が使う cache directory (/home/takenoshita/.ccache)は、
tmpfsでマウントしています。500MB分用意したのですが、atmark-distの
ビルド後でも36MBしか使っていなかったので、100MBもあれば十分かも
しれません。
$ ccache -s
cache directory /home/takenoshita/.ccache
cache hit (direct) 1680
cache hit (preprocessed) 80
cache miss 1715
called for link 300
multiple source files 4
compile failed 32
preprocessor error 3
bad compiler arguments 39
unsupported source language 111
autoconf compile/link 116
unsupported compiler option 952
no input file 1246
files in cache 4594
cache size 36.1 Mbytes
max cache size 500.0 Mbytes
ccacheとdistccを併用するという技もあるようです[*3]。
[*1]: http://code.google.com/p/distcc/
[*2]: http://ccache.samba.org/
[*3]: http://www.ibm.com/developerworks/jp/linux/library/l-ccache/
(2011年09月22日 09:14), email@hidden wrote:
> 小松平です。
>
> Atmark Distでカーネルのmakeを並列実行したところ、効果が見ら
> れたので報告します。
>
>
> ■開発環境
>
> 開発環境は次の通りです。
> - ATDE3
> - ホスト
> -- CPU Core2Duo SU9400(2コア) 1.4GHz
> -- RAM 3GB
> -- OS Windows Vista SP2
> - VMware Playerで..
> 1. 仮想マシンをパワーオフして..
> 2. メニュー「仮想マシン(V)」→「仮想マシンの設定...(S)」
> メモリ 512MB(なんとなく)
> プロセッサ コアの数 2
>
>
> ■トップレベルMakefile
>
> トップレベルMakefileに次の変更を加えます。
> ====
> email@hidden:~/atmarktechno/dist/atmark-dist-20110704$ diff Makefile.org Makefile
> 291c291
> < $(MAKEARCH_KERNEL) -C $(LINUXDIR) $(LINUXTARGET) || exit 1
> ---
>> $(MAKEARCH_KERNEL) $(KERNEL_JOPT) -C $(LINUXDIR) $(LINUXTARGET) || exit 1
> ====
>
>
> ■make
>
> 次でmakeして、ログを取る。
>
> ====
> email@hidden:~/atmarktechno/dist/atmark-dist-20110704$ make clean ; (time KERNEL_JOPT=-j4 make linux)>time-linux-make-j4 2>&1 ; ls -l linux-2.6.x/arch/arm/boot>>time-linux-make-j4 ; make clean ; (time KERNEL_JOPT=-j1 make linux)>time-linux-make-j1 2>&1 ; ls -l linux-2.6.x/arch/arm/boot>>time-linux-make-j1
> ====
>
>
>
> ■結果
>
> 次の結果を得ました。
>
> ====
> email@hidden:~/atmarktechno/dist/atmark-dist-20110704$ tail time-linux-make-j?
> ==> time-linux-make-j1<==
> real 10m55.384s
> user 8m24.860s
> sys 3m5.400s
> 合計 5288
> -rwxr-xr-x 1 atmark atmark 3609696 2011-09-21 23:25 Image
> -rw-r--r-- 1 atmark atmark 2901 2011-07-04 17:20 Makefile
> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 17:20 bootp
> drwxr-xr-x 2 atmark atmark 4096 2011-09-21 23:25 compressed
> -rw-r--r-- 1 atmark atmark 1326 2011-07-04 17:20 install.sh
> -rwxr-xr-x 1 atmark atmark 1774592 2011-09-21 23:25 zImage
>
> ==> time-linux-make-j4<==
> real 6m35.020s
> user 9m40.632s
> sys 3m17.560s
> 合計 5288
> -rwxr-xr-x 1 atmark atmark 3609696 2011-09-21 23:12 Image
> -rw-r--r-- 1 atmark atmark 2901 2011-07-04 17:20 Makefile
> drwxr-xr-x 2 atmark atmark 4096 2011-07-04 17:20 bootp
> drwxr-xr-x 2 atmark atmark 4096 2011-09-21 23:12 compressed
> -rw-r--r-- 1 atmark atmark 1326 2011-07-04 17:20 install.sh
> -rwxr-xr-x 1 atmark atmark 1774592 2011-09-21 23:12 zImage
> ====
>
> -j4で6分35秒
> -j1で10分55秒
>
> カーネルのmakeが6割程度の時間で終了しました。
>
> 生成物の中身の確認まではしていないのですが、同じサイズをもっ
> て、同じものと判断しちゃいました。
>
>
> ユーザランドのmakeは、何も考えないで並列実行させると、まだで
> きあがってないターゲットを別のmakeで参照するようで、期待した
> 動きをしないようです。
> こちら何かよい情報をお持ちの方いらっしゃいましたら、アドバイ
> スをいただけると嬉しいです。
>
> 以上です。
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
--
Koyo Takenoshita
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: atmark-dist-support-ccache.diff
型: text/x-patch
サイズ: 1928 バイト
説明: 無し
URL: <http://lists.atmark-techno.com/pipermail/armadillo/attachments/20110922/c536ddfb/attachment.bin>
armadillo メーリングリストの案内