トップページ > cpu使用率
cpu使用率
パソコンというのは、例えばインターネットやメールなどを書いているときと、何もしていないときでは確かに働く量が違いますが、だからといってキーボードに触れていない場合でも、なにがしかのどうさを行っているモノです。そういった意味でCPUは常に働きっぱなしです。
画像加工を伴うフォトレタッチソフトなどを起動して、同時にインターネットを見ようとブラウザなどを立ち上げたとき、CPUには一気に負荷がかかりますが、それで操作していれば問題はありませんが、動作が遅くなったり、あまりアプリケーションを起動させていないのに、反応がモッサリしている場合など、ハードディスクの断片化を疑ったりしてデフラグを敢行したりするのはよくあることです。
しかしそれでも改善しない場合、根本的原因は起動している常駐ソフトにあるといった場合が多い。
アプリケーションは具体的に起動していなくても、バックグラウンドでプロセスとして起動しているモノがあり、ほとんどが常駐ソフトとWindowsならシステムが使うソフトウェアです。たとえば、ファイル内容を表示するエクスプローラー(これも立派なアプリケーションです)などは、停止してしまうとファイルを表示できず、システムエラーとなってOSが再起動してしまったり、強制終了してしまいます。
全ての環境でそうだと断言できませんが、OSの処理(タスクという)をかなり食うのは、セキュリティー関係では、アンチウィルスソフトやアンチスパイウェア、一般的ソフトウェアでは一部のオフィス・スウィートなどです。
このタスク処理がOSそのもののパフォーマンスとなって、速度に比例しているのですが、あるアプリケーションがフリーズしてしまったとき、それをモニタリングして原因となってるその他のソフトを特定する必要があります。
ウィンドウズ限定で話を進めますが、このCPU使用率はウィンドウズ標準の機能で解析が可能。それが”タスクマネージャー”という「アプリケーション」です。もともとOSに付属しているモノですね。
ウィンドウズの一番下のタスク・バーを右クリックでも起動できますが、キーボード・ショートカット利用の方が楽は楽。[Ctrl]+[Shift]+[Esc]で一発起動できます。
「ファイル名を指定して実行」で「taskmgr」と入力するのも方法の1つ。
タスクマネージャには、[アプリケーション]タブで現在実行しているアプリの一覧や、[プロセス]タブでプロセスの一覧を確認できますが、アプリケーションが何も起動していなくても、[プロセス]は普通結構な数が動作しています。ですので、逆をいうとプロセスのイメージ名から対応するアプリを探すことはそうカンタンではありません。
アプリケーションを起動している場合、プロセス名を探すには、、[アプリケーション]タブで表示されているアプリを右クリック。メニューから「プロセスの表示」を選択すれば、[プロセス]タブの該当するプロセスがわかります。
プロセスの右側に数字が変化してる部分がありますが、この値が大きいほどタスクを多く使っているということになり、CPU使用率を引き上げている・・ということになりますが、それがセキュリティーに関係するモノだと、容易にプロセスを停止するのは考えものです。CPU使用率の限界は当然100%ですが、この使用率はタスクマネージャーの「パフォーマンス」タブで確認できます。[CPU使用率]の値や[CPUの使用率の履歴]のグラフに注目し、何らかの負荷がCPUにかかっているかを見るということ。
理想は30%以下ぐらいですが、使っているとフリーソフトやら新しいブラウザをインストールしたりして、そうもいってられないのが現実。[CPU使用率]の値が高いか、[CPU使用率の履歴]グラフで大きな負荷がかかった形跡があれば、原因はCPUに対する負荷であることが分かるわけで、こうなるとデフラグを敢行してもあまり意味はありません。
タスク・マネージャは、CPUにかかった全体の負荷をグラフ表示するようになっていますので、Windows 2000/XPの場合、システムが使うコードとユーザーが起動したアプリは異なるシステムモードでそれぞれ実行しています。具体的には、前者はカーネル・モード、後者はユーザー・モードといわれています。
ユーザー・モードで実行されるアプリケーションは、カーネル・モードが管理するメモリ資源などには直接にはアクセスしてはいないため、OSは基本的なパソコンの部分ですから、CPU使用率とは具体的にはユーザーモードのプロセスの方に着目する事になります。
以上のように、プロセスを2つに分離しているのは、たとえば万一ユーザー・モードで実行中のアプリケーションが暴走したとしても、システムには影響が及ばないようにするための配慮です。
このアプリケーションタブで、折れ線グラフのようなモノがでていますが、カーネル・モード・プロセスによる使用率が高いとき(赤い線が、緑の線に接近しているとき)には、カーネル内部のシステム・プロセスの処理や、ネットワーク・アクセス、ディスク・アクセス、グラフィック描画、デバイス・ドライバによる処理などが負荷の原因だと予測できます。使用しているハードウェアやデバイスドライバなどが、環境に合っていない、つまり使用しているCPUには荷が重すぎるというわけです。
こうなると、根本的にハードウェアの更新、つまり機器のアップグレードが必要になります。
一方、負荷の大きいプロセスを特定する方法としては、タスクマネージャの「プロセス」タブを開き、そこにある現在実行中のプロセスが一覧表示されるので、明示的にユーザーが起動したアプリケーションのプロセスとバックグラウンドで実行されている常駐ソフトなどのプロセスがでています。
表示されているところの、[CPU]以下の値の合計が現時点でのCPU使用率。現在でも問題のプロセスがCPUに負荷をかけているなら、この値が大きなプロセスを見つけ出せばよい事になります。
一方の[CPU時間]の値は、そのプロセスが開始されてから、現在までに使用したCPU時間を秒単位で表したもので、例えば、負荷原因を追求しようとしてタスク・マネージャを起動したが、調べようとしたら負荷が軽減されてしまうという場合もあります。特にバックグラウンドでのサービスの処理は、必要に応じて起動・終了するので、このようなことが起こりがち。そこでこの値をみるというわけ。[CPU]の値が小さくても、この値が大きければ、そのプロセスは継続的にCPUに負荷をかけていた証拠となります。
ただし[CPU時間]はプロセスが開始されてから現在までに使用したCPU時間なので、この値が大きいからといって、そのプロセスが負荷の原因だッ!!とするのは早合点といっておきます。注意してね。
タスク・マネージャの[プロセス]タブの一覧の見出し部分([イメージ名]、[PID]、[CPU]など”|”で仕切られているところ)はボタンになっており、ここをマウスでクリックすると、その項目で一覧がソート(並べ替え)が出来るようになっています。[CPU]や[CPU時間]の部分をクリックして、値の大きい順に一覧を並べ替えるとわかりやすいでしょう。
大抵、[CPU時間]や[CPU]の値が圧倒的に多く、リストの最上位にあるプロセスは「System Idle Process」。これは、CPUがビジーでない(とりあえず操作を受けていない状態)時間を表すもので、普通はこれが一番上に表示されます。のプロセスは、現在の負荷とは特に関係ないので無視。
例えばセキュリティー関係では、特にアンチウィルスソフトの場合、最新のウィルスデーターベースを更新するため、常駐ソフトが一定時間になると起動してダウンロードを開始している場合などは、モノによってかなりCPUの負荷をかけるものがあります。余りに頻繁に使ってるソフトの動作に影響が出てしまう場合、このソフトの更新時間を調整するなどして、(あまり多くのソフトを使わないときなど)または、手動で更新するなどの工夫が必要になります。
パフォーマンスモニタを使用して、定期的にログを収集する方法もあります。
操作にはAdministratorになる必要がありますが(Windows XP Homeではセーフモードでないと管理者権限が無い)Administratorでユーザーを切り替えてログインし、[スタート] → [コントロールパネル] → [管理ツール] → 「パフォーマンス」の順でウィンドウズ標準の機能を呼び出します。
新規のログを追加登録コンソールルート(左側のペインのツリー表示を展開)のカウンタログを選択し、選択した状態で右クリックしてメニューを出します。新しいログの設定を選択して新規ログ登録画面を開き(新しいログの設定)、適当な名前を入力。「カウンタの選択」で、パフーマンス オブジェクトにプルダウンメニューから「Processor」を選びます。
「一覧からカウンタを選ぶ」にチェック、「一覧からインスタンスを選ぶ」にチェック。
「ログファイル」タブを開き、場所はC:\PerfLogs、ファイル名は先ほどつけた名前、ファイル名のサフィックスにチェック、そのとなりにあるプルダウンメニューは、恐らくデフォルトでyyyymmddとなってるでしょう。ログファイルの種類はプルダウンから、テキストファイルを選択。ログファイル サイズは「最大限」にチェックを入れます。テキストファイルCSVとは、ログデータをスプレッドシート、つまり表計算プログラムに取り込めるファイル形式ということです。
最後に、プロパティ画面の[スケジュール]タブを選択して、ログの収集開始と収集停止を指定。残念ながら日時は1回分しか指定出来ません。[OK]ボタンをクリックして閉じると、最初の[パフォーマンス]画面に戻ります。
システム・リソースごとのボトルネック、つまりシステムが使う処理プロセスの上限を知る目安ですが、それぞれCPUにだけ関係するモノは、Processor\%Processor TimeとProcessor\%Interrupts/secの値。
Processor\%Processor Timeはボトルネックが85%以上、Processor\%Interrupts/secは4以上です。
高いパーセントのプロセッサ時間になっているプロセスを見つけて、負荷がかかってる場合CPUを高性能にする事も検討、Processor\%Interrupts/secがしきい値を頻繁に超過する場合、プロセッサがボトルネックになっているので、やはり使ってる環境にCPUの仕事が追いついていないということになります。不定期で頻繁ではない瞬間的な超過つまり負荷が一瞬なら無視しても構いません。そういうことは結構よくあることです。
[パフォーマンス]には[警告]という機能もありますが、これはカウンタがある値を超えた時に、システム管理者に通知することができる機能。しかし負荷がある度頻繁に通知が来るのであまりありがたくありません。警告レベルを超えた時に、何かしなければならない場合に限った方が良いでしょう。
画像加工を伴うフォトレタッチソフトなどを起動して、同時にインターネットを見ようとブラウザなどを立ち上げたとき、CPUには一気に負荷がかかりますが、それで操作していれば問題はありませんが、動作が遅くなったり、あまりアプリケーションを起動させていないのに、反応がモッサリしている場合など、ハードディスクの断片化を疑ったりしてデフラグを敢行したりするのはよくあることです。
しかしそれでも改善しない場合、根本的原因は起動している常駐ソフトにあるといった場合が多い。
アプリケーションは具体的に起動していなくても、バックグラウンドでプロセスとして起動しているモノがあり、ほとんどが常駐ソフトとWindowsならシステムが使うソフトウェアです。たとえば、ファイル内容を表示するエクスプローラー(これも立派なアプリケーションです)などは、停止してしまうとファイルを表示できず、システムエラーとなってOSが再起動してしまったり、強制終了してしまいます。
全ての環境でそうだと断言できませんが、OSの処理(タスクという)をかなり食うのは、セキュリティー関係では、アンチウィルスソフトやアンチスパイウェア、一般的ソフトウェアでは一部のオフィス・スウィートなどです。
このタスク処理がOSそのもののパフォーマンスとなって、速度に比例しているのですが、あるアプリケーションがフリーズしてしまったとき、それをモニタリングして原因となってるその他のソフトを特定する必要があります。
ウィンドウズ限定で話を進めますが、このCPU使用率はウィンドウズ標準の機能で解析が可能。それが”タスクマネージャー”という「アプリケーション」です。もともとOSに付属しているモノですね。
ウィンドウズの一番下のタスク・バーを右クリックでも起動できますが、キーボード・ショートカット利用の方が楽は楽。[Ctrl]+[Shift]+[Esc]で一発起動できます。
「ファイル名を指定して実行」で「taskmgr」と入力するのも方法の1つ。
タスクマネージャには、[アプリケーション]タブで現在実行しているアプリの一覧や、[プロセス]タブでプロセスの一覧を確認できますが、アプリケーションが何も起動していなくても、[プロセス]は普通結構な数が動作しています。ですので、逆をいうとプロセスのイメージ名から対応するアプリを探すことはそうカンタンではありません。
アプリケーションを起動している場合、プロセス名を探すには、、[アプリケーション]タブで表示されているアプリを右クリック。メニューから「プロセスの表示」を選択すれば、[プロセス]タブの該当するプロセスがわかります。
プロセスの右側に数字が変化してる部分がありますが、この値が大きいほどタスクを多く使っているということになり、CPU使用率を引き上げている・・ということになりますが、それがセキュリティーに関係するモノだと、容易にプロセスを停止するのは考えものです。CPU使用率の限界は当然100%ですが、この使用率はタスクマネージャーの「パフォーマンス」タブで確認できます。[CPU使用率]の値や[CPUの使用率の履歴]のグラフに注目し、何らかの負荷がCPUにかかっているかを見るということ。
理想は30%以下ぐらいですが、使っているとフリーソフトやら新しいブラウザをインストールしたりして、そうもいってられないのが現実。[CPU使用率]の値が高いか、[CPU使用率の履歴]グラフで大きな負荷がかかった形跡があれば、原因はCPUに対する負荷であることが分かるわけで、こうなるとデフラグを敢行してもあまり意味はありません。
タスク・マネージャは、CPUにかかった全体の負荷をグラフ表示するようになっていますので、Windows 2000/XPの場合、システムが使うコードとユーザーが起動したアプリは異なるシステムモードでそれぞれ実行しています。具体的には、前者はカーネル・モード、後者はユーザー・モードといわれています。
ユーザー・モードで実行されるアプリケーションは、カーネル・モードが管理するメモリ資源などには直接にはアクセスしてはいないため、OSは基本的なパソコンの部分ですから、CPU使用率とは具体的にはユーザーモードのプロセスの方に着目する事になります。
以上のように、プロセスを2つに分離しているのは、たとえば万一ユーザー・モードで実行中のアプリケーションが暴走したとしても、システムには影響が及ばないようにするための配慮です。
このアプリケーションタブで、折れ線グラフのようなモノがでていますが、カーネル・モード・プロセスによる使用率が高いとき(赤い線が、緑の線に接近しているとき)には、カーネル内部のシステム・プロセスの処理や、ネットワーク・アクセス、ディスク・アクセス、グラフィック描画、デバイス・ドライバによる処理などが負荷の原因だと予測できます。使用しているハードウェアやデバイスドライバなどが、環境に合っていない、つまり使用しているCPUには荷が重すぎるというわけです。
こうなると、根本的にハードウェアの更新、つまり機器のアップグレードが必要になります。
一方、負荷の大きいプロセスを特定する方法としては、タスクマネージャの「プロセス」タブを開き、そこにある現在実行中のプロセスが一覧表示されるので、明示的にユーザーが起動したアプリケーションのプロセスとバックグラウンドで実行されている常駐ソフトなどのプロセスがでています。
表示されているところの、[CPU]以下の値の合計が現時点でのCPU使用率。現在でも問題のプロセスがCPUに負荷をかけているなら、この値が大きなプロセスを見つけ出せばよい事になります。
一方の[CPU時間]の値は、そのプロセスが開始されてから、現在までに使用したCPU時間を秒単位で表したもので、例えば、負荷原因を追求しようとしてタスク・マネージャを起動したが、調べようとしたら負荷が軽減されてしまうという場合もあります。特にバックグラウンドでのサービスの処理は、必要に応じて起動・終了するので、このようなことが起こりがち。そこでこの値をみるというわけ。[CPU]の値が小さくても、この値が大きければ、そのプロセスは継続的にCPUに負荷をかけていた証拠となります。
ただし[CPU時間]はプロセスが開始されてから現在までに使用したCPU時間なので、この値が大きいからといって、そのプロセスが負荷の原因だッ!!とするのは早合点といっておきます。注意してね。
タスク・マネージャの[プロセス]タブの一覧の見出し部分([イメージ名]、[PID]、[CPU]など”|”で仕切られているところ)はボタンになっており、ここをマウスでクリックすると、その項目で一覧がソート(並べ替え)が出来るようになっています。[CPU]や[CPU時間]の部分をクリックして、値の大きい順に一覧を並べ替えるとわかりやすいでしょう。
大抵、[CPU時間]や[CPU]の値が圧倒的に多く、リストの最上位にあるプロセスは「System Idle Process」。これは、CPUがビジーでない(とりあえず操作を受けていない状態)時間を表すもので、普通はこれが一番上に表示されます。のプロセスは、現在の負荷とは特に関係ないので無視。
例えばセキュリティー関係では、特にアンチウィルスソフトの場合、最新のウィルスデーターベースを更新するため、常駐ソフトが一定時間になると起動してダウンロードを開始している場合などは、モノによってかなりCPUの負荷をかけるものがあります。余りに頻繁に使ってるソフトの動作に影響が出てしまう場合、このソフトの更新時間を調整するなどして、(あまり多くのソフトを使わないときなど)または、手動で更新するなどの工夫が必要になります。
パフォーマンスモニタを使用して、定期的にログを収集する方法もあります。
操作にはAdministratorになる必要がありますが(Windows XP Homeではセーフモードでないと管理者権限が無い)Administratorでユーザーを切り替えてログインし、[スタート] → [コントロールパネル] → [管理ツール] → 「パフォーマンス」の順でウィンドウズ標準の機能を呼び出します。
新規のログを追加登録コンソールルート(左側のペインのツリー表示を展開)のカウンタログを選択し、選択した状態で右クリックしてメニューを出します。新しいログの設定を選択して新規ログ登録画面を開き(新しいログの設定)、適当な名前を入力。「カウンタの選択」で、パフーマンス オブジェクトにプルダウンメニューから「Processor」を選びます。
「一覧からカウンタを選ぶ」にチェック、「一覧からインスタンスを選ぶ」にチェック。
「ログファイル」タブを開き、場所はC:\PerfLogs、ファイル名は先ほどつけた名前、ファイル名のサフィックスにチェック、そのとなりにあるプルダウンメニューは、恐らくデフォルトでyyyymmddとなってるでしょう。ログファイルの種類はプルダウンから、テキストファイルを選択。ログファイル サイズは「最大限」にチェックを入れます。テキストファイルCSVとは、ログデータをスプレッドシート、つまり表計算プログラムに取り込めるファイル形式ということです。
最後に、プロパティ画面の[スケジュール]タブを選択して、ログの収集開始と収集停止を指定。残念ながら日時は1回分しか指定出来ません。[OK]ボタンをクリックして閉じると、最初の[パフォーマンス]画面に戻ります。
システム・リソースごとのボトルネック、つまりシステムが使う処理プロセスの上限を知る目安ですが、それぞれCPUにだけ関係するモノは、Processor\%Processor TimeとProcessor\%Interrupts/secの値。
Processor\%Processor Timeはボトルネックが85%以上、Processor\%Interrupts/secは4以上です。
高いパーセントのプロセッサ時間になっているプロセスを見つけて、負荷がかかってる場合CPUを高性能にする事も検討、Processor\%Interrupts/secがしきい値を頻繁に超過する場合、プロセッサがボトルネックになっているので、やはり使ってる環境にCPUの仕事が追いついていないということになります。不定期で頻繁ではない瞬間的な超過つまり負荷が一瞬なら無視しても構いません。そういうことは結構よくあることです。
[パフォーマンス]には[警告]という機能もありますが、これはカウンタがある値を超えた時に、システム管理者に通知することができる機能。しかし負荷がある度頻繁に通知が来るのであまりありがたくありません。警告レベルを超えた時に、何かしなければならない場合に限った方が良いでしょう。