コンピューターのシャットダウンに非常に長い時間がかかります。
犯人を特定するにはどうすればよいですか?コンピューターがシャットダウンするまで数分待ちたくありません...
シャットダウンにかかる時間を追跡するために使用できるプログラムはありますか?
コンピューターのシャットダウンに非常に長い時間がかかります。
犯人を特定するにはどうすればよいですか?コンピューターがシャットダウンするまで数分待ちたくありません...
シャットダウンにかかる時間を追跡するために使用できるプログラムはありますか?
回答:
Windowsにはパフォーマンスカウンターとイベントトレースが用意されており、アプリケーションでパフォーマンス分析を実行できるため、パフォーマンスの問題の原因を特定できます。その中には、1つの優れたツールキットがあります。WindowsSDKで利用できるWindows Performance Toolkit。
このツールキットxbootmgr.exe
には、Windows On / Off Transition Performance Analysis向けのツールキットがあります。
上記のリンクされたドキュメントでは、すべてのオン/オフ遷移の詳細がすべて説明されていますがxbootmgr
、xperf GUI を使用してシャットダウン遷移をトレースおよび分析する一般的な考え方は次のとおりです。
Windows SDKをダウンロードし、それを使用してWindows Performance Toolkitをインストールします。
管理者としてコマンドプロンプトを開き、次を実行します。
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
将来ヘルプが必要な場合は、xbootmgr -help
と同様に入力できますxperf /?
。
次のような再起動トレースを実行します。
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
ブート後、2分以内にトレースが生成されます。
トレースはに保存されています。トレースを%ProgramFiles%\Microsoft Windows Performance Toolkit
ドラッグするxperf.exe
と、GUIで開きます。
さまざまなグラフを含むGUIが表示されます。左側の矢印を使用して、グラフを追加/削除できます。
グラフを見て、通常とは異なる何かを識別できるかどうかを確認します。必要に応じて、間隔を選択してズームインできます。全体を表示するには、右クリックしてズームを解除します。
各グラフについて、右クリックして、現在選択されている間隔のサマリーテーブルを取得できます。
これらの表で、重量または時間で並べ替えて、最も多く消費しているものを見つけます。列の周りをドラッグできることに注意してください。たとえば、I / Oテーブルを使用すると、最高の使用プロセスと最高の使用パスをチェックアウトできます。
分割線(黄色のヘッダー列)により、右側の列に左側の列の合計が表示されるようになります。したがって、最初にパス、次にプロセスがある場合、ファイルのツリーを開いてどのプロセスがファイルにアクセスしたかを確認し、そのプロセス/ファイルの組み合わせの合計を取得できます。
グラフと表の機能の詳細については、こちらをご覧ください。
何らかの方法でスタックトレースを調べる必要がある場合。別のブートトレースを実行して-stackWalk profile
パラメータを追加し、_NT_SYMBOL_PATHを設定し、任意のグラフを右クリックして、「シンボルのロード」を有効にします。これにより、実際に呼び出している関数を確認できますが、一般的にはシャットダウンにはこれは必要ありません。ただし、ファイアウォールがプログラマーとしてのデバッガを妨害していることを発見するなどのことが可能になります。かなり気の利いた...
幸運を祈ります。犯人が見つかることを願っています。そうでない場合は、トレースをドロップし、私たちはあなたを見てみましょう...
DPCは遅延プロシージャコールであり、割り込みはソフトウェア割り込みであり、どちらもドライバー/ハードウェアに関連していることに注意してください。
実行に長い時間がかかる私のシャットダウン。以下は、トムの答えの私の例です。
最初のグラフは、ディスクI / Oの問題を示しています。
シャットダウンに1分以上かかり、すべてハードドライブI / Oです。
次のグラフ、ディスク使用率は、ドライブがほぼ100%の使用率で最大化されていることを示しています。
最後のグラフは、プロセスごとのディスク使用率を示しています。
フィルターダウン私はそれがすべてによって引き起こされることを実現しWinInit.exe
ます。
ハードドライブグラフのいずれかを右クリックして[ 概要テーブル]を選択すると、どのプロセスがどのファイルにアクセスしたかの詳細を取得できます。
私のシャットダウンの56.4秒は、WinInit
6.7GBをに書き込むことによって費やされましたC:\hiberfil.sys
。
しかし、問題は、 Windowsがシャットダウン時に休止状態ファイルに書き込む理由です。
次に、シャットダウン時にそのページングファイルを消去するためにオンにしたオプションを思い出しました。
だから私はオプションを無効にし、xbootmgr
再度実行します。シャットダウンは22秒です。
これ9s
で、22s
シャットダウンはファイルSystem
への書き込みに費やされunknown
ます。それはさらに調査する価値があるかもしれません。
しかし今のところ、私は1分半のシャットダウンを解決しました。
さらに進んで、22秒間の遅いシャットダウンを解決しました。t =からt = 12s
まで21s
は、100%のディスク使用率を示しましたが、ディスクI / Oはゼロでした。それは不可解でした。
1回のシャットダウン中に、ドライブの1つが回転するというおなじみの音が聞こえました。Windowsがスリープ状態になったディスクにアクセスしようとしたため、シャットダウンが9秒間停止しました。9秒後にドライブが応答し、少し後にマシンの電源が切れました。
皮肉なことに、Windowsがディスクをウェイクアップして、スリープする時間だということを伝えます。
これにより、実際のシャットダウンは13.5秒になります。それはさらに調査する価値があるかもしれません。しかし、今のところ22秒のシャットダウンを解決しました。