(57)【特許請求の範囲】
【請求項１】
揮発性記憶部と、
不揮発性記憶部と、
ソフトウェアの負荷状態を検出する検出部と、
前記ソフトウェアのログが発生した場合に、当該ログの種別および前記検出部によって検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは前記不揮発性記憶部に格納し、第二の種別に係るログは前記揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定する判定部と、
前記判定部の判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する格納部と
を有することを特徴とする情報処理装置。
【請求項２】
前記ログの種別ごと並びに前記ソフトウェアの負荷状態ごとに、前記揮発性記憶部または前記不揮発性記憶部のいずれかにログを格納するかを示す情報を記憶した格納先情報記憶部をさらに有し、
前記判定部は、前記ソフトウェアのログが発生した場合に、前記格納先情報記憶部に記憶された情報を参照し、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納するかを判定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記検出部は、前記ソフトウェアの実行に用いる演算部の負荷、当該負荷の増加率、前記ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、前記ソフトウェアの実行に用いるメモリ使用率、前記メモリ温度の何れか一つまたは複数を検出することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
コンピュータに、
ソフトウェアの負荷状態を検出し、
前記ソフトウェアのログが発生した場合に、当該ログの種別および検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部に格納し、第二の種別に係るログは揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定し、
判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する
各処理を実行させることを特徴とするログ記憶制御プログラム。
【請求項５】
コンピュータが、
ソフトウェアの負荷状態を検出し、
前記ソフトウェアのログが発生した場合に、当該ログの種別および検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部に格納し、第二の種別に係るログは揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定し、
判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する
各処理を実行することを特徴とするログ記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ログ記憶制御プログラムおよびログ記憶制御方法に関する。
【背景技術】
【０００２】
コンピュータや通信装置などの情報処理装置では、各種のアプリケーションやファームウェアなどのソフトウェアが搭載される。また、情報処理装置では、不具合事象が発生した際の原因解析などのために、ソフトウェアの動作状態やエラーの発生状況などの各種情報をログとして保存することが行われる。例えば、ログを保存する技術として、ログの内容や重要度に応じて、不揮発性メモリへ保存するログと、揮発性メモリへ保存するログを固定的に分ける技術がある。
【０００３】
また、プログラムが異常終了して再起動した際に、異常終了する直前の状態にまでプログラムの状態を復旧できるようにする技術がある。この技術では、ＣＰＵ（Central  Processing  Unit）の利用率が低くなった場合に、プログラムの利用する揮発性メモリ内の情報を不揮発性メモリにメモリコピー情報としてコピーする。
【０００４】
また、ＣＰＵが暴走または停止しても、原因特定のための有用な情報を効率よく蓄積可能にする技術がある。この技術では、ＣＰＵの処理に支障を来たすであろう所定の状態を検出した場合に、ＣＰＵが周辺回路との間でやり取りする所定の信号を取得して不揮発性メモリに記録する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１２２３５７号公報
【特許文献２】特開２００４−１８５３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、情報処理装置で不具合事象が発生した場合、その後、装置が再起動している場合が多く、このような場合には、不揮発性メモリに記憶されたログしか入手することができない。不具合事象の原因解析には、揮発性メモリに保存されていたログが必要な場合も多く、従来のログを保存する技術では、不具合事象の原因解析に有効なログを保存することができない。
【０００７】
なお、全てのログを不揮発性メモリに保存する手法も考えられるが、物理的容量の問題や処理能力の問題などがあり、現実的な解決策ではない。また、ＣＰＵの利用率が低くなった場合に、揮発性メモリ内の情報を不揮発性メモリにコピーする技術では、ＣＰＵの負荷状態が高い状態で装置の電源が突然オフとなった場合、揮発性メモリ内の情報を不揮発性メモリに保存できない。また、この技術では、揮発性メモリ内の情報が全て不揮発性メモリにコピーされるため、解析に有効なログを集中的に保存できない。また、ＣＰＵの処理に支障を来たす所定の状態を検出した場合に、ＣＰＵが周辺回路との間でやり取りする所定の信号を不揮発性メモリに記録する技術では、所定の状態以外で装置の電源が突然オフとなった場合、ログを保存できない。また、この技術では、所定の信号に関するログのみしか保存できない。
【０００８】
開示の技術は、上記に鑑みてなされたものであって、不具合事象の原因解析に有効なログを保存できる情報処理装置、ログ記憶制御プログラムおよびログ記憶制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願の開示する情報処理装置は、一つの態様において、揮発性記憶部と、不揮発性記憶部と、検出部と、判定部と、格納部とを有する。検出部は、ソフトウェアの負荷状態を検出する。判定部は、ソフトウェアのログが発生した場合に、当該ログの種別および検出部によって検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部に格納し、第二の種別に係るログは揮発性記憶部に格納する旨を判定する。また、判定部は、第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを不揮発性記憶部に格納する旨を判定する。格納部は、判定部の判定結果に応じて、ログを揮発性記憶部または不揮発性記憶部のいずれかに格納する。
【発明の効果】
【００１０】
本願の開示するログ記憶制御方法の一つの態様によれば、不具合事象の原因解析に有効なログを保存できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、情報処理装置の構成の一例を示す図である。
【図２】図２は、画像配信システムの構成の一例を示す図である。
【図３】図３は、ＣＰＵユニットの構成の一例を示す図である。
【図４】図４は、ログ格納先情報のデータ構成の一例を示す図である。
【図５】図５は、ログ記憶制御プログラムを実行したＣＰＵの機能的な構成の一例を示す図である。
【図６】図６は、プログラムの処理待ちメッセージ数と負荷状態との関係の一例を示す図である。
【図７】図７は、ログ記憶制御処理の手順を示す図である。
【図８】図８は、ＣＰＵ負荷とソフトウェアの負荷状態との関係の一例を示す図である。
【図９】図９は、ＣＰＵの負荷率とログの格納先との関係の一例を示す図である。
【図１０】図１０は、メモリ使用率とソフトウェアの負荷状態との関係の一例を示す図である。
【図１１】図１１は、所定期間の間に発生するログ数とソフトウェアの負荷状態との関係の一例を示す図である。
【図１２】図１２は、ＣＰＵ負荷の変化と負荷の増加率との関係の一例を示す図である。
【図１３】図１３は、温度センサを設けたＣＰＵユニットの一例を示す図である。
【図１４】図１４は、ログ記憶制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する情報処理装置、ログ記憶制御プログラムおよびログ記憶制御方法の各実施例を図面に基づいて詳細に説明する。なお、各実施例は開示の技術を限定するものではない。
【実施例１】
【００１３】
実施例１に係る情報処理装置について説明する。図１は、情報処理装置の構成の一例を示す図である。図１に示すように、情報処理装置１０は、検出部２１と、判定部２２と、格納部２３と、揮発性記憶部２４と、不揮発性記憶部２５とを有する。情報処理装置１０は、少なくともソフトウェアが搭載された機器であり、例えば、コンピュータ、通信装置などである。揮発性記憶部２４は、フラッシュメモリやＮＶＳＲＡＭ(Non  Volatile  Static  Random  Access  Memory)などのデータを書き換え可能な不揮発性の半導体メモリである。不揮発性記憶部２５は、例えば、フラッシュメモリやＮＶＳＲＡＭなどのデータを書き換え可能な不揮発性の半導体メモリである。
【００１４】
検出部２１は、情報処理装置１０において実行されているソフトウェア２６の負荷状態を検出する。ソフトウェア２６は、例えば、情報処理装置１０が有するＣＰＵ（Central  Processing  Unit）によって実行されるアプリケーションやファームウェアなどのプログラムである。また、ソフトウェア２６は、動作状態やエラーの発生状況などの各種情報をログとして生成する。この負荷状態とは、例えば、ソフトウェアの処理が想定範囲内で定常的に動作している定常状態や、想定範囲を超えて動作している過負荷状態、想定範囲を大きく超えて処理の一時的な停止や制御不能な完全な停止状態となる異常状態などがある。検出部２１は、ソフトウェア２６の実行に用いる演算部の負荷、当該負荷の増加率、ソフトウェア２６による処理待ちのメッセージのキュー数、所定期間内に発生するログ数、ソフトウェア２６の実行に用いるメモリ使用率、メモリ温度などに基づいて負荷状態を検出する。
【００１５】
判定部２２は、ソフトウェア２６のログが発生した場合に、当該ログの種別および検出部２１によって検出された負荷状態に応じて、ログの格納先を判定する。判定部２２は、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部２５に格納し、第二の種別に係るログは揮発性記憶部２４に格納する旨を判定する。また、判定部２２は、第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを不揮発性記憶部２５に格納する旨を判定する。例えば、判定部２２は、定常状態では、メモリ保護違反ログなどエラーに関するログは不揮発性記憶部２５を格納先と判定し、トレースログなど処理履歴のログは揮発性記憶部２４に格納先と判定する。また、判定部２２は、過渡状態や異常状態では、エラーに関するログも処理履歴のログも不揮発性記憶部２５に格納先と判定する。格納部２３は、判定部２２の判定結果に応じて、ログを揮発性記憶部２４または不揮発性記憶部２５のいずれかに格納する。
【００１６】
上述してきたように、情報処理装置１０は、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部２５に格納し、第二の種別に係るログは揮発性記憶部２４に格納する。また、情報処理装置１０は、第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを不揮発性記憶部２５に格納する。すなわち、情報処理装置１０は、負荷が高い場合に、不揮発性記憶部２５に多くの種別のログを格納する。したがって、本実施例に係る情報処理装置１０によれば、不具合事象の原因解析に有効なログを保存できる。つまり、仮に情報処理装置１０が定常状態から過渡状態、異常状態と移行して電源が切断された場合、揮発性記憶部２４に格納されたログは消去する。一方、不揮発性記憶部２５に格納されたログは保存される。例えば、エラーに関するログに加えて、過負荷状態や異常状態における処理履歴のログは保存される。これにより、不具合事象の原因解析が行い易くなる。
【実施例２】
【００１７】
次に、実施例２について説明する。実施例２では、ネットワークなどの通信回線を介して動画などを配信する画像配信システム３０を説明する。図２は、画像配信システムの構成の一例を示す図である。画像配信システム３０は、搭載する機能に応じて各種のユニット３３を搭載可能なインターフェーススロット３１を有する。また、画像配信システム３０は、インターフェーススロット３１の下部に電源部３２を有する。電源部３２は、インターフェーススロット３１に搭載された各ユニットに電力を供給する。
【００１８】
画像配信システム３０は、各種のユニット３３として、２つのＣＰＵユニット３３ａと、１つのクロックユニット３３ｂと、３つの画像ユニット３３ｃとが搭載される。ＣＰＵユニット３３ａは、装置全体を制御する。クロックユニット３３ｂは、各ユニット３３の動作タイミングを示すクロックを提供する。画像ユニット３３ｃは、配信する動画の画像伝送処理を行う。各ユニット３３は、実施例１で説明した情報処理装置１０の一例である。
【００１９】
ここで、ＣＰＵユニット３３ａの構成について説明する。図３は、ＣＰＵユニットの構成の一例を示す図である。ＣＰＵユニット３３ａは、プログラム格納メモリ４０と、不揮発性メモリ４１と、揮発性メモリ４２と、格納先情報格納メモリ４３と、ＣＰＵ４４と、ＲＡＭ４５と、シリアルポート４６と、ＬＡＮ（Local  Area  Network）ポート４７とを有する。プログラム格納メモリ４０、不揮発性メモリ４１、揮発性メモリ４２、格納先情報格納メモリ４３と、ＣＰＵ４４、ＲＡＭ４５、シリアルポート４６、およびＬＡＮポート４７は、バス４８で接続され、バス４８を介して各種の情報をやり取りする。
【００２０】
プログラム格納メモリ４０は、例えば、ＲＯＭ（Read  Only  Memory)、フラッシュメモリなどの不揮発性の半導体メモリ素子である。なお、プログラム格納メモリ４０に代えて、ハードディスクなどの不揮発性の記憶装置を用いてもよい。プログラム格納メモリ４０には、ＯＳ（オペレーティングシステム）やファームウェアなどの各種ソフトウェアのプログラム６０が記憶されている。この各種ソフトウェアのプログラム６０は、ＣＰＵ４４において実行された際に、不具合事象が発生した際の原因解析などのために、ソフトウェアの動作状態やエラーの発生状況などの各種情報をログとして生成する。この生成されるログには、動作状態を示すコードやエラーコードなどログの種別を示す種別情報が含まれている。また、プログラム格納メモリ４０には、ソフトウェアのログの格納先を制御するログ記憶制御プログラム６１が記憶されている。
【００２１】
不揮発性メモリ４１は、例えば、フラッシュメモリやＮＶＳＲＡＭなどのデータを書き換え可能な不揮発性の半導体メモリである。なお、不揮発性メモリ４１に代えて、ハードディスク、光ディスクなどのデータを書き換え可能な不揮発性の記憶装置を用いてもよい。不揮発性メモリ４１は、画像配信システム３０の電源がオフした場合でも保持する必要があるログの記憶領域として用いられ、格納されたログを保持する。
【００２２】
揮発性メモリ４２は、例えば、ＲＡＭ（Random  Access  Memory)などのデータを書き換え可能な揮発性の半導体メモリである。不揮発性メモリ４１は、ログを一時的に記憶する記憶領域として用いられ、ログを一時的に保持する。
【００２３】
格納先情報格納メモリ４３は、例えば、フラッシュメモリやＮＶＳＲＡＭなどのデータを書き換え可能な不揮発性の半導体メモリである。なお、不揮発性メモリに代えて、ハードディスク、光ディスクなどのデータを書き換え可能な不揮発性の記憶装置を用いてもよい。格納先情報格納メモリ４３には、ソフトウェア毎に、当該ソフトウェアで発生したログを揮発性メモリ４２または不揮発性メモリ４１のいずれかに格納するかを示す情報（以下、「ログ格納先情報」ともいう。）が記憶されている。このログ格納先情報には、ソフトウェアのログの種別ごと並びにソフトウェアの負荷状態ごとに、揮発性メモリ４２または不揮発性メモリ４１のいずれかにログを格納するかが記憶されている。
【００２４】
図４は、ログ格納先情報のデータ構成の一例を示す図である。ログ格納先情報には、ログ種別毎に、ソフトウェアの負荷状態が「通常状態」、「過渡状態」、「異常状態」のそれぞれの状態において揮発性メモリ４２または不揮発性メモリ４１のいずれを格納先とするかが記憶されている。この「通常状態」とは、例えば、想定された範囲内で装置が運用されている状態である。「異常状態」とは、例えば、装置に問題があり、運用に支障をきたしており、装置のダウンやリブートになる可能性が多い状態である。「過度状態」とは、例えば、異常状態とまではいかないが、想定された範囲を超えて運用されている状態である。
【００２５】
ところで、ログは、種別によって不具合事象の原因解析に対する有効度が異なる。そこで、本実施例では、ログの種別ごとに原因解析にどの程度有効であるかという重要度を「高」「中」「低」の３段階のログランクとして定めている。例えば、致命的なエラーのログは、ログランクを「高」と定める。特定の状況についての原因解析に有効なログは、ログランクを「中」と定める。デバッグ用のトレースや履歴のログは、ログランクを「低」と定める。本実施例に係るログ格納先情報では、ログランクの高い種別のログは負荷状態が何れの場合も不揮発性メモリ４１に記憶されるように格納先が設定される。また、ログ格納先情報には、ログランクの低い種別のログは負荷状態が低い場合、揮発性メモリ４２に記憶され、負荷状態が高くなると不揮発性メモリ４１に記憶されるように格納先が設定される。
【００２６】
図４の例では、メモリ保護違反ログは、ログランクが「高」とされ、通常状態、過度状態、異常状態のいずれにおいても不揮発性メモリ４１が格納先と設定される。また、図４の例では、プロセスキュー情報やプロセス情報は、ログランクが「中」とされ、通常状態において揮発性メモリ４２が格納先と設定され、過度状態および異常状態において不揮発性メモリ４１が格納先と設定される。図４の例では、プログラムの処理のトレースログは、ログランクが「低」とされ、通常状態および過度状態において揮発性メモリ４２が格納先と設定され、異常状態において不揮発性メモリ４１が格納先と設定される。
【００２７】
図３の説明に戻り、ＲＡＭ４５は、データを書き換え可能な揮発性の半導体メモリである。ＲＡＭ４５は、ＣＰＵ４４が各種プログラムを実行する際のワークエリアとして用いられる。
【００２８】
ＣＰＵ４４は、プログラム格納メモリ４０に格納された各種のプログラム６０やログ記憶制御プログラム６１を読み出して実行する。プログラム６０は、実行されると動作状態やエラーの発生状況などのログを発生する。ログ記憶制御プログラム６１は、プログラム６０で発生したログの種別および負荷状態に応じてログを揮発性メモリ４２または不揮発性メモリ４１のいずれかに格納するかを制御する。
【００２９】
シリアルポート４６およびＬＡＮポート４７は、通信ケーブル４９を介してパーソナルコンピュータなどの端末装置５０と接続される。例えば、画像配信システム３０の管理者は、不具合事象の原因解析などを行う場合、シリアルポート４６またはＬＡＮポート４７に接続された端末装置５０からログ収集コマンドを送信する。ＣＰＵ４４は、ログ収集コマンドを受信すると揮発性メモリ４２および不揮発性メモリ４１に記憶されたログをファイル化し、端末装置５０へ転送する。管理者は、転送されたログファイルの解析を行うことにより、不具合事象の原因解析を行う。なお、他のユニット３３ｂ、ｃもユニット３３ａと同様の構成を有する。
【００３０】
次に、図５を用いて、ログ記憶制御プログラム６１を実行された際の機能的な構成を説明する。図５は、ログ記憶制御プログラムを実行したＣＰＵの機能的な構成の一例を示す図である。また、図５の例では、ログ記憶制御プログラム６１の他に、プログラム６０として、障害検知用のプログラム６０ａや、各種サービル用のプログラム６０ｂ、画像処理のプログラム６０ｃ、ＯＳなどの制御プログラム６０ｄがＣＰＵ４４により実行されている。プログラム６０ａ、６０ｂ、６０ｃは、プロセス間通信によりメッセージをやりとりする。制御プログラム６０ｄは、プログラム６０ａ、６０ｂ、６０ｃの間のプロセス間通信を管理する。ＲＡＭ４５には、プログラム６０ａ、６０ｂ、６０ｃ毎に送信されたメッセージを格納し、処理待ちのメッセージをＦＩＦＯ（First  In  First  Out）形式で管理するメッセージキュー領域が設けられている。
【００３１】
ログ記憶制御プログラム６１は、監視部７０と、判定部７１と、格納部７２とを有する。
【００３２】
監視部７０は、各ソフトウェアの負荷状態として、プログラム６０ａ、６０ｂ、６０ｃ毎に処理待ちのメッセージ数を監視する。例えば、監視部７０は、制御プログラム６０ｄが提供するＡＰＩ(Application  Programming  Interface)などのメッセージ管理用のインタフェースを用いてプログラム６０ａ、６０ｂ、６０ｃ毎に処理待ちのメッセージ数を監視する。
【００３３】
判定部７１には、プログラム６０ａ、６０ｂ、６０ｃで発生したログが送信される。判定部７１は、ログが送信された場合、監視部７０に監視されたプログラム６０ａ、６０ｂ、６０ｃ毎に処理待ちのメッセージ数を参照し、処理待ちのメッセージ数が多いほど負荷状態が高いものとして負荷状態を特定する。例えば、判定部７１は、何れのプログラム６０の処理待ちのメッセージ数も所定の許容範囲以内の場合、負荷状態が通常状態であると特定する。また、判定部７１は、何れかのプログラム６０の処理待ちのメッセージ数が上記許容範囲よりも大きく、上記許容範囲よりも大きい所定の閾値以内の場合、負荷状態が過渡状態であると特定する。また、判定部７１は、何れかのプログラム６０の処理待ちの処理待ちのメッセージ数が上記閾値よりも大きい場合、負荷状態が異常状態であると特定する。図６は、プログラムの処理待ちのメッセージ数と負荷状態との関係の一例を示す図である。図６の例では、処理待ちのメッセージ数が４つまでを許容範囲としている。図６に示すように、プログラム６０ａ、６０ｃの処理待ちのメッセージ数が２つであり、プログラム６０ｂの処理待ちのメッセージ数が３つの場合は、負荷状態が通常状態と特定される。また、プログラム６０ａ、６０ｃの処理待ちのメッセージ数が２つであり、プログラム６０ｂの処理待ちのメッセージ数が６つに増加した場合は、負荷状態が過度状態と特定される。さらに、プログラム６０ａ、６０ｃの処理待ちのメッセージ数が２つであり、プログラム６０ｂの処理待ちのメッセージ数が閾値よりも大きくなった場合は、負荷状態が異常状態と特定される。なお、閾値は、例えば、許容範囲の２倍などと許容範囲を基準に定めてよい。また、処理待ちのメッセージ数がメッセージキュー領域のバッファ溢れとなった場合に負荷状態が異常状態と特定してもよい。
【００３４】
判定部７１は、不揮発性メモリ４１に記憶された各プログラムのログ格納先情報のうち、ログを発生したプログラムのログ格納先情報を参照し、入力されたログを揮発性メモリ４２または不揮発性メモリ４１のいずれかに格納するかを判定する。例えば、判定部７１は、ログ格納先情報から入力されたログに含まれる種別情報により示される種別および特定した負荷状態に対応した格納先を読み出すことにより、入力されたログの格納先を判定する。
【００３５】
これにより、例えば、ログを発生したプログラムのログ格納先情報が図４に示す内容である場合、メモリ保護違反ログは、通常状態、過度状態、異常状態のいずれにおいても不揮発性メモリ４１が格納先と判定される。また、プロセスキュー情報やプロセス情報は、通常状態において揮発性メモリ４２が格納先と判定され、過度状態および異常状態において不揮発性メモリ４１が格納先と判定される。また、プログラムの処理のトレースログは、通常状態および過度状態において揮発性メモリ４２が格納先と判定され、異常状態において不揮発性メモリ４１が格納先と判定される。
【００３６】
格納部７２は、判定部７１の判定結果に応じて、送信されたログを揮発性メモリ４２または不揮発性メモリ４１のいずれかに格納する。なお、格納部７２は、揮発性メモリ４２および不揮発性メモリ４１に記憶されたログの記憶領域がそれぞれ所定量となった場合、最も古いログに上書きして新しいログを格納する格納する。これにより、ログの容量が揮発性メモリ４２および不揮発性メモリ４１の容量を超えてしまい、ログが記憶できなくなることを防止できる。
【００３７】
このように、負荷状態が高い場合、不揮発性メモリ４１に多くの種別のログを格納することにより、不具合事象の原因解析に有効なログを保存できる。
【００３８】
また、負荷状態が低い場合は、ログランクの高いログを不揮発性メモリ４１に格納し、ログランクの低いログを揮発性メモリ４２に格納することにより、重要度の高いログのみが不揮発性メモリ４１に記憶される。これにより、不揮発性メモリ４１は、ログランクの高いログのみが格納されるため、ログランクの高いログを多く保存できる。また、画像配信システム３０がフリーズや再起動していない場合、不揮発性メモリ４１および揮発性メモリ４２からログを読み出すことにより、ログランクの高いログから低いログまで取得できる。
【００３９】
次に、本実施例に係るＣＰＵユニット３３ａの処理の流れを説明する。図７は、ログ記憶制御処理の手順を示すフローチャートである。このログ記憶制御処理は、ＣＰＵユニット３３ａが起動した後、常時実行される。
【００４０】
図７に示すように、判定部７１は、ログを受信したか否かを判定する（ステップＳ１０１）。判定部７１は、ログが未受信の場合（ステップＳ１０１否定）、ＯＳなどから処理終了が指示されたか否かを判定する（ステップＳ１０２）。判定部７１は、処理終了が指示された場合（ステップＳ１０２肯定）、処理を終了する。一方、判定部７１は、処理終了が指示されていない場合（ステップＳ１０２否定）、ステップＳ１０１へ移行する。
【００４１】
判定部７１は、ログを受信した場合（ステップＳ１０１肯定）、監視部７０に監視されたプログラム６０ａ、６０ｂ、６０ｃ毎に処理待ちのメッセージ数を参照して負荷状態を特定する（ステップＳ１０３）。そして、判定部７１は、ログ格納先情報から入力されたログの種別および特定した負荷状態に応じたログの格納先を読み出ことにより、ログの格納先を判定する（ステップＳ１０４）。格納部７２は、ログの格納先が不揮発性メモリ４１であるか否かを判定する（ステップＳ１０５）。格納部７２は、ログの格納先が不揮発性メモリ４１である場合（ステップＳ１０５肯定）、ログを不揮発性メモリ４１に記憶させ（ステップＳ１０６）、その後、ステップＳ１０１へ移行する。一方、格納部７２は、ログの格納先が不揮発性メモリ４１ではない場合（ステップＳ１０５否定）、ログを揮発性メモリ４２に記憶させ（ステップＳ１０７）、その後、ステップＳ１０１へ移行する。
【００４２】
これにより、例えば、メモリ保護違反ログが検出された際に、負荷状態が通常状態、過度状態、異常状態のいずれにおいても、メモリ保護違反ログは不揮発性メモリ４１に記憶される。一方、プロセスキュー情報やプロセス情報のログが検出された際に、負荷状態が通常状態である場合には、プロセスキュー情報やプロセス情報のログは揮発性メモリ４２に記憶される。また、負荷状態が過度状態および異常状態である場合には、プロセスキュー情報やプロセス情報のログは不揮発性メモリ４１に記憶される。一方、トレースログが検出された際に、負荷状態が通常状態および過度状態である場合には、トレースログは揮発性メモリ４２に記憶される。また、負荷状態が異常状態である場合には、トレースログは不揮発性メモリ４１に記憶される。
【００４３】
上述してきたように、本実施例に係るＣＰＵユニット３３ａは、ソフトウェアの負荷状態を検出する。そして、本実施例に係るＣＰＵユニット３３ａは、負荷状態が通常状態の場合にはメモリ保護違反ログは不揮発性メモリ４１に格納し、プロセスキュー情報やプロセス情報のログ、トレースログは揮発性メモリ４２に格納する旨を判定する。また、本実施例に係るＣＰＵユニット３３ａは、負荷状態が過度状態の場合にはプロセスキュー情報やプロセス情報のログ、メモリ保護違反ログは不揮発性メモリ４１に格納し、トレースログは揮発性メモリ４２に格納する旨を判定する。また、本実施例に係るＣＰＵユニット３３ａは、負荷状態が異常状態の場合にはプロセスキュー情報やプロセス情報のログ、メモリ保護違反ログ、トレースログは不揮発性メモリ４１に格納する旨を判定する。そして、本実施例に係るＣＰＵユニット３３ａは、判定結果に応じて、ログを揮発性メモリ４２または不揮発性メモリ４１のいずれかに格納する。このように、負荷状態が高い通常状態の場合、ログランクの高いメモリ保護違反ログを不揮発性メモリ４１に記憶させることにより、不揮発性メモリ４１にログランクの高いログを多く保存できる。また、ＣＰＵユニット３３ａがフリーズや再起動していない場合、不揮発性メモリ４１および揮発性メモリ４２からログを読み出すことにより、ログランクの高いログから低いログまで取得できる。また、負荷状態が高くなるほど、ログランクの低いログも不揮発性メモリ４１に記憶させることにより、ＣＰＵユニット３３ａがフリーズや再起動した場合でも、多くの種別のログを保存できるため、不具合事象の原因解析が行い易くなる。特に、不具合事象は、負荷状態が高い状態で発生しやすい。このため、負荷状態が高い場合に多くの種別のログを不揮発性メモリ４１に格納するログの種別を増やして多くの種別のログを保存することにより、不具合事象の原因解析が行い易くなる。
【００４４】
また、上述してきたように、本実施例に係るＣＰＵユニット３３ａは、格納先情報格納メモリ４３にログの種別ごと並びにソフトウェアの負荷状態ごとに、揮発性メモリ４２または不揮発性メモリ４１のいずれかにログを格納するかを示す情報を記憶する。そして、本実施例に係るＣＰＵユニット３３ａは、ソフトウェアのログが発生した場合に、格納先情報格納メモリ４３に記憶された情報を参照し、ログを揮発性メモリ４２または不揮発性メモリ４１のいずれかに格納するかを判定する。このように、ログの種別ごと並びにソフトウェアの負荷状態ごとに格納先を記憶することにより、ログの種別ごと並びにソフトウェアの負荷状態ごとにログの格納先を細かく制御できる。また、格納先情報格納メモリ４３に記憶された情報を変更することにより、ログの種別ごと並びにソフトウェアの負荷状態ごとに、ログの格納先を変更できる。
【実施例３】
【００４５】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００４６】
例えば、上記の実施例では、監視部７０が、ソフトウェアの負荷状態として、プログラム６０毎に処理待ちのメッセージ数を監視し、判定部７１がメッセージ数が多いほど負荷が高いと検出した場合について例示したが、開示の装置はこれに限定されない。例えば、ＣＰＵ４４のＣＰＵ負荷を求め、ＣＰＵ負荷が高いほど負荷が高いものと検出してもよい。図８は、ＣＰＵ負荷とソフトウェアの負荷状態との関係の一例を示す図である。図８の例では、横軸が時間を示し、縦軸がＣＰＵ負荷を示している。図８の例では、ＣＰＵ負荷が７０％未満の範囲を通常状態と定め、ＣＰＵ負荷が７０％以上、９０％未満の範囲を過度状態と定め、ＣＰＵ負荷が９０％以上の範囲を異常状態と定めている。この場合、監視部７０は、ＣＰＵ４４のＣＰＵ負荷を監視する。判定部７１はＣＰＵ負荷から負荷状態を検出する。図９は、ＣＰＵの負荷率とログの格納先との関係の一例を示す図である。図９の例では、プログラムが発生するログをａ〜ｅで示している。ログａ〜ｅは種別が異なるものとする。図９の例では、ＣＰＵ負荷が７０％未満の通常状態である場合、ログａ、ｂを不揮発性メモリ４１に格納し、ログｃ〜ｅを揮発性メモリ４２に格納する。また、図９の例では、ＣＰＵ負荷が７０％以上、９０％未満の範囲の過度状態である場合、ログａ〜ｃを不揮発性メモリ４１に格納し、ログｄ、ｅを揮発性メモリ４２に格納する。また、図９の例では、ＣＰＵ負荷が９０％以上の範囲の異常状態である場合、ログａ〜ｅを不揮発性メモリ４１に格納する。このように、負荷状態が高い場合、不揮発性メモリ４１に多くの種別のログを格納することにより、不具合事象の原因解析に有効なログを保存できる。
【００４７】
また、ＲＡＭ４５は、メモリリーク等の不具合が発生した場合や、多くのプログラムが実行されて処理負荷が高い場合など、メモリ使用率が高くなる。そこで、ソフトウェアの負荷状態として、例えば、ＲＡＭ４５のメモリ使用率を求め、メモリ使用率が高いほど負荷が高いものと検出してもよい。図１０は、メモリ使用率とソフトウェアの負荷状態との関係の一例を示す図である。図１０の例では、メモリ使用率が５０％未満の範囲を通常状態と定め、メモリ使用率が５０％以上、８０％未満の範囲を過度状態と定め、メモリ使用率が８０％以上の範囲を異常状態と定めている。この場合、監視部７０は、ＲＡＭ４５のメモリ使用率を監視する。判定部７１はメモリ使用率から負荷状態を検出する。
【００４８】
また、プログラム６０は、不具合が発生した場合、発生するログの数が多くなる。そこで、ソフトウェアの負荷状態として、例えば、所定期間の間に発生するログ数を求め、ログ数が高いほど負荷が高いものと検出してもよい。図１１は、所定期間の間に発生するログ数とソフトウェアの負荷状態との関係の一例を示す図である。図１１の例では、横軸が時間を示し、縦軸が１０分間毎の発生したログ数を示している。図１１の例では、１０分間に発生したログ数が５０件未満の範囲を通常状態と定め、１０分間に発生したログ数が５０件以上、１５０件未満の範囲を過度状態と定め、１０分間に発生したログ数が１５０以上の範囲を異常状態と定めている。この場合、監視部７０は、所定期間の間に発生するログ数を監視する。判定部７１は発生したログ数から負荷状態を検出する。
【００４９】
また、ＣＰＵユニット３３ａなどの情報処理装置では、負荷が高くなるとＣＰＵ４４のＣＰＵ負荷が急激に増加する。そこで、ソフトウェアの負荷状態として、例えば、ＣＰＵ４４のＣＰＵ負荷の増加率を求め、増加率が高いほど負荷が高いものと検出してもよい。図１２は、ＣＰＵ負荷の変化と負荷の増加率との一例を示す図である。図１２の例では、横軸が時間を示し、縦軸がＣＰＵ負荷を示している。図１２の例では、ＣＰＵ負荷の増加率を、所定期間Ａと所定期間ＡでのＣＰＵ負荷の増加量Ｂとから、Ｂ／Ａの演算を行って求める。この場合、監視部７０は、所定期間毎にＣＰＵ４４のＣＰＵ負荷の増加率を監視する。判定部７１はＣＰＵ負荷の増加率から負荷状態を検出する。
【００５０】
また、ＲＡＭ４５は、内部データへのアクセスが頻繁に行われて処理負荷が高い場合など、温度が高くなる。そこで、例えば、ＲＡＭ４５の温度を検出する温度センサ９０を設け、監視部７０が、ソフトウェアの負荷状態として、ＲＡＭ４５の温度を監視し、判定部７１が温度が高いほど負荷が高いものと検出してもよい。図１３は、温度センサを設けたＣＰＵユニットの一例を示す図である。なお、図１３では、上記の実施例２のＣＰＵユニットと同様の部分については図３と同様の符号を付し、その説明は省略することとする。図１３の例では、ＲＡＭ４５に温度センサ９０が設けられている。
【００５１】
また、例えば、ソフトウェアの負荷状態として、ＣＰＵ４４の負荷、当該負荷の増加率、ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、ＲＡＭ４５のメモリ使用率、ＲＡＭ４５のメモリ温度の何れか複数を検出してもよい。この場合、検出された複数の負荷状態から全体としての負荷状態を特定すればよい。例えば、検出した複数の負荷状態のうち、最も負荷が高いものを全体の負荷状態と特定してもよい。また、例えば、最も多い負荷状態を全体の負荷状態と特定してもよい。このように、ＣＰＵ４４の負荷、当該負荷の増加率など様々なものから負荷状態を検出することにより、様々な不具合事象による負荷状態の変化を把握できる。
【００５２】
また、上記の実施例では、ソフトウェアの負荷状態を、「第一の負荷状態」、「第二の負荷状態」の２段階、または「通常状態」、「過渡状態」、「異常状態」の３段階に判別した場合について例示したが、開示の装置はこれに限定されない。例えば、負荷状態を４段階以上の状態に判別してもよい。
【００５３】
また、上記の実施例２では、ログの重要度を「高」「中」「低」の３段階のログランクとした場合について例示したが、開示の装置はこれに限定されない。例えば、ログランクを２段階や４段階以上の状態に判別してもよい。
【００５４】
また、各種の負荷や使用状況などに応じて、実施例２において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。例えば、ソフトウェアの負荷状態として、ＣＰＵ４４の負荷、当該負荷の増加率など複数の検出を行う場合、各検出ステップおよび、それぞれの検出結果から負荷状態を判定するステップを追加する。
【００５５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、上記の実施例２では、ログを記憶する不揮発性記憶部とログ格納先情報を記憶する不揮発性記憶部を不揮発性メモリ４１および格納先情報格納メモリ４３と別々に設けた場合について例示したが、開示の装置はこれに限定されない。例えば、１つの不揮発性記憶部にログとログ格納先情報を記憶してもよい。また、上記の実施例２では、ログを記憶する揮発性記憶部とＣＰＵ４４がワークエリアとして用いる揮発性記憶部を揮発性メモリ４２およびＲＡＭ４５と別々に設けた場合について例示したが、開示の装置はこれに限定されない。例えば、１つの揮発性記憶部をログの記憶領域およびＣＰＵ４４がワークエリアとして用いてもよい。
【００５６】
［ログ記憶制御プログラム］
また、上記の実施例で説明した情報処理装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１４を用いて、上記の実施例で説明した情報処理装置と同様の機能を有するログ記憶制御プログラムを実行するコンピュータの一例を説明する。図１４は、ログ記憶制御プログラムを実行するコンピュータを示す図である。
【００５７】
図１４に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３００〜３４０の各部は、バス４００を介して接続される。
【００５８】
ＲＯＭ３２０には、上記の実施例１に示す検出部２１と、判定部２２と、格納部２３と、または実施例２で示す監視部７０と、判定部７１と、格納部７２と同様の機能を発揮するログ記憶制御プログラム３２０ａが予め記憶される。すなわち、ＲＯＭ３２０には、図１４に示すように、ログ記憶制御プログラム３２０ａが記憶される。なお、ログ記憶制御プログラム３２０ａについては、適宜分離しても良い。
【００５９】
そして、ＣＰＵ３１０が、ログ記憶制御プログラム３２０ａをＲＯＭ３２０から読み出して実行する。
【００６０】
そして、ＨＤＤ３３０には、ログ格納先情報３３０ａが設けられる。ログ格納先情報３３０ａは、図２に示した格納先情報格納メモリ４３に記憶されたログ格納先情報に対応する。
【００６１】
そして、ＣＰＵ３１０は、ログ格納先情報３３０ａを読み出してＲＡＭ３４０に格納する。ＣＰＵ３１０は、ＲＡＭ３４０に格納された紐付け情報を用いて、ログ記憶制御プログラム３２０ａを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３４０に格納されれば良い。
【００６２】
なお、上記したログ記憶制御プログラム３２０ａについては、必ずしも最初からＨＤＤ３３０に記憶させておく必要はない。
【００６３】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００６４】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００６５】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
【００６６】
（付記１）揮発性記憶部と、
不揮発性記憶部と、
ソフトウェアの負荷状態を検出する検出部と、
前記ソフトウェアのログが発生した場合に、当該ログの種別および前記検出部によって検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは前記不揮発性記憶部に格納し、第二の種別に係るログは前記揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定する判定部と、
前記判定部の判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する格納部と
を有することを特徴とする情報処理装置。
【００６７】
（付記２）前記ログの種別ごと並びに前記ソフトウェアの負荷状態ごとに、前記揮発性記憶部または前記不揮発性記憶部のいずれかにログを格納するかを示す情報を記憶した格納先情報記憶部をさらに有し、
前記判定部は、前記ソフトウェアのログが発生した場合に、前記格納先情報記憶部に記憶された情報を参照し、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納するかを判定することを特徴とする付記１記載の情報処理装置。
【００６８】
（付記３）前記検出部は、前記ソフトウェアの実行に用いる演算部の負荷、当該負荷の増加率、前記ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、前記ソフトウェアの実行に用いるメモリ使用率、前記メモリ温度の何れか一つまたは複数を検出することを特徴とする付記１または２に記載の情報処理装置。
【００６９】
（付記４）コンピュータに、
ソフトウェアの負荷状態を検出し、
前記ソフトウェアのログが発生した場合に、当該ログの種別および検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部に格納し、第二の種別に係るログは揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定し、
判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する
各処理を実行させることを特徴とするログ記憶制御プログラム。
【００７０】
（付記５）前記判定する処理は、前記ソフトウェアのログが発生した場合に、格納先情報記憶部に記憶された、前記ログの種別ごと並びに前記ソフトウェアの負荷状態ごとに、前記揮発性記憶部または前記不揮発性記憶部のいずれかにログを格納するかを示す情報を参照し、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納するかを判定することを特徴とする付記４記載のログ記憶制御プログラム。
【００７１】
（付記６）前記検出する処理は、前記ソフトウェアの実行に用いる演算部の負荷、当該負荷の増加率、前記ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、前記ソフトウェアの実行に用いるメモリ使用率、前記メモリ温度の何れか一つまたは複数を検出することを特徴とする付記４または５に記載のログ記憶制御プログラム。
【００７２】
（付記７）コンピュータが、
ソフトウェアの負荷状態を検出し、
前記ソフトウェアのログが発生した場合に、当該ログの種別および検出された負荷状態に応じて、第一の負荷状態では、第一の種別に係るログは不揮発性記憶部に格納し、第二の種別に係るログは揮発性記憶部に格納する旨を判定し、前記第一の負荷状態よりも負荷が高い第二の負荷状態では、第一の種別に係るログおよび第二の種別に係るログを前記不揮発性記憶部に格納する旨を判定し、
判定結果に応じて、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納する
各処理を実行することを特徴とするログ記憶制御方法。
【００７３】
（付記８）前記判定する処理は、前記ソフトウェアのログが発生した場合に、格納先情報記憶部に記憶された、前記ログの種別ごと並びに前記ソフトウェアの負荷状態ごとに、前記揮発性記憶部または前記不揮発性記憶部のいずれかにログを格納するかを示す情報を参照し、前記ログを前記揮発性記憶部または前記不揮発性記憶部のいずれかに格納するかを判定することを特徴とする付記７記載のログ記憶制御方法。
【００７４】
（付記９）前記検出する処理は、前記ソフトウェアの実行に用いる演算部の負荷、当該負荷の増加率、前記ソフトウェアによる処理待ちのメッセージのキュー数、所定期間内に発生するログ数、前記ソフトウェアの実行に用いるメモリ使用率、前記メモリ温度の何れか一つまたは複数を検出することを特徴とする付記７または８に記載のログ記憶制御方法。
【符号の説明】
【００７５】
１０        情報処理装置
２１        検出部
２２        判定部
２３        格納部
２４        揮発性記憶部
２５        不揮発性記憶部
２６        ソフトウェア
３０        画像配信システム
３３ａ      ＣＰＵユニット
４０        プログラム格納メモリ
４１        不揮発性メモリ
４２        揮発性メモリ
４３        格納先情報格納メモリ
６１        ログ記憶制御プログラム
７０        監視部
７１        判定部
７２        格納部
９０        温度センサ
【図１】
0005768503.tif 000002
【図２】
0005768503.tif 000003
【図３】
0005768503.tif 000004
【図４】
0005768503.tif 000005
【図５】
0005768503.tif 000006
【図６】
0005768503.tif 000007
【図７】
0005768503.tif 000008
【図８】
0005768503.tif 000009
【図９】
0005768503.tif 000010
【図１０】
0005768503.tif 000011
【図１１】
0005768503.tif 000012
【図１２】
0005768503.tif 000013
【図１３】
0005768503.tif 000014
【図１４】
0005768503.tif 000015