OS起動時の処理内容を表示するbootchartを使うとシステム起動時にどのようなプロセスがどの程度の時間実行されているのか確認できます。bootchartはシステム起動時に実行されプロセスやディスクIOの状態を定期的に監視しシステム起動後にPNG形式の画像を出力します。次のサイトからソースファイルをダウンロードします。
http://www.bootchart.org/download.html
# bunzip2 bootchart-0.9.tar.bz2 # tar xvf bootchart-0.9.tar # cd bootchart-0.9 # ./install.sh |
上記で/sbin/bootchartdがインストールされ、/boot/grub/grub.confにも同時に以下が追記されます。但し、デフォルトで起動するカーネルにはなりませんので、一旦再起動をかけて以下のカーネルを手動で選択します。
# cat /boot/grub/grub.conf title Bootchart logging root (hd0,0) kernel /vmlinuz-2.6.32-279.22.1.el6.centos.plus.i686 ro root=UUID=70e00c 95-33ae-441d-a143-9f56cab9cda2 rd_NO_LUKS rd_NO_MD crashkernel=auto KEYBOARDTYP E=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet init=/sbin/bo otchartd initrd /initramfs-2.6.32-279.22.1.el6.centos.plus.i686.img |
起動後には/var/logにbootchart.tgzというファイルが生成されています。生成されたファイルの全てがテキストファイルであり人間の目で見るには非常につらいものがあります。なのでこれを画像ファイルに変換することが望まれます。これにはjavaを用いて実行します。まず必要パッケージを以下のようにインストールします画像ファイルを生成します。
# yum install ant |
必要なパッケージをインストール後、次のコマンドで画像ファイルを生成します。
# cd bootchart-0.9 # ant # java -jar bootchart.jar Parsing /var/log/bootchart.tgz Wrote image: ./bootchart.png |
上記メッセージの通り、カレントディレクトリにbootchart.pngが生成されました。それが以下です。
これらの結果からボトルネックになっている不要なサービスをアンインストールしたり、より早いデバイスに変更したりといったチューニングが可能となります。設定を変更した際、その前後の結果を比較すればシステム起動時における影響範囲も把握できます。