Embedded Linux Conference 2011 Android Builders

Embedded Linux Conference 2011
Android Builders Summit 2011
Report
パナソニック株式会社
加藤 慎介
目次



Embedded Linux Conference (ELC) 概要
Android Builders Summit (ABS) 概要
ELC 2011




Keynote Report
Session Report
Demo/Showcase,ELC Closing Session
ABS 2011



Keynote Report
Session Report
その他
目次



Embedded Linux Conference (ELC) 概要
Android Builders Summit (ABS) 概要
ELC 2011




Keynote Report
Session Report
Demo/Showcase,ELC Closing Session
ABS 2011



Keynote Report
Session Report
その他
ELC 概要

ELC (Embedded Linux Conference 2011)とは?
 組込み系のLinuxの技術についての国際技術会議
 主催はThe Linux Foundation (LF)

昨年度までCE Linux Forum (CELF)だったが,2010年にCELFとLFが合併し,
CELFはLFのWorkgroupとなった
著名なKernelメンテナーやLinux技術者をはじめ,世界の組込みメーカー系
企業の技術者が多数参加
ELC 2011 概要
 日時:4月11日(月)~13日(水)
 場所:サンフランシスコ
 参加費:475ドル(早期割引 -50ドル)
 参加者:約350名で非常に盛況






昨年より約100名増加(2年前からでは約170名増加)
日本からは若干名の参加,今年度は韓国系企業の参加者増が目立った
Session:約50件(Sessionは3会場で同時開催)
詳細サイト:


http://events.linuxfoundation.org/events/embedded-linux-conference/
http://elinux.org/ELC_2011_Presentations
ABS 概要

ABS (Android Builders Summit)とは?



Androidの実装・搭載に注目した国際技術会議(アプリケーショ
ンにはフォーカスしていない).今回が第1回目.
主催はThe Linux Foundation (LF)
ABS 2011 概要






日時:4月13日(水)PM~14日(木)
 13(水)はELCと共催
場所:サンフランシスコ
参加費:275ドル(ELCとの同時申込みの場合100ドル)
参加者:ELCと共催日約300名,ABS単独日約120名
Session:約20件(Sessionは2会場で同時開催)
詳細サイト:
 http://events.linuxfoundation.org/events/androidbuilders-summit/
 http://events.linuxfoundation.org/events/android-builderssummit/slides
目次



Embedded Linux Conference (ELC) 概要
Android Builders Summit (ABS) 概要
ELC 2011




Keynote Report
Session Report
Demo/Showcase,ELC Closing Session
ABS 2011



Keynote Report
Session Report
その他
Keynote



Title : The Yocto Project
Speaker : Dirk Hohndel (Intel)
概要

Yocto Projectの概要講演(スライド等はなく,口頭の
みでの Yocto Project の概要の講演)
 Yocto ProjectはDistributionではない
 様々なハードウェア環境でDistributionを作るための,
テンプレートや基盤,ツールを提供する
 4月にVersion 1.0をリリースした
Keynote



Title : Becoming Part of the Linux Kernel Community
Speaker : Arnd Bergmann (IBM, Linaro)
概要

次のLinux Kernelでの注目パートについての「思い」をレク
チャー
 PC/サーバ/(純粋な)組込み,以外の分野でのLinux利用の増加




Android,MeeGo
Free 3D グラフィックスの流れ
ドライバのオープン化の流れ
メモ


要は「Linux Kernel Mainlineにコミットしよう」ということ
特にグラフィック関係のドライバのオープン化の話が最近Hotに
なってきている
Session


Title : Identifying Embedded Real-Time Latency Issues: I-Cache and Locks
Speaker : Frank Rowand (Sony America)


Real-Time系のSessionをLinux関係のConferenceで毎年2,3回発表している人物
概要

SMP ARM での,I-Cacheのミスヒットによる性能劣化についての検討


はじめに最大割り込み禁止時間を測定したところ,do_local_timer()が最大割り込み禁止時間
を作っている一つの要因とわかった
使用ツール


do_local_timer()について,ミスヒットとストール時間をみて検討


検討に使用しているKernelは2.6.23.17-rt14,2.6.29.6-rt14
本Sessionでは課題抽出が目的で,改善はフォーカス外.ただし思いつく改善案を提示





