(57)【要約】【課題】トレース情報の連続性を保ちつつ、所定の機能のトレースデータの取りこぼしを防ぐ。【解決手段】イベント検出部１０１〜１０ｎはトレースイベントを検出し、トレースイベントのレベルが通知閾値３０２以上の場合、イベントテーブル編集部３０１にトレースイベントの情報を通知する。イベントテーブル編集部３０１は、通知されたトレースイベントのレベルが最高レベルの場合、イベントテーブル３００を編集し、トレース資源変更部３０４に通知する。トレース資源変更部３０４は、トレース資源テーブル３０３の記述に基づいて、トレース資源の容量を変更する。【選択図】図２
2010237809.tif 000002
【特許請求の範囲】
【請求項１】
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、トレース内容が記されたトレースデータ、前記属性情報、及び前記レベルをトレースバッファに書き込むと共に、前記レベルと所定の通知閾値とを比較し、前記レベルが前記通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力するイベント検出部と、
前記イベント検出部が出力した前記属性情報及びレベルを受信し、前記属性情報及びレベルをイベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高い属性情報及びレベルを前記イベントテーブルの最初の項に配置すると共に、前記最もレベルの高い属性情報及びレベルを前記イベント検出部から受信した場合に前記最もレベルの高い属性情報及びレベルを出力するイベントテーブル編集部と、
前記イベント検出部が前記トレースバッファに書き込んだ前記トレースデータ、前記属性情報、及び前記レベルを、前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部と、
前記イベントテーブル編集部が出力した前記最もレベルの高い属性情報及びレベルを受信し、トレース資源テーブルを参照して、前記トレースバッファ及び前記トレースファイルを含むトレース資源の容量又は保存場所を前記最も高い属性情報及びレベルに対応する容量又は保存場所に変更するトレース資源変更部と、
を備え、
前記トレース資源テーブルは前記属性情報及びレベルに対応して予め指定されたトレース資源の容量又は保存場所を格納する
ことを特徴とするトレース装置。
【請求項２】
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、判別したレベルと所定の通知閾値とを比較し、前記レベルが通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力すると共に、検出したトレースイベントの前記属性が属性情報及びレベルの履歴を格納するイベントテーブルにおいて最もレベルの高い属性と同じ場合に、前記トレースイベントのトレース内容が記されたトレースデータと前記属性情報と前記レベルとをトレースバッファに書き込むイベント検出部と、
前記イベント検出部が出力した属性情報及びレベルを受信し、前記属性情報及びレベルを前記イベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高いトレースイベントの属性情報及びレベルを前記イベントテーブルの最初の項に配置するイベントテーブル編集部と、
前記イベント検出部が前記トレースバッファに格納した前記トレースイベントの前記属性及びレベルを判別し、最高レベルの属性を有する前記トレースデータ、前記属性情報、及び前記レベルを前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部と、
を備えることを特徴とするトレース装置。
【請求項３】
イベント検出部と、イベントテーブル編集部と、トレースデータ出力部と、トレース資源変更部と、を用いるトレース方法であって、
前記イベント検出部が、トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、トレース内容が記されたトレースデータ、前記属性情報、及び前記レベルをトレースバッファに書き込むと共に、前記レベルと所定の通知閾値とを比較し、前記レベルが前記通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力するイベント検出工程と、
前記イベントテーブル編集部が、前記イベント検出部が出力した前記属性情報及びレベルを受信し、前記属性情報及びレベルをイベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高い属性情報及びレベルを前記イベントテーブルの最初の項に配置すると共に、前記最もレベルの高い属性情報及びレベルを前記イベント検出部から受信した場合に前記最もレベルの高い属性情報及びレベルを出力するイベントテーブル編集工程と、
前記トレースデータ出力部が、前記イベント検出部が前記トレースバッファに書き込んだ前記トレースデータ、前記属性情報、及び前記レベルを、前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力工程と、
前記トレース資源変更部が、前記イベントテーブル編集部が出力した前記最もレベルの高い属性情報及びレベルを受信し、前記属性情報及びレベルに対応して予め指定されたトレース資源の容量又は保存場所を格納するトレース資源テーブルを参照して、前記トレースバッファ及び前記トレースファイルを含むトレース資源の容量又は保存場所を前記最も高い属性情報及びレベルに対応する容量又は保存場所に変更するトレース資源変更工程と、
を備えることを特徴とするトレース方法。
【請求項４】
イベント検出部と、イベントテーブル編集部と、トレースデータ出力部と、を用いるトレース方法であって、
前記イベント検出部が、トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、判別したレベルと所定の通知閾値とを比較し、前記レベルが通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力すると共に、検出したトレースイベントの前記属性が属性情報及びレベルの履歴を格納するイベントテーブルにおいて最もレベルの高い属性と同じ場合に、前記トレースイベントのトレース内容が記されたトレースデータと前記属性情報と前記レベルとをトレースバッファに書き込むイベント検出工程と、
前記イベントテーブル編集部が、前記イベント検出部が出力した属性情報及びレベルを受信し、前記属性情報及びレベルを前記イベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高いトレースイベントの属性情報及びレベルを前記イベントテーブルの最初の項に配置するイベントテーブル編集工程と、
前記トレースデータ出力部が、前記イベント検出部が前記トレースバッファに格納した前記トレースイベントの前記属性及びレベルを判別し、最高レベルの属性を有する前記トレースデータ、前記属性情報、及び前記レベルを前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力工程と、
を備えることを特徴とするトレース方法。
【請求項５】
コンピュータを、
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、トレース内容が記されたトレースデータ、前記属性情報、及び前記レベルをトレースバッファに書き込むと共に、前記レベルと所定の通知閾値とを比較し、前記レベルが前記通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力するイベント検出部、
前記イベント検出部が出力した前記属性情報及びレベルを受信し、前記属性情報及びレベルをイベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高い属性情報及びレベルを前記イベントテーブルの最初の項に配置すると共に、前記最もレベルの高い属性情報及びレベルを前記イベント検出部から受信した場合に前記最もレベルの高い属性情報及びレベルを出力するイベントテーブル編集部、
前記イベント検出部が前記トレースバッファに書き込んだ前記トレースデータ、前記属性情報、及び前記レベルを、前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部、
前記イベントテーブル編集部が出力した前記最もレベルの高い属性情報及びレベルを受信し、前記属性情報及びレベルに対応して予め指定されたトレース資源の容量又は保存場所を格納するトレース資源テーブルを参照して、前記トレースバッファ及び前記トレースファイルを含むトレース資源の容量又は保存場所を前記最も高い属性情報及びレベルに対応する容量又は保存場所に変更するトレース資源変更部、
として機能させるトレースプログラム。
【請求項６】
コンピュータを、
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、判別したレベルと所定の通知閾値とを比較し、前記レベルが通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力すると共に、検出したトレースイベントの前記属性が属性情報及びレベルの履歴を格納するイベントテーブルにおいて最もレベルの高い属性と同じ場合に、前記トレースイベントのトレース内容が記されたトレースデータと前記属性情報と前記レベルとをトレースバッファに書き込むイベント検出部、
前記イベント検出部が出力した属性情報及びレベルを受信し、前記属性情報及びレベルを前記イベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高いトレースイベントの属性情報及びレベルを前記イベントテーブルの最初の項に配置するイベントテーブル編集部、
前記イベント検出部が前記トレースバッファに格納した前記トレースイベントの前記属性及びレベルを判別し、最高レベルの属性を有する前記トレースデータ、前記属性情報、及び前記レベルを前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部、
として機能させるトレースプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおいて、プログラムの実行軌跡をトレースするトレース装置、トレース方法およびトレースプログラムに関する。
【背景技術】
【０００２】
コンピュータの制御プログラムが備えているトレース機能は、コンピュータの本来の機能へ与える負担、トレースバッファの容量、トレースファイルへの出力能力、トレースファイルの容量等の制約を受けている。
【０００３】
例えば、図１４に示すように、一般的なトレース機能では、コンピュータ本来の機能毎に設けられたイベント検出部１０１〜１０ｎが、検出したイベントに関するデータをトレースバッファ２００に格納し、トレースデータ出力部２０１がトレースバッファ２００に格納されたデータをトレースファイル２０２に出力する。
ここで、トレースバッファ２００の容量が小さい場合に、イベント検出部１０１〜１０ｎから大量のトレースデータが送られると、取りこぼしが発生する。またトレースファイル２０２の容量が小さいと、トレースデータが書き込まれなかったり、ファイル中のエントリが一周して上書きされてしまうことがある。
【０００４】
このような現象を回避するために、トレースバッファが不足した場合に、各トレースデータの情報量を削減することで、トレース情報の連続性を確保する技術が提案されている（例えば特許文献１）。この技術は、トレース情報の連続性を優先しているため、例えば、エラーが発生した機能の、障害解析に必要なトレースデータも削減してしまう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−１８５５３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、トレース情報の連続性を保ちつつ、障害解析に必要なトレースデータの取りこぼしを防ぐことを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の観点に係るトレース装置は、
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、トレース内容が記されたトレースデータ、前記属性情報、及び前記レベルをトレースバッファに書き込むと共に、前記レベルと所定の通知閾値とを比較し、前記レベルが前記通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力するイベント検出部と、
前記イベント検出部が出力した前記属性情報及びレベルを受信し、前記属性情報及びレベルをイベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高い属性情報及びレベルを前記イベントテーブルの最初の項に配置すると共に、前記最もレベルの高い属性情報及びレベルを前記イベント検出部から受信した場合に前記最もレベルの高い属性情報及びレベルを出力するイベントテーブル編集部と、
前記イベント検出部が前記トレースバッファに書き込んだ前記トレースデータ、前記属性情報、及び前記レベルを、前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部と、
前記イベントテーブル編集部が出力した前記最もレベルの高い属性情報及びレベルを受信し、トレース資源テーブルを参照して、前記トレースバッファ及び前記トレースファイルを含むトレース資源の容量又は保存場所を前記最も高い属性情報及びレベルに対応する容量又は保存場所に変更するトレース資源変更部と、
を備え、
前記トレース資源テーブルは前記属性情報及びレベルに対応して予め指定されたトレース資源の容量又は保存場所を格納する、
ことを特徴とする。
【０００８】
本発明の第２の観点に係るトレース装置は、
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、判別したレベルと所定の通知閾値とを比較し、前記レベルが通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力すると共に、検出したトレースイベントの前記属性が属性情報及びレベルの履歴を格納するイベントテーブルにおいて最もレベルの高い属性と同じ場合に、前記トレースイベントのトレース内容が記されたトレースデータと前記属性情報と前記レベルとをトレースバッファに書き込むイベント検出部と、
前記イベント検出部が出力した属性情報及びレベルを受信し、前記属性情報及びレベルを前記イベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高いトレースイベントの属性情報及びレベルを前記イベントテーブルの最初の項に配置するイベントテーブル編集部と、
前記イベント検出部が前記トレースバッファに格納した前記トレースイベントの前記属性及びレベルを判別し、最高レベルの属性を有する前記トレースデータ、前記属性情報、及び前記レベルを前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部と、
を備えることを特徴とする。
【０００９】
本発明の第３の観点に係るトレース方法は、
イベント検出部と、イベントテーブル編集部と、トレースデータ出力部と、トレース資源変更部と、を用いるトレース方法であって、
前記イベント検出部が、トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、トレース内容が記されたトレースデータ、前記属性情報、及び前記レベルをトレースバッファに書き込むと共に、前記レベルと所定の通知閾値とを比較し、前記レベルが前記通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力するイベント検出工程と、
前記イベントテーブル編集部が、前記イベント検出部が出力した前記属性情報及びレベルを受信し、前記属性情報及びレベルをイベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高い属性情報及びレベルを前記イベントテーブルの最初の項に配置すると共に、前記最もレベルの高い属性情報及びレベルを前記イベント検出部から受信した場合に前記最もレベルの高い属性情報及びレベルを出力するイベントテーブル編集工程と、
前記トレースデータ出力部が、前記イベント検出部が前記トレースバッファに書き込んだ前記トレースデータ、前記属性情報、及び前記レベルを、前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力工程と、
前記トレース資源変更部が、前記イベントテーブル編集部が出力した前記最もレベルの高い属性情報及びレベルを受信し、前記属性情報及びレベルに対応して予め指定されたトレース資源の容量又は保存場所を格納するトレース資源テーブルを参照して、前記トレースバッファ及び前記トレースファイルを含むトレース資源の容量又は保存場所を前記最も高い属性情報及びレベルに対応する容量又は保存場所に変更するトレース資源変更工程と、
を備えることを特徴とする。
【００１０】
本発明の第４の観点に係るトレース方法は、
イベント検出部と、イベントテーブル編集部と、トレースデータ出力部と、を用いるトレース方法であって、
前記イベント検出部が、トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、判別したレベルと所定の通知閾値とを比較し、前記レベルが通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力すると共に、検出したトレースイベントの前記属性が属性情報及びレベルの履歴を格納するイベントテーブルにおいて最もレベルの高い属性と同じ場合に、前記トレースイベントのトレース内容が記されたトレースデータと前記属性情報と前記レベルとをトレースバッファに書き込むイベント検出工程と、
前記イベントテーブル編集部が、前記イベント検出部が出力した属性情報及びレベルを受信し、前記属性情報及びレベルを前記イベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高いトレースイベントの属性情報及びレベルを前記イベントテーブルの最初の項に配置するイベントテーブル編集工程と、
前記トレースデータ出力部が、前記イベント検出部が前記トレースバッファに格納した前記トレースイベントの前記属性及びレベルを判別し、最高レベルの属性を有する前記トレースデータ、前記属性情報、及び前記レベルを前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力工程と、
を備えることを特徴とする。
【００１１】
本発明の第５の観点に係るトレースプログラムは、
コンピュータを、
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、トレース内容が記されたトレースデータ、前記属性情報、及び前記レベルをトレースバッファに書き込むと共に、前記レベルと所定の通知閾値とを比較し、前記レベルが前記通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力するイベント検出部、
前記イベント検出部が出力した前記属性情報及びレベルを受信し、前記属性情報及びレベルをイベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高い属性情報及びレベルを前記イベントテーブルの最初の項に配置すると共に、前記最もレベルの高い属性情報及びレベルを前記イベント検出部から受信した場合に前記最もレベルの高い属性情報及びレベルを出力するイベントテーブル編集部、
前記イベント検出部が前記トレースバッファに書き込んだ前記トレースデータ、前記属性情報、及び前記レベルを、前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部、
前記イベントテーブル編集部が出力した前記最もレベルの高い属性情報及びレベルを受信し、前記属性情報及びレベルに対応して予め指定されたトレース資源の容量又は保存場所を格納するトレース資源テーブルを参照して、前記トレースバッファ及び前記トレースファイルを含むトレース資源の容量又は保存場所を前記最も高い属性情報及びレベルに対応する容量又は保存場所に変更するトレース資源変更部、
として機能させることを特徴とする。
【００１２】
本発明の第６の観点に係るトレースプログラムは、
コンピュータを、
トレース対象のイベントであるトレースイベントを検出し、該トレースイベントの属性情報及び採取優先度を表すレベルを判別し、判別したレベルと所定の通知閾値とを比較し、前記レベルが通知閾値以上のトレースイベントの前記属性情報及び前記レベルを出力すると共に、検出したトレースイベントの前記属性が属性情報及びレベルの履歴を格納するイベントテーブルにおいて最もレベルの高い属性と同じ場合に、前記トレースイベントのトレース内容が記されたトレースデータと前記属性情報と前記レベルとをトレースバッファに書き込むイベント検出部、
前記イベント検出部が出力した属性情報及びレベルを受信し、前記属性情報及びレベルを前記イベントテーブルに登録し、該イベントテーブルにおいてレベルが最も高いトレースイベントの属性情報及びレベルを前記イベントテーブルの最初の項に配置するイベントテーブル編集部、
前記イベント検出部が前記トレースバッファに格納した前記トレースイベントの前記属性及びレベルを判別し、最高レベルの属性を有する前記トレースデータ、前記属性情報、及び前記レベルを前記トレースバッファよりも低速で大容量のトレースファイルに書き出すトレースデータ出力部、
として機能させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、トレース情報の連続性を保ちつつ、所定の機能のトレースデータの取りこぼしを防ぐことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係るトレース装置を備える情報処理装置のブロック図である。
【図２】本発明の第１の実施形態に係るトレース装置の機能構成図である。
【図３】トレースイベントと属性とレベルとの対応関係を例示する図である。
【図４】トレースイベント情報のフォーマット例を示した図である。
【図５】（ａ）初期状態のイベントテーブル、（ｂ）編集過程にあるイベントテーブル、（ｃ）編集後のイベントテーブルの例を示した図である。
【図６】通知閾値の構成例を示す図である。
【図７】トレース資源テーブルの例を示した図である。
【図８】第１の実施形態に係るトレース処理を説明するためのフローチャートである。
【図９】エラーの発生率に基づいて、トレースイベントの各属性のレベルを修正（更新）する処理を説明するためのフローチャートである。
【図１０】（ａ）と（ｂ）とは、エラーの発生率に基づいて、トレースイベントの各属性のレベルを修正（更新）する処理を説明するための図である。
【図１１】第２の実施形態に係るトレース装置の機能構成図である。
【図１２】第２の実施形態に係るトレース処理を説明するためのフローチャートである。
【図１３】トレースイベントテーブルの変形例を説明するための図である。
【図１４】従来のトレース装置の機能構成図である。
【発明を実施するための形態】
【００１５】
（第１実施形態）
本発明の第１の実施形態にかかるトレース装置を備える情報処理装置について説明する。
【００１６】
この実施形態の情報処理装置９は、図１に示すように、ＣＰＵ（Central Processing Unit）１と、記憶装置２と、ＲＡＭ（Random Access Memory）３と、インタフェース４と、入力装置５と、出力装置６と、補助記憶装置７と、から構成される。
【００１７】
ＣＰＵ１は各構成要素と接続され、記憶装置２に格納されているプログラムを実行し、情報処理装置９本来の機能を実行すると共に、トレース装置としての動作も実行する。
【００１８】
記憶装置２は、ＲＯＭ(Read Only Memory)，ハードディスク装置などから構成され、ＣＰＵ１が実行するプログラムや、固定データを記憶する。本実施形態では、情報処理装置９が実行する本来の処理を実行するためのプログラムやデータと共に、トレース装置として機能するためのプログラム、及び処理に必要な各種データ（トレースファイル等）を格納する。
【００１９】
ＲＡＭ３は、ＣＰＵ１のワークエリアとして機能する。
【００２０】
インタフェース４は、外部の装置（入力装置５，出力装置６，補助記憶装置７等）と情報処理装置９との間で、データを送受信する。
【００２１】
入力装置５は、例えば、キーボードやマウス等の入力デバイスによって実現され、利用者の操作に従って各種情報を情報処理装置９に入力するものである。また、入力装置５は、例えば、データベース装置から各種情報を抽出するものであってもよい。
【００２２】
出力装置６は、ＣＰＵ１の指示に従って、各種情報を出力する。例えば、出力装置６は、ディスプレイ装置等の表示装置から構成され、各種情報を表示する。また、例えば、出力装置６は、プリンタ等の印刷装置から構成され、各種情報を印刷する。
【００２３】
補助記憶装置７は、ハードディスク装置等から構成され、種々のデータを格納する。
【００２４】
以下、上記情報処理装置９において実現されるトレース装置１０について図２を参照して説明する。
トレース装置１０は、図２に示すように、イベント検出部１０１〜１０ｎと、トレースバッファ２００と、トレースデータ出力部２０１と、トレースファイル２０２と、イベントテーブル３００と、イベントテーブル編集部３０１と、トレース資源テーブル３０３と、トレース資源変更部３０４と、から構成される。
【００２５】
このトレース装置１０では、ユーザにより、情報処理装置９の各機能（例えば、ＳＣＳＩドライバやマネジメントドライバ）に対して、発生するトレースイベント（トレースの対象となるイベント）とそのトレースイベントの内容を示す属性とそのレースイベントの採取優先度を表す「レベル」が、例えば、図３に示すように予め設定されている。
【００２６】
イベント検出部１０１〜１０ｎは、それぞれ独立して動作可能で、情報処理装置９が備える各機能のトレース対象となるイベント（例えば、データの送受信やメモリ獲得／解放操作）を検出し、図３に例示した設定に従って、検出したトレースイベントに関するトレースイベント情報を生成し、トレースバッファ２００に出力する。
【００２７】
ここで、トレースイベント情報は、図４に示すように、トレース内容が記されたトレースデータと、トレースしたイベントの内容を示す属性と、採取優先度を表すレベルとを含む。さらに、イベント検出部１０１〜１０ｎは、検出したトレースイベントの属性とレベルの対をイベントテーブル編集部３０１に出力する。イベント検出部１０１〜１０ｎは、例えば、ＣＰＵ１とＲＡＭ３が協働することにより実現される。
【００２８】
トレースバッファ２００は、イベント検出部１０１〜１０ｎが出力したトレースイベント情報（トレースデータ、属性、レベル等）を記憶するために動的に又は静的に確保された記憶領域であり、例えば、ＲＡＭ３に確保される。
【００２９】
トレースデータ出力部２０１は、トレースバッファ２００に格納されたトレースイベント情報（トレースデータ、属性、レベル等）をトレースバッファ２００よりも低速で大容量のトレースファイル２０２へ出力する。トレースデータ出力部２０１は、ＣＰＵ１とＲＡＭ３が協働することにより実現される。
【００３０】
トレースファイル２０２は、トレースデータ出力部２０１から出力されたトレースイベント情報（トレースデータ、属性、レベル等）を記憶するファイルであり、記憶装置２に確保される。
【００３１】
イベントテーブル３００は、イベント検出部１０１〜１０ｎによって検出されたトレースイベントのうち、レベルが通知閾値３０２以上の属性とレベルとが対応付けて格納されている。図５（ａ）〜（ｃ）に例示するように、イベントテーブル３００の第１領域（先頭項目）４００には、検出されたトレースイベントのうちの最も高いレベルと対応する属性とが格納され、第２領域４０１の各エントリには、トレースイベントの属性毎に、検出されたトレースイベントのレベルが格納されている。
【００３２】
イベントテーブル編集部３０１は、イベント検出部１０１〜１０ｎが出力したトレースイベントの属性とレベルとの対を受信し、イベントテーブル３００の第２の領域４０１に登録し、続いて、今回登録した情報と第１領域４００に登録されている情報とを比較し、今回受信したレベルが最も高いレベルの場合には、受信した属性とレベルの対をイベントテーブル３００の第１領域４００に登録する。また、イベントテーブル編集部３０１は、今回登録した属性とレベルの対が、イベントテーブル３００の第１領域４００に登録されている属性及びレベルと一致する場合或いは新たに第１領域４００に登録した場合には、その属性及びレベルをトレース資源変更部３０４へ出力する。
【００３３】
通知閾値３０２は、イベント検出部１０１〜１０ｎが、検出したトレースイベントの属性及びレベルをイベントテーブル編集部３０１に通知するか否かを決定する基準であり、例えば、図６に示すように、前述のレベル“Ｄ”、“Ｗ”、“Ｎ”のいずれかが設定される。
【００３４】
トレース資源テーブル３０３には、図７に例示するように、属性及びレベルに対応して、トレース資源に対する処理が予め登録されている。イベントテーブル３００の先頭エントリ４００に登録されている（又は新たに登録された）トレースイベントが発生した場合には、このトレース資源テーブル３０３が参照され、対応する操作が登録されている場合には、その操作が実行される。これにより、属性及びレベルに応じて、トレースバッファ２００の又はトレースファイルの容量又は保存場所が変更される。図７に示すトレース資源テーブル３０３の設定によれば、属性が“ａ”でレベル“Ｄ”のトレースイベントが発生した場合（レベル“Ｄ”は最上位レベルなので）、トレースバッファのエントリが２００エントリに拡大され、属性が“ｂ”でレベルが“Ｄ”のイベントが発生した場合には、トレースバッファのエントリが１００エントリに拡大される。また、属性が“ｃ”でレベル“Ｗ”のトレースイベントが発生した場合（それが最上位レベルならば）、トレースバッファのエントリが７５エントリに拡大され、属性が“ｃ”でレベルが“Ｄ”のイベントが発生した場合には、トレースファイルのエントリが３００エントリに拡大され、トレースファイルの保存場所がＲＡＭ３から記憶装置２に変更される。
【００３５】
トレース資源変更部３０３は、イベントテーブル編集部３０１が出力したイベントテーブル３００の第１領域４００に登録されている属性及びレベルを受信し、トレース資源テーブル３０３の記述に従って、トレースバッファ２００又はトレースファイル２０２の容量又は保存場所を変更する。
【００３６】
次に、トレース装置１０の動作について、図１乃至図８を参照して説明する。
ここで、属性を“ａ”、“ｂ”、“ｃ”、レベルを採取優先度が高い順に、危険“Ｄ”、警告“Ｗ”、通常“Ｎ”、通知閾値３０２を“Ｄ”、と仮定する。
【００３７】
イベント検出部１０１は、自己が担当する機能に関して発生したトレースイベントを検出し（ステップＳ１０１）、検出したトレースイベントのレベルと通知閾値３０２のレベルとを比較し、トレースイベントのレベルが通知閾値３０２以上か否かを判定する（ステップＳ１０２）。この例では、レベル“Ｄ”のトレースイベントを検出したとき、イベント検出部１０１は通知閾値３０２以上と判定する（ステップＳ１０２；Ｙｅｓ）。
【００３８】
トレースイベントのレベルが通知閾値３０２以上の場合（ステップＳ１０２；Ｙｅｓ）、イベント検出部１０１はイベントテーブル編集部３０１にトレースイベントの属性及びレベルを通知する（ステップＳ１０３）。
【００３９】
イベントテーブル編集部３０１は、イベント検出部１０１から通知された属性とレベルとをイベントテーブル３００の第２領域４０１のいずれかのエントリに登録する。この場合、同一の属性について既に登録がある場合には、そのエントリに上書きする。同一の属性について未だに登録が無い場合には、空エントリに登録する。さらに、イベントテーブル編集部３０１は、今回登録したレベルがイベントテーブル３００の先頭エントリ４００に登録されているレベルよりも高いか否かを判定し、今回登録したレベルが第１領域４００に登録されているレベルよりも高いと判定した場合、そのレベルと属性の対を第１領域４００に登録する（ステップＳ１０４）。
【００４０】
例えば、イベントテーブル３００の初期状態が図５（ａ）の状態にあるとする。ここで、属性“ｂ”でレベル“Ｄ”のトレースイベントが発生したとする。この場合、イベント検出部１０１は、レベル“Ｄ”が通知閾値“Ｄ”以上であると判別し（ステップＳ１０２；Ｙｅｓ）、イベントテーブル編集部３０１に属性“ｂ”とレベル“Ｄ”との対を通知する。イベントテーブル編集部３０１は、と、第２領域４０１の第２エントリに属性“ｂ”についての登録があるので、図５（ｂ）に示すように、第２エントリに属性“ｂ”とレベル“Ｄ”とを登録する。続いて、イベントテーブル編集部３０１は、今回登録したレベル“Ｄ”が第１領域４００に登録されているレベル“Ｎ”より大きい最高レベルであると判別して、第１領域４００に属性“ｂ”とレベル“Ｄ”とを登録する。
【００４１】
次に、イベントテーブル編集部３０１は、イベント検出部１０１〜１０ｎから今回通知されて、今回登録したレベルが、イベントテーブル３００の第２領域４０１に登録されているレベルのうちの最高レベルか否かを判別する（ステップＳ１０５）。換言すると、今回登録したレベルが第１領域４００に登録されているレベルと一致するか否かを判別する（ステップＳ１０５）。最高レベルであると判別した場合（新たに第１領域４００に登録した場合を含む）（ステップＳ１０５；Ｙｅｓ）、その属性及びレベルをトレース資源変更部３０４へ通知する（ステップＳ１０６）。
【００４２】
トレース資源変更部３０４は、イベントテーブル編集部３０１より属性及びレベルを受信すると、トレース資源テーブル３０３を参照し（ステップＳ１０７）、その記述に基づいて、トレース資源の容量又はトレースイベント情報の保存場所を変更する（ステップＳ１０８）。例えば、トレースバッファ２００が動的に予め５０エントリ分の容量を確保しており、且つ、トレース資源テーブル３０３に図７に示す設定がなされている状態で、イベントテーブル編集部３０１から属性“ｂ”レベル“Ｄ”が通知されたとすると、トレース資源変更部３０４は、トレースバッファ２００の容量を５０エントリから１００エントリへと拡大させる。同様に、トレース資源テーブル３０３に図７に示す設定がなされている状態で、イベントテーブル編集部３０１から属性“ｃ”レベル“Ｄ”が通知されたとすると、トレース資源変更部３０４は、トレースバッファ２００の容量を３００エントリへと拡大させ、トレースファイル２０２の容量を１３００エントリに拡大させ、さらに、トレースファイル２０２の格納場所をＲＡＭ３から記憶装置２に移動させる。
【００４３】
一方、ステップＳ１０２で検出されたイベントのレベルが閾値レベルではないと判別された場合（ステップＳ１０２；Ｎｏ）、ステップＳ１０５で今回受信したレベルがイベントテーブル３００に登録されているレベルのうちの最上位では無いと判別された場合（ステップＳ１０５；Ｎｏ）、さらにステップＳ１０８でトレース資源の容量又は保存場所を変更した後、イベント検出部１０１は検出したトレースイベントに関するトレースイベント情報をトレースバッファ２００に格納する（ステップＳ１０９）。
【００４４】
トレースデータ出力部２０１は、例えば、トレースバッファ２００の空き容量が一定以下になった場合、トレースバッファ２０に格納されているトレースイベント情報を読み込み（ステップＳ１１０）、トレースファイル２０２に出力する（ステップＳ１１１）。
【００４５】
一般に、障害が起きたときにはトレースイベントが多くなり又はトレースデータが大きくなってしまい、トレースバッファ２００を圧迫し、取りこぼしの原因となる。本実施形態によれば、トレースイベントが発生したときに、そのレベルが最高レベルであれば、その属性とレベルに応じて、トレース資源の操作が行われるので、トレース情報を確実に残すことができ、障害解析に寄与できる。
【００４６】
また、イベント検出部１０１〜１０ｎは、採取優先度を自動的に変更する機能を備えるようにしてもよい。
この場合、イベント検出部１０１〜１０ｎは、周期的に図９に示す処理を実行し、まず、各機能のトレースイベント情報をもとにエラー発生を監視し、例えば、図１０（ａ）に例示するように、属性毎に、エラー発生回数をカウントする（ステップＳ２０１）。続いて、イベント検出部１０１〜１０ｎは、周期的に、カウント値をチェックし（ステップＳ２０２）、ある一定以上の頻度のエラーを検知すると障害が発生したと判断し（ステップＳ２０２；Ｙｅｓ）、障害の発生をユーザ等に通知し（ステップＳ２０３）、障害が発生した機能のレベルを最高レベルに変更する（ステップＳ２０４）。例えば、図１０（ａ）の例では、属性ａのエラー発生回数が１０回であり、この頻度が基準を超えているとすると、レベルを“Ｄ”レベル（最上位レベル）とする。
【００４７】
また、エラーを属性単位ではなく、図１０（ｂ）に示すように、機能単位に集計し、該当する機能に対応する属性のレベルを最上位レベルとしてもよい。
【００４８】
また、正常に戻ったことを通知するレベル（以降、正常化レベル：ＮＮ）を設定してもよい。例えば、イベント検出部１０１〜１０ｎから障害発生の通知を受けなくなった場合、イベントテーブル３００に設定されている対応する属性のレベルを正常化レベル“ＮＮ”に変更するようにしてもよい。例えば、イベントテーブル３０１が図５（ｃ）の場合に、図１０（ａ）に示すエラー頻度が得られたとする。この場合、属性“ｂ”のエラー頻度は“０”であり、属性ｂの機能は正常に復帰したと考えられる。そこで、イベント検出部１０１〜１０ｎは、属性“ｂ”のレベル“ＮＮ”を設定し、イベントテーブル編集部３０１に属性“ｂ”とレベル“ＮＮ”を通知する。イベントテーブル編集部３０１は、通知に応答し、イベントテーブル３００を図５（ａ）に示すように編集する。
【００４９】
本実施形態によれば、トレース情報の連続性を保ちつつ、トレースデータを必要な分だけ採取することができる。また、イベント検出部１０１〜１０ｎが採取優先度を変更する機能を備えることにより、障害が起きた機能のトレースデータの取りこぼしの発生を防ぐことができる。
【００５０】
（第２実施形態）
上記第１の実施形態では、ある属性についてレベルの高いトレースイベントが発生した場合に、トレース資源を操作したが、レベルの高いトレースイベントが発生した場合に、その属性のトレースイベントを集中的に収集し、代わりに、他の属性のイベント情報の収集を抑えることにより、トレースバッファ等の容量を抑えることも可能である。以下、このような構成の第２実施形態について説明する。
【００５１】
なお、第２実施形態に係るトレース装置を備える情報処理装置の構成は、図１に示す構成と同一であり、以下、本実施形態のトレース装置の機能構成を、図１１を参照して説明する。
【００５２】
本実施形態のトレース装置１１は、トレースイベントを検出する独立して動作可能なイベント検出部１０１〜１０ｎと、トレースバッファ２００と、トレースデータ出力部２０１と、トレースファイル２０２と、イベントテーブル３００と、イベントテーブル編集部３０１と、通知閾値３０２と、から構成される。トレースバッファ２００、トレースファイル２０２、イベントテーブル３０１、及び通知閾値３０２はそれぞれ第１実施形態と同様の機能又は構成を有する。
以下、第１実施形態と異なる動作を行う、イベント検出部１０１〜１０ｎ、トレースデータ出力部２０１、及びイベントテーブル編集部３０１を中心に説明する。
【００５３】
イベント検出部１０１〜１０ｎは、この情報処理装置９の各機能のトレースイベントを検出し、属性及びレベルをイベントテーブル編集部３０１に出力する。また、イベント検出部１０１〜１０ｎはイベントテーブル３００の第１領域４００を参照し、イベントテーブル３００の第１領域４００に記された属性を有するトレースイベントの情報、すなわち最高レベルを有する属性のトレースイベントのトレースイベント情報のみをトレースバッファ２００へ出力する。イベント検出部１０１〜１０ｎは、例えば、ＣＰＵ１とＲＡＭ３が協働することにより実現される。
【００５４】
トレースデータ出力部２０１は、トレースバッファ２００に格納されたトレースイベント情報を読み込む。また、トレースデータ出力部２０２は、イベントテーブル３００の第１領域４００に登録されている情報を参照し、イベントテーブル３００の第１領域４００に登録されている属性を有するトレースイベントのトレースイベント情報のみをトレースファイル２０２へ出力し、他属性のトレースイベントのトレースイベント情報については廃棄する。トレースデータ出力部２０１は、ＣＰＵ１とＲＡＭ３が協働することにより実現される。
【００５５】
イベントテーブル編集部３０１は、イベント検出部１０１〜１０ｎにより通知されたトレースイベントの属性及びレベルをイベントテーブル３００の第２領域に登録し、最も高いレベルの属性及びレベルをイベントテーブル３００の第１領域４００に登録する。
【００５６】
次に、本発明の第２実施形態に係るトレース装置の動作について、図１２のフローチャートを参照して説明する。
ここで、属性を“ａ”、“ｂ”、“ｃ”、レベルを採取優先度が高い順に、危険“Ｄ”、警告“Ｗ”、通常“Ｎ”、通知閾値３０２を“Ｄ”、と仮定する。
【００５７】
イベントテーブル３００が図５（ａ）に示す初期状態の場合、イベントテーブル３００の第１領域４００に属性は表記されていない。この場合、イベント検出部１０１〜１０ｎは、検出したトレースイベントの属性にかかわらず、検出した全てのトレースイベントのトレースイベント情報をトレースバッファ２００に出力する。また、トレースデータ出力部２０１は、トレースバッファ２００に登録されている全てのトレースイベント情報をトレースファイル２０２へと出力する。
【００５８】
イベント検出部１０１〜１０ｎは、それぞれ、トレースイベントを検出する（ステップＳ３０１）と、検出したトレースイベントのレベルと通知閾値３０２のレベルとを比較し、トレースイベントのレベルが通知閾値以上か否かを判定する（ステップＳ２０２）。例えば、レベル“Ｄ”のトレースイベントを検出したとき、イベント検出部１０１は通知閾値（Ｄ）３０２以上と判定する（ステップＳ３０２；Ｙｅｓ）。
【００５９】
検出したトレースイベントのレベルが通知閾値３０２以上の場合（ステップＳ３０２；Ｙｅｓ）、イベント検出部１０１〜１０ｎはイベントテーブル編集部３０１へトレースイベントの属性及びレベルを通知する（ステップＳ３０３）。イベントテーブル編集部３００は、イベント検出部１０１〜１０ｎが通知した属性及びレベルをイベントテーブル３０１に登録する（ステップＳ３０４）。
【００６０】
イベント検出部１０１〜１０ｎは、それぞれ、検出したトレースイベントのレベルが通知閾値３０２より低いと判断した場合（ステップＳ３０２；Ｎｏ）又は属性とレベルをイベントテーブル編集部３０１へ通知した後、イベントテーブル３００の第１領域４００を参照し、検出したトレースイベントの属性が第１領域４００に登録されているか否かを判定する（ステップＳ３０５）。
【００６１】
検出したトレースイベントの属性が第１領域４００に登録されている場合（ステップＳ３０５；Ｙｅｓ）、イベント検出部１０１〜１０ｎは、トレースイベント情報をトレースバッファ２００に格納する（ステップＳ３０６）。一方、検出したトレースイベントの属性がイベントテーブル３００の第１領域４００に登録されていない場合（ステップＳ２０５；Ｎｏ）、イベント検出部１０１〜１０ｎはトレースイベント情報を破棄する（ステップＳ３０７）。
【００６２】
一方、イベントテーブル編集部３０１は、イベント検出部１０１〜１０ｎから通知された属性とレベルの対をイベントテーブル３００の第２領域４０１に登録する。この際、同一の属性に関する登録がある場合には上書きし、無い場合には、空きエントリに登録する。次に、第２領域４０１に登録したレベルがイベントテーブル３００の第２領域４０１内で最高レベルか否かを判定し、最高レベルの場合、そのレベルと属性とをイベントテーブル３００の第１領域４００に登録する。
【００６３】
例えば、イベントテーブル３００が図５（ａ）に示す初期状態にあるときに、イベント検出部１０１〜１０ｎから属性“ｂ”、レベル“Ｄ”が通知された場合、テーブル編集部３０１は、図５（ｂ）に示すように属性“ｂ”とレベル“Ｄ”の対を、イベントテーブル３００の第２領域４０１に上書きして登録する。続いて、テーブル編集部３０１は、今回登録したレベルが第１領域４００に登録されているレベルより高いことを判別し、図５（ｃ）に示すように、イベントテーブル３００を編集する。
【００６４】
ここで、例えば、イベントテーブル３００が図５（ｃ）であって、イベント検出部１０１が、属性“ｂ”、レベル“Ｎ”のトレースイベントを検出した場合は、属性“ｂ”がイベントテーブル３００の第１領域４００に登録されているため、イベント検出部１０１〜１０ｎはトレースイベント情報をトレースバッファ２００に出力する。また、イベント検出部１０ｎが、属性“ｃ”、レベルの“Ｎ”のトレースイベントを検出したとすると、属性“ｃ”が第１領域４００に登録されていないため、イベント検出部１０ｎは、該当するトレースイベント情報を破棄する。
【００６５】
例えば、トレースバッファの空き容量が一定量以下になった場合、トレースデータ出力部２０１は、トレースバッファからトレースイベント情報を読み込み（ステップＳ３０８）、各トレースイベント情報に含まれている属性がイベントテーブル３００の第１領域４００に登録されている属性であるか否かを判定する（ステップＳ３０９）。
【００６６】
トレースイベント情報に含まれている属性が、イベントテーブル３００の第１領域４００に登録されている属性と同一の場合（ステップＳ３０９；Ｙｅｓ）、トレースデータ出力部２０１はトレースイベント情報をトレースファイル２０２に出力する（ステップＳ３１０）。
【００６７】
一方、読み込んだトレースイベント情報に含まれている属性がイベントテーブル３００の第１領域４００に登録されていない場合（ステップＳ３０９；Ｎｏ）、トレースデータ出力部２０１はそのトレースイベント情報を破棄する（ステップ３０７）。
【００６８】
例えば、イベントテーブル３００が、図５（ｃ）に示す状態で、トレースデータ出力部２０１がトレースバッファ２００から、属性“ｂ”、レベル“Ｎ”のトレースイベント情報を読み込んだとする。この場合、属性“ｂ”は、イベントテーブル３００の第１領域４００に登録されているため、トレースデータ出力部２０１は、そのトレースイベント情報をトレースファイル２０２に出力する。また、イベントテーブル３００が、図５（ｃ）に示す状態で、トレースデータ出力部２０１がトレースバッファ２００から、属性“ｃ”、レベル“Ｎ”のトレースイベント情報を読み込んだ場合、属性“ｃ”はイベントテーブル３００の第１領域４００に登録されていないため、トレースデータ出力部２０１は、そのトレースイベント情報を破棄する。
【００６９】
このような構成によれば、ある機能について障害が発生し、レベルの高いトレースイベントが発生すると、その属性がイベントテーブル３００の第１領域４００に登録される。その後、その属性のトレースイベント情報のみがトレースバッファ２００に登録され、さらに、トレースバッファ２００に登録されているトレースイベント情報のうち、その属性のものだけがトレースファイル２０２に格納される。従って、障害解析のために注目すべき属性のトレースイベント情報は確実に収集される。従って、発生した障害の解析が容易になる。
【００７０】
上述の説明では、イベント検出部１０１〜１０ｎ及びトレースデータ出力部２０１は、イベントテーブル３００の第１領域４００に登録されている属性のトレースイベント情報のみを出力するが、ある閾値（以降、出力閾値と呼ぶ）を設定し、その出力閾値以上のレベルの属性を有するトレースイベント情報を出力するようにしてもよい。例えば、図１３の例では、トレースイベントテーブル３００の第１領域４００に出力閾値として「“Ｗ”以上」が設定されている。この場合、第２領域４０１に設定されているレベルが“Ｗ”以上（即ち、“Ｗ”又は“Ｄ”）で属性のトレースイベント情報を出力することになる。図１３の例では、属性“ｃ”のレベル“Ｗ”と属性“ｂ”のレベル“Ｗ”が“Ｗ”以上のレベルに該当する。このため、第１領域４００の属性の項には、“ｃ”と“ｂ”が登録される。イベント検出部１０１〜１０ｎは、属性“ｂ”又は“ｃ”のトレースイベントを検出した場合、それらのトレースイベント情報をトレースバッファ２００に格納する。また、トレースデータ出力部２０１は、トレースバッファ２００に登録されているトレースイベント情報のうち、属性が“ｂ”、“ｃ”に該当するトレースイベント情報のみを選択的にトレースファイル２０２へ出力し、他のトレースイベント情報を廃棄する。
【００７１】
さらに、第１実施形態のように、各トレースイベントのレベルを、属性毎のエラーの発生頻度に基づいて、修正するようにしてもよい。
また、エラーの発生が停止した場合に、正常化レベルを設定し、トレースイベントテーブル３００の第１及び第２の領域４００，４０１に設定されているレベルを通常レベル“Ｎ”に設定し直すようにしても良い。
【００７２】
本願発明は、上記実施形態に限定されず、種々の変形及び応用が可能である。例えば、上記実施形態で説明したシステム構成や手順は適宜変更可能である。例えば、トレースイベントテーブル３００の第１領域４００と第２領域４０１とを別々に配置してもよい。また、発生したトレースイベントのレベルが、記憶されているレベルの最上位であるか否かの判別を容易にするために、第１領域４００を配置しているが、第１領域４００を用意せず、第２領域４０１に登録されているレベルをスキャンすることにより、最上位であるか否かを判別するようにしてもよい。また、上記実施形態では属性はイベントの内容を示していたが、属性は機能毎に設定され、属性が機能を示してもよい。
【符号の説明】
【００７３】
１  ＣＰＵ
２  記憶装置
３  ＲＡＭ
４  インタフェース
５  入力装置
６  出力装置
７  補助記憶装置
９  情報処理装置
１０  トレース装置
１０１、１０ｎ  イベント検出部
２００  トレースバッファ
２０１  トレースデータ出力部
２０２  トレースファイル
３００  イベントテーブル
３０１  イベントテーブル編集部
３０２  通知閾値
３０３  トレース資源テーブル
３０４  トレース資源変更部
４００  採取優先度が最高のレベルにある機能属性とそのレベル
４０１  属性ごとのレベル
【図１】
2010237809.tif 000003
【図２】
2010237809.tif 000004
【図３】
2010237809.tif 000005
【図４】
2010237809.tif 000006
【図５】
2010237809.tif 000007
【図６】
2010237809.tif 000008
【図７】
2010237809.tif 000009
【図８】
2010237809.tif 000010
【図９】
2010237809.tif 000011
【図１０】
2010237809.tif 000012
【図１１】
2010237809.tif 000013
【図１２】
2010237809.tif 000014
【図１３】
2010237809.tif 000015
【図１４】
2010237809.tif 000016