wiki:BootTimeOptimization/Initscripts

SysVinit+Initscripts ベースのシステムで起動の高速化/最適化を行う

bootchart (ほぼデフォルト)

いくつかデフォルトでは起動していないデーモンがありますが、この時点でなにも 手をいれていない状態で gdm が起動するまでのチャートです。

およそ GRUB からの起動で 50 秒かかっています。

環境は ノートPC で、HDD が 2.5 インチの低速な環境のため I/O 待ちでかなり 時間がロスしています。また無駄な sleep などが入っており、かなり時間をロス してしまっています。

なお、元々はnfslockが動いていましたが、ログを残しわすれたためこれは nfslock を止めたあとの状態です。nfslock でさらに5秒ロスしていました。

bootchart (一部修正)

initscripts にすこし手をいれて sleep を減らし、いくつかのいらないデーモン を停止した状態です。(いくつかデフォルトで起動すべきでないものも動いていま した)

この時点で 39 秒に改善しています。

Network が /etc/init.d/network で起動しているものと、NetworkManager で 起動しているものの両方で重複しています。従来の /etc/init.d/network が時間 をロスしているため、NM のみにすることで5秒程度短縮できます。

また、kernel 起動から initramfs の処理で7秒近くつかっているのは、改善の 余地がありそうです。同様に rc.sysinit も数秒は短縮できそうです。

bootchart (大幅修正)

readahead を最新のものに変更し、起動を rc.sysinit 内の初期に実行するように 変更しました。

また、先読みさせるファイルを少し制限して無駄に大きいファイルを(自動収集でも) 読まないようにしてあります。

readahead_lator を廃止し、X 起動後の先読みは preload を任せるようにしました。 (preloadはまだ使っていません)

/etc/init.d/network の起動をとめて、NetoworkManager? 一本に絞りました。

ここまでで 32秒に短縮できました。

ここで、kernel/initramfs を専用のものに変えると4秒程度短縮、gdm を初期に起動すると さらに5秒程度短縮することができますが、環境依存が大きいため変更はしていません。

Attachments