Windowsで負荷の大きいプロセスを特定する方法:Tech TIPS
Windowsを使っていると、自分の操作とは別の理由で、システムの負荷が突然重くなったりすることがある。最悪のケースとしては、コンピュータウイルスが感染を広げたり、システムを破壊したりしている可能性もある。タスクマネージャーを使えば、このような場合に、一体どのプロセスがシステムの負荷を高めているかを知ることができる。
目次
対象OS:Windows XP / Windows 7 / Windows 8 / Windows 8.1 / Windows Server 2003 / Windows Server 2008 R2 / Windows Server 2012 / Windows Server 2012 R2
周知の通り、WindowsはマルチタスクOSであり、複数のタスク(プログラム)を同時に実行できる。例えば、Webブラウザを幾つも表示しながら、ワードプロセッサで文書を作成したりメールを受信したりするなどは当たり前の行為になっている。
このようにユーザーが明示的に複数のアプリケーションを実行する以外にも、Windowsでは、OS自身の処理を行うために、さまざまなシステムプロセスがバックグラウンドで実行されている。Windowsを使っていると、コンピュータを何も操作していないのに、ディスクやネットワークへのアクセスが発生する場合があるが、それらはほとんどの場合、こうしたバックグラウンドで実行中のプロセスの処理に起因するものである。
しかし、このような予想外のディスク/ネットワークアクセスが必要以上に発生して、アプリケーションなど本来の処理に支障を来すようでは困りものだ。また場合によっては、ディスクやネットワークのアクセスランプは点灯していないのに、システム性能が異常に低下したり、一時的にアプリケーションがハングアップしたような状態になったりする場合もある。このように突然にシステムの負荷が増加する原因の1つとして、ウイルスプログラムがバックグラウンドで活動しているという可能性もあるから注意が必要だ。
原因を完全に究明できるという保証はないが、Windows OS標準機能の「タスクマネージャー」を使えば、どのプロセスが原因でシステムの負荷が大きくなっているかを特定できる。本稿ではその手順を説明する。
Windows XP/Windows 7/Windows Server 2003/2008 R2の場合
以下ではWindows 7の画面を例として挙げているが、それぞれ説明している箇所についてはWindows XP/Windows Server 2003でも操作方法は共通である。
●[パフォーマンス]タブでCPU使用率の状態を確認する
まずは、タスクマネージャーの[パフォーマンス]タブを表示して、CPU使用率グラフに注目する。それにはタスクバー上の何も表示されていないところを右クリックし、表示されるポップアップメニューから[タスク マネージャーの起動]を選ぶか、あるいは[Ctrl]+[Shift]+[Esc]キーを押す。タスクマネージャーが起動したら[パフォーマンス]タブを選択すると、以下のような画面が表示される(この画面の基本的な使い方は、次の関連記事を参照していただきたい)。
![タスクマネージャーの[パフォーマンス]タブ](https://image.itmedia.co.jp/ait/articles/0001/15/wi-scr01.gif)
タスクマネージャーの[パフォーマンス]タブ
この[パフォーマンス]タブでは、CPUの使用率やメモリ使用量など、現在のシステムの負荷状況を確認できる。何らかの負荷がCPUにかかっているかどうかを確認するには、(1)や(2)に注目する。その際、[表示]−[カーネル時間を表示する]メニューを選択すると、カーネル時間が赤線でグラフに表示されるので、CPU負荷が高い原因がOSカーネル内部にあるのかどうか判断しやすくなる(詳細は別稿のTIPS参照)。
(1)CPU使用率。現時点でCPUにかかっている負荷を数値化したもの。
(2)CPU使用率の履歴。(1)の負荷状況を時間を追って記録したもの。もしこのグラフが複数に分割表示されていて分かりにくいと感じたら、[表示]−[CPU の履歴]−[すべての CPU で 1 グラフ]を選ぶと単一のグラフで表示されるようになる。
ここで、上側にある[CPU 使用率]と[CPU 使用率の履歴]に注目する。これらはそれぞれ、現時点でCPUにかかっている負荷を数値化したものと、その負荷状況を時間を追って記録したものである。[CPU 使用率]の値が高いか、[CPU 使用率の履歴]グラフで大きな負荷がかかった形跡があれば、原因はCPUに対する負荷であることが分かる。またこのときには、[表示]−[カーネル時間を表示する]メニューを選択して、カーネル時間の表示を行うようにすると、 CPU負荷が高い原因がデバイスドライバやシステムプロセスといったOSカーネル内部にあるのかどうか判断しやすくなる(詳細はTIPS「カーネルモードとユーザーモードの負荷状況を見分ける方法」を参照)。
●[プロセス]タブで原因のプロセスを特定する
次はタスクマネージャーの[プロセス]タブをクリックし、プロセス一覧の[CPU]や[CPU 時間]の値に注目する。その際、[プロセス]タブを選んだ後に、左下の[全ユーザーのプロセスを表示する]にチェックを入れてオンにするか、あるいは[全てのユーザーのプロセスを表示]ボタンをクリックする。さらに[表示]−[列の選択]をクリックし、 表示された「プロセス ページの列の選択」ダイアログで[CPU 時間]にチェックを入れてオンにしておく。
![タスクマネージャーの[プロセス]タブ](https://image.itmedia.co.jp/ait/articles/0001/15/wi-scr02.gif)
タスクマネージャーの[プロセス]タブ
CPUに負荷をかけているプロセスを特定するには、ここで[CPU]と[CPU時間]項目に注目する。
(1)まず、これにチェックを入れてオンにして、バックグラウンドプロセスなどを含む全プロセスが表示されるようにする(オフのままだとログオン中のユーザーによって起動されたプロセスだけが表示される)。
(2)現時点でのCPU使用率。全てのプロセスの値を足し合わせると100(%)になる。
(3)プロセス開始から現在までのCPU使用時間の累積を秒単位で表した値。デフォルトでは表示されないので、あらかじめ[表示]−[列の選択]をクリックして[CPU 時間]にチェックを入れてオンにして、一覧に加えること。
(4)ここはボタンになっており、マウスでクリックすることで、その項目の値で一覧をソートできる。(2)あるいは(3)を値の大きい順にソートすると、CPU負荷の高いプロセスほど上側に並ぶため見つけやすくなる。
ここで[CPU]の値は、現時点でのそのプロセスのCPU使用率である。全てのプロセスのCPU使用率の値を足し合わせると、100(%)になる。この値が大きいほど、そのプロセスが現時点でCPUに対し大きな負荷をかけていることになる。従って、現在でも問題のプロセスがCPUに負荷をかけているなら、この値が大きなプロセスを見つけ出せばよい。
一方の[CPU 時間]の値は、そのプロセスが開始されてから、現在までに使用した累積のCPU時間を秒単位で表したものだ。例えば、負荷原因を追求しようとしてタスクマネージャーを起動したが、調査を開始するうちにCPU使用率が下がってしまうこともある。特にバックグラウンドでのサービスの処理は、必要に応じて起動・終了するので、このようなことが起こりがちだ。このような場合には、[CPU 時間]の値に注目する。[CPU]の値が小さくても、この値が大きければ、そのプロセスは継続的にCPUに負荷をかけていたことになる(ただし[CPU 時間]はプロセスが開始されてから現在までに使用したCPU時間なので、この値が大きいからといって、そのプロセスが直近の負荷増の原因だとは限らない点に注意すること)。
タスクマネージャーの[プロセス]タブの一覧の見出し部分([イメージ名]、[PID]、[CPU]など)はボタンになっており、ここをマウスでクリックすると、その項目で一覧がソートされるようになっている。そこで今回のような目的では、[CPU]や[CPU 時間]の部分をクリックして、値の大きい順に一覧を並べ替えるとよい。
画面から分かる通り、[CPU 時間]や[CPU]の値が圧倒的に多く、リストの最上位にあるプロセスは「System Idle Process」である。これは、CPUがビジーでない(空きだった)時間を表すもので、通常はこれが最上位に表示される。このプロセスは、現在の負荷とは特に関係がないので無視してよい。
この例では、次に「ekrn.exe *32」のプロセスがCPU時間「0:52:32」で続いている(「*32」は64bit版Windows OSにおける32bit版プログラムを表している。無印は64bit版プログラム)。これは、このコンピュータにインストールしてあったウイルス対策ソフトウェアの常駐プロセスである。
大きな負荷の原因を調査するには、一定時間タスクマネージャーを表示したままにして、[CPU]や[CPU 時間]の値の増加が著しいプロセスがないかどうかに注目する。そのようなプロセスが存在した場合には、それが負荷原因である可能性が高い。その後の対処方法については、次の関連記事を参考にしていただきたい。
- TIPS「svchost viewerツールでsvchost.exeを調べる」
- TIPS「自動更新でCPU負荷が100%になる不具合を修正」
- TIPS「サービスのプロセスを特定する(Vista編)」
Windows 8/8.1/Windows Server 2012/2012 R2の場合
以下ではWindows 8.1の画面を例として挙げているが、それぞれ説明している箇所についてはWindows 8/Windows Server 2012/2012 R2でも操作方法は共通である。
●[パフォーマンス]タブでCPU使用率の状態を確認する
まずは、タスクマネージャーの[パフォーマンス]タブを表示して、CPU使用率グラフに注目する。それにはタスクバー上の何も表示されていないところを右クリックし、表示されるポップアップメニューから[タスク マネージャー]を選ぶか、あるいは[Ctrl]+[Shift]+[Esc]キーを押す。タスクマネージャーが起動したら、左下隅にある[詳細]をクリックして詳細表示に切り替えてから[パフォーマンス]タブを選択すると、以下のような画面が表示される(この画面の基本的な使い方は、次の関連記事を参照していただきたい)。
![タスクマネージャーの[パフォーマンス]タブ](https://image.itmedia.co.jp/ait/articles/0001/15/wi-scr03.gif)
タスクマネージャーの[パフォーマンス]タブ
この[パフォーマンス]タブでは、CPUの使用率やメモリ使用量など、現在のシステムの負荷状況を確認できる。何らかの負荷がCPUにかかっているかどうかを確認するには、(1)や(2)に注目する。
(1)パーセンテージの数値がCPU使用率。現時点でCPUにかかっている負荷を数値化したものだ。これを選択すると(2)が表示される。
(2)CPU使用率の履歴。(1)の負荷状況を時間を追って記録したもの。もしこのグラフが複数に分割表示されていて分かりにくいと感じたら、グラフ内を右クリックして表示されるメニューから[グラフを変更]−[全体的な使用率]を選ぶと単一のグラフで表示されるようになる。
(3)CPU使用率のうちカーネルモードで使用されている分(カーネル時間)。これにより、CPU負荷が高い原因がOSカーネル内部にあるのかどうか判断しやすくなる(詳細は別稿のTIPS参照)。これを表示するには、グラフ内をマウスで右クリックして表示されるメニューから[カーネル時間を表示する]を選ぶ(この項目がメニューに現れない場合は、グラフ下の横スクロールバーがなくなるまでタスクマネージャーのウィンドウ横幅を十分に延ばすこと)。
ここで、左上にある[CPU]のパーセンテージが「CPU使用率」を表している。また、これを選択すると右側に表示されるグラフが「CPU使用率の履歴」である。これらはそれぞれ、現時点でCPUにかかっている負荷を数値化したものと、その負荷状況を時間を追って記録したものである。CPU使用率の値が高いか、CPU使用率の履歴グラフで大きな負荷がかかった形跡があれば、原因はCPUに対する負荷であることが分かる。また、グラフ内を右クリックして表示されるメニューから[カーネル時間を表示する]を選択して、カーネル時間が表示されるようにすると、CPU負荷が高い原因がデバイスドライバやシステムプロセスといったOSカーネル内部にあるのかどうか判断しやすくなる(詳細はTIPS「カーネルモードとユーザーモードの負荷状況を見分ける方法」を参照)。
●[詳細]タブでCPU使用率の高いプロセスを特定する
次はタスクマネージャーの[詳細]タブ*1をクリックし、プロセス一覧の[CPU]や[CPU 時間]の値に注目する。その際、一覧の見出し部分を右クリックして表示されるメニューから[列の選択]を選び、「列の選択」ダイアログが表示されたら[CPU 時間]にチェックを入れてオンにしておく。
*1 [プロセス]タブにもプロセス一覧は表示される。CPUだけではなくメモリやディスク、ネットワークの負荷も同時に確認するには、[プロセス]タブの方がよく情報が絞り込まれていて分かりやすい。一方で、CPU使用率やCPU時間、あるいはそのほかの細かい項目を同時に確認したい場合は、項目の多い[詳細]タブの方が便利だ。目的に応じて使い分けるとよいだろう。
![タスクマネージャーの[詳細]タブ](https://image.itmedia.co.jp/ait/articles/0001/15/wi-scr04.gif)
タスクマネージャーの[詳細]タブ
CPUに負荷をかけているプロセスを特定するには、ここで[CPU]と[CPU時間]項目に注目する。
(1)現時点でのCPU使用率。全てのプロセスの値を足し合わせると100(%)になる。
(2)プロセス開始から現在までのCPU使用時間の累積を秒単位で表した値。デフォルトでは表示されないので、(3)を右クリックして表示されるメニューから[列の選択]を選び、[CPU 時間]にチェックを入れてオンにして一覧に加えること。
(3)ここはボタンになっており、マウスでクリックすることで、その項目の値で一覧をソートできる。(1)あるいは(2)を値の大きい順にソートすると、CPU負荷の高いプロセスほど上側に並ぶため見つけやすくなる。
ここで[CPU]の値は、現時点でのそのプロセスのCPU使用率である。全てのプロセスのCPU使用率の値を足し合わせると、100(%)になる。この値が大きいほど、そのプロセスが現時点でCPUに対し大きな負荷をかけていることになる。従って、現在でも問題のプロセスがCPUに負荷をかけているなら、この値が大きなプロセスを見つけ出せばよい。
一方の[CPU 時間]の値は、そのプロセスが開始されてから、現在までに使用した累積のCPU時間を秒単位で表したものだ。例えば、負荷原因を追求しようとしてタスクマネージャーを起動したが、調査を開始するうちにCPU使用率が下がってしまうこともある。特にバックグラウンドでのサービスの処理は、必要に応じて起動・終了するので、このようなことが起こりがちだ。このような場合には、[CPU 時間]の値に注目する。[CPU]の値が小さくても、この値が大きければ、そのプロセスは継続的にCPUに負荷をかけていたことになる(ただし[CPU 時間]はプロセスが開始されてから現在までに使用したCPU時間なので、この値が大きいからといって、そのプロセスが直近の負荷増の原因だとは限らない点に注意すること)。
タスクマネージャーの[詳細]タブの一覧の見出し部分([イメージ名]、[PID]、[CPU]など)はボタンになっており、ここをマウスでクリックすると、その項目で一覧がソートされるようになっている。そこで今回のような目的では、[CPU]や[CPU 時間]の部分をクリックして、値の大きい順に一覧を並べ替えるとよい。
画面から分かる通り、[CPU 時間]や[CPU]の値が圧倒的に多く、リストの最上位にあるプロセスは「System Idle Process」である。これは、CPUがビジーでない(空きだった)時間を表すもので、通常はこれが最上位に表示される。このプロセスは、現在の負荷とは特に関係がないので無視してよい。
この例では、次に「chrome.exe」のプロセスがCPU時間「3:05:58」で続いている。これはWebブラウザ「Google Chrome」のプロセスだ。動的なコンテンツを含むWebページを開いたままにしておくと、しばしばCPU負荷が高まることがある。
大きな負荷の原因を調査するには、一定時間タスクマネージャーを表示したままにして、[CPU]や[CPU 時間]の値の増加が著しいプロセスがないかどうかに注目する。そのようなプロセスが存在した場合には、それが負荷原因である可能性が高い。その後の対処方法については、次の関連記事を参考にしていただきたい。
■この記事と関連性の高い別の記事
■更新履歴
【2013/10/11】Windows 7以降のWindows OSでの操作方法を追記しました。
【2002/05/25】Windows XPに関する情報などを加筆・修正しました。
【2000/01/15】初版公開(対象はWindows 2000)。
Copyright© Digital Advantage Corp. All Rights Reserved.