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個が動いている。
https://lh4.googleusercontent.com/-UhCrkFk0pIY/TldGJ-NEcsI/AAAAAAAAAnw/7OuNMIQvHSI/Screenshot-%25E3%2582%25B7%25E3%2582%25B9%25E3%2583%2586%25E3%2583%25A0%25E3%2583%25BB%25E3%2583%25A2%25E3%2583%258B%25E3%2582%25BF.png
しばらくしたら、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

依存関係があって、案外消せないな。
このままでいいか。

Python

root@BuildSV:~# dpkg -l | awk '{print $2,$3}' | grep "python "
python 2.7.1-0ubuntu5

いる。

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