(57)【要約】【課題】ユーザによるソフトウェア上の障害発生の有無の解析に際し、該ソフトウェアをトレースしたデータが膨大な量になっても、ユーザによる該データの解析時間を短縮できるようにする。【解決手段】引き当て部２９は保持部２３からの障害検出手法に基づき記録部２５から対応する種類のプログラムを引き当てる。このプログラムを障害検出処理部３５へ出力する。引き当て部３１は記録部９に記録される解析対象ソフトウェア１のトレース結果情報中から一定時間当りのトレース結果情報を読出す。読出した情報を加工部３３へ出力する。加工部３３は該情報を解析効率の良い形式の情報に変更する。記憶部２７は加工部３３により書き込まれた上記情報を処理部３５へ出力する。処理部３５は読み込んだプログラムを起動して解析対象ソフトウェア１における障害検出処理を実行する。【選択図】図２
2010191738.tif 000002
【特許請求の範囲】
【請求項１】
解析対象ソフトウェアが搭載された障害被検出装置と、前記障害被検出装置から提供される情報を基に、前記解析対象ソフトウェアにおいて発生した障害を検出する障害検出装置と、
を備え、
前記障害被検出装置が、
前記解析対象ソフトウェアのトレースを実行するトレース実行部、
を有し、
前記障害検出装置が、
前記障害被検出装置から出力される、前記トレース実行部によりトレースされた前記解析対象ソフトウェアに係わる情報を、解析効率の良い形式の情報に変更する情報変更部と、
選択された障害検出手法に基づき、前記情報変更部から出力される情報を解析する情報解析部と、
ユーザからの情報表示出力要求を契機として、前記情報解析部による解析の結果として得られた情報を、可視化された情報として表示出力する情報可視化処理部と、
を有する障害解析支援システム。
【請求項２】
請求項１記載の障害解析支援システムにおいて、
前記情報解析部が、前記情報の解析の結果から前記解析対象ソフトウェアにおける障害の発生時刻を算出する障害解析支援システム。
【請求項３】
請求項１記載の障害解析支援システムにおいて、
前記選択された障害検出手法が、予め複数種類設定されている障害検出手法の中から、ユーザにより指定されたものである障害解析支援システム。
【請求項４】
請求項１記載の障害解析支援システムにおいて、
前記情報変更部による変更対象にされる情報が、前記トレース実行部による、一定時間当たりのトレース結果に係わる情報である障害解析支援システム。
【請求項５】
請求項１記載の障害解析支援システムにおいて、
前記情報可視化処理部が、ユーザにより指定された障害検出手法の名称に係わる情報をキーとして、前記情報変更部により解析効率の良い形式に変更された情報の中から、対応する情報を引き当て、該引き当てた情報の中から、前記解析対象ソフトウェアにおける障害発生時刻に係わる情報を抽出すると共に、該時刻情報に基づき、前記トレース結果に係わる情報の中から前記障害の検出箇所近傍の部位における情報を引き出す障害解析支援システム。
【請求項６】
請求項５記載の障害解析支援システムにおいて、
前記情報可視化処理部が、前記トレース結果に係わる情報の中から引き出した前記障害の検出箇所近傍の部位における情報と、前記情報変更部から出力される、前記解析効率の良い形式に変更された情報とから、前記障害の検出箇所近傍の部位におけるトレース結果を描画するための処理、及び該描画処理が施された後の可視化画像情報に対し強調表示を行うための処理を施す障害解析支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、解析対象ソフトウェアが搭載された障害被検出装置と、上記被検出装置から提供される情報を基に、上記対象ソフトウェアにおいて発生した障害を検出する障害検出装置と、を備える障害解析支援システムに関する。
【背景技術】
【０００２】
従来、計算機システムの技術分野において、CPUの負荷低減を図り、使い勝手の良い、実行ログの記録、該実行ログの表示方法、該表示方法を用いた計算機システム、及び該表示方法がプログラムされ、記録される記録媒体の提供を目的とした提案が行われている。該提案では、計算機システムにおけるプログラムの実行ログの状態遷移が時系列的に表示され、該表示に際し、時間当たりの実行ログの状態遷移発生の頻度に従って時間軸における幅が可変とされる。また、該提案では、アプリケーション（プログラム）の他に、一度ログバッファに記録された実行ログが必要か否かをチェックする最も優先度の低いタスクが備えられており、該ログチェックの結果が記録されたログに適当なマークが付されることにより、該マークが付されていないログのみが、他の計算機システムに転送されるようになっている（例えば特許文献１参照）。また、上記技術分野において、ステップ実行をしながら障害を解析する手法や、デバッグ情報を出力して後から解析する手法等も知られている（例えば非特許文献１参照）。また、上記に加えて、解析対象の挙動に関する情報を取得するトレースの実行に、一般的なイベントトレーサを用いる手法も知られている（例えば非特許文献２参照）。更に、上記に加えて、描画の実施に際しての実装に、公開ツールを用いる手法も知られている（例えば非特許文献３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平10-333938号公報
【非特許文献１】SWAP機構を用いた実行履歴の獲得について（情報処理学会研究報告［システムソフトウェアとオペレーティング・システム］Vol．97,No.20（19970227））
【非特許文献２】Measuring and Characterizing System Behavior Using Kernel - LevelEvent Logging
【非特許文献３】http://sourceforge. net/projects/timedoctor
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、携帯電話機端末や、テレビジョン受信機等の所謂コンシューマ機器
（組込み機器、若しくは組込み家電機器（製品）のことを指す。）の多機能化に伴い、該機器に搭載されるソフトウェアの規模も増大する傾向にある。一般に、ソフトウェアの規模が増大すると、それに伴って潜在的なバグの数も増加し、該ソフトウェアが搭載された製品の出荷後に上記潜在的なバグの存在に起因する不具合の発生する可能性が高くなる。そこで、このような状況を回避することを目的として、大規模なソフトウェアの開発を高品位に、且つ、高効率に行えるようにモデルベース開発（ソフトウェア開発において仕様をシミュレーション可能なモデルで表現し、各工程内でモデルのシミュレーションによる検証と修正の繰り返しを構成する開発手法のこと。）のようなソフトウェア開発の方法論に関する研究が進められている。また、上記手法に加えて、ソフトウェアプロダクトライン（ソフトウェアをドメインと称される小さな単位に再分化して開発する手法のこと。）のようなソフトウェア開発の方法論に関する研究も進められている。上述したモデルベース開発や、ソフトウェアプロダクトライン等の開発手法を採用して大規模なソフトウェアを開発することにより、該大規模なソフトウェアにおけるバグの発生数を、ある程度抑制することができる。しかし、上記何れの開発手法を採用しても、開発された大規模なソフトウェアにおけるバグを完全に取り除ける訳ではない。その理由としては、たとえ、上記のような新たな開発手法を導入しても、過去の資産（従来の組込み機器と、該組み込み機器に搭載された従来のソフトウェア）をそのまま再利用して大規模なソフトウェアを開発するために、潜在的なバグを抱えていることが挙げられる。また、開発すべきソフトウェアが、多くの種類の機器に搭載するため多岐に亘っている上に、それら数多くの種類のソフトウェアの早期開発が、多数のソフトウェア開発技術者に要求されており、それがソフトウェア開発技術者にとって大きな負担になっている。それ故、上述したような新たな開発手法の導入が徹底されていない点も、上記理由として挙げられる。
【０００５】
従来、ソフトウェアにバグが発生すると、その対策として既述の非特許文献１において示したようなステップ実行をしながら障害を解析する手法、又はデバッグ情報を出力して後から解析する手法の何れかが用いられる。しかし、前者の手法を採用すると、対話的な解析を行うために、タイミング依存等に代表される時間的な制約のあるアプリケーション（プログラム）のデバッグには不向きである。また、前者の手法には、バグの発生した箇所がおおまかに分かっているという条件や、バグの発生原因が分かっている等の条件を満たさない場合には、バグを再現させるために、対象のプログラムを実際に何度も何度も走らせてみることにより、言わば試行錯誤的に該バグの発生原因を見つけ出さないと問題を解決できないという欠点もある。一方、後者の手法を採用すると、解析に必要とするデバッグ情報の絞り込みができない場合に、出力情報が膨大な量になるので、解析自体が困難になるという問題が生じる。そこで、後者の手法を採用したことによって出力情報が膨大な量になった場合の対策として、既述の特許文献１で示したような計算機システムのイベントログの表示法に関し、時間当りのイベントログが緻密な部分での時間軸の目盛間隔、及び時間当りのイベントログが離散的な部分での時間軸の目盛間隔を動的に変化させることにより、表示ログの判別を容易にする手法が提案されている。
【０００６】
しかし、該提案に係る手法では、イベントログの密度が低い箇所（即ち、イベントログが離散的な部分）での時間軸の目盛の密度を高めることで、表示ログの見易さを向上させることは可能でも、ユーザにとって解析の対象であるデータの量が削減された訳ではない。そのため、対象になるソフトウェアのトレースが長時間に及び、それに伴って取得したイベントログの量が増大すると、ユーザが、取得したイベントログの解析に要する時間も該イベントログの量に比例して長くならざるを得なくなる。よって、ユーザによる、長時間のトレースの結果得られた膨大な量のイベントログの解析時間の短縮化を図ることができないという問題があった。
【０００７】
従って本発明の目的は、ユーザによるソフトウェア上の障害発生の有無の解析に際し、該ソフトウェアのトレースが長時間に及んだことにより取得したデータが膨大な量になった場合でも、ユーザが該膨大な量のデータを解析するのに要する時間を短縮することが可能な障害解析支援システムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明に従う障害解析支援システムは、解析対象ソフトウェアが搭載された障害被検出装置と、上記障害被検出装置から提供される情報を基に、上記解析対象ソフトウェアにおいて発生した障害を検出する障害検出装置と、を備え、上記障害被検出装置が、上記解析対象ソフトウェアのトレースを実行するトレース実行部、を有し、上記障害検出装置が、上記障害被検出装置から出力される、上記トレース実行部によりトレースされた上記解析対象ソフトウェアに係わる情報を、解析効率の良い形式の情報に変更する情報変更部と、選択された障害検出手法に基づき、上記情報変更部から出力される情報を解析する情報解析部と、ユーザからの情報表示出力要求を契機として、上記情報解析部による解析の結果として得られた情報を、可視化された情報として表示出力する情報可視化処理部と、を有する。
【０００９】
本発明に従う好適な実施形態では、上記情報解析部が、上記情報の解析の結果から上記解析対象ソフトウェアにおける障害の発生時刻を算出する。
【００１０】
上記とは別の実施形態では、上記選択された障害検出手法が、予め複数種類設定されている障害検出手法の中から、ユーザにより指定されたものである。
【００１１】
また、上記とは別の実施形態では、上記情報変更部による変更対象にされる情報が、上記トレース実行部による、一定時間当たりのトレース結果に係わる情報である。
【００１２】
また、上記とは別の実施形態では、上記情報可視化処理部が、ユーザにより指定された障害検出手法の名称に係わる情報をキーとして、上記情報変更部により解析効率の良い形式に変更された情報の中から、対応する情報を引き当て、該引き当てた情報の中から、上記解析対象ソフトウェアにおける障害発生時刻に係わる情報を抽出すると共に、該時刻情報に基づき、上記トレース結果に係わる情報の中から上記障害の検出箇所近傍の部位における情報を引き出す。
【００１３】
更に、上記とは別の実施形態では、上記情報可視化処理部が、上記トレース結果に係わる情報の中から引き出した上記障害の検出箇所近傍の部位における情報と、上記情報変更部から出力される、上記解析効率の良い形式に変更された情報とから、上記障害の検出箇所近傍の部位におけるトレース結果を描画するための処理、及び該描画処理が施された後の可視化画像情報に対し強調表示を行うための処理を施す。
【発明の効果】
【００１４】
本発明によれば、ユーザによるソフトウェア上の障害発生の有無の解析に際し、該ソフトウェアのトレースが長時間に及んだことにより取得したデータが膨大な量になった場合でも、ユーザが該膨大な量のデータを解析するのに要する時間を短縮することが可能な障害解析支援システムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係る障害解析支援システムの全体構成を示す機能ブロック図。
【図２】図１に記載した障害検出部の内部構成を示す機能ブロック図。
【図３】図１に記載した可視化処理部の内部構成を示す機能ブロック図。
【図４】図１に記載した障害解析支援システムにおけるＣＰＵ使用効率より生成されたメタデータのデータ構造の一例を示す説明図。
【図５】図１に記載した障害解析支援システムにおけるプロセス単位でのＣＰＵ使用効率より生成されたメタデータのデータ構造の一例を示す説明図。
【図６】図３に記載した可視化処理部により可視化されたピーク検出結果の一態様を示した説明図。
【図７】ＣＰＵの負荷よりピーク箇所を検出するに際しての、障害検出処理部によるピーク検出処理のシーケンスの一例を示すフローチャート。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を、図面により詳細に説明する。
【００１７】
図１は、本発明の一実施形態に係る障害解析支援システムの全体構成を示す機能ブロック図である。
【００１８】
上記障害解析支援システムは、図１に示すように、ターゲットシステム１００と、ホストコンピュータ（以下では、「ホスト装置」と表記する。）３００と、を含む。ターゲットシステム１００とホスト装置３００との間は、イントラネット、若しくはインターネット等の通信ネットワークを通じて接続されるか、或いは、双方が相手方から送信された電気信号を直接受信することができるように、一般的な（規格の）信号線路を通じて接続されている。
【００１９】
ターゲットシステム１００は、解析対象ソフトウェア１と、トレース実行部３と、トレース結果送信部５と、を備える。ここで、ターゲットシステム１００とは、既述のような多機能化されたコンシューマ機器（携帯電話機端末やテレビジョン受信機等の組込み機器）のことを指す。ターゲットシステム１００には、演算処理や情報記憶や情報の入／出力等の情報処理機能を有するハードウェアが内蔵されており、該ハードウェアには、上記多機能化を実現するための大規模化したソフトウェアが搭載されている。従って、上記解析対象ソフトウェア１が、上記大規模化したソフトウェアに該当する。トレース実行部３は、上述した情報記憶のハードウェアに搭載されたソフトウェアにより、演算処理のハードウェアにおいて実現され、また、トレース結果送信部５は、上記情報の入／出力のハードウェアにおいて実現される。
【００２０】
トレース実行部３は、解析対象ソフトウェア１を入力して、該解析対象ソフトウェア１に対しトレースを実行することにより、該解析対象ソフトウェア１の挙動に関する情報を取得すると共に、取得した該挙動に関する情報を、該解析対象ソフトウェア１のトレース結果に係わる情報としてトレース結果送信部５へ出力する。本実施形態では、上記トレース実行部３には、例えば、非特許文献１に開示されているような、一般的なイベントトレーサが用いられる。また、上記トレース実行部３として、ＩＣＥ（デバッグ用のハードウェアであるイン・サーキット・エミュレータの略記。ＣＰＵを外部から制御してシステム全体の動きを止め、メモリ内部を覗く機能を有する。）で取得した一般的なＣＰＵのプログラムカウンタトレース機能を用いることとしても差し支えない。
【００２１】
トレース結果送信部５は、トレース実行部３から出力されるトレース結果に係わる情報を受けて、該トレース結果に係わる情報をホスト装置３００へ送信する。
【００２２】
ホスト装置３００は、ターゲットシステム１００から出力される、該システム１００上で動作するソフトウェア、即ち、解析対象ソフトウェア１のトレース情報を基に、該（解析対象）ソフトウェア１の解析を実行する。ホスト装置３００は、メタ情報記録部７と、トレース結果記録部９と、トレース結果書き込み部１１と、トレース結果受信部１３と、メタ情報書き込み部１５と、障害検出部１７と、可視化処理部１９と、ユーザ要求収集部２１と、ユーザ要求保持部２３と、を備える。メタ情報記録部７、及びトレース結果記録部９に対応するホスト装置３００のハードウェア資源は、該ホスト装置３００に備えられるメモリである。また、トレース結果書き込み部１３、メタ情報書き込み部１５、障害検出部１７、可視化処理部１９、ユーザ要求収集部２１、及びユーザ要求保持部２３は、上述したメモリ（即ち、情報記憶のハードウェア）に搭載されたソフトウェア（アプリケーション・プログラム）により、ＣＰＵ（即ち、演算処理のハードウェア）において実現される。また、トレース結果受信部１３は、該ホスト装置３００の入／出力インタフェース（情報入／出力のハードウェア）において実現される。
【００２３】
トレース結果受信部１３は、（上記ターゲットシステム１００の）トレース結果送信部５から送信される上記トレース結果に係わる情報を受信し、該受信したトレース結果に係わる情報を、トレース結果書き込み部１１へ出力する。トレース結果書き込み部１１は、トレース結果受信部１３から出力される上記トレース結果に係わる情報を入力し、該入力したトレース結果に係わる情報を、トレース結果記録部９へ書き込むための処理を実行する。トレース結果記録部９は、トレース結果書き込み部１１により書き込まれた上記トレース結果に係わる情報を、保持すると共に、障害検出部１７からのトレース結果の読み出し要求に応じて、上記保持しているトレース結果に係わる情報を障害検出部１７、及び可視化処理部１９へ夫々出力する。
【００２４】
ユーザ要求収集部２１は、障害検出部１７から出力される複数種類の障害検出手法に係わる情報を入力し、該入力した複数種類の障害検出手法に係わる情報を、例えば、（該ホスト装置３００の）ＣＰＵの制御下にあるマン・マシンインタフェースである表示部に、ユーザが認識可能な表示態様で出力する。ユーザ要求収集部２１は、ユーザ２４が、上記マン・マシンインタフェースである（ホスト装置３００の）操作部を操作したことにより該操作部から指令信号を入力すると、該指令信号に基づき、ユーザ２４が上記表示されている複数種類の障害検出手法に係わる情報の中から何れの種類の障害検出手法（に係わる情報）を指定したか判別する。ユーザ要求収集部２１は、上記判別処理を行った結果として、上記複数種類の障害検出手法（に係わる情報）の中から選択した特定の障害検出手法（に係わる情報）を、ユーザ２４が指定した障害検出手法（に係わる情報）として、ユーザ要求保持部２３へ出力する。
【００２５】
ユーザ要求保持部２３は、ユーザ要求収集部２１から出力される、上記ユーザ２４が指定した障害検出手法（に係わる情報）をユーザ要求として保持すると共に、該障害検出手法に係わる情報を、障害検出部１７からの障害検出手法（に係わる情報）の読み出し要求に応じて障害検出部１７へ出力する。ユーザ要求保持部２３は、また、可視化処理部１９からの障害検出手法（に係わる情報）の読み出し要求に応じて、ユーザ要求として保持している上記障害検出手法（に係わる情報）を、可視化処理部１９へ出力する。
【００２６】
メタ情報記録部７は、メタ情報書き込み部１５により書き込まれたメタ情報（後述する障害に係わる情報、及び解析に係わる情報）を保持すると共に、可視化処理部１９からのメタ情報読み出し要求に応じて、該保持しているメタ情報を、可視化処理部１９へ出力する。
【００２７】
障害検出部１７には、予め複数種類の障害検出手法に係わる情報が保持されており、例えば、ホスト装置３００の起動時等の適宜のタイミングで上記複数種類の障害検出手法に係わる情報をユーザ要求収集部２１へ出力する。障害検出部１７は、ユーザ要求保持部２３から出力される上記指定された障害検出手法に係わる情報と、トレース結果記録部９から出力される上記トレース結果に係わる情報とを、夫々入力する。そして、上記障害検出手法に係わる情報に基づき、上記トレース結果に係わる情報を解析することにより、上記トレース結果において発生した障害を検出する。障害検出部１７は、上記検出した障害に係わる情報と、上記トレース結果の解析に係わる情報とを、メタ情報書き込み部１５へ出力する。
【００２８】
メタ情報書き込み部１５は、障害検出部１７から出力される上記障害に係わる情報、及び上記解析に係わる情報を夫々入力する。そして、上記障害に係わる情報、及び上記解析に係わる情報を、メタ情報としてメタ情報記録部７へ書き込むための処理を実行する。可視化処理部１９は、メタ情報記録部７から出力される上記メタ情報と、トレース結果記録部９から出力される上記トレース結果に係わる情報と、ユーザ要求保持部２３から出力される上記指定された障害検出手法に係わる情報と、を共に入力する。そして、上記指定された障害検出手法に基づき、上記メタ情報から導出される上記解析対象ソフトウェア１上の障害発生箇所、及び付近の状態を可視化（可視画像化）するための処理を実行する。
【００２９】
図２は、図１に記載の障害検出部１７の内部構成を示す機能ブロック図である。
【００３０】
障害検出部１７は、既述のように、ユーザ要求保持部２３に保持されている、ユーザ２４により指定された障害検出手法に係わる情報を基に、トレース結果記録部９に記録されている解析対象ソフトウェア（１）のトレース結果に係わる情報を解析すると共に、その解析結果から、該解析対象ソフトウェア（１）上で発生した障害の発生時刻を算出する。障害検出部１７は、図２に示すように、障害情報検出手法記録部２５と、加工データ記憶部２７と、障害検出手法引き当て部２９と、トレース結果引き当て部３１と、トレース結果加工部３３と、障害検出処理部３５と、を含む。
【００３１】
障害情報検出手法記録部２５は、複数種類の障害検出手法の各々に対応する複数種類の障害検出処理プログラムを保持すると共に、上記保持している複数種類の障害検出処理プログラムの中から障害検出手法引き当て部２９により引き当てられた障害検出処理プログラムを、障害検出手法引き当て部２９へ出力する。障害検出手法引き当て部２９は、ユーザ要求保持部２３から出力される上記指定された障害検出手法に係わる情報を入力すると共に、該障害検出手法に係わる情報に基づき、障害情報検出手法記録部２５に保持されている複数種類の障害検出処理プログラムの中から対応する種類の障害検出処理プログラムを引き当てる。そして、該引き当てた１種類の障害検出処理プログラムを、障害検出手法記録部２５から入力する。障害検出手法引き当て部２９は、障害検出手法記録部２５から入力した上記１種類の障害検出処理プログラムを、障害検出処理部３５へ出力する。
【００３２】
トレース結果引き当て部３１は、障害検出手法引き当て部２９による上記障害検出処理プログラムの引き当て処理を実行した後に、トレース結果記録部９に記録されている上記解析対象ソフトウェア１のトレース結果に係わる情報の中から、一定時間当たりのトレース結果に係わる情報を、上記解析対象ソフトウェア１に係わる処理が終了するまでの間に読み出す。そして、該読み出した（一定時間当たりのトレース結果に係わる）情報を、トレース結果加工部３３へ出力する。トレース結果加工部３３は、トレース結果引き当て部３１から出力される上記一定時間当たりのトレース結果に係わる情報を読み込んで、該情報を解析効率の良い形式の情報（即ち、メタデータ）に変更する。該情報は、トレース結果加工部３３により、加工データ記憶部２７に書き込まれる。加工データ記憶部２７は、トレース結果加工部３３により書き込まれた上記情報を、一時的に保持すると共に、障害検出処理部３５からのデータ読み出し要求に応じて、該情報を、障害検出処理部３５へ出力する。
【００３３】
障害検出処理部３５は、障害検出手法引き当て部２９から出力される上記１種類の障害検出処理プログラムを読み込むと共に、加工データ記憶部２７から出力される上記情報をも読み込む。そして、該読み込んだ障害検出処理プログラムを起動して、該読み込んだ情報を基に、解析対象ソフトウェア１における障害（データ）の検出処理を実行する。障害検出処理部３５により検出された上記障害（データ）は、障害検出処理部３５からメタ情報書き込み部１５へ出力される。
【００３４】
図３は、図１に記載の可視化処理部１９の内部構成を示す機能ブロック図である。
【００３５】
可視化処理部１９は、図３に示すように、メタ情報引き当て部３７と、トレース結果引き当て部３９と、表示箇所抽出部４１と、描画実施部４３と、を含む。メタ情報引き当て部３７は、表示箇所抽出部４１から出力される、表示箇所抽出部４１により指定された障害検出手法名（即ち、障害検出処理プログラム名）に係わる情報をキーとして、メタ情報記録部７に保持されているメタ情報の中から対応するメタ情報の引き当てを行う。該引き当てられたメタ情報は、メタ情報引き当て部３７から表示箇所抽出部４１へ出力される。
【００３６】
トレース結果引き当て部３９は、表示箇所抽出部４１により指定された時刻情報をキーとして、トレース結果記録部９に保持されているトレース結果に係わる情報の中から解析対象ソフトウェア１において発生した障害の検出箇所の近傍のトレース結果に係わる情報の引き当てを行う。該引き当てられたトレース結果に係わる情報は、トレース結果引き当て部３９から表示箇所抽出部４１へ出力される。表示箇所抽出部４１は、ユーザ要求保持部２３から出力されるユーザ２４が指定した上記障害検出手法に係わる情報、即ち、ユーザ２４の指定に対応する障害検出処理プログラムを読み込むと共に、該読み込んだ障害検出処理プログラム名に係わる情報を、（ユーザ２４により）指定された障害検出手法名に係わる情報として、メタ情報引き当て部３７へ出力する。表示箇所抽出部４１は、また、メタ情報引き当て部３７から出力される上記メタ情報を読み込んで、上記障害検出処理プログラムを起動することにより、上記メタ情報から上記解析対象ソフトウェア１において発生した障害に係わる時刻情報を抽出し、該抽出した時刻情報を、トレース結果引き当て部３９へ出力する。表示箇所抽出部４１は、更に、トレース結果引き当て部３９から出力される、該トレース結果引き当て部３９において引き当てられた上記トレース結果に係わる情報を、上記障害の検出箇所近傍のトレース結果に係わる抽出結果として読み込む。表示箇所抽出部４１は、上記抽出結果、及び上記メタ情報を、描画実施部４３へ出力する。
【００３７】
描画実施部４３は、表示箇所抽出部４１から出力される上記抽出結果、及び上記メタ情報を入力し、これらの情報に基づき、上記障害の検出箇所近傍のトレース結果を描画するための処理、及び該処理の結果に対する上記障害の検出箇所に対し強調表示を行うための処理を施す。そして、上記処理を経た後の可視化された情報は、描画実施部４３から画面表示部４５へ表示出力される。
【００３８】
なお、本実施形態では、描画実施部４３に係わる実装については、例えば、上掲の非特許文献２において開示されているような、可視化処理機能や、非特許文献３において開示されているような公開ツールそのものか、若しくは、それらに準ずるものが採用されるものとする。
【００３９】
図４は、図１に記載の障害解析支援システムにおけるＣＰＵ使用効率より生成されたメタデータのデータ構造の一例を示す説明図である。
【００４０】
上記メタデータは、図４に示すように、障害検出手法情報記録欄５１と、時間情報記録欄５３と、ＣＰＵ使用率情報記録欄５５と、障害情報登録欄５７と、を含む。障害検出手法情報記録欄５１は、ユーザ（２４）が指定した障害検出手法が記録されるもので、本実施形態では、障害検出手法情報記録欄５１には、“ＣＰＵ使用率”が記録されている。時間情報記録欄５３は、上記システムにおいて、“ＣＰＵ使用率”という障害検出手法を用いて、実際にＣＰＵ使用率を測定した際に要した時間が記録されている。本実施形態では、時間情報記録欄５３には、“０、１、２、３、４、５、・・・、ｎ”が記録されている。ＣＰＵ使用率情報記録欄５５は、上記時間情報記録欄５３に記録されている個々の時間（時点）におけるＣＰＵ使用率が記録されている。本実施形態では、ＣＰＵ使用率情報記録欄５５における、時間“０”、及び時間“１”に夫々対応する箇所には、“１０％”が、時間“２”に対応する箇所には、“５０％”が、時間“３”に対応する箇所には、“８０％”が、時間“４”に対応する箇所には、“９０％”が、夫々記録されている。また、時間“５”に対応する箇所には、“４０％”が、そして、時間“ｎ”に対応する箇所には、“２０％”が、夫々記録されている。障害情報登録欄５７は、上述した解析対象ソフトウェア１に発生した障害が登録されているかどうかを示すためのフラグが登録される。本実施形態では、障害情報登録欄５７における、時間“３”、及び時間“４”に夫々対応する箇所には、上記発生した障害が登録されている旨のフラグが“オン”になっている。
【００４１】
図５は、図１に記載の障害解析支援システムにおけるプロセス単位でのＣＰＵ使用効率より生成されたメタデータのデータ構造の一例を示す説明図である。
【００４２】
上記メタデータは、図５に示すように、障害検出手法情報記録欄６１と、時間情報記録欄６３と、動作プロセスＩＤ記録欄６５と、ＣＰＵ占有時間情報記録欄６７と、障害情報登録欄６９と、を含む。障害検出手法情報記録欄６１は、図４で示した障害検出手法情報記録欄５１と同様に、ユーザ（２４）が指定した障害検出手法が記録されるもので、本実施形態では、障害検出手法情報記録欄６１には、“ＣＰＵ使用率”が記録されている。また、時間情報記録欄６３も、図５で示した時間情報記録欄５３と同様に、上記システムにおいて、“ＣＰＵ使用率”という障害検出手法を用いて、実際にＣＰＵ使用率を測定した際に要した時間が記録されている。なお、時間情報記録欄６３に記録される各々の時間情報は、図４で示した時間情報記録欄５３に記録されている各々の時間情報と対応付けがなされている。動作プロセスＩＤ記録欄６５は、時間情報記録欄６３に記録されている時間内において動作していたプロセスのＩＤ（即ち、識別情報）が、記録されるもので、本実施形態では、動作プロセスＩＤ記録欄６５には、時間“３”において動作していたプロセスのＩＤとして、３、５、１、２、４、５が、記録されている。
【００４３】
ＣＰＵ占有時間情報記録欄６７は、動作プロセスＩＤ記録欄６５に記録されている複数のＩＤにより識別される個々のプロセスによるＣＰＵ占有時間が記録されるもので、該ＣＰＵ占有時間とは、時間情報記録欄６３に記録されている時間内において、何れのプロセスがどのタイミングでどれ位の時間、ＣＰＵを占有していたかを示している。本実施形態では、ＣＰＵ占有時間情報記録欄６７には、７５ｍｓ、１００ｍｓ、４０ｍｓ、３００ｍｓ、１００ｍｓ、２００ｍｓ、５０ｍｓ、７０ｍｓ、５０ｍｓ、１５ｍｓが記録されている。図５における左側から右側に向かって最初の７５ｍｓは、ＩＤ＝３で示されるプロセスがＣＰＵを占有していた時間であり、２番目の１００ｍｓは、ＣＰＵがアイドル状態であったことを示している。また、３番目の４０ｍｓは、ＩＤ＝５で示されるプロセスがＣＰＵを占有していた時間であり、４番目の３００ｍｓは、ＩＤ＝１で示されるプロセスがＣＰＵを占有していた時間である。また、５番目の１００ｍｓは、ＣＰＵがアイドル状態であったことを示しており、６番目の２００ｍｓは、ＩＤ＝１で示されるプロセスがＣＰＵを占有していた時間である。また、７番目の５０ｍｓは、ＩＤ＝２で示されるプロセスがＣＰＵを占有していた時間であり、８番目の７０ｍｓは、ＩＤ＝４で示されるプロセスがＣＰＵを占有していた時間である。更に、９番目の５０ｍｓは、ＣＰＵがアイドル状態であったことを示しており、１０番目の１５ｍｓは、ＩＤ＝５で示されるプロセスが、ＣＰＵを占有していた時間である。
【００４４】
障害情報登録欄６９も、図４で示した障害情報登録欄５７と同様に、上述した解析対象ソフトウェア１に発生した障害が登録されているかどうかを示すためのフラグが登録される。本実施形態では、障害情報登録欄６９における、時間“３”の、上記４番目の３００ｍｓに対応する箇所には、上記発生した障害が登録されている旨のフラグが“オン”になっている。
【００４５】
図６は、図３に記載の可視化処理部１９により可視化されたピーク検出結果の一態様を示した説明図である。
【００４６】
図６で示すピーク検出結果において、図６（ａ）は、図４で示したメタデータを、可視画像化（グラフ化）したものである。図６（ａ）において、縦軸には、定義済みの画像ファイル（即ち、プログラムで分かり易く記したＣＰＵの利用率のこと。階段波形状にて示される。）を重ね合わせたことが示されており、横軸は、時間軸（ｔ）になっている。楕円により囲まれた領域である領域７１は、上述した解析対象ソフトウェア１において発生した障害の箇所を示している。なお、上記楕円は、強調（箇所）を意味している。
【００４７】
図６で示すピーク検出結果において、図６（ｂ）は、図４で示したメタデータ（即ち、図６（ａ））の一部である、図５で示したメタデータを、可視画像化（グラフ化）したものである。図６（ｂ）において、縦軸には、ＩＤＬＥ、及びＰＩＤ１乃至ＰＩＤ５（即ち、上述した定義済みの画像ファイルを重ね合わせたことを示す）が、また、横軸には、０、２００、４００、６００、８００、１０００、１２００が、夫々設定されている。楕円により囲まれた領域である領域７３は、上記領域７１と同様に、上述した解析対象ソフトウェア１において発生した障害の箇所を示している。なお、領域７３（即ち、強調箇所）の描画については、上述した時刻情報を中心に、定義済みの画像ファイルを重ね合わせる処理を行うことにより、実現が可能である。
【００４８】
図７は、ＣＰＵの負荷よりピーク箇所を検出するに際しての、障害検出処理部３５によるピーク検出処理のシーケンスの一例を示すフローチャートである。図７に示すフローチャートは、解析対象ソフトウェア１において生じ得る性能障害の一つであるＣＰＵ使用率の高騰（ピーク）の検出手法に係わるものである。図７のフローチャートで示す処理動作は、処理対象であるデータ全体の一括処理にも、また、処理対象であるデータを単位時間分に分割し、分割された各データ別に処理を行う分割処理にも、夫々対応が可能である。
【００４９】
図７において、障害検出処理部３５は、まず、加工データ記憶部２７より、該加工データ記憶部２７に記憶されているトレースデータのうちから１イベント分のデータを読み込む（ステップＳ８１）。次に、上記読み込んだ１イベント分のデータが、先頭データかどうかチェックする（ステップＳ８２）。該チェックの結果、先頭データであると判断すると（ステップＳ８２でＹＥＳ）、障害検出処理部３５は、先頭データであると判断した上記１イベント分のデータ中に記録されているイベント発生時刻に係わる情報を、先頭時刻として所定の記憶領域に記録し（ステップＳ８３）、次のステップＳ８４で示す処理動作に移行する。また、ステップＳ８２でのチェックの結果、先頭データでないと判断した場合にも（ステップＳ８２でＮＯ）、直ちにステップＳ８４で示す処理動作に移行する。
【００５０】
次に、ステップＳ８１で読み込んだ１イベント分のデータが、上述したトレースデータの最終データかどうかチェックする（ステップＳ８４）。該チェックの結果、上記トレースデータの最終データでないと判断すると（ステップＳ８４でＮＯ）、ステップＳ８１で読み込んだ１イベント分のデータが、プロセス切り替えイベントかどうかチェックする。ここで、プロセスとは、ＯＳレベルで見たプロセスのことであり、ＯＳから見た１つの処理単位のことを指す（ステップＳ８５）。該チェックの結果、プロセス切り替えイベントでないと判断すれば（ステップＳ８５でＮＯ）、ステップＳ８１で示した処理動作に移行する。一方、該チェックの結果、プロセス切り替えイベントであると判断すると（ステップＳ８５でＹＥＳ）、次のステップＳ８６で示す処理動作に移行する。
【００５１】
次に、障害検出処理部３５は、ステップＳ８１で読み込んだ１イベント分のデータが、最初のプロセス切り替えイベントかどうかチェックする（ステップＳ８６）。該チェックの結果、最初のプロセス切り替えイベントであると判断すると（ステップＳ８６でＹＥＳ）、次のステップＳ８７で示す処理動作に移行する。即ち、障害検出処理部３５は、ステップＳ８３で記録した先頭時刻と、ステップＳ８１で読み込んだ１イベント分のデータの発生時刻とから（該最初のプロセス切り替えイベントの）実行時間を算出すると共に、該算出した実行時間を、所定の記憶領域に保存し、次のステップＳ８９で示す処理動作に移行する（ステップＳ８７）。
【００５２】
一方、該チェックの結果、最初のプロセス切り替えイベントであると判断すると（ステップＳ８６でＮＯ）、次のステップＳ８８で示す処理動作に移行する。即ち、障害検出処理部３５は、実行中であったプロセスの開始時刻と、ステップＳ８１で読み込んだ１イベント分のデータの発生時刻とから（該最初のプロセス切り替えイベントの）実行時間を算出すると共に、該算出した実行時間を、所定の記憶領域に保存し、次のステップＳ８９で示す処理動作に移行する（ステップＳ８８）。障害検出部３５は、次に、上記読み込み済みの最初のプロセス切り替えイベントの内部に記録されている、切り替え後の開始プロセスのＩＤ（ｎ）を、所定の記憶領域に記録する処理を実行する（ステップＳ８９）。該処理が終了すると、障害検出部３５は、次に、ステップＳ８１で読み込んだ１イベント分のデータの発生時刻を、ステップＳ８９でＩＤ（ｎ）を所定の記憶領域に記録したプロセス（即ち、切り替え後の開始プロセス）の開始時刻として、所定の記憶領域に記録する処理を実行し（ステップＳ９０）、該処理が終了すると、ステップＳ８１で示した処理動作に移行する。
【００５３】
そして、ステップＳ８１で読み込んだ１イベント分のデータが、上述したトレースデータの最終データかどうかチェックし（ステップＳ８４）。該チェックの結果、上記トレースデータの最終データであると判断すると（ステップＳ８４でＹＥＳ）、障害検出部３５は、プロセス単位毎に記録されているＣＰＵ使用率とトレ−スの実行時間とを参照して、プロセス単位でのＣＰＵ使用率を算出する（ステップＳ９１）。次に、ステップＳ９１で算出したプロセス単位でのＣＰＵ使用率から、システム全体としてのＣＰＵ使用率を算出するための処理を実行する（ステップＳ９２）。上記処理が終了すると、障害検出部３５は、次に、ステップＳ９１で求めたプロセス単位でのＣＰＵ使用率と、ステップＳ９２で求めたシステム全体としてのＣＰＵ使用率とから、ＣＰＵ使用率のピークを決定（検出）するための処理を実行する。この処理の仕方については、ユーザ（２４）が設定した任意の手法を用いて差し支えない。例えば、ＣＰＵ使用率の高い上位の１０箇所からＣＰＵ使用率のピークを求める方法や、予め設定されている閾値を超えているＣＰＵ使用率だけをサンプリングして、それらサンプリングされた幾つかのＣＰＵ使用率の中からＣＰＵ使用率を求める方法等が想定され得る（ステップＳ９３）。以上のような過程を経て生成されたＣＰＵ使用率のピークデータは、障害検出部３５よりメタ情報書き込み部１５に出力され（ステップＳ９４）、これにより、障害検出部３５による図７で示した一連の処理動作が終了することになる。
【００５４】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【００５５】
１  解析対象ソフトウェア
３  トレース実行部
５  トレース結果送信部
７  メタ情報記録部
９  トレース結果記録部
１１  トレース結果書き込み部
１３  トレース結果受信部
１５  メタ情報書き込み部
１７  障害検出部
１９  可視化処理部
２１  ユーザ要求収集部
２３  ユーザ要求保持部
２５  障害情報検出手法記録部
２７  加工データ記憶部
２９  障害検出手法引き当て部
３１  トレース結果引き当て部
３３  トレース結果加工部
３５  障害検出処理部
３７  メタ情報引き当て部
３９  トレース結果引き当て部
４１  表示箇所抽出部
４３  描画実施部
４５  画面表示部
１００  ターゲットシステム
３００  ホスト装置
【図１】
2010191738.tif 000003
【図２】
2010191738.tif 000004
【図３】
2010191738.tif 000005
【図４】
2010191738.tif 000006
【図５】
2010191738.tif 000007
【図６】
2010191738.tif 000008
【図７】
2010191738.tif 000009