アクセラと+αな生活
アクセラとα350と共に過ごす気まぐれ日記です。
Firefox ブラウザ無料ダウンロード
2017年05月
≪04月  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31    06月≫
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
「Bootchart」は OS 起動時の CPU、ディスク I/O などのシステム負荷をグラフ化してくれるツールです。
OS 起動時のプロセスを時系列でチャートで見ることができるので、視覚的にもわかりやすいです。

システム負荷情報から、ボトルネックを割り出したり、OS の起動はどのようなプロセスを経ているかなども分かります。


【インストール】
「Bootchart」はパッケージ化されているので、「apt」でインストールします。


$ sudo apt-get update

~ 略 ~

$ sudo apt-get install bootchart
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
bootchart-java ca-certificates-java default-jre-headless gcj-4.4-base
gcj-4.4-jre gcj-4.4-jre-headless gcj-4.4-jre-lib gcj-jre gcj-jre-headless
icedtea-6-jre-cacao java-common libcommons-cli-java libcommons-compress-java
libcommons-lang-java libgcj-common libgcj10 libgcj10-awt libjline-java
openjdk-6-jre-headless openjdk-6-jre-lib rhino tzdata-java
提案パッケージ:
gqview librsvg2-bin gimp-svg default-jre fastjar gcj-4.4-jdk gcj-jdk equivs
java-virtual-machine libgcj10-dbg libjline-java-doc sun-java6-fonts
ttf-kochi-gothic ttf-sazanami-gothic ttf-telugu-fonts ttf-oriya-fonts
ttf-kannada-fonts ttf-bengali-fonts rhino-doc
以下のパッケージが新たにインストールされます:
bootchart bootchart-java ca-certificates-java default-jre-headless
gcj-4.4-base gcj-4.4-jre gcj-4.4-jre-headless gcj-4.4-jre-lib gcj-jre
gcj-jre-headless icedtea-6-jre-cacao java-common libcommons-cli-java
libcommons-compress-java libcommons-lang-java libgcj-common libgcj10
libgcj10-awt libjline-java openjdk-6-jre-headless openjdk-6-jre-lib rhino
tzdata-java
アップグレード: 0 個、新規インストール: 23 個、削除: 0 個、保留: 0 個。
55.2MB のアーカイブを取得する必要があります。
この操作後に追加で 144MB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://jp.archive.ubuntu.com karmic-updates/main openjdk-6-jre-lib 6b16-1.6.1-3ubuntu1 [4,772kB]
取得:2 http://jp.archive.ubuntu.com karmic/main java-common 0.30ubuntu5 [80.3kB]
取得:3 http://jp.archive.ubuntu.com karmic/main default-jre-headless 1.6-30ubuntu5 [5,980B]
取得:4 http://jp.archive.ubuntu.com karmic/main ca-certificates-java 20090928 [101kB]
取得:5 http://jp.archive.ubuntu.com karmic-updates/main tzdata-java 2010g-0ubuntu0.9.10 [144kB]
取得:6 http://jp.archive.ubuntu.com karmic/main libgcj-common 1:4.4.1-1ubuntu2 [123kB]
取得:7 http://jp.archive.ubuntu.com karmic/main gcj-4.4-base 4.4.1-5ubuntu2 [109kB]
取得:8 http://jp.archive.ubuntu.com karmic/main libgcj10 4.4.1-5ubuntu2 [11.5MB]
取得:9 http://jp.archive.ubuntu.com karmic/main gcj-4.4-jre-headless 4.4.1-5ubuntu2 [58.1kB]
取得:10 http://jp.archive.ubuntu.com karmic/main gcj-jre-headless 4:4.4.1-1ubuntu2 [1,526B]
取得:11 http://jp.archive.ubuntu.com karmic-updates/main libjline-java 0.9.94-5~ubuntu1 [68.3kB]
取得:12 http://jp.archive.ubuntu.com karmic/main rhino 1.7R2-1ubuntu1 [739kB]
取得:13 http://jp.archive.ubuntu.com karmic-updates/main openjdk-6-jre-headless 6b16-1.6.1-3ubuntu1 [26.1MB]
取得:14 http://jp.archive.ubuntu.com karmic-updates/main icedtea-6-jre-cacao 6b16-1.6.1-3ubuntu1 [294kB]
取得:15 http://jp.archive.ubuntu.com karmic/main libcommons-lang-java 2.4-4 [249kB]
取得:16 http://jp.archive.ubuntu.com karmic/main libcommons-cli-java 1.1-3ubuntu3 [40.5kB]
取得:17 http://jp.archive.ubuntu.com karmic/main libgcj10-awt 4.4.1-5ubuntu2 [81.6kB]
取得:18 http://jp.archive.ubuntu.com karmic/main gcj-4.4-jre 4.4.1-5ubuntu2 [1,060B]
取得:19 http://jp.archive.ubuntu.com karmic/main gcj-jre 4:4.4.1-1ubuntu2 [1,058B]
取得:20 http://jp.archive.ubuntu.com karmic/universe libcommons-compress-java 0~svn604876-1 [78.8kB]
取得:21 http://jp.archive.ubuntu.com karmic/universe bootchart-java 0.10~svn407-3ubuntu1 [199kB]
取得:22 http://jp.archive.ubuntu.com karmic/main gcj-4.4-jre-lib 4.4.1-5ubuntu2 [10.5MB]
取得:23 http://jp.archive.ubuntu.com karmic/universe bootchart 0.90.2-3 [12.3kB]
55.2MB を 10min 36s で取得しました (86.6kB/s)
未選択パッケージ openjdk-6-jre-lib を選択しています。
(データベースを読み込んでいます ... 現在 136357 個のファイルとディレクトリがインストールされています。)
(.../openjdk-6-jre-lib_6b16-1.6.1-3ubuntu1_all.deb から) openjdk-6-jre-lib を展開しています...
未選択パッケージ java-common を選択しています。
(.../java-common_0.30ubuntu5_all.deb から) java-common を展開しています...
未選択パッケージ default-jre-headless を選択しています。
(.../default-jre-headless_1.6-30ubuntu5_i386.deb から) default-jre-headless を展開しています...
未選択パッケージ ca-certificates-java を選択しています。
(.../ca-certificates-java_20090928_all.deb から) ca-certificates-java を展開しています...
未選択パッケージ tzdata-java を選択しています。
(.../tzdata-java_2010g-0ubuntu0.9.10_all.deb から) tzdata-java を展開しています...
未選択パッケージ libgcj-common を選択しています。
(.../libgcj-common_1%3a4.4.1-1ubuntu2_all.deb から) libgcj-common を展開しています...
未選択パッケージ gcj-4.4-base を選択しています。
(.../gcj-4.4-base_4.4.1-5ubuntu2_i386.deb から) gcj-4.4-base を展開しています...
未選択パッケージ libgcj10 を選択しています。
(.../libgcj10_4.4.1-5ubuntu2_i386.deb から) libgcj10 を展開しています...
未選択パッケージ gcj-4.4-jre-headless を選択しています。
(.../gcj-4.4-jre-headless_4.4.1-5ubuntu2_i386.deb から) gcj-4.4-jre-headless を展開しています...
未選択パッケージ gcj-jre-headless を選択しています。
(.../gcj-jre-headless_4%3a4.4.1-1ubuntu2_i386.deb から) gcj-jre-headless を展開しています...
未選択パッケージ libjline-java を選択しています。
(.../libjline-java_0.9.94-5~ubuntu1_all.deb から) libjline-java を展開しています...
未選択パッケージ rhino を選択しています。
(.../rhino_1.7R2-1ubuntu1_all.deb から) rhino を展開しています...
未選択パッケージ openjdk-6-jre-headless を選択しています。
(.../openjdk-6-jre-headless_6b16-1.6.1-3ubuntu1_i386.deb から) openjdk-6-jre-headless を展開しています...
未選択パッケージ icedtea-6-jre-cacao を選択しています。
(.../icedtea-6-jre-cacao_6b16-1.6.1-3ubuntu1_i386.deb から) icedtea-6-jre-cacao を展開しています...
未選択パッケージ libcommons-lang-java を選択しています。
(.../libcommons-lang-java_2.4-4_all.deb から) libcommons-lang-java を展開しています...
未選択パッケージ libcommons-cli-java を選択しています。
(.../libcommons-cli-java_1.1-3ubuntu3_all.deb から) libcommons-cli-java を展開しています...
未選択パッケージ libgcj10-awt を選択しています。
(.../libgcj10-awt_4.4.1-5ubuntu2_i386.deb から) libgcj10-awt を展開しています...
未選択パッケージ gcj-4.4-jre を選択しています。
(.../gcj-4.4-jre_4.4.1-5ubuntu2_i386.deb から) gcj-4.4-jre を展開しています...
未選択パッケージ gcj-jre を選択しています。
(.../gcj-jre_4%3a4.4.1-1ubuntu2_i386.deb から) gcj-jre を展開しています...
未選択パッケージ libcommons-compress-java を選択しています。
(.../libcommons-compress-java_0~svn604876-1_all.deb から) libcommons-compress-java を展開しています...
未選択パッケージ bootchart-java を選択しています。
(.../bootchart-java_0.10~svn407-3ubuntu1_all.deb から) bootchart-java を展開しています...
未選択パッケージ gcj-4.4-jre-lib を選択しています。
(.../gcj-4.4-jre-lib_4.4.1-5ubuntu2_all.deb から) gcj-4.4-jre-lib を展開しています...
未選択パッケージ bootchart を選択しています。
(.../bootchart_0.90.2-3_i386.deb から) bootchart を展開しています...
doc-base のトリガを処理しています ...
Processing 2 added doc-base file(s)...
Registering documents with scrollkeeper...
man-db のトリガを処理しています ...
ureadahead のトリガを処理しています ...
ureadahead will be reprofiled on next reboot
java-common (0.30ubuntu5) を設定しています ...

