Armadillo-840は、Armadillo-400シリーズに比べイメージサイズが大きくなっているため起動時間が遅くなりがちです。 最終的に製品化する際には、起動時間を早めたい場合もあるかと思います。 そこで、Armadillo-840の標準イメージに入っている機能をけずり、どこまで起動時間を短縮できるかを試してみました。
環境
- 製品: Armadillo-840 液晶モデル開発セット
- Linuxカーネル: Linux-3.4-at9
- Atmark Dist: v20140602
- TeraTerm: Version 4.80(SVN# 5451)
起動時間計測
いろいろな条件で、hermitプロンプトでbootコマンドを入力してから、loginプロンプトが出るまでの時間を計測してみました。
標準イメージ
まずは標準のコンフィギュレーションで作成したイメージで、起動時間を計測してみます。 計測にはTeraTermのログ機能(タイムスタンプ付き)を使用しました。
計測結果は以下の通りです。
計測項目 | 時間 |
イメージをRAMに展開 | 16sec |
Linuxカーネルの初期化 | 7sec |
初期化スクリプト | 11sec |
合計 | 34sec |
上記の結果から、起動時に一番時間がかかっている箇所が「イメージをRAMに展開」時にあることがわかりました。
Qtを削除したのみのイメージ
イメージの展開に時間がかかっているということで、まずはユーザーランドイメージで一番ファイルサイズの大きいQtを ユーザーランドコンフィギュレーションから削除して起動してみました。
起動時間の計測結果は以下の通りです。
計測項目 | 時間 |
イメージをRAMに展開 | 9sec |
Linuxカーネルの初期化 | 4sec |
初期化スクリプト | 11sec |
合計 | 24sec |
上記の結果から以下の内容がわかります。
- イメージサイズを減らすことで「イメージをRAMに展開」する時間を減らせる
- イメージサイズを減らすことで「Linuxカーネルの初期化」の時間も減らせる
- 初期化スクリプトも11secとかなりの時間がかかっている
ユーザーランドの各種機能を削除
これまでの結果で、ユーザランドイメージのサイズを減らすことと、初期化スクリプトを減らすことで 起動時間が早まることがわかりました。そこで、ほぼ起動に最低限のファイルのみ残すとどのようになるかを試してみました。
変更した箇所は以下の通りです。
- ユーザーランドコンフィギュレーションで、不要そうなものを削除
- 不要な初期化スクリプトを削除
起動時間の計測結果は以下の通りです。
計測項目 | 時間 |
イメージをRAMに展開 | 2sec |
Linuxカーネルの初期化 | 2sec |
初期化スクリプト | 1sec |
合計 | 5sec |
上記から、最低限のファイルのみに絞れば5秒程度で起動することがわかりました。
この試験に関連するファイルを以下に添付します。
- 使用したAtmark Dist: atmark-dist-20140602-fastboot.tar.gz(プロダクト名: fastboot-product)
- 変更したプロダクトディレクトリのdiff: atmark-dist-20140602-fastboot.diff_.txt
- 起動時のログ: teraterm.log
課題
今回は、簡単に目安として試してみた状態ですので、まだ以下の課題が残っています。
- Linuxカーネル側の変更は行っていません。Linuxカーネルの不要なドライバーを削除すれば追加で1,2秒程度の短縮はできそうです
- Armadillo-840の特長であるQtで画面表示ができない状態
また機会があれば、上記の内容も試してみたいと思います。