Windows OSを使っていると突然システムの応答が遅くなって操作しづらくなることがある。そんな場合はまずタスクマネージャーを起動して、どのプロセスが重いかを調べるとよい。Windows OSでよく見かける“重いプロセス”をまとめてみた。
対象OS:Windows 7 / Windows 8 / Windows 8.1 / Windows Server 2008 R2 / Windows Server 2012 / Windows Server 2012 R2
■記事内目次
Windows OSを使っていると、システムが平常時と比べて非常に“重く”なり、例えばマウスやキーボード入力などへの応答が遅くなったり、極端な場合は無応答になったりすることがある。
このような場合は、タスクマネージャーを起動してどのプロセスが重いのかを調べたり、リソースモニターやディスクのLEDランプなどを見て、ディスクの入出力などが非常に増えてシステムの負荷になっていないかどうかを調べたりすることになる(操作手順は次の関連記事参照)。
CPUの負荷が高くなっていることが分かったら、[詳細]タブ(Windows 7/Windows Server 2008 R2の場合は[プロセス]タブ)に切り替えると、どのプロセスの負荷が高くなっているかを知ることができる(タスクマネージャーに[すべてのユーザーのプロセスを表示]ボタンが表示されている場合は、それをクリックして全プロセスを表示させること)。
またCPU負荷ではなく、ディスク入出力が多い場合は、タスクマネージャーからリソースモニターを起動して[ディスク]タブを選択すると、どのプロセスがどのファイルを多く読み書きしているかが分かり、問題解決の手掛かりとなるだろう。
システムの負荷、その中でも特にCPU(プロセス)の使用率が高くなる原因にはさまざまな理由が考えられる。
1.は、Windows OS中のある特定のプロセスだけCPU使用率が上昇することを指す。ほとんどの場合それは正常な動作であり、しばらくすればCPU使用率が下がるのであまり気にすることはないはずである。だが場合によってはずっと連続してCPU使用率が高いままのことがある。その場合は、2.の不具合によるCPU使用率の上昇や3.のウイルスなどの感染も考えられる。
*1 Windows OS内のプログラムに不具合があり、突然CPU使用率が上がるような障害は度々報告されている。最近では、例えばこの サポート技術情報(KB3053711) のように、「ユーザー名にuserという文字列が含まれているとCPU使用率が上昇する」という不具合が報告されている。その検証結果については、筆者が 弊誌のFacebookページに投稿した記事 を参照していただきたい。
とはいえ、実際にはこれらの違いを正確に判断することは簡単ではない。あるプロセスが何のためにあるのかを知らなければ、それが正常なのかどうか分からないからだ。例えばプログラムをインストールしているときはインストーラー関連のプロセスの負荷が上昇するし、入出力が多ければデバイスドライバーに関連するプロセスの負荷が上昇するのは当然である。
本TIPSでは、Windowsシステムのタスクマネージャーでよく見かける「CPU使用率が高くなっていることが多いプロセス」を10種類ほど取り上げ、その機能について説明しておく。
またそのファイルのパス情報も記しておくので、正しいファイルかどうかを判断する情報としても利用していただきたい。実行中のプロセスのパス情報は、プロセス名を右クリックしてポップアップメニューから[ファイルの場所を開く]を実行すると確認できる。
ただしあらかじめ断っておくが、タイトルとしては「ベスト10」と付けているものの、10個ちょうどというわけでもないし、その順番にはあまり意味はない(それらのCPU使用率が同時に高くなることはまずない)。
またWindows OSのバージョンやインストールしている機能、使用しているアプリケーション、適用しているService Pack、更新プログラム、緊急の修正パッチなどにも応じて大きく変わるし、不具合が解消されていたりもする。以下のランキングは多分に主観的であることをご了承願いたい。
項目 | 内容 |
---|---|
用途 | Windowsサービスのホストプロセス |
ファイル名 | svchost.exe |
場所 | %windir%\System32\svchost.exe |
これは、Windows OS中で動作している各種の「サービス」のホストとなるプロセスである。Windows OSのサービスはタスクマネージャーの[サービス]タブで確認できる。これらのサービスを最初に起動するために使われるのがsvchost.exeである。サービスの処理負荷が高くなると、このsvchostプロセスのCPU使用率の値が上昇する。
1つのWindowsシステム内でサービスは数十個動作している。それらは幾つかにまとめてグループ化され、それぞれのグループごとにsvchost.exeプロセスが1つずつ起動される。そのため、1台のシステム中には複数のsvchost.exeプロセスが存在する。以下のTIPSも参照のこと。
項目 | 内容 |
---|---|
用途 | Windowsインストーラー |
ファイル名 | TrustedInstaller.exe/TiWorker.exe/msiexec.exe |
場所 | %windir%\servicing\TrustedInstaller.exe/ %windir%\WinSxS\以下(WinSxSフォルダの中には複数のバージョンのファイルがフォルダごとに分かれて保存されている)/ %windir%\System32\msiexec.exe、他 |
これらはWindows OSに新しいプログラムやモジュール、更新プログラムなどをインストールするために利用されるプログラムやその補助プロセスである。ユーザーによる明示的なインストールの場合だけでなく、例えばWindows Updateによる自動的なバックグラウンドでのインストール時などにも実行されている。
項目 | 内容 |
---|---|
用途 | Microsoft Security Essentialsの実行プログラム |
ファイル名 | MsMpEng.exe |
場所 | %ProgramFiles%\Microsoft Security Client\MsMpEng.exe |
これはアンチマルウェアソフトウェアであるMicrosoft Security Essentialsの実行プログラムである。システムが起動した直後から実行を開始しており、常時ファイルをスキャンして、マルウェアに感染していないかどうかなどをスキャンしている。
通常はバックグラウンドで動作しているため、ユーザーの操作にはあまり影響を与えないようになっている。しかし、インストールされているプログラムなどが多いとスキャンに時間がかかるし、負荷も高くなる。
C:ドライブの使用量が多いとMsMpEngプロセスの負荷が高くなるようである(起動後の数十分の負荷が高い)。経験上、C:ドライブの使用量を抑制するか、C:をハードディスクではなくSSDにするとかなり改善される。
MsMpEngの設定を変更してスキャンの頻度などを下げるという方法もある(次のTIPS参照)。ただし、セキュリティのことを考えるとあまりお薦めできない。
項目 | 内容 |
---|---|
用途 | Windows Search(インデックス)サービスのホストプロセス |
ファイル名 | SearchIndexer.exe/SearchProtocolHost.exe/SearchFilterHost.exe |
場所 | %windir%\System32\SearchIndexer.exe/ %windir%\System32\SearchProtocolHost.exe/ %windir%\System32\SearchFilterHost.exe |
これらはファイル検索を高速化する「インデックス」を作成するプロセスである。新しくファイルが追加や更新された場合に負荷が重くなるので、抑制したければコントロールパネルの[インデックスのオプション]で検索範囲を限定するなどの設定を行う。その手順については、次のTIPSの「対策その2:〜」が参考になる。
項目 | 内容 |
---|---|
用途 | Windows Update関連のプロセス |
ファイル名 | wuauclt.exe |
場所 | %windir%\System32\wuauclt.exe |
これはWindows Update関連のプロセスである。新しいWindows Updateの更新プログラムがないかどうか、システムに適用すべきかどうかなどの判断・処理を行う。
Windows Updateの処理では、過去何度かCPU使用率が異常に上昇するという不具合が報告されたことがある。CPU使用率の上昇がWindows Updateの処理に起因するかどうかは、Windows Updateの処理(確認)を手動で開始したり、停止させたりしてチェックしてみるとよい。
なおWindows Updateで更新プログラムを適用する場合は、このwuaucltプロセスではなく、svchost.exeやインストーラー関連のプロセスのCPU使用率が上昇することがある。
項目 | 内容 |
---|---|
用途 | .NET Frameworkのオプティマイザープロセス |
ファイル名 | mscorsvw.exe/ngen.exe |
場所 | %windir%\Microsoft.NET\Framework\<バージョン>\mscorsvw.exe/ %windir%\Microsoft.NET\Framework\<バージョン>\ngen.exe |
これは.NET Frameworkを使ったプログラムの「オプティマイザー(最適化)」のプロセスである。.NET Frameworkを使ったプログラムやパッチなどをインストール/更新した直後に実行されているのがよく見受けられる。
.NET Frameworkを使って書かれたプログラム(.NETアセンブリ)は中間言語CIL(Common Intermediate Language)で記述されている。これらのプロセスは、これを事前にコンパイルしてターゲットCPUのバイナリコードに変換するという処理を行っている。
例えば開発ツールのVisual Studioをインストールした場合など、インストールされた.NETアセンブリの数が多いと処理に時間がかかる。それでも、1〜2時間もすれば終了するだろう。
項目 | 内容 |
---|---|
用途 | Windowsタスクのホストプロセス |
ファイル名 | taskhost.exe |
場所 | %windir%\System32\taskhost.exe |
taskhost.exeは、Windows OSの「タスク」を起動するためのプロセスである。
タスクとは、ある決まった時間やタイミング(起動時やログオン時など)に起動される処理(プロセス)のことである。タスクは[コンピューターの管理]ツールの[システム ツール]−[タスク スケジューラ]で設定、管理する。指定した時刻やタイミングになると、taskhost.exeが実際のタスクを担当するプロセスを起動するようになっている。
そのため、taskhost.exeが重くなるわけではなく、taskhostから起動されているプロセスが重くなることの方が多い。タスクマネージャーでは、起動されたプロセスはtaskhostとは別のプロセスとして表示される。
もしtaskhostのCPU使用率が高くなっているなら、それは起動しようとしたタスク側に問題があって、正しく起動できないか、もしくは何度も再起動を試行している、といったことが考えられる。
項目 | 内容 |
---|---|
用途 | Windows NTカーネルシステム |
名前 | System |
PID | 4(プロセスIDは常に4) |
場所 | −(なし) |
* 【お断り】ランキングのこの辺りから先の順位は、負荷が高いプロセスというよりも、CPU使用率順に並べた場合に単に上位に来ることがあるというだけで、実際にシステムの操作性に影響を与えるほど処理の重いプロセスではないことが多い。
Systemプロセスは、Windows OSのカーネル内で実行されている処理を担当するプロセスである。次の「System Idle Process」と同様に仮想的なプロセスであり、プロセスIDは常に4で、対応する実行イメージファイルは存在しない(あえて言うなら、カーネル全体がこのプロセスに対応する)。
Windows OSのカーネル内部ではさまざまなモジュールやサブシステム、デバイスドライバーなどが動作している。それらは全てこのシステムプロセス(とその内部にあるシステムスレッド)中で動作している。通常はカーネルの処理はあまり負荷が高くならず、SystemプロセスがCPU使用率の上位に出てくることはない。せいぜい数%だろう(性能の低いPCだともっと高くなることもある)。
だが、たまにデバイスドライバーなどに不具合があって、CPUを異常に占有してしまうことがある。そのような場合はSystemプロセスがCPU使用率の上位に出てきたり、ある一定のCPU使用率がずっと続いたり、といった不具合が発生することがある。
新しいデバイスやサポートプログラムなどをインストールしてCPU使用率がずっと高いままという場合は(例えば1コア分ずっと消費し続けているなど)、インストールしたデバイスに関するトラブルなどを疑ってみるとよいだろう。
項目 | 内容 |
---|---|
用途 | システムアイドルプロセス(仮想的なプロセス) |
名前 | System Idle Process |
PID | 0(プロセスIDは常に0) |
場所 | −(なし) |
プロセスをCPUの使用率順に並べた場合、常にこの「System Idle Process」というプロセスが一番上にあり、さらにCPU使用率も90%以上になっていることが多い。だがこれは仮想的なプロセスであり、実際にこのような名前(ファイル名)のプログラムがあるわけではない。
システムで実行中の全プロセスは実行用のキュー(実行待ち行例)に登録されている。実行するプロセスが1つもない場合は、仮想的にこのSystem Idle Processというプロセスが実行されているように振る舞うことになっている。
つまり、このプロセスが99%実行されているということは、実際はCPUが99%アイドル(待ち)状態であるということを表す。数値が高くても気にすることはない。
このプロセスのPID(プロセスID)は常に0である。もし0以外ならウイルスなどが偽装している可能性がある。
項目 | 内容 |
---|---|
用途 | 割り込み処理(仮想的なプロセス) |
名前 | 遅延プロシージャ呼び出しと割り込みサービスルーチン |
PID | −(なし。プロセスID部分の表示は常に「−」) |
場所 | −(なし) |
この「システムの割り込み」も便宜上プロセスとして表示されているだけで、実際には該当するプロセス(実行ファイル)があるわけではない。このプロセスを見ると、割り込みの「遅延プロシージャ呼び出し」処理にどのくらいのCPUパワーが費やされているかを確認できる。ただしWindows 8/Windows Server 2012以降のタスクマネージャーでのみ表示される。
割り込みとは、デバイスなどから送信されるイベントトリガーであり、例えばデータの準備ができた、エラーが発生した、というような場合に、OSにそれを知らせるために使われる。
割り込み処理ルーチン内ではデバイスの状態をチェックし、データを読み出す「準備」だけして割り込み処理を完了する。実際にデータの受け取り処理を行うのは、割り込みの「遅延プロシージャ(遅延手続き)」の担当である。つまり割り込み発生時にすぐに対応するのが割り込み処理ルーチン、後でゆっくり事後処理するのが遅延プロシージャである。
システムの割り込みプロセスのCPU使用率が高くなるということは、割り込みの遅延プロシージャの処理が滞っていることを表す。性能の低いCPUではこのプロセスの処理に時間がかかるため、システムの割り込みプロセスのCPU使用率は高めになる。
またデバイスドライバーに不具合があって処理が遅くなっている場合も、CPU使用率は高めになる。この場合もデバイスドライバー周りのトラブルを疑う必要があるだろう。
項目 | 内容 |
---|---|
用途 | Windows DLLのホストプロセス |
ファイル名 | rundll32.exe |
場所 | %windir%\System32\rundll32.exe |
これは他のDLL(例えばコントロールパネルアプレットのDLL)などを起動するために使われるホストプロセスである。このプロセスのCPU使用率が高いということは、実際には、このrundll32によって起動されているプログラムのCPU使用率が高いということである。rundll32が何を起動しているかは、rundll32プロセスに渡されているパラメーターを調べる必要がある。
ただしタスクマネージャーで見ても単に「rundll32.exe」としか表示されず、何を起動しているかの詳細は分からない。詳しく調べるには、SysInternalsの「Process Explorer」のようなツールを利用する必要がある。このツールについては、以下の記事も参照のこと。
項目 | 内容 |
---|---|
用途 | タスクマネージャー/リソースモニター |
ファイル名 | taskmgr.exe/perfmon.exe |
場所 | %windir%\System32\taskmgr.exe/ %windir%\System32\perfmon.exe |
これはタスクマネージャーや、そこから起動されているリソースモニターに相当するプロセスである。自分自身を指しているものなので、この項目がCPU使用率の上位にあるからといって気にする必要はない。
項目 | 内容 |
---|---|
用途 | クライアントサーバランタイムプロセス |
ファイル名 | csrss.exe |
場所 | %windir%\System32\csrss.exe |
これはWindows OSにログオンした場合の、ユーザーセッション(ユーザーごとのプログラム実行環境)を準備するためのプロセスである。これもCPU使用率の上位にあるからといって特に気にする必要はない。
項目 | 内容 |
---|---|
用途 | デスクトップウィンドウマネージャー |
ファイル名 | dwm.exe |
場所 | %windir%\System32\dwm.exe |
これはWindowsデスクトップのマネージャープロセスである。Windows 7でいうことの、Aeroプレビューやフリップ3Dなどを実現している。CPU使用率の上位にあるからといって特に気にする必要はない。
項目 | 内容 |
---|---|
用途 | Cabinet Maker(.cabファイルメーカー) |
ファイル名 | makecab.exe |
場所 | %windir%\System32\makecab.exe |
これは.cabファイル(Windows OSでよく使われているファイル圧縮形式)を作成するためのプロセスである。例えばログファイルなどを圧縮してディスクの空き領域を広げるために使われている。大抵の場合はすぐに終わるので、CPU使用率の上位にあるからといって特に気にする必要はないだろう。
以上、Windows OSでよく見かける重いプロセスを幾つか紹介した。この内容はOSのバージョンや構成などよっても異なるので、今後必要なら随時更新する。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.