Vista版 bootvis
bootvisはXPの起動プロセスの詳細を分析し、また起動を高速化する(かもしれない)機能を持っていることで有名なツール。わたしも高速化機能に加え、ブートプロセスの詳細を意味もわからず眺めるのが好きで、日本語化パッチなどを作ったりしていた。
ところでVistaではbootvisは使うことが出来ない。代わりにWindows Performance Tools Kitを利用することができる。これにはいくつかのロギングツールと、そのログファイルのビューアが含まれる。
早速インストールしてみよう
システム要件として、OSはWindows Vista (RTM, SP1) and Windows Server 2008. アーキテクチャはnative 32bit x86, native 64bit x64(and native 64bit IA64 は試験的)となっている。
インストールを完了すると、スタートメニューにビューア(xperfview.exe)へのリンクが作成される。起動するとこんな感じのGUIが表示される。
アイコンが!!
さて、まだ表示するべきログがないので、Windows再起動のログを収集してみる。準備として、必須ではないが、自動でログインしてくれたほうが分析しやすいので、自動ログオンを構成することを推奨する。
また、ReadyBoostサービスが[自動]になっていないと次のステップで失敗するので注意。
ブート関連のロギングには xbootmgr.exe を使用する。管理者権限でコンソールを開き、以下を実行すると reboot の trace を行う。つまり再起動する(オプションの意味はヘルプを参照してね)。
>xbootmgr -trace rebootCycle -noPrepReboot
ちなみにPATH環境変数にインストールディレクトリのパスが追加されるため、いちいちcdする必要は無い。
再起動してログインが完了すると、さらに120秒間のロギングが行われる。
ロギングが完了すると管理者権限を要求してくるので昇格させる。
上記ウィンドウが消えたらスタートメニューからビューアを起動し、openメニューでログファイルを開く。ログファイルの場所は、xbootmgrコマンドを実行したディレクトリ。
きた bootvis風きた!
左側に表示されている種類のグラフを表示できる。
シンボルで詳細情報の取得する
「CPU Sampling by CPU」グラフを右クリックして「Load Symbols」にチェックした後、「Summary Table」を表示させる。
Unknownの文字がいっぱい。シンボルが無い場合、使用されたAPIまでは調べることが出来ない。
API情報まで取得するには、ビューアがデバッグシンボルを参照できる必要がある。以下のシステム環境変数を設定する。
環境変数名前:_NT_SYMBOL_PATH
値:SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols *1
ビューアを再起動し、同じく「Summary Table」を表示させると、必要なシンボルをhttp://msdl.microsoft.com/download/symbolsからC:\Symbolsにダウンロードするため、プロンプトが表示されるので [Yes]
起動を最適化してみる
最適化を行うには、boot(もしくは rebootCycle)に -prepSystem オプションを渡す。
xbootmgr -trace boot -prepSystem
実行すると、計3回再起動する。2度再起動したあと、処理中を示すウインドウが表示されっぱなしになるが、この間はデフラグが実行されている*2ので10分程度待つ。完了すると3回目の再起動が行われる。
さて、上記ログから起動時間の指標として userinit.exe の終了時間を参照してみる。プロセスの情報は「Process Lifetimes」で確認することが出来るので、この結果を最適化前後で比較してみる。
:プロセス名 (PID) , 開始時間 , 終了時間 , 活動時間 前:userinit.exe (1812), 38.242937300, 64.818710199, 26.575772899 後:userinit.exe (1832), 20.089975401, 53.429253159, 33.339277758 ▲18.152961899▲11.389457040 +6.763504859
ちゃんと速くなってるっぽい。たぶん。まあ、その辺は興味がある人は試してみれば良いのではないかと。
ちなみに2008では最適化機能は動作しない仕様。残念。
一連の処理を途中で中止したいときは -remove オプションを渡す。
xbootmgr -remove
実行中の処理が終わった段階でメッセージが表示され、以降の再起動などを含む処理がキャンセルされる。
追記 2009/02/12
起動速度関連として、KB958909 Windows Vista にアンチウイルスソフトウェアをインストールすると、ログオンに時間がかかるようになり、Setupapi.app.log ファイルが巨大化するも確実に対応すること。私の環境では45秒ほど短縮された。
(beforeではログオン処理開始まで40秒程度空きがある。この間はservices.exeが特定の関数を継続して呼び出しているようだ。)