Session - eLinux.org

Download Report

Transcript Session - eLinux.org

CELF
Embedded Linux Conference 2010
Report
パナソニック株式会社
加藤慎介
目次





ELC 概要
Keynote Report
Session Report
Demo
Reference
ELC 概要


ELC 2010(CELF Embedded Linux Conference 2010)とは?
 組込み系のLinuxの技術に特化した国際技術会議,今年で6回目(6
年目)
 著名なKernelメンテナーやLinux技術者をはじめ,世界の組込みメー
カー系企業の技術者が多数参加
ELC 2010 概要
 日時:4月12日~14日
 場所:サンフランシスコ
 参加者:約240名で非常に盛況


昨年より約70名増加
日本からは15名,韓国からは9名




アジア圏からの参加者数は低調.リーマンショック移行,アジア圏からの参加者
数が半減し,まだ以前のレベルまで回復していない様子
Keynote:2件
Session:約50件(Sessionは3会場で同時開催)
詳細サイト:http://www.embeddedlinuxconference.com/elc_2010/
Keynote 1 (1/2)

Title: Android: A Case Study of an Embedded Linux
Project


講演者: Greg Kroah-Hartman (Novell)
 著名なLinuxメンテナーの一人
 著書に「Linuxデバイスドライバ」などがある
概要




Android用モジュールのソースコードがKernelのMainlineに
入っていたが,Kernel2.6.33ではずされた件についての講演.
「講演内容はNovellとは無関係.あくまでKernelメンテナーとし
ての意見(講演)」と始めに言及.
前半はAndroidの功績(特にユーザスペースでの功績)を称える
内容.後半はAndroidの悪い点に言及.
Kernel2.6.33でAndroidのモジュールが外されたのは,要は
「Googleがコミュニティを無視した」ことが原因.
Keynote 1 (2/2)


Googleがした良い事
 Linuxを使ったこと
 android.git.kernel.org としたこと
 Kernelのライセンスに従ったこと
Googleがした悪い事
 android.git.kernel.org としたこと
 コミュニティを無視したこと
 自分たちは特別だと思ったこと
 自分たちはひとりだと思ったこと
Keynote 2 (1/2)

Title: Embedded in 2010: And End to the
Entropy?

講演者: Matt Asay (COO,Canonical)



Open Source Initiative (OSI)のBoardメンバーや,Lineo,
NovellでOSS戦略担当,を歴任
スタンフォードLawスクールでソフトウェアライセンス(特に
GPL)について研究経験あり
概要

2010年の組込みLinuxの展望


もはやOSは違いの要因とはならない
要求は増える.ユーザにはいろいろな見え方(=プラット
フォーム,Android,ChromeOS,MeeGo,Limoなど)がある
がLinuxであることは変わらない
Keynote 2 (2/2)

過去のBSP(Board Support Package)




今日(ARMv7やIntelAtom)




ARMv1-ARMv3:Linuxを動かすにはパワー不足
ARMv4:特に限定的なLinuxは動かせた.RTOSと一緒にRTOS上の1アプリとしてLinuxを動かしていた
ARMv5-ARMv6:携帯で使えるくらいのパワーは確保された.限定的なLinuxやRTOSが使われた
スマートフォンや一般的なPC用途で使えるくらいのパワーあり
一般的な目的をサポートするOSが必要になった
あらゆるアプリへの対応が必要
BSPはどんどん進化している

デバイスの増加に迷わされてはいけない
なぜデバイスはこれほどまで発散していくのか?

OSは違いの要因とはならない



Linuxは十分共通PFになっている


組込みマーケットでLinuxは長らくシェア1位であった
モバイルマーケットでは5位(5%)


1位Symbian(47%),2位ResearchInMotion(20%),3位iPhoneOS(14%),4位MS WindowsMobile(9%)
なぜLinuxなのか?






