連載
» 2013年10月11日 14時30分 UPDATE

Windows TIPS:負荷の大きいプロセスを特定する方法

Windowsを使っていると、自分の操作とは別の理由で、システムの負荷が突然重くなったりすることがある。最悪のケースとしては、コンピュータ・ウイルスが感染を広げたり、システムを破壊したりしている可能性もある。タスク・マネージャを使えば、このような場合に、いったいどのプロセスがシステムの負荷を高めているかを知ることができる。

[島田広道,デジタルアドバンテージ]
Windows TIPS
Windows Server Insider


「Windows TIPS」のインデックス

連載目次

対象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]キーを押す。タスク・マネージャが起動したら[パフォーマンス]タブを選択すると、以下のような画面が表示される(この画面の基本的な使い方は、右側の関連記事を参照していただきたい)。

タスク・マネージャの[パフォーマンス]タブ タスク・マネージャの[パフォーマンス]タブ
この[パフォーマンス]タブでは、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 時間]にチェックを入れてオンにしておく。

タスク・マネージャの[プロセス]タブ タスク・マネージャの[プロセス]タブ
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 時間]の値の増加が著しいプロセスがないかどうかに注目する。そのようなプロセスが存在した場合には、それが負荷原因である可能性が高い。その後の対処方法については右側の関連記事を参考にしていただきたい。

●Windows 8/8.1/Windows Server 2012/2012 R2の場合

 以下ではWindows 8.1の画面を例として挙げているが、それぞれ説明している個所についてはWindows 8/Windows Server 2012/2012 R2でも操作方法は共通である。

■[パフォーマンス]タブでCPU使用率の状態を確認する

 まずは、タスク・マネージャの[パフォーマンス]タブを表示して、CPU使用率グラフに注目する。それにはタスク・バー上の何も表示されていないところを右クリックし、表示されるポップアップ・メニューから[タスク マネージャー]を選ぶか、あるいは[Ctrl]+[Shift]+[Esc]キーを押す。タスク・マネージャが起動したら、左下隅にある[詳細]をクリックして詳細表示に切り替えてから[パフォーマンス]タブを選択すると、以下のような画面が表示される(この画面の基本的な使い方は、右側の関連記事を参照していただきたい)。

タスク・マネージャの[パフォーマンス]タブ タスク・マネージャの[パフォーマンス]タブ
この[パフォーマンス]タブでは、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時間、あるいはそのほかの細かい項目を同時に確認したい場合は、項目の多い[詳細]タブの方が便利だ。目的に応じて使い分けるとよいだろう。


タスク・マネージャの[詳細]タブ タスク・マネージャの[詳細]タブ
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)。


「Windows TIPS」のインデックス

Windows TIPS

Copyright© 1999-2014 Digital Advantage Corp. All Rights Reserved.

TechTargetジャパン

Nexus 6と格安SIM、プレゼント!
Loading

ホワイトペーパー(TechTargetジャパン)

注目のテーマ

転職/派遣情報を探す

【転職サーチ】SIer/Web企業/新規事業 スマホ開発で、あなたのキャリアを生かす

「派遣・フリーで働くメリット」とは? 活躍する派遣エンジニアの本音

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。