ログオンプロセスの前または最中に発生するパフォーマンスの問題を分析するにはどうすればよいですか?
ログオンプロセスの前または最中に発生するパフォーマンスの問題を分析するにはどうすればよいですか?
回答:
Process Monitorは、実行中のすべてのプロセスのファイルシステム、レジストリ、およびネットワークイベントを収集するツールです。収集されたイベントを分析して、特定の状況でシステム(またはアプリケーション)が内部でどのように動作しているかを判断できます。
この場合、ツールを使用して、ブートプロセス中のどのイベントが完了するまでに長い時間がかかったかを判断します。
Process Monitorをダウンロードして実行します。
[ オプション ]メニューで、[ ブートロギングを有効にする]をオンにします。
表示されるダイアログで、「プロファイリングイベントの生成」をチェックして、「OK」をクリックします。
システムを再起動し、問題を再現します。ログオンプロセスが完了したら、プロセスモニターを起動します。
プロセスモニターは、起動時のアクティビティを収集したことを通知し、そのデータを今すぐ保存するかどうかを尋ねます。[ はい ]をクリックしてプロセスを確認します。
.pml
ファイルの適切な保存場所を選択し、データが変換されるのを待ちます。データが読み込まれたら、列ヘッダーの1つでコンテキストメニューを開き、[列の選択... ]をクリックして[ 期間 ]列を表示します。
...そして、表示されるダイアログで適切なチェックボックスをチェックします。
** FilterメニューからFilter ... *を選択して、新しいフィルターを作成します。
値が1 より大きいDuration列のフィルタを作成します。この場合、エントリを含める必要があります。[ 追加]をクリックしてリストにフィルターを追加し、[ OK]で選択を確認します。
この時点で、プロセスモニターのイベントリストには、完了までに1秒以上かかったイベントのみが表示されます。完了までに長時間かかったイベントの[ 期間 ]列を確認する必要があります。
デモンストレーション用に、完了するまでに10秒以上かかったイベントを選択します。これは、デモ目的で仮想マシンにキャプチャされました。
これらのイベントは必ずしもログオンプロセスの完了をブロックする犯人である必要はありませんが、WindowsインデックスサービスとAvast Anti-Virusを無効にすることは、このインストールで一見の価値があります。
xperfは、Windows Performance Toolkitのパフォーマンス分析ツールです。それを使用して、収集されたデータを分析できるようにすることは困難な場合があります。それでも、必要なデータを収集する方法と、関連するセクションを表示する方法については説明します。
これに必要なWindowsアセスメント&デプロイメントキット(ADK)は、Windows 7以降でのみ機能することに注意してください。
Windows ADKをダウンロードし、少なくともWindows Performance Toolkitコンポーネントをインストールします。
インストールが完了したら、昇格したコマンドプロンプトを開きます。
トレースを配置するディレクトリに移動します。デスクトップのように。
ブート中にトレースをキャプチャするための推奨方法(XBOOTMGRを使用して低速ブートをキャプチャする、または低速ブートに起因する低速ログオンをキャプチャする)は次のとおりです。
xbootmgr -trace boot -traceflags base+latency+dispatcher -stackwalk profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 10
これで、システムはトレースを開始し、再起動します。
再起動後、画面の指示に従います。収集プロセスの昇格を許可するよう求められます。プロセスが完了すると、トレースを開始したフォルダーに結果のトレースが表示されます。
私の場合、デスクトップ上にboot_1.etl
(および対応するboot_1.cab
)を作成しました。
Windows Performance Analyzerで.etl
ファイルを開きます。
トレースを開いた後、ハードウェアにバインドされている問題の可能な兆候を既に見ることができます。グラフエクスプローラーの計算、ストレージ、およびメモリの概要を簡単に確認すると、さらに分析する必要があるピークが表示されます。
デモンストレーションのために、プロセスごとの使用率グラフを見てみましょう。コンテンツを表示するには、グラフをダブルクリックして分析ビューに追加します。
どのグラフにも関係するピークは表示されないことに注意してください。開始時の青いピークはシステムプロセスに属し、この時点で発生することが予想されます。
CPU使用率グラフの他のピークは、コンテキストでより適切に表示される場合があります。それでは、分析ビューに別のグラフを追加しましょう。探しているグラフは、システムアクティビティセクションにあるブートフェーズグラフです。
上記のスクリーンショットでは、追加のコンテキストを提供するために、下部に汎用イベントグラフも追加しました。ただし、ここで注意すべきことは、CPU使用率の最初の目に見えるピークがアバストサービスによって引き起こされたという事実です。プロセスモニターの分析で、このプロセスがブートプロセスで大きな時間を費やすプロセスの1つであることが既にわかりました。
ブートフェーズのコンテキストで確認できるようになった今、ここでも確認できるのは、Winlogon Initフェーズの後にピークが発生したことです(すでにデスクトップが表示されている場合に発生するポストブートフェーズでも)。したがって、このプロセスが実際にデスクトップを表示する前の段階で問題を引き起こしているとは考えられません。
探しているのは、Winlogon Initフェーズまたはその周辺で発生するイベントです。これを簡単にするために、ブートフェーズグラフでフェーズを選択できます。これにより、そのフェーズで発生したすべてのグラフのすべてのエントリが強調表示されます。
よりよく見るためのグラフは、サービスグラフです。これらのほとんどは、Winlogon Initフェーズで開始されます。
はじめに述べたように、トレースを開いて問題がすぐに発生しない限り、このデータの分析は複雑になる可能性があります。ただし、これは間違いなく問題を分析するための適切なツールです。状況によっては、スタックトレースを収集して、さらに深く掘り下げることもできます。ただし、このプロセスはこの投稿の範囲外です。