Process Monitor でボトルネックを特定する
クライアントの動作が重いとき、ファイルアクセスなのか、レジストリ等のアクセスなのかは問題の切り分けでは非常に重要ですが、その得手作業は大変な作業です。
今日はこのような問題を調査するのに便利なProcess Monitor を紹介します。有名なツールなので知っている方も多いと思います。Process Monitorの最新版はこちらからダウンロードしてください
Process Monitor (Microsoft Windows Sysinternals)
私の記憶が確かなら、Process MonitorはFileアクセスを追っかけるFilemonとレジストリアクセスを追っかけるRegmonと言うツールが一緒になってファイルやレジストリやネットワークを追いかけるツールで、UNIXで言えば、trussのようなツールのイメージでした。
要するに、詳しい情報は取れるかもしれないけど、何か自分の中で想定要因や仮説が無いと、とてもログ出力が多すぎて役に立たない、と言うイメージでした。
しかし、最近のバージョンはレポート機能が充実してパフォーマンスの問題などのボトルネック特定に非常に便利なレポート機能が数多く含まれていて私も色々な問題の調査に使っています。
今日はこのツールを使って、Notesのスタンダード版の起動の問題を調べてみましょう。
ベンチマークをすることが目的ではないので詳細なテスト条件は重要ではないのですが、一応以下のような設定を行った環境でテストをしています。
テスト条件
・ Notesプリローダー(nntspreld.exe)はmsconfigで事前に無効化
・ アンチウイルスソフトの設定済み(詳細はこちら)
・ JVMの設定は設定済み(詳細はこちら)
・ サイドバーの表示は無効化
・ Lotus Notes 8.5.2 + Windows XP SP3
・ OS起動直後のNotes起動(いわゆるコールドスタート)
Process Monitorでは初めにログの負荷を下げるためにFilter条件を決めることが重要です。
ここではNotes関連プロセスのログを取りたいので以下のようなFilter 条件で取得します。

今回指定したFilterは以下のような感じです。実質的にはnotes2.exeとnlnotes.exeくらいでいいんじゃないかと思うのですが、念のため。
Process name contains:
notes2.exe
notes.exe
nlnotes.exe
ntaskldr.exe
nsenddiag.exe
nsd.exe
ndyncfg.exe
nfileret.exe
この状態でクリックしてNotesクライアントを起動して、ワークスペースが表示されたくらいでテストを囚虜します。終了するにはメニューから[File]-[Capture Events]のチェックを外すとログが終了します。
このようにして採取したログはどのように解析すればいいのでしょうか?色々な方法がありますが、最近のバージョンのProcess Monitorはレポート機能も非常に充実しているのでその機能を使うのがよいのではないかと思います。始めにFile Summaryを見てみましょう。メニューから[Tools]-[File Summary]を選択して起動します。
以下の画面ショットも参考にしてください。(画像はクリックすると拡大します。)

ここではこのようにアクセスしたファイルごとに使用した合計時間を表示してくれます。(Total Time列でソートしました)

ファイル名を見てみると *xpdplat_jvm* のようなファイルが多いですが、これはExpeditorクライアントのJVM キャッシュでしょうか。
同様にして[Tools]-[Process Activity Summary] ではプロセスごとにCPU使用率やメモリの使用量などの推移をグラフィカルに表示してくれます。

FileのI/OやCPUの使用率がnotes2.exeに集中している様子が見て分かると思います。
このような分析はNotesクライアント以外でもブラウザの起動が遅い問題を切り分けたり何となくCPU使用率が高いプロセスがどの処理に取られているか辺りを付けたりする上でも非常に有益です。
是非活用してみてください。
今日はこのような問題を調査するのに便利なProcess Monitor を紹介します。有名なツールなので知っている方も多いと思います。Process Monitorの最新版はこちらからダウンロードしてください
Process Monitor (Microsoft Windows Sysinternals)
私の記憶が確かなら、Process MonitorはFileアクセスを追っかけるFilemonとレジストリアクセスを追っかけるRegmonと言うツールが一緒になってファイルやレジストリやネットワークを追いかけるツールで、UNIXで言えば、trussのようなツールのイメージでした。
要するに、詳しい情報は取れるかもしれないけど、何か自分の中で想定要因や仮説が無いと、とてもログ出力が多すぎて役に立たない、と言うイメージでした。
しかし、最近のバージョンはレポート機能が充実してパフォーマンスの問題などのボトルネック特定に非常に便利なレポート機能が数多く含まれていて私も色々な問題の調査に使っています。
今日はこのツールを使って、Notesのスタンダード版の起動の問題を調べてみましょう。
ベンチマークをすることが目的ではないので詳細なテスト条件は重要ではないのですが、一応以下のような設定を行った環境でテストをしています。
テスト条件
・ Notesプリローダー(nntspreld.exe)はmsconfigで事前に無効化
・ アンチウイルスソフトの設定済み(詳細はこちら)
・ JVMの設定は設定済み(詳細はこちら)
・ サイドバーの表示は無効化
・ Lotus Notes 8.5.2 + Windows XP SP3
・ OS起動直後のNotes起動(いわゆるコールドスタート)
Process Monitorでは初めにログの負荷を下げるためにFilter条件を決めることが重要です。
ここではNotes関連プロセスのログを取りたいので以下のようなFilter 条件で取得します。

今回指定したFilterは以下のような感じです。実質的にはnotes2.exeとnlnotes.exeくらいでいいんじゃないかと思うのですが、念のため。
Process name contains:
notes2.exe
notes.exe
nlnotes.exe
ntaskldr.exe
nsenddiag.exe
nsd.exe
ndyncfg.exe
nfileret.exe
この状態でクリックしてNotesクライアントを起動して、ワークスペースが表示されたくらいでテストを囚虜します。終了するにはメニューから[File]-[Capture Events]のチェックを外すとログが終了します。
このようにして採取したログはどのように解析すればいいのでしょうか?色々な方法がありますが、最近のバージョンのProcess Monitorはレポート機能も非常に充実しているのでその機能を使うのがよいのではないかと思います。始めにFile Summaryを見てみましょう。メニューから[Tools]-[File Summary]を選択して起動します。
以下の画面ショットも参考にしてください。(画像はクリックすると拡大します。)

ここではこのようにアクセスしたファイルごとに使用した合計時間を表示してくれます。(Total Time列でソートしました)

ファイル名を見てみると *xpdplat_jvm* のようなファイルが多いですが、これはExpeditorクライアントのJVM キャッシュでしょうか。
同様にして[Tools]-[Process Activity Summary] ではプロセスごとにCPU使用率やメモリの使用量などの推移をグラフィカルに表示してくれます。

FileのI/OやCPUの使用率がnotes2.exeに集中している様子が見て分かると思います。
このような分析はNotesクライアント以外でもブラウザの起動が遅い問題を切り分けたり何となくCPU使用率が高いプロセスがどの処理に取られているか辺りを付けたりする上でも非常に有益です。
是非活用してみてください。
コメント
Re: Process Monitor でボトルネックを特定する
むしろ遅くなったPCもあります。
プリローダは有効なのでしょうか?
2011-11-23 08:20 ノーツヘビーユーザー URL 編集
Re: Process Monitor でボトルネックを特定する
2011-12-01 10:08 中島 基晶 URL 編集