もくじ
CPU使用率が高くなる原因
- 特定のプロセスが正当な処理で高くなった
- プログラムの不具合やバグで高くなった
- Windows Updateのプログラム上の不具合
- ウィルス、マルウェアで高くなる
- システムのスペックが低い。少しの負荷でCPU使用率が高くなる
Windows Updateの不具合の場合
WindowsUpdateがメモリを大量に消費し失敗する件
http://zacodesign.net/blog/?p=1334
svchost.exe
各種サービスを起動するための親となるプロセス。svchost.exeを経由して各種のネットワーク・サービスが起動する。グループになっている。
OS内の各種サービスを起動するための親となるプロセスである。OS起動時には、svchost.exeを経由して、各種のネットワーク・サービスが起動するようになっている。
@see http://www.atmarkit.co.jp/ait/articles/0403/13/news021.html
TrustedInstaller.exe
Windows Update関連。
更新前のシステム状態のチェックで長時間高負荷になる場合も。
Windows Update 関連の更新プログラムの処理を行います。UACによりadministratorでも変更できないシステム領域に対して変更を行うことができる特別なサービスです。
タスクスケジュールにより自動的に起動します。更新前のシステム状態のチェックも行うため、長時間プロセスが高負荷になる場合もあります。
@see http://tooljp.com/Windows10/doc/process/html/TrustedInstaller.exe.html
System
OS処理のプロセス
Systemプロセスは、Windows OSのカーネル内で実行されている処理を担当するプロセスである。次の「System Idle Process」と同様に仮想的なプロセスであり、プロセスIDは常に4で、対応する実行イメージファイルは存在しない(あえて言うなら、カーネル全体がこのプロセスに対応する)。
System Idle Process
このプロセスでCPU使用率が高くても大丈夫。アイドルしているということ。
プロセスをCPUの使用率順に並べた場合、常にこの「System Idle Process」というプロセスが一番上にあり、さらにCPU使用率も90%以上になっていることが多い。だがこれは仮想的なプロセスであり、実際にこのような名前(ファイル名)のプログラムがあるわけではない。
システムで実行中の全プロセスは実行用のキュー(実行待ち行例)に登録されている。実行するプロセスが1つもない場合は、仮想的にこのSystem Idle Processというプロセスが実行されているように振る舞うことになっている。
つまり、このプロセスが99%実行されているということは、実際はCPUが99%アイドル(待ち)状態であるということを表す。数値が高くても気にすることはない。
@see http://www.atmarkit.co.jp/ait/articles/1505/15/news022.html
システムの割り込み
この「システムの割り込み」も便宜上プロセスとして表示されているだけで、実際には該当するプロセス(実行ファイル)があるわけではない。このプロセスを見ると、割り込みの「遅延プロシージャ呼び出し」処理にどのくらいのCPUパワーが費やされているかを確認できる。ただしWindows 8/Windows Server 2012以降のタスクマネージャーでのみ表示される。
割り込みとは、デバイスなどから送信されるイベントトリガーであり、例えばデータの準備ができた、エラーが発生した、というような場合に、OSにそれを知らせるために使われる。
割り込み処理ルーチン内ではデバイスの状態をチェックし、データを読み出す「準備」だけして割り込み処理を完了する。実際にデータの受け取り処理を行うのは、割り込みの「遅延プロシージャ(遅延手続き)」の担当である。つまり割り込み発生時にすぐに対応するのが割り込み処理ルーチン、後でゆっくり事後処理するのが遅延プロシージャである。
システムの割り込みプロセスのCPU使用率が高くなるということは、割り込みの遅延プロシージャの処理が滞っていることを表す。性能の低いCPUではこのプロセスの処理に時間がかかるため、システムの割り込みプロセスのCPU使用率は高めになる。
またデバイスドライバーに不具合があって処理が遅くなっている場合も、CPU使用率は高めになる。この場合もデバイスドライバー周りのトラブルを疑う必要があるだろう。
UALSVC (User Access Logging Service)
CPUに負荷がかかっている場合は注意する。
Windows Server 2012 で User Access Logging サービスが「自動」に設定されている場合、または Microsoft カスタマー・エクスペリエンス向上プログラムで使用される ProgramData Updater を有効にした場合は、CPU 使用率が高くなる可能性があります。
User Access Logging サービスを「手動」に変更するには、以下の手順を実行します。
- Windows 2012 Server にログインします。
- サービス・コンソールで、「User Access Logging Service」を停止します。
- 「スタートアップの種類」を「手動」に変更します。
@see https://www.ibm.com/support/knowledgecenter/ja/SSFUEU_7.2.0/com.ibm.swg.ba.cognos.op_installation_guide.7.2.0.doc/c_op_ig_trb_high_cpu.html
BITS (Background Intelligent Transfer Service)
Windows Updateを手動で行うなら必要ない。
アイドル状態のネットワーク帯域幅を使ってバックグラウンドでファイルを転送します。サービスを使用不可にすると、Windows Update や MSN Explorer など、バックグラウンドインテリジェント転送サービスに依存しているアプリケーションはプログラムや情報を自動的にダウンロードできなくなります。
Windows Update を自動更新する場合には必須です。但し、更新プログラムの確認を手動で行う場合は無効にしても問題ありません。
@see http://windows7service.spinse.net/category/10277303-1.html
MsMpEng
Microsoft Security Essentialsの実行プログラム。
負荷が高くても止めれないよ~!
アンチマルウェアソフトウェアであるMicrosoft Security Essentialsの実行プログラムである。システムが起動した直後から実行を開始しており、常時ファイルをスキャンして、マルウェアに感染していないかどうかなどをスキャンしている。
通常はバックグラウンドで動作しているため、ユーザーの操作にはあまり影響を与えないようになっている。しかし、インストールされているプログラムなどが多いとスキャンに時間がかかるし、負荷も高くなる。
C:ドライブの使用量が多いとMsMpEngプロセスの負荷が高くなるようである(起動後の数十分の負荷が高い)。経験上、C:ドライブの使用量を抑制するか、C:をハードディスクではなくSSDにするとかなり改善される。
MsMpEngの設定を変更してスキャンの頻度などを下げるという方法もある(次のTIPS参照)。ただし、セキュリティのことを考えるとあまりお薦めできない。
@see
Windows OSでよく見かける重いプロセス、ベスト10
http://www.atmarkit.co.jp/ait/articles/1505/15/news022.html