(57)【特許請求の範囲】
【請求項１】
オペレーティングシステム、ミドルウェア層、アプリケーション層を有するソフトウェア構成の電子計算機装置において、
前記アプリケーション層で動作するプロセスの実行情報をメモリに保存するプロセス実行情報記録部、ソフトウェア処理遅延を検出するソフトウェア処理遅延検出部、前記ソフトウェア処理遅延を検出した際に前記メモリに保存されたプロセス実行情報を電子計算機装置が動作しても値が保持される領域に記憶できる不揮発性の記憶装置に保存するソフトウェア処理遅延障害処置部、前記プロセス実行情報記録部、前記ソフトウェア処理遅延検出部、前記ソフトウェア処理遅延障害処置部を前記アプリケーション層から利用するアプリケーションインターフェース部を、前記ミドルウェア層に備え、前記ソフトウェア処理遅延検出部は、アプリケーションインターフェース部の処理開始時にプロセスから使用されたアプリケーションインターフェース機能の最大処理時間を取得し、前記最大処理時間経過後の割り込み通知発生を前記オペレーティングシステムに要求して割り込み通知を設定し、割り込み受信処理を有効にし、アプリケーションインターフェース部の処理中に前記オペレーティングシステムにより発生される前記最大処理時間経過後の前記割り込み通知を受信した際に、前記ソフトウェア処理遅延を検出するものであることを特徴とする電子計算機装置。
【請求項２】
前記ソフトウェア処理遅延検出部が前記ソフトウェア処理遅延を検出した際に、前記プロセス実行情報記録部が前記メモリへのプロセス実行情報の保存を停止することを特徴とする請求項１に記載の電子計算機装置。
【請求項３】
前記ソフトウェア処理遅延障害処置部が、前記ソフトウェア処理遅延が検出されたプロセス番号と、前記ソフトウェア処理遅延が検出された時のタイムスタンプ情報を含むソフトウェア処理発生メッセージを通知装置に送信するとともに、前記ソフトウェア処理発生メッセージも前記記憶装置に保存することを特徴とする請求項１または請求項２に記載の電子計算機装置。
【請求項４】
オペレーティングシステム、ミドルウェア層、アプリケーション層を有するソフトウェア構成の電子計算機装置において実行されるソフトウェア処理遅延検出時のデータ保存方法であって、
前記ミドルウェア層に含まれるアプリケーションインターフェース部を、前記アプリケーション層から実行することによりなされるステップとして、前記アプリケーション層で動作するプロセスの実行情報をメモリに保存するステップ、ソフトウェア処理遅延を検出するステップ、前記ソフトウェア処理遅延が検出された際に、前記メモリに保存されたプロセス実行情報を電子計算機装置が動作しても値が保持される領域に記憶できる不揮発性の記憶装置に保存するステップを有するものであり、前記ソフトウェア処理遅延を検出するステップは、前記アプリケーションインターフェース部の処理開始時にプロセスから使用されたアプリケーションインターフェース機能の最大処理時間を取得し、前記最大処理時間経過後の割り込み通知発生を前記オペレーティングシステムに要求して割り込み通知を設定し、割り込み受信処理を有効にするステップ、前記アプリケーションインターフェース部の処理中に前記オペレーティングシステムにより発生される前記最大処理時間経過後の前記割り込み通知を受信した際に、前記ソフトウェア処理遅延を検出するステップを有するものであることを特徴とするソフトウェア処理遅延検出時のデータ保存方法。
【請求項５】
前記ソフトウェア処理遅延を検出した際に、前記メモリへのプロセス実行情報の保存を停止させるステップを有することを特徴とする請求項４に記載のソフトウェア処理遅延検出時のデータ保存方法。
【請求項６】
前記ソフトウェア処理遅延が検出されたプロセス番号と、前記ソフトウェア処理遅延が検出された時のタイムスタンプ情報を含むソフトウェア処理発生メッセージを通知装置に送信するステップと、前記ソフトウェア処理発生メッセージを前記記憶装置に保存するステップとを有することを特徴とする請求項４または請求項５に記載のソフトウェア処理遅延検出時のデータ保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オペレーティングシステム（以下、ＯＳと略す）、ミドルウェア層およびアプリケーション層の３層から構成されるソフトウェアを搭載している電子計算機装置における、ソフトウェアデッドロックなどによるソフトウェア処理遅延状態を検出し、原因解析のためのデータを採取するためのソフトウェア処理遅延検出時のデータ保存方法およびこのデータ保存方法を実装した電子計算機装置に関するものである。
【背景技術】
【０００２】
従来のソフトウェア処理遅延検出方法では、ハードタイマが周期的に割込信号を発生させ、その割込を受けて定期的に起動されるインターバルタイマ処理手段にてタスク毎のソフトカウンタを増加させ、上限を越えるかどうかチェックするようにしていた（特許文献１参照）。
また、ソフトウェア処理遅延の原因解析のためのデータを採取する方法では、通常状態にてＯＳのシステムコール及びアプリケーション側で独自に作成したチェックポイントの処理で、呼び出し先プロセス番号、呼び出しＰＣ値、使用資源番号及び種類の使用資源情報等を、シリアルポートに出力する（特許文献２参照）。
【０００３】
【特許文献１】特開平４−３４９５４２号公報（図２）
【特許文献２】特開２０００−２９３４０７号公報（図２）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来のソフトウェア処理遅延状態検出方法は、ＯＳで検出処理を行なわなければならず、ＯＳに検出処理を組み込む必要がある。また、市販のＯＳを使用する場合は、著作権等の問題でＯＳを改造することができないなどの問題点があった。
また、従来の原因解析のためのデータ採取方式では、障害発生直前のデータ等必要なデータを取得するためには、障害発生までの処理時にシリアルポートから出力されるデータを全て保存しておく必要があり、膨大なデータを保存しておくための記憶装置が必要である。また、全データの保存を回避するためにはシリアルポートから出力されるデータを受信する装置側に、データ処理を行なう機能を実装する必要がある。また、障害発生直前のデータはＲＡＭ上に保存されているが、リブート後処理の開始によりデータが上書きされてしまうなどの問題点があった。
【０００５】
この発明は上記のような課題を解決するためになされたものであり、ＯＳを改造すること無くソフトウェア処理遅延状態を検出できるとともに、障害発生直前のデータを確実に採取することができるソフトウェア処理遅延検出時のデータ保存方法及びこのようなソフトウェア処理遅延検出時のデータ保存方法を実装した電子計算機装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明による電子計算機装置は、オペレーティングシステム、ミドルウェア層、アプリケーション層を有するソフトウェア構成の電子計算機装置において、
前記アプリケーション層で動作するプロセスの実行情報をメモリに保存するプロセス実行情報記録部、ソフトウェア処理遅延を検出するソフトウェア処理遅延検出部、前記ソフトウェア処理遅延を検出した際に前記メモリに保存されたプロセス実行情報を電子計算機装置が動作しても値が保持される領域に記憶できる不揮発性の記憶装置に保存するソフトウェア処理遅延障害処置部、前記プロセス実行情報記録部、前記ソフトウェア処理遅延検出部、前記ソフトウェア処理遅延障害処置部を前記アプリケーション層から利用するアプリケーションインターフェース部を、前記ミドルウェア層に備え、前記ソフトウェア処理遅延検出部は、アプリケーションインターフェース部の処理開始時にプロセスから使用されたアプリケーションインターフェース機能の最大処理時間を取得し、前記最大処理時間経過後の割り込み通知発生を前記オペレーティングシステムに要求して割り込み通知を設定し、割り込み受信処理を有効にし、アプリケーションインターフェース部の処理中に前記オペレーティングシステムにより発生される前記最大処理時間経過後の前記割り込み通知を受信した際に、前記ソフトウェア処理遅延を検出するものであることを特徴とするものである。
【０００７】
また、この発明によるソフトウェア処理遅延検出時のデータ保存方法は、オペレーティングシステム、ミドルウェア層、アプリケーション層を有するソフトウェア構成の電子計算機装置において実行されるソフトウェア処理遅延検出時のデータ保存方法であって、
前記ミドルウェア層に含まれるアプリケーションインターフェース部を、前記アプリケーション層から実行することによりなされるステップとして、プロセス実行情報をメモリに保存するステップ、ソフトウェア処理遅延を検出するステップ、前記ソフトウェア処理遅延が検出された際に、前記メモリに保存されたプロセス実行情報を電子計算機装置が動作しても値が保持される領域に記憶できる不揮発性の記憶装置に保存するステップを有するものであり、前記ソフトウェア処理遅延を検出するステップは、前記アプリケーションインターフェース部の処理開始時にプロセスから使用されたアプリケーションインターフェース機能の最大処理時間を取得し、前記最大処理時間経過後の割り込み通知発生を前記オペレーティングシステムに要求して割り込み通知を設定し、割り込み受信処理を有効にするステップ、前記アプリケーションインターフェース部の処理中に前記オペレーティングシステムにより発生される前記最大処理時間経過後の前記割り込み通知を受信した際に、前記ソフトウェア処理遅延を検出するステップを有するものであることを特徴とするものである。
【発明の効果】
【０００８】
本発明によれば、ソフトウェア処理遅延状態障害処理は全てミドルウェアで処理するため、ＯＳを改造する必要は無く、改造が困難な市販ＯＳを使用する電子計算機装置においても実装可能である。また、ソフトウェア処理遅延検出直前のプロセス実行情報だけを記憶装置に確実に保存できるため、膨大な容量の記憶装置を備える必要は無く、障害解析のために必要となるデータを安価に確実に採取できるという効果が得られる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
以下、この発明の実施の形態１を図１に基づいて説明する。図１において、監視制御装置１５はアプリケーション層１１、ミドルウェア層１０、オペレーティングシステム１２の３層のソフトウェアと、ＣＰＵ１４及び不揮発性メモリ(ＲＡＭ)５を有するハードウェア１３から構成される。ソフトウェア処理遅延監視処理部４はソフトウェア処理遅延検出部１、プロセス実行情報記録部２及びソフトウェア処理遅延障害処置部３から構成され、ミドルウェア層１０に含まれる。アプリケーション層１１で動作するプロセス（１１ａ〜１１ｎ）は、ミドルウェア層１０が提供するアプリケーションインタフェース部９を使用してＣＰＵやメモリなどの資源に対する処理を行なう。プロセス実行情報記録部２からのプロセスの実行情報は、不揮発性メモリ（ＲＡＭ）５に保持される。なお、不揮発性メモリ（ＲＡＭ）５に確保されたプロセスの実行情報を記録する領域にすべてデータを記録した場合は、最も古く記憶したデータから上書きして記録していく。このため、不揮発性メモリ（ＲＡＭ）５には最新の所定量のプロセスの実行情報が記録される。プロセスの実行情報を記録する領域の大きさは、障害解析に必要なデータが保存できるように十分な大きさとしておく。ソフトウェア処理遅延状態が発生したことがソフトウェア処理遅延検出部１により検知されると、監視制御装置１５のＣＰＵ１４と通信装置７を介して接続されている外部通知装置８に通知される。また、ソフトウェア処理遅延障害処置部３はソフトウェア処理遅延検出部１によりソフトウェア処理遅延状態が検出された際に、障害発生メッセージと不揮発性メモリ(ＲＡＭ)５に保持されているプロセス実行情報データとを外部記憶装置６に保存する。
【００１０】
次に動作について説明する。図２はアプリケーション層１１で動作する一つのプロセスが、アプリケーションインタフェース部９が提供する一つの機能を使用する場合の動作を示すフローチャート、図３はソフトウェア処理遅延検出部１の開始処理の動作を示すフローチャート、図４はソフトウェア処理遅延検出部１の終了処理の動作を示すフローチャート、図５はプロセス実行情報記録部２の開始時記録処理の動作を示すフローチャート、図６はプロセス実行情報記録部２の終了時記録処理の動作を示すフローチャート、図７はソフトウェア処理遅延検出部１のデッドロック検出処理の動作を示すフローチャート、図８はソフトウェア処理遅延障害処置部３の動作を示すフローチャートである。
【００１１】
図２で、アプリケーションインタフェースの動作を説明する。プロセスがアプリケーションインタフェース部９の一つの機能の使用を開始する（工程Ｓ１）。アプリケーションインタフェースは機能開始処理として、ソフトウェア処理遅延検出部１の開始処理を起動する（工程Ｓ２）。次にアプリケーションインタフェースが提供する本来機能を実現するために実装されている一連の処理を実行する（工程Ｓ４）が、一つの処理を実行する前にプロセス実行情報記録部２の開始時記録処理を起動し（工程Ｓ３）、アプリケーションインタフェースの本来機能処理実行終了後にプロセス実行情報記録部２の終了時記録処理を起動する（工程Ｓ５）。次いでアプリケーションインタフェース機能が終了したかを判断し（工程Ｓ６）、全処理終了後、アプリケーションインタフェースは機能終了処理として、ソフトウェア処理遅延検出部１の終了処理を起動する（工程Ｓ７）。
【００１２】
図３で、ソフトウェア処理遅延検出部１の開始処理の動作を説明する。ソフトウェア処理遅延検出部１の開始処理が起動される（工程Ｓ１１）と、プロセスから使用されたアプリケーションインタフェース機能の最大処理時間を取得し（工程Ｓ１２）、現在時刻から最大処理時間経過後の割込み通知発生をＯＳに要求し（工程Ｓ１３）、割込み受信処理を有効にする（工程Ｓ１４）。なお、ソフトウェア処理遅延検出部１の開始処理はアプリケーションインタフェース機能を使用するプロセスと同一プロセス上で動作する処理である。
【００１３】
図４で、ソフトウェア処理遅延検出部１の終了処理の動作を説明する。ソフトウェア処理遅延検出部１の終了処理が起動される（工程Ｓ１５）と、ソフトウェア処理遅延検出部１の開始処理（工程Ｓ１１）でＯＳに要求した最大処理時間経過後の割込み通知発生（工程Ｓ１３）の解除をＯＳに要求し（工程Ｓ１６）、割込み受信処理を無効にする（工程Ｓ１７）。なお、ソフトウェア処理遅延検出部１の終了処理はアプリケーションインタフェース機能を使用するプロセスと同一プロセス上で動作する処理である。
【００１４】
図５で、プロセス実行情報記録部２の開始時記録処理の動作を説明する。プロセス実行情報記録部２の開始時記録処理が起動される（工程Ｓ１８）と、アプリケーションインタフェース機能を使用しているプロセスのプロセス番号、使用中の資源情報と、これから実行する処理情報と処理開始時のタイムスタンプを取得し（工程Ｓ１９）、これらの情報を不揮発性メモリ(ＲＡＭ)５に記録する（工程Ｓ２０）。なお、プロセス実行情報記録部２の開始時記録処理はアプリケーションインタフェース機能を使用するプロセスと同一プロセス上で動作する処理である。
【００１５】
図６で、プロセス実行情報記録部２の終了時記録処理の動作を説明する。プロセス実行情報記録部２の終了時記録処理が起動される(工程Ｓ２１)と、アプリケーションインタフェース機能を使用しているプロセスのプロセス番号、使用中の資源情報と、実行を終了した処理情報と処理終了時のタイムスタンプを取得し（工程Ｓ２２）、これらの情報を不揮発性メモリ(ＲＡＭ)５に記録する(工程Ｓ２３)。なお、プロセス実行情報記録部２の終了時記録処理はアプリケーションインタフェース機能を使用するプロセスと同一プロセス上で動作する処理である。
【００１６】
図７で、ソフトウェア処理遅延検出部１のソフトウェアデッドロックなどによるソフトウェア処理遅延検出処理の動作を説明する。ソフトウェア処理遅延検出部１の開始処理でＯＳに要求した最大時間経過後の割込み通知を受信する（工程Ｓ２４）と、ソフトウェア処理遅延検出部１はソフトウェア処理遅延が発生したと判断する。不揮発性メモリ(ＲＡＭ)５にはソフトウェア処理遅延発生直前のプロセス実行情報のデータが保持されており、新たなデータで上書きされないようにプロセス実行情報記録部２にプロセス実行情報の記録が停止するように処理する（工程２５）。具体的には、プロセス実行情報記録部２がプロセス実行情報を不揮発性メモリ（ＲＡＭ）５に記録する処理では、記録を行うかどうかを制御するフラグを参照しており、このフラグを記録しないような値に変更する。ソフトウェア処理遅延を検出したソフトウェア処理遅延検出部１はソフトウェア処理遅延が発生したプロセスのプロセス番号（ソフトウェア処理遅延検出プロセス番号）とソフトウェア処理遅延検出時のタイムスタンプを取得し、これら情報を付加してソフトウェア処理遅延障害処置部３を起動する（工程Ｓ２６）。
【００１７】
図８で、ソフトウェア処理遅延障害処置部３の処理の動作を説明する。ソフトウェア処理遅延障害処置部３はソフトウェア処理遅延検出時にソフトウェア処理遅延検出部１からの起動要求を受信する（工程Ｓ２７）と、不揮発性メモリ(ＲＡＭ)５に保持されているプロセス実行情報の全データを読み込み（工程Ｓ２８）、ソフトウェア処理遅延検出部１からの起動時に付加されているソフトウェア処理遅延検出プロセス番号とソフトウェア処理遅延検出時のタイムスタンプの情報を含めたデッドロック発生メッセージを、通信装置７を介して外部通知装置８に送信する（工程Ｓ２９）。また、ソフトウェア処理遅延発生メッセージと不揮発性メモリ(ＲＡＭ)５から読み込んだ全データを、監視制御装置１５に接続されている外部記憶装置６に保存する（工程Ｓ３０）。
【００１８】
上述した、この発明による実施の形態には、次のようなソフトウェア処理遅延検出時のデータ保存方法が含まれるものである。
【００１９】
オペレーティングシステム（ＯＳ）、ミドルウェア層１０、アプリケーション層１１を有するソフトウェア構成の監視制御装置などの電子計算機装置において実行されるソフトウェア処理遅延検出時のデータ保存方法であって、
前記ミドルウェア層１０に含まれるアプリケーションインターフェース部９を、前記アプリケーション層１１から実行することによりなされるステップとして、プロセス実行情報をメモリ５に保存するステップ、ソフトウェア処理遅延検出部１によりソフトウェア処理遅延を検出するステップ、前記ソフトウェア処理遅延が検出された際に、前記メモリ５に保存されたプロセス実行情報を電子計算機装置が動作しても値が保持される領域に記憶できる外部記憶装置６などの不揮発性の記憶装置に保存するステップを有することを特徴とするソフトウェア処理遅延検出時のデータ保存方法。
【００２０】
前記ソフトウェア処理遅延を検出するステップは、前記アプリケーションインターフェース部９の処理開始時に最大処理時間経過後の割り込み通知を設定し、割り込み受信処理を有効にするステップ（図３：Ｓ１３，Ｓ１４）、前記アプリケーションインターフェース部９の処理中に最大処理時間経過後の前記割り込み通知を受信した際に、前記ソフトウェア処理遅延を検出するステップを有するものであることを特徴とする前項に記載のソフトウェア処理遅延検出時のデータ保存方法。
【００２１】
前記ソフトウェア処理遅延を検出した際に、プロセス実行情報記録部２が前記メモリ５へのプロセス実行情報の保存を停止させるステップ（図７：Ｓ２５）を有することを特徴とする前項または前々項に記載のソフトウェア処理遅延検出時のデータ保存方法。
【００２２】
前記ソフトウェア処理遅延が検出されたプロセス番号と、前記ソフトウェア処理遅延が検出された時のタイムスタンプ情報を含むソフトウェア処理発生メッセージをソフトウェア処理遅延障害処置部３により通信装置７を介して通知装置８に送信するステップ（図８：Ｓ２９）と、前記ソフトウェア処理発生メッセージを前記外部記憶装置６などの記憶装置に保存するステップ（図８：Ｓ３０）とを有することを特徴とする前３項の何れかに記載のソフトウェア処理遅延検出時のデータ保存方法。
【００２３】
以上のように、本発明によれば、ソフトウェア処理遅延状態障害処理は全てミドルウェアで処理するため、ＯＳを改造する必要は無く、改造が困難な市販ＯＳを使用する監視制御装置などの電子計算機装置においても実装可能であり、また、アプリケーションが所定のミドルウェアを使用すればよいので、既存のアプリケーションの流用が容易になるという効果が得られる。また、ソフトウェア処理遅延検出直前のプロセス実行情報だけを外部記憶装置に確実に保存できるため、膨大な容量の外部記憶装置を備える必要は無く、また、新たなデータ処理機能を別に実装する必要も無いため、障害解析のために必要となるデータを安価に確実に採取できるという効果が得られる。
なお、不揮発性メモリは揮発性メモリでもよい。プロセス実行情報データを保存する外部記憶装置は、この電子計算機装置が内部に有する記憶装置でもよい。電子計算機装置が動作しても消えたり上書きされたりせず値が保持される領域に記憶できる不揮発性の記憶装置であれば、どのようなものでもよい。外部通知装置は、電子計算機が有する通知装置であってもよい。
【図面の簡単な説明】
【００２４】
【図１】この発明の実施の形態１を示す構成図である。
【図２】この発明のアプリケーションインタフェースの動作を示すフローチャートである。
【図３】この発明のソフトウェア処理遅延検出部１の開始処理の動作を示すフローチャートである。
【図４】この発明のソフトウェア処理遅延検出部１の終了処理の動作を示すフローチャートである。
【図５】この発明のプロセス実行情報記録部２の開始時記録処理の動作を示すフローチャートである。
【図６】この発明のプロセス実行情報記録部２の終了時記録処理の動作を示すフローチャートである。
【図７】この発明のソフトウェア処理遅延検出部１のデッドロック検出処理の動作を示すフローチャートである。
【図８】この発明のソフトウェア処理遅延障害処置部３の処理の動作を示すフローチャートである。
【符号の説明】
【００２５】
１  ソフトウェア処理遅延検出部、２  プロセス実行情報記録部、３  ソフトウェア処理遅延障害処置部、４  ソフトウェア処理遅延監視処理部、５  不揮発性メモリ(ＲＡＭ)、６  外部記憶装置、７  通信装置、８  外部通知装置、９  アプリケーションインタフェース部、１０  ミドルウェア層、１１  アプリケーション層、１２  オペレーティングシステム、１３  ハードウェア、１４  ＣＰＵ、１５  監視制御装置。
【図１】
0004795388.tif 000002
【図２】
0004795388.tif 000003
【図３】
0004795388.tif 000004
【図４】
0004795388.tif 000005
【図５】
0004795388.tif 000006
【図６】
0004795388.tif 000007
【図７】
0004795388.tif 000008
【図８】
0004795388.tif 000009