tzdata-java (2010g-0ubuntu0.9.10) を設定しています ...
libgcj-common (1:4.4.1-1ubuntu2) を設定しています ...

gcj-4.4-base (4.4.1-5ubuntu2) を設定しています ...
libgcj10 (4.4.1-5ubuntu2) を設定しています ...

gcj-4.4-jre-headless (4.4.1-5ubuntu2) を設定しています ...

gcj-jre-headless (4:4.4.1-1ubuntu2) を設定しています ...
libjline-java (0.9.94-5~ubuntu1) を設定しています ...
rhino (1.7R2-1ubuntu1) を設定しています ...
update-alternatives: using /usr/bin/rhino to provide /usr/bin/js (js) in auto mode.

libcommons-lang-java (2.4-4) を設定しています ...
libcommons-cli-java (1.1-3ubuntu3) を設定しています ...
libgcj10-awt (4.4.1-5ubuntu2) を設定しています ...
gcj-4.4-jre (4.4.1-5ubuntu2) を設定しています ...
gcj-jre (4:4.4.1-1ubuntu2) を設定しています ...
libcommons-compress-java (0~svn604876-1) を設定しています ...
bootchart-java (0.10~svn407-3ubuntu1) を設定しています ...
gcj-4.4-jre-lib (4.4.1-5ubuntu2) を設定しています ...
bootchart (0.90.2-3) を設定しています ...
Removing any system startup links for /etc/init.d/zzz-bootchart-stop ...
Removing any system startup links for /etc/init.d/stop-bootchart ...
update-initramfs: Generating /boot/initrd.img-2.6.31-20-generic
update-initramfs: Generating /boot/initrd.img-2.6.31-14-generic

