この記事は、CPU 使用率が持続的に高い原因を特定するのに役立ちます。 プロセスまたはアプリケーションが要求を処理すると、CPU 使用率が増加することを期待できることに注意してください。 ただし、長期間にわたって CPU 使用率が高いレベル (80% 以上) のままである場合は、システムまたはアプリケーションのパフォーマンスが低下します。 そのため、可能であれば、CPU 使用率が高い継続的な原因を理解して問題を修正できることが重要です。
トラブルシューティング ツール
タスク マネージャ
タスク マネージャーを使用して CPU 消費量を表示し、CPU 使用率の高い原因となっているプロセスまたはアプリケーションを特定します。
- Startを選択し、「task」と入力し、検索結果で Task Manager を選択します。
- Task Manager ウィンドウの既定値は Processes タブです。Name 列にプロセス名の一覧が 1 つ表示される場合は、グループ化されたプロセスのインスタンスを展開できます。
- CPU列ヘッダーを選択して、CPU 使用率で一覧を並べ替えます。 ヘッダーに表示される矢印が下をポイントして、データの CPU 消費量が最も高いものから最も低いものに並べ替えられていることを確認します。
プロセスを停止できる場合、または関連するサービスを無効にできる場合は、プロセスまたはサービスを停止します。 次に、これが問題を軽減するかどうかを確認します。
リソース モニター
リソース モニターを使用して CPU 消費量を表示します。
Startを選択し、「resmon」と入力し、検索結果から Resource Monitor を選択します。
リソース モニター ウィンドウで、CPU タブを選択します。
Note
すべてのデータを表示するには、ウィンドウを最大化する必要がある場合があります。
Average CPU列ヘッダーを選択して、全体的な CPU 使用率で一覧を並べ替えます。 ヘッダーに表示される矢印が下をポイントして、データの CPU 消費量が最も高いものから最も低いものに並べ替えられていることを確認します。
いずれかのプロセスが環境の予想よりも高い消費率を示している場合は、問題の原因を特定しようとするときに、最初にこれらの上位プロセスを検討してください。
プロセス エクスプローラー
Process Explorer ツールを使用すると、コンピューターで現在実行されているプロセスの概要を確認できます。これには、プロセスを呼び出したユーザーの詳細や、プロセスが消費しているシステム リソースの合計の量が含まれます。
オペレーティング システム関連のプロセス (システムなど) を確認する場合は、次の手順に従います。
- プロセス エクスプローラーを管理者として実行します。
- プロセスを右クリックし、 Propertiesを選択し、 Threads タブを選択します。
- CPU 使用率が高いスレッドを選択し、 Stack を選択して、実行中の関数を表示します。
Note
スタック情報の結果を改善するには、プロセス エクスプローラーでシンボルを構成します。 これを行うには、次の手順を実行します。
- Debugging Tools for Windows をインストールします。
- プロセス エクスプローラーを管理者として実行します。
- Options メニューを選択し、 シンボルの構成を選択します。
- Dbghelp.dll パスを C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbghelp.dll に変更し、 OK を選択します。
一般的なトラブルシューティングのシナリオ
このセクションでは、CPU 使用率が高いさまざまなプロセスのシナリオについて説明します。
一意に名前が付けられた単数形の Microsoft プロセス
- パフォーマンス モニター ログを収集します。 1 秒から 5 秒のスナップショット間隔を使用します。
- 高い CPU 使用率が発生している間、 Windows パフォーマンス レコーダー (WPR) ログを収集します。
Note
ファイルが非常に迅速に拡張されるため、このログを長時間実行しないでください。 高い CPU 使用率をキャプチャするには、数分間 (3 ~ 5 分) だけログを実行する必要があります。
- 報告された高い CPU 使用率の間に、 ProcDump ツールを 2 回実行します。 実行を数分間隔で離します。
Svchost プロセス
svchost プロセスで CPU 使用率が高く、svchost プロセスに複数のサービスが含まれている場合は、各サービスを分割して独自の svchost プロセスで実行し、CPU 使用率が高い原因となっているサービスを特定する必要があります。 そのためには、次の手順に従います。
管理者特権のコマンド プロンプト ウィンドウを開きます。
共有 svchost プロセスである場合は、各サービスを独自の svchost プロセスに分割します。 そのためには、次のコマンドを実行します。
sc config <service name> type= own
Note
このコマンドでは、 <service name> を実際のサービス名に置き換えます。
サービスを再起動します。
コマンド プロンプトで、
tasklist /svc
を実行して、サービスが独自の svchost プロセスで実行されていることを確認します。重要
問題が解決したら、手順 2 に戻り、実行した内容を元に戻す必要があります。
これを行うには、
sc config <service name> type= own
をコマンド内のsc config <service name> type= share
に置き換えます。 その後、サービスを再起動します。各サービスを独自の svchost プロセスに分割した後、CPU 使用率を上げたり、高い CPU 使用率を消費したりするサービスを特定する必要があります。
パフォーマンス モニター ログを収集します。 1 秒から 5 秒のスナップショット間隔を使用します。
問題のある Svchost プロセスの PID を記録します。
問題の発生中に WPR ログを収集します。
報告された高い CPU 使用率の間に ProcDump を 2 回実行します。 実行を数分間隔で離します。
同じ名前の複数のプロセス インスタンス
プロセスの複数のインスタンスで同じ名前を共有できます。 たとえば、この問題は、リモート デスクトップ プロトコル (RDP) サーバー上のexplorer.exe プロセスで発生する可能性があります。
この問題をトラブルシューティングするには、次の手順に従います。
パフォーマンス モニター ログを収集します。 1 秒から 5 秒のスナップショット間隔を使用します。
問題の発生中に WPR ログを収集します。
報告された高い CPU 使用率の間に ProcDump を 2 回実行します。 実行を数分間隔で離します。
次のコマンドを実行して、問題のあるプロセスの PID を記録します。
tasklist /v /fo csv >Running_Process.txt
サード パーティ製アプリケーション プロセス
3 番目のプロセスが問題の原因として特定された場合は、アプリケーション ベンダーに連絡して、それぞれのプロセスによってコンピューターの CPU 使用率が高くなっている理由を理解する必要があります。
データ コレクション
問題が発生する前
デバッグ診断 2.0 バージョンを使用して、この問題をさらにトラブルシューティングできます。 ツールを使用するには、次の手順に従います。
Debug 診断ツール v2 Update 2 をインストールします。
重要
2.0 バージョンをインストールする前に、デバッグ診断ツールの他のすべてのバージョンをアンインストールします。
Startを選択し、「パフォーマンス モニター」と入力しパフォーマンス モニターを右クリックして管理者として実行します。
パフォーマンス モニターを使用してパフォーマンス カウンター ログを収集し、ログを開始します。
問題が発生した場合
- DebugDiag 2 コレクションを開きます。
- Processes タブを選択し、適切なアプリケーション プールに対応するワーカー プロセスを右クリックし、 [完全なユーザー ダンプの作成]を選択します。
- CPU 使用率が高い間に手順 2 を 3 回繰り返します。
- パフォーマンス モニターログ記録を停止します。
- DebugDiag を使用してデータを圧縮します。 これを行うには、 Tools>増分キャビネット ファイルを作成を選択します。
Microsoft サポートに連絡する必要がある場合は、収集した情報を手元に置いておくことをお勧めします。