Windowsの低速シャットダウンの原因を特定するにはどうすればよいですか?


30

コンピューターのシャットダウンに非常に長い時間がかかります。

犯人を特定するにはどうすればよいですか?コンピューターがシャットダウンするまで数分待ちたくありません...

シャットダウンにかかる時間を追跡するために使用できるプログラムはありますか?


1
私たちはあなたのシステムの設定方法と、バックグラウンドで実行することができるものは考えていない
ランダム

1
OK ...他の私の鋸誰かが(自分のためにちょっと残念に感じた)...私は非常に長く、完全な答えを構成されたようにそれを削除し、その後、それを尋ねた
wizlog

あなたはいつでもブログにそれを提案することができます
ランダム

2
電源ボタンを数秒間押し続けます。
ダニエルRヒックス

5
この質問は有効です。彼の問題が解決されるように、客観的に答えることができます。あいまいなものはありません(問題は、シャットダウン時間が長くかかることです)、あいまい(シャットダウンを高速化することを望んでいます)、不完全です(詳細は必要ありません、もちろん、各コンピューターは異なりますが、それはテクニックを作りません)犯人を特定するために)、非常に広い(あなたはそう思うかもしれませんが、シャットダウンのトラブルシューティングの他の質問は表示されませんので、これは本当に価値のある質問です;他のことをスピードアップしたい場合は広いと思います)または修辞的(xperfを含む)。
タマラWijsman

回答:


31

Windowsにはパフォーマンスカウンターイベントトレースが用意されており、アプリケーションでパフォーマンス分析を実行できるため、パフォーマンスの問題の原因を特定できます。その中には、1つの優れたツールキットがあります。WindowsSDKで利用できるWindows Performance Toolkit

このツールキットxbootmgr.exeには、Windows On / Off Transition Performance Analysis向けのツールキットがあります。

上記のリンクされたドキュメントでは、すべてのオン/オフ遷移の詳細がすべて説明されていますがxbootmgr、xperf GUI を使用してシャットダウン遷移をトレースおよび分析する一般的な考え方は次のとおりです。

  1. Windows SDKをダウンロードし、それを使用してWindows Performance Toolkitをインストールします。

  2. 管理者としてコマンドプロンプトを開き、次を実行します。

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. 将来ヘルプが必要な場合は、xbootmgr -helpと同様に入力できますxperf /?

  4. 次のような再起動トレースを実行します。

    xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot

  5. ブート後、2分以内にトレースが生成されます。

  6. トレースはに保存されています。トレースを%ProgramFiles%\Microsoft Windows Performance Toolkitドラッグするxperf.exeと、GUIで開きます。

  7. さまざまなグラフを含むGUIが表示されます。左側の矢印を使用して、グラフを追加/削除できます。

  8. グラフを見て、通常とは異なる何かを識別できるかどうかを確認します。必要に応じて、間隔を選択してズームインできます。全体を表示するには、右クリックしてズームを解除します。

  9. 各グラフについて、右クリックして、現在選択されている間隔のサマリーテーブルを取得できます

  10. これらの表で、重量または時間で並べ替えて、最も多く消費しているものを見つけます。列の周りをドラッグできることに注意してください。たとえば、I / Oテーブルを使用すると、最高の使用プロセスと最高の使用パスをチェックアウトできます。

    分割線(黄色のヘッダー列)により、右側の列に左側の列の合計が表示されるようになります。したがって、最初にパス、次にプロセスがある場合、ファイルのツリーを開いてどのプロセスがファイルにアクセスしたかを確認し、そのプロセス/ファイルの組み合わせの合計を取得できます。

  11. グラフと表の機能の詳細については、こちらをご覧ください

  12. 何らかの方法でスタックトレースを調べる必要がある場合。別のブートトレースを実行して-stackWalk profileパラメータを追加し、_NT_SYMBOL_PATH設定し、任意のグラフを右クリックして、「シンボルのロード」を有効にします。これにより、実際に呼び出している関数を確認できますが、一般的にはシャットダウンにはこれは必要ありません。ただし、ファイアウォールがプログラマーとしてのデバッガを妨害していることを発見するなどのことが可能になります。かなり気の利いた...

幸運を祈ります。犯人が見つかることを願っています。そうでない場合は、トレースをドロップし、私たちはあなたを見てみましょう...

DPCは遅延プロシージャコールであり、割り込みはソフトウェア割り込みであり、どちらもドライバー/ハードウェアに関連していることに注意してください。


1
驚くほど役に立つ答え。ETWのチュートリアルは非常に便利です。これはWindowsの領域であり、ドキュメントもガイドもありません。
イアン・ボイド

@Tom Wijsmanリンクを更新する必要があります
モアブ

これは、Windowsアセスメント&デプロイメントキットの一部であり、リンクは、たとえばmsdn.microsoft.com/en-us/windows/hardware/commercialize/test/…または「Windows ADK」を検索することで見つけることができます。インストール中に、Performance Toolkitを選択するだけで可能です。
アンドレアスレイフ

今ではある、それはまだSDKで提供されていますので、...一部。
タマラWijsman 16年

22

実行に長い時間がかかる私のシャットダウン。以下は、トムの答えの私の例です。

最初のグラフは、ディスクI / Oの問題を示しています。

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

シャットダウンに1分以上かかり、すべてハードドライブI / Oです。

次のグラフ、ディスク使用率は、ドライブがほぼ100%の使用率で最大化されていることを示しています。

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

最後のグラフは、プロセスごとのディスク使用率を示しています

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

フィルターダウン私はそれがすべてによって引き起こされることを実現しWinInit.exeます。

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

ハードドライブグラフのいずれかを右クリックして[ 概要テーブル]を選択すると、どのプロセスがどのファイルにアクセスしたかの詳細を取得できます。

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

私のシャットダウンの56.4秒は、WinInit6.7GBをに書き込むことによって費やされましたC:\hiberfil.sys


しかし、問題は Windowsがシャットダウン時に休止状態ファイルに書き込む理由です。

次に、シャットダウン時にそのページングファイル消去するためにオンにしたオプションを思い出しました。

  • スタート->実行-> SecPol.msc
    • セキュリティ設定、ローカルポリシー、セキュリティオプション
    • シャットダウン:仮想メモリのページファイルをクリア

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

だから私はオプションを無効にし、xbootmgr再度実行します。シャットダウンは22秒です。

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

これ9sで、22sシャットダウンはファイルSystemへの書き込みに費やされunknownます。それはさらに調査する価値があるかもしれません。

しかし今のところ、私は1分半のシャットダウンを解決しました。


さらに進んで、22秒間の遅いシャットダウンを解決しました。t =からt = 12sまで21sは、100%のディスク使用率を示しましたが、ディスクI / Oはゼロでした。それは不可解でした。

1回のシャットダウン中に、ドライブの1つが回転するというおなじみの音が聞こえました。Windowsがスリープ状態になったディスクにアクセスしようとしたため、シャットダウンが9秒間停止しました。9秒後にドライブが応答し、少し後にマシンの電源が切れました。

皮肉なことに、Windowsがディスクをウェイクアップして、スリープする時間だということを伝えます。

これにより、実際のシャットダウンは13.5秒になります。それはさらに調査する価値があるかもしれません。しかし、今のところ22秒のシャットダウンを解決しました。


1
+1あなたのケースでそれを解決してくれてうれしい、そして素敵な投稿!
タマラWijsman

1
これらの答えはブログ投稿に値しますか?;)
Ivo Flipse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.