(57)【要約】【課題】システムが正常動作しているかどうかを監視することができる情報処理システム、監視方法及び監視プログラムを提供すること【解決手段】本発明にかかる情報処理システムは、複数のプロセス７０、７１、７２を実行する第１のＣＰＵ８０と、第１のＣＰＵ８０によって実行される複数のプロセス７０、７１、７２を監視する第２のＣＰＵ８１とを備える。また、第２のＣＰＵ８１において動作し、複数のプロセス７０、７１、７２の実行状況に基づいて、複数のプロセス７０、７１、７２の相互間の依存関係を抽出する解析部６０と、第２のＣＰＵ８１において動作し、解析部６０によって抽出された依存関係に基づいて、複数のプロセス７０、７１、７２の動作の異常を検出する監視部６１とを備える。【選択図】図１
2010211574.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセスを実行する第１のＣＰＵと、前記第１のＣＰＵによって実行される複数のプロセスを監視する第２のＣＰＵとを備えた情報処理システムであって、
前記第２のＣＰＵにおいて動作し、前記複数のプロセスの実行状況に基づいて、前記複数のプロセスの相互間の依存関係を抽出する解析部と、
前記第２のＣＰＵにおいて動作し、前記解析部によって抽出された依存関係に基づいて、前記複数のプロセスの動作の異常を検出する監視部とを備えた情報処理システム。
【請求項２】
前記解析部は、前記実行状況を前記複数のプロセスのスケジューリング状況によって判断する請求項１に記載の情報処理システム。
【請求項３】
前記解析部は、前記プロセスの起床から休止までの処理であるセクションの相互間の依存関係を抽出する請求項１又は２に記載の情報処理システム。
【請求項４】
前記解析部は、前記セクションの相互間の依存関係として、任意のセクションの実行に応じて実行されるセクションを抽出する請求項３に記載の情報処理システム。
【請求項５】
前記監視部は、前記解析部が抽出した任意のセクションの実行に応じて実行されるセクションと、前記任意のセクションの実行に応じて実行されるセクションとが一致するかどうかを比較することにより、前記異常を検出する請求項４に記載の情報処理システム。
【請求項６】
前記解析部は、さらに前記セクションにおいてプロセスが実行する処理の実行時間を抽出し、
前記監視部は、さらに前記実行時間も一致するかどうかを比較することにより、前記異常を検出する請求項５に記載の情報処理システム。
【請求項７】
前記情報処理装置は、さらに前記解析部による抽出内容を格納する記憶部を備え、
前記解析部は、前記依存関係によって１つに繋げることのできる一連のセクションのそれぞれに関連付けて前記抽出内容を依存関係情報として前記記憶部に格納し、
前記監視部は、前記記憶部に格納された依存関係情報に基づいて、前記比較を行う請求項５又は６に記載の情報処理システム。
【請求項８】
前記解析部は、前記記憶部に同様の依存関係情報を２つ含まないように格納する請求項７に記載の情報処理システム。
【請求項９】
前記解析部は、前記一連のセクションのうち、時分割スケジューリング方式によって分割されたセクションを１つのセクションにまとめた依存関係情報を格納する請求項７又は８に記載の情報処理システム。
【請求項１０】
前記解析部は、さらに前記セクションにおいてプロセスが実行する処理の実行開始プログラムカウンタ値を抽出し、前記一連のセクションのうち、同じ実行開始プログラムカウンタ値の変化が繰り返されるセクションを１つにまとめた依存関係情報を格納する請求項７乃至９のいずれかに記載の情報処理システム。
【請求項１１】
前記監視部は、さらに前記実行開始プログラムカウンタ値も一致するかどうかを比較することにより、前記異常を検出する請求項１０に記載の情報処理システム。
【請求項１２】
第１のＣＰＵによって実行される複数のプロセスを第２のＣＰＵから監視する監視方法であって、
前記複数のプロセスの実行状況に基づいて、前記複数のプロセスの相互間の依存関係を抽出するステップと、
前記複数のプロセスを監視する場合に、前記依存関係に基づいて、前記複数のプロセスの動作の異常を検出するステップとを備えた監視方法。
【請求項１３】
第１のＣＰＵによって実行される複数のプロセスを第２のＣＰＵから監視する監視方法であって、
前記複数のプロセスの実行状況に基づいて、前記複数のプロセスの相互間の依存関係を抽出するステップと、
前記複数のプロセスを監視する場合に、前記依存関係に基づいて、前記複数のプロセスの動作の異常を検出するステップとを前記第２のＣＰＵに実行させる監視プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、監視方法及び監視プログラムに関する。
【背景技術】
【０００２】
様々な情報処理システムにおいて、正常に動作することが求められている。特に、車載組み込みシステムでは、誤動作が人命に関わるため、高信頼性、高堅牢性や高い動作予測性等が要求されている。このような要求を満たすためには、システムが正常動作しているかどうかを監視する必要がある。
【０００３】
特許文献１には、情報処理システムが正常に稼働しているときの監視データの相関関係と、最新の監視データとを比較することにより、情報処理システムに現在発生している障害を検知し、情報処理システムに異常が発生したときの監視データの相関関係と、最近得られた監視データの相関関係との類似性から情報処理システムに将来発生する可能性のある障害を予測する技術が開示されている。
しかし、特許文献１に開示の技術は、マルチＣＰＵ(Central Processing Unit)システムに関するものではない。
【０００４】
また、特許文献２には、第一のプロセスが第二のプロセスを呼び出す処理を実際にした際に収集した情報と、第二のプロセスが第一のプロセスから呼び出され処理を開始した際に収集した情報とから第一のプロセスと第二のプロセスの連動状態を解析することにより、分散システムで各ノード上のプロセスが協調して処理を進める場合の全体の動作を解析することが可能となる技術が開示されている。
【０００５】
さらに、特許文献３には、各タスク内のジョブ毎の手続き間の実行順序制約と手続き間の依存関係から求めたジョブ間の実行順序制約を各タスク毎に持たせ、タスク毎にこの実行順序制約を基に実行制御させることにより、複数のジョブの同時実行時にも逐次的にジョブを実行した場合と同一の結果を効率よくかつ確実に得ることができる技術が開示されている。
【０００６】
さらにまた、特許文献４には、並列プログラムを利用したリアルタイムシステムにおいて並列プログラムの実行中に時間計測ルーチンによって得られた時刻情報と判定条件を基に実行時間を計算して時間制約条件を検証するように構成することにより、要求仕様として設定された時間制約条件をみたしているかを正確にかつ効率よく検証することができる技術が開示されている。
【０００７】
しかし、特許文献２乃至４に開示の技術は、いずれもシステムの監視に関するものではない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−３２７２６１号公報
【特許文献２】特開平０７−１５２７０４号公報
【特許文献３】特開平０９−１１４６９３号公報
【特許文献４】特開平１１−２４２６１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
システムが正常動作しているかどうかを監視する方法として、システムの正常動作時におけるシステムの動作に関するトレースデータを採取し、採取したトレースデータに基づいて、正常動作時のプロセスの実行状況を解析し、解析した情報を用いて、運用時のシステムの動作を監視する方法が考えられる。
【００１０】
このような方法において、トレースデータを採取する場合に、基板にトレースデータ採取用のインタフェースを実装し、このインタフェースを介して、外部機器にトレースデータを抽出し、抽出したトレースデータをシステムの外部において、解析する方法が考えられるが、コスト及びセキュリティの観点から実際に運用するシステムに適用することは好ましくない。
また、今後マルチＣＰＵ化によるＣＰＵ数の増加が進むにつれて、採取する情報量は増加し、そのトレースデータを外部に抽出するためのインタフェースには膨大な帯域が要求されることとなる。そのため、上述の方法では、実現が困難になることが考えられる。
他方、システムの正常動作時におけるＯＳ(Operating System)におけるプロセスのスケジューリング状況に基づいて高精度な解析を行い、かつ、解析から監視までの処理が全て自動化された監視方法は提案されていない。
【００１１】
以上に説明したように、車載組み込みシステムにおいては、システムが正常動作しているかどうかを監視する必要があるという問題がある。
【００１２】
本発明の目的は、上述のような問題を解決するためになされたものであり、システムが正常動作しているかどうかを監視することができる情報処理システム、監視方法及び監視プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明にかかる情報処理システムは、複数のプロセスを実行する第１のＣＰＵと、前記第１のＣＰＵによって実行される複数のプロセスを監視する第２のＣＰＵとを備えた情報処理システムであって、前記第２のＣＰＵにおいて動作し、前記複数のプロセスの実行状況に基づいて、前記複数のプロセスの相互間の依存関係を抽出する解析部と、前記第２のＣＰＵにおいて動作し、前記解析部によって抽出された依存関係に基づいて、前記複数のプロセスの動作の異常を検出する監視部とを備えたものである。
【００１４】
本発明にかかる監視方法は、第１のＣＰＵによって実行される複数のプロセスを第２のＣＰＵから監視する監視方法であって、前記複数のプロセスの実行状況に基づいて、前記複数のプロセスの相互間の依存関係を抽出するステップと、前記複数のプロセスを監視する場合に、前記依存関係に基づいて、前記複数のプロセスの動作の異常を検出するステップとを備えたものである。
【００１５】
本発明にかかる監視プログラムは、第１のＣＰＵによって実行される複数のプロセスを第２のＣＰＵから監視する監視方法であって、前記複数のプロセスの実行状況に基づいて、前記複数のプロセスの相互間の依存関係を抽出するステップと、前記複数のプロセスを監視する場合に、前記依存関係に基づいて、前記複数のプロセスの動作の異常を検出するステップとを前記第２のＣＰＵに実行させるものである。
【発明の効果】
【００１６】
本発明により、システムが正常動作しているかどうかを監視することができる情報処理システム、監視方法及び監視プログラムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態にかかる解析監視システムの概要を示す概念図である。
【図２】本発明の実施の形態にかかる解析監視システムの構成図である。
【図３】本発明の実施の形態にかかる解析監視システムの解析フェーズにおいて動作する要素を示す概念図である。
【図４】本発明の実施の形態にかかる解析監視システムの監視フェーズにおいて動作する要素を示す概念図である。
【図５】本発明の実施の形態にかかる解析フェーズにおける処理概要を示す図である。
【図６】本発明の実施の形態にかかる一時依存木データの生成処理のフローチャートである。
【図７】本発明の実施の形態にかかる依存木データの一例を示す図である。
【図８】本発明の実施の形態にかかる依存木データの生成処理のフローチャートである。
【図９】本発明の実施の形態にかかる監視フェーズにおける処理概要を示す図である。
【図１０】本発明の実施の形態にかかる監視フェーズにおける処理概要を示す図である。
【図１１】本発明の実施の形態にかかる監視フェーズにおける処理概要を示す図である。
【図１２】本発明の実施の形態にかかる監視フェーズにおける処理概要を示す図である。
【図１３】本発明の実施の形態にかかる監視フェーズにおける処理概要を示す図である。
【図１４】本発明の実施の形態にかかる監視処理のフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施の形態について説明する。
まず、図１を参照して、本実施の形態にかかる解析監視システムの概要について説明する。図１は、本実施の形態にかかる解析監視システムの概要を示す概念図である。
【００１９】
解析監視システムは、プロセス７０、７１、７２を実行するＣＰＵ８０、解析部６０及び監視部６１を動作させるＣＰＵ８１を備える。
解析部６０は、プロセス７０、７１、７２の実行状況に基づいて、プロセス７０、７１、７２の相互間の依存関係を抽出する。
監視部６１は、プロセス７０、７１、７２を監視する場合に、解析部６０が抽出した依存関係に基づいて、プロセス７０、７１、７２の動作の異常を検出する。
プロセス７０、７１、７２は、任意のプログラムを動作させたものであり、所定の処理を実行する。なお、プロセス数は、本実施の形態に例示した数に限られない。
ＣＰＵ８０、８１は、それぞれがシングルコアＣＰＵであってもよく、マルチコアＣＰＵに含まれるＣＰＵコアであってもよい。なお、ＣＰＵ数は、本実施の形態に例示した数に限られない。
【００２０】
続いて、本実施の形態にかかる解析監視システムの処理の概要について説明する。
まず、解析部６０は、プロセス７０、７１、７２の実行状況に基づいて、プロセス７０、７１、７２の相互間の依存関係を抽出する。
次に、監視部６１は、プロセス７０、７１、７２を監視する場合に、解析部６０が抽出した依存関係を取得し、取得した依存関係に基づいて、プロセス７０、７１、７２の動作の異常を検出する。
【００２１】
続いて、図２、３、４を参照して、本実施の形態にかかる解析監視システムについて詳細に説明する。図２は、本実施の形態にかかる解析監視システムの構成図であり、図３、４は、本実施の形態にかかる解析監視システムの概念図である。
【００２２】
解析監視システムは、図１に示すように、スケジューリング実行部１、実行依存検知部２、依存データ整形部３、監視実行部４、一時依存木データ５及び依存木データ６を有している。また、解析監視システムは、図２及び３に示すように、スケジューリング実行部１を動作させるＣＰＵ４０、４１、４２、実行依存検知部２と依存データ整形部３を動作させるＣＰＵ４３、監視実行部４を動作させるＣＰＵ４４及び一時依存木データ５と依存木データ６を格納するＤＲＡＭ(Dynamic Random Access Memory)５０を備える。なお、ＣＰＵ４０、４１、４２は、複数の任意のプロセスを動作させるが、それらのプロセスについては図示を省略している。また、それらのプロセスは、スケジューリング実行部１に含まれる。なお、実行依存検知部２と依存データ整形部３を動作させるＣＰＵ４３と、監視実行部４を動作させるＣＰＵ４４は、同一のＣＰＵであってもよい。
【００２３】
スケジューリング実行部１は、複数のプロセスのスケジューリングを行うとともに、これらのプロセスを実行する。スケジューリング実行部１は、スケジューリングによって、実行可能状態となったプロセスのリストである実行キュー(図示せず)の制御を行う。スケジューリング実行部１は、例えば、ＯＳのスケジューラにより構成される。
【００２４】
実行依存検知部２は、複数のプロセスの実行状況に基づいて、複数のプロセスの相互間の依存関係を抽出する。また、実行依存検知部２は、抽出した依存関係を示す一時依存木データ５を生成し、生成した一時依存木データ５をＤＲＡＭ５０に格納する。
依存データ整形部３は、ＤＲＡＭ５０に格納される一時依存木データ５を取得し、取得した一時依存木データ５を整形して依存木データ６を生成する。そして、依存データ整形部３は、生成した依存木データ６をＤＲＡＭ５０に格納する。実行依存検知部２及び依存データ整形部３は、解析部として機能する。
【００２５】
監視実行部４は、ＤＲＡＭ５０に格納される依存木データ６に基づいて、複数のプロセスの動作の異常を検出する。監視実行部４は、監視部として機能する。
実行依存検知部２、依存データ整形部３及び監視実行部４は、例えば、ＯＳにおける機能の一部として実装する。
【００２６】
ＣＰＵ４０、４１、４２、４３、４４は、それぞれがシングルコアＣＰＵであってもよく、マルチコアＣＰＵに含まれるＣＰＵコアであってもよい。なお、ＣＰＵ数は、本実施の形態に例示した数に限られない。
ＤＲＡＭ５０は、実行依存検知部２又は実行依存検知部２において行われる処理に影響しない速度で、一時依存木データ５もしくは依存木データ６の格納もしくは取得が行える記憶装置であればどのようなものであってもよい。ＤＲＡＭ５０は、記憶部に相当する。
【００２７】
本実施の形態にかかる解析監視システムは、その動作が２段階のフェーズに分かれる。２段階のフェーズは、システムの正常動作を解析して依存木データ６を生成する解析フェーズと、生成した依存木データ６に基づいてシステムを監視し、異常動作を検出する監視フェーズに分かれる。図３、４を参照して、本実施の形態にかかる各フェーズの概要について説明する。
【００２８】
解析フェーズでは、図３に示すように、実行依存検知部２は、スケジューリング実行部１における割り込みの発生、プロセスの生成、実行キューの出入り及びプロセスが実行する処理の実行時間を監視し、各プロセスの相互間の依存関係を示す一時依存木データ５を生成する。
依存データ整形部３は、依存木データ６を管理しており、実行依存検知部２が生成する一時依存木データ５を取得し、取得した一時依存木データ５から依存木データ６を生成するとともに、同様の依存木データ６が重複することのないようにＤＲＡＭ５０に格納する。なお、依存データ整形部３は、高い応答性で動作する必要がある実行依存検知部２の処理の合間に動作するように、実行依存検知部２よりも実行優先度を低く設定することが好ましい。
【００２９】
このように解析フェーズでは、プロセスを実行するＣＰＵ４０、４１、４２とは異なるＣＰＵ４３によって動作させている実行依存検知部２が正常動作時の各プロセスのスケジューリング状況を監視することにより、正常動作時における各プロセスの相互間の依存関係を示す依存木データ６を生成している。
【００３０】
また、ＤＲＡＭ５０には、実行依存検知部２から依存データ整形部３への依存木データ５の受け渡すためのＦＩＦＯ(First In First Out)バッファを用意することにより、ＤＲＡＭ５０の容量が許す限り依存データ整形部３における動作の遅延が可能である。さらに、実行依存検知部２と依存データ整形部３は、並行動作が可能であるため、ＣＰＵ４３を複数にして、実行依存検知部２と依存データ整形部３を別々のＣＰＵによって並行動作させることにより、高速化が可能である。
【００３１】
監視フェーズでは、図４に示すように、監視実行部４がスケジューリング実行部１における割り込みの発生、実行キューの出入り及びプロセスの処理の実行時間を監視することにより、解析フェーズにおいて生成した依存木データ６と一致する動作が行われているかどうかを判断する。そして、監視実行部４は、依存木データ６に登録されていないタイミングでのプロセスの起床や実行時間の遅延を検出することで異常を検出する。
このように、監視フェーズでは、言い換えると、運用動作時では、正常動作時の依存木データ６に基づいて、スケジューリング実行部１の動作を監視実行部４が監視することにより、異常動作を検出する。
【００３２】
続いて、図３、５〜８を参照して、本実施の形態にかかる解析フェーズの詳細について説明する。図３に示すように、解析フェーズの目的は、スケジューリング実行部１における動作を監視および解析し、解析により生成した一時依存木データ５を整形することにより、監視フェーズにおいて利用可能な依存木データ６を生成することである。この一連の処理概要を図５に示す。
【００３３】
まず、実行依存検知部２における処理について説明する。
図５(a)は、スケジューリング実行部１において実行するプロセスの処理の一例を示す図である。ここで、スケジューリング実行部１において実行する各プロセスの起床から休止までの処理を1つのセクション９０、９１、９２、９３、９４とする。図５(a)における各プロセスは、各セクション９０、９１、９２、９３、９４における"起床"のタイミングで実行可能状態となり、実行キューに登録される。また、各セクション９０、９１、９２、９３、９４における"実行開始"以降から"休止"までの区間は、プロセスに実行権が付与され、各セクションにおいてプロセスが処理を実行する区間を示す。
【００３４】
まず、実行依存検知部２は、実行キューを監視し、スケジューリング実行１において割り込みが発生し、発生した割り込みに応じて、起床させられたプロセスＡの実行キューへの登録を検出する。それにより、実行依存検知部２は、セクション９０を検出する。
次に、実行依存検知部２は、同様に実行キューを監視することで、セクション９０の実行中に実行が開始されたセクション９１、９２を検出する。この場合、実行依存検知部２は、検出したセクション９１、９２は、実行中のセクション９０に依存する、つまり、検出したセクション９１、９２は、実行中のセクション９０と相互に依存関係があると判断する。その理由は、このような場合、一般的に、プロセスＡのセクション９０における処理、例えば、ロックの解除やプロセス間のメッセージ送信などの処理をトリガとして、セクション９１、９２が実行されているためである。そして、実行依存検知部２は、セクション９０とセクション９１、９２との相互間に依存関係を示す枝を張ることにより、図５(b)に示すような一時依存木データ５を生成していく。
【００３５】
ここで、本実施の形態では、プロセスを実行するＣＰＵ４０、４１、４２が複数あるため、セクション９０以外にも実行中のセクションがある可能性があるが、その場合は、ロックの解除やプロセス間のメッセージ送信を行ったプロセス(ここでは、プロセスＡ)をＯＳが認識しているため、それに基づいて判断を行うことで依存するセクションの特定が可能である。
【００３６】
以降、同様にして、依存関係が検出されなくなるまでの全てのセクション９０、９１、９２、９３、９４が実行されると、図５(b)に示すような１つの一時依存木データ５が生成される。
そして、実行依存検知部２は、生成した一時依存木データ５を依存データ整形部３に渡すため、ＤＲＡＭ５０のＦＩＦＯバッファに格納する。
【００３７】
続いて、図６を参照して、以上に説明した一時依存木データ５の生成処理の詳細について説明する。図６は、本実施の形態にかかる一時依存木データ５の生成処理のフローチャートである。なお、図６では、Ｓ１０〜Ｓ１４は、スケジューリング実行部１における処理を示しており、Ｓ１００〜Ｓ１０６は、実行依存検知部２における処理を示している。
【００３８】
まず、スケジューリング実行部１は、実行可能状態となったプロセスを実行キューに登録する(Ｓ１０)。
実行依存検知部２は、実行キューを監視して、実行可能状態に移行したプロセスの実行キューへの登録を検出する。これにより、実行が開始されたセクションを検出し、検出したセクションを先頭として登録した作成中依存木を作成する(Ｓ１００)。ここで、作成中依存木とは、依存木に登録されている各セクションの実行が完了していない木である。また、セクションの実行の完了は、そのセクションが対象としているプロセスが実行キューから除去されたときに完了と判断する。
次に、スケジューリング実行部１は、実行キューに登録された実行可能状態のプロセスに実行権を付与してプロセスを実行し、現在実行中のセクションにおける処理を実行する(Ｓ１１)。
【００３９】
次に、実行依存検知部２は、プロセスの実行中にスケジューリング実行部１が新たなプロセスを実行可能状態に移行させて実行キューに登録した場合(Ｓ１２)、その登録要因を判断する(Ｓ１０１)。
新たなプロセスの登録要因が起動要因である場合、実行依存検知部２は、この実行キューの登録において検出したセクションを先頭として登録した作成中依存木を作成する(Ｓ１０３)。ここで、起動要因とは、依存関係によって１つに繋げることのできる新たな一連のセクションの実行が開始されたと判断するプロセスの登録要因である。本実施の形態では、例えば、外部割り込みやプロセス生成システムコール等を起動要因とする。つまり、ステップＳ１０における実行キューの登録も起動要因によるものとなる。
【００４０】
一方、新たなプロセスの登録要因が起動要因以外である場合、実行依存検知部２は、現在実行中のセクションにおける処理に応じたプロセスの起床であると判断し、実行中のセクションに依存関係を持たせて検出したセクションを作成中依存木に登録する(Ｓ１０２)。つまり、実行依存検知部２は、検出したセクションは、現在実行中のセクションと依存関係があると判断している。
次に、実行依存検知部２は、スケジューリング実行部１が現在実行中のプロセスの実行を終了した場合(Ｓ１３)、それによって実行が完了したセクションの実行時間を登録する(Ｓ１０４)。ここで、実行時間とは、セクションにおける処理の実行時間である。なお、実行時間は、これに限られず、例えば、セクションの実行時間を登録するようにしてもよい。
【００４１】
次に、実行依存検知部２は、この段階で作成中依存木に登録されている全てのセクションの実行が完了しているか、つまり、実行が完了したセクションに依存するセクションが作成中依存木に登録されており、それに対応するプロセスが実行キューに登録されているかどうかを判断する(Ｓ１０５)。
全てのセクションの実行が完了している場合、実行依存検知部２は、その依存中依存木の作成は完了したものと判断し、一時依存木データ５として、依存データ整形部３に渡すために、ＤＲＡＭ５０のＦＩＦＯバッファに格納する(Ｓ１０６)。
全てのセクションの実行が完了していない場合は、スケジューリング実行部１は、実行キューに登録されている次のプロセスを実行する(Ｓ１４、Ｓ１１)。
【００４２】
続いて、依存データ整形部３における処理について説明する。
依存データ整形部３は、図５(b)に例示するような一時依存木データ５に基づいて、図５(c)に例示するような監視フェーズで使用する依存木データ６を生成する。ここで、依存データ整形部３が実施する処理は、時分割スケジューリング方式による分断されたセクションの統合、ループ処理の検出および既存の依存木データ６との重複登録の回避である。
【００４３】
依存データ整形部３が生成する依存木データ６は、図７に例示するように、起動要因と、それに応じて依存関係を有しながら実行される一連のセクションとを示す情報からなる。言い換えると、一連のセクションとは、依存関係によって１つに繋げることのできるセクションの集まりである。１つのセクションを示す１項目は、プロセス毎に一意に決まるプロセスＩＤ及びセクション毎に一意に決まるセクション番号を含んだセクションＩＤ、依存先セクションＩＤ、実行開始プログラムカウンタ値および実行時間を含み、これらが実行キューに登録された順番に並んでいる。つまり、実行依存検知部２は、これらの情報を含めて、一時依存木データ５を生成している。ここで、実行開始プログラムカウンタ値は、プロセスがそのセクションにおける処理を開始するプログラムカウンタ値であり、ループ処理の検出、依存木データ６の重複検出に使用される。
【００４４】
続いて、図８を参照して、以上に説明した依存木データ６の生成処理の詳細について説明する。図８は、本実施の形態にかかる依存木データ６の生成処理のフローチャートである。
【００４５】
まず、依存データ整形部３は、一時依存木データ５を記録したＦＩＦＯバッファから一時依存木データ５を１つ取得する(Ｓ２００)。
次に、依存データ整形部３は、一時依存木データ５に依存先セクションＩＤが同じセクションＩＤを示す２つ以上のセクションがある場合は、それらを１つのセクションにする(Ｓ２０１、Ｓ２０２)。時分割スケジューリング方式のように所定の時間によりプロセスの実行権が切り替えられている場合、本質的には1つのセクションとなるべきものが、一時依存木データ５では分割されてしまうことがある。このような場合、依存先セクションＩＤが同じとなる２つ以上のセクションが一時依存木データ５にできてしまうため、それらのセクションを1つに結合する。つまり、実行依存検知部２では、時分割スケジューリングの切り替えによる実行キューの登録を検出した場合、実行中のプロセスと同じプロセスが実行キューに登録された場合は、新たに作成中依存木に追加するセクションの依存先セクションとして、実行中のセクションの依存先セクションと同じセクションを格納していることとなる。なお、結合により生成するセクションの実行開始プログラムカウンタ値には、結合する２つ以上のセクションのうち、一時依存木データ５において最も先頭のセクションにおける値を使用し、実行時間には、結合する２つ以上のセクションの実行時間を加算した値を使用する。
【００４６】
次に、依存データ整形部３は、ループ処理を検出する(Ｓ２０３)。ここでは、依存データ整形部３は、各セクションの実行開始プログラムカウンタ値を実行キューに登録された順番に並べたときに、同様の数列が繰り返される部分を１つのループ処理にまとめる。図７における"外部割込みＡ"を起動要因として、セクション"プロセスＢ−１"から始まる依存木データ６に、その一例が示されている。ここでは、セクション"プロセスＢ−２""プロセスＡ−１"における処理がループすることを示している。なお、セクションに代わり、ループを示している情報には、ループ回数などのループに関する情報を格納してもよい。
【００４７】
次に、依存データ整形部３は、ＤＲＡＭ５０に格納している依存木データ６に同様の依存木データ６があるかどうかを検索する(Ｓ２０４、Ｓ２０５)。
同様の依存木データ６がある場合、具体的には、各セクションの実行開始プログラムカウンタ値が同じ、つまり、同じ依存木の形状であり、各セクションの実行時間が近く、その差が所定の閾値内に収まる依存木データ６がある場合、依存データ整形部３は、これら２つの依存木データ６を統合し、１つの依存木データ６としてＤＲＡＭ５０に格納する(Ｓ２０６)。このとき、各セクションの実行時間は、それぞれの平均値を算出して、算出した平均値を実行時間として格納する。
同じ依存木データ６がない場合、依存データ整形部３は、生成した依存木データ６をＤＲＡＭ５０に格納する。
【００４８】
このようにして、依存データ整形部３が、セクションの統合、ループ処理の検出および既存の依存木データ６との重複登録の回避を行うことにより、ＤＲＡＭ５０に格納するデータ量を削減することができる。
なお、依存木データ６は、上述のように動的に解析したものだけでなく、ユーザが作成して直接ＤＲＡＭ５０に登録するようにしてもよい。
【００４９】
続いて、図４、７、９〜１４を参照して、本実施の形態にかかる監視フェーズの詳細について説明する。図４に示すように、監視フェーズの目的は、スケジューリング実行部１における動作と、依存木データ６に示す正常動作とを比較することにより異常を検出することである。監視フェーズでは、起動要因及び実行されるセクションに応じて、解析フェーズで生成した依存木データ６からスケジューリング実行部１における動作に適合する依存木データ６を選択していく。そして、１つも適合する依存木データ６がないことを検出した場合に異常と判断する。その監視の一連の処理概要を図９〜１３に示す。なお、ここでは、図７に例示した依存木データ６がＤＲＡＭ５０に格納されている場合について例示する。
【００５０】
まず、図９では、外部割込みＡが起動要因として発生した状況を示している。依存木データ６は起動要因毎にまとめてＤＲＡＭ５０に格納されており、監視実行部４は、実行する可能性のあるセクションが格納された監視対象依存木リストとして、外部割込みＡを起動要因として示している依存木データ６を選択する。ここで、監視対象依存木リストとは、依存木データ６のうち、その時点において、これから実行される一連のセクションが適合する可能性のある依存木データ６のことである。
次に、図１０では、起動要因によりプロセスＡが実行キューに登録され、セクション"プロセスＡ−１"の実行が開始された状況を示している。そのため、監視実行部４は、監視対象依存木リストのうち、最初にプロセスＡによって実行されるセクションを示している監視対象依存木だけを監視対象依存木リストとして残す。
【００５１】
次に、図１１では、プロセスＡの実行により、プロセスＣが起床されて実行キューに登録されるとともに、外部割込みＢが起動要因として発生し、それに応じてプロセスＤが実行キューに登録された状況を示している。監視実行部４は、外部割込みＢ及びプロセスＤに応じた新たな監視対象依存木リストを選択する。このように、監視実行部４は、起動要因である外部割込みＢによって新たな監視対象が発生した場合、それに応じた新たな監視対象既存木リストを生成する。また、監視実行部４は、プロセスがどちらの監視対象依存木リストに関係しているかを明確にするために、実行キューに登録されたプロセスをいずれかの監視対象依存木リストと対応付ける。
【００５２】
ここで、起動要因以外によって実行キューに登録されたプロセスが対応付けられる監視対象依存木リストは、そのプロセスが実行キューに登録されたときに現在実行中のプロセスが対応付けられている監視対象依存木リストである。このときに、実行キューに登録されたプロセスは、現在実行中のセクションに依存するセクションの実行開始に伴って、実行キューに登録されていることになるからである。なお、複数のプロセスが並行して実行されている場合は、既に述べたように、実行キューに登録されたプロセスを起床したプロセスをＯＳが認識しているため、それに基づいてプロセスの特定が可能である。
一方、起動要因により、依存木データ６の先頭となるセクションの実行が開始され、プロセスが実行キューに登録された場合は、現在実行中のプロセスとは関係なく、その起動要因によって生成された監視対象依存木リストに対応付けられる。
【００５３】
次に、正常動作が行われた場合には、現在実行中のセクション"プロセスＡ−１"に依存するセクション"プロセスＣ−１"における処理を実行するプロセスＣが次に実行キューに登録されるプロセスとなる。図１１では、プロセスＣが実行キューに登録されているため、監視実行部４は、正常動作であると判断する。
【００５４】
次に、図１２では、スケジューリング実行部１においてプロセスＣの実行が開始された状態を示している。監視実行部４は、先に実行していたセクション"プロセスＡ−１"の次のセクションがプロセスＣを示している監視対象依存木のみを監視対象依存木リストとして残す。また、実行完了したセクションも監視対象から除外する。正常動作時には、このまま全てのセクションを除外するまで進む。
一方、監視実行部４は、図１３に示すように、監視対象依存木リストにないプロセスの実行キューへの登録や、監視対象依存木リストに登録されている実行時間と比較して、プロセスによるセクションにおける処理の実行時間が長い場合、異常として検出する。なお、監視実行部４は、異常を検出した場合に、監視対象依存木リストや実行キューに登録された監視対象依存木リストにないプロセス等の異常に関する情報を、例えば、メモリもしくはＨＤＤ(Hard Disc Drive)等の任意の記憶装置(図示せず)や、例えば、ＣＲＴ(Cathode Ray Tube)、プラズマディスプレイ、液晶ディスプレイ等の任意の表示装置(図示せず)に出力するようにしてもよい。
【００５５】
続いて、図１４を参照して、以上に説明した監視処理の詳細について説明する。図１４は、本実施の形態にかかる監視処理のフローチャートである。なお、図１４では、Ｓ３０〜Ｓ３４は、スケジューリング実行部１における処理を示しており、Ｓ３００〜Ｓ３０６は、実行依存検知部２における処理を示している。
【００５６】
まず、スケジューリング実行部１は、起動要因が発生すると、それに応じて実行可能状態となったプロセスを実行キューに登録する(Ｓ３０)。
監視実行部４は、起動要因に応じてプロセスが実行キューに登録された場合、監視対象依存木リストを生成する(Ｓ３００)。このとき、監視実行部４は、起動要因と、それに応じて実行キューに登録されるプロセスが判明しているため、それらに適合する依存木データ６を選択して、監視対象依存木リストを生成する。
次に、スケジューリング実行部１は、実行キューに登録された実行可能状態のプロセスに実行権を付与してプロセスを実行し、セクションにおける処理を実行する(Ｓ３１)。
【００５７】
次に、監視実行部４は、プロセスの実行中にスケジューリング実行部１が新たなプロセスを実行可能状態に移行させて実行キューに登録した場合(Ｓ３２)、その登録要因を判断する(Ｓ３０１)。
新たなプロセスの登録要因が起動要因である場合、監視実行部４は、新たなプロセスと、その起動要因に適合する依存木データ６を選択し、監視対象依存木リストを作成する(Ｓ３０２)。
一方、新たなプロセスの登録要因が起動要因以外である場合、監視実行部４は、実行中のプロセスと対応付けられている監視対象依存木リストを検索し、監視対象依存木リスト内に、現在実行中のセクションに依存関係のあるセクションが示しているプロセスと、新たなプロセスとが一致する監視対象依存木があるかどうかを判断する(Ｓ３０３)。
【００５８】
一致するものがあった場合、もしくは、現在実行中のプロセスと実行キューに登録されたプロセスが同じ場合、つまり、時分割スケジューリングによる切り替えが行われた場合、監視実行部４は、正常と判断する。
一致するものがない場合、監視実行部４は、異常が発生したと判断する。
ここで、さらに監視対象依存木の実行開始プログラムカウンタ値と、プロセスの実行によって行われるセクションにおける処理の実行開始プログラムカウンタ値とが一致するかどうかも判断することにより、高い精度で異常を検出するようにしてもよい。
【００５９】
また、監視実行部４は、現在実行中のプロセスの実行時間が、監視対象依存木リストに残っている監視対象依存木の現在実行中のセクションに対応する実行時間のうち、最も長いものを超えた場合にも異常が発生したと判断する(Ｓ３０４)。ここで、最も長いものとしている理由は、監視対象依存木が複数残っている場合は、それぞれの監視対象依存木に現在実行中のセクションに対応する実行時間があるためである。なお、実行時間は、監視対象依存木の実行時間と、現在実行中のプロセスの実行時間との差が所定の閾値を超えた場合に異常が発生したと判断するようにしてもよい。
【００６０】
次に、スケジューリング実行部１が現在実行中のプロセスの実行を終了した場合(Ｓ３３)、監視実行部４は、そのプロセスに対応付けられている監視対象依存木リストが一つだけの依存木になっており、かつ、その全てのセクションが実行されているかどうかを判断する(Ｓ３０５)。なお、プロセスの実行を終了したことは、実行キューからプロセスが除かれた状態を検出することにより、判断することができる。
監視対象依存木リストが一つだけの依存木になっており、かつ、その全てのセクションが実行されている場合、監視実行部４は、その一連のセクションの実行を正常に終了したと判断する。
それ以外の場合は、監視実行部４は、スケジューリング実行部１が実行キューに登録されている次のプロセスを実行した場合に(Ｓ３４)、監視対象依存木リストから、そのプロセスに適合しない監視対象依存木を削除し(Ｓ３０６)、処理を継続する。
【００６１】
以上に説明したように、本実施の形態によれば、複数のプロセスの実行状況に基づいて、複数のプロセスの相互間の依存関係を抽出して、抽出した依存関係に基づいて、複数のプロセスの動作の異常を検出することにより、システムが正常動作しているかどうかを監視することを可能としている。
さらに、本実施の形態によれば、外部機器や外部とのインタフェース等を必要とせず、運用時の環境のままで、システムの監視を行うことが可能である。また、これにより、外部機器や外部インタフェースを実装することによる、コストの増加やセキュリティ上の問題も発生することがなくなる。
さらにまた、本実施の形態によれば、システムの解析を行って監視用データを自動生成し、自動生成した監視用データを用いてシステムの監視を行うことにより、システムの解析からその監視までを全て自動化して行うことが可能である。
また、本実施の形態によれば、異常発生時には、監視実行部が出力した情報を参照することにより、直前までの一連のシステムの動作を把握することが可能である。
さらに、本実施の形態によれば、プロセスのスケジューリング状況に基づいて、解析及び監視を行っているため、高精度な監視を行うことが可能となる。
【００６２】
なお、本発明は上述した実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
例えば、本実施の形態では、プロセスの起床から休止までの処理であるセクションの相互間の依存関係を抽出しているが、プロセスに関する依存関係であれば、これに限られない。例えば、セクションにおいてプロセスが実行する処理について、相互間の依存関係を管理するようにしてもよい。
【００６３】
以上に説明した本発明にかかる解析監視システムは、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体をシステムもしくは装置に供給し、システムあるいは装置の有するコンピュータ又はＣＰＵ、ＭＰＵ(Micro Processing Unit)がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＤＶＤ(Digital Versatile Disc)、ＢＤ(Blu-ray Disc)、ＲＯＭ(Read Only Memory)カートリッジ、バッテリバックアップ付きＲＡＭ(Random Access Memory)メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジを含む。また、通信媒体には、電話回線の有線通信媒体、マイクロ波回線の無線通信媒体を含み、インターネットも含まれる。
【００６４】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているＯＳもしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【符号の説明】
【００６５】
１    スケジューリング実行部
２    実行依存検知部
３    依存データ整形部
４    監視実行部
５    一時依存木データ
６    依存木データ
４０、４１、４２、４３、４４、８０、８１    ＣＰＵ
５０    ＤＲＡＭ
６０    解析部
６１    監視部
７０、７１、７２    プロセス
【図１】
2010211574.tif 000003
【図２】
2010211574.tif 000004
【図３】
2010211574.tif 000005
【図４】
2010211574.tif 000006
【図５】
2010211574.tif 000007
【図６】
2010211574.tif 000008
【図７】
2010211574.tif 000009
【図８】
2010211574.tif 000010
【図９】
2010211574.tif 000011
【図１０】
2010211574.tif 000012
【図１１】
2010211574.tif 000013
【図１２】
2010211574.tif 000014
【図１３】
2010211574.tif 000015
【図１４】
2010211574.tif 000016