Ftrace の irqsoff tracer (latency-format option enabled)
I-Cache増やして,I-Cacheミスを減らす.(実際のテストはしていない)
クリティカルなコードを(I-Cache)ロックして,I-Cacheミスを減らす.(ただ今回のターゲットボード
はI-Cacheロックに対応していない)
クリティカルなコードを高速なメモリに配置して,I-Cacheミス時のコストを減らす.(ただ今回の
ターゲットボードは高速なメモリを実装していない)
L2-Cacheを追加して,I-Cacheミス時のコストを減らす.
ハードを変更して,L2の有無での検討実施

ほとんどのL1 I-CacheミスはL2から補填される.ただし,一部 L2からも補填されない時がある.
Session



Title : Snapshot Booting on Embedded Linux
Speaker : Kang Dongwook (ETRI)
概要
 スワップテーブルにSnapshot Imageへのリンクを作っておき,スワッ
プの仕組みを使って,組込みでのSnapshotブートを実現

シャットダウン時


ブート時


メモリをレストア、そしてジャンプ
DMAを使ってNANDの読み込み時間を改善




使っていたメモリページを全て退避
5.19秒 vs 23秒
3.82秒 vs 22.98秒
最新のSnapshot BootではBoot Loaderの時間が短縮
利用シーン



シャットダウンの時間は延びる(10秒以上長くなる)
フリーのメモリ(ページ)が十分足りる場合(半分以上フリーページが必要)
NANDのサイズが十分足りる場合

Androidではスナップショットが200MBを越える
Session


Title : Linaro : A Year of Change
Speaker : David A Rusling (Linaro, CTO)


LinaroのCTOとしての発表だが,SpeakerはARMのFellow
概要

ここ2年で思ったこと






なぜARMの組込み向けLinuxは違いができてしまうのか?




プロダクトのタイムラインが短く,また最新のオープンソースに基づいていない
プロダクトが多岐にわたる(SoC,System)
Proprietaryな部分が価値になっている
Linaroについて



ARM搭載物は“典型的な”組込みLinux以外に移ってきた
多様性は歓迎するが,フラグメンテーションはNG
Upstreamingの欠乏は非効率
コラボレーションが欠けている
ARM Linux 向けに活動しているエンジニアが十分でない
2010年6月立上げ,コアエンジニアは約20人
ARMで使う上での共通な組込みLinuxの問題をUpstreamで解決するべく,オープンに活動して
いる
Linaroはどのように運営されているか?



メンバーによって技術課題を挙げて,ワークグループを立上げ,解決していく
今は,ToolchainとKernel にフォーカス.今後はGraphicsとPMにもフォーカスする
Toolchain WG


対象:ARMv7A,Thumb 2,Neon
対象:コアToolchain,gcc,glibc,binutils,gdb
Session


Title : Optimization for Cheap Flash Media
Speaker : Arnd Bergmann (IBM)


次の日に別テーマでKeynoteを担当した人物.Linaro
のメンバーでもある
概要

安いFlashを最大限に活用するために,という題目だ
が,内容は,Wear Leveling とガベッジコレクションに
ついてのレクチャー


一般的なWear Levelingの話
ガベッジコレクションの話

リニアアクセス,ブロックReマッピング,Data Logging
Session


Title : RT-Preempt : What’s The State and Why There is No Roadmap
Speaker : Thomas Gleixner (linutronix)


著名なKernelメンテナー(分野:Real-Time)
概要

RT-Preemptの現状について,と,今後の展望


RT-Preemptの最新の安定版:2.6.33
Real-Timeに関してMainlineに入っているもの








ハイレゾタイマー
Mutexの仕組み
一般的な割り込みハンドラの仕組み
ユーザスペースMutexの優先度継承
PreemptibleなRCU
スレッド割り込みハンドラ
強制スレッド irq/softirq
トレースの仕組み
など

残っているもの






いつメインラインに入るか?



2007,2008,2009にそれぞれ「リアルタイムのパッチはほとんど,年の終わりにはマージされるだろう(by Jonathan Corbet)」といわれてきた(が,
まだマージされていない)
実際,Redhat,IBM,OSADL,Linutronixがテストに多大な努力もしている
なぜロードマップがないのか?





Preemptible mmu gather (2.6.40でのメインライン化を目指している)
PerCUP modifications
Preemptible memory and page allocator
Soft-interrupt modifications
Sleeping spinlocks
我々はパワーポイントは使わないから
我々はKernel Developerだから
メインライン化の道を探しているところだから
だけど・・・ロードマップはあるよ(と言って,「会場の地図」を見せた。会場爆笑)
最後にLinusの有名なセリフ

