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