(57)【要約】【課題】プログラム実行時の計算機について、ソフトウエア動作情報と、ハードウエア動作情報とを関連付けて記録することができる計算機動作情報記録装置を提供する。【解決手段】計算機動作情報記録装置１は、計算機の中央処理装置内のハードウエアの動作状態を示すハードウエア動作情報を、格納命令に応じて、所定のタイミングで連続して格納するバッファ２３を有するハードウエアモニタ部２２と、計算機においてプログラムが実行されているときの、計算機の動作状態を記録する記録条件を設定する設定ファイル読込／書込部５３と、計算機においてプログラムが実行されているときにソフトウエア動作情報をデータファイル４３に記録し、記録条件が成立したと判定した場合、ハードウエア動作情報を記録するためにハードウエアモニタ部２２に格納命令を出力するハードウエアモニタ制御部５４を有する。【選択図】図３
2008257405.tif 000002
【特許請求の範囲】
【請求項１】
計算機においてプログラムが実行されているときの前記計算機の動作状態を記録する計算機動作情報記録装置であって、
前記計算機に設けられ、前記計算機の動作状態の情報として、前記計算機の中央処理装置内のハードウエアの動作状態を示す第１の動作情報を、格納命令に応じて所定のタイミングで連続して格納する第１のメモリを有するハードウエアモニタ部と、
前記計算機においてプログラムが実行されているときの前記計算機の動作状態を記録する記録条件を設定する条件設定部と、
前記計算機においてプログラムが実行されているときに、前記条件設定部において設定された前記記録条件が成立したか否かを判定する記録条件判定部と、
前記計算機においてプログラムが実行されているときに、前記計算機の動作状態の情報として、前記計算機において実行される前記プログラムの動作状態を示す第２の動作情報を第２のメモリに記録し、前記記録条件判定部が記録条件が成立したと判定した場合、前記第１の動作情報を記録するために前記ハードウエアモニタ部に前記格納命令を出力する記録実行部と、
を有することを特徴とする計算機動作情報記録装置。
【請求項２】
前記記録条件は、前記計算機において実行される前記プログラムの動作状態に関する条件であることを特徴とする請求項１に記載の計算機動作情報記録装置。
【請求項３】
前記記録条件は、前記計算機において実行される前記プログラムの実行中に発生したソフトウエアイベントに関する条件であることを特徴とする請求項１に記載の計算機動作情報記録装置。
【請求項４】
前記条件設定部は、前記記録条件として、前記計算機において実行される前記プログラムの動作状態に関する第１の条件と、前記計算機において実行される前記プログラムの実行中に発生したソフトウエアイベントに関する第２の条件を設定し、
前記記録条件判定部は、選択された前記第１及び第２の条件のいずれか一方の記録条件が成立した否かを判定することを特徴とする請求項１に記載の計算機動作情報記録装置。
【請求項５】
前記ハードウエアモニタ部は、前記中央処理装置内の１以上のレジスタのデータを、１回のタイミングで、前記第１のメモリに格納し、かつその１回のタイミングで記録された前記１以上のレジスタのデータを、前記所定のタイミングで連続して、時系列に複数回に亘って前記第１のメモリに格納することを特徴とする請求項１から４のいずれか一つに記載の計算機動作情報記録装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機動作情報記録装置に関し、特に、計算機においてプログラムが実行されているときの計算機のハードウエアの動作状態を記録する計算機動作情報記録装置に関する。
【背景技術】
【０００２】
従来より、計算機の高負荷状態、異常状態等における、計算機の動作情報の記録の方法には、ソフトウエアによる記録方法と、ハードウエアによる記録方法の２つの方法がある。そのソフトウエアあるいはハードウエアにより記録されたデータ、すなわち動作情報を解析することにより、計算機のプログラム開発等を行うユーザは、計算機の動作を確認し、計算機の各種状態を分析して、開発プログラム等の最適化を図ることができる。
【０００３】
ソフトウエアによる計算機の動作情報の記録では、オペレーティングシステム（以下、OSという）、あるいはアプリケーションプログラム（以下、単にアプリケーションとも言う）によって、各プログラムの実行時の負荷状態情報の取得、プログラムについて発生するイベントの記録、等のソフトウエアの動作状態を示す動作情報の記録が行われる。また、ハードウエアによる計算機の動作状態の記録では、ロジックアナライザ等によりハードウエアの動作状態を示す動作情報の記録が行われる。
【０００４】
一般にソフトウエアによる記録では、ソフトウエアの動作周期で各種動作情報の記録が行われるため、ソフトウエアによる記録は、ハードウエアによる記録よりも、比較的長い時間間隔での動作情報の記録となる。逆に、ハードウエアによる記録では、原則としてハードウエアの動作周期でハードウエアの動作情報の記録を行うため、ハードウエアによる記録は、ソフトウエアによる記録よりも、比較的短い時間間隔での動作情報の記録となる。
【０００５】
ソフトウエアによる記録方法の一つとして、測定イベント（例えば、特定の関数の実行）が一定の閾値を超える回数分発生した際に、割り込みを発生させて、割り込み処理ハンドラを用いて、割り込み発生回数をカウントすることにより、性能プロファイリングを行う技術が、特開2005-215816号公報に提案されている。
【０００６】
また、ハードウエアによる記録方法の一つとして、コール回数が所定の閾値を超えた、実行頻度の高い命令を選択し、その選択された命令についてハードウエアのパフォーマンスプロファイリングを行う技術も、米国特許第5896538号公報に提案されている。
【０００７】
しかし、ソフトウエアによる記録とハードウエアによる記録は、お互いに別個に実施されていたため、異常状態、高負荷状態等になった場合には、同じ事象を再現させて記録することを、再度個別に行う必要があった。
【０００８】
さらにまた、異常状態、高負荷状態等は、いつ発生するかが不明な場合が多いため、そのような状態を再現するための労力も大きく、加えて、再現して２つの方式での記録を行った場合であっても、データの解析時には、互いに異なる方式で取得したデータのマッチングのためにかかる労力とコストは大きいものであった。
【特許文献１】特開2005-215816号公報
【特許文献２】米国特許第5896538号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
そこで、本発明は、以上のような問題に鑑みてなされたものであり、プログラム実行時の計算機について、ソフトウエア動作情報と、ハードウエア動作情報とを関連付けて記録することができる計算機動作情報記録装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、計算機においてプログラムが実行されているときの前記計算機の動作状態を記録する計算機動作情報記録装置であって、前記計算機に設けられ、前記計算機の動作状態の情報として、前記計算機の中央処理装置内のハードウエアの動作状態を示す第１の動作情報を、格納命令に応じて所定のタイミングで連続して格納する第１のメモリを有するハードウエアモニタ部と、前記計算機においてプログラムが実行されているときの前記計算機の動作状態を記録する記録条件を設定する条件設定部と、前記計算機においてプログラムが実行されているときに、前記条件設定部において設定された前記記録条件が成立したか否かを判定する記録条件判定部と、前記計算機においてプログラムが実行されているときに、前記計算機の動作状態の情報として、前記計算機において実行される前記プログラムの動作状態を示す第２の動作情報を第２のメモリに記録し、前記記録条件判定部が記録条件が成立したと判定した場合、前記第１の動作情報を記録するために前記ハードウエアモニタ部に前記格納命令を出力する記録実行部とを有することを特徴とする計算機動作情報記録装置を提供することができる。
【発明の効果】
【００１１】
本発明によれば、プログラム実行時の計算機について、ソフトウエア動作情報と、ハードウエア動作情報とを関連付けて記録することができる計算機動作情報記録装置を提供することを目的とする。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の実施の形態を説明する。  
（第１の実施の形態）
まず図１に基づき、本発明の第１の実施の形態に係わる計算機動作情報記録装置の構成を説明する。図１は、本実施の形態に係わる計算機動作情報記録装置のシステム構成を説明するためのブロック図である。
【００１３】
計算機動作情報記録装置１は、中央処理装置（CPU）を含むハードウエア層１１と、OSを含むソフトウエア層１２を有して構成される。  
ハードウエア層１１は、CPU２１と、そのCPU２１の動作をモニタするハードウエアモニタ部２２と、そのハードウエアモニタ部（図１及び図２では、HWモニタと記す）２２内に設けられたメモリであるバッファメモリ（以下、単にバッファともいう）２３を有する。ハードウエア層１１には、図示しないが、他にも入出力インターフェース部、主メモリ等が含まれる。例えば、ハードウエア層１１は、１つの半導体チップで構成されている。
【００１４】
ソフトウエア層１２は、OS３１と、OS３１に含まれるモニタ部３２と、OS３１上で実行される複数のアプリケーションプログラム（以下、単にアプリケーションという）３３とを含む。アプリケーション３３は、設定表示部３４と、複数のユーザプログラム３５を含む。
【００１５】
計算機動作情報記録装置１は、例えば、開発プログラムであるユーザプログラム３５を実行する、パーソナルコンピュータ（PC）、専用マシン等の計算機であり、CPU２１以外には、ROM、RAM、各種インターフェース等を有する。そして、計算機情報記録装置１は、図示しないが、キーボード、マウス等の入力装置、画面、プリンタ等の表示装置、等のマンマシンインターフェース（以下、MMIと略す）を有する。さらに、計算機情報記録装置１には、ハードディスク装置等の外部記憶装置が接続可能となっている。
【００１６】
図２は、本実施の形態に係る計算機動作情報記録装置１の機能を説明するための図である。全体的な動作説明をすれば、OS３１は、プログラムファイル４１からユーザプログラム３５を読み出し、かつ設定ファイル４２から設定情報を読み出し、CPU２１に読み出したユーザプログラム３５を実行させる。  
設定情報は、ハードウエアの動作状態を示す動作情報の記録を行う条件、すなわち記録条件の情報を含む。設定情報は、図１に示す、ユーザプログラム３５が実行される計算機システム全体に関する情報であり、計算機システムにおけるソフトウエアの状態を示す条件だけでなく、計算機システムにおけるハードウエアの状態を示す条件でもよい。
【００１７】
モニタ部３２は、ユーザプログラム３５の実行時におけるシステム全体の状態を監視し、さらにユーザプログラム３５のソースコードに対応して実行される各プロセス３５ａの実行状態を監視する。そして、モニタ部３２は、ユーザプログラム３５の実行中に、読み出した設定情報に設定された記録条件が成立するか否かを監視する。
【００１８】
モニタ部３２は、ユーザプログラム３５の実行が開始されると、ユーザプログラム３５が実行中における各種プログラムの動作状態を示す動作情報（以下、ソフトウエア動作情報ともいう）を記録する。
【００１９】
さらに、モニタ部３２は、設定ファイル４２に設定された記録条件が成立したことを検出すると、ハードウエアの動作状態を示す動作情報（以下、ハードウエア動作情報ともいう）を、ソフトウエア動作情報と関連付けて記録する。記録されたソフトウエア動作情報とハードウエア動作情報は、設定表示部３４により読み出されて、結果データとしてデータファイル４３に出力され、あるいは液晶表示装置（LCD）等の表示部４４に出力されて表示される。  
なお、後述するように、モニタ部３２は、設定ファイル４２に設定された記録条件が成立したことを検出すると、ソフトウエア動作情報とハードウエア動作情報の記録を、同時に開始するようにしてもよい。
【００２０】
また、設定表示部３４は、ユーザがMMIを利用して、後述する設定ファイル４２に設定情報を設定し、設定された設定情報を表示部４４の画面上に表示し変更し、さらに、取得したソフトウエア動作情報及びハードウエア動作情報を、データファイル４３あるいは表示部４４に出力する処理を実行するための処理部である。
【００２１】
なお、プログラムファイル４１、設定ファイル４２及びデータファイル４３は、例えば、外部記憶装置（図示せず）に設けられている。
【００２２】
さらに具体的に説明する。モニタ部３２は、OS３１及びユーザプログラム３５等の全てのプログラムの動作を監視する。ソフトウエア動作情報は、周期的にプログラムカウンタ（PC）の値を記録することによりプログラム動作点すなわち動作アドレスの情報を取得し、プログラムファイルのソースコードと対応付けて動作ポイントの解析を実施することによって、取得される。これにより、モニタ部３２は、例えば、動作中の、プログラム、関数、アドレス等を判定することができる。
【００２３】
さらに、モニタ部３２は、取得されたソフトウエア動作情報をデータファイル４３に記録すると共に、記録条件が成立したと判定した場合には、起動信号あるいは格納命令を出力することによりハードウエアモニタ２２を起動させて動作中のハードウエア動作情報の記録を開始させる。例えば、記録条件は、ユーザプログラム中の特定の命令についての実行回数、実行割合等についての閾値等の条件である。
【００２４】
なお、設定ファイル４２に設定される記録条件は、ユーザプログラム中の特定の命令の実行回数、等の実行されるユーザプログラムの動作状態についての条件だけでなく、上述したように、そのユーザプログラムを実行する計算機システム全体の状態についての条件等でもよい。
【００２５】
ハードウエアモニタ２２は、ハードウエア動作情報を、バッファ２３に、所定のタイミングで連続して格納することによって、ハードウエア動作情報を、時系列データとしてバッファ２３に記憶することができる。
【００２６】
ハードウエアモニタ部２２は、OS３１のモニタ部３２からの起動命令あるいは格納命令に応じて、ハードウエア動作情報をモニタして取得し、バッファ２３に時系列データとして記録する、いわゆるパフォーマンスモニタ機能を有する。具体的には、ハードウエアモニタ部２２は、予め設定されたCPU２１内の複数のレジスタのデータを、所定のタイミングで連続して複数回取得することによって、ハードウエア動作情報を時系列データとしてバッファ２３に記録する。
【００２７】
ここで、所定のタイミングは、予めユーザ等によって設定されてもよいし、あるいはハードウエアモニタ部２２が予め有している時間間隔でもよい。ハードウエア動作情報は、一旦格納命令を受信すると、その所定のタイミングでハードウエア動作情報を連続して取得されるので、時系列データとなる。  
また、記録条件が成立したと判定された後も、ソフトウエア動作情報は、継続して取得されているので、時系列データとなる。
【００２８】
以上のように、モニタ部３２は、ソフトウエア動作情報をユーザプログラム３５が実行中に常時記憶すると共に、設定された記録条件が成立したと判定すると、記録条件の成立のタイミングに合わせて、計算機の動作状態の情報として、ハードウエア動作情報の記録を開始する。
【００２９】
従って、ソフトウエア動作情報と、そのソフトウエア動作情報よりも短い時間間隔の詳細なハードウエア動作情報とが関連付けられて記録される。バッファ２３に記録されたハードウエア動作情報は、設定表示部３４により読み出されて、外部記憶装置のデータファイル４３に出力されて記録され、あるいは、表示部４４に出力されて表示される。
【００３０】
次に、モニタ部３２の構成について説明する。  
図３は、モニタ部３２の構成を説明するためのブロック図である。モニタ部３２は、プログラムファイル読み込み部５１と、ユーザプロセス監視部５２と、設定ファイル読込／書込部５３と、ハードウエアモニタ制御（図ではHWモニタ制御部）５４と、ハードウエア動作情報受信部（図ではHW動作情報受信部）５５と、設定情報受信部５６と、動作情報送信部５７とを含んで構成される。
【００３１】
プログラムファイル読込部５１は、ユーザプログラム３５を読み込むための処理部である。ソフトウエア及びハードウエアの動作情報を取得したいユーザプログラム３５の読み込みと実行は、MMIを用いた、ユーザからの指定により行われる。
【００３２】
ユーザプロセス監視部５２は、ユーザプログラム３５の実行時におけるシステム全体の状態の監視と、実行中のユーザプログラム３５の各プロセスの動作の監視を行う処理部である。詳しくは、プログラムファイル読込部５１からのプログラムをソースコードレベルで関連付けて、各プロセス３５ａの動作を監視することによって、システム全体の状態の監視も行われる。ユーザプロセス監視部５２は、監視して得られたユーザプログラム３５の各プロセスの動作状態の情報を、ハードウエアモニタ制御部５４に供給する。  
なお、プログラムのソースコードレベルでの対応付けは、プログラムファイル読込部５１で行うようにしてもよい。
【００３３】
設定ファイル読込／書込部５３は、設定ファイル４２から設定情報を読み込み、及び設定ファイル４２へ設定情報を書き込む処理を行う処理部である。  
具体的には、設定ファイル読込／書込部５３には、MMIを用いてユーザによって入力された、設定表示部３４からの設定情報が、後述する設定情報受信部５６を介して入力される。設定ファイル読込／書込部５３は、その入力された設定情報を、設定ファイル４２に書き込む。また、設定ファイル読込／書込部５３は、MMIを用いてユーザによって指定された、設定ファイル４２に書き込まれている設定情報を読み出して、設定情報受信部５６を介して、設定表示部３４に出力する。ユーザは、MMIを用いて設定表示部３４に入力された設定情報を、画面上で確認し変更することができる。設定ファイル読込／書込部５３が、条件設定部を構成する。
【００３４】
ハードウエアモニタ制御部５４は、ユーザプロセス監視部５２からの動作状態に関する情報と設定ファイル読込／書込部５３からの設定情報とに基づいて、ハードウエアモニタ部２２を起動し、ハードウエアモニタ部２２にハードウエア動作情報を取得させる処理部である。  
具体的には、ハードウエアモニタ制御部５４は、ユーザプロセス監視部５２からのユーザプログラム３５の各プロセスの動作状態の情報を受信すると、設定ファイル読込／書込部５３からの設定情報を比較し、設定情報に規定された記録条件が成立したか否かを判定する。ハードウエアモニタ制御部５４は、後述する設定ファイル読込／書込部５３から取得した設定情報と、ユーザプログラム３５あるいはそのプロセス３５ａの動作とを比較し、記録条件が成立したと判定したときは、ハードウエア動作情報の記録を開始する。
【００３５】
ソフトウエア動作情報は、ユーザプログラム３５の実行中に、ユーザプロセス監視部５２あるいはハードウエアモニタ制御部５４によって、データファイル４３に直接書き込むようにしてもよいし、後述する動作情報送信部５７と設定表示部３４を介して、データファイル４３に書き込まれるようにしてもよい。ユーザプロセス監視部５２あるいはハードウエアモニタ制御部５４は、ソフトウエア動作情報の記録実行部を構成する。
【００３６】
ハードウエア動作情報の記録は、ハードウエアモニタ制御部５４が、ハードウエアモニタ部２２に格納命令を出力して、CPU２１の所定の１以上のレジスタのデータを、ハードウエア動作情報として、バッファ２３に記録するように指示することによって、行われる。ハードウエアモニタ制御部５４は、ハードウエア動作情報の記録条件判定部と記録実行部を構成する。
【００３７】
ハードウエア動作情報受信部５５は、ハードウエアモニタ部２２のバッファ２３に記録されたハードウエア動作情報を読み出して受信するための処理部である。  
具体的には、ハードウエア動作情報受信部５５は、バッファ２３に記録されたハードウエア動作情報を受信して、動作情報送信部５７に出力する処理部である。
【００３８】
設定情報受信部５６は、上述したように、設定表示部３４から受信した設定情報を設定ファイル読込／書込部５３へ出力したり、あるいは設定ファイル読込／書込部５３を介して読み出した設定情報を設定表示部３４へ出力するための処理部である。
【００３９】
動作情報送信部５７は、ハードウエア動作情報受信部５５からのハードウエア動作情報を、設定表示部３４に供給する処理部である。  
具体的には、動作情報送信部５７は、ユーザからの指示に応じて、記録されたハードウエア動作情報を、表示部４４の画面上に表示したりするために、設定表示部３４に出力する。
【００４０】
ここで、バッファ２３の構成について説明する。図４は、バッファ２３の構成例を示す構成図である。  
バッファ２３は、ハードウエアモニタ部２２によって取得された、CPU２１内部で発生したイベントのデータと、CPU２１中の制御レジスタ等の複数のレジスタのデータの両方のデータあるいは一方のデータが記録される複数のバッファ領域を含んで構成される。バッファ２３は、CPU２１中のレジスタａ１からａｎのｎ個（ｎは、１以上の正の整数）のレジスタのデータを、ｍ個（ｍは、２以上の整数）分だけ、あるいはｍ回分だけ、記憶できる複数のバッファ領域を含んで構成される。ハードウエア動作情報を取得するためのCPU２１中のレジスタａ１からａｎは、それぞれ、ユーザによって予め指定あるいは設定される。
【００４１】
より具体的には、バッファ２３は、ｍ個のバッファアレイBA1からBAmを含んで構成されている。各バッファアレイBAiは、１回のタイミングでレジスタａ１からａｎに対応する複数のレジスタのデータ（d1i,d2i,d3i,d4i,・・・,dni）を記録するためのｎ個のバッファ領域を有する（iは、１からmのいずれかの整数）。最初のタイミングt1で、バッファアレイBA1には、レジスタａ１からａｎのｎ個のデータ（d11,d21,d31,d41,・・・,dn1）が記録される。２回目のタイミングt2で、バッファアレイBA2には、レジスタａ１からａｎのｎ個のデータ（d12,d22,d32,d42,・・・,dn2）が記録される。以下同様にして、最後のタイミングtmにおいて、バッファアレイBAmには、レジスタａ１からａｎのｎ個のデータ（d1m,d2m,d3m,d4m,・・・,dnm）が記録される。
【００４２】
ハードウエアモニタ部２２は、所定の周期のタイミングで、各レジスタのデータの取得を、連続して行う制御回路を内蔵している。よって、ハードウエアモニタ部２２は、ハードウエア動作情報の記録の指示である格納命令を受信すると、所定の周期のタイミングで、各レジスタのデータの取得を、連続して行う。その結果、図４に示すバッファ２３には、各レジスタの時系列データが記録される。  
そして、バッファ２３の記憶領域が、ｍ回分のハードウエア動作情報で一杯になると、ハードウエア動作情報の記録は終了する。なお、ハードウエア動作情報の記録は、記録条件が不成立になると終了するようにしてもよい。また、ソフトウエア動作情報の記録は、ハードウエア動作情報の記録の終了と共に終了してもよいし、継続してもよい。
【００４３】
従って、バッファ２３には、所定のタイミングで取得された各レジスタのデータが、所定の時間に亘る時系列データとして、記録される。言い換えると、バッファ２３は、各レジスタのデータを、所定の時間に亘って、所定のタイミングで、複数回取得して得られた時系列データとして記録するための複数の記憶領域を有するメモリである。
【００４４】
次に、動作について説明する。  
図５は、モニタ３２の処理の流れの例を示すフローチャートである。図５の処理の実行の前に、ユーザはMMIを利用して、計算機の動作情報の記録を行うユーザプログラム３５の指定と、その動作情報を記録する記録条件の設定ファイル４２への書き込み、及び、ハードウエアモニタ部２２に対してのハードウエア情報を記録するCPU２１の１以上のレジスタの指定が、予めされている。
【００４５】
指定されたユーザプログラム３５が実行されると、ソフトウエア動作情報の記録が開始されると共に、図５の処理が実行される。実行に先立ちハードウエアモニタ制御部５４は、設定ファイル４２から記録条件の情報を設定ファイル読込／書込部５３により読み出して、記録条件の情報を取得しておく。
【００４６】
モニタ３２は、指定されたユーザプログラム３５を実行し、モニタ３２のユーザプロセス監視部５２は、OS３１及びユーザプログラム３５を含めて、実行中の全てのソフトウエアの動作状態を監視し、ハードウエアモニタ制御部５４は、ユーザプロセス監視部５２からの動作状態の情報に基づいて、設定ファイル読込／書込部５３からの記録条件が成立するか否かを判定する（ステップS1）。例えば、プログラムの動作状態として、所定の命令の実行回数が監視され、その記録条件として実行回数が設定されている場合に、その所定の命令が設定された回数だけ実行されたか否かの判定を行い、その命令が設定された回数実行されると、記録条件が成立したと判定される。ステップS1の処理は、ハードウエアモニタ制御部５４によって実行される記録条件判定部を構成する。  
記録条件が成立しなければ、処理は、次の処理に移行せず、ステップS1の処理を継続する。
【００４７】
記録条件が成立すると、ハードウエアモニタ制御部５４は、ハードウエアモニタ部２２に対して格納命令を出力することによって、ハードウエア動作情報を、バッファ２３に記録するように指示を出力する（ステップS2）。
【００４８】
ハードウエア動作情報の記録を指示されたハードウエアモニタ部２２は、所定のサイクルすなわち周期のタイミングで、各レジスタの動作情報を取得して、バッファ２３に記録する。
【００４９】
バッファ２３に記録できる時間は、サンプリングの周期によって異なるが、本実施の形態では、ｍ個のバッファアレイ分のハードウエア動作情報が記録されたら、図５のステップS2の処理は終了する。
【００５０】
なお、別途設定されたタイマーによって設定された設定時間になったか否かを監視し、記録を開始してからの経過時間が、その設定時間になると、ステップS2の処理を終了するようにしてもよいし、ハードウエア動作情報の記録は、記録条件が不成立になると終了するようにしてもよい。ステップS2の処理は、ハードウエアモニタ制御部５４によって実行される記録実行部を構成する。
【００５１】
以上の処理によって、ハードウエア動作情報の記録の開始からの経過時間とハードウエアモニタ部２２の所定のサイクルの時間とに基づいて、ソフトウエア動作情報とハードウエア動作情報の対応付けは行うことができる。
【００５２】
記録されたソフトウエア動作情報とハードウエア動作情報は、ユーザがMMIを利用して、設定表示部３４により、例えば表示部４４に時系列データとして、２つの動作情報が対比できるように表示させることができる。言い換えれば、ユーザ側ツールとしてのソフトウエアである設定表示部３４に、記録されたソフトウエア動作情報とハードウエア動作情報を、対比して表示する表示部としての機能を持たせることによって、２つの動作情報をユーザは対比して見ることができる。
【００５３】
なお、対応付けされた２つの動作情報、すなわちソフトウエア動作情報とハードウエア動作情報は、例えば、画面上に対比して表示させるだけでなく、プリンタにより並べて印刷することもできる。  
さらになお、モニタ部３２は、設定ファイル４２に設定された記録条件が成立したことを検出すると、ソフトウエア動作情報とハードウエア動作情報の記録を、同時に開始するようにしてもよい。
【００５４】
図６は、その同時記録を行う場合のモニタ部３２の処理の流れの例を示すフローチャートである。図５と同じ処理については同じステップ記号を付し説明は省略する。図６に示すように、ハードウエアモニタ制御部５４は、ステップS１で記録条件が成立したことを検出すると、ソフトウエア動作情報の記録を開始し（ステップS3）、そして、同時に、ハードウエアモニタ部２２に対して格納命令を出力する（ステップS2）。
【００５５】
図６の処理によれば、ソフトウエア動作情報とハードウエア動作情報の記録は同時に開始されているので、その記録の開始からの経過時間とハードウエアモニタ部２２の所定のサイクルの時間とに基づいて、ソフトウエア動作情報とハードウエア動作情報の対応付けは行うことができる。図６の場合、記録条件は、ソフトウエア動作情報とハードウエアの動作状態を示す動作情報の両方の記録を行う条件である。
【００５６】
従って、そのように時間的に関連付けられた２つの動作情報をみることができるので、ユーザは、開発プログラム等の最適化を効率的に行うことができる。
【００５７】
以上のように、本実施の形態によれば、所定の記録条件が成立すると、ハードウエア動作情報の記録を開始するので、計算機の動作情報の解析時における、２つの動作情報のマッチングのための労力、コストを小さくすることができる。
【００５８】
（第２の実施の形態）
第１の実施の形態では、OS等のソフトウエア、プロセス等のプログラムの動作状態を監視して、その監視している状態が、所定の設定されたプログラムの動作状態に関する記録条件に合致すると、ハードウエア動作情報の記録が開始され、ソフトウエア動作情報とハードウエア動作情報が関連付けられるようにしている。これに対して、第２の実施の形態では、実行中のプログラムについて発生したソフトウエアイベントを監視し、ソフトウエアイベントが所定の設定された記録条件に合致すると、ハードウエア動作情報の記録が開始され、ソフトウエア動作情報とハードウエア動作情報が関連付けられるようにするものである。
【００５９】
図７は、第２の実施の形態に係わるモニタ部３２Aの構成を説明するためのブロック図である。なお、図３のモニタ部３２と同じ構成要素については、同一の符号を付し、説明は省略する。モニタ部３２Aは、ソフトウエアイベント記録部６１と、ソフトウエアイベント監視部６２を含む。
【００６０】
ソフトウエアイベント記録部６１は、ユーザプログラム３５の実行中に、ファイルオープンエラー、ページフォールト等のソフトウエアイベントを検出し、記録する処理部である。ソフトウエアイベントの検出は、例えば、割り込みの有無等により行われる。計算機の動作状態を示すソフトウエアイベントとしては、OSに関するソフトウエアイベントだけでなく、アプリケーションに関するソフトウエアイベントも含まれる。従って、ソフトウエアイベントとしては、上述したイベント以外にも、プロセス切り換え、ディスクアクセス、プロセス間通信、アプリケーションにおける特定の出力、アプリケーションエラー、等のイベントもある。
【００６１】
検出して記録されたソフトウエアイベントの情報は、ソフトウエアイベント監視部６２に出力される。ソフトウエアイベント監視部６２は、得られたソフトウエアイベントの情報をハードウエアモニタ制御部５４に供給する。
【００６２】
一方で、設定ファイル４２Aには、記録条件としてのソフトウエアイベントの情報が記憶されている。  
ハードウエアモニタ制御部５４は、ソフトウエアイベント監視部６２からのソフトウエアイベントの情報を受信すると、読込／書込部５３からの設定ファイル４２の設定情報と比較し、設定情報に規定された記録条件が成立したが否かを判定する処理を行う。設定ファイル４２には、プログラムの実行中に発生したソフトウエアイベントに関する条件が、設定情報すなわち記録条件として設定されている。
【００６３】
そして、ハードウエアモニタ制御部５４は、設定ファイル読込／書込部５３から取得した設定情報と、ソフトウエアイベント監視部６２からのソフトウエアイベントの情報とを比較し、記録条件が成立したと判定されたときは、ハードウエア動作情報の記録を開始させる。
【００６４】
例えば、所定のファイルのオープンエラーの発生を記録条件として、予め設定ファイル４２に記憶しておき、ハードウエアモニタ制御部５４は、ソフトウエアイベント監視部６２からのソフトウエアイベントの情報を監視し、その所定のファイルのオープンエラーのイベント情報を受信すると、ハードウエアモニタ部２２に格納命令を出力する。ユーザプログラム３５が実行を開始されると、ソフトウエアの動作状態を示す情報としてのソフトウエアイベントの情報は、ソフトウエアイベント記録部６１、ソフトウエアイベント監視部６２あるいはハードウエアモニタ制御部５４によって、データファイル４３に時系列のデータとして記録される。
【００６５】
なお、モニタ部３２Aのその他の処理及び動作は、第１の実施の形態におけるモニタ部３２の処理と動作と同じである。
【００６６】
また、設定ファイル４２に設定される記録条件は、特定のソフトウエアイベントの発生の有無だけでなく、特定のソフトウエアイベントの発生回数、発生割合、発生状態等についての閾値等の条件でもよい。
【００６７】
なお、本実施の形態においても、図６で示した処理のように、ソフトウエアイベントに関する記録条件が成立したと判定されたときは、ソフトウエア動作情報とハードウエア動作情報の両方の記録を開始させるようにしてもよい。
【００６８】
以上のように、本実施の形態によれば、ソフトウエアイベントに関して所定の記録条件が成立すると、ハードウエア動作情報の記録を開始するので、計算機の動作情報の解析時における、２つの動作情報のマッチングのための労力、コストを小さくすることができる。
【００６９】
（第３の実施の形態）
第１の実施の形態では、OS等のソフトウエア、プロセスの動作状態を監視して、その監視している状態が、所定の設定された記録条件に合致すると、ハードウエア動作情報の記録が開始され、ソフトウエア動作情報とハードウエア動作情報が関連付けられるようにしている。第２の実施の形態では、実行中のプログラムについて発生したソフトウエアイベントを監視し、ソフトウエアイベントが所定の設定された記録条件に合致すると、ハードウエア動作情報の記録が開始され、ソフトウエア動作情報とハードウエア動作情報が関連付けられるようにしている。これに対して、本実施の形態では、ハードウエア動作情報の記録の開始条件を、第１の実施の形態のような、OS等のソフトウエア、プロセスの動作と、第２の実施の形態のような、実行中のプログラムについて発生したソフトウエアイベントの、いずれかに選択することができるようにしたものである。
【００７０】
図８は、第３の実施の形態に係わるモニタ部３２Bの構成を説明するためのブロック図である。なお、図３及び図７のモニタ部３２、３２Aと同じ構成要素については、同一の符号を付し、説明は省略する。モニタ部３２Bは、プログラムファイル読込部５１と、ユーザプロセス監視部５２と、ソフトウエアイベント記録部６１と、ソフトウエアイベント監視部６２を含む。さらに、モニタ部３２Bは、切換部７１を有する。
【００７１】
切換部７１は、切換信号に基づいて、ハードウエアモニタ制御部５４に対して、ハードウエア動作情報の記録の条件を、第１の実施の形態のようなOS等のソフトウエア、プロセスの動作に基づいて行うか、第２の実施の形態のような実行中のプログラムについて発生したソフトウエアイベントに基づいて行うかを切り換えるための処理部である。切換信号は、ユーザがMMIを利用して、切換部７１に入力あるいは指示することができる。
【００７２】
ユーザがMMIを利用して切換部７１に対して、ハードウエア動作情報の記録の開始条件を、第１の実施の形態のようなOS等のソフトウエア、プロセスの動作に基づいて行うように指示する切換信号を入力すると、切換部７１は、ハードウエアモニタ制御部５４に対して、ユーザプロセス監視部５２からの動作情報を監視し、設定ファイル読込／書込部５３からの動作情報についての記録条件が成立するか否かを判定するように指示を出す。  
また、ユーザが切換部７１に対して、ハードウエア動作情報の記録の開始条件を、第２の実施の形態のような実行中のプログラムについて発生したソフトウエアイベントに基づいて行うように指示する切換信号を入力すると、切換部７１は、ハードウエアモニタ制御部５４に対して、ソフトウエアイベント監視部６２からのソフトウエアイベントの情報を監視し、設定ファイル読込／書込部５３からのソフトウエアイベントについての記録条件が成立するか否かを判定するように指示を出す。  
その他の動作は、上述した第１と第２の実施の形態と同様である。  
以上のように、本実施の形態によれば、OS等のソフトウエア、プロセスの動作に関して所定の記録条件が成立するかの判定と、ソフトウエアイベントに関して所定の記録条件が成立するかの判定を切り換えることができるので、ユーザが希望する判定条件が成立したときに、ハードウエア動作情報の記録を開始するので、計算機の動作情報の解析時における、２つの動作情報のマッチングのための労力、コストを小さくすることができる。
【００７３】
なお、上述した例では、切換部７１の切換は、ユーザがMMIを利用して行うものであるが、切換部７１に対する切換信号を、予め設定した時間に応じて切り換えて出力するようにしてもよい。例えば、ある第１の期間は、ハードウエア動作情報とソフトウエア動作情報の記録の開始は、ソフトウエアイベントに基づいて行い、その第１の期間の後の第２の期間は、OS等のソフトウエア等の動作とハードウエア動作情報の記録を行うようにする、等々である。従って、切換部７１には、図示しないタイマに基づいて生成された切換信号が入力される。  
これは、例えば、計算機が高負荷になる原因が、プログラムの動作によるのか、ソフトウエアイベントによるかが不明な場合に、計算機の全体的な動作状況を監視しながら、その原因を追求する場合等に、計算機の高負荷時の状態を記録することが可能となる。
【００７４】
さらになお、切換部７１に対する切換信号を、実行中のプログラムに応じて切り換えて出力するようにしてもよい。例えば、プログラムXを実行している場合は、第１の実施の形態の記録方法を実行し、プログラムYを実行しているときは、第２の実施の形態の記録方法を実行する、というように、切換部７１には、実行中のプログラムに応じた切換信号が入力される。その結果、実行中のプログラムに応じた記録方法を、実現することができる。
【００７５】
これは、例えば、計算機が高負荷になる原因が、プログラムの動作によるのか、ソフトウエアイベントによるかが不明な場合であるが、特に、プログラムとの関連が判明している場合等に、計算機の高負荷時の状態を記録することが可能となる。
【００７６】
また、本実施の形態においても、図６で示した処理のように、記録条件が成立したと判定されたときは、ソフトウエア動作情報とハードウエア動作情報の両方の記録を、同時に開始するようにしてもよい。
【００７７】
以上のように、上述した各実施の形態の計算機動作情報記録装置は、OS等のソフトウェアプログラムによってシステム全体の情報を収集し、システム、あるいはプログラムが所定の条件（動作負荷、イベント発生回数等）になった場合に、CPU等のハードウエアが有するパフォーマンスモニタ機能を起動して、詳細なハードウエア動作情報を記録する。
【００７８】
その結果、例えば、いつ発生するかが未知である計算機異常状態、高負荷状態等の際に、ハードウエア及びソフトウエアの動作情報の記録が可能となるので、イベントを再現させての記録、解析時のデータ合わせ、等のためのコストを大きく低減することができる。
【００７９】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウエアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して実施の形態を説明した。また、本実施の形態における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００８０】
なお、以上説明した動作を実行するプログラムは、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されてプログラム製品として提供することができる。そのプログラムに含まれる命令群がコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を、プログラム製品として、通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本発明の計算機動作情報記録装置を実現することができる。
【００８１】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００８２】
【図１】本発明の第１の実施の形態に係わる計算機動作情報記録装置のシステム構成を説明するためのブロック図である。
【図２】第１の実施の形態に係る計算機動作情報記録装置の機能を説明するための図である。
【図３】第１の実施の形態に係るモニタ部の構成を説明するためのブロック図である。
【図４】第１の実施の形態に係るバッファの構成例を示す構成図である。
【図５】第１の実施の形態に係るモニタの処理の流れの例を示すフローチャートである。
【図６】第１の実施の形態に係るモニタの処理の流れの他の例を示すフローチャートである。
【図７】本発明の第２の実施の形態に係わるモニタ部の構成を説明するためのブロック図である。
【図８】本発明の第３の実施の形態に係わるモニタ部の構成を説明するためのブロック図である。
【符号の説明】
【００８３】
１  計算機動作情報記録装置、１１  ハードウエア層、１２  ソフトウエア層、２３  バッファ、３２、３２A、３２B  モニタ部、５  、６  、７  、８  、９  、１０  、
【図１】
2008257405.tif 000003
【図２】
2008257405.tif 000004
【図３】
2008257405.tif 000005
【図４】
2008257405.tif 000006
【図５】
2008257405.tif 000007
【図６】
2008257405.tif 000008
【図７】
2008257405.tif 000009
【図８】
2008257405.tif 000010