「And yeah, I still think the hard-RT people are mostly crazy (by Linux - 2010)」
Session



Title : High-Performance Computing using GPUs
Speaker : Mike Anderson (The PRT Group)
概要




最近のトレンド
 プロセッサ:マルチコア
 ビデオやゲーム:3D, ストリーミング
マルチコアで性能向上するためには
 スレッド並列処理がより重要になる
 データの並列処理はより考えられたものにする必要がある
GPU搭載のモバイルデバイスが当たり前になる
LinuxのアプリケーションはすでにGPU対応が考えられている
Session



Title : Integrating a Hardware Video Codec into Android
Stagefright using OpenMAX IL
Speaker : Damian Hobson Garcia (Igel)
概要
 Android の Stagefright media server


Video/Audioの再生/録音の仕組み(ソフトウェアコーデック)としてデフォル
トで搭載されている
モバイルプラットフォームで1920x1080@30fpsでのビデオ再生をした
い


Stagefright(のソフトウェアコーデック)では無理
ハードウェアコーデック(H.264)をStagefrightにどう入れるか?


実験環境


OpenMAX IL を使う (Bellagio OpenMAX IL)
Renesas SH (ARM Cortex-A8 @ 800MHz)
実装




OpenMAXの/src/base/omx_base_* を流用
Androidのソースは
frameworks/base/media/libstagefright/OMXCodec.cpp のみ修正
libstagefrighthw.so作成
quirksというものも利用
Session



Title : How to Power Tune a Device Running on a Linux Kernel
for Better Suspend Battery Life
Speaker : Mark Gross (Intel)
概要
 内容は,省電力のレクチャー
 まずは形式的に検討部分を分類

重要でない部分は検討から除外





Spec Sheets,ドライバのソースコード,データバス,など
SOCを知る
クロックとパワーコントロールを知る
プラットフォームの状態を知る
アプローチ



まずはデバイス(ハードウェア)毎に消費電力の初期値を測定
その次に省電力パッチやデバドラのUpdate等を実施
省電力モードになっていないハードウェアをPickUpして,省電力モードに
する
Session



Title : Runtime PM, Upstream I/O Device Power Management
Speaker : Magnus Damm (Runesas)
概要


省電力はより重要になってきているが,伝統的なLinuxのPower Management(PM)は組込
みシステムには完全には適さない
なぜか?




PCでのユースケース向けに設計されているから
組込みベンダーからのコミュニティへのフィードバックが少ないから
組込みベンダーはPMを“ソース非公開”として扱うから
System-Wide PM


RAMとDiskを使ったSuspendがあるが,全く違うもの
Suspend-to-Disk


Suspend-to-RAM



起動はSuspend-to-Diskより早い
デバイスによりWakeupに対応しているかがまちまち

ハードが対応していても,ソフトが未対応,など
ソフトでの問題であれば,対応させる
CPU Runtime PM



システム全体の電力断が可能
IdleループによってCPUコアの電力を管理する
Tickless CMT Timer
I/O Device Runtime PM

include/linux/pm_runtime.h の関数を使ってRuntime PMを実現
Session



Title : MeeGo BoF
Speaker : Alison Chaiken (Nokia)
概要


MeeGoについて何でも語ろう,というBoF
初めにSpeakerからMeeGoのトピック説明
 2011年の予定:4月に1.2リリース,10月に1.3リリー
ス
 MeeGo,Linaro,Android の3つの比較
Session



Title : Android for Servers ?
Speaker : John Stultz(IBM/Linaro)
概要

AndroidのOS技術でサーバにも活用できるものがあるか?


Android用のPatchを下記に分類






不明
LKMLで議論が活発なもの


バグフィックス/新HW対応 関係:Pmem, GPIO Drivers, ARM, MMC, Bluetoothな
ど
Power Management関係:Early suspend, Wakelocks, Alarm Timer
エラーレポート関係:Logger, Ram_console, Apanic
セキュリティ関係:Paranoid network
パフォーマンス関係:ashmem, binder, LowMemoryKiller, Yaffs2
いつKernelメインラインにマージされるのか?


AndroidのOS技術とは,Linux Kernel と Android用のPatch
Wakelocks,Binder,LowMemoryKiller,Alarm Timer
サーバに役立ちそうな技術



