Document

Power Management
ディスカッション
ソニー㈱
神長浩気
[email protected]
2005/Sept/30
JapanTechnicalJamboree4
1
目的:
• アプリケーションの起動時間を短縮したい
HW初期化
マウント
ドライバ
(Boot loader
init
/ kernel)
1 [s] 1 [s]
アプリケーションの起動時間
2 [s]
5 [s]
• アプリケーションが main() に到達するまでに行われる処理
– イメージの転送
– ダイナミックリンク
– グローバルコンストラクタ
• システム全体を稼動する為のアプリケーション間の IPC 処理
2005/Sept/30
JapanTechnicalJamboree4
2
従来の手法:
• ダイナミックリンクの処理時間の短縮
– prelink
• グローバルコンストラクタの処理時間の短縮
– コンストラクタを一箇所に集める
(ローカライズ効果)
• Execute in place (XIP)
• Data セクションのデマンドページング
(前回の水山さんの発表より)
2005/Sept/30
JapanTechnicalJamboree4
3
今回の手法:
• hibernate からの復帰を利用する
– ① BIOS (Boot loader)レベル
– ② Kernel レベル
– ③ BIOS + kernel
2005/Sept/30
JapanTechnicalJamboree4
4
終了・起動シーケンス①:
KERNEL
BOOT
LOADER
I/O Image
save save
I/O
init
OFF
2005/Sept/30
Image I/O
restore rest.
ON
JapanTechnicalJamboree4
5
終了・起動シーケンス②:
KERNEL
I/O
save
Image
save
I/O
I/O Image I/O
boot
init
s.d. restore rest.
BOOT
LOADER
OFF
2005/Sept/30
ON
JapanTechnicalJamboree4
6
終了・起動シーケンス③:
I/O img
KERNEL
save save
BOOT
LOADER
I/O img I/O
init rest rest.
I/O img
save save
I/O img I/O
init rest rest.
OFF
2005/Sept/30
ON
JapanTechnicalJamboree4
7
各種手法比較:
• ① BIOS (Boot loader)レベル
– Hibernate 復帰が比較的高速
– データの整合性が取れない場合の
処理が複雑になる
• ② Kernel レベル
– Hibernate 復帰後のデータの整合性をとる
処理ができる
– Hibernate 復帰に時間がかかる
• ③ BIOS + kernel
– 高速な Hibernate 復帰
– データの整合性をとる処理ができる
2005/Sept/30
JapanTechnicalJamboree4
8
コンセプト:
• スタートアップ
– Boot loader のヘルパー関数を用いて kernel 側の unhibernate までの処理を軽減
• DEFERRED_RESUME
– 指定されたアプリを優先的に立ち上げる
• システムイメージの保存
– 毎回同じ状態でスタートする為
• その他
– マウント
– Splash window
– 高速シャットダウン
2005/Sept/30
JapanTechnicalJamboree4
9
Linux 上の hibernate:
• Swsusp
– 2.6 バニラカーネルに含まれている
(Documentation/power/swsusp.txt)
– 制作者:Pavel Machek
• Software suspend 2
– http://www.suspend2.net/
– 制作者:Nigel Cunningham
2005/Sept/30
JapanTechnicalJamboree4
10
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/Sept/30
JapanTechnicalJamboree4
11
環境:
• ターゲットボード
– OMAP Starter Kit
(OSK 5912)
• OS
– Linux 2.6
• Boot loader
– U-boot
2005/Sept/30
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
JapanTechnicalJamboree4
12
作業内容:
• Linux の hibernate の選択
– まずは swsusp で試す
•
•
•
•
•
•
ARM へのポーティング
FLASH への hibernate
システムイメージの保存
高速シャットダウン
Boot loader 側の hibernate
DEFERED_RESUME
2005/Sept/30
JapanTechnicalJamboree4
13
現状:
• Suspend2の調査
– システムイメージの圧縮
– システムイメージの暗号化
• Suspend2 の ARM ポーティング
• U-boot の調査
– Boot loader 側の hibernate
2005/Sept/30
JapanTechnicalJamboree4
14
デモ:
2005/Sept/30
JapanTechnicalJamboree4
15
コミュニティ:
• Suspend2 ML に Arm ポートパッチを
送ったら好意的に受け止められた
• Arm ML に質問・問題点などについて
アドバイスしてもらった
2005/Sept/30
JapanTechnicalJamboree4
16
EOF
2005/Sept/30
JapanTechnicalJamboree4
17
祝阪神タイガーズ優勝
2005/Sept/30
JapanTechnicalJamboree4
18