(57)【要約】【課題】情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを簡単な構成で検出する。【解決手段】すでに実行された監視対象タスクの実行時間を分類した各クラスタに対応して、当該クラスタに属する実行時間の範囲を記憶するクラスタ記憶部と、情報処理装置上で監視対象タスクが新たに実行されたことに応じて、監視対象タスクの実行時間を取得する取得部と、新たに実行された監視対象タスクの実行時間が、いずれのクラスタに対応する範囲にも含まれないことを条件として、監視対象タスクの実行において特異な動作が行われたと判定する判定部とを備える検出装置を提供する。【選択図】図１
2008225759.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを検出する検出装置であって、
すでに実行された前記監視対象タスクの実行時間を分類し、分類内に存在する最大実行時間を上限、分類内に存在する最小実行時間を下限とするクラスタに対応して、当該クラスタに属する前記実行時間の最大値を上限、当該クラスタに属する前記実行時間の最小値を下限とする範囲を記憶するクラスタ記憶部と、
前記情報処理装置上で前記監視対象タスクが新たに実行されたことに応じて、前記監視対象タスクの実行時間を取得する取得部と、
新たに実行された前記監視対象タスクの実行時間が、いずれの前記クラスタに対応する前記範囲にも含まれないことを条件として、前記監視対象タスクの実行において特異な動作が行われたと判定する判定部と、
を備える検出装置。
【請求項２】
前記監視対象タスクの実行時間の採取を開始してから予め定められた期間の間に採取された前記実行時間、または、前記監視対象タスクの実行時間の採取を開始してから予め定められた回数分の前記実行時間を分類して少なくとも１つのクラスタを生成するクラスタ生成部を更に備え、
前記判定部は、前記予め定められた期間の経過後に採取された前記実行時間、または、前記予め定められた回数分以降の前記実行時間について、前記クラスタ生成部にて生成されたクラスタに対応する前記範囲に含まれないことを条件として、前記監視対象タスクの実行において特異な動作が行われたか否かを検出する請求項１に記載の検出装置。
【請求項３】
前記クラスタ生成部は、
前記監視対象タスクの実行時間の採取を開始してから予め定められた期間の間に採取された前記実行時間、または、前記監視対象タスクの実行時間の採取を開始してから予め定められた回数分の前記実行時間を順次記憶する実行時間記憶部と、
前記監視対象タスクの実行時間の採取を開始してから予め定められた期間の間に採取されたそれぞれの前記実行時間、または、前記監視対象タスクの実行時間の採取を開始してから予め定められた回数分の前記実行時間をクラスタに分類する分類部と
を有する請求項２に記載の検出装置。
【請求項４】
前記クラスタ生成部は、特異な動作が行われたと前記判定部により判定されたことに応じて、新たなクラスタを生成し、いずれの前記クラスタに対応する前記範囲にも含まれないと判断された前記実行時間を前記新たなクラスタに分類する請求項２に記載の検出装置。
【請求項５】
前記判定部は、前記クラスタ生成部が前記新たなクラスタを生成した後に新たに実行された前記監視対象タスクの実行時間が前記新たなクラスタに対応する前記範囲に含まれ、かつ、前記新たなクラスタに属する前記実行時間が取得された回数が予め定められた回数未満であることを条件として、前記新たなクラスタを生成した後に新たに実行された前記監視対象タスクの実行において特異な動作が行われたと更に判定する請求項４に記載の検出装置。
【請求項６】
一のクラスタと前記一のクラスタに隣接するクラスタの間の実行時間の差が、前記一のクラスタと他の各クラスタの間の実行時間の差の最大値に対して予め定められた基準比率未満となったことに応じて、前記一のクラスタと前記一のクラスタに隣接するクラスタを結合して１つのクラスタとするクラスタマージ部を更に備える請求項１に記載の検出装置。
【請求項７】
前記クラスタ記憶部は、各クラスタに対応して、すでに実行された前記監視対象タスクの実行時間の最大値、最小値、および平均値を記憶し、
前記クラスタマージ部は、前記最大値、前記最小値、または前記平均値を前記クラスタの実行時間として用いて、前記一のクラスタと前記一のクラスタに隣接するクラスタの間の実行時間の差が、前記一のクラスタと他の各クラスタの間の実行時間の差の最大値に対して前記基準比率未満となったか否かを判断する
請求項６に記載の検出装置。
【請求項８】
２つのクラスタの間の実行時間の差が、予め定められた基準差未満となったことに応じて、当該２つのクラスタを結合して１つのクラスタとするクラスタマージ部を更に備える請求項１に記載の検出装置。
【請求項９】
情報処理装置と、前記情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを検出する検出装置とを備えるシステムであって、
前記情報処理装置は、前記監視対象タスクを実行し、
前記検出装置は、
すでに実行された前記監視対象タスクの実行時間を分類し、分類内に存在する最大実行時間を上限、分類内に存在する最小実行時間を下限とするクラスタに対応して、当該クラスタに属する前記実行時間の最大値を上限、当該クラスタに属する前記実行時間の最小値を下限とする範囲を記憶するクラスタ記憶部と、
前記情報処理装置上で前記監視対象タスクが新たに実行されたことに応じて、前記監視対象タスクの実行時間を取得する取得部と、
新たに実行された前記監視対象タスクの実行時間が、いずれの前記クラスタに対応する前記範囲にも含まれないことを条件として、前記監視対象タスクの実行において特異な動作が行われたと判定する判定部と、
を有するシステム。
【請求項１０】
情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを前記情報処理装置または他の情報処理装置により検出するプログラムであって、
前記情報処理装置または前記他の情報処理装置を、
すでに実行された前記監視対象タスクの実行時間を分類し、分類内に存在する最大実行時間を上限、分類内に存在する最小実行時間を下限とするクラスタに対応して、当該クラスタに属する前記実行時間の最大値を上限、当該クラスタに属する前記実行時間の最小値を下限とする範囲を、前記情報処理装置または前記他の情報処理装置が備える記憶装置に記憶するクラスタ記憶部と、
前記情報処理装置上で前記監視対象タスクが新たに実行されたことに応じて、前記監視対象タスクの実行時間を取得する取得部と、
新たに実行された前記監視対象タスクの実行時間が、いずれの前記クラスタに対応する前記範囲にも含まれないことを条件として、前記監視対象タスクの実行において特異な動作が行われたと判定する判定部と
して機能させるプログラム。
【請求項１１】
情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを前記情報処理装置または他の情報処理装置により検出する検出方法であって、
前記情報処理装置または前記他の情報処理装置が、すでに実行された前記監視対象タスクの実行時間を分類し、分類内に存在する最大実行時間を上限、分類内に存在する最小実行時間を下限とするクラスタに対応して、当該クラスタに属する前記実行時間の最大値を上限、当該クラスタに属する前記実行時間の最小値を下限とする範囲を、前記情報処理装置または前記他の情報処理装置が備える記憶装置に記憶させ、
前記情報処理装置上で前記監視対象タスクが新たに実行されたことに応じて、前記情報処理装置または前記他の情報処理装置の命令処理装置が、前記監視対象タスクの実行時間を取得し、
前記情報処理装置または前記他の情報処理装置の命令処理装置が、新たに実行された前記監視対象タスクの実行時間が、いずれの前記クラスタに対応する前記範囲にも含まれないことを条件として、前記監視対象タスクの実行において特異な動作が行われたと判定する
検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検出装置、システム、プログラムおよび検出方法に関する。特に本発明は、情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを検出する検出装置、システム、プログラムおよび検出方法に関する。
【背景技術】
【０００２】
制御システム等の情報処理装置に組み込まれる組込みソフトウェアの複雑化に伴い、ハードウェアおよびソフトウェアの検証およびデバック等に費やされる時間は、長期化している。そこで、ハードウェアおよびソフトウェアにおける、通常時とは異なる動作をする実行部分（特異点）を検出し、検出した特異点を中心に情報処理装置の動作を検証およびデバック等をすることが考えられる。これにより、特異な動作について重点的に検証およびデバックを行うことができるので、当該検証およびデバック等に費やされる合計時間を短縮することができる。
【０００３】
特許文献１には、動作しているタスク名を一定時間間隔で記憶し、各タスクの実行時間の占有率を二項分布に基づき推定する発明が記載されている。特許文献２には、複数のタスクを並行して実行する計算機システムにおけるタスク毎の実行時間を測定する発明が記載されている。より詳しくは、特許文献２には、実行時間積算領域をタスク毎に設け、タスクの終了後に当該タスクの処理時間を実行時間積算領域に加算し、当該タスクに対して割り込んだ下位タスクがあるときは当該下位タスクの処理時間を実行時間積算領域から減算する発明が記載されている。
【０００４】
特許文献３には、複数の標本点をクラスタリングする方法が記載されている。この方法においては、クラスタ内の標本点と当該クラスタの重心点との誤差を総和した第１総和値を、複数のクラスタに渡って総和した第２総和値を算出する。そして、この方法においては、クラスタ数を最大値から最小値に向けて変化させたときに第２総和値が急激に変化する箇所を挟む前後のいずれかのクラスタ数を最適クラスタ数に決定し、この最適クラスタ数となるように複数の標本点をクラスタリングする。
【０００５】
特許文献４には、入力データを分類するクラスタ分類装置が記載されている。このクラスタ分類装置は、１次元の自己組織化特徴マッピングを用いて入力データに対するプロトタイプ群からなるマップを作成し、そのマップにより入力データを分類する。
【０００６】
【特許文献１】特開平４−６８４５１号公報
【特許文献２】特開平３−２１０６４３号公報
【特許文献３】特開２００３−２４２５０８号公報
【特許文献４】特開平７−２３４８５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、情報処理装置の動作の特異点を検出する場合、当該情報処理装置を長時間動作させたときの内部状態を記憶しておき、記憶した内部状態を網羅的にトレースする。しかしながら、この方法では、記憶する内部状態が膨大となり、効率が悪い。また、例えば車載エンジンの制御装置のようなリアルタイム動作が求められる情報処理装置の特異点を検出する場合、実際の装置に組み込まれるソフトウェアをなるべく変更しないことが望ましい。
【０００８】
そこで本発明は、上記の課題を解決することのできる検出装置、システム、プログラムおよび検出方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の第１の形態においては、情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを検出する検出装置であって、すでに実行された監視対象タスクの実行時間を分類し、分類内に存在する最大実行時間を上限、分類内に存在する最小実行時間を下限とするクラスタに対応して、当該クラスタに属する実行時間の最大値を上限、当該クラスタに属する実行時間の最小値を下限とする範囲を記憶するクラスタ記憶部と、情報処理装置上で監視対象タスクが新たに実行されたことに応じて、監視対象タスクの実行時間を取得する取得部と、新たに実行された監視対象タスクの実行時間が、いずれのクラスタに対応する範囲にも含まれないことを条件として、監視対象タスクの実行において特異な動作が行われたと判定する判定部とを備える検出装置、並びに、この検出装置と情報処理装置とを備えるシステムを提供する。
【００１０】
本発明の第２の形態においては、情報処理装置上における監視対象タスクの実行において特異な動作が行われたか否かを情報処理装置または他の情報処理装置により検出するプログラムであって、情報処理装置または他の情報処理装置を、すでに実行された監視対象タスクの実行時間を分類し、分類内に存在する最大実行時間を上限、分類内に存在する最小実行時間を下限とするクラスタに対応して、当該クラスタに属する実行時間の最大値を上限、当該クラスタに属する実行時間の最小値を下限とする範囲を、情報処理装置または他の情報処理装置が備える記憶装置に記憶するクラスタ記憶部と、情報処理装置上で監視対象タスクが新たに実行されたことに応じて、監視対象タスクの実行時間を取得する取得部と、新たに実行された監視対象タスクの実行時間が、いずれのクラスタに対応する範囲にも含まれないことを条件として、監視対象タスクの実行において特異な動作が行われたと判定する判定部として機能させるプログラム、並びに、このプログラムが情報処理装置において実行されることにより実現される検出方法を提供する。
【００１１】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明を実施するための最良の形態】
【００１２】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
図１は、本発明の実施形態に係る検出装置１０の構成を情報処理装置１００とともに示す。図２は、監視対象タスク１１０の実行時間の一例を示す。検出装置１０は、情報処理装置１００により実行される複数種類のタスクのうちの少なくとも１つの監視対象タスク１１０を予め定め、情報処理装置１００上における監視対象タスク１１０の実行において特異な動作が行われたか否かを検出する。
【００１４】
タスクは、情報処理装置１００の演算処理装置において実行される処理をいう。タスクは、例えば関数、プロセス、スレッド等も含む。また、情報処理装置１００は、組込みソフトウェアを実行するハードウェアであってよく、タスクは、当該組込みソフトウェアとして実行される関数、プロセス、スレッド等であってよい。例えば、情報処理装置１００は、車載エンジン等の車載機器の制御装置のような、リアルタイム動作が求められる組込みソフトウェアを実行する情報処理装置であってよい。
【００１５】
タスクの特異な動作とは、一例として、当該タスクが情報処理装置１００により複数回実行された場合における通常の動作とは異なる動作をいう。タスクの特異な動作は、例えば、稀にしか発生しない動作、予め推測されていない動作、例外的な動作等を含む。例えば、当該タスクを呼び出したプログラムおよびハードウェア等、または当該タスクに異常が含まれている可能性がある場合、タスクは、特異な動作をする。なお、特異な動作は、必ずしも障害又は誤動作に該当するものではないが、該当する可能性が高いと考えられる。
【００１６】
検出装置１０は、検出部２２と、取得部２４と、クラスタ生成部２６と、クラスタ記憶部２８と、クラスタマージ部３０と、判定部３２とを備える。検出部２２は、情報処理装置１００上で監視対象タスク１１０が複数回実行されたことに応じて、それぞれの実行毎の実行時間を検出する。
【００１７】
タスクの実行時間は、図２に示すように、例えば当該タスクの実実行時間または処理時間であってよい。タスクの実実行時間は、当該タスクが演算処理装置により実行されていた実時間であり、他のタスクにより割り込まれている休止時間は含まない。タスクの処理時間は、当該タスクの起動タイミングから終了タイミングまでの時間であり、他のタスクにより割り込まれている休止時間を含む。
【００１８】
検出部２２は、一例として、ハードウェアインターフェイスを介して情報処理装置１００の実行時間を検出してよい。また、検出部２２は、一例として、情報処理装置１００上でプログラムが実行されることにより当該情報処理装置１００上で検出装置１０が実現される場合であれば、監視対象タスク１１０の実行時間をソフトウェアインターフェイスを介して検出してもよい。
【００１９】
また、例えば、監視対象タスク１１０または情報処理装置１００のタスクスケジューラに対して、監視対象タスク１１０の起動タイミングにおいて所定のレジスタにフラグおよびタスクＩＤ等を書き込み、監視対象タスク１１０の終了タイミングにおいて当該レジスタに書き込まれたフラグおよびタスクＩＤ等を削除させる。そして、検出部２２は、所定のレジスタを一定タイミング毎に読み出すことにより監視対象タスク１１０についての実行時間を検出してもよい。また、検出部２２は、一例として、情報処理装置１００に対して、当該情報処理装置１００によるタスクの実行状態を呼び出すコマンドを定期的に発行し、当該コマンドに対する応答に基づき監視対象タスク１１０の実行時間検出してもよい。
【００２０】
取得部２４は、情報処理装置１００上で監視対象タスク１１０が新たに実行されたことに応じて、監視対象タスク１１０の実行時間を取得する。取得部２４は、一例として、情報処理装置１００の動作中にリアルタイムで検出部２２を介して監視対象タスク１１０の実行時間を取得してよい。
【００２１】
取得部２４は、測定期間中における情報処理装置１００による監視対象タスク１１０の全ての実行についての実行時間を取得するのが好ましい。もっとも、取得部２４は、例えば一定期間毎に実行時間を取得するといったように、測定期間中における監視対象タスク１１０の全ての実行のうちの一部分の実行についての実行時間を取得してもよい。
【００２２】
クラスタ生成部２６は、すでに実行された監視対象タスク１１０の複数の実行時間をその値の大きさに応じて分類した少なくとも１つのクラスタを生成する。クラスタ記憶部２８は、すでに実行された監視対象タスク１１０の実行時間を分類した各クラスタに対応して、当該クラスタに属する実行時間の範囲を記憶する。
【００２３】
クラスタ記憶部２８は、それぞれのクラスタに属する実行時間の最大値、最小値および平均値を、実行時間の範囲として記憶する。クラスタマージ部３０は、一のクラスタに属する実行時間と当該一のクラスタに隣接するクラスタに属する実行時間が予め定められた値よりも近接したことを条件として、当該一のクラスタと隣接するクラスタとを結合して１つのクラスタとする。
【００２４】
判定部３２は、取得部２４により取得された新たに実行された監視対象タスク１１０の実行時間が、クラスタ記憶部２８により記憶されたいずれのクラスタに対応する範囲にも含まれないことを条件として、監視対象タスク１１０の実行において特異な動作が行われたと判定する。判定部３２は、特異な動作が行われたと判定した場合、判定結果を外部に出力する。
【００２５】
このような検出装置１０によれば、情報処理装置１００上における監視対象タスク１１０の実行において特異な動作が行われたか否かを、簡単な構成で検出することができる。
【００２６】
図３は、実行時刻をＸ軸とし、実行時間をＹ軸とした２次元空間上に、情報処理装置１００上において複数回実行された監視対象タスク１１０の各実行時刻に対する実行時間の一例をプロットした図を示す。監視対象タスク１１０は、処理に分岐条件（例えば、ＩＦ−ＴＨＥＮ−ＥＬＳＥ処理）またはループ回数が条件に応じて変化するループ処理等が含まれている場合、設定される条件によって実行時間が異なる。このような場合、監視対象タスク１１０の実行時間は、複数の値を中心に分布する。例えば、図３に示した例の場合、監視対象タスク１１０の実行時間は、１１μ秒、１９μ秒、２７μ秒、３５μ秒、４３μ秒、５２μ秒、６０μ秒の７つの値の近傍に集中している。
【００２７】
ここで、監視対象タスク１１０が特異な動作をした場合、実行時間は、複数の値を中心に分布した複数の範囲のいずれからも外れた値となる。そこで、検出装置１０においては、監視対象タスク１１０の複数の実行時間をその値の大きさに応じて分類したクラスタを生成する。そして、検出装置１０は、いずれのクラスタにも属しない実行時間が新たに発生した場合、情報処理装置１００上における監視対象タスク１１０の実行において特異な動作が発生したと判定する。
【００２８】
図３に示した例の場合であれば、検出装置１０は、１１μ秒、１９μ秒、２７μ秒、３５μ秒、４３μ秒、５２μ秒、６０μ秒のそれぞれの値を略中心とする７つのクラスタＣ１〜Ｃ７を生成する。そして、検出装置１０は、新たに取得された実行時間がこれらのクラスタＣ１〜Ｃ７のいずれかに属するか否かを判定することにより、監視対象タスク１１０の実行において特異な動作が発生したか否かを判定する。
【００２９】
図４は、実行時刻をＸ軸とし、実行時間をＹ軸にとした２次元空間上に、ある一つのクラスタＣｘに属する複数の実行時間の一例をプロットした一例を示す。クラスタ記憶部２８は、クラスタ生成部２６により生成された各クラスタに対応して、すでに実行された監視対象タスク１１０の実行時間の最大値、最小値、および平均値を記憶する。クラスタ記憶部２８は、各クラスタに属する実行時間の最大値および最小値を記憶することにより、採取された実行時間が当該クラスタに属するか否かを判定部３２に判断させることができる。さらに、クラスタ記憶部２８は、最大値、最小値および平均値を記憶することにより、隣接する２つのクラスタを結合して１つのクラスタとするか否かをクラスタマージ部３０に判断させることができる。
【００３０】
これに加えて、クラスタ記憶部２８は、各クラスタに対応して、すでに実行された監視対象タスク１１０の実行時間の採取回数を記憶してもよい。これにより、隣接する２つのクラスタを結合して１つのクラスタとする場合、クラスタマージ部３０に新たなクラスタの平均値を算出させることができる。
【００３１】
また、クラスタ生成部２６は、監視対象タスク１１０の実行時間の採取を開始してから予め定められた期間（学習期間）の間に採取された実行時間を分類して、少なくとも１つのクラスタを生成する。または、クラスタ生成部２６は、監視対象タスク１１０の実行時間の採取を開始してから予め定められた回数（学習回数）分の実行時間を分類して少なくとも１つのクラスタを生成してもよい。
【００３２】
さらに、判定部３２は、一例として、予め定められた学習期間の経過後に採取された実行時間、または、予め定められた学習回数分以降の実行時間について、監視対象タスク１１０の実行において特異な動作が行われたか否かを検出する。すなわち、判定部３２は、学習期間または学習回数より前において、情報処理装置１００の実行において特異な動作が行われたか否かを検出しないようにしてもよい。これにより検出装置１０によれば、学習期間中に生成されたクラスタに属する実行時間については特異な動作が行われたとして検出しないようにすることができる。
【００３３】
また、クラスタ生成部２６は、特異な動作が行われたと判定部３２により判定されたことに応じて、これまでに生成されたクラスタに加えて新たなクラスタを生成してよい。そして、クラスタ生成部２６は、いずれのクラスタに対応する範囲にも含まれないと判断された実行時間を新たなクラスタに分類してよい。
【００３４】
このように新たなクラスタを生成することにより、判定部３２は、以後、同様な実行時間が採取された場合に、特異な動作として判定をしない。これにより、検出装置１０によれば、同様の特異な動作が複数回行われた場合および学習期間（学習回数）中において発生しなかったが特異ではない動作が行われた場合等に、内部状態を重複して保存させないので、効率良く情報処理装置１００の検証およびデバック等をすることができる。
【００３５】
なお、特異な動作が行われたと判定されたことに応じて新たなクラスタを生成すること、および、近接したクラスタ同士を結合して１つのクラスタとすることを条件として、検出装置１０は、クラスタ数を０とした状態から、特異な動作が行われたか否かの検出を開始してよい。これにより、検出装置１０は、学習期間（または学習回数）を設けずに、特異な動作の検出を開始することができる。
【００３６】
もっとも、この場合、検出装置１０は、動作開始直後における特異な動作の検出頻度が高くなる。しかし、学習期間（または学習回数）に相当する期間が経過した後には、検出装置１０は、学習期間（または学習回数）を設けた場合と同様に特異な動作を検出することができる。
【００３７】
図５は、本実施形態に係るクラスタ生成部２６の構成の一例を示す。クラスタ生成部２６は、一例として、学習期間（または学習回数）の間に採取された実行時間を、学習期間（または学習回数）の経過後に一括して分類してクラスタを生成してよい。
【００３８】
この場合において、クラスタ生成部２６は、一例として、実行時間記憶部４２と、分類部４４とを有してよい。実行時間記憶部４２は、予め定められた学習期間の間に採取された実行時間、または、予め定められた学習回数分の実行時間を順次記憶する。分類部４４は、予め定められた学習期間の間に採取されたそれぞれの実行時間、または、予め定められた学習回数分の実行時間をクラスタに分類する。分類部４４は、学習期間中、または学習回数分の順次記憶した実行時間を、１次元に分布させた実行時間の差の最大値に対して、予め定められた基準比率未満であることを条件に分類する方法を用いて、クラスタを生成してもよい。
【００３９】
これにより、クラスタ生成部２６によれば、学習期間中の全データを、発生順序とは無関係に最適にクラスタリングすることができる。なお、検出装置１０は、クラスタ生成部２６により実行時間を採取している期間においては、特異な動作の検出をマスクしてよい。
【００４０】
図６は、本実施形態に係る検出装置１０の処理フローを示す。検出装置１０は、情報処理装置１００の動作中において、ステップＳ１００１〜Ｓ１００２の処理を実行する。
【００４１】
まず、取得部２４は、情報処理装置１００上における監視対象タスク１１０の実行毎に、当該実行における監視対象タスク１１０の実行時間を取得する（Ｓ１００１）。取得部２４により実行時間が取得されると、次に、判定部３２は、取得された実行時間に基づき、監視対象タスク１１０の当該実行において特異な動作が行われたか否かを判定する（Ｓ１００２）。そして、検出装置１０は、ステップＳ１００１およびＳ１００２の処理を、監視対象タスク１１０の実行毎に繰り返す。
【００４２】
図７は、図６のステップＳ１００２における処理フローの詳細の一例を示す。図８は、図７のステップＳ１１０２における処理の一例を示す。図９は、図７のステップＳ１１０３およびＳ１１０４における処理の一例を示す。図１０は、図７のステップＳ１１０５およびＳ１１０６における処理の一例を示す。
【００４３】
まず、判定部３２は、取得部２４により取得された実行時間がいずれのクラスタに対応する範囲に含まれていないかを判断する（Ｓ１１０１）。判定部３２は、取得された実行時間が、各クラスタの最大値以下且つ最小値以上の範囲に含まれていなければ、クラスタに対応する範囲に含まれていないと判断する（Ｓ１１０１のＹｅｓ）。また、判定部３２は、取得された実行時間が、クラスタ記憶部２８により記憶されたいずれかクラスタの最大値以下且つ最小値以上の範囲に含まれていれば、クラスタに対応する範囲に含まれていると判断する（Ｓ１１０１のＮｏ）。
【００４４】
次に、取得された実行時間がいずれのクラスタに対応する範囲に含まれていることを条件として（Ｓ１１０１のＮｏ）、クラスタ生成部２６は、対応するクラスタの平均値を更新する（Ｓ１１０２）。なお、この場合において、クラスタ生成部２６は、対応するクラスタの最大値および最小値を更新しなくてよい。
【００４５】
例えば図８に示すように、クラスタ生成部２６は、取得された当該実行時間を含め、クラスタＣ１に属する複数の実行時間の新たな平均値を算出し、当該クラスタＣ１の平均値を更新する。クラスタ生成部２６は、このように対応するクラスタの平均値を更新することにより、隣接する２つのクラスタを結合して１つのクラスタとするか否かを、正確に判断させることができる。そして、クラスタ生成部２６は、ステップＳ１１０２を終えると処理をステップＳ１１０５に進める。
【００４６】
次に、クラスタ生成部２６は、特異な動作が行われたと判定部３２により判定されたことに応じて、新たなクラスタを生成する（Ｓ１１０４）。クラスタ生成部２６により新たなクラスタが生成された場合、クラスタ記憶部２８は、当該新たなクラスタに属する実行時間の最大値、最小値、平均値および採取回数を記憶する。
【００４７】
例えば、図９に示すように、クラスタＣ１およびクラスタＣ２のいずれにも属さない実行時間が取得されたことにより特異な動作が行われたと判定された場合、クラスタ生成部２６は、取得された当該実行時間が属する新たなクラスタＣ３を生成する。当該新たなクラスタＣ３は、生成された直後においては、当該クラスタＣ３に属する実行時間が１つである。従って、クラスタ記憶部２８は、新たなクラスタＣ３に属する実行時間の採取回数として１を記憶するとともに、同じ値の最大値、最小値および平均値を記憶する。
【００４８】
クラスタ生成部２６は、このように新たなクラスタを生成することにより、以後、同様な実行時間が採取された場合であっても、特異な動作として判定をさせず、同様な動作時における内部状態の重複保存を防止することができる。そして、クラスタ生成部２６は、ステップＳ１１０４を終えると処理をステップＳ１１０５に進める。
【００４９】
次に、クラスタマージ部３０は、２つのクラスタを結合して１つのクラスタとするか否かを判断する（Ｓ１１０５）。クラスタマージ部３０は、一例として、平均値をクラスタの実行時間として用いて、一のクラスタと一のクラスタに隣接するクラスタの間の実行時間の差が、一のクラスタと他の各クラスタの間の実行時間の差の最大値に対して基準比率未満となったことに応じて、当該２つのクラスタを結合して１つのクラスタとすると判断してよい。
【００５０】
例えば、図１０に示すように、クラスタマージ部３０は、クラスタＣ２と当該クラスタＣ２に隣接するクラスタＣ１との間の実行時間の差（平均値同士の距離ｄａｂ）、および、当該クラスタＣ２と他のクラスタの間の実行時間の差（平均値同士の距離）の最大値（例えば、クラスタＣ２とクラスタＣ３との平均値の距離ｄｂｃ）を算出する。次に、クラスタマージ部３０は、距離ｄａｂが、距離ｄｂｃに基準比率ｐを乗じた値（ｐ×ｄｂｃ）未満となったか否かを判定する。ここで、ｐは、１未満の値であり、例えば０．１等の予め定められた値である。そして、クラスタマージ部３０は、距離ｄａｂが、距離ｄｂｃに基準比率ｐを乗じた値（ｐ×ｄｂｃ）未満となった場合、クラスタＣ２とクラスタＣ１とを結合すべきと判断してよい。
【００５１】
また、クラスタマージ部３０は、平均値に代えて、最大値または最小値を実行時間として用いてもよい。すなわち、クラスタマージ部３０は、一のクラスタと一のクラスタに隣接するクラスタの間の最大値または最小値同士の差が、一のクラスタと他の各クラスタの間の最大値または最小値同士の差の最大値に対して基準比率未満となったか否かを判断してよい。また、クラスタマージ部３０は、一のクラスタと当該一のクラスタに隣接するクラスタの間の実行時間の差、および、一のクラスタと他のクラスタの間の実行時間の差として、実行時間が大きい側のクラスタにおける最小値と、実行時間の小さい側のクラスタにおける最小値とを算出してもよい。
【００５２】
また、以上に代えて、クラスタマージ部３０は、２つのクラスタの間の実行時間の差が、予め定められた基準差未満となったことに応じて、当該２つのクラスタを結合して１つのクラスタとしてもよい。この場合においても、クラスタマージ部３０は、クラスタの実行時間として、最大値、最小値または平均値のいずれかを用いてよい。また、この場合においても、クラスタマージ部３０は、一のクラスタと当該一のクラスタに隣接するクラスタの間の実行時間の差、および、一のクラスタと他のクラスタの間の実行時間の差として、実行時間が大きい側のクラスタにおける最小値と、実行時間の小さい側のクラスタにおける最小値とを算出してもよい。
【００５３】
これによりクラスタマージ部３０によれば、一のクラスタの実行時間と当該一のクラスタに隣接するクラスタと実行時間とが予め定められた値よりも近接したことを適切に判定して、近接したクラスタ同士を適切に結合することができる。クラスタマージ部３０は、２つのクラスタを結合して１つのクラスタとしないと判断した場合には当該ステップＳ１１０１〜Ｓ１１０６の処理を終了する（Ｓ１１０５のＮｏ）。クラスタマージ部３０は、２つのクラスタを結合して１つのクラスタとすると判断した場合には、処理をステップＳ１１０６に進める。
【００５４】
次に、ステップＳ１１０５においてＹｅｓの場合、クラスタマージ部３０は、結合すべき２つのクラスタ（例えば、第１のクラスタおよび第２のクラスタ）を結合して新たなクラスタを生成する（Ｓ１１０６）。例えば、図１０に示すように、クラスタマージ部３０は、結合すべきと判断された第１のクラスタＣ１および第２のクラスタＣ２を結合して、新たなクラスタＣ４を生成する。
【００５５】
さらに、クラスタマージ部３０は、新たなクラスタについての、実行時間の最大値、最小値、平均値および採取回数を生成し、クラスタ記憶部２８に記憶させる。クラスタマージ部３０は、新たなクラスタの最大値を、第１のクラスタおよび第２のクラスタのうちの実行時間が大きい側のクラスタにおける最大値とする。また、クラスタマージ部３０は、新たなクラスタの最小値を、第１のクラスタおよび第２のクラスタのうちの実行時間が小さい側のクラスタにおける最小値とする。これにより、クラスタマージ部３０は、個々の実行時間を記憶しておかなくてもよく、高速に新たなクラスタの実行時間の平均値を求めることができる。
【００５６】
さらに、クラスタマージ部３０は、新たなクラスタの平均値および採取回数を、第１のクラスタおよび第２のクラスタの実行時間に基づき生成する。クラスタマージ部３０は、一例として、第１のクラスタの採取回数と平均値との乗算結果と、第２のクラスタの採取回数と平均値との乗算結果とを加算する。そして、クラスタマージ部３０は、加算結果を、第１のクラスタの採取回数と第２のクラスタの採取回数との合計により除算した値を、新たなクラスタの平均値としてよい。また、クラスタマージ部３０は、第１のクラスタの採取回数と、第２のクラスタの採取回数との和を、新たなクラスタの採取回数としてよい。
【００５７】
以上の処理を実行することにより、検出装置１０によれば、順次に取得される監視対象タスク１１０の実行時間に応じてクラスタを結合しながら、特異な動作が行われたか否かを判定することができる。検出装置１０は、以上のステップＳ１１０１〜ステップＳ１１０６の処理を学習期間（または学習回数）の経過後に実行してよい。また、検出装置１０は、学習期間（または学習回数）の経過前に、ステップＳ１１０３を除いたステップＳ１１０１〜ステップＳ１１０６の処理を実行して、クラスタを生成してもよい。
【００５８】
なお、判定部３２は、取得された実行時間がクラスタに対応する範囲に含まれていると判断した場合であっても（Ｓ１１０１のＮｏ）、新たにクラスタが生成されてから当該クラスタの範囲に属する実行時間の数回については、特異な動作が行われたと判定してもよい。すなわち、判定部３２は、クラスタ生成部２６が新たなクラスタを生成した後に新たに実行された監視対象タスク１１０の実行時間が新たなクラスタに対応する範囲に含まれ、かつ、新たなクラスタに属する実行時間が取得された回数が予め定められた回数未満であることを条件として、監視対象タスク１１０の実行において特異な動作が行われたと更に判定してもよい。これにより、検出装置１０によれば、特異な動作が行われた点の近傍における情報処理装置１００の検証およびデバック等をすることができる。
【００５９】
図１１は、本実施形態の変形例に係るシステム２００の構成を示す。システム２００は、情報処理装置１００と、検出装置１０とを備える。情報処理装置１００および検出装置１０は、それぞれ、図１に示した情報処理装置１００および検出装置１０と略同一の構成および機能を有するので、以下相違点を除き詳細な説明を省略する。
【００６０】
情報処理装置１００および検出装置１０は、一つの装置内に組み込まれる。情報処理装置１００および検出装置１０は、一例として、１つのＩＣチップ、１つのモジュールまたは１つの基板上に実装されてよい。また、検出装置１０は、情報処理装置１００がプログラムを実行することにより実現されてもよい。すなわち、情報処理装置１００は、検出装置１０を実現するためのプログラムおよび監視対象タスク１１０を並列に実行してよい。以上に示す変形例によれば、システム２００自体に検出装置１０を組み込むので、検証時およびデバック時におけるシステム２００に対する検出装置１０の接続処理等を省略でき、簡易に検証およびデバック等をすることができる。
【００６１】
また、他の変形例に係るシステムは、１つの情報処理装置１００と、複数の検出装置１０とを備えてよい。複数の検出装置１０のそれぞれは、同一の監視対象タスク１１０について互いに異なる実行についての実行時間を検出して、特異な動作が行われたかを判定する。例えば、当該システムにおいて、複数の検出装置１０が１つずつ順番に監視対象タスク１１０の実行時間を検出して、それぞれの実行において特異な動作が行われたかを判定してよい。これにより、当該他の変形例に係るシステムによれば、検証装置１０の処理速度に対して監視対象タスク１１０の実行回数が相対的に多い場合であっても、全ての実行についてリアルタイムで特異な動作が行われたことの判定を行うことができる。
【００６２】
図１２は、本発明の実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続される命令処理装置であるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される入力装置２０２５、通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００６３】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００６４】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、他の装置から情報を入力する入力装置２０２５、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００６５】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラムや、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０や、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
【００６６】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００６７】
コンピュータ１９００にインストールされ、コンピュータ１９００を検出装置１０として機能させるプログラムは、検出モジュールと、取得モジュールと、クラスタ生成モジュ ールと、クラスタ記憶モジュールと、クラスタマージモジュールと、判定モジュールとを備える。コンピュータ１９００を検出装置１０として機能させるプログラムは、情報処理装置１００とは異なる他の情報処理装置（コンピュータ１９００）により実行されてもよいし、情報処理装置１００（コンピュータ１９００）自体により実行されてもよい。
【００６８】
これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、検出部２２、取得部２４、クラスタ生成部２６、クラスタ記憶部２８、クラスタマージ部３０、判定部３２としてそれぞれ機能させる。より詳しくは、これらのプログラム又はモジュールは、入力装置２０２５等の入力装置を検出部２２として機能させ、ＲＡＭ２０２０またはハードディスクドライブ２０４０等の記憶装置をクラスタ記憶部２８として機能させ、ＣＰＵ２０００を取得部２４、クラスタ生成部２６、クラスタマージ部３０および判定部３２として機能させる。
【００６９】
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤやＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００７０】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００７１】
【図１】本発明の実施形態に係る検出装置１０の構成を情報処理装置１００とともに示す。
【図２】監視対象タスク１１０の実行時間の一例を示す。
【図３】実行時刻をＸ軸とし、実行時間をＹ軸とした２次元空間上に、情報処理装置１００上において複数回実行された監視対象タスク１１０の各実行時刻に対する実行時間の一例をプロットした図を示す。
【図４】実行時刻をＸ軸とし、実行時間をＹ軸とした２次元空間上に、ある一つのクラスタＣｘに属する複数の実行時間をプロットした一例を示す。
【図５】本実施形態に係るクラスタ生成部２６の構成の一例を示す。
【図６】本実施形態に係る検出装置１０の処理フローを示す。
【図７】図６のステップＳ１００２における処理フローの詳細の一例を示す。
【図８】図７のステップＳ１１０２における処理の一例を示す。
【図９】図７のステップＳ１１０３およびＳ１１０４における処理の一例を示す。
【図１０】図７のステップＳ１１０５およびＳ１１０６における処理の一例を示す。
【図１１】本実施形態の変形例に係るシステム２００の構成を示す。
【図１２】本発明の実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。
【符号の説明】
【００７２】
１０  検出装置
２２  検出部
２４  取得部
２６  クラスタ生成部
２８  クラスタ記憶部
３０  クラスタマージ部
３２  判定部
４２  実行時間記憶部
４４  分類部
１００  情報処理装置
１１０  監視対象タスク
２００  システム
１９００  コンピュータ
２０００  ＣＰＵ
２０１０  ＲＯＭ
２０２０  ＲＡＭ
２０２５  入力装置
２０３０  通信インターフェイス
２０４０  ハードディスクドライブ
２０５０  フレキシブルディスク・ドライブ
２０６０  ＣＤ−ＲＯＭドライブ
２０７０  入出力チップ
２０７５  グラフィック・コントローラ
２０８０  表示装置
２０８２  ホスト・コントローラ
２０８４  入出力コントローラ
２０９０  フレキシブルディスク
２０９５  ＣＤ−ＲＯＭ
【図１】
2008225759.tif 000003
【図２】
2008225759.tif 000004
【図３】
2008225759.tif 000005
【図４】
2008225759.tif 000006
【図５】
2008225759.tif 000007
【図６】
2008225759.tif 000008
【図７】
2008225759.tif 000009
【図８】
2008225759.tif 000010
【図９】
2008225759.tif 000011
【図１０】
2008225759.tif 000012
【図１１】
2008225759.tif 000013
【図１２】
2008225759.tif 000014