AndroidのLowMemoryKillerは,OOM Killerが動く前にアプリをKillするので,サー
バにも使える
Wakelocksの仕組みは省電力に効果がある
ARM, MMC, Bluetoothなどのバグフィックス
Session



Title : Hot Multi-OS Switch: How to run Ubuntu, ChromiumOS, Android at the
Same Time on an Embedded Device
Speaker : Gregoire Gentil (Always Innovating)
概要

マルチOSをマルチディスプレイで実現



背景


chrootを利用
課題を解決


KernelはLinuxなのに,Userspaceはいろいろある.では,一つのKernelでさまざまな
Userspaceを同時に動作させられないか?
Beagleboardを使ってマルチOSを実装


利点:ひとつのキーボード・マウスで4つのPFをそれぞれ操作
ひとつのビデオコンテンツを,2つのPF上でそれぞれ再生
課題:コアOSの選定,出力制御,入力制御
デモ(デモでは,Ubuntu,ChromiumOS,独自Distribution,の3つ)

chrootで3つのディストリビューションを起動し,3つのディスプレイにそれぞれの画面を出力





マウスはそれぞれのディスプレイにカーソルがある状態で,マウスを動かすとそれぞれの画面(ディストリ
ビューション)でマウスカーソルが動き,キーボードをタイプすると全ての画面で入力されてしまう
例:Ubuntuでコマンドライン入力をしていたら,CromeOSでは検索している,とか
ディスプレイ出力にはUSB->HDMI変換デバイスを利用
出力・入力制御により,マウスカーソルを3つの環境で1つにして,カーソルをディスプレイ間を移
動可能に.3つの環境のうち一つだけに入力制御するように変更
同じ再生コンテンツを2つのPF上でそれぞれ再生
Session



Title : Moving Forward : Overcoming Compatibility Issues BoFs
Speaker : Yoshitake Kobayashi (Toshiba)
概要


長期スパンのシステムでのハードウェア変更時の課題について議論するBoF
Speakerの投げかけ,その1

長期スパンシステムにおいて,ハードウェアを新しくせざるをえなくなった場合に,Kernelと上位
層(ライブラリ,アプリ,テストケース)の担保をどうするか?




正解は,ハードウェアの特徴やユーザの要求次第であるが,このBoFでは「Kernelの
VersionUpはできない」ユースケースを考える
Speakerの投げかけ,その2


新しいハードウェアのドライバを古いKernelにバックポートする?
新しいハードウェア上で動作する最新のKernelを使う?
ハードウェアが変わった場合,何かしらKernelの変更は必要になる.その場合のシステム全体
の(それまでとの)互換性はどう確認する?
会場の意見


当時のハードウェアを在庫として持っておくしかない
システム自体のKernelを定期的にUpdateしていくべきだ(by IBMの人でKeynoteも担当した人
物)

この意見に対しては他数人から
「そもそもそれができないシステムでどうするか?を話し合うBoFだ」
「理想は分かるが,実際にKernelをUpdateできないシステムは存在する」
などの意見あり
Demo/Showcase



Yocto Project
 Yoctoでビルドしたシステムでオーディオ再生,と
いうデモ
SonyのGoogle-TV
 AndroidはFroyoベース.Linuxは2.6.23
KernelShark
 Ftraceのトレース結果をビジュアル表示するツー
ル.CPU毎のプロセス占有状態などを表示可能
ELC Closing Session (1/4)

事前に参加者にアンケートをとっており,その結
果を使ってのイベント

アンケート




2011/04/06 4:44:45 +0900 の Tim からのメール
[Members] Help needed for ELC - please take 10minute survey
壇上で,クイズ100人に聞きました,形式のクイズ
全員参加で,いくつかのクイズの回答を事前に書き,
その後に答えごとに得点を発表&答え合わせ.総得
点上位者から景品Get!



1位はSonyのGoogle-TV
2位はSonyのGoogle-TV-STB
以下,LWN.netの年間購読権やO’Reillyの本,など
目次



Embedded Linux Conference (ELC) 概要
Android Builders Summit (ABS) 概要
ELC 2011




Keynote Report
Session Report
Demo/Showcase,ELC Closing Session
ABS 2011



Keynote Report
Session Report
その他
Keynote



Title : Motorola Innovation Rising
Speaker : Christy Wyatt (Motorola)
概要
 Androidについて,Motorolaの商品と照らしながらこれまでの流れに
ついて講演

