このトピックでは、Windows インスタンスにおける高い CPU 使用率のトラブルシューティングと解決方法について説明します。
問題の説明
Windows インスタンスの CPU 使用率が 80% 以上になると、高いと見なされます。
考えられる原因
高い CPU 使用率は、以下の原因によって引き起こされる可能性があります。
インスタンスがウイルスまたはトロイの木馬に感染している。
サードパーティ製のウイルス対策ソフトウェアがインスタンス上で実行されている。
インスタンス上のアプリケーションまたはドライバーが異常であるか、アプリケーションの I/O 使用量が高い、または割り込み率が高い。
ソリューション
ステップ 1:問題の特定
Windows インスタンスでは、タスクマネージャーやリソースモニターなどのツールを使用して、高い CPU 使用率の原因を特定できます。このトピックでは、Windows Server 2022 オペレーティングシステムのリソースモニターを例として使用します。
このトピックでは、Windows Server 2022 システムでリソースモニターを使用して、高い CPU 使用率の原因を特定する方法について説明します。
VNC 接続を使用して Simple Application Server に接続します。詳細については、「サーバーに接続してレスキュー (コンソール)」をご参照ください。
デスクトップの下部にある [検索] ボタンをクリックし、「
リソースモニター」と入力して [OK] をクリックします。[リソースモニター] ウィンドウで、高い CPU 使用率の原因となっているプロセスを確認します。

プロセスのプロセス ID (PID) と名前を記録します。
[タスクマネージャー] ウィンドウを開き、[詳細] タブをクリックして、記録した名前と PID に基づいてプロセスを見つけます。各プロセス名を右クリックし、[ファイルの場所を開く] を選択して、そのプロセスが悪意のあるプログラムであるかどうかを確認します。
ステップ 2:問題の分析と解決
高い CPU 使用率の原因となっているプロセスが通常のプロセスか異常なプロセスかを判断し、対応する手順に従って問題を解決します。
考えられる原因 | 操作 |
通常のプロセス | 一般的に、頻繁なビジネスアクセスや Windows Update サービスなどの Windows サービスは、高いネットワークトラフィックと CPU リソースを消費する可能性があります。 説明
|
異常なプロセス | 異常に高い CPU 使用率は、悪意のあるウイルスやトロイの木馬によって引き起こされる可能性があります。サードパーティの悪意のあるプログラムが、オペレーティングシステムプロセスである svchost.exe や Tcpsvcs.exe に偽装し、高い CPU 使用率を引き起こすことがあります。異常なプロセスを手動で見つけて強制終了する必要があります。 説明 プロセスがウイルスかトロイの木馬か判断できない場合は、インターネットでプロセス名を検索して確認してください。プロセスを削除する前に、スナップショットを作成してデータをバックアップしてください。詳細については、「スナップショットの作成」をご参照ください。
|
一般的なツール
以下のセクションでは、Windows で高い CPU 使用率の原因を特定するために使用されるツールについて説明します。
タスクマネージャー
タスクマネージャーは実行中のアプリケーションのリストを表示し、CPU 使用率の高いアプリケーションを特定するのに役立ちます。次の図は、タスクマネージャーのページを示しています。

[パフォーマンス] タブで CPU 使用率を確認する際、CPU 使用率のグラフを右クリックし、 を選択します。
次の図は、2 つの論理 CPU の使用率を示しています。

単一プロセスの CPU 使用率がほぼ 100% に急上昇し、他のプロセスの CPU 使用率に大きな変化がない場合、原因はネットワーク I/O 処理である可能性があります。
リソースモニター
リソースモニターは、CPU 使用率をグラフィカルに表示します。また、ハンドルやモジュールによって対応するプロセスを検索することもできます。

Process Explorer
Process Explorer は Microsoft Sysinternals のツールです。正しいシンボルを設定することで、アプリケーションのスレッドの呼び出しスタックを確認し、問題のある可能性のあるドライバーを特定できます。Process Explorer ツールをダウンロードするには、「Process Explorer」をご参照ください。
次の図は、Process Explorer ツールのページを示しています。

パフォーマンスモニター
パフォーマンスモニターは、さまざまなコンポーネントからパフォーマンスカウンターを収集するための Microsoft のツールです。システムの CPU リソース消費を分析するために、いくつかのカウンターを確認できます。
パフォーマンスに関連する 3 つのコアパラメーターは次のとおりです:
\Processor(_Total)\% Processor Time:プロセッサが非アイドルスレッドを実行した時間の割合です。\Processor(_Total)\% Processor Time=\Processor(*)\% User Time+\Processor(*)\% Privileged Timeです。\Processor(*)\% User Time:プロセッサがプログラムコードの実行に費やした時間を示します。このカウンターは、どのアプリケーションまたは関数呼び出しがより多くの時間を消費しているかを判断するのに役立ちます。\Processor(*)\% Privileged Time:アプリケーションがカーネル内でシステムコール (ドライバー、I/O リクエストパケット (IRP)、コンテキストスイッチなど) の実行に費やした時間です。オペレーティングシステムがPrivileged Timeに 30% 以上の時間を費やしている場合、インスタンスは高い I/O スループットに関連する操作を実行しています。% Privileged Timeが高い場合は、さらに% DPC Time、% Interrupt Time、およびContext Switches/secを確認する必要があります。高い
% DPC Timeと% Interrupt Timeの値は、不明なデバイスが多くの操作を実行しているか、パフォーマンスが低いことを示します。高い
Context Switchの値は、カーネルがプロセスまたはスレッド間を頻繁に切り替えていることを示します。詳細については、「The Case of the 2 Million Context Switches」および「Mark Russinovich's The Case of the System Process CPU Spikes」をご参照ください。高い
Context Switches/secの値は、多くのスレッドが準備完了状態にあることを示します。問題を解決するには、スレッドの数を減らす必要があります。