以下に、本願の開示する情報処理装置、ログ記憶制御プログラムおよびログ記憶制御方法の各実施例を図面に基づいて詳細に説明する。なお、各実施例は開示の技術を限定するものではない。
実施例1に係る情報処理装置について説明する。図1は、情報処理装置の構成の一例を示す図である。図1に示すように、情報処理装置10は、検出部21と、判定部22と、格納部23と、揮発性記憶部24と、不揮発性記憶部25とを有する。情報処理装置10は、少なくともソフトウェアが搭載された機器であり、例えば、コンピュータ、通信装置などである。揮発性記憶部24は、フラッシュメモリやNVSRAM(Non Volatile Static Random Access Memory)などのデータを書き換え可能な不揮発性の半導体メモリである。不揮発性記憶部25は、例えば、フラッシュメモリやNVSRAMなどのデータを書き換え可能な不揮発性の半導体メモリである。
検出部21は、情報処理装置10において実行されているソフトウェア26の負荷状態を検出する。ソフトウェア26は、例えば、情報処理装置10が有するCPU(Central Processing Unit)によって実行されるアプリケーションやファームウェアなどのプログラムである。また、ソフトウェア26は、動作状態やエラーの発生状況などの各種情報をログとして生成する。この負荷状態とは、例えば、ソフトウェアの処理が想定範囲内で定常的に動作している定常状態や、想定範囲を超えて動作している過負荷状態、想定範囲を大きく超えて処理の一時的な停止や制御不能な完全な停止状態となる異常状態などがある。検出部21は、ソフトウェア26の実行に用いる演算部の負荷、当該負荷の増加率、ソフトウェア26による処理待ちのメッセージのキュー数、所定期間内に発生するログ数、ソフトウェア26の実行に用いるメモリ使用率、メモリ温度などに基づいて負荷状態を検出する。
判定部22は、ソフトウェア26のログが発生した場合に、当該ログの種別および検出部21によって検出された負荷状態に応じて、ログの格納先を判定する。判定部22は、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部25に格納し、第二の種別に係るログは揮発性記憶部24に格納する旨を判定する。また、判定部22は、第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを不揮発性記憶部25に格納する旨を判定する。例えば、判定部22は、定常状態では、メモリ保護違反ログなどエラーに関するログは不揮発性記憶部25を格納先と判定し、トレースログなど処理履歴のログは揮発性記憶部24に格納先と判定する。また、判定部22は、過渡状態や異常状態では、エラーに関するログも処理履歴のログも不揮発性記憶部25に格納先と判定する。格納部23は、判定部22の判定結果に応じて、ログを揮発性記憶部24または不揮発性記憶部25のいずれかに格納する。
上述してきたように、情報処理装置10は、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部25に格納し、第二の種別に係るログは揮発性記憶部24に格納する。また、情報処理装置10は、第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを不揮発性記憶部25に格納する。すなわち、情報処理装置10は、負荷が高い場合に、不揮発性記憶部25に多くの種別のログを格納する。したがって、本実施例に係る情報処理装置10によれば、不具合事象の原因解析に有効なログを保存できる。つまり、仮に情報処理装置10が定常状態から過渡状態、異常状態と移行して電源が切断された場合、揮発性記憶部24に格納されたログは消去する。一方、不揮発性記憶部25に格納されたログは保存される。例えば、エラーに関するログに加えて、過負荷状態や異常状態における処理履歴のログは保存される。これにより、不具合事象の原因解析が行い易くなる。
次に、実施例2について説明する。実施例2では、ネットワークなどの通信回線を介して動画などを配信する画像配信システム30を説明する。図2は、画像配信システムの構成の一例を示す図である。画像配信システム30は、搭載する機能に応じて各種のユニット33を搭載可能なインターフェーススロット31を有する。また、画像配信システム30は、インターフェーススロット31の下部に電源部32を有する。電源部32は、インターフェーススロット31に搭載された各ユニットに電力を供給する。
画像配信システム30は、各種のユニット33として、2つのCPUユニット33aと、1つのクロックユニット33bと、3つの画像ユニット33cとが搭載される。CPUユニット33aは、装置全体を制御する。クロックユニット33bは、各ユニット33の動作タイミングを示すクロックを提供する。画像ユニット33cは、配信する動画の画像伝送処理を行う。各ユニット33は、実施例1で説明した情報処理装置10の一例である。
ここで、CPUユニット33aの構成について説明する。図3は、CPUユニットの構成の一例を示す図である。CPUユニット33aは、プログラム格納メモリ40と、不揮発性メモリ41と、揮発性メモリ42と、格納先情報格納メモリ43と、CPU44と、RAM45と、シリアルポート46と、LAN(Local Area Network)ポート47とを有する。プログラム格納メモリ40、不揮発性メモリ41、揮発性メモリ42、格納先情報格納メモリ43と、CPU44、RAM45、シリアルポート46、およびLANポート47は、バス48で接続され、バス48を介して各種の情報をやり取りする。
プログラム格納メモリ40は、例えば、ROM(Read Only Memory)、フラッシュメモリなどの不揮発性の半導体メモリ素子である。なお、プログラム格納メモリ40に代えて、ハードディスクなどの不揮発性の記憶装置を用いてもよい。プログラム格納メモリ40には、OS(オペレーティングシステム)やファームウェアなどの各種ソフトウェアのプログラム60が記憶されている。この各種ソフトウェアのプログラム60は、CPU44において実行された際に、不具合事象が発生した際の原因解析などのために、ソフトウェアの動作状態やエラーの発生状況などの各種情報をログとして生成する。この生成されるログには、動作状態を示すコードやエラーコードなどログの種別を示す種別情報が含まれている。また、プログラム格納メモリ40には、ソフトウェアのログの格納先を制御するログ記憶制御プログラム61が記憶されている。
不揮発性メモリ41は、例えば、フラッシュメモリやNVSRAMなどのデータを書き換え可能な不揮発性の半導体メモリである。なお、不揮発性メモリ41に代えて、ハードディスク、光ディスクなどのデータを書き換え可能な不揮発性の記憶装置を用いてもよい。不揮発性メモリ41は、画像配信システム30の電源がオフした場合でも保持する必要があるログの記憶領域として用いられ、格納されたログを保持する。
揮発性メモリ42は、例えば、RAM(Random Access Memory)などのデータを書き換え可能な揮発性の半導体メモリである。不揮発性メモリ41は、ログを一時的に記憶する記憶領域として用いられ、ログを一時的に保持する。
格納先情報格納メモリ43は、例えば、フラッシュメモリやNVSRAMなどのデータを書き換え可能な不揮発性の半導体メモリである。なお、不揮発性メモリに代えて、ハードディスク、光ディスクなどのデータを書き換え可能な不揮発性の記憶装置を用いてもよい。格納先情報格納メモリ43には、ソフトウェア毎に、当該ソフトウェアで発生したログを揮発性メモリ42または不揮発性メモリ41のいずれかに格納するかを示す情報(以下、「ログ格納先情報」ともいう。)が記憶されている。このログ格納先情報には、ソフトウェアのログの種別ごと並びにソフトウェアの負荷状態ごとに、揮発性メモリ42または不揮発性メモリ41のいずれかにログを格納するかが記憶されている。
図4は、ログ格納先情報のデータ構成の一例を示す図である。ログ格納先情報には、ログ種別毎に、ソフトウェアの負荷状態が「通常状態」、「過渡状態」、「異常状態」のそれぞれの状態において揮発性メモリ42または不揮発性メモリ41のいずれを格納先とするかが記憶されている。この「通常状態」とは、例えば、想定された範囲内で装置が運用されている状態である。「異常状態」とは、例えば、装置に問題があり、運用に支障をきたしており、装置のダウンやリブートになる可能性が多い状態である。「過度状態」とは、例えば、異常状態とまではいかないが、想定された範囲を超えて運用されている状態である。
ところで、ログは、種別によって不具合事象の原因解析に対する有効度が異なる。そこで、本実施例では、ログの種別ごとに原因解析にどの程度有効であるかという重要度を「高」「中」「低」の3段階のログランクとして定めている。例えば、致命的なエラーのログは、ログランクを「高」と定める。特定の状況についての原因解析に有効なログは、ログランクを「中」と定める。デバッグ用のトレースや履歴のログは、ログランクを「低」と定める。本実施例に係るログ格納先情報では、ログランクの高い種別のログは負荷状態が何れの場合も不揮発性メモリ41に記憶されるように格納先が設定される。また、ログ格納先情報には、ログランクの低い種別のログは負荷状態が低い場合、揮発性メモリ42に記憶され、負荷状態が高くなると不揮発性メモリ41に記憶されるように格納先が設定される。
図4の例では、メモリ保護違反ログは、ログランクが「高」とされ、通常状態、過度状態、異常状態のいずれにおいても不揮発性メモリ41が格納先と設定される。また、図4の例では、プロセスキュー情報やプロセス情報は、ログランクが「中」とされ、通常状態において揮発性メモリ42が格納先と設定され、過度状態および異常状態において不揮発性メモリ41が格納先と設定される。図4の例では、プログラムの処理のトレースログは、ログランクが「低」とされ、通常状態および過度状態において揮発性メモリ42が格納先と設定され、異常状態において不揮発性メモリ41が格納先と設定される。
図3の説明に戻り、RAM45は、データを書き換え可能な揮発性の半導体メモリである。RAM45は、CPU44が各種プログラムを実行する際のワークエリアとして用いられる。
CPU44は、プログラム格納メモリ40に格納された各種のプログラム60やログ記憶制御プログラム61を読み出して実行する。プログラム60は、実行されると動作状態やエラーの発生状況などのログを発生する。ログ記憶制御プログラム61は、プログラム60で発生したログの種別および負荷状態に応じてログを揮発性メモリ42または不揮発性メモリ41のいずれかに格納するかを制御する。
シリアルポート46およびLANポート47は、通信ケーブル49を介してパーソナルコンピュータなどの端末装置50と接続される。例えば、画像配信システム30の管理者は、不具合事象の原因解析などを行う場合、シリアルポート46またはLANポート47に接続された端末装置50からログ収集コマンドを送信する。CPU44は、ログ収集コマンドを受信すると揮発性メモリ42および不揮発性メモリ41に記憶されたログをファイル化し、端末装置50へ転送する。管理者は、転送されたログファイルの解析を行うことにより、不具合事象の原因解析を行う。なお、他のユニット33b、cもユニット33aと同様の構成を有する。
次に、図5を用いて、ログ記憶制御プログラム61を実行された際の機能的な構成を説明する。図5は、ログ記憶制御プログラムを実行したCPUの機能的な構成の一例を示す図である。また、図5の例では、ログ記憶制御プログラム61の他に、プログラム60として、障害検知用のプログラム60aや、各種サービル用のプログラム60b、画像処理のプログラム60c、OSなどの制御プログラム60dがCPU44により実行されている。プログラム60a、60b、60cは、プロセス間通信によりメッセージをやりとりする。制御プログラム60dは、プログラム60a、60b、60cの間のプロセス間通信を管理する。RAM45には、プログラム60a、60b、60c毎に送信されたメッセージを格納し、処理待ちのメッセージをFIFO(First In First Out)形式で管理するメッセージキュー領域が設けられている。
ログ記憶制御プログラム61は、監視部70と、判定部71と、格納部72とを有する。
監視部70は、各ソフトウェアの負荷状態として、プログラム60a、60b、60c毎に処理待ちのメッセージ数を監視する。例えば、監視部70は、制御プログラム60dが提供するAPI(Application Programming Interface)などのメッセージ管理用のインタフェースを用いてプログラム60a、60b、60c毎に処理待ちのメッセージ数を監視する。
判定部71には、プログラム60a、60b、60cで発生したログが送信される。判定部71は、ログが送信された場合、監視部70に監視されたプログラム60a、60b、60c毎に処理待ちのメッセージ数を参照し、処理待ちのメッセージ数が多いほど負荷状態が高いものとして負荷状態を特定する。例えば、判定部71は、何れのプログラム60の処理待ちのメッセージ数も所定の許容範囲以内の場合、負荷状態が通常状態であると特定する。また、判定部71は、何れかのプログラム60の処理待ちのメッセージ数が上記許容範囲よりも大きく、上記許容範囲よりも大きい所定の閾値以内の場合、負荷状態が過渡状態であると特定する。また、判定部71は、何れかのプログラム60の処理待ちの処理待ちのメッセージ数が上記閾値よりも大きい場合、負荷状態が異常状態であると特定する。図6は、プログラムの処理待ちのメッセージ数と負荷状態との関係の一例を示す図である。図6の例では、処理待ちのメッセージ数が4つまでを許容範囲としている。図6に示すように、プログラム60a、60cの処理待ちのメッセージ数が2つであり、プログラム60bの処理待ちのメッセージ数が3つの場合は、負荷状態が通常状態と特定される。また、プログラム60a、60cの処理待ちのメッセージ数が2つであり、プログラム60bの処理待ちのメッセージ数が6つに増加した場合は、負荷状態が過度状態と特定される。さらに、プログラム60a、60cの処理待ちのメッセージ数が2つであり、プログラム60bの処理待ちのメッセージ数が閾値よりも大きくなった場合は、負荷状態が異常状態と特定される。なお、閾値は、例えば、許容範囲の2倍などと許容範囲を基準に定めてよい。また、処理待ちのメッセージ数がメッセージキュー領域のバッファ溢れとなった場合に負荷状態が異常状態と特定してもよい。
判定部71は、不揮発性メモリ41に記憶された各プログラムのログ格納先情報のうち、ログを発生したプログラムのログ格納先情報を参照し、入力されたログを揮発性メモリ42または不揮発性メモリ41のいずれかに格納するかを判定する。例えば、判定部71は、ログ格納先情報から入力されたログに含まれる種別情報により示される種別および特定した負荷状態に対応した格納先を読み出すことにより、入力されたログの格納先を判定する。
これにより、例えば、ログを発生したプログラムのログ格納先情報が図4に示す内容である場合、メモリ保護違反ログは、通常状態、過度状態、異常状態のいずれにおいても不揮発性メモリ41が格納先と判定される。また、プロセスキュー情報やプロセス情報は、通常状態において揮発性メモリ42が格納先と判定され、過度状態および異常状態において不揮発性メモリ41が格納先と判定される。また、プログラムの処理のトレースログは、通常状態および過度状態において揮発性メモリ42が格納先と判定され、異常状態において不揮発性メモリ41が格納先と判定される。
格納部72は、判定部71の判定結果に応じて、送信されたログを揮発性メモリ42または不揮発性メモリ41のいずれかに格納する。なお、格納部72は、揮発性メモリ42および不揮発性メモリ41に記憶されたログの記憶領域がそれぞれ所定量となった場合、最も古いログに上書きして新しいログを格納する格納する。これにより、ログの容量が揮発性メモリ42および不揮発性メモリ41の容量を超えてしまい、ログが記憶できなくなることを防止できる。
このように、負荷状態が高い場合、不揮発性メモリ41に多くの種別のログを格納することにより、不具合事象の原因解析に有効なログを保存できる。
また、負荷状態が低い場合は、ログランクの高いログを不揮発性メモリ41に格納し、ログランクの低いログを揮発性メモリ42に格納することにより、重要度の高いログのみが不揮発性メモリ41に記憶される。これにより、不揮発性メモリ41は、ログランクの高いログのみが格納されるため、ログランクの高いログを多く保存できる。また、画像配信システム30がフリーズや再起動していない場合、不揮発性メモリ41および揮発性メモリ42からログを読み出すことにより、ログランクの高いログから低いログまで取得できる。
次に、本実施例に係るCPUユニット33aの処理の流れを説明する。図7は、ログ記憶制御処理の手順を示すフローチャートである。このログ記憶制御処理は、CPUユニット33aが起動した後、常時実行される。
図7に示すように、判定部71は、ログを受信したか否かを判定する(ステップS101)。判定部71は、ログが未受信の場合(ステップS101否定)、OSなどから処理終了が指示されたか否かを判定する(ステップS102)。判定部71は、処理終了が指示された場合(ステップS102肯定)、処理を終了する。一方、判定部71は、処理終了が指示されていない場合(ステップS102否定)、ステップS101へ移行する。
判定部71は、ログを受信した場合(ステップS101肯定)、監視部70に監視されたプログラム60a、60b、60c毎に処理待ちのメッセージ数を参照して負荷状態を特定する(ステップS103)。そして、判定部71は、ログ格納先情報から入力されたログの種別および特定した負荷状態に応じたログの格納先を読み出ことにより、ログの格納先を判定する(ステップS104)。格納部72は、ログの格納先が不揮発性メモリ41であるか否かを判定する(ステップS105)。格納部72は、ログの格納先が不揮発性メモリ41である場合(ステップS105肯定)、ログを不揮発性メモリ41に記憶させ(ステップS106)、その後、ステップS101へ移行する。一方、格納部72は、ログの格納先が不揮発性メモリ41ではない場合(ステップS105否定)、ログを揮発性メモリ42に記憶させ(ステップS107)、その後、ステップS101へ移行する。
これにより、例えば、メモリ保護違反ログが検出された際に、負荷状態が通常状態、過度状態、異常状態のいずれにおいても、メモリ保護違反ログは不揮発性メモリ41に記憶される。一方、プロセスキュー情報やプロセス情報のログが検出された際に、負荷状態が通常状態である場合には、プロセスキュー情報やプロセス情報のログは揮発性メモリ42に記憶される。また、負荷状態が過度状態および異常状態である場合には、プロセスキュー情報やプロセス情報のログは不揮発性メモリ41に記憶される。一方、トレースログが検出された際に、負荷状態が通常状態および過度状態である場合には、トレースログは揮発性メモリ42に記憶される。また、負荷状態が異常状態である場合には、トレースログは不揮発性メモリ41に記憶される。
上述してきたように、本実施例に係るCPUユニット33aは、ソフトウェアの負荷状態を検出する。そして、本実施例に係るCPUユニット33aは、負荷状態が通常状態の場合にはメモリ保護違反ログは不揮発性メモリ41に格納し、プロセスキュー情報やプロセス情報のログ、トレースログは揮発性メモリ42に格納する旨を判定する。また、本実施例に係るCPUユニット33aは、負荷状態が過度状態の場合にはプロセスキュー情報やプロセス情報のログ、メモリ保護違反ログは不揮発性メモリ41に格納し、トレースログは揮発性メモリ42に格納する旨を判定する。また、本実施例に係るCPUユニット33aは、負荷状態が異常状態の場合にはプロセスキュー情報やプロセス情報のログ、メモリ保護違反ログ、トレースログは不揮発性メモリ41に格納する旨を判定する。そして、本実施例に係るCPUユニット33aは、判定結果に応じて、ログを揮発性メモリ42または不揮発性メモリ41のいずれかに格納する。このように、負荷状態が高い通常状態の場合、ログランクの高いメモリ保護違反ログを不揮発性メモリ41に記憶させることにより、不揮発性メモリ41にログランクの高いログを多く保存できる。また、CPUユニット33aがフリーズや再起動していない場合、不揮発性メモリ41および揮発性メモリ42からログを読み出すことにより、ログランクの高いログから低いログまで取得できる。また、負荷状態が高くなるほど、ログランクの低いログも不揮発性メモリ41に記憶させることにより、CPUユニット33aがフリーズや再起動した場合でも、多くの種別のログを保存できるため、不具合事象の原因解析が行い易くなる。特に、不具合事象は、負荷状態が高い状態で発生しやすい。このため、負荷状態が高い場合に多くの種別のログを不揮発性メモリ41に格納するログの種別を増やして多くの種別のログを保存することにより、不具合事象の原因解析が行い易くなる。
また、上述してきたように、本実施例に係るCPUユニット33aは、格納先情報格納メモリ43にログの種別ごと並びにソフトウェアの負荷状態ごとに、揮発性メモリ42または不揮発性メモリ41のいずれかにログを格納するかを示す情報を記憶する。そして、本実施例に係るCPUユニット33aは、ソフトウェアのログが発生した場合に、格納先情報格納メモリ43に記憶された情報を参照し、ログを揮発性メモリ42または不揮発性メモリ41のいずれかに格納するかを判定する。このように、ログの種別ごと並びにソフトウェアの負荷状態ごとに格納先を記憶することにより、ログの種別ごと並びにソフトウェアの負荷状態ごとにログの格納先を細かく制御できる。また、格納先情報格納メモリ43に記憶された情報を変更することにより、ログの種別ごと並びにソフトウェアの負荷状態ごとに、ログの格納先を変更できる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、上記の実施例では、監視部70が、ソフトウェアの負荷状態として、プログラム60毎に処理待ちのメッセージ数を監視し、判定部71がメッセージ数が多いほど負荷が高いと検出した場合について例示したが、開示の装置はこれに限定されない。例えば、CPU44のCPU負荷を求め、CPU負荷が高いほど負荷が高いものと検出してもよい。図8は、CPU負荷とソフトウェアの負荷状態との関係の一例を示す図である。図8の例では、横軸が時間を示し、縦軸がCPU負荷を示している。図8の例では、CPU負荷が70%未満の範囲を通常状態と定め、CPU負荷が70%以上、90%未満の範囲を過度状態と定め、CPU負荷が90%以上の範囲を異常状態と定めている。この場合、監視部70は、CPU44のCPU負荷を監視する。判定部71はCPU負荷から負荷状態を検出する。図9は、CPUの負荷率とログの格納先との関係の一例を示す図である。図9の例では、プログラムが発生するログをa〜eで示している。ログa〜eは種別が異なるものとする。図9の例では、CPU負荷が70%未満の通常状態である場合、ログa、bを不揮発性メモリ41に格納し、ログc〜eを揮発性メモリ42に格納する。また、図9の例では、CPU負荷が70%以上、90%未満の範囲の過度状態である場合、ログa〜cを不揮発性メモリ41に格納し、ログd、eを揮発性メモリ42に格納する。また、図9の例では、CPU負荷が90%以上の範囲の異常状態である場合、ログa〜eを不揮発性メモリ41に格納する。このように、負荷状態が高い場合、不揮発性メモリ41に多くの種別のログを格納することにより、不具合事象の原因解析に有効なログを保存できる。
また、RAM45は、メモリリーク等の不具合が発生した場合や、多くのプログラムが実行されて処理負荷が高い場合など、メモリ使用率が高くなる。そこで、ソフトウェアの負荷状態として、例えば、RAM45のメモリ使用率を求め、メモリ使用率が高いほど負荷が高いものと検出してもよい。図10は、メモリ使用率とソフトウェアの負荷状態との関係の一例を示す図である。図10の例では、メモリ使用率が50%未満の範囲を通常状態と定め、メモリ使用率が50%以上、80%未満の範囲を過度状態と定め、メモリ使用率が80%以上の範囲を異常状態と定めている。この場合、監視部70は、RAM45のメモリ使用率を監視する。判定部71はメモリ使用率から負荷状態を検出する。
また、プログラム60は、不具合が発生した場合、発生するログの数が多くなる。そこで、ソフトウェアの負荷状態として、例えば、所定期間の間に発生するログ数を求め、ログ数が高いほど負荷が高いものと検出してもよい。図11は、所定期間の間に発生するログ数とソフトウェアの負荷状態との関係の一例を示す図である。図11の例では、横軸が時間を示し、縦軸が10分間毎の発生したログ数を示している。図11の例では、10分間に発生したログ数が50件未満の範囲を通常状態と定め、10分間に発生したログ数が50件以上、150件未満の範囲を過度状態と定め、10分間に発生したログ数が150以上の範囲を異常状態と定めている。この場合、監視部70は、所定期間の間に発生するログ数を監視する。判定部71は発生したログ数から負荷状態を検出する。
また、CPUユニット33aなどの情報処理装置では、負荷が高くなるとCPU44のCPU負荷が急激に増加する。そこで、ソフトウェアの負荷状態として、例えば、CPU44のCPU負荷の増加率を求め、増加率が高いほど負荷が高いものと検出してもよい。図12は、CPU負荷の変化と負荷の増加率との一例を示す図である。図12の例では、横軸が時間を示し、縦軸がCPU負荷を示している。図12の例では、CPU負荷の増加率を、所定期間Aと所定期間AでのCPU負荷の増加量Bとから、B/Aの演算を行って求める。この場合、監視部70は、所定期間毎にCPU44のCPU負荷の増加率を監視する。判定部71はCPU負荷の増加率から負荷状態を検出する。
また、RAM45は、内部データへのアクセスが頻繁に行われて処理負荷が高い場合など、温度が高くなる。そこで、例えば、RAM45の温度を検出する温度センサ90を設け、監視部70が、ソフトウェアの負荷状態として、RAM45の温度を監視し、判定部71が温度が高いほど負荷が高いものと検出してもよい。図13は、温度センサを設けたCPUユニットの一例を示す図である。なお、図13では、上記の実施例2のCPUユニットと同様の部分については図3と同様の符号を付し、その説明は省略することとする。図13の例では、RAM45に温度センサ90が設けられている。
また、例えば、ソフトウェアの負荷状態として、CPU44の負荷、当該負荷の増加率、ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、RAM45のメモリ使用率、RAM45のメモリ温度の何れか複数を検出してもよい。この場合、検出された複数の負荷状態から全体としての負荷状態を特定すればよい。例えば、検出した複数の負荷状態のうち、最も負荷が高いものを全体の負荷状態と特定してもよい。また、例えば、最も多い負荷状態を全体の負荷状態と特定してもよい。このように、CPU44の負荷、当該負荷の増加率など様々なものから負荷状態を検出することにより、様々な不具合事象による負荷状態の変化を把握できる。
また、上記の実施例では、ソフトウェアの負荷状態を、「第一の負荷状態」、「第二の負荷状態」の2段階、または「通常状態」、「過渡状態」、「異常状態」の3段階に判別した場合について例示したが、開示の装置はこれに限定されない。例えば、負荷状態を4段階以上の状態に判別してもよい。
また、上記の実施例2では、ログの重要度を「高」「中」「低」の3段階のログランクとした場合について例示したが、開示の装置はこれに限定されない。例えば、ログランクを2段階や4段階以上の状態に判別してもよい。
また、各種の負荷や使用状況などに応じて、実施例2において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。例えば、ソフトウェアの負荷状態として、CPU44の負荷、当該負荷の増加率など複数の検出を行う場合、各検出ステップおよび、それぞれの検出結果から負荷状態を判定するステップを追加する。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、上記の実施例2では、ログを記憶する不揮発性記憶部とログ格納先情報を記憶する不揮発性記憶部を不揮発性メモリ41および格納先情報格納メモリ43と別々に設けた場合について例示したが、開示の装置はこれに限定されない。例えば、1つの不揮発性記憶部にログとログ格納先情報を記憶してもよい。また、上記の実施例2では、ログを記憶する揮発性記憶部とCPU44がワークエリアとして用いる揮発性記憶部を揮発性メモリ42およびRAM45と別々に設けた場合について例示したが、開示の装置はこれに限定されない。例えば、1つの揮発性記憶部をログの記憶領域およびCPU44がワークエリアとして用いてもよい。
[ログ記憶制御プログラム]
また、上記の実施例で説明した情報処理装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図14を用いて、上記の実施例で説明した情報処理装置と同様の機能を有するログ記憶制御プログラムを実行するコンピュータの一例を説明する。図14は、ログ記憶制御プログラムを実行するコンピュータを示す図である。
図14に示すように、コンピュータ300は、CPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340を有する。これら300〜340の各部は、バス400を介して接続される。
ROM320には、上記の実施例1に示す検出部21と、判定部22と、格納部23と、または実施例2で示す監視部70と、判定部71と、格納部72と同様の機能を発揮するログ記憶制御プログラム320aが予め記憶される。すなわち、ROM320には、図14に示すように、ログ記憶制御プログラム320aが記憶される。なお、ログ記憶制御プログラム320aについては、適宜分離しても良い。
そして、CPU310が、ログ記憶制御プログラム320aをROM320から読み出して実行する。
そして、HDD330には、ログ格納先情報330aが設けられる。ログ格納先情報330aは、図2に示した格納先情報格納メモリ43に記憶されたログ格納先情報に対応する。
そして、CPU310は、ログ格納先情報330aを読み出してRAM340に格納する。CPU310は、RAM340に格納された紐付け情報を用いて、ログ記憶制御プログラム320aを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM340に格納される必要はなく、処理に必要なデータのみがRAM340に格納されれば良い。
なお、上記したログ記憶制御プログラム320aについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)揮発性記憶部と、
不揮発性記憶部と、
ソフトウェアの負荷状態を検出する検出部と、
前記ソフトウェアのログが発生した場合に、当該ログの種別および前記検出部によって検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは前記不揮発性記憶部に格納し、第二の種別に係るログは前記揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定する判定部と、
前記判定部の判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する格納部と
を有することを特徴とする情報処理装置。
(付記2)前記ログの種別ごと並びに前記ソフトウェアの負荷状態ごとに、前記揮発性記憶部または前記不揮発性記憶部のいずれかにログを格納するかを示す情報を記憶した格納先情報記憶部をさらに有し、
前記判定部は、前記ソフトウェアのログが発生した場合に、前記格納先情報記憶部に記憶された情報を参照し、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納するかを判定することを特徴とする付記1記載の情報処理装置。
(付記3)前記検出部は、前記ソフトウェアの実行に用いる演算部の負荷、当該負荷の増加率、前記ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、前記ソフトウェアの実行に用いるメモリ使用率、前記メモリ温度の何れか一つまたは複数を検出することを特徴とする付記1または2に記載の情報処理装置。
(付記4)コンピュータに、
ソフトウェアの負荷状態を検出し、
前記ソフトウェアのログが発生した場合に、当該ログの種別および検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部に格納し、第二の種別に係るログは揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定し、
判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する
各処理を実行させることを特徴とするログ記憶制御プログラム。
(付記5)前記判定する処理は、前記ソフトウェアのログが発生した場合に、格納先情報記憶部に記憶された、前記ログの種別ごと並びに前記ソフトウェアの負荷状態ごとに、前記揮発性記憶部または前記不揮発性記憶部のいずれかにログを格納するかを示す情報を参照し、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納するかを判定することを特徴とする付記4記載のログ記憶制御プログラム。
(付記6)前記検出する処理は、前記ソフトウェアの実行に用いる演算部の負荷、当該負荷の増加率、前記ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、前記ソフトウェアの実行に用いるメモリ使用率、前記メモリ温度の何れか一つまたは複数を検出することを特徴とする付記4または5に記載のログ記憶制御プログラム。
(付記7)コンピュータが、
ソフトウェアの負荷状態を検出し、
前記ソフトウェアのログが発生した場合に、当該ログの種別および検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部に格納し、第二の種別に係るログは揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定し、
判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する
各処理を実行することを特徴とするログ記憶制御方法。
(付記8)前記判定する処理は、前記ソフトウェアのログが発生した場合に、格納先情報記憶部に記憶された、前記ログの種別ごと並びに前記ソフトウェアの負荷状態ごとに、前記揮発性記憶部または前記不揮発性記憶部のいずれかにログを格納するかを示す情報を参照し、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納するかを判定することを特徴とする付記7記載のログ記憶制御方法。
(付記9)前記検出する処理は、前記ソフトウェアの実行に用いる演算部の負荷、当該負荷の増加率、前記ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、前記ソフトウェアの実行に用いるメモリ使用率、前記メモリ温度の何れか一つまたは複数を検出することを特徴とする付記7または8に記載のログ記憶制御方法。