なぜAndroidか? 下記がそろっているから


Androidのシェア


Apple iOSは越えた
MotorolaのAndroid搭載商品




Internet Rich,Scalability,Industry Platform,Ecosystem,Open Innovation
27モデル,98カ国で705のリリース
次は,MotorolaXoom,MotorolaATRIX 4G
FroyoがリリースされたときにMotorolaの対応速度はHTCと並び最速
アプリケーションは2009年10月は2~3万だったのが、2011年1月では25
万に迫る勢い
Keynote



Title : From the Alliance to the Evolution : The History and Future of Android Innovation
Speaker : Mark Charlebois (Qualcomm)
概要

QualcommとAndroidの歴史




QualcommはOHAのFoundingメンバー
初のAndroid端末はQualcommのChipset (1.0 HTC -Oct 22, 2008)
初の1GzのAndroid端末はQualcommのChipset (Nexus One -Jan 5, 2010)
初のLTE搭載Android端末はQualcommのChipset (HTC Thunderbolt -Mar 17)

Androidのリリースサイクル

QualcommのChipset

今後について



Cupcake:9.7 Month,Donut:9.1 Month,Eclair:7.9 Month,Froyo:6.7 Month
7つのChipset(7x00, 7x25, 7x27, 7x30/8x55, 8x50,8650A, 8x60)がAndroid向けに用意
Telephonyの機能発展






マルチメディアの機能発展


LTE,eHRPD,DOrBのような技術に対応するフレームワーク
Dual SIMやDual Standby に対応するフレームワーク(Nov 2010)
SIM ツールキット
CSIM サポート
IPv6 for CDMA/EVDO
QCELP/EVRC encode/decode,voice memo,LPA (low power audio),FM Radio,WVGA,720p encode/decode,1080p
encode/decode
その他

マルチコアサポート.Trackballのないデバイスのサポート,PM,Web Core (WebGL in Gingerbread, Enhanced Webkit and V8),商用
DRM

Mobile Web Apps

Code Aurora Forum (CAF)について




P2P アプリケーション は AllJoyn.Augmented Reality は QDevNet
QulCはFoundingメンバ
全てのupstreamへの貢献はCAFを通してやっている
現在NativeアプリとWebアプリには違いがあるが,共通部分が増えていく

ひとつはマルチコアによる恩恵
Keynote



Title : Open API Standards as a Foundation for Android
Innovation
Speaker : Neil Trevett (NVIDIA)
概要
 グラフィックAPIのこれまでと今後の進化について
 Khronos Family of Standards





Khronosはオープンでロイヤリティフリー
いくつかPickUpして説明



WebGLは,Web上での3Dをプラグインなしで可能にする
OpenSL/ESはAdvanced Audioに,OpenMAX/ALはマルチメディアに
デバイスプラットフォームによるAPI




COLLADA, WebGL, WebCL
OpenGL, OpenGL/ES, EGL, OpenMAX/AL, OpenSL/ES, OpenVG
OpenMAX/IL
Chrome,Symbian,MeeGo,などは OpenGL/ES,OpenMAX/IL,EGL
Appleは OpenGL/ES,OpenGL
Androidは OpenGL/ES,OpenMAX/IL,EGL,OpenSL/ES
TEGRA2の宣伝(ゲームシーンで特に威力を発揮)
Keynote


Title : Porting Android to New Hardware
Speaker : Karim Yaghmour (Opersys)


O’Reillyの「組込み Linux System」本の著者
概要



ハードウェアへのポーティングと,AndroidとLinuxについてのレクチャー
ハードウェアにポーティングする際の,変更ポイントをダイジェストで紹介
レクチャーの章立て











Components to port
Cross-development toolchain
Porting the Linux Kernel
Developing device drivers
Getting the AOSP
Implementing Android hardware libs
Customizing the user-space
Building the AOSP
Components to write to flash
Useful Embedded Linux tricks
メモ



技術的に中身のあるKeynote
時間が限られている中でAndroidの技術要素を全て網羅
プレゼン資料が公開されているので詳細はそちらを参照
Keynote



Title : Beyond The Phone
Speaker : Marko Gargenta (Marakara)
概要


電話以外のデバイスを例に挙げながら,Androidの要素技術についてのレク
チャー
Androidは電話を超えるか?



Car,セットトップボックス,などなど
AndroidのUIを使っていろんなデバイスが考えられる
複合プリンタの例

