ログオンプロセスの前/実行中にパフォーマンスの問題を分析するにはどうすればよいですか?


回答:


35

プロセスモニターの使用

Process Monitorは、実行中のすべてのプロセスのファイルシステム、レジストリ、およびネットワークイベントを収集するツールです。収集されたイベントを分析して、特定の状況でシステム(またはアプリケーション)が内部でどのように動作しているかを判断できます。

この場合、ツールを使用して、ブートプロセス中のどのイベントが完了するまでに長い時間がかかったかを判断します。

  1. Process Monitorをダウンロードして実行します。

  2. [ オプション ]メニューで、[ ブートロギングを有効にする]をオンにします。

    ブートログを有効にします

  3. 表示されるダイアログで、「プロファイリングイベントの生成」をチェックして、「OK」をクリックします。

    プロファイリングイベントを生成する

  4. システムを再起動し、問題を再現します。ログオンプロセスが完了したら、プロセスモニターを起動します。

  5. プロセスモニターは、起動時のアクティビティを収集したことを通知し、そのデータを今すぐ保存するかどうかを尋ねます。[ はい ]をクリックしてプロセスを確認します。

    起動時のアクティビティを保存する

  6. .pmlファイルの適切な保存場所を選択し、データが変換されるのを待ちます。データが読み込まれたら、列ヘッダーの1つでコンテキストメニューを開き、[列の選択... ]をクリックして[ 期間 ]列を表示します

    列を選択...

    ...そして、表示されるダイアログで適切なチェックボックスをチェックします。

    期間チェックボックス

  7. ** FilterメニューからFilter ... *を選択して、新しいフィルターを作成します。

    フィルターメニュー

  8. 値が1 より大きいDuration列のフィルタを作成します。この場合、エントリを含める必要があります。[ 追加]をクリックしてリストにフィルターを追加し、[ OK]で選択を確認します。

    ここに画像の説明を入力してください

  9. この時点で、プロセスモニターのイベントリストには、完了までに1秒以上かかったイベントのみが表示されます。完了までに長時間かかったイベントの[ 期間 ]列を確認する必要があります。

    デモンストレーション用に、完了するまでに10秒以上かかったイベントを選択します。これは、デモ目的で仮想マシンにキャプチャされました。

    イベントの例
    拡大するにはクリックしてください

    これらのイベントは必ずしもログオンプロセスの完了をブロックする犯人である必要はありませんが、WindowsインデックスサービスとAvast Anti-Virusを無効にすることは、このインストールで一見の価値があります。

xperfを使用する

xperfは、Windows Performance Toolkitのパフォーマンス分析ツールです。それを使用して、収集されたデータを分析できるようにすることは困難な場合があります。それでも、必要なデータを収集する方法と、関連するセクションを表示する方法については説明します。

これに必要なWindowsアセスメント&デプロイメントキット(ADK)は、Windows 7以降でのみ機能することに注意してください。

  1. Windows ADKをダウンロードし、少なくともWindows Performance Toolkitコンポーネントをインストールします。

  2. インストールが完了したら、昇格したコマンドプロンプトを開きます。

    昇格したコマンドプロンプト

  3. トレースを配置するディレクトリに移動します。デスクトップのように。

  4. ブート中にトレースをキャプチャするための推奨方法(XBOOTMGR使用して低速ブートをキャプチャする、または低速ブートに起因する低速ログオンをキャプチャする)は次のとおりです。

    xbootmgr -trace boot -traceflags base+latency+dispatcher -stackwalk profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 10

    これで、システムはトレースを開始し、再起動します。

  5. 再起動後、画面の指示に従います。収集プロセスの昇格を許可するよう求められます。プロセスが完了すると、トレースを開始したフォルダーに結果のトレースが表示されます。

    私の場合、デスクトップ上にboot_1.etl(および対応するboot_1.cab)を作成しました。

    Windows Performance Analyzerで.etlファイルを開きます。

分析

トレースを開いた後、ハードウェアにバインドされている問題の可能な兆候を既に見ることができます。グラフエクスプローラー計算ストレージ、およびメモリの概要を簡単に確認すると、さらに分析する必要があるピークが表示されます。

デモンストレーションのために、プロセスごとの使用率グラフを見てみましょう。コンテンツを表示するには、グラフをダブルクリックして分析ビューに追加します。

Windowsパフォーマンスアナライザーの概要
拡大するにはクリックしてください

どのグラフにも関係するピークは表示されないことに注意してください。開始時の青いピークはシステムプロセスに属し、この時点で発生することが予想されます。

CPU使用率グラフの他のピークは、コンテキストでより適切に表示される場合があります。それでは、分析ビューに別のグラフを追加しましょう。探しているグラフは、システムアクティビティセクションにあるブートフェーズグラフです。

ブート段階
拡大するにはクリックしてください

上記のスクリーンショットでは、追加のコンテキストを提供するために、下部に汎用イベントグラフも追加しました。ただし、ここで注意すべきことは、CPU使用率の最初の目に見えるピークがアバストサービスによって引き起こされたという事実です。プロセスモニターの分析で、このプロセスがブートプロセスで大きな時間を費やすプロセスの1つであることが既にわかりました。

ブートフェーズのコンテキストで確認できるようになった今、ここでも確認できるのは、Winlogon Initフェーズの後にピークが発生したことです(すでにデスクトップが表示されている場合に発生するポストブートフェーズでも)。したがって、このプロセスが実際にデスクトップを表示する前の段階で問題を引き起こしているとは考えられません。

探しているのは、Winlogon Initフェーズまたはその周辺で発生するイベントです。これを簡単にするために、ブートフェーズグラフでフェーズを選択できます。これにより、そのフェーズで発生したすべてのグラフのすべてのエントリが強調表示されます。

よりよく見るためのグラフは、サービスグラフです。これらのほとんどは、Winlogon Initフェーズで開始されます。

はじめに述べたように、トレースを開いて問題がすぐに発生しない限り、このデータの分析は複雑になる可能性があります。ただし、これは間違いなく問題を分析するための適切なツールです。状況によっては、スタックトレースを収集して、さらに深く掘り下げることもできます。ただし、このプロセスはこの投稿の範囲外です。

参考文献


WPTのxbootmgrmsfn.org/board/index.php?showtopic=158252)は、開始するのに適したツールです。ProcMonロギングを使用するのは、ブートの特別な段階を詳しく調べるためだけです。
magicandre1981

@ magicandre1981:投稿はまだ終わっていません;)xperfに関する詳細を追加したい場合は、お気軽に編集してください。
デアホッホステープラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.