[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 メーリングリストの案内