なぜAndroid? 下記のものがあるから


足りないものは?



カスタムドライバ,カスタムライブラリ,アプリフレームワークのサポート,New Home アプリ
足りないものを補えばAndroidベースの複合プリンタにできる
TV Boxの例

足りないものは?


アプリ開発のフレームワーク,タッチスクリーン,グラフィックス,WiFi
TV用のUI,ストリーム関係とDRM
Summary

Androidはオープンだから,自分でいろいろと追加すれば,いろんなデバイスに搭載
可能
Session



Title : AllJoyn and the New Era of Peer-to-Peer Technology
Speaker : Greg Burns (Qualcomm(QulC))
概要

AllJoynとは?


QulCが開発した,新しいモバイルPeer-to-Peerをベースにした近接関係
AllJoynはソフトウェアbus





busのフォーメーションはアドホック
プロトコル


それぞれのデバイスではbusデーモンが起動
アプリ間通信はデーモンで直接接続
それぞれのデバイスのデーモンは,他のデバイスのデーモンと通信
DBus wire-protocol,WiFiやBluetoothもサポート
メモ

コンセプト提案のようなコマーシャル映像も流していた.

3人が3様のデバイス(スマートフォン,タブレット,携帯ゲーム機)でそれぞれが
繋がって仮想空間でゲームをしている.スマートフォンのユーザに着信があり
数十分電話→終了後,また仮想空間にJoin.というような映像
Session


Title : Android Internals
Speaker : Karim Yaghmour (Opersys)


O’Reillyの「組込み Linux System」本の著者
概要

Androidの中身を以下の分類で,それぞれレクチャー














Android Concepts
Overall Architecture
System startup
Linux Kernel
Hardware Support
Native User-Space
Dalvik
JNI
System Server
Activity Manager
Binder
Stock AOSP Apps
Hacking
メモ


あくまでSessionであるがKeynote並の参加者数
プレゼン資料が公開されているので詳細はそちらを参照
Session



Title : Managing Android and the Complexity inside
Speaker : Peter Vescuso (Black Duck Software)
概要


OSSライセンスの話(特にモバイル分野)
OSSはイノベーションをもたらしている




3800プロジェクトある(2010現在)
ここ3年で2倍になった
94%がMobile Phone (Android/iPhone)向けのOSSプロジェクト
Androidでのコンプライアンスが検討事項になりつつある


Copyleft型のライセンスと,そうでないものを分けて考える
潜在的にはライセンスコンフリクトが起こりうる



潜在的にはパテントの問題もある
アプリケーションマーケットとライセンス



AppleのiTunes StoreではGPLのアプリは頒布できない
Androidのマーケットではそのような制限はない
変化の早いオープンソースで様々なライセンスをどう管理するか?

例えばAndroid







GPLv3でApacheとのコンフリクトは解決した
Linux Kernel はGPLv2
約165の異なるコンポーネント(Kernelミラーは含まない.165のうち約半分はExternal)
約19種のOSSライセンス
相対するライセンスやOSI非認証のライセンス
早い変化(約3~4ヶ月でのメジャーバージョンアップ)
トレーニング・ツール・プロセスを使って管理するのが良い
Reference


Black DuckのHPにAndroidのWhitePaperなどを掲載
http://www.blackducksoftware.com/android
Session



Title : Using the Debian Package Manager to Assemble Android-Based
Mobile Phone Software System
Speaker : Magnus Back (Sony Ericsson)
概要


Debianのパッケージ管理システムを用いて,ビルドシステムは一つにしてコンフィ
グの動的設定で,対象顧客用のソフトウェアをビルドする仕組み,について
これまで

Sony Ericsoonは150~200の顧客に携帯を出しているが,顧客によりスペック・詳
細要件があり,古いProprietaryなソフトウェアでは,それぞれStaticなコンフィグで
解決していた



Android





プロダクト毎に28のConfigで17プロダクト=450のConfig
450のConfigごとに1.5時間のビルド時間=ビルド時間で1ヶ月
Android携帯を出すために,顧客それぞれのビルドシステムが必要
全てのConfigはそれぞれのプラットフォームに紐付けされる
アプリ開発者にとってはAndroid-PFは大きすぎる
prebuiltのコンポーネントをReuseする良い方法がない
理想としては,ビルドシステムは一つにして,コンフィグを(動的に)設定するだけで,
対象顧客用のソフトウェアをビルドするような仕組み