openjdk-6-jre-lib (6b16-1.6.1-3ubuntu1) を設定しています ...
default-jre-headless (1.6-30ubuntu5) を設定しています ...
ca-certificates-java (20090928) を設定しています ...
creating /etc/ssl/certs/java/cacerts...
done.

openjdk-6-jre-headless (6b16-1.6.1-3ubuntu1) を設定しています ...
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/java to provide /usr/bin/java (java) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode.

icedtea-6-jre-cacao (6b16-1.6.1-3ubuntu1) を設定しています ...
libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place

これで、インストールは完了です。
「Bootchart」は OS 起動時に情報を採取するので、再起動する必要があります。
起動時の GRUB で「Space」を押下すれば、「Bootchart」が情報を採取するようです。
(うちの環境では、たまに採取できなかったりします。。。><;)


【グラフ化】
採取された情報は「/var/log/bootchart」配下に「<ホスト名>-<ubuntu のバージョン>-<採取日>-<SEQ>.tgz」で作成されます。
同日に採取された場合は<SEQ>がインクリメントされたファイル名になるので、上書きされることはありません。

グラフ化は「bootchart」コマンドユーティリティを使用します。
「bootchart」でグラフ化したい採取された情報のファイルを指定して実行すれば、カレントディレクトリへグラフ化した画像ファイルが作成されます。

