
Ubuntu日本語フォーラム

ログインしていません。
質問ではなくて、報告です。 ※ここに記載の内容に保証はありません
https://forums.ubuntulinux.jp/viewtopic.php?id=7589 の中で出てきた高速起動にちょっと燃えてしまいまして、基本的にはVirtualBoxにインストールした10.04を対象にチューニングをしてみたのですが、その中でVirtualBoxで面白い傾向を発見したので報告です。
事の発端は、10.04のインストールを何度か繰り返しているうちに、インストール直後のデフォルトの状態にもかかわらず起動時間が異なるケースがあることに気が付いたことです。
仮想マシンのCPU/メモリの設定をいじったときに、起動時間に変化がみられることが分かりまして、bootchartをつかって色々な組み合わせで起動時間を計測してみました。
Host環境
OS Windows7 64bit
CPU Intel Core 2 Quad Q6600 2.4GHz
Memory 4GB
HDD Hitachi HDP725025GLA380(7200rpm)
VirtualBox 3.1.6
Guest環境
Ubuntu 10.04β1 x86 Kernel 2.6.32-19-generic
高速化チューニング済み(基本的にはいらないdaemonを削っただけ)
計測結果
1 CPU 256MB 19.0秒
512MB 18.9秒
1024MB 33.8秒
2 CPU 256MB 13.0秒
384MB 12.2秒
512MB 12.4秒
768MB 13.0秒
1024MB 23.0秒
3 CPU 512MB 16.2秒
4 CPU 384MB 19.9秒
512MB 20.8秒
1024MB 52.2秒いつも、1CPU/1024MBの指定で仮想マシンを作成していたんですが、なんともはやな結果が出ました。
起動時間だけをみると2CPU/384MBが最速なんですが、起動後のアプリ利用とかを考えると512MBにしておいたほうがバランスはいいような気がします。
メモリの増加に伴って起動時間がかかるのは、もしかしたらホスト側のメモリ確保の都合かもしれませんが、いずれにしても割り当てメモリを増やすと起動に時間がかかるようになるということが分かります。
また、仮想マシンだからということが理由かもしれませんが、2CPUがベストパフォーマンスで3/4にすると返って時間がかかるようになるというのも興味深いところです。
VirtualBoxで作業をする人は参考にしてみてください。
12~3秒で起動って下手なアプリの起動よりも速いんですけど・・・
オフライン
あの、その高速起動に関して、詳しく教えてもらえませんか?
オフライン
#1でも書いた通り、基本的にはいらないdaemonの起動を止めただけです。
どのdaemonと止めたかは秘密です・・・というのは冗談ですが、どれが必要でどれが必要でないかは各環境によって異なるのでご自身で調べてみることをおすすめします。
参考までに止めたもの
plymouth関連 tty[2-6] bluetooth cups dns-clean fancontrol ondemand pcmciautils pppd-dns rsync saned screen-cleanup speech-dispatcher 等
しかし、10.04の場合はupstartでの起動でかなり最適化がなされているので、この手法では苦労したほどの効果が出ないということが改めて判明しました。
それよりもこの実験をすすめる中で、Virtualboxの設定によってこれだけ大きな差が出ることが分かったのが収穫でした。
実際に検証してみた訳ではないのですが、実機でも似たような傾向が出る可能性があると思うのです。
ちなみに私がプライベートで所有しているノート(Celeron SU3500 1.2GHz/ Mem 4GB / HDD SATA2 5400rpm)に入れてある10.04では、上記と同様のdaemon停止状態で起動時間がちょうど30秒前後です。
オフライン
9.10のbootchartでちょっとおかしなことを見つけました。
bootchartはデスクトップログイン完了=ユーザー操作ができるようになるまでの時間を計測しているものだとばかり思っていましたが、9.10のbootchartではどうやら異なるようです。
9.10での計測で起動時間が1:15とかでていて、でも体感上そんなにかかっていないよなと思っていたのですが、自動ログイン後にユーザー操作ができるようになった直後にアプリ起動をすると、そのアプリの起動もbootchartのグラフに表示される=bootchartが示した起動時間よりも早い段階で操作ができるようになっているということが分かりました。
ちなみにこの環境で、自分で起動したアプリは0:20=20秒の段階で起動が記録されていたので、実際の起動時間は1:15ではなく、0:20未満だったのだと推測されます。
上記の20秒は仮想マシンでの数字ですが、実機でもbootchartでは1:16となっているものが、ユーザー起動アプリが0:36で起動されるのを確認しました。
ちなみに10.04のbootchartではユーザー起動のアプリはグラフには出てこないので、純粋に起動時間とイコールと考えてよさそうです。
どなたか、bootchartが何を持って起動完了と判断しているかご存知の方いますか?
オフライン
自動起動するアプリではないでしょうか。
操作できるようになってからも、キーリングデーモンなどが起動していると思うので。
オフライン
分かりました。
/etc/init/bootchart.conf に書かれていました。
9.10でも、10.04でもupstartで起動したrcが終了した時点から45秒後にbootchartのログ作成が終了します。
それで、その後に集計・グラフ化する際の処理が9.10と10.04で異なっていて、9.10ではログをそのまま集計、10.04では指定されたプロセス(compizとかmetacityとか)を起動した後でidleが発生した後のログより手前のみを集計という指定がbootchart.confに書かれていました。(9.10のbootchartではこの処理はできない)
つまるところ、bootchartの結果を9.10と10.04で単純比較してはいけないということになるかと思います。
9.10はbootchartのおかげで損をしている可能性が出てきました・・・
オフライン