Debianのパッケージ管理システムを用いて,実現できないか?
Debianのパッケージを異なるビルドシステム間のインタフェースファイル結果のプロ
トコルに使う
Session



Title : Trying to improve Android Boot Time With Readahead
Speaker : Tim Bird (Sony America)
概要

SonyはGoogleTVを出している.ブート時間短縮が必要

Androidの一般的なブート時間をまずは測定

現状,Cold Boot で約30秒かかる.Suspend/Resume機能もあるがスタンバイの電力消費がある

どうやって計測したか?

いくつか非効率な部分を発見



BootchartをAndroidのInitに追加
主には,パッケージスキャンとファイルアクセスルーチンの時間
Readaheadを使ってみる

Readaheadを使う理由




Readaheadの概要





CPUではなくI/Oがボトルネックになっているから

Class preloading,と,パッケージスキャン

パッケージスキャンはシステム全体の起動時間の10%を占めている
アプリを変更しなくて良いから(私はKernel開発者だから.Javaは詳しくない)
他のプロダクトにも応用できるかもしれない
ブート中に要求される前にRead DataをLinuxのページキャッシュに読み込んでおく(I/Oの待ち時間削減)
読み込みはCPUの空き時間に実施
注:ReadするTotal Data 及び 使えるCPUサイクルの全体数は今回変えていない

ゴールは,I/Oの待ち時間をなくすこと
より良いI/Oスケジューリングもなされる
Readaheadするデータの決定方法が必要

MinicoreとStraceというソフトウェアを使った

テスト環境

チェックポイント




Sony Internet TV,Kernelは2.6.23,スケジューラーはCFQ
Readaheadがバックグラウンドで動いているか?
Class preloading,と,パッケージスキャンの時間が短縮されているか?
結果



Readahead in background で 約1.83秒短縮(4.65%の改善)
noopスケジューラはほとんど影響しない
プロセス優先度の変更は影響しない
Session



Title : A Walk Through the Anrdoid Stack
Speaker : Aleksander “Sasa” Gargenta (Marakana)
概要


Androidの要素技術について,具体的にソースコード上の場所まで示しながらレク
チャー
Linux Distributionとの違い



Binder IPC





プログラムは /dev/ashmem をOpenして,mmapを使って,Binder経由でファイル
を共有
実装は mm/ashmem.c と include/linux/ashmem.h を参照
Pmem


Exposed via /dev/binder
Runtime info at /proc/misc/binder
実装は drivers/misc/binder.c と include/linux/binder.h を参照
Ashmem


glibcがない.X11がない./etc/passwd, /etc/fstab などがない
あるのは,ドライバモデルなどLow Levelの層,プロセス・メモリ管理,共有ライブラ
リ,ネットワークスタック
実装は drivers/misc/pmem.c と include/linux/android_pmem.h を参照
Wakelocks


実装は drivers/android/power.c と include/linux/wakelock.h を参照
http://source.android.com/porting/power_management.html
Session (cont.)


Title : A Walk Through the Anrdoid Stack の続き
概要

Alarm


Low Memory Killer



実装は drivers/rtc/alarm.c と include/linux/android_alarm.h を参照
実装は drivers/misc/lowmemorykiller.c と security/lowmem.c を参照
優先度については /sys/module/lowmemorykiller/parameters/
Bionic

BSD libc からの変更点







HAL (User-space Hardware Abstraction Layer)
Native Daemons





/system/bin/servicemanager, /system/bin/vold
Surface Flinger, Audio Flinger
Function Libraries


arbitrary Android system-properties のサポート
Android Kernel Logger Driver のサポート
Android-specific な user/group 管理のサポート
Android-specific な getservent のサポート
/etc/protocol は未サポート
LibWebCore/Webkit, V8, SQLite, OpenSSL, FreeType, etc.
Dalvik
Activity Manager Service, Connectivity Manager Service, Additional Manager Services
などなど
Session



Title : Android System Programming Tips and Tricks
Speaker : Tim Bird (Sony America)
概要

AndroidのいろんなTips紹介
 Gig, Repo, Build system
 Fast building




Fastboot,ADB
TraceやDebug ツール


dmesg,Logcat,Strace,Bootchart,DDMS,gdb
Performanceツール


make -j6 (マルチコア+2がよい)
export USE_CCACHE=1
Smem,Traceview,0xbench
メモ

プレゼン資料が公開されているので詳細はそちらを参照