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 7の画面を例として挙げているが、それぞれ説明している箇所についてはWindows XP/Windows Server 2003でも操作方法は共通である。
■[パフォーマンス]タブでCPU使用率の状態を確認する
まずは、タスクマネージャーの[パフォーマンス]タブを表示して、CPU使用率グラフに注目する。それにはタスクバー上の何も表示されていないところを右クリックし、表示されるポップアップメニューから[タスク マネージャーの起動]を選ぶか、あるいは[Ctrl]+[Shift]+[Esc]キーを押す。タスクマネージャーが起動したら[パフォーマンス]タブを選択すると、以下のような画面が表示される(この画面の基本的な使い方は、次の関連記事を参照していただきたい)。
ここで、上側にある[CPU 使用率]と[CPU 使用率の履歴]に注目する。これらはそれぞれ、現時点でCPUにかかっている負荷を数値化したものと、その負荷状況を時間を追って記録したものである。[CPU 使用率]の値が高いか、[CPU 使用率の履歴]グラフで大きな負荷がかかった形跡があれば、原因はCPUに対する負荷であることが分かる。またこのときには、[表示]−[カーネル時間を表示する]メニューを選択して、カーネル時間の表示を行うようにすると、 CPU負荷が高い原因がデバイスドライバやシステムプロセスといったOSカーネル内部にあるのかどうか判断しやすくなる(詳細はTIPS「カーネルモードとユーザーモードの負荷状況を見分ける方法」を参照)。
■[プロセス]タブで原因のプロセスを特定する
次はタスクマネージャーの[プロセス]タブをクリックし、プロセス一覧の[CPU]や[CPU 時間]の値に注目する。その際、[プロセス]タブを選んだ後に、左下の[全ユーザーのプロセスを表示する]にチェックを入れてオンにするか、あるいは[全てのユーザーのプロセスを表示]ボタンをクリックする。さらに[表示]−[列の選択]をクリックし、 表示された「プロセス ページの列の選択」ダイアログで[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 時間]の値の増加が著しいプロセスがないかどうかに注目する。そのようなプロセスが存在した場合には、それが負荷原因である可能性が高い。その後の対処方法については、次の関連記事を参考にしていただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.