「/var/log/bootchart/ubuntu-karmic-20100331-1.tgz」をグラフ化する場合
$ bootchart /var/log/bootchart/ubuntu-karmic-20100331-1.tgz
Parsing /var/log/bootchart/ubuntu-karmic-20100331-1.tgz
Wrote image: ./ubuntu-karmic-20100331-1.png

作成されたグラフの画像ファイルのデフォルトは「.png」ですが、「-f」で他の画像形式にすることもできます。
また、「-o」でグラフの出力先を変更することもできます。

グラフはただの画像ファイルですので、画像を見ることができるアプリケーション(例えば、画像ビューア)で見ることができます。


では、作成されたグラフを見てみましょうww
bootch_20100331_001.jpg

グラフは
 ・CPU 使用
 ・ディスク I/O
 ・各プロセスの情報
の3段で表示されます。


CPU、ディスク I/O で、下図のように①、②で傾向が分けてみます。
bootch_20100331_002.jpg

①は「Disk utilization」(ディスク使用)が高いですね。
「Disk utilization」が高い時、「CPU(user + sys)」は高くなく、「I/O(wait)」が発生している状態なので、ディスクがネックになっていると言えます。
プロセスも CPU、ディスク I/O と同軸で時系列化されているので、どのプロセスが「ディスク I/O」の負荷を与えているかを追うことができます。


②は①とは逆で、「CPU(user + sys)」が常に高く、「Disk utilization」は時々高くなりますが、全体的にはほとんど高くなってませんね。
ですので、ディスクの I/O はなく、CPU が要求される処理に追いついていない状態なので、CPU ネックになっていると言えます。

こちらも同様に、どのプロセスが CPU 負荷を与えているのかをプロセスで確認できます。

このようにして、システム負荷を与えているプロセスを特定することができます。
プロセスさえ特定できれば、設定で負荷を抑えたり、場合によってはそのプロセスを起動しないようにすれば、パフォーマンス改善できる可能性がでてきますね。





あくまで、ネックになるプロセスなどを特定するだけです。
設定でも負荷を抑えられないプロセスもありますし、停止すると OS に問題を引き起こすプロセスもあります。
例えば、「xorg」が負荷を与えているから、「xorg」を停止させたら、X-Window(GUI 環境) が動かなくなりますよね?

ですので、ネックになるからといって、一概に停止や設定を変更することは避けましょう。


【Bootchart】
URL:http://www.bootchart.org/


コメント
この記事へのコメント
URL :
コメント :
パスワード :
管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
Template designed by アクセラと+αな生活

Powered by .
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。