安いもの,高いもの,どちらにも対応できるから
プラットフォームのビルド・メンテナンスにかかるコスト減
開発コミュニティの存在
企業連合によるイノベーションへの努力がある
RT性やメモリ管理からグラフィックパフォーマンスにイノベーションが移りつつある
追加価値にフォーカスすることができる
ひとつのBSPで全てのユーザ環境にあわすのは愚かな話
Session


Title: Real-Time Linux Failure
概要
 リアルタイムLinuxは使えるものになっているが,そこにリアルタイム
性向上のソリューションを入れることで機能低下が起こる場合がある.
リアルタイム性を求めて改善をしていく上でよくある間違い(結果として
機能低下を引き起こす)のプレゼン
 リアルタイム性の向上のためには,目的を明確にすることが重要

リアルタイム=早い応答性,ではない





例:早い応答性を求めるのではなく,応答時間のデッドラインを決めてデッドライ
ンを守る
平均的に応答性が速いこと,と,デッドラインを超えない事,どちらが優先事項
か?
トレードオフを理解すること
ハードウェアに起因するリアルタイム性低下の原因を理解すること
Distributionによってリアルタイム性向上のための最適なパッチは異
なることを理解すること
Session


Title: A Consideration of Memory Saving by Efficient Mapping of
Shared Libraries
概要
 複数の共有ライブラリのそれぞれのDataとBSSについて,まとめて1
箇所に配置し,それまで共有ライブラリのDataとBSSを配置していた
際のフラグメンテーションを解決してメモリ削減する技術




mmapを使うとまとめて1箇所に配置したDataとBSSエリアをライブラリ間
で共有できないので,readシステムコールを用いる
複数のGOT(global offset table)をまとめたGlobal GOT エリアを決まった
アドレスに作っておく
ld.so(ELF loader)と共有ライブラリのテキストのバイナリ書換え,が必要
プロトタイプ作成はしたが,評価等はこれから実施予定
Session


Title: Effective Scripting in Embedded
Devices
概要

組込み機器で効果的にスクリプトを使う方法



いろんな状況下で,スクリプト使用の最も適切なタイミング
はいつか? 最も適切なスクリプト言語はなにか?
C/C++とは違う,スクリプト言語の強みを生かす
Jim Tcl という言語を使ったサンプルの紹介

C言語ベースとの速度比較(Response)があった

C-based 53ms に対し,Tcl-based 73ms
Session


Title: Experience in Android Porting, Lessons learned, tips and
tricks
概要
 発表者はIntelの人
 Androidをポーティングしたときに思ったことのトークセッション(レク
チャーではない)
 組込みLinuxがAndroidから学んだこと



Frameworksが重要.ユーザモードのPowerManagementもアプリケーション
のライフサイクルもこれで決まる
実装の容易性が確保されていることが重要
Androidのグラフィック







2DのほとんどはSWレンダリング.3Dはほぼテクスチャでのみ使用.ゲームは
HWを利用
Fastbootが良い
Repoは使いやすい
Intel UMG ハードウェアのためのAndroid BSPに興味あり
AOSPでのx86完全対応をしていきたい x86のAOSPツールチェーンも更新す
る
Android.mkはまだハックしていない
build/envsetup.sh は良い
Session


Title: Measuring Responsiveness of Linux Kernel on Embedded System
概要


リアルタイムシステムでのレスポンス計測についてのプレゼン
リアルタイムシステムの特徴






レスポンスとパフォーマンスにはトレードオフがある
ジョブ実行が保証されている
ハードリアルタイムとソフトリアルタイムがある
一般的にRTOSが使われてきたが,今はいろんな取組みがある
Kernel2.6まではLinuxKernelをリアルタイムOSの1アプリとするアプローチが多
かったが,Kernel2.6以降はLinuxKernel自体を改良するアプローチが主流
計測方法の必要が増してきた

どれくらいリアルタイム性があるのか?.リアルタイム性の追求からリアルタイム性
の計測方法に興味が移行


