(57)【要約】【課題】リアルタイムタスクの応答遅延原因の特定作業の効率化を実現する応答遅延解析システムおよび応答遅延解析方法を提供することにある。【解決手段】実施形態によれば、応答遅延解析システムは、トレースログ解析手段、トレースポイント再設定手段を具備する。トレースログ解析手段は、トレースポイントが設定された状況下でのリアルタイムタスクの複数回の実行で取得される複数個のトレースログを解析し、応答遅延の原因である処理ブロックを判定する。トレースポイント再設定手段は、判定された処理ブロックをトレース対象として、より細かい粒度でトレースログが取得されるようにトレースポイントを再設定する。応答遅延解析システムは、応答遅延の原因である処理ブロックが最小限度の粒度で特定されるまで、リアルタイムタスクの実行、トレースログの解析、トレースポイントの再設定を再帰的に実施する。【選択図】図１
2015203962.tif 000002
【特許請求の範囲】
【請求項１】
トレースポイントが設定されたオペレーティングシステム上でリアルタイムタスクを複数回実行して、実行時間を含む複数個のトレースログを取得するトレース実行手段と、
前記複数個のトレースログを解析し、前記実行時間の比較により、応答遅延を生じさせている処理ブロックを判定するトレースログ解析手段と、
前記トレースログ解析手段により判定される処理ブロックをトレース対象として、より細かい粒度でトレースログが取得されるように、前記オペレーティングシステムのトレースポイントを再設定するトレースポイント再設定手段と、
応答遅延の原因である処理ブロックが当該応答遅延の原因を含む最小限度の粒度で特定されるまで、前記リアルタイムタスクの実行、前記トレースログの解析および前記トレースポイントの再設定を再帰的に実施すべく、前記トレース実行手段、前記トレースログ解析手段および前記トレースポイント再設定手段を駆動制御する制御手段と、
を具備する応答遅延解析システム。
【請求項２】
前記トレースログ解析手段は、最小の実行時間との比率が第１値以上となる実行時間が存在する処理ブロックを、応答遅延を生じさせている処理ブロックであると判定する請求項１に記載の応答遅延解析システム。
【請求項３】
前記トレースポイント再設定手段は、タスク、関数、関数領域の順に、トレースログが取得される粒度を細かくし、関数領域以降は、トレース対象の領域をｎ等分して、トレースログが取得される粒度を細かくする請求項１に記載の応答遅延解析システム。
【請求項４】
前記トレースポイント再設定手段は、トレース対象外とする処理ブロックに関するトレースポイントを除去する請求項１に記載の応答遅延解析システム。
【請求項５】
前記制御手段は、トレース対象の処理ブロックが、最小の実行時間との比率が第１値以上となる実行時間が存在しないものとなった場合、前記トレース実行手段、前記トレースログ解析手段および前記トレースポイント再設定手段を停止させる請求項１に記載の応答遅延解析システム。
【請求項６】
リアルタイムタスクの応答遅延をコンピュータにより解析する応答遅延解析方法であって、
前記コンピュータが、
トレースポイントが設定されたオペレーティングシステム上でリアルタイムタスクを複数回実行して、実行時間を含む複数個のトレースログを取得することと、
前記複数個のトレースログを解析し、前記実行時間の比較により、応答遅延を生じさせている処理ブロックを判定することと、
前記判定される処理ブロックをトレース対象として、より細かい粒度でトレースログが取得されるように、前記オペレーティングシステムのトレースポイントを再設定することと、
応答遅延の原因である処理ブロックが当該応答遅延の原因を含む最小限度の粒度で特定されるまで、前記リアルタイムタスクの実行、前記トレースログの解析および前記トレースポイントの再設定を再帰的に実施することと、
を具備する応答遅延解析方法。
【請求項７】
前記判定することは、最小の実行時間との比率が第１値以上となる実行時間が存在する処理ブロックを、応答遅延を生じさせている処理ブロックであると判定することを含む請求項６に記載の応答遅延解析方法。
【請求項８】
前記再設定することは、タスク、関数、関数領域の順に、トレースログが取得される粒度を細かくし、関数領域以降は、トレース対象の領域をｎ等分して、トレースログが取得される粒度を細かくすることを含む請求項６に記載の応答遅延解析方法。
【請求項９】
前記再設定することは、トレース対象外とする処理ブロックに関するトレースポイントを除去することを含む請求項６に記載の応答遅延解析方法。
【請求項１０】
前記実施することは、トレース対象の処理ブロックが、最小の実行時間との比率が第１値以上となる実行時間が存在しないものとなった場合、前記リアルタイムタスクの実行、前記トレースログの解析および前記トレースポイントの再設定を停止させることを含む請求項６に記載の応答遅延解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、応答遅延解析システムおよび応答遅延解析方法に関する。
【背景技術】
【０００２】
デバッグやトレースなど、ソフトウェア（プログラム）の不具合を改善するための作業が種々存在する。デバッグは、プログラムの誤りを発見・修正する作業であり、トレースは、プログラムの実行過程を追跡・調査する作業である。１件当たりの処理時間や単位時間当たりの処理件数等、要求される性能が達成されないプログラムに対しては、実行過程の追跡・調査、つまりトレースが行われるのが一般的である。
【０００３】
プログラムを実行するコンピュータにおける処理単位は、通常、タスクなどと称されている。また、終了予定時刻（デッドライン）までに処理を完了しなければならないタスクは、リアルタイムタスクなどと称されている。
【０００４】
リアルタイムタスクは、タスク自体の処理時間のみならず、開始予定時刻から実際にタスクの実行が開始された時刻までの差分時間が一定値以内に収まることが要求される。さらには、リアルタイムタスクが実行する関数についても、この差分時間が一定値以内に収まることが要求される。ここでは、この差分時間を応答時間と称する。また、何らかの原因によって、この応答時間が当該タスクの応答時間の平均値よりも著しく大きくなることを応答遅延と称する。
【０００５】
ここで、一連のリアルタイムタスクで構成されるリアルタイムシステムにおける応答遅延の発生原因をトレースによって特定する場合を考える。より具体的には、オペレーティングシステム（ＯＳ）にトレースポイントを設定し、このＯＳ上でリアルタイムタスクを実行してトレースログを取得することにより、応答遅延の発生原因を特定しようとしている場合を考える。トレースポイントとは、ＯＳのソースコードにおいて、トレースログを出力するための手続きが記述された箇所である。トレースログには、ＯＳ内で発生したイベントや実行された関数などに関する情報と、その発生時刻とが含まれる。従って、このトレースログを解析すれば、通常のタスクの追跡・調査と同様、リアルタイムタスクの応答遅延についても、その原因を簡単に特定し得るようにも思える。
【０００６】
しかしながら、トレースは、トレースポイントでのトレースログの出力というＯＳの処理（トレースオーバヘッド）を生じさせる。トレースオーバヘッドが増えると、トレースログに余分な処理時間が含まれ、応答遅延の原因特定が困難となってしまう。特に、リアルタイムシステムでは、トレースオーバヘッドの増加により、タスクの挙動自体が変化してしまうというおそれがある。
【０００７】
また、リアルタイムタスクの応答遅延は、低確率で発生し、所望のタイミングでの再現が難しいために、その原因特定に時間がかかっていた。
【０００８】
さらに、事前にトレースポイントを設定したトレース対象の単位（タスク、関数等）でのみ原因を特定可能であり、より細かい粒度で原因を絞り込むことは不可能であった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−２１１４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明が解決しようとする課題は、リアルタイムタスクの応答遅延原因の特定作業の効率化を実現する応答遅延解析システムおよび応答遅延解析方法を提供することにある。
【課題を解決するための手段】
【００１１】
実施形態によれば、応答遅延解析システムは、トレース実行手段、トレースログ解析手段、トレースポイント再設定手段および制御手段を具備する。トレース実行手段は、トレースポイントが設定されたオペレーティングシステム上でリアルタイムタスクを複数回実行して、実行時間を含む複数個のトレースログを取得する。トレースログ解析手段は、前記複数個のトレースログを解析し、前記実行時間の比較により、応答遅延を生じさせている処理ブロックを判定する。トレースポイント再設定手段は、前記トレースログ解析手段により判定される処理ブロックをトレース対象として、より細かい粒度でトレースログが取得されるように、前記オペレーティングシステムのトレースポイントを再設定する。制御手段は、応答遅延の原因である処理ブロックが当該応答遅延の原因を含む最小限度の粒度で特定されるまで、前記リアルタイムタスクの実行、前記トレースログの解析および前記トレースポイントの再設定を再帰的に実施すべく、前記トレース実行手段、前記トレースログ解析手段および前記トレースポイント再設定手段を駆動制御する。
【図面の簡単な説明】
【００１２】
【図１】実施形態の応答遅延解析システムのシステム構成を示す図。
【図２】リアルタイムタスクの応答遅延を説明するための図。
【図３】リアルタイムタスクの応答遅延原因をトレースによって特定する既存の手法を説明するための図。
【図４】実施形態の応答遅延解析システムがリアルタイムタスクの応答遅延原因を特定する原理を説明するための図。
【図５】実施形態の応答遅延解析システムで用いられるトレース対象一覧表の一例を示す図。
【図６】実施形態の応答遅延解析システムで用いられる応答遅延原因解析テーブルの一例を示す図。
【図７】実施形態の応答遅延解析システムにおけるトレースログの一例を示す図。
【図８】実施形態の応答遅延解析システムの動作手順を示すフローチャート。
【図９】実施形態の応答遅延解析システムにおける応答遅延原因解析テーブルの更新過程を説明するための応答遅延原因解析テーブルの一状態例を示す第１の図。
【図１０】実施形態の応答遅延解析システムによる応答遅延原因の絞り込み手順を説明するための第１の図。
【図１１】実施形態の応答遅延解析システムによる応答遅延原因の絞り込み手順を説明するための第２の図。
【図１２】実施形態の応答遅延解析システムによる応答遅延原因の絞り込み手順を説明するための第３の図。
【図１３】実施形態の応答遅延解析システムによる応答遅延原因の絞り込み手順を説明するための第４の図。
【図１４】実施形態の応答遅延解析システムにおける応答遅延原因解析テーブルの更新過程を説明するための応答遅延原因解析テーブルの一状態例を示す第２の図。
【図１５】実施形態の応答遅延解析システムにおける応答遅延原因解析テーブルの更新過程を説明するための応答遅延原因解析テーブルの一状態例を示す第３の図。
【図１６】実施形態の応答遅延解析システムにおける応答遅延原因解析テーブルの更新過程を説明するための応答遅延原因解析テーブルの一状態例を示す第４の図。
【図１７】実施形態の応答遅延解析システムによる応答遅延原因の絞り込み手順を説明するための第５の図。
【図１８】実施形態の応答遅延解析システムの作用および効果を別の事例を用いてさらに説明するための第１の図。
【図１９】実施形態の応答遅延解析システムの作用および効果を別の事例を用いてさらに説明するための第２の図。
【図２０】実施形態の応答遅延解析システムの作用および効果を別の事例を用いてさらに説明するための第３の図。
【図２１】実施形態の応答遅延解析システムの作用および効果を別の事例を用いてさらに説明するための第４の図。
【図２２】実施形態の応答遅延解析システムの作用および効果を別の事例を用いてさらに説明するための第５の図。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照して説明する。
【００１４】
図１は、本実施形態に係る応答遅延解析システム１のシステム構成を示す図である。
【００１５】
本応答遅延解析システム１は、リアルタイムタスクの応答遅延原因をトレースによって特定するシステムであって、（１）リアルタイムタスクの実行、（２）トレースログの解析、（３）トレースポイントの再設定を再帰的に実施し、応答遅延原因である処理ブロックを適度な粒度まで自動的に絞り込んで特定することを可能としたシステムである。図１に示されるように、本応答遅延解析システム１は、自動トレースシステム２０とビルドシステム３０とが協働することで実現され、トレースポイントが設定されたオペレーティングシステム（ＯＳ）１０上で応答遅延計測用リアルタイムタスク４０を実行し、トレースログ５１を取得して、応答遅延原因を解析・特定する。
【００１６】
なお、図１では、ハードウェア（実行環境）１００（図１（Ａ））とハードウェア（開発環境）１００（図１（Ｂ））との２つのハードウェア１００を表しているが、これらは別々のコンピュータ資源として存在する場合と、同一のコンピュータ資源として存在する場合がある。別々のコンピュータ資源である場合は、ひとつのコンピュータ資源で実行環境（図１（Ａ））のシステムが動作し、もう一方のコンピュータ資源で開発環境（図１（Ｂ））のシステムが動作する。同一のコンピュータ資源である場合は、ひとつのコンピュータ資源で実行環境（図１（Ａ））と開発環境（図１（Ｂ））の両方が動作する。ハードウェア１００には、プロセッサ、記憶装置、入力装置、表示装置（出力装置）等が含まれる。
【００１７】
まず、図２を参照して、リアルタイムタスクの応答遅延について説明する。リアルタイムタスクは、終了予定時刻（デッドライン）までに処理を完了しなければならないタスクである。そして、このリアルタイムタスクの開始予定時刻（理論値）から実際にタスクの実行が開始された時刻（実際の値）との差分時間である応答時間が当該タスクの平均値よりも著しく大きくなる事象が応答遅延である。
【００１８】
次に、本応答遅延解析システム１の理解を助けるために、図３を参照して、リアルタイムタスクの応答遅延原因をトレースによって特定する既存の手法について説明する。
【００１９】
リアルタイムタスクの応答遅延原因をトレースによって特定しようとする場合、一般的には、まず、ＯＳ１０にトレースポイントを設定する。トレースポイントの設定は、トレースログを出力するための手続きをＯＳソースコード１０Ａ内のトレース対象箇所に記述し、このＯＳソースコード１０Ａをコンパイルおよびリンクして実行可能イメージであるＯＳイメージ１０Ｂを生成して、このＯＳイメージ１０Ｂをインストールすることによって実施する。ＯＳ１０を含む各種プログラムのソースコードをコンパイルおよびリンクして実行可能イメージを生成することは、ビルドなどと称されている。このビルドを実行するシステムがビルドシステム３０ｘである。
【００２０】
ＯＳ１０は、トレースログを出力する機能（以下、トレース機能という）の有効／無効をユーザが設定可能とするトレースポイント設定インタフェース１１を有している。このトレースポイント設定インタフェース１１を介して、ユーザは、ＯＳ１０のトレース機能を有効に設定した上で、当該ＯＳ１０上で応答遅延計測用リアルタイムタスク４０を実行する。トレースポイント設定インタフェース１１は、トレース機能の有効／無効のほか、トレースポイント単位に有効／無効を設定することや、どのイベントについてトレースログを出力するかを設定すること等をユーザが行うことを可能とする。
【００２１】
トレース機能が有効化されたＯＳ１０上で応答遅延計測用リアルタイムタスク４０が実行されると、ＯＳ１０からトレースログ５１が出力される。ユーザは、このトレースログ５１を解析して、リアルタイムタスクの応答遅延原因を特定することを試みる。
【００２２】
しかしながら、例えばリアルタイムタスクの応答遅延は低確率で発生する等の種々の理由により、その原因特定は非常に時間がかかる作業であった。そこで、本応答遅延解析システム１は、リアルタイムタスクの応答遅延原因の特定作業を効率化するものであり、以下、この点について詳述する。
【００２３】
再び、図１を参照する。
【００２４】
自動トレースシステム２０は、トレースログ解析機能部２１、トレース対象決定機能部２２およびトレース実行機能部２３の各処理部と、応答遅延原因解析テーブル２４およびトレース対象一覧表２５の各データ部とを有している。トレース設定２６は、トレース対象決定機能部２２からトレース実行機能部２３に送信される情報を示している。また、図１には示されていないが、自動トレースシステム２０には、各処理部の駆動制御を司る制御機能部も存在する。
【００２５】
いま、初期状態として、ＯＳ１０には、各タスクの先頭（入れ替わり位置）にトレースポイントが設定されているものと想定する。換言すれば、タスク単位の解析が、最も粒度の粗いレベルでの解析であるものと想定する。トレース実行機能部２３は、トレース対象決定機能部２２から送信されるトレース設定２６に基づき、トレースポイント設定インタフェース１１を介して、各タスクの先頭に設定されたトレースポイントを有効化し、この状態のＯＳ１０上で応答遅延計測用リアルタイムタスク４０を複数回実行する。トレース対象決定機能部２２、トレース設定２６、トレースポイント設定インタフェース１１等については後述する。これにより、複数個のトレースログ５１が取得される。なお、以下では、各タスクの先頭にトレースポイントを設定した状況下でトレースログ５１を取得することを、トレース対象がタスク、解析レベルがタスク、などと称することがある。
【００２６】
続いて、トレースログ解析機能部２１が、複数個のトレースログ５１を解析し、その結果を応答遅延原因解析テーブル２４に記録する。ここでは、各タスクの先頭にトレースポイントが設定されているので、トレースログ解析機能部２１は、各タスクの実行時間を得ることができる。そこで、トレースログ解析機能部２１は、まず、各タスクについて、複数個の実行時間（ｔ）を収集し、その中の最小値（ｔmin）を取得する。次に、トレースログ解析機能部２１は、ｔ／ｔminを算出する。トレースログ解析機能部２１は、これらの値を応答遅延原因解析テーブル２４に記録する。
【００２７】
トレース対象決定機能部２２は、この応答遅延原因解析テーブル２４を参照して、ｔ／ｔminが一定値以上のタスクは応答遅延を生じさせていると判断し、次の解析レベルのトレース対象に決定する。次の解析レベルとは、例えば、現在の解析レベルがタスクの場合は関数であり、現在の解析レベルが関数の場合は関数領域である。以降、関数領域をブロック単位でｎ等分していく。トレース対象決定機能部２２は、トレース対象一覧表２５を参照し、トレース対象に決定したタスクのトレースログを次の解析レベル、つまり、より細かい粒度（関数）で取得するためのトレースポイントの追加を、ビルドシステム３０のトレースポイント追加機能部３１に要求する。
【００２８】
ビルドシステム３０は、ＯＳ１０を含む各種プログラムのソースコードから実行可能イメージを生成するシステムである。本応答遅延解析システム１におけるビルドシステム３０は、トレースポイント追加要求を受け付けて、ＯＳソースコード１０Ａにトレースポイントを追加するトレースポイント追加機能部３１を有している。トレースポイント追加機能部３１は、ＯＳソースコード１０Ａに追加したトレースポイントに関する情報をトレース対象一覧表２５に記録する。
【００２９】
ビルドシステム３０は、トレースポイント追加機能部３１によってトレースポイントが追加されたＯＳソースコード１０ＡからＯＳイメージ１０Ｂを生成する。また、本応答遅延解析システム１は、ビルドシステム３０によって生成されたＯＳイメージ１０ＢをインストールしてＯＳ１０を再起動する機能を有している。
【００３０】
ＯＳ１０が再起動されると、自動トレースシステム２０とビルドシステム３０が同一のコンピュータ資源上に存在する場合に限り、自動トレースシステム２０およびビルドシステム３０も再起動される。トレース対象決定機能部２２は、トレース対象一覧表２５を参照して、どのトレースポイントを有効とするかを示す情報であるトレース設定２６をトレース実行機能部２３に送信する。トレース実行機能部２３は、トレースポイント設定インタフェース１１を介して、トレース設定２６で示されるトレースポイントを有効とし、再び、ＯＳ１０上で応答遅延計測用リアルタイムタスク４０を複数回実行する。これにより、複数個のトレースログ５１が新たに取得される。なお、前回のトレースログに基づきトレースログ解析機能部２１により算出されたｔ／ｔminが一定値未満のタスクは、トレース対象決定機能部２２によりトレース対象から除外される。従って、トレース対象決定機能部２２からトレース実行機能部２３に送信されるトレース設定２６には含まれず、その結果、それらのタスクに関するトレースポイントは無効化される。
【００３１】
複数個のトレースログ５１が新たに取得されると、トレースログ解析機能部２１が、当該新たに取得された複数個のトレースログ５１を解析し、その結果を応答遅延原因解析テーブル２４に記録する。今度は、トレース対象のタスクの各関数の先頭にトレースポイントが設定されているので、トレースログ解析機能部２１は、トレース対象のタスクの各関数について、複数個の実行時間（ｔ）の収集、最小値（ｔmin）の取得、ｔ／ｔminの算出を行う。そして、トレース対象決定機能部２２は、ｔ／ｔminが一定値以上の関数は応答遅延を生じさせていると判断し、次の解析レベルのトレース対象に決定して、当該決定した関数のトレースログをより細かい粒度（関数領域）で取得するためのトレースポイントの追加をビルドシステム３０のトレースポイント追加機能部３１に要求する。
【００３２】
以降、本応答遅延解析システム１は、応答遅延原因である関数領域が適度な粒度まで絞り込まれて特定されるまで、前述の手順により、リアルタイムタスクの実行、トレースログの解析、トレースポイントの再設定を再帰的に実施する。図１中、ＯＳソースコード１０Ａの関数１に設定されるトレースポイントＣは、本応答遅延解析システム１ならではの適応的に追加されるトレースポイントである。
【００３３】
いま、図４に示すように、関数Ａ、関数Ｂ、関数Ｃを実行するリアルタイムタスクが存在するものと想定する。また、このリアルタイムタスクがＯＳ１０のトレース機能が無効化された状態で実行された場合、各関数の実行時間は１．０であり、応答遅延が発生していない場合のリアルタイムタスクの実行時間は３．０であると想定する。そして、このリアルタイムタスクの実行時間が３．８以上となる場合（稀に、実行時間が３．８以上となる事象が発生する場合）、応答遅延が発生しているとみなされるものと想定する。既存の手法では、この３．８のような実行時間（閾値）のみを応答遅延有無の判断基準としている点に留意する。
【００３４】
ここで、関数Ａ、関数Ｂ、関数Ｃのうち、関数Ｂが応答遅延を発生させており、トレースログを取得・解析することにより、当該関数Ｂを応答遅延原因として特定する場合を考える。なお、トレースオーバヘッドにより、トレース対象の実行時間は１．３倍に増加するものと想定する。
【００３５】
全関数をトレース対象とすると、仮に、関数Ａ、関数Ｂ、関数Ｃのいずれも応答遅延を発生させていない場合でも、トレースオーバヘッドにより、各関数の実行時間は１．３となり、リアルタイムタスクの実行時間が３．８以上となってしまう。しかし、本応答遅延解析システム１では、ｔ／ｔminを判断基準とし、ｔ／ｔminが一定値以上の関数を、応答遅延を生じさせていると判断するので、いずれの関数も応答遅延を発生させていないと正確な判断を下すことができる。また、関数Ｂが応答遅延を発生させていた場合、この関数Ｂのｔ／ｔminのみが一定値以上となるので、当該関数Ｂを応答遅延原因として特定することができる。このように、本応答遅延解析システム１は、第１に、トレースオーバヘッドの影響を受ける環境下でも、応答遅延原因を的確に特定することができる。また、リアルタイムタスクを複数回実行して得た結果を解析する方式を採用することにより、低確率で発生するアルタイムタスクの応答遅延を所望のタイミングで再現する必要性を無くすことができる。なお、ここでは、ｔ／ｔminを、実行時間比率、実行時間増加率、などと称する。
【００３６】
また、本応答遅延解析システム１は、トレース対象を限定し、かつ、粒度を細かくしながら、リアルタイムタスクの実行、トレースログの解析、トレースポイントの再設定を再帰的に実施する。例えばトレース対象を関数Ｂに限定した場合、全関数をトレース対象と比較すると、関数Ｂが応答遅延を発生させていない場合および関数Ｂが応答遅延を発生させている場合のいずれにおいても、リアルタイムタスク全体の実行時間は短くなる。このように、本応答遅延解析システム１は、第２に、タスクの挙動に変化を生じさせるおそれのあるトレースオーバヘッドを削減することができる。また、不要なトレースポイントを除去しつつ、トレースポイントを追加する方式を採用することにより、トレースオーバヘッドを増加させることなく、より細かい粒度で原因を絞り込むことができる。
【００３７】
図５は、トレース対象一覧表２５の一例を示す図である。
【００３８】
図５に示すように、トレース対象一覧表２５は、解析レベルごとのトレース対象の定義内容を保持するテーブルである。トレース対象一覧表２５は、本応答遅延解析システム１によるリアルタイムタスクの応答遅延原因の解析・特定が開始される前に予め用意されるものである。このトレース対象一覧表２５は、例えば本応答遅延解析システム１が提供するユーザインタフェースまたはエディタ等により、その定義内容をユーザが任意に変更することが可能である。なお、トレース対象一覧表２５は、解析レベル（高［大きい値］）の対象が、解析レベル（低［小さい値］）の対象よりも細かい粒度であるように作成されなければならない。トレース対象一覧表２５は、トレース対象決定機能部２２により参照され、また、トレースポイント追加機能部３１により更新される。
【００３９】
図６は、応答遅延原因解析テーブル２４の一例を示す図である。
【００４０】
図６に示すように、応答遅延原因解析テーブル２４は、解析レベル毎に、トレース対象の最小の実行時間（ｔmin）、トレース対象の例えば応答時間が閾値を超えた際の実行時間（ｔ）、トレース対象の実行時間増加率（ｔ／ｔmin）を記録するテーブルである。応答遅延原因解析テーブル２４は、トレースログ解析機能部２１により更新され、また、トレース対象決定機能部２２により参照される。トレース対象決定機能部２２は、実行時間増加率（ｔ／ｔmin）が一定値以上のトレース対象を、引き続き、（粒度をより細かくした）次のトレース対象に決定する。一定値は、予め定義される値である。
【００４１】
図６には、解析レベル１（解析レベルがタスク）で応答遅延原因がタスクＡに絞り込まれ、解析レベル２（解析レベルが関数）で応答遅延原因がタスクＡで実行された関数Ａに絞り込まれ、解析レベル３（解析レベルが関数領域）で応答遅延原因がタスクＡで実行された関数Ａの領域１に絞り込まれている様子が示されている。
【００４２】
また、図７は、トレースログ５１の一例を示す図である。
【００４３】
ここでは、タスクＡが実行する各関数の先頭に設定されたトレースポイントと、タスクの切替え（タスクスイッチ）というイベントとについて、トレースログが出力されるようにトレース機能が有効化されているものと想定する。
【００４４】
図７には、タスクＸからタスクＡへの切替え、タスクＡによる関数１の実行、タスクＡによる関数２の実行、タスクＡからタスクＹへの切替え等の実行過程に関する情報が、時刻情報が付されてトレースログ５１として出力されている様子が示されている。トレースログ解析機能部２１は、このトレースログ５１を解析することで、例えば、関数１および関数２の実行時間を得ることができる。
【００４５】
次に、図８乃至図１６を参照して、本応答遅延解析システム１がリアルタイムタスクの応答遅延原因を特定する手順について説明する。
【００４６】
図８は、本応答遅延解析システム１の動作手順を示すフローチャートである。
【００４７】
まず、トレース対象決定機能部２２が、応答遅延原因解析テーブル２４を参照して、応答遅延原因である疑いのあるトレース対象を選択する（ブロックＡ１）。なお、応答遅延原因の解析・特定が開始された直後の初期状態では、トレース対象決定機能部２２は、全てを対象とする。
【００４８】
いま、現在の解析レベルが２（関数）であり、応答遅延原因解析テーブル２４が、図９に示すような状態にあるものと想定する。図９に示すように、関数Ａ、関数Ｂがトレース対象となっており、そのうち、関数Ａが応答遅延原因である疑いを示す情報が応答遅延原因解析テーブル２４に記録されている。この場合、トレース対象決定機能部２２は、関数Ａのみを選択し、関数Ｂは無視する。
【００４９】
トレース対象決定機能部２２は、現在の解析レベルが２（関数）以降、つまり、次のトレース対象が関数領域の場合、選択したトレース対象の関数領域の分割をトレースポイント追加機能部３１に要求する（ブロックＡ２）。ここでは、応答遅延原因である疑いのある関数Ａの関数領域の分割が要求されたものと想定する。
【００５０】
トレースポイント追加機能部３１は、まず、図１０に示すように、要求されたトレース対象の関数領域の開始行Ｌsと終了行Ｌeとを取得する（ブロックＡ２１）。次に、トレースポイント追加機能部３１は、図１１に示すように、この開始行Ｌsから終了行Ｌeまでをブロック単位でｎ等分する（ブロックＡ２２）。そして、トレースポイント追加機能部３１は、図１２に示すように、この分割によって得られた新たな関数領域をトレース対象一覧表２５に追加し（ブロックＡ２３：図１２のａ１）、また、図１３に示すように、当該新たな関数領域に関するトレースポイントを追加する（ブロックＡ２４：図１３のｂ１，ｂ２）。
【００５１】
本応答遅延解析システム１では、トレースポイント追加機能部３１によりトレースポイントが追加されると、ビルドシステム３０によりＯＳイメージ１０Ｂが再ビルドされ、このＯＳイメージ１０Ｂの再インストールおよびＯＳ１０の再起動が実行される（ブロックＡ２５）。また、自動トレースシステム２０とビルドシステム３０が同一のコンピュータ資源上に存在する場合に限り、ＯＳ１０の再起動に伴い、自動トレースシステム２０およびビルドシステム３０も再起動される。
【００５２】
続いて、トレース対象決定機能部２２は、トレースポイント追加機能部３１が更新したトレース対象一覧表２５を参照して、次のトレース対象を取得する（ブロックＡ３）。つまり、解析レベルを１段階上げる（例えば、解析レベル２→解析レベル３）。この時、トレース対象決定機能部２２は、図１４に示すように、次のトレース対象の情報を記録するためのレコードを応答遅延原因解析テーブル２４に確保する（図１４のｃ１）。
【００５３】
トレース対象決定機能部２２は、このトレース対象のトレースポイントのみを有効化するための情報であるトレース設定２６を作成してトレース実行機能部２３に送信し、当該トレース設定２６に基づき、応答遅延計測用リアルタイムタスク４０をＯＳ１０上で実行させる（ブロックＡ４）。トレース実行機能部２３は、トレースポイント設定インタフェース１１を介して、トレース設定２６で示されるトレースポイントを有効化し、当該トレースポイントを有効化したＯＳ１０上で応答遅延計測用リアルタイムタスク４０を複数回実行する。
【００５４】
応答遅延計測用リアルタイムタスク４０が実行されると、トレースログ５１がＯＳ１０から出力される。トレースログ解析機能部２１は、トレースログ５１からトレース対象の実行時間を集計し（ブロックＡ５）、図１５に示すように、各値を応答遅延原因解析テーブル２４に記録する。この時、トレースログ解析機能部２１は、実行時間（ｔ）／最小実行時間（ｔmin）、つまり実行時間増加率を計算し、その値が一定値（α）以上となるトレース対象を検索する（ブロックＡ６）。実行時間増加率が一定値以上のトレース対象が存在した場合（ブロックＡ７のＮＯ）、ブロックＡ１からの処理が繰り返されることになる。例えば、図１６に示すように、領域Ａ1の実行時間増加率が一定値以上の場合、トレース対象決定機能部２２により、以降のトレース対象が当該領域Ａ1に限定されることになる。
【００５５】
限定したトレース領域が関数領域の場合、前述したように、トレース対象決定機能部２２は、その分割をトレースポイント追加機能部３１に要求する。これにより、図１７に示すように、領域Ａ1がさらにブロック単位でｎ等分され、この分割によって得られた新たな関数領域がトレース対象一覧表２５に追加される（図１７のｄ１）。
【００５６】
一方、実行時間増加率が一定値以上のトレース対象が存在しない場合（ブロックＡ７のＹＥＳ）、現在絞り込まれているトレース対象、つまり、実行時間増加率が一定値以上の最小限度の粒度のトレース対象が、応答遅延原因として出力される（ブロックＡ８）。
【００５７】
このように、本応答遅延解析システム１は、応答遅延原因である関数領域が、適度な粒度まで自動的に絞り込まれて特定される。
【００５８】
以上の手順を踏まえて、本応答遅延解析システム１の作用および効果を、別の事例を用いてさらに説明する。
【００５９】
いま、図１８に示す、タスクＡ、タスクＢ、タスクＣからなるリアルタイムシステムの応答遅延原因を特定する場合を想定する。図１８に示すように、タスクＢは、関数ｂを実行し、関数ｂ内において、関数ｂ１、関数ｂ２、関数ｂ３が実行される。関数ｂ２は、ループ処理１、ループ処理２、ループ処理３を含み、ループ処理２が、応答遅延原因となっているものと想定する。
【００６０】
なお、ここでは、図１９に示すように、応答遅延が発生した場合、タスクの実行時間は２倍となるものと想定する。また、トレースオーバヘッドは、タスクの場合、その実行時間が１．１倍となり、関数の場合、その実行時間が１．３倍となり、関数領域の場合、その実行時間が（例えば３等分する度）１．４倍になるものと想定する（１関数領域につき約１．１倍）。
【００６１】
仮に、タスクＡおよびタスクＣが、タスクＢと同様の構成であった場合、応答遅延原因を関数領域の粒度で特定すべく、全項目、つまり、タスク、関数、関数領域のすべてをトレース対象とすると、図２０に示すように、各タスクの実行時間は、トレースオーバヘッドにより（タスク分（１．１倍）×関数分（１．３倍）×関数領域分（１．４倍））２倍を超え、もはや、応答遅延が発生しているか否かを判断することができない。
【００６２】
一方、本応答遅延解析システム１は、図２１に示すように、解析レベル毎にトレース対象を絞り込み（タスク→関数→関数領域）、かつ、実行時間増加率（ｔ／ｔmin）を判断基準とすることで、トレースオーバヘッドを最大でも１．３倍に抑え、また、応答遅延が発生しているか否かを的確に判断することができる。
【００６３】
図２２に、（タスクＢ、関数ｂ２を経て）ループ処理２まで応答遅延原因が絞り込まれた時点における応答遅延原因解析テーブル２４の内容を示す。
【００６４】
既存の手法においても、トレース対象を関数とすることにより、応答遅延原因を関数ｂ２まで絞り込める可能性はある。しかしながら、それ以上の絞り込みを行うためには、手動でトレースポイントを追加したり、ＯＳを再ビルド・インストールしたり、といった知識がユーザに必要となる。
【００６５】
一方、本応答遅延解析システム１は、このような知識をユーザが持たなくとも、関数領域をブロック単位に分割し、関数ｂ２のループ２まで絞り込むことができる。ループやインライン関数など、関数化されていない複数の領域が関数に含まれる場合に特に効果を発揮する。
【００６６】
このように、本応答遅延解析システム１によれば、リアルタイムタスクの応答遅延原因の特定作業の効率化が実現される。
【００６７】
各実施形態の動作手順は、ソフトウェア（プログラム）によって実現することができるので、このソフトウェアを格納したコンピュータ読み取り可能な記憶媒体を通じてこのソフトウェアを通常のコンピュータにインストールして実行することにより、各実施形態と同様の効果を容易に実現することができる。
【００６８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６９】
１…応答遅延解析システム、１０…オペレーティングシステム（ＯＳ）、１０Ａ…ＯＳソースコード、１０Ｂ…ＯＳイメージ、１１…トレースポイント設定インタフェース、２０…自動トレースシステム、２１…トレースログ解析機能部、２２…トレース対象決定機能部、２３…トレース実行機能部、２４…応答遅延原因解析テーブル、２５…トレース対象一覧表、２６…トレース設定、３０…ビルドシステム、３１…トレースポイント追加機能部、４０…応答遅延計測用リアルタイムタスク、５１…トレースログ、１００…ハードウェア
【図１】
2015203962.tif 000003
【図２】
2015203962.tif 000004
【図３】
2015203962.tif 000005
【図４】
2015203962.tif 000006
【図５】
2015203962.tif 000007
【図６】
2015203962.tif 000008
【図７】
2015203962.tif 000009
【図８】
2015203962.tif 000010
【図９】
2015203962.tif 000011
【図１０】
2015203962.tif 000012
【図１１】
2015203962.tif 000013
【図１２】
2015203962.tif 000014
【図１３】
2015203962.tif 000015
【図１４】
2015203962.tif 000016
【図１５】
2015203962.tif 000017
【図１６】
2015203962.tif 000018
【図１７】
2015203962.tif 000019
【図１８】
2015203962.tif 000020
【図１９】
2015203962.tif 000021
【図２０】
2015203962.tif 000022
【図２１】
2015203962.tif 000023
【図２２】
2015203962.tif 000024