[Armadillo:07590] Atmark Distでカーネルmakeを並列実行

email@hidden
2011年 9月 22日 (木) 09:14:52 JST


小松平です。

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