21
株式会社富士通コンピュータテクノロジーズ 亀山英司 組込みLinuxの起動高速化 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 1218ka01

Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

株式会社富士通コンピュータテクノロジーズ 亀山英司

組込みLinuxの起動高速化

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

1218ka01

Page 2: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

組込みLinuxにおける起動高速化

組込みLinuxの起動時間短縮について依頼あり。

スペック

•CPU : Cortex-A9 ( 800MB - single)

•RAM: 500MB程度

要件

起動時間

•画出し ・・・・・・ 5秒

•音出し ・・・・・・ 3秒

終了時間

•数msで電源断

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 1

Page 3: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

課題と対策

問題点

起動まで13秒 (”login:”表示まで)

機能の折込みは段階的に実施されるため、その度に再度チューニングが必要

方針

boot loaderやkernel、アプリなどを個々に高速化するのではなく、段階的に提供される各モジュールの処理時間に影響されない高速起動の仕組みを作る。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 2

ユビキタス社の起動高速ソリューション 「QuickBoot」を採用

Page 4: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

QuickBoot (1)

QuickBootとは

ハイバネーション技術をベースに株式会社ユビキタスが提供するAndroid/Linux向けの高速起動ソリューション。

高速起動時はスナップショット採取時の状態に復帰するため、各モジュールの初期化処理に依存されない。

システムの起動に必要なメモリ領域を優先的に不揮発性メモリからRAMに復元することで、他の方式と比べて圧倒的な速度の起動を実現。

アプリケーション側で使用しているメモリ量に依存せず常に高速起動が可能であり、残りのメモリ領域は起動後に順次読み込みを行うため、ユーザーの操作にほとんど影響を与えない。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 3

Page 5: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

QuickBoot (2)

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 4

U-boot Kernel

init

アプリ起動

U-boot

Image Load

Resume

起動後処理

アプリ初期化

終了前処理

Suspend

Snapshot image

kernel User land

kernel User land

Page 6: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

効果

効果

アプリ起動までは13秒から4.5秒に短縮。

しかしアプリ起動から画面出しまで11秒。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 5

更なる改善が必要

U-boot

Image Load

Resume

起動後処理

アプリ初期化

4.5秒

11秒

Page 7: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

Snapshot Image

Device Driver

Task Priority

File I/O

施策

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 6

Page 8: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

「各モジュールの処理に影響されない高速起動の仕組み」を実現するためには出来るだけ起動した状態に近い時点のスナップショットを採取することが望ましい。

改善のポイント

採取のタイミング

サイズの削減

施策1 Snapshot Image (1)

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 7

U-boot

Image Load

Resume

起動後処理

アプリ初期化

Page 9: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策1 Snapshot Image (2)

スナップショット採取のタイミング

課題

•スナップショットブート後に動作するアプリの初期化処理が多い。

施策

•アプリ側の初期化処理を見直し、スナップショット採取前に移動できるものを精査。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 8

U-boot

Kernel

init

アプリ起動

U-boot

Image Load

Resume

起動後処理

アプリ初期化

終了前処理

Suspend

スナップショットサイズが増大

100BM程度

Page 10: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策1 Snapshot Image (3)

イメージサイズの削減

課題

•領域不足。

•整合性確認時間の増大。

•ロード時間の増大。

施策

•イメージ圧縮。

•ページキャッシュの解放。

•スナップショット起動後の処理が遅くなる場合あり。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 9

圧縮方式 圧縮率 伸長時間

LZF 約60% ○

ZLIB 約40% △

LZ4 約50% ◎

Page 11: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策2 Device Driver (1)

Suspend/Resume対応可能なドライバ

Suspend/Resume対応

•Suspend/Resume対応を行うことにより起動後処理にてinsmodするより高速。

並列化

Suspend/Resume処理を並列動作させることにより短縮化。

•SDホストインタフェースなどResumeに時間がかるドライバを非同期で実施。

•device_enable_async_suspend()

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 10

U-boot

Image Load

Resume

起動後処理

アプリ初期化

Page 12: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策2 Device Driver (2)

Suspend/Resume非対応ドライバ

ローダブルモジュール化して起動後処理にてロード。

Device node

•デバイスIDを固定とし、Suspend前に作成

Suspend時にロードだけ実施

•ロード時はなにもしない。

•Resume後従来の初期化処理を実施。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 11

U-boot

Image Load

Resume

起動後処理

アプリ初期化

Page 13: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策3 Task Priority (1)

課題

高優先度で動作するタスクが多く、起動に必要な処理を阻害。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 12

U-boot

Image Load

Resume

起動後処理

アプリ初期化

Page 14: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策3 Task Priority (2)

解析方法

Profile

• JTAGやPerftools、FtraceなどのProfile機能を使用。

•単位時間当たりのプロセス・スレッドのCPU使用率をグラフ化。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 13

0

5

10

15

20

25

1 2 3 4 5 6 7 8 9 10 11 12

Page 15: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策3 Task Priority (3)

タスク優先度の調整

施策

•各タスクのプライオリティを調査。起動に必要なタスクを優先的に動作させる様に優先度を調整。

•Kernelのタスクスケジューラの設定を調整し、起動時間が最も短くなる設定を検証。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 14

Page 16: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策4 File I/O(1)

ファイルI/O負荷の集中

課題

•高速起動後各プロセスが一斉に動作する為、プログラムロードによるファイルI/Oが集中。

•プロセスの初期化時に画面データやDB参照などファイルの読み込みが多発。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 15

U-boot

Image Load

Resume

起動後処理

アプリ初期化

Page 17: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策4 File I/O(2)

解析方法

Sarを使用

• I/O Wiatがある。

•Utilが100%を示す。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 16

Page 18: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策4 ファイルI/O(3)

ファイルI/O負荷の集中

対策

•起動に最低限必要なプロセスのみ先に動作させ、Page faultによるプログラムロードを低減させる。

•プロセスがアクセスするファイルの読み出しタイミングを、プロセスの初期化処理で一括で行うのではなく、そのデータを最初に使用するタイミングに変更。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 17

Page 19: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

施策4 ファイルI/O(2)

ファイルI/O性能

課題

•ファイルI/O自体が遅い。

施策

•ファイルを事前にキャッシュ。

•スナップショット採取前に不揮発なメモリへコピー。

• IOスケジューラの選定

•Kernelで選択可能な複数のI/Oスケジューラ(CFQ/deadline/NOOP)の検証とチューニング。

• I/Oプライオリティの見直し

•タスクごとにIOプライオリティをチューニング(CFQ使用時)。

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 18

Page 20: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

成果

効果

起動時間

•画出し ・・・・・ 5秒強

•音だし ・・・・・ 4秒強

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 19

0.000

5.000

10.000

15.000

20.000

25.000

30.000

35.000

アプリ

起動後処理

resume

preload+CRC

uboot

実測(Log無し)

U-boot

Image Load

Resume

起動後処理

アプリ初期化

2秒弱

3秒強

Page 21: Linux Fast Boot for Japan Technical Jamboree 45Title Linux Fast Boot for Japan Technical Jamboree 45 Created Date 6/6/2013 4:43:15 PM

Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED 20