Ubuntu11.04でAndroidビルド環境を構築する Core i7-980 3.33GHz編
速いマシンが手に入ったので、ビルドのベンチマークをしてみる。
今回は、いつものx86ではなく、素直なARMビルドで。
ハードウエア・スペックの確認
マシンは、mouse computerのもの。
こんな感じってスペック出したけど、最終的に何になったかは知らない。
とりあえず、Windows7起動して動作確認とスペック確認。
- Core i7-980 3.33GHz
- ICH10
- RAM 12GB (A-DATA HY63I1C1624ZS 4Gx3)
- HL-DT-ST DVDRAM GH24NS70 ATA Device (LG SATA)
- ST31000524AS (1TB SATA600 7200)
- NVIDIA GeForce GTX 570
- Realtek PCIe GBE
- Renesas USB 3.0 Host Controller(onBoard)
- Marvell 91xx SATA 6G Controller(onBoard)
さて、スペックの確認できたし、Windows7におさらばしよう。
Ubuntu
USBメモリで用意したUbuntu11.04(amd64)をUSBに挿し込む。
BIOSはAMIだった。
ドライブの起動順序はBIOSで指定できないようだ。
AMIなので、起動ドライブを選ぶのにF11を押しながら起動。
ビルドマシンなので、ヘッドレスを前提に、いつものDebianでもUbuntu鯖でもいいのだが、GTVエミュ起動する開発環境ほしいので普通に入れる。
ってか、蟹GBEが11.04で認識しない… orz
ケーブルがダメだったみたい。GBE対向できし麺ケーブルはダメだな。
今回は恒例のドライブゼロ書きはパス。
本格的に構築するときには、再度やるさ。
インストール終わり。再起動。
なんか起動時にPXEbootしようとするのだけど、そのうち設定で止めないと。
再起動すると、Unityは使えないとメッセージ。これはいつものことだな。
freeで見ると、RAMは1GBくらいを使用している。贅沢だわ。
システム・モニタを起動する。CPUが並んでる... orz
そのうち3個が動いている。
しばらくしたら、NVIDIAのプロプラドライバがインストールできるというメッセージが出た。
入れる。
再起動。
Unityで起動した。
dropbear入れてsshできるようにする。
あとの作業はリモードから。
kernel。
root@BuildSV:~# uname -a Linux BuildSV 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
パッケージいらないの捨てる。
root@BuildSV:~# dpkg -l| awk 'NR>5 {print $2}' | wc 1384 1384 20136
依存関係があって、案外消せないな。
このままでいいか。
Git
入ってないので、入れる。
root@BuildSV:~# apt-get install git git-core gitk
入ったのは、emacsen-common git git-core git-man gitk liberror-perl tk tk8.4。
gitのバージョンは、1:1.7.4.1-3。
ビルドに必要なパッケージ
build-essential zip unzipは入ってた。残りを入れる。
root@BuildSV:~# apt-get install flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev curl valgrind zlib1g-dev 以下のパッケージが新たにインストールされます: bison curl esound-common flex gperf libaa1-dev libasound2-dev libaudio-dev libaudio2 libaudiofile-dev libaudiofile0 libavahi-client-dev libavahi-common-dev libc6-dbg libcaca-dev libcurl3 libdbus-1-dev libdrm-dev libesd0 libesd0-dev libgl1-mesa-dev libglib2.0-dev libglu1-mesa-dev libice-dev libkms1 libncurses5-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libpulse-dev libsdl1.2-dev libslang2-dev libsm-dev libwxbase2.6-0 libwxbase2.6-dev libwxgtk2.6-0 libwxgtk2.6-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxt-dev m4 mesa-common-dev valgrind wx2.6-headers x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev xtrans-dev zlib1g-dev 以下のパッケージはアップグレードされます: libdbus-1-3 libpng12-0 libpulse-browse0 libpulse-mainloop-glib0 libpulse0 pulseaudio pulseaudio-esound-compat pulseaudio-module-bluetooth pulseaudio-module-gconf pulseaudio-module-x11 pulseaudio-utils
32bit環境ビルド用互換ライブラリ
root@BuildSV:~# apt-get install gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs lib32readline5-dev lib32z1-dev 以下のパッケージが新たにインストールされます: g++-4.5-multilib g++-multilib gcc-4.5-multilib gcc-multilib ia32-libs lib32asound2 lib32bz2-1.0 lib32gcc1 lib32gomp1 lib32ncurses5 lib32ncurses5-dev lib32ncursesw5 lib32readline5 lib32readline5-dev lib32stdc++6 lib32v4l-0 lib32z1 lib32z1-dev libc6-dev-i386 libc6-i386 libncurses5-dev zlib1g-dev
Java
パートナーリポジトリを使えるようにする。
root@BuildSV:~# vi /etc/apt/sources.list deb http://archive.canonical.com/ubuntu natty partner deb-src http://archive.canonical.com/ubuntu natty partner root@BuildSV:~# apt-get update
入れられるJDKを確認。
root@BuildSV:~# apt-cache search sun-java sun-javadb-client - Java DB client sun-javadb-common - Java DB common files sun-javadb-core - Java DB core sun-javadb-demo - Java DB demo sun-javadb-doc - Java DB documentation sun-javadb-javadoc - Java DB javadoc sun-java6-plugin - Java(TM) Plug-in, Java SE 6 sun-java6-jdk - Sun Java(TM) Development Kit (JDK) 6 sun-java6-demo - Sun Java(TM) Development Kit (JDK) 6 demos and examples sun-java6-bin - Sun Java(TM) Runtime Environment (JRE) 6 (architecture dependent files) ia32-sun-java6-bin - Sun Java(TM) Runtime Environment (JRE) 6 (32-bit) sun-java6-source - Sun Java(TM) Development Kit (JDK) 6 source files sun-java6-jre - Sun Java(TM) Runtime Environment (JRE) 6 (architecture independent files) sun-java6-javadb - Java(TM) DB, Sun Microsystems' distribution of Apache Derby sun-java6-fonts - Lucida TrueType fonts (from the Sun JRE)
今は、OpenJDKでもビルドできるみたいだけど、ここは基本に忠実に。
root@BuildSV:~# apt-get install sun-java6-jdk 以下のパッケージが新たにインストールされます: gsfonts-x11 java-common odbcinst odbcinst1debian2 sun-java6-bin sun-java6-jdk sun-java6-jre unixodbc
ライセンスの表示が出るので、読んで同意する。
javaは複数環境を入れることができるので、現在どれが優先になっているかどうか確認する。
root@BuildSV:~# update-java-alternatives -l java-6-sun 63 /usr/lib/jvm/java-6-sun
今回は他のパッケージがないので、やってもエラーになるのだけど、複数ある場合は以下のように指定する。
root@BuildSV:~# update-java-alternatives -s java-6-sun
対話的にやる場合は、以下でもよい。
root@BuildSV:~# update-alternatives --config java alternative java (/usr/bin/java を提供) には 1 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ 0 /usr/lib/jvm/java-6-sun/jre/bin/java 63 自動モード * 1 /usr/lib/jvm/java-6-sun/jre/bin/java 63 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 0
一度設定されてしまうと、選択肢がない場合は設定できない。
root@BuildSV:~# update-alternatives --config java リンクグループ java に 1 つの alternative のみがあります: /usr/lib/jvm/java-6-sun/jre/bin/java 設定は行いません。
repoの取得
root@BuildSV:~# mkdir ~/bin root@BuildSV:~# cd ~/bin root@BuildSV:~/bin# wget http://android.git.kernel.org/repo --2011-08-26 17:12:27-- http://android.git.kernel.org/repo android.git.kernel.org をDNSに問いあわせています... 149.20.4.77, 2001:4f8:1:10:1972:112:1:0 android.git.kernel.org|149.20.4.77|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 17451 (17K) [text/plain] `repo' に保存中 100%[======================================>] 17,451 37.2K/s 時間 0.5s 2011-08-26 17:12:31 (37.2 KB/s) - `repo' へ保存完了 [17451/17451] root@BuildSV:~/bin# chmod a+x repo root@BuildSV:~/bin# cd ~ root@BuildSV:~#
リポジトリの初期化
今回は、ベンチマーク的な意味あいがあるので、以下のテツコバさんのリポートと環境を揃えてみる。
http://blog.kmckk.com/archives/3722957.html
ただ、UbuntuのバージョンとJDKが違うので、厳密な比較にはならない。
root@BuildSV:~# mkdir benchdroid root@BuildSV:~# cd benchdroid/ root@BuildSV:~/benchdroid# ~/bin/repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3.4_r1 gpg: 鍵輪「/root/.repoconfig/gnupg/secring.gpg」ができました gpg: 鍵輪「/root/.repoconfig/gnupg/pubring.gpg」ができました gpg: /root/.repoconfig/gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵920F5C65: 公開鍵“Repo Maintainer <repo@android.kernel.org>”を読み込みました gpg: 処理数の合計: 1 gpg: 読込み: 1 Getting repo ... from git://android.git.kernel.org/tools/repo.git remote: Counting objects: 1309, done. remote: Compressing objects: 100% (568/568), done. remote: Total 1309 (delta 843), reused 1150 (delta 718) Receiving objects: 100% (1309/1309), 358.83 KiB | 290 KiB/s, done. Resolving deltas: 100% (843/843), done. From git://android.git.kernel.org/tools/repo * [new branch] maint -> origin/maint * [new branch] master -> origin/master * [new branch] stable -> origin/stable * [new tag] v1.7.5 -> v1.7.5 From git://android.git.kernel.org/tools/repo * [new tag] v1.0 -> v1.0 * [new tag] v1.0.1 -> v1.0.1 * [new tag] v1.0.2 -> v1.0.2 * [new tag] v1.0.3 -> v1.0.3 * [new tag] v1.0.4 -> v1.0.4 * [new tag] v1.0.5 -> v1.0.5 * [new tag] v1.0.6 -> v1.0.6 * [new tag] v1.0.7 -> v1.0.7 * [new tag] v1.0.8 -> v1.0.8 * [new tag] v1.0.9 -> v1.0.9 * [new tag] v1.1 -> v1.1 * [new tag] v1.2 -> v1.2 * [new tag] v1.3 -> v1.3 * [new tag] v1.3.1 -> v1.3.1 * [new tag] v1.3.2 -> v1.3.2 * [new tag] v1.4 -> v1.4 * [new tag] v1.4.1 -> v1.4.1 * [new tag] v1.4.2 -> v1.4.2 * [new tag] v1.4.3 -> v1.4.3 * [new tag] v1.4.4 -> v1.4.4 * [new tag] v1.5 -> v1.5 * [new tag] v1.5.1 -> v1.5.1 * [new tag] v1.6 -> v1.6 * [new tag] v1.6.1 -> v1.6.1 * [new tag] v1.6.10 -> v1.6.10 * [new tag] v1.6.10.1 -> v1.6.10.1 * [new tag] v1.6.10.2 -> v1.6.10.2 * [new tag] v1.6.2 -> v1.6.2 * [new tag] v1.6.3 -> v1.6.3 * [new tag] v1.6.4 -> v1.6.4 * [new tag] v1.6.5 -> v1.6.5 * [new tag] v1.6.6 -> v1.6.6 * [new tag] v1.6.7 -> v1.6.7 * [new tag] v1.6.7.1 -> v1.6.7.1 * [new tag] v1.6.7.2 -> v1.6.7.2 * [new tag] v1.6.7.3 -> v1.6.7.3 * [new tag] v1.6.7.4 -> v1.6.7.4 * [new tag] v1.6.7.5 -> v1.6.7.5 * [new tag] v1.6.8 -> v1.6.8 * [new tag] v1.6.8.1 -> v1.6.8.1 * [new tag] v1.6.8.10 -> v1.6.8.10 * [new tag] v1.6.8.11 -> v1.6.8.11 * [new tag] v1.6.8.2 -> v1.6.8.2 * [new tag] v1.6.8.3 -> v1.6.8.3 * [new tag] v1.6.8.4 -> v1.6.8.4 * [new tag] v1.6.8.5 -> v1.6.8.5 * [new tag] v1.6.8.6 -> v1.6.8.6 * [new tag] v1.6.8.7 -> v1.6.8.7 * [new tag] v1.6.8.8 -> v1.6.8.8 * [new tag] v1.6.8.9 -> v1.6.8.9 * [new tag] v1.6.9 -> v1.6.9 * [new tag] v1.6.9.1 -> v1.6.9.1 * [new tag] v1.6.9.2 -> v1.6.9.2 * [new tag] v1.6.9.3 -> v1.6.9.3 * [new tag] v1.6.9.4 -> v1.6.9.4 * [new tag] v1.6.9.5 -> v1.6.9.5 * [new tag] v1.6.9.6 -> v1.6.9.6 * [new tag] v1.6.9.7 -> v1.6.9.7 * [new tag] v1.6.9.8 -> v1.6.9.8 * [new tag] v1.7 -> v1.7 * [new tag] v1.7.1 -> v1.7.1 * [new tag] v1.7.2 -> v1.7.2 * [new tag] v1.7.3 -> v1.7.3 * [new tag] v1.7.3.1 -> v1.7.3.1 * [new tag] v1.7.4 -> v1.7.4 * [new tag] v1.7.4.1 -> v1.7.4.1 * [new tag] v1.7.4.2 -> v1.7.4.2 * [new tag] v1.7.4.3 -> v1.7.4.3 Getting manifest ... from git://android.git.kernel.org/platform/manifest.git remote: Counting objects: 874, done. remote: Compressing objects: 100% (347/347), done. remote: Total 874 (delta 367), reused 870 (delta 363) Receiving objects: 100% (874/874), 248.50 KiB | 168 KiB/s, done. Resolving deltas: 100% (367/367), done. From git://android.git.kernel.org/platform/manifest * [new branch] android-1.5 -> origin/android-1.5 * [new branch] android-1.5r2 -> origin/android-1.5r2 * [new branch] android-1.5r3 -> origin/android-1.5r3 * [new branch] android-1.5r4 -> origin/android-1.5r4 * [new branch] android-1.6_r1 -> origin/android-1.6_r1 * [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1 * [new branch] android-1.6_r1.2 -> origin/android-1.6_r1.2 * [new branch] android-1.6_r1.3 -> origin/android-1.6_r1.3 * [new branch] android-1.6_r1.4 -> origin/android-1.6_r1.4 * [new branch] android-1.6_r1.5 -> origin/android-1.6_r1.5 * [new branch] android-1.6_r2 -> origin/android-1.6_r2 * [new branch] android-2.0.1_r1 -> origin/android-2.0.1_r1 * [new branch] android-2.0_r1 -> origin/android-2.0_r1 * [new branch] android-2.1_r1 -> origin/android-2.1_r1 * [new branch] android-2.1_r2 -> origin/android-2.1_r2 * [new branch] android-2.1_r2.1p -> origin/android-2.1_r2.1p * [new branch] android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2 * [new branch] android-2.1_r2.1s -> origin/android-2.1_r2.1s * [new branch] android-2.2.1_r1 -> origin/android-2.2.1_r1 * [new branch] android-2.2.1_r2 -> origin/android-2.2.1_r2 * [new branch] android-2.2.2_r1 -> origin/android-2.2.2_r1 * [new branch] android-2.2_r1 -> origin/android-2.2_r1 * [new branch] android-2.2_r1.1 -> origin/android-2.2_r1.1 * [new branch] android-2.2_r1.2 -> origin/android-2.2_r1.2 * [new branch] android-2.2_r1.3 -> origin/android-2.2_r1.3 * [new branch] android-2.3.1_r1 -> origin/android-2.3.1_r1 * [new branch] android-2.3.2_r1 -> origin/android-2.3.2_r1 * [new branch] android-2.3.3_r1 -> origin/android-2.3.3_r1 * [new branch] android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1 * [new branch] android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9 * [new branch] android-2.3.4_r1 -> origin/android-2.3.4_r1 * [new branch] android-2.3.5_r1 -> origin/android-2.3.5_r1 * [new branch] android-2.3_r1 -> origin/android-2.3_r1 * [new branch] android-adt-0.9.8 -> origin/android-adt-0.9.8 * [new branch] android-adt-0.9.9 -> origin/android-adt-0.9.9 * [new branch] android-cts-2.1_r2 -> origin/android-cts-2.1_r2 * [new branch] android-cts-2.1_r3 -> origin/android-cts-2.1_r3 * [new branch] android-cts-2.1_r4 -> origin/android-cts-2.1_r4 * [new branch] android-cts-2.1_r5 -> origin/android-cts-2.1_r5 * [new branch] android-cts-2.2_r1 -> origin/android-cts-2.2_r1 * [new branch] android-cts-2.2_r2 -> origin/android-cts-2.2_r2 * [new branch] android-cts-2.2_r3 -> origin/android-cts-2.2_r3 * [new branch] android-cts-2.2_r4 -> origin/android-cts-2.2_r4 * [new branch] android-cts-2.2_r5 -> origin/android-cts-2.2_r5 * [new branch] android-cts-2.2_r6 -> origin/android-cts-2.2_r6 * [new branch] android-cts-2.2_r7 -> origin/android-cts-2.2_r7 * [new branch] android-cts-2.3_r1 -> origin/android-cts-2.3_r1 * [new branch] android-cts-2.3_r2 -> origin/android-cts-2.3_r2 * [new branch] android-cts-2.3_r3 -> origin/android-cts-2.3_r3 * [new branch] android-cts-2.3_r4 -> origin/android-cts-2.3_r4 * [new branch] android-cts-2.3_r5 -> origin/android-cts-2.3_r5 * [new branch] android-sdk-1.5-pre -> origin/android-sdk-1.5-pre * [new branch] android-sdk-1.5_r1 -> origin/android-sdk-1.5_r1 * [new branch] android-sdk-1.5_r3 -> origin/android-sdk-1.5_r3 * [new branch] android-sdk-1.6-docs_r1 -> origin/android-sdk-1.6-docs_r1 * [new branch] android-sdk-1.6_r1 -> origin/android-sdk-1.6_r1 * [new branch] android-sdk-1.6_r2 -> origin/android-sdk-1.6_r2 * [new branch] android-sdk-2.0.1-docs_r1 -> origin/android-sdk-2.0.1-docs_r1 * [new branch] android-sdk-2.0.1_r1 -> origin/android-sdk-2.0.1_r1 * [new branch] android-sdk-2.0_r1 -> origin/android-sdk-2.0_r1 * [new branch] android-sdk-2.1_r1 -> origin/android-sdk-2.1_r1 * [new branch] android-sdk-2.2_r1 -> origin/android-sdk-2.2_r1 * [new branch] android-sdk-2.2_r2 -> origin/android-sdk-2.2_r2 * [new branch] android-sdk-2.3.4_r1 -> origin/android-sdk-2.3.4_r1 * [new branch] android-sdk-adt_r12 -> origin/android-sdk-adt_r12 * [new branch] android-sdk-tools_r12 -> origin/android-sdk-tools_r12 * [new branch] android-sdk-tools_r2 -> origin/android-sdk-tools_r2 * [new branch] android-sdk-tools_r3 -> origin/android-sdk-tools_r3 * [new branch] android-sdk-tools_r4 -> origin/android-sdk-tools_r4 * [new branch] android-sdk-tools_r5 -> origin/android-sdk-tools_r5 * [new branch] android-sdk-tools_r6 -> origin/android-sdk-tools_r6 * [new branch] android-sdk-tools_r7 -> origin/android-sdk-tools_r7 * [new branch] cdma-import -> origin/cdma-import * [new branch] cupcake -> origin/cupcake * [new branch] cupcake-release -> origin/cupcake-release * [new branch] donut -> origin/donut * [new branch] donut-plus-aosp -> origin/donut-plus-aosp * [new branch] eclair -> origin/eclair * [new branch] froyo -> origin/froyo * [new branch] froyo-plus-aosp -> origin/froyo-plus-aosp * [new branch] gingerbread -> origin/gingerbread * [new branch] master -> origin/master * [new branch] release-1.0 -> origin/release-1.0 * [new branch] tools-adt_r11 -> origin/tools-adt_r11 * [new branch] tools_r10 -> origin/tools_r10 * [new branch] tools_r11 -> origin/tools_r11 * [new branch] tools_r12 -> origin/tools_r12 * [new branch] tools_r13 -> origin/tools_r13 * [new branch] tools_r7 -> origin/tools_r7 * [new branch] tools_r8 -> origin/tools_r8 * [new branch] tools_r9 -> origin/tools_r9 * [new tag] android-1.5 -> android-1.5 * [new tag] android-1.5r2 -> android-1.5r2 * [new tag] android-1.5r3 -> android-1.5r3 * [new tag] android-1.5r4 -> android-1.5r4 * [new tag] android-1.6_r1 -> android-1.6_r1 * [new tag] android-1.6_r1.1 -> android-1.6_r1.1 * [new tag] android-1.6_r1.2 -> android-1.6_r1.2 * [new tag] android-1.6_r1.3 -> android-1.6_r1.3 * [new tag] android-1.6_r1.4 -> android-1.6_r1.4 * [new tag] android-1.6_r1.5 -> android-1.6_r1.5 * [new tag] android-1.6_r2 -> android-1.6_r2 * [new tag] android-2.0.1_r1 -> android-2.0.1_r1 * [new tag] android-2.0_r1 -> android-2.0_r1 * [new tag] android-2.1_r1 -> android-2.1_r1 * [new tag] android-2.1_r2 -> android-2.1_r2 * [new tag] android-2.1_r2.1p -> android-2.1_r2.1p * [new tag] android-2.1_r2.1p2 -> android-2.1_r2.1p2 * [new tag] android-2.1_r2.1s -> android-2.1_r2.1s * [new tag] android-2.2.1_r1 -> android-2.2.1_r1 * [new tag] android-2.2.1_r2 -> android-2.2.1_r2 * [new tag] android-2.2.2_r1 -> android-2.2.2_r1 * [new tag] android-2.2_r1 -> android-2.2_r1 * [new tag] android-2.2_r1.1 -> android-2.2_r1.1 * [new tag] android-2.2_r1.2 -> android-2.2_r1.2 * [new tag] android-2.2_r1.3 -> android-2.2_r1.3 * [new tag] android-2.3.1_r1 -> android-2.3.1_r1 * [new tag] android-2.3.2_r1 -> android-2.3.2_r1 * [new tag] android-2.3.3_r1.1 -> android-2.3.3_r1.1 * [new tag] android-2.3.3_r1a -> android-2.3.3_r1a * [new tag] android-2.3.4_r0.9 -> android-2.3.4_r0.9 * [new tag] android-2.3.4_r1 -> android-2.3.4_r1 * [new tag] android-2.3.5_r1 -> android-2.3.5_r1 * [new tag] android-2.3_r1 -> android-2.3_r1 * [new tag] android-adt-0.9.8 -> android-adt-0.9.8 * [new tag] android-adt-0.9.9 -> android-adt-0.9.9 * [new tag] android-cts-2.1_r2 -> android-cts-2.1_r2 * [new tag] android-cts-2.1_r3 -> android-cts-2.1_r3 * [new tag] android-cts-2.1_r4 -> android-cts-2.1_r4 * [new tag] android-cts-2.1_r5 -> android-cts-2.1_r5 * [new tag] android-cts-2.2_r1 -> android-cts-2.2_r1 * [new tag] android-cts-2.2_r2 -> android-cts-2.2_r2 * [new tag] android-cts-2.2_r3 -> android-cts-2.2_r3 * [new tag] android-cts-2.2_r4 -> android-cts-2.2_r4 * [new tag] android-cts-2.2_r5 -> android-cts-2.2_r5 * [new tag] android-cts-2.2_r6 -> android-cts-2.2_r6 * [new tag] android-cts-2.2_r7 -> android-cts-2.2_r7 * [new tag] android-cts-2.3_r1 -> android-cts-2.3_r1 * [new tag] android-cts-2.3_r2 -> android-cts-2.3_r2 * [new tag] android-cts-2.3_r3 -> android-cts-2.3_r3 * [new tag] android-cts-2.3_r4 -> android-cts-2.3_r4 * [new tag] android-cts-2.3_r5 -> android-cts-2.3_r5 * [new tag] android-sdk-1.5-pre -> android-sdk-1.5-pre * [new tag] android-sdk-1.5_r1 -> android-sdk-1.5_r1 * [new tag] android-sdk-1.5_r3 -> android-sdk-1.5_r3 * [new tag] android-sdk-1.6-docs_r1 -> android-sdk-1.6-docs_r1 * [new tag] android-sdk-1.6_r1 -> android-sdk-1.6_r1 * [new tag] android-sdk-1.6_r2 -> android-sdk-1.6_r2 * [new tag] android-sdk-2.0.1-docs_r1 -> android-sdk-2.0.1-docs_r1 * [new tag] android-sdk-2.0.1_r1 -> android-sdk-2.0.1_r1 * [new tag] android-sdk-2.0_r1 -> android-sdk-2.0_r1 * [new tag] android-sdk-2.1_r1 -> android-sdk-2.1_r1 * [new tag] android-sdk-2.2_r1 -> android-sdk-2.2_r1 * [new tag] android-sdk-2.2_r2 -> android-sdk-2.2_r2 * [new tag] android-sdk-2.3.4_r1 -> android-sdk-2.3.4_r1 * [new tag] android-sdk-adt_r12 -> android-sdk-adt_r12 * [new tag] android-sdk-tools_r12 -> android-sdk-tools_r12 * [new tag] android-sdk-tools_r2 -> android-sdk-tools_r2 * [new tag] android-sdk-tools_r3 -> android-sdk-tools_r3 * [new tag] android-sdk-tools_r4 -> android-sdk-tools_r4 * [new tag] android-sdk-tools_r5 -> android-sdk-tools_r5 * [new tag] android-sdk-tools_r6 -> android-sdk-tools_r6 * [new tag] android-sdk-tools_r7 -> android-sdk-tools_r7 From git://android.git.kernel.org/platform/manifest * [new tag] android-1.0 -> android-1.0 * [new tag] android-2.3.3_r1 -> android-2.3.3_r1 Your Name [root]: yourname Your Email [root@BuildSV.(none)]: yourname@exsample.com Your identity is: yourname <yourname@exsample.com> is this correct [y/n]? y Testing colorized output (for 'repo diff', 'repo status'): black red green yellow blue magenta cyan white bold dim ul reverse Enable color display in this user account (y/n)? y repo initialized in /root/benchdroid
リポジトリの取得
12スレッド同時進行で行う。
root@BuildSV:~/benchdroid# ~/bin/repo sync -j12
ネットワークが遅いので、死ぬほど時間がかかる。
時には中断してしまうことも。
error: Exited sync due to fetch errors
そういうときには適宜再実行する。
終わったので、一応、バックアップ。
root@BuildSV:~/benchdroid# tar zcvf ../20110830_2.3.4_r1.tgz ./.repo/projects
ビルドテスト
まずは普通に。
root@BuildSV:~/benchdroid# . build/envsetup.sh including device/htc/passion/vendorsetup.sh including device/samsung/crespo/vendorsetup.sh root@BuildSV:~/benchdroid# lunch generic-eng ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.3.4 TARGET_PRODUCT=generic TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=GRJ22 ============================================ root@BuildSV:~/benchdroid# time make 2>&1 |tee ../make20110830_2.3.4_r1_single.log
-j指定しなくても、CPUは何かしらうごいているな。RAMは10%くらいしか使っていない。
最大でRAMは1.5G程度だった。
real 66m2.257s user 67m2.820s sys 4m14.350s
-j12でのビルド
環境をリセットする。
root@BuildSV:~/benchdroid# rm -r ./* root@BuildSV:~/benchdroid# ~/bin/repo sync -l
ビルド。
root@BuildSV:~/benchdroid# lunch generic-eng root@BuildSV:~/benchdroid# time make -j12 2>&1 |tee ../make20110830_2.3.4_r1_j12.log
さすがに-j12にすると、全部のCPUが100%近くに張り付くな...
排熱のファンのスピードが上がった。
RAMのピークが4.2GBくらい。
real 12m0.343s user 108m10.440s sys 6m12.050s
こんなもんか。
Ubuntu 10.04 CPU: Intel Core i7 950 @3.07GHz, メモリ12GB OpenJDK6で15m7sくらいだったそうだから、8コアと大差ないな。
出入りのIOを考えると、リアルに4->6コアなら、こんな感じで妥当かな。
ccacheを使う
3.x系になって、ccasheが速いなったということで、テツコバさんからのリクエストでテスト。
前のデータがないので、どのくらい速いのかは判断できないけど。
root@BuildSV:~/benchdroid# rm -r out/* root@BuildSV:~/benchdroid# export USE_CCACHE=1
開始前のキャッシュの状況。
root@BuildSV:~/benchdroid# prebuilt/linux-x86/ccache/ccache -s cache directory /root/.ccache cache hit 0 cache miss 0 files in cache 0 cache size 0 Kbytes max cache size 976.6 Mbytes
もちろんゼロ。
初期設定ではキャッシュの大きさ(size)が1GBまで、ファイルの数(number_of_files_limits)は制限なし。
1GBでは小さいということなので、10GBに変更する。
root@BuildSV:~/benchdroid# prebuilt/linux-x86/ccache/ccache -M 10G Set cache size limit to 10485760k root@BuildSV:~/benchdroid# prebuilt/linux-x86/ccache/ccache -s cache directory /root/.ccache cache hit 0 cache miss 0 files in cache 0 cache size 0 Kbytes max cache size 10.0 Gbytes
初回。
root@BuildSV:~/benchdroid# time make -j12 2>&1 |tee ../make20110830_2.3.4_r1_j12ccahe.log real 12m1.623s user 107m18.940s sys 6m25.760s
まぁ、これは速くならない。
casheを吐くコストはそんなでもないのね。
キャッシュされたデータ。
root@BuildSV:~/benchdroid# prebuilt/linux-x86/ccache/ccache -s cache directory /root/.ccache cache hit 846 cache miss 9059 called for link 421 not a C/C++ file 290 unsupported compiler option 48 files in cache 18118 cache size 1.1 Gbytes max cache size 10.0 Gbytes
キャッシュを使って二度目のビルド。
root@BuildSV:~/benchdroid# rm -r out/* root@BuildSV:~/benchdroid# time make -j12 2>&1 |tee ../make20110830_2.3.4_r1_j12ccahe2nd.log real 6m50.990s user 50m59.710s sys 2m59.030s
実行中はCPUがあまり100%になることがないのが特徴的。
70-90くらいで動いている。
ccache恐るべし。時間が約半分になった。
キャッシュのクリアする場合は以下のようにする。
root@BuildSV:~/benchdroid# prebuilt/linux-x86/ccache/ccache -C