Ubuntuの起動時間を短縮するConcurrent Bootを試してみた

Ubuntuの起動処理はデフォルトで1つずつ処理を実行するようになっている。これを並列に実行するよう設定することで起動時間を短縮する。
並列処理を行うのでマシンの性能が低いとあまり効果がないみたいだが、デュアルコア以上の性能なら効果は期待できると思う。

設定は以下を参考にした。
第8回 体感速度の改善 : bootchart, concurrent boot, readahead, preloadの利用:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

上の記事が丁寧に説明してくれているので、ここでは簡潔に手順のみ示すことにする。

まずは準備から。現在の起動状況を確認するためにbootchartをインストールする。

$ sudo apt-get update
$ sudo apt-get install bootchart

システムを再起動すると/var/log/bootchart/ディレクトリ以下に起動時の処理内容・時間、CPUとDiskの使用率を示したチャートのPNG画像が自動的に生成されるようになる。以下を試す前にこれを見て性能的に余裕がありそうか確認しておくとよい。
次にConcurrent Bootを設定する。といっても/etc/init.d/rcの一部を変更するだけで良い。
/etc/init.d/rcを管理者権限で開いて

# Specify method used to enable concurrent init.d scripts.
# Valid options are 'none', 'startpar' and 'makefile'.
...
...
# automatically to allow this.
CONCURRENCY=none

の部分を探してくる。デフォルトでは設定が"none"になっているので"startpar"に変えてやればよい。*1

...
# automatically to allow this.
CONCURRENCY=startpar

スクリプトの依存関係から並列処理にすると起動順が問題になるような場合があるらしく、ファイルにはこの設定をONにする前にその辺を確認しろという注意がある。私はあまり良くわからなかったので気にせず変更したが特に問題は出なかった。
あとはシステムを再起動すれば並列処理で起動するようになっている。

結果は以下の通り。

  • 設定前 - 37.73秒



  • 設定後 - 24.37秒




となって私の環境では約13秒短縮することができた。*2簡単な割に効果は大きかったのでちょっと試してみる価値はあると思う。

*1:ここは上の記事の時点からの変更点。shellでもエラーはでないらしいが。詳しくはhttp://ubuntuforums.org/showthread.php?p=9045839あたりを参考に

*2:正確にはそれぞれ複数回測定して比較すべきだろうがお遊びなので適当に