Document

Improvement of bootup time
using Power Management
- Project Update ソニー㈱
神長浩気
[email protected]
2005/Nov/25
JapanTechnicalJamboree5
1
目的:
• アプリケーションの起動時間を短縮したい
HW初期化
マウント
ドライバ
(Boot loader
init
/ kernel)
1 [s] 1 [s]
アプリケーションの起動時間
2 [s]
5 [s]
• アプリケーションが main() に到達するまでに行われる処理
– イメージの転送
– ダイナミックリンク
– グローバルコンストラクタ
• システム全体を稼動する為のアプリケーション間の IPC 処理
2005/Nov/25
JapanTechnicalJamboree5
2
Linux 上の hibernate:
• Swsusp
– 2.6 バニラカーネルに含まれている
(Documentation/power/swsusp.txt)
– 制作者:Pavel Machek
• Software Suspend 2
– http://www.suspend2.net/
– 制作者:Nigel Cunningham
2005/Nov/25
JapanTechnicalJamboree5
3
Linux 上の hibernate(比較):
swsusp
Suspend2
architecture
i386, ppc, x86_64, ia64
i386, ppc, x86_64
Discontiguous memory
○
×
Compression
Encryption
×
×
×
○
○
○
×
×
○
○
Suspend-to-swapfile
Suspend-to-file
Userland サポート
出典: http://www.suspend2.net/features
2005/Nov/25
JapanTechnicalJamboree5
4
現状:
• Suspend2 の ARM ポーティングを行った
– Suspend2 の ML に投稿した
次期リリースに反映される予定!
http://lists.suspend2.net/lurker/message/20051114.094040.11261d0e.en.html
2005/Nov/25
JapanTechnicalJamboree5
5
環境:
• ターゲットボード
– OMAP Starter Kit
(OSK 5912)
• OS
– Linux 2.6
• Boot loader
– U-boot
• Image 書き込み先
– Flash ROM
2005/Nov/25
Hardware Features:
ARM9 core operating at 192 Mhz.
DSP core operating at 192 Mhz.
TLV320AIC23 Stereo Codec
32 Mbyte DDR SDRAM
32 Mbyte Flash ROM
RS-232 Serial Port
10 MBPS Ethernet port
USB Host Port
Compact flash connector
On board IEEE 1149.1 JTAG
JapanTechnicalJamboree5
6
Suspend2 評価:
• Linux 2.6.14 + Suspend2-2.2-rc9
• ash ログイン状態から hibernate
• 時間測定にカーネルの printk time を用いた
– Uboot から linux が立ち上がる時刻が基準
– Make menuconfig で
• Kernel hacking --->
[ ] Show timing information on printks
– http://tree.celinuxforum.org/CelfPubWiki/PrintkTimes
2005/Nov/25
JapanTechnicalJamboree5
7
Suspend2 結果:
• 通常の起動時間
– 7.618 [sec]
• Suspend2 (lzf 有効)
– 22.492 [sec]
– 12.371 MB  7.450 MB (圧縮率 39%)
• Suspend2 (lzf 無効)
– 17.99 [sec]
起動時間差: 20%, 4.50 [sec]
Suspend2 処理開始時間: 4.402 [sec]
2005/Nov/25
JapanTechnicalJamboree5
8
swsusp 評価:
• Linux 2.6.11
• 時間測定にカーネルの printk time を用いた
– Uboot から linux が立ち上がる時刻をゼロ
– Make menuconfig で
• Kernel hacking --->
[ ] Show timing information on printks
– http://tree.celinuxforum.org/CelfPubWiki/PrintkTimes
2005/Nov/25
JapanTechnicalJamboree5
9
swsusp 結果:
• 通常の起動時間
– 7.676 [sec]
• swsusp (ash)
– 9.52 [sec]
– Image: 6.38 MB
• swsusp (mplayer)
– 13.910 [sec]
– Image: 10.24 MB
2005/Nov/25
(swsusp 処理開始時間: 2.174 [sec])
JapanTechnicalJamboree5
10
Swsusp/suspend2 比較:
• Linux のバージョンが異なるので比較が出来
ないが…
– Swsusp/linux2.6.11 はイメージが小さい&
起動が早い
– Suspend2/linux2.6.14 のイメージの LZF 圧縮
は有効だが、起動時間とのトレードオフ
• Suspend2-2.2 は RC なので、まだ不安定…
2005/Nov/25
JapanTechnicalJamboree5
11
Swsusp/suspend2 比較:(続)
• イメージサイズ/処理時間では
– Suspend2: 925KB/sec
– swsusp: 889KB/sec
2005/Nov/25
JapanTechnicalJamboree5
12
swsusp3:
• swsusp の作者 Pavel が encryption,
compression, UI などを swsusp に拡張
• 主な処理を userland で行い、 kernel への
変更を最小限にとどめることが目標
• http://lists.osdl.org/pipermail/linux-pm/2005-September/001312.html
• http://lists.osdl.org/pipermail/linux-pm/2005-November/001535.html
• http://lists.osdl.org/pipermail/linux-pm/2005-November/001562.html
2005/Nov/25
JapanTechnicalJamboree5
13
Swsusp3:(MLダイジェスト)
• 2.6.16 位に kernel 部分を入れたい (Pavel)
• もし入るならば、RH/FC kernel は分岐する
だろう。Swsusp3 は /dev/mem を使うが、
rootkit を阻止する為に /dev/mem に制限
をかけているので(Dave Jones)
…(以降 swsusp3 vs security の議論白熱)
• Userland で encryption/compression を行う
方が直感的だ (Rafael J. Wysocki )
2005/Nov/25
JapanTechnicalJamboree5
14
Swsusp3:(MLダイジェスト続)
• Suspend2 にはそれら機能が入っているぞ、
ダブルエフォートだぞ。(Dumitru Ciobarcianu )
• Kernel に実装するのは違う。Pavel を疑うの
か?Nigel は一緒にする為に彼が何をしなけ
ればならないのか分かっている (Greg K-H)
• 何で userland が正しい場所だと思うのか分か
らない (Nigel)
2005/Nov/25
JapanTechnicalJamboree5
15
Swsusp3:(MLダイジェスト続)
• Userland swsusp では 150 行程度しか
kernel に変更が無い (Pavel)
• 現在のままでは Nigel のコードは mainline
には入らない事を自覚しる(Greg K-H)
(以降議論白熱)
2005/Nov/25
JapanTechnicalJamboree5
16
EOF
2005/Nov/25
JapanTechnicalJamboree5
17