= SysVinit+Initscripts ベースのシステムで起動の高速化/最適化を行う = == bootchart (ほぼデフォルト) == いくつかデフォルトでは起動していないデーモンがありますが、この時点でなにも 手をいれていない状態で gdm が起動するまでのチャートです。 およそ GRUB からの起動で 50 秒かかっています。 [[Image(bootchart-old.png, width=400)]] 環境は ノートPC で、HDD が 2.5 インチの低速な環境のため I/O 待ちでかなり 時間がロスしています。また無駄な sleep などが入っており、かなり時間をロス してしまっています。 なお、元々はnfslockが動いていましたが、ログを残しわすれたためこれは nfslock を止めたあとの状態です。nfslock でさらに5秒ロスしていました。 == bootchart (一部修正) == initscripts にすこし手をいれて sleep を減らし、いくつかのいらないデーモン を停止した状態です。(いくつかデフォルトで起動すべきでないものも動いていま した) この時点で 39 秒に改善しています。 [[Image(bootchart-new.png, width=400)]] 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秒に短縮できました。 [[Image(bootchart-readahead-147.png, width=400)]] ここで、kernel/initramfs を専用のものに変えると4秒程度短縮、gdm を初期に起動すると さらに5秒程度短縮することができますが、環境依存が大きいため変更はしていません。