測りたいもの


Preemption Latency
計測にはRTCをインラインアセンブラで使う


計測間隔,計測精度,ハードウェア依存
コードはWikiで公開予定,とのこと
計測結果の表示では下記に対応

Livegraph
Session


Title: Evaluation of Data Reliability on Linux File System
概要
 ファイルシステム毎のデータ信頼性の評価のプレゼン
 XFSとJFSはdataとsizeのミスマッチ率はKernelのVersionに依存す
る結果となった
 SYNC write modeはほとんどの場合で信頼性が高いとはいえない
 大きいWrite sizeだとdataミスマッチが起き易い
 EXT4-Journal(2.6.31)の結果がBest
 XFS(2.6.31and33)とEXT3-Journalの結果も良い

ランダムWrite時はExt3の方がXFSよりパフォーマンスが良い
Session


Title: Runtime Power Management: Overview and
Platform implementation
概要

従来のSuspend/Resumeとは違う新しい
PowerManagement(PM)のFramework
 実行中にデバイスのPMを独立して行う

デバイスローカルでのSuspend/Resume
Idle中のデバイスをSuspendする
 Kernel2.6.32にマージ
今後の議論・検討ネタ
 LDMでの






デバイス特有の遅延への対応
デバイスの連結時の遅延への対応
デバイスのSleep/Wakeup遅延への対応
バスのスループット
Session


Title: Ftrace - Embedded Edition
概要



トレースツール Ftrace の組込みEditionの紹介
追加したプラグイン
 function, function_graph, wakeup and wakeup_rt, irqsoff,
preemptoff, preemptirqsoff, mmiotrace, sched_switch, nop
Version 1.0を公開している
 git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/tracecmd.git
Session (State of Embedded Linux)1/5


Title: State of Embedded Linux
概要




最近のKernelについて
CELFの技術エリア(から抜粋)
CELFが援助している分野(技術)
組込み系のディストリビューション
Session (State of Embedded Linux) 2/5


Title: State of Embedded Linux
概要:最近のKernelについて

2009年~最新まで(Linux 2.6.29~2.6.33)の組込みに関係する技術をPickUpし
て紹介

2.6.29


2.6.30








devtmpfsがマージ
Timechart Tool(Kernelイベントをみるツール)がマージ
Runtime Power Management (のコア部分)がマージ
2.6.33




Ftraceにグラフィックフィルタや新しいTracePointが入った
SMACK セキュリティモジュールがマージ
Performance Counterがマージ
kmemleak(detect kernel memory leaks)がマージ
2.6.32


TOMOYO セキュリティモジュールがマージ
Threaded interrupts
2.6.31


SquashFSがマージ,BTRFSがマージ
LZO圧縮がマージ
Ramxswap/Compcacheがマージ
Androidのパッチがはずされた
注目しているほかのパッチ

kbuild, asm-generic
Session (State of Embedded Linux) 3/5


Title: State of Embedded Linux
概要:CELFの技術エリア(から抜粋)

オーディオ・ビデオ・グラフィック関係


起動時間



Ttrace, LTTng, SystemTap, Perf Counters
Security


smem,Kernel image compression, Ramzswap, mem_notify, -ffunction_sections, XIP
Tracing


Interrupt threads(2.6.30),Sleeping Spinlocks(2.6.33)
System Size / Memory


Wakelock,Runtime PM,非同期サスペンドレジューム
Real-time


SquashFS(2.6.29), UBIFS(2.6.27), LogFS, AXFS
Power Management


2.6.29でAsynchronousFunctionCallが入った
devtmpfs (デスクトップでは0.6秒起動が早くなる)
Filesystem


GStreamer, OpenCore/OMX, DirectFB, OpenGL ES, Clutter(GTK UI Framework)
TOMOYO, SMACK, Embedded SELinux
その他

Device Trees for ARM, DLNA
Session (State of Embedded Linux) 4/5


Title: State of Embedded Linux
概要:CELFが援助している分野(技術)
 smem
 OOM notifications in cgroups
 SquashFS enhancements
 SMACK on TV analysis
 Device-trees for ARM
 -ffunction-section
 Open Project Proposal
 Matt Mackall - maintaine work
Session (State of Embedded Linux) 5/5


Title: State of Embedded Linux
概要:組込み系のディストリビューション


Moblin,Android,Maemo,Ubuntu netbook,
Chrome
Meego (Moblin + Maemo)
Session


Title: Using the LTTng Tracer for System-Wide performance analysis
and debugging
概要

LTTngTracerのチュートリアル


http://lttng.org
トレース戦略

問題の証明



セットアップ


課題を解決するためにベストなセットアップの確認
アンカーとトリガー


システムで悪いところはどこか?
システムコンフィグが影響しているのは何か?
 ソフトウェア,ハードウェア
分析のために・・・アンカーとトリガーを用意
 アンカー:トレース分析の開始時点を指定
 トリガー:トレースの開始・停止,Kernel APIで用意,ユーザスペースからの
関数も用意
例

Xorgスケジューリング,Alsaの解析,バッファアンダーラン,など
Session


Title: Multi-core scheduling optimizations for soft real-time
applications
概要
 背景:Linux RT スケジューラはDLP(Data Level Parallelism)にはよ
いが,TLP(Task Level Parallelism)にはどうか? TLPでの注意点
は?
 目的




分析結果


TLPで使うには,共通の並列化技術が必要で,現状のLinuxスケジューラ
はTLPに向いていない
解決案


共同タスク用のRT Linux スケジューラの振る舞いを調査
RTスケジューラを最大限利用する
メインラインKernelへの組み込みやすさを優先
独立して同じCPUでタスク実行すべき
結果

提案した方法では5.94%のスピード向上に貢献
Session


Title: Linux without a Boot Loader?
概要

なぜ悩むのか?


ブートローダー






U-boot,redboot,blob,などがある
ハードウェアの初期化とセットアップを実施
Linux Kernelを起動(もしくは他のOSを起動)
不良Flashからのリカバリ
Flashのアップデート
Linuxにブートローダーは必要か?


Linuxのブートローダーがあるから
Yes.ハード初期化のパワーがない,メモリ初期化のコードがない,CPUセットアップ
がない
ではブートのためにLinuxを改変できるか?


Yes.簡単だが・・・ハードウェア依存の部分がある・ほとんどがアセンブラの起動
コードの修正
必要な改変


CPU初期化,DRAM初期化,BUS初期化,KernelのRAMへの移動
デモ

uClinux ColdFire 5272,IXP425 XSCALE(ARM),Cavium OCTEON 5020
それぞれ50~100行程度のアセンブラコード追加をしたとの記載あり
Session


Title: Kexec - Ready for Embedded Linux
概要



Kexec(ブートローダを使わない高速リブート機能)を組込みで
使おうという話.もとはサーバの復旧のための技術であるが,
組込みでは開発段階で何度も再起動をするので有効では?と
いう発想.
Kexec-basec Bootloader
 ハードウェアセットアップコードを統合
 LinuxKernelはCONFIG_KEXEC=y
 kexec-toolsでユーザスペース統合
サンプル実装のターゲットは「SHのボード」
Session


Title: Developing for non-X86 targets using
QEMU
概要



現在最も有力なエミュレータとなったQEMUのX86以
外での使用についてのプレゼン
PDFで240ページ
ひたすらレクチャー
Demo


二日目の全セッション終了後にデモ展示(2時間)がありま
した
デモ(10件程度)から印象に残った2件
 起動時間高速化
 QEMU(エミュレータ)を使ったICEデバッグ
Reference


ELC 2010のサイト
http://www.embeddedlinuxconference.com/el
c_2010/
ELC 2010の発表資料置き場
http://elinux.org/ELC_2010_Presentations