(57)【要約】  異常検出装置（２０００）は、複数の処理サーバ（３２００）で構成される分散システム（３０００）において、処理サーバ（３２００）に割り当てられているタスクを処理対象とする。履歴取得部（２０２０）は、複数の記録時点における、複数のタスクの進捗に関する情報である進捗履歴情報を取得する。対象範囲決定部（２０４０）は対象範囲を決定する。分布算出部（２０６０）は、複数のタスクに関する進捗履歴情報から、タスクの処理速度の確率分布であるタスク速度分布を算出する。異常判定部（２０８０）は、判定対象のタスクの処理速度とタスク速度分布とを比較することで、判定対象のタスクの処理速度が異常であるか否かを判定する。
2014208139.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とする異常検出装置であって、
複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得手段と、
対象範囲を決定する対象範囲決定手段と、
前記履歴取得手段によって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出手段と、
対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定手段と、
を有する異常検出装置。
【請求項２】
前記異常判定手段によって、前記対象タスクの処理速度が異常であると判定された場合、前記対象タスクが割り当てられている第１サーバ上で前記対象タスクを再実行するか、又は前記対象タスクを複製したタスクを、前記第１サーバとは異なる第２サーバに割り当てる実行制御手段を有する請求項１に記載の異常検出装置。
【請求項３】
所定期間を取得する所定期間取得手段を有し、
前記対象範囲決定手段は、前記対象範囲の長さを前記所定期間とする請求項１又は２に記載の異常検出装置。
【請求項４】
前記サーバと、そのサーバに割り当てられている前記タスクとの対応付けを示す割当情報を取得する割当情報取得手段を有し、
前記対象範囲決定手段は、いずれかの前記サーバに対する前記タスクの割り当てに変化があった時点を、前記対象範囲の開始時点とする請求項１又は２に記載の異常検出装置。
【請求項５】
複数の期間それぞれについて、前記記録時点がそれら各期間に含まれる進捗履歴情報を用いて、それら各期間における前記タスクの処理速度の代表値を算出する代表値算出手段を有し、
前記対象範囲決定手段は、前記各期間のうち、その期間の前記代表値と現在時点に最も近い期間における前記代表値との間に有意な差が無い期間のみを含むように、前記対象範囲を決定する、
請求項１又は２に記載の異常検出装置。
【請求項６】
前記タスクに対応するタスク種別を取得する種別取得手段を有し、
前記分布算出手段は、前記対象タスクと同一の前記タスク種別に対応している前記タスクに関する前記進捗履歴情報のみを用いて、前記タスク速度分布を算出する、
請求項１乃至５いずれか一項に記載の異常検出装置。
【請求項７】
前記対象範囲決定手段は、前記対象タスクに対応する前記タスク種別に基づいて前記対象範囲を算出する請求項６に記載の異常検出装置。
【請求項８】
前記進捗履歴情報は、履歴格納手段に格納されており、
前記履歴取得手段は、前記履歴格納手段から前記進捗履歴情報を取得し、
前記対象範囲に含まれない前記進捗履歴情報を前記履歴格納手段から削除する履歴削除手段を有する、
請求項１乃至７いずれか一項に記載の異常検出装置。
【請求項９】
前記分布算出手段は、前記異常判定手段によって処理速度が異常であると判定された前記対象タスクに関する進捗履歴情報を、その判定以降における前記タスク速度分布の算出に利用しない請求項１乃至８いずれか一項に記載の異常検出装置。
【請求項１０】
複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とするコンピュータによって実行される制御方法であって、
複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得ステップと、
対象範囲を決定する対象範囲決定ステップと、
前記履歴取得ステップによって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出ステップと、
対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定ステップと、
を有する制御方法。
【請求項１１】
複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とする異常検出装置として動作する機能をコンピュータに持たせるプログラムであって、前記コンピュータに、
複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得機能と、
対象範囲を決定する対象範囲決定機能と、
前記履歴取得機能によって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出機能と、
対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定機能と、
を持たせるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検出装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ジョブを分割することで生成された複数のタスクを、複数の計算機（以下、処理サーバ）に分散して実行させる分散システムが開発されている。処理サーバは、タスクを実行できる状態になると、新たなタスクの割り当てを受ける。このような形態の分散システムでは、タスクが終了した処理サーバから順に新たなタスクが割り当てられるため、高速な処理サーバに対してより多くのタスクが割り当てられやすくなる。その結果、ジョブの実行効率が高くなる。【０００３】
処理サーバに対してタスクを割り当てる技術又はそれに関連する技術を開示している先行技術文献として、非特許文献１及び特許文献１〜４がある。非特許文献１は、実行中のタスクの処理に要する時間を短くする技術を開示している。具体的には、まず、処理サーバ上で実行されているタスクの処理に要する時間を、１）そのままタスクの実行を続けた場合、及び２）タスクを再実行した場合の２つの場合について算出する。そして、再実行した場合の所要時間の方が短い場合、そのタスクを再実行する。【０００４】
特許文献１及び２は、予め計測しておいたタスクの負荷指標と処理サーバの性能指標に基づいて、タスクの割当計画を静的に算出する技術を開示する。特許文献３は、ジョブの進捗状況に基づいて推定したジョブの完了時間がジョブの要求完了時間を満たさない場合に、そのジョブを複数のタスクに分割し、分割したタスクを複数の処理サーバに割り当てることで、タスクを並列処理する技術を開示する。特許文献４は、処理サーバの構成に基づいて算出された静的な性能指標値に基づき、高性能な処理サーバに対してタスクを割り当てる技術を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２４３２１６号公報
【特許文献２】特開２０１０−２７７６０４号公報
【特許文献３】特開２００８−１２３２０５号公報
【特許文献４】特開２００７−３１７０３８号公報
【０００６】
【非特許文献１】Ganesh Ananthanarayanan、外６名、「Reining in the Outliers in Map-Reduce Clusters using Mantri」、Proceedings of the 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI '10)、２０１０年１０月４日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
分散システムにおいて、一部のタスクの処理速度が一時的に遅くなることがある。その要因は、そのタスクを実行している処理サーバの故障、その処理サーバ上で実行されているソフトウエアのバグ、タスクが利用するデータの断片化、その処理サーバが接続されているネットワークにおける輻輳など、多岐に渡る。ここで、ジョブを完了するためには、そのジョブを分割することで生成された全てのタスクを完了する必要がある。そのため、一部のタスクの処理速度が遅くなると、そのタスクを含むジョブ全体の終了が遅くなってしまう。【０００８】
特許文献１または２記載の技術では、事前に計測したタスクの負荷指標と処理サーバの性能指標に基づいてタスクの割当計画を算出するため、タスクの処理速度の一時的な遅れが割当計画に反映されない。特許文献３記載の技術は、実行されているタスクの完了に要する時間を短くするための技術であり、タスクの処理速度の一時的な遅れを解決する技術ではない。特許文献４記載の技術は、事前に算出した処理サーバの性能指標値に基づいてタスクの割り当てを行う技術であり、実行されているタスクの処理速度がタスクの割り当てに反映されない。【０００９】
これらに対し、非特許文献１の技術は、一時的に処理速度が遅くなっているタスクを特定し、そのタスクの実行を制御する。【００１０】
ここで、タスクが正常に動作している場合でも、タスクの処理速度は変化する。そのため、タスクの処理速度が一時的に遅くなっているか否かを判定する際、「正常時においてもタスクの処理速度が変化する」ということを考慮しないと、判定の精度が低くなる。非特許文献１の技術は、あるタスクを再実行する場合の予測所用時間を、そのタスクと同じフェーズに含まれている全てのタスクの、そのフェーズにおける処理速度の平均値に基づいて算出する。したがって、非特許文献１の技術は、同じフェーズ内におけるタスクの処理速度の変化を考慮していない。【００１１】
本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、分散システムにおいて、タスクの処理速度が異常になっているか否かを高い精度で判定する技術を提供することである。
【課題を解決するための手段】
【００１２】
本発明が提供する異常検出装置は、複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とする異常検出装置である。当該異常検出装置は、複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得手段と、対象範囲を決定する対象範囲決定手段と、前記履歴取得手段によって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出手段と、対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定手段と、を有する。【００１３】
本発明が提供する制御方法は、複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とするコンピュータによって実行される。当該制御方法は、複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得ステップと、対象範囲を決定する対象範囲決定ステップと、前記履歴取得ステップによって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出ステップと、対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定ステップと、を有する。【００１４】
本発明が提供するプログラムは、コンピュータに、本発明が提供する異常検出装置として動作する機能を持たせる。当該プログラムは、このコンピュータに、本発明が提供する異常検出装置の各機能構成部が有する機能を持たせる。
【発明の効果】
【００１５】
本発明によれば、分散システムにおいて、タスクの処理速度が異常になっているか否かを高い精度で判定する技術が提供される。
【図面の簡単な説明】
【００１６】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１７】
【図１】実施形態１に係る異常検出装置をその使用環境と共に例示するブロック図である。
【図２】実施形態１に係る異常検出装置の構成を例示するブロック図である。
【図３】実施形態１に係る異常検出装置のハードウエア構成を例示するブロック図である。
【図４】実施形態１に係る異常検出装置によって実行される処理の流れを例示するフローチャートである。
【図５】進捗履歴情報の構成をテーブル形式で例示する図である。
【図６】実施例１に係る分布算出部によって実行されるタスク速度分布の算出処理の流れを例示するフローチャートである。
【図７】実施例１におけるタスク速度分布を示すグラフである。
【図８】実施例２に係る分布算出部によって実行されるタスク速度分布の算出処理の流れを例示するフローチャートである。
【図９】実施形態２に係る異常検出装置を例示するブロック図である。
【図１０】実施形態２に係る異常検出装置によって実行される処理の流れを例示するフローチャートである。
【図１１】実施形態３に係る異常検出装置を例示するブロック図である。
【図１２】実施形態４に係る異常検出装置を例示するブロック図である。
【図１３】割当情報の構成をテーブル形式で例示する図である。
【図１４】実施形態４に係る異常検出装置によって実行される処理の流れを例示するフローチャートである。
【図１５】実施形態５に係る異常検出装置を例示するブロック図である。
【図１６】対象範囲決定部による処理を概念的に説明するためのグラフである。
【図１７】実施形態５に係る異常検出装置によって実行される処理の流れを例示するフローチャートである。
【図１８】実施形態６に係る異常検出装置を例示するブロック図である。
【図１９】実施形態７に係る異常検出装置を例示するブロック図である。
【図２０】実施例３に係る割当判定装置を、その使用環境と共に示すブロック図である。
【図２１】実施例３の分散システムに含まれる処理サーバを示す図である。
【図２２】コンピュータ c1 と c2 の進捗度情報格納部に格納されている進捗度情報を併せて示す図である。
【図２３】履歴管理部によって管理されている進捗履歴情報を示す図である。
【図２４】分布算出部によって算出されたタスク速度分布を表すグラフである。
【図２５】コンピュータ c1 と c2 の進捗度情報格納部に格納されている進捗度情報を併せて示す図である。
【図２６】履歴管理部によって管理されている進捗履歴情報を示す図である。
【図２７】対象範囲決定部によって決定される対象範囲に含まれる進捗履歴情報を示す図である。
【図２８】実施例５に係る異常検出装置を、その使用環境と共に示すブロック図である。
【図２９】割当情報取得部によって取得される割当情報を示す図である。
【図３０】履歴管理部に格納されている進捗履歴情報を示す図である。
【図３１】分布算出部によって算出されたタスク速度分布を示すグラフである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１９】
[実施形態１]
図１は、実施形態１に係る異常検出装置２０００をその使用環境と共に例示するブロック図である。図１において、矢印は情報の流れを表している。さらに、図１において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００２０】
分散システム３０００は、複数の処理サーバ３２００を有する。各処理サーバ３２００には、タスクが割り当てられる。処理サーバ３２００は、サーバ、パーソナルコンピュータ（ＰＣ）、タブレット端末など、種々の計算機である。処理サーバ３２００は、割り当てられたタスクを実行する。異常検出装置２０００は、処理サーバ３２００に割り当てられているタスクを処理対象とする。具体的には、異常検出装置２０００は、処理サーバ３２００上で実行されているタスクの処理速度が異常であるか否かを判定する。異常検出装置２０００は、処理サーバ３２００同様、種々の計算機である。なお、処理サーバ３２００上で実行するタスクは１つであってもよいし、複数であってもよい。
【００２１】
処理サーバ３２００と異常検出装置２０００は、ネットワークを介して接続されている。このネットワークは、有線回線で構成されるネットワークでもよいし、無線回線で構成されるネットワークでもよいし、有線回線と無線回線とを混在させて構成されているネットワークでもよい。
【００２２】
図２は、実施形態１に係る異常検出装置２０００の構成を例示するブロック図である。図２において、矢印は情報の流れを表している。さらに、図２において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。異常検出装置２０００は、履歴取得部２０２０、対象範囲決定部２０４０、分布算出部２０６０、及び異常判定部２０８０を有する。以下、それぞれについて説明する。
【００２３】
＜履歴取得部２０２０＞
履歴取得部２０２０は、進捗履歴情報を取得する。進捗履歴情報は、複数の記録時点それぞれにおける、複数のタスクの進捗に関する情報である。
【００２４】
＜対象範囲決定部２０４０＞
対象範囲決定部２０４０は対象範囲を決定する。
【００２５】
＜分布算出部２０６０＞
分布算出部２０６０は、複数のタスクに関する進捗履歴情報から、タスクの処理速度の確率分布を算出する。この確率分布を、タスク速度分布と表記する。ここで、分布算出部２０６０は、進捗履歴情報のうち、記録時点が対象範囲決定部２０４０によって決定された対象範囲に含まれる進捗履歴情報のみを用いて、タスク速度分布を算出する。
【００２６】
＜異常判定部２０８０＞
異常判定部２０８０は、判定対象のタスクの処理速度とタスク速度分布とを比較することで、判定対象のタスクの処理速度が異常であるか否かを判定する。以下、判定対象のタスクを、対象タスクと表記する。
【００２７】
＜ハードウエア構成＞
異常検出装置２０００が有する各機能構成部は、例えば、個々に又は複数組み合わせられた状態で、少なくとも１つのハードウエア構成要素として実現される。その他にも例えば、各機能構成部は、少なくとも１つのソフトウエア構成要素として実現される。その他にも例えば、各機能構成部は、ハードウエア構成要素とソフトウエア構成要素の組み合わせにより実現される。
【００２８】
図３は、実施形態１に係る異常検出装置２０００のハードウエア構成を例示するブロック図である。図３において、異常検出装置２０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、及びネットワークアダプタ１１００を有する。
【００２９】
バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、及びネットワークアダプタ１１００が、相互にデータを送受信するためのデータ伝送路である。プロセッサ１０４０は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ１０６０は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ１０８０は、例えばハードディスク、SSD (Solid State Drive)、メモリカードなどの記憶装置である。また、ストレージ１０８０は、RAM や ROM 等のメモリであってもよい。ネットワークアダプタ１１００は、異常検出装置２０００が外部の装置とネットワークを介して通信を行うためのインタフェースである。ネットワークアダプタ１１００は、無線回線に接続するためのインタフェースであってもよいし、有線回線に接続するためのインタフェースであってもよい。
【００３０】
履歴取得モジュール１２２０は、異常検出装置２０００に、履歴取得部２０２０の機能を持たせるためのプログラムである。プロセッサ１０４０は、履歴取得モジュール１２２０を実行することで、履歴取得部２０２０の機能を実現する。
【００３１】
対象範囲決定モジュール１２４０は、異常検出装置２０００に、対象範囲決定部２０４０の機能を持たせるためのプログラムである。プロセッサ１０４０は、対象範囲決定モジュール１２４０を実行することで、対象範囲決定部２０４０の機能を実現する。
【００３２】
分布算出モジュール１２６０は、異常検出装置２０００に、分布算出部２０６０の機能を持たせるためのプログラムである。プロセッサ１０４０は、分布算出モジュール１２６０を実行することで、分布算出部２０６０の機能を実現する。
【００３３】
異常判定モジュール１２８０は、異常検出装置２０００に、異常判定部２０８０の機能を持たせるためのプログラムである。プロセッサ１０４０は、異常判定モジュール１２８０を実行することで、異常判定部２０８０の機能を実現する。
【００３４】
例えばプロセッサ１０４０は、上記各モジュールをメモリ１０６０上に読み出して実行する。ただし、プロセッサ１０４０は、上記各モジュールを、メモリ１０６０上に読み出さずに実行してもよい。
【００３５】
ストレージ１０８０は、上記各モジュールを格納する。
【００３６】
異常検出装置２０００のハードウエア構成は、図３に示した構成に限定されない。例えば、上記各モジュールはメモリ１０６０に格納されてもよい。この場合、異常検出装置２０００は、ストレージ１０８０を備えていなくてもよい。
【００３７】
＜処理の流れ＞
図４は、実施形態１に係る異常検出装置２０００によって実行される処理の流れを例示するフローチャートである。ステップＳ１０２において、対象範囲決定部２０４０は対象範囲を決定する。ステップＳ１０４において、履歴取得部２０２０は、記録時点が対象範囲に含まれる進捗履歴情報を取得する。ステップＳ１０６において、分布算出部２０６０は、履歴取得部２０２０によって取得された進捗履歴情報を用いて、タスク速度確率分布を算出する。ステップＳ１０８において、異常判定部２０８０は対象タスクの処理速度が異常であるか否かを判定する。
【００３８】
以上のように、本実施形態の異常検出装置２０００は、タスク速度分布の算出に用いる進捗履歴情報の記録時点の対象範囲を決定する。ここで、タスクの処理速度は正常時であっても変動する。そのため、長い期間のタスクの処理速度の履歴を用いてタスク速度分布を生成すると、長い期間における正常なタスクの処理速度の変動がタスク速度分布に反映されてしまう。したがって、タスク処理分布が、異常判定部２０８０による判定時点においてタスクがとるべき速度の範囲を正確に表さなくなってしまい、結果として、異常判定部２０８０による判定の精度が低くなってしまう。本実施形態によれば、対象範囲決定部２０４０によって決定された対象範囲に含まれる進捗履歴情報のみを用いて、タスク速度分布を算出する。したがって、対象範囲を決定する処理を行わない場合と比較し、異常判定部２０８０による判定の精度が高くなる。
【００３９】
以下、本実施形態の異常検出装置２０００について、さらに詳しく説明する。
【００４０】
＜履歴取得部２０２０の詳細＞
図５は、進捗履歴情報の構成をテーブル形式で例示する図である。図５で表された進捗履歴情報を、進捗履歴情報テーブル２００と表記する。進捗履歴情報テーブル２００は、タスク ID ２０２、記録時点２０４、及び進捗度２０６を有する。進捗履歴情報テーブル２００の各レコードは、タスク ID ２０２で特定されるタスクの記録時点２０４における進捗度を、進捗度２０６に示す。
【００４１】
進捗度２０６は、タスクの進捗に関する情報である。例えば進捗度２０６は、タスクの処理速度の算出に利用できる情報を示す。具体的には、進捗度２０６は、タスクの進捗率、処理対象のデータ量に対する処理済みのデータ量の割合などを示す。その他にも、進捗度２０６は、タスクが利用したリソース使用量を累積した値などを示してもよい。タスクがどの程度リソースを使用してきたかを把握することで、タスクの進捗を予測することができる。リソース使用率は、例えば CPU 使用率、メモリ使用率、及びディスク帯域やネットワーク帯域の使用率である。さらに、進捗度２０６は、数学モデルによって計算された残り処理時間の予測値であってもよい。また、進捗度２０６は、タスクの処理速度の算出に利用できる情報ではなく、タスクの処理速度を直接表してもよい。タスクの処理速度は、単位時間当たりのタスクの進捗率、単位時間当たりのデータ処理量、又は単位時間当たりのリソース使用量などである。
【００４２】
履歴取得部２０２０が進捗履歴情報を取得する方法は様々である。例えば履歴取得部２０２０は、外部の装置にアクセスして進捗履歴情報を取得する。その他にも例えば、履歴取得部２０２０は、外部の装置から入力される進捗履歴情報や、手動で入力される進捗履歴情報を取得する。ここで、履歴取得部２０２０は、記録時点が対象範囲に含まれる進捗履歴情報のみを取得してもよいし、記録時点が対象範囲に含まれるか否かに関係なく進捗履歴情報を取得してもよい。前者の場合、分布算出部２０６０は、履歴取得部２０２０によって取得された進捗履歴情報を全て用いてタスク速度分布を算出する。一方、後者の場合、分布算出部２０６０は、履歴取得部２０２０によって取得された進捗履歴情報の中から、記録時点が対象範囲に含まれている進捗履歴情報のみを選択する処理を行う。
【００４３】
＜分布算出部２０６０の詳細＞
分布算出部２０６０は、タスクの処理速度を標本とし、その母集団におけるタスクの処理速度の確率分布を推定する。分布算出部２０６０は、この推定した確率分布を、タスク速度分布とする。ここで、進捗履歴情報が直接タスクの処理速度を示している場合、分布算出部２０６０は、記録時点が対象範囲に含まれている進捗履歴情報によって示されている処理速度を標本として、タスク速度分布を算出する。一方、進捗履歴情報が直接タスクの処理速度を示していない場合、分布算出部２０６０は、進捗履歴情報を用いてタスクの処理速度を算出する。そして、分布算出部２０６０は、算出した処理速度を標本として、タスク速度分布を算出する。
【００４４】
分布算出部２０６０が進捗履歴情報から処理速度を算出する方法は、進捗履歴情報が示している情報に依存する。例えば進捗履歴情報が、２つの異なる記録時点における同一のタスクの進捗度を示している場合、分布算出部２０６０は、「進捗度の差／記録時点の差」を計算することで、単位時間当たりの進捗度を算出する。そして、分布算出部２０６０は、この単位時間当たりの進捗度をタスクの処理速度とする。
【００４５】
分布算出部２０６０によって推定されるタスクの処理速度の、確率分布のモデルは様々である。例えばこの確率分布モデルは、ある閾値で確率１と０が切り替わるモデル、正規分布、ポアソン分布、カイ二乗分布、又は指数分布などである。分布算出部２０６０がどの確率分布モデルを用いてタスク速度分布を算出するのかは、予め分布算出部２０６０に設定されていてもよいし、外部から設定されてもよい。また、分布算出部２０６０自身が、進捗履歴情報などを用いて、使用する確率分布モデルを決定しても良い。
【００４６】
＜＜実施例１＞＞
分布算出部２０６０がタスク速度分布を算出する処理の具体例を、実施例１として示す。この実施例において分布算出部２０６０が算出するタスク速度分布は、閾値で確率１と０が切り替わるモデルを使用した確率分布である。本実施例では、最も速いタスクの速度の定数倍を閾値とする。
【００４７】
図６は、実施例１に係る分布算出部２０６０によって実行されるタスク速度分布の算出処理の流れを例示するフローチャートである。ここで、分布算出部２０６０に対して、定数α (0 ＜α≦ 1) が設定される。αは、予め分布算出部２０６０に設定されていてもよいし、分布算出部２０６０の外部から設定されてもよい。
【００４８】
ステップＳ２０２において分布算出部２０６０は、標本とするタスクの処理速度の中から、最も大きい処理速度 Vm を特定する。ステップＳ２０４において、分布算出部２０６０は、α・Vm を閾値 D に設定する。ステップＳ２０６において分布算出部２０６０は、タスクの処理速度 v について、0 ≦ v ≦ D となる確率が 0 であり、v ＞ D となる確率が１であるタスク速度分布を算出する。このタスク速度分布は、図７のグラフで表される。図７のグラフにおいて、横軸は処理速度 v を表し、縦軸は発生確率 p を表している。
【００４９】
＜＜実施例２＞＞
分布算出部２０６０がタスク速度分布を算出する処理の別の具体例を、実施例２として示す。この実施例において分布算出部２０６０が算出するタスク速度分布は、確率分布モデルとしてポアソン分布を使用する場合のタスク速度分布である。また、本実施例では、タスクの処理速度は、タスク完了までの予測時間によって表される。
【００５０】
図８は、実施例２に係る分布算出部２０６０によって実行されるタスク速度分布の算出処理の流れを例示するフローチャートである。ステップＳ３０２において、分布算出部２０６０は、タスクの処理速度のヒストグラムを生成する。ステップＳ３０４において、分布算出部２０６０は、ヒストグラムから最頻値 k_mode を算出する。ステップＳ３０６において、分布算出部２０６０は、ポアソン分布P(λ, k) を、タスク速度分布として算出する。ここで、k は、max(k' - k_mode, 0) で定まる。なお、k' はヒストグラムにおけるビン番号である。
【００５１】
ビンの幅やλなどのパラメタは、予め分布算出部２０６０に内部に設定されている値でもよいし、分布算出部２０６０の外部から設定される値であってもよいし、分布算出部２０６０によって算出される値であってもよい。分布算出部２０６０がビンの幅を算出する場合、例えば分布算出部２０６０は、平方根選択などの変換式を利用してビンの幅を算出する。
【００５２】
なお本実施例では、タスクの処理速度を表す値としてタスク完了までの予測時間を用いたものの、ポアソン分布を使用する方法の実装はこれに限らない。例えば、k = max(k_mode - k', 0)とすることで、タスクの単位時間当たりの進捗度を、タスクの処理速度を表す値として用いることができる。
【００５３】
また、分布算出部２０６０は、異常判定部２０８０によって処理速度が異常であると判定された対象タスクに関する進捗履歴情報を、その判定以降におけるタスク速度分布の算出に利用しなくてもよい。例えば、異常検出装置２０００が、ある対象タスク１の処理速度が異常であると判定した後に、別の対象タスク２について処理速度が異常であるか否かを判定するとする。この場合、分布算出部２０６０は、対象範囲に含まれる進捗履歴情報のうち、対象タスク１に関する進捗履歴情報以外の進捗履歴情報を用いて、タスク速度分布を算出する。これにより、処理速度が異常であると判定されたタスクの処理速度がタスク速度分布を算出するための標本に含まれないため、タスク速度分布が、対象タスクがとるべき処理速度の分布をより正確に表すようになる。
【００５４】
例えば異常検出装置２０００は、ある対象タスクの処理速度が異常であると判定した場合に、その対象タスクに関する進捗履歴情報を、進捗履歴情報が格納されている格納部から削除する。また、異常検出装置２０００は、処理速度が異常であると判定された対象タスクに関する進捗履歴情報に、処理速度が異常であるタスクに関連する情報であることを示すフラグを対応付けて格納する。そして、分布算出部２０６０は、履歴取得部２０２０によって取得された進捗履歴情報のうち、このフラグが対応付けられている進捗履歴情報を、タスク速度分布の算出に利用しない。
【００５５】
＜異常判定部２０８０の詳細＞
異常判定部２０８０が、タスク速度分布を用いて対象タスクの処理速度が異常であるか否かを判定する方法は、様々である。例えば、異常判定部２０８０は、タスク速度分布 p(v) において、対象タスクの処理速度 v1 の発生確率 p(v1) が所定の閾値以下である場合に、対象タスクの処理速度が異常であると判定する。
【００５６】
その他にも例えば、異常判定部２０８０は、タスク速度分布 p(v) を用いて、対象タスクの処理速度 v1 に対応する累積頻度 c(v1) を算出する。この累積頻度 c(v1) は、以下の数式（１）によって算出される。そして、異常判定部２０８０は、対象タスクの処理速度 v1 に対応する累積頻度 c(v1) が所定の閾値以下である場合に、対象タスクの処理速度が異常であると判定する。
【数１】
2014208139.tif 000003
【００５７】
＜対象タスクの詳細＞
異常検出装置２０００がどのタスクを対象タスクとするかを決定する方法は様々である。例えば異常検出装置２０００は、分散システム３０００に含まれるタスクのうち、ＩＤが小さいタスク又は大きいタスクから順に、対象タスクとして選択する。また、例えば異常検出装置２０００は、分散システム３０００に含まれるタスクの中から、ランダムに対象タスクを選択する。また、異常検出装置２０００は、外部の装置や人手による対象タスクの指定を受け付けてもよい。また、異常検出装置２０００は、外部の装置にアクセスしてどのタスクを対象タスクとするかを示す情報を取得してもよい。
【００５８】
例えば異常検出装置２０００は、各タスクを定期的に対象タスクとして処理を行う。また、異常検出装置２０００は、各タスクを対象タスクとして処理を行う時間間隔を、タスクごとに異ならせてもよい。その場合、例えば異常検出装置２０００の内部又は外部に、各タスクについて、そのタスクを対象タスクとして処理を実行する時点や時間間隔を示す情報が格納されている。
【００５９】
＜作用・効果＞
本実施形態の異常検出装置２０００は、タスク速度分布の算出に用いる進捗履歴情報の記録時点の対象範囲を決定する。ここで、タスクの処理速度は正常時であっても変動する。そのため、長い期間のタスクの処理速度の履歴を用いてタスク速度分布を生成すると、長い期間における正常なタスクの処理速度の変動がタスク速度分布に反映されてしまう。したがって、タスク処理分布が、異常判定部２０８０による判定時点においてタスクがとるべき速度の範囲を正確に表さなくなってしまい、結果として、異常判定部２０８０による判定の精度が低くなってしまう。本実施形態によれば、対象範囲決定部２０４０によって決定された対象範囲に含まれる進捗履歴情報のみを用いて、タスク速度分布を算出する。したがって、対象範囲を決定する処理を行わない場合と比較し、異常判定部２０８０による判定の精度が高くなる。
【００６０】
[実施形態２]
図９は、実施形態２に係る異常検出装置２０００を例示するブロック図である。図９において、矢印は情報の流れを表している。さらに、図９において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態２の異常検出装置２０００は、実施形態１の異常検出装置２０００と同様である。
【００６１】
実施形態２の異常検出装置２０００は実行制御部２１００を有する。実行制御部２１００は、異常判定部２０８０によって対象タスクの処理速度が異常であると判定された場合、対象タスクの実行を制御する。例えば実行制御部２１００は、対象タスクを、対象タスクが割り当てられている処理サーバ３２００上で再実行する。また例えば実行制御部２１００は、対象タスクを複製し、複製したタスクを、対象タスクが割り当てられている処理サーバ３２００とは異なる処理サーバ３２００に割り当てる。この際、実行制御部２１００は、対象タスクの実行を停止してもよいし、対象タスクの実行をそのまま続けさせてもよい。対象タスクを元の処理サーバ３２００上で実行させ続け、かつ対象タスクを複製することで生成したタスクを他の処理サーバ３２００上で実行すれば、この２つのタスクのどちらか一方が処理を完了した時点で、目的の処理が完了したことになる。なお、実行制御部２１００は、対象タスクから複数のタスクを複製してもよい。これら複数のタスクは、同一の処理サーバ３２００に割り当てられてもよいし、異なる処理サーバ３２００に割り当てられてもよい。
【００６２】
＜処理の流れ＞
図１０は、実施形態２に係る異常検出装置２０００によって実行される処理の流れを例示するフローチャートである。ステップＳ４０２において、実行制御部２１００は対象タスクの実行を制御する。なお、実施形態２の異常検出装置２０００は、ステップＳ４０２を実行する前に、図４に示したステップＳ１０２〜Ｓ１０８の処理を実施形態１の異常検出装置２０００と同様に実行する。図を簡潔にするために、図１０において、ステップＳ１０２〜Ｓ１０８は省略されている。
【００６３】
＜作用・効果＞
実施形態２の異常検出装置２０００によれば、対象タスクの処理速度が異常な場合に、対象タスクの実行が制御される。例えば異常検出装置２０００は、対象タスクを処理サーバ３２００上で再実行したり、対象タスクを複製して他の処理サーバ３２００へ割り当てたりする。これにより、対象タスクによって行われる処理が完了するまでにかかる時間が短くなる。
【００６４】
[実施形態３]
図１１は、実施形態３に係る異常検出装置２０００を例示するブロック図である。図１１において、矢印は情報の流れを表している。さらに、図１１において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態３の異常検出装置２０００は、実施形態１又は２の異常検出装置２０００と同様である。
【００６５】
実施形態３の異常検出装置２０００は所定期間取得部２１６０を有する。所定期間取得部２１６０は、所定期間を取得する。実施形態３の対象範囲決定部２０４０は、対象範囲の長さを、この所定期間から決定する。
【００６６】
例えば対象範囲決定部２０４０は、対象範囲の終了時点を現在時点とする。この場合、対象範囲の開始時点は、現在時点から上記所定期間を引いた時点である。ただし、対象範囲の終了時点は、現在時点でなくてもよい。例えば対象範囲決定部２０４０は、現在時点から所定の値を引いた時点を、対象範囲の終了時点とする。この所定の値は、予め対象範囲決定部２０４０の内部に設定されていてもよいし、対象範囲決定部２０４０の外部から設定される値であってもよい。また、対象範囲決定部２０４０は、この所定の値を、ランダムな値などとして算出してもよい。
【００６７】
＜作用・効果＞
以上により、本実施形態の異常検出装置２０００によれば、所定期間の長さの対象範囲に含まれる進捗履歴情報から、タスク速度分布が算出される。例えば本実施形態の異常検出装置２０００は、タスクの状態が遷移するタイミングが予想できる場合に有効である。ここで、タスクの状態とは、データの読み込みを行う状態、読み込んだデータを処理する状態、処理したデータを書き出す状態などを指す。例えば、予めタスクをテスト実行させることで、タスクが各状態にある時間を予測しておく。そして、予測した時間を用いて設定された所定期間を用いることで、分布算出部２０６０は、タスクが１つの状態にある間の進捗履歴情報を用いてタスク速度分布を算出できる。この所定期間を用いて対象範囲を決定する方法は、対象範囲を決定する処理がシンプルであるため、対象範囲の決定にかかる時間が短いという利点がある。
【００６８】
[実施形態４]
図１２は、実施形態４に係る異常検出装置２０００を例示するブロック図である。図１２において、矢印は情報の流れを表している。さらに、図１２において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態４の異常検出装置２０００は、実施形態１又は２の異常検出装置２０００と同様である。
【００６９】
＜割当情報取得部２１８０＞
実施形態４の異常検出装置２０００は、割当情報取得部２１８０を有する。割当情報取得部２１８０は割当情報を取得する。割当情報は、処理サーバ３２００と、その処理サーバ３２００に割り当てられたタスクとの対応付けを示す。
【００７０】
＜対象範囲決定部２０４０＞
実施形態４の対象範囲決定部２０４０は、割当情報に基づいて対象範囲を決定する。具体的には、対象範囲決定部２０４０は、いずれかの処理サーバ３２００に対するタスクの割り当てが変化した時点を、対象範囲の開始時点とする。例えば対象範囲決定部２０４０は、ある処理サーバ３２００に対して新たなタスクが割り当てられた時点や、処理サーバ３２００に対して割り当てられていたタスクがその処理サーバ３２００に割り当てられていない状態になった時点を、対象範囲の開始時点とする。ここで、「処理サーバ３２００に対して割り当てられていたタスクがその処理サーバ３２００に割り当てられていない状態になる」とは、例えばそのタスクの実行が完了したり、そのタスクを別の処理サーバ３２００に割り当てたりしたことを意味する。
【００７１】
なお、割当情報は、分散システム３０００に割り当てられているジョブの数を示してもよい。分散システム３０００に割り当てられているジョブの数が変化すると、処理サーバ３２００に対するタスクの割り当ても変化する。したがって、分散システム３０００に割り当てられているジョブの数は、処理サーバ３２００に対するタスクの割り当ての変化を把握するための情報として利用することができる。
【００７２】
対象範囲決定部２０４０は、割当情報の変化を検出することで、処理サーバ３２００に対するタスクの割り当てに変化があったことを検出する。例えば対象範囲決定部２０４０は、定期的に割当情報を取得し、処理サーバ３２００に対するタスクの割り当てに変化が無いか否かを監視する。そして、タスクの割り当てに変化があった場合に、その時点を対象範囲の開始時点の候補として記録しておく。対象範囲決定部２０４０は、対象範囲を決定する際、この記録されている時点を、対象範囲の開始時点として用いる。
【００７３】
その他にも例えば、対象範囲決定部２０４０は、対象範囲を決定する際に、複数の時点それぞれにおける割当情報をまとめて取得する。この場合、対象範囲決定部２０４０は、取得した複数の割当情報を比較することで、処理サーバ３２００に対するタスクの割り当てに変化があった時点を算出する。
【００７４】
図１３は、割当情報の構成をテーブル形式で例示する図である。図１３に示されている割当情報を、割当情報テーブル３００と表記する。割当情報テーブル３００は、記録時点３０２、処理サーバ ID ３０４、及びタスク ID ３０６を有する。割当情報テーブル３００の各レコードは、記録時点３０２において、処理サーバ ID ３０４で特定される処理サーバ３２００に割り当てられているタスクの ID を、タスク ID ３０６に示す。
【００７５】
実施形態４の対象範囲決定部２０４０が決定する対象範囲の終了時点は、実施形態３の対象範囲決定部２０４０が決定する対象範囲の終了時点と同様である。
【００７６】
＜処理の流れ＞
図１４は、実施形態４に係る異常検出装置２０００によって実行される処理の流れを例示するフローチャートである。ステップＳ５０２において、割当情報取得部２１８０は、割当情報を取得する。ステップＳ５０４において、対象範囲決定部２０４０は、割当情報を、時点が新しい順にソートする。ステップＳ５０６〜Ｓ５１２は、条件を満たす間繰り返し行うループ処理Ａである。以下、この条件を、ループ条件 A と表記する。ループ条件 A は、カウンタ i が割当情報の総数 N より小さいことである。ここで、カウンタ i の初期値を 1 とする。また、カウンタ i は、ループ処理 A が一回終わるごとに１加算される。以下、 i 番目の割当情報を割当情報 i と表記する。最も順位が前の割当情報は、割当情報 0 である。
【００７７】
ステップＳ５０６において、対象範囲決定部２０４０は、ループ条件 A が満たされているか否かを判定する。ループ条件 A が満たされている場合、図１４の処理は、ステップＳ５０８に進む。一方、ループ条件 A が満たされていない場合、図１４の処理は、ステップＳ５１６に進む。
【００７８】
ステップＳ５０８において、対象範囲決定部２０４０は、割当情報 (i-1)と割当情報 iとを比較する。この比較結果に応じ、ステップＳ５１０において、図１４の処理は分岐する。２つの割当情報を比較した結果、タスクの割り当てに変化がなかった場合、図１４の処理はステップＳ５１２に進む。一方、タスクの割り当てに変化があった場合、図１４の処理はステップＳ５１４に進む。
【００７９】
ステップＳ５１２は、ループ処理 A の終端である。そのため、図１４の処理は、ステップＳ５０６に戻る。
【００８０】
ステップＳ５１４において、対象範囲決定部２０４０は、i の値を１減らす。
【００８１】
ステップＳ５１６において、対象範囲決定部２０４０は、割当情報 i に対応する時点を、対象範囲の開始時点とする。例えば割当情報が割当情報テーブル３００で表される場合、対象範囲の開始時点は、割当情報 i の記録時点３０２に示されている時点となる。
【００８２】
＜作用・効果＞
実施形態４の異常検出装置２０００によれば、割当情報に基づいて、対象範囲が決定される。ここで、処理サーバ３２００に対するタスクの割り当てが変化すると、その影響を受けて、既に実行されているタスクの処理速度が変化する場合がある。例えば、処理サーバ３２００に対して新たにタスクを割り当てた場合、その処理サーバ３２００上で既に実行されているタスクの処理速度は小さくなると考えられる。したがって、タスクの割り当てが変化する前と後では、タスクの状態が正常であっても、タスクの処理速度が変化すると考えられる。
【００８３】
本実施形態の異常検出装置２０００によれば、タスクの割り当てが変化した時点以降が対象範囲となる。そのため、タスクの割り当てが変化した後におけるタスクの処理速度に基づいて、タスク速度分布が算出される。このように、分布算出部２０６０によって算出されるタスク速度分布が、タスクの割り当てが変化する前におけるタスクの処理速度の影響を受けない。そのため、本実施形態の異常検出装置２０００によって算出されるタスク速度分布は、対象タスクがとるべき処理速度の分布をより正確に表すようになる。その結果、異常判定部２０８０による判定の精度が高くなる。
【００８４】
[実施形態５]
図１５は、実施形態５に係る異常検出装置２０００を例示するブロック図である。図１５において、矢印は情報の流れを表している。さらに、図１５において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態５の異常検出装置２０００は、実施形態１又は２の異常検出装置２０００と同様である。
【００８５】
＜代表値算出部２２００＞
実施形態５の異常検出装置２０００は、代表値算出部２２００を有する。代表値算出部２２００は、複数の期間それぞれについて、タスクの処理速度の代表値を算出する。代表値算出部２２００は、各期間における代表値を、その期間に含まれる進捗履歴情報を用いて算出する。例えばある期間における代表値は、その期間に含まれる進捗履歴情報に対応するタスクの処理速度の統計値である。この統計値は、例えば平均値、中央値、最頻値などである。
【００８６】
実施形態５の対象範囲決定部２０４０は、現在時点に最も近い期間における代表値（以下、基準代表値）と、その他の代表値を比較する。次に、対象範囲決定部２０４０は、基準代表値と有意な差がある代表値に対応する期間のうち、最も現在時点に近い期間を特定する。そして、対象範囲決定部２０４０は、特定した期間より後の期間のみを含むように、対象範囲を決定する。
【００８７】
図１６は、対象範囲決定部２０４０による処理を概念的に説明するためのグラフである。グラフの縦軸は代表値の大きさを表しており、グラフの横軸は時間の流れを示している。現在時点に最も近い期間を期間１とする。また、期間２、期間３、期間４の順に現在時点との差が大きい。期間１における代表値１は、基準代表値となる。
【００８８】
図１６において、期間２における代表値２と期間３における代表値３は、基準代表値との間に有意な差がない。一方、期間４における代表値４は、基準代表値との間に有意な差がある。そこで、対象範囲決定部２０４０は、期間３以降期間のみを含むように、対象期間を決定する。そのため、対象期間は、期間３、期間２、及び期間１を含む。
【００８９】
上記期間の定め方は様々である。例えば対象範囲決定部２０４０は、現在時点と、進捗履歴情報において最も古い記録時点との間を、所定数の長さの区間に区切る。その他にも例えば、対象範囲決定部２０４０は、現在時点を始点とし、期間の長さが w（w は 0 以上の実数）、隣接する２つの期間の開始時点の間隔が s（s は w 以上かつ 0 より大きい実数）の期間を複数作る。
【００９０】
＜処理の流れ＞
図１７は、実施形態５に係る異常検出装置２０００によって実行される処理の流れを例示するフローチャートである。ステップＳ６０２において、履歴取得部２０２０は、進捗履歴情報を取得する。ステップＳ６０４において、対象範囲決定部２０４０は、期間の終了時点 t に、初期値 ts を設定する。例えば ts は現在時点である。ステップＳ６０６において、代表値算出部２２００は、t - w が開始時点であり、かつ t が終了時点である期間 [t - w, t] に含まれる進捗履歴情報を用いて、タスク速度の代表値を算出する。対象範囲決定部２０４０は、この代表値を基準代表値 Vr とする。
【００９１】
ステップＳ６０８〜Ｓ６１４は、所定の条件を満たす間繰り返し実行されるループ処理 B である。上記所定の条件（以下、ループ条件Ｂ）は、t > te である。ここで、 te は、進捗履歴情報が示す記録時点のうち、最も古い記録時点である。また、ループ処理 B における t の初期値は ts- s である。s は正の実数である。さらに、ループ処理 B を一回実行するごとに、t の値は s 減少する。ステップＳ６０８において、対象範囲決定部２０４０は、ループ条件 B が満たされているか否かを判定する。ループ条件 B が満たされている場合、図１７の処理はステップＳ６１０に進む。一方、ループ条件 B が満たされていない場合、図１７の処理はステップＳ６１６に進む。
【００９２】
ステップＳ６１０において、対象範囲決定部２０４０は、t - w が開始時点であり、かつ t が終了時点である期間 [t - w, t] に含まれる進捗履歴情報を用いて、タスク速度の代表値を算出する。ステップＳ６１２において、対象範囲決定部２０４０は、ステップＳ６１０で算出した代表値と基準代表値 Vr との間に有意な差があるか否かを判定する。この２つの間に有意な差がない場合、図１７の処理はステップＳ６１４に進む。一方、この２つの間に有意な差がある場合、図１７の処理はステップＳ６１８に進む。
【００９３】
ステップＳ６１４は、ループ処理 B の終端である。図１７の処理はステップＳ６０８に進む。
【００９４】
ステップＳ６１６は、算出した代表値全てについて、基準代表値との間に有意な差がない場合に実行される処理である。例えば対象範囲決定部２０４０は、ステップＳ６１６において、全ての進捗履歴情報の記録時点が含まれる期間を対象期間とする。
【００９５】
ステップＳ６１８において、対象範囲決定部２０４０は、t より後の時点のみが含まれるように対象期間を決定する。例えば、対象期間は期間 (t, ts] である。
【００９６】
＜作用・効果＞
本実施形態によれば、現在時点に近い期間におけるタスクの処理速度と比較し、タスクの処理速度に有意な差がある期間を特定し、その期間以前の期間を含まないように、対象期間が決定される。ここで、タスクの処理速度は、タスクが正常であり、かつタスクの割り当てに変化が無くても変化することがある。例えば、タスクの処理内容が変化する場合は、タスクの処理速度が変化すると考えられる。これは例えば、タスクの処理が、データの解析を行う処理から、データの書き出しを行う処理に変わる場合などである。
【００９７】
本実施形態によれば、タスクの割り当てが変化するか否かに関わらず、タスクの処理速度が有意に変化したことを検出することができる。そして、対象範囲決定部２０４０は、タスクの処理速度が有意に変化した時点以前の期間を含まないように、対象期間を決定する。こうすることで、本実施形態によれば、タスクの処理速度が有意に変化していない期間に含まれる進捗履歴情報のみを用いてタスク速度分布を算出する。そのため、本実施形態の異常検出装置２０００によって算出されるタスク速度分布は、対象タスクがとるべき処理速度の分布をより正確に表すようになる。その結果、異常判定部２０８０による判定の精度が高くなる。
【００９８】
[実施形態６]
図１８は、実施形態６に係る異常検出装置２０００を例示するブロック図である。図１８において、矢印は情報の流れを表している。さらに、図１８において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態６の異常検出装置２０００は、実施形態１〜５いずれかの異常検出装置２０００と同様である。
【００９９】
実施形態６において、各タスクには、タスク種別が割り当てられている。例えば、同じジョブから生成されたタスクには、同一のタスク種別が割り当てられる。実施形態６の分布算出部２０６０は、対象タスクと同一のタスク種別に対応しているタスクに関する進捗履歴情報のみを用いて、タスク速度分布を算出する。そのために、実施形態６の異常検出装置２０００は、種別情報取得部２１４０を有する。種別情報取得部２１４０は、タスクに対応するタスク種別を取得する。
【０１００】
例えば、タスク種別が G1 であるタスクが T1、T2、及び T3 の３つであり、タスク種別が G2 であるタスクが T4 及び T5 の２つであるとする。対象タスクがT1、T2、及び T3 のいずれかである場合、分布算出部２０６０は、タスク種別 G1 に対応している T1、T2、及び T3 に関する進捗履歴情報のみを用いてタスク速度分布を算出する。一方、対象タスクが T4 又は T5 である場合、分布算出部２０６０は、タスク種別 G2 に対応している T4 及び T5 に関する進捗履歴情報のみを用いて、タスク速度分布を算出する。
【０１０１】
また、対象範囲決定部２０４０は、対象タスクのタスク種別に応じて、対象範囲を決定してもよい。例えば、対象範囲決定部２０４０が実施形態３で説明したように、所定期間取得部２１６０によって取得された所定期間を、対象期間の長さにすると仮定する。この場合、所定期間取得部２１６０は、対象タスクのタスク種別に応じた所定期間を取得する。ここで、タスクが１つの状態（例：データの読み込みを行う状態）にある期間の長さは、そのタスクのタスク種別に依存すると考えられる。例えば、データの読み込みに長い時間を要するタスク種別、データの解析処理に長い時間を要するタスク種別などが考えられる。そこで、各タスク種別について、そのタスク種別のタスクが同じ状態に留まる期間を予測し、この予測値を所定期間とすることで、各タスク種別に適した所定期間を設定することができる。例えばこの予測値は、各タスク種別のタスクをテスト実行することで算出することができる。
【０１０２】
＜作用・効果＞
本実施形態によれば、対象タスクと同一のタスク種別に対応しているタスクに関する進捗履歴情報のみを用いて、タスク速度分布を算出する。ここで、同一のタスク種別に対応するタスク同士の場合、正常時における処理速度の差が小さいと考えられる。一方、異なるタスク種別に対応するタスク同士の場合、正常時においても、タスクの処理速度の差が大きい可能性がある。本実施形態によれば、対象タスクと同一のタスク種別に対応しているタスクに関する進捗履歴情報のみを用いてタスク速度分布を算出するため、タスク速度分布がより正確に、対象タスクの処理速度がとるべき値の範囲を表す。したがって、本実施形態によれば、タスク種別を考慮せずにタスク速度分布を算出する場合と比較し、異常判定部２０８０による判定の精度が高くなる。
【０１０３】
[実施形態７]
図１９は、実施形態７に係る異常検出装置２０００を例示するブロック図である。図１９において、矢印は情報の流れを表している。さらに、図１９において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。以下で説明する点を除き、実施形態７の異常検出装置２０００は、実施形態１〜６いずれかの異常検出装置２０００と同様である。
【０１０４】
実施形態７において、進捗履歴情報は、履歴格納部１００に格納されている。履歴格納部１００は、異常検出装置２０００の内部に設けられてもよいし、外部に設けられてもよい。実施形態７の履歴取得部２０２０は、履歴格納部１００から進捗履歴情報を取得する。
【０１０５】
実施形態７の異常検出装置２０００は、履歴削除部２２２０を有する。履歴削除部２２２０は、記録時点が対象範囲決定部２０４０によって決定された対象範囲に含まれない進捗履歴情報を、履歴格納部１００から削除する。
【０１０６】
＜作用・効果＞
本実施形態によれば、記録時点が対象範囲に含まれない進捗履歴情報が、履歴格納部１００から削除される。これにより、履歴格納部１００に格納されている進捗履歴情報の数が単調に増え続けることを防ぐことができる。その結果、履歴取得部２０２０によって取得される進捗履歴情報の数や、対象範囲決定部２０４０が対象範囲の決定の際に処理する進捗履歴情報の数を少なくなるため、履歴取得部２０２０や対象範囲決定部２０４０による処理に要する時間が短くなる。
【０１０７】
また、同様の理由により、履歴格納部１００の記憶容量を小さくすることができる。したがって、例えば履歴格納部１００が異常検出装置２０００の内部に設けられている場合、異常検出装置２０００を小型にしたり、安価にしたりすることができる。履歴格納部１００が異常検出装置２０００の外部に設けられている場合であっても、異常検出装置２０００や分散システム３０００を含めたシステム全体を安価にすることができる。
【０１０８】
＜実施例３＞
異常検出装置２０００の具体的な動作について、実施例を用いて説明する。なお、以下に示すのは、異常検出装置２０００の動作の一例であり、本発明の異常検出装置２０００は、以下に示す実施例によって何らの限定を受けない。図２０は、実施例３に係る異常検出装置２０００を、その使用環境と共に示すブロック図である。図２０において、矢印は情報の流れを表している。さらに、図２０において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【０１０９】
実施例３において、分散システム３０００は、マスタサーバ３１００を有する。マスタサーバ３１００は、実行管理部３１２０及び履歴管理部３１４０を有する。実行管理部３１２０は、タスクの実行を管理する。具体的には、実行管理部３１２０は、処理サーバ３２００に対して新たなタスクを割り当てる、処理サーバ３２００に割り当てられているタスクの実行を停止又は再開する、又は処理サーバ３２００に割り当てられているタスクを別の処理サーバ３２００へ割り当てるなどといった処理を行う。履歴管理部３１４０は、各処理サーバ３２００から進捗度情報を収集する。そして、収集した進捗度情報の履歴を、進捗履歴情報として管理する。ここで、進捗度情報は、ある時点におけるタスクの進捗度を表す。
【０１１０】
処理サーバ３２００は、タスク実行部３２２０及び進捗度情報格納部３２４０を有する。タスク実行部３２２０は、タスクを実行する。例えばタスク実行部３２２０は、プロセス、スレッド、又は仮想マシンなどである。処理サーバ３２００は、複数のタスク実行部３２２０を有してもよい。なお、タスク実行部３２２０は、タスクを複数実行してもよい。進捗度情報格納部３２４０は、その進捗度情報格納部３２４０を有する処理サーバ３２００上で実行されているタスクに関する進捗度情報を格納している。
【０１１１】
実施例３の履歴取得部２０２０は、履歴管理部３１４０から進捗履歴情報を取得する。また、実施例３の異常検出装置２０００は、実施形態５で説明した代表値算出部２２００を有する。対象範囲決定部２０４０は、実施形態５で説明した方法で対象範囲を算出する。分布算出部２０６０は、履歴取得部２０２０が取得した進捗履歴情報のうち、対象範囲決定部２０４０によって決定された対象範囲に含まれる進捗履歴情報のみを用いて、タスク速度分布を算出する。異常判定部２０８０は、対象タスクの処理速度が異常であるか否かを判定する。実行制御部２１００は、異常判定部２０８０による判定結果を受けて、タスクの実行を制御する。本実施例において、実行制御部２１００は、実行管理部３１２０に対して、タスクの実行を制御する指示を送る。この指示を受けた実行管理部３１２０は、タスクの実行を制御する。なお、実行制御部２１００は、実行管理部３１２０を介さずに、直接タスクの実行を制御してもよい。
【０１１２】
図２１は、実施例３の分散システム３０００に含まれる処理サーバ３２００を示す図である。実施例３の分散システム３０００は、処理サーバ３２００として、コンピュータ c1 及び c2 を備えている。コンピュータ c1 と c2 は、１台のネットワークスイッチを介して接続されている。コンピュータ c1 は、タスク実行部３２２０として、プロセス P1 とP2 を備えている。また、コンピュータ c2 は、タスク実行部３２２０として、プロセス P3 と P4 を備えている。プロセス P1、P2、P3、P4 はそれぞれ、タスク T1、T2、T3、T4 を実行している。なお、図２１において、マスタサーバ３１００及び進捗度情報格納部３２４０は省略されている。
【０１１３】
コンピュータ c1 と c2 は、実行しているタスクの状態を監視して、実行しているタスクに関する進捗度情報を生成し、進捗度情報格納部３２４０に格納する。図２２は、コンピュータ c1 と c2 の進捗度情報格納部３２４０に格納されている進捗度情報を併せて示す図である。ここで、本実施例における進捗度情報は、タスクの１秒当たりの処理進捗率を表している。例えば図２２の１行目のレコードは、タスク T1 の１秒当たりの処理進捗率が、記録時点 1:30:01 において 5% であることを示している。ここで、１秒当たりの処理進捗率は、タスクの処理速度を表す値でもある。
【０１１４】
コンピュータ c1 と c2 の進捗度情報格納部３２４０に格納されている進捗度情報は、マスタサーバ３１００が有する履歴管理部３１４０によって収集される。図２３は、履歴管理部３１４０によって管理されている進捗履歴情報を示す図である。例えば、図２３の１行目のレコードは、タスク T1の１秒当たりの処理進捗率が記録時点 1:28:02 において 50% であったことを表している。なお、上述したように、１秒当たりの処理進捗率は、処理速度を表す値でもある。したがって、本実施例において、進捗履歴情報は、タスクの処理速度を直接示している。
【０１１５】
異常検出装置２０００が行う処理について説明する。履歴取得部２０２０は、履歴管理部３１４０から図２３に示されている進捗履歴情報を取得する。対象範囲決定部２０４０は、実施形態５で説明した方法で、対象範囲を決定する。初期値 t を 1:31:00、ウインドウ幅 w を 0:01:00、ステップ幅 s を 0:01:00 とする。対象範囲決定部２０４０は、期間に含まれる進捗履歴情報が示す１秒当たりの処理進捗率の平均値を、その期間の代表値として算出する。また、対象範囲決定部２０４０は、ある代表値が基準代表値の２倍以上である場合に、その代表値と基準代表値との間に有意な差があると判定する。
【０１１６】
対象範囲決定部２０４０が代表値を算出する第１の期間は [1:30:00, 1:31:00] である。そして、記録時点がこの期間に含まれる進捗履歴情報は、図２３のレコード５〜８である。したがって、対象範囲決定部２０４０は、この４つのレコードに示されている１秒当たりの処理進捗率を用いて代表値を算出する。代表値は 16.25%/s となる。この代表値は、基準代表値となる。
【０１１７】
第２の期間は、[1:29:00, 1:30:00] である。この期間に含まれる進捗履歴情報は、図２３のレコード３及び４である。そこで、対象範囲決定部２０４０は、この２つのレコードに示されている１秒当たりの処理進捗率を用いて代表値を算出する。代表値は 22.5%/s となる。この代表値と基準代表値を比較すると、22.5 / 16.25 = 約1.38 倍である。したがって、対象範囲決定部２０４０は、この２つの値の間に有意な差は無いと判定する。
【０１１８】
第３の期間は、[1:28:00, 1:29:00] である。この期間に含まれる進捗履歴情報は、図２３のレコード１及び２である。そこで、対象範囲決定部２０４０は、この２つのレコードに示されている１秒当たりの処理進捗率を用いて代表値を算出する。代表値は 47.5%/s となる。この代表値と基準代表値を比較すると、47.5 / 16.25 = 約2.92 倍である。したがって、対象範囲決定部２０４０は、この２つの値の間に有意な差があると判定する。その結果、対象範囲決定部２０４０は、第３の期間より後の時点を含むように対象期間を設定する。本実施例において、対象範囲決定部２０４０は、第１の期間と第２の期間を合わせた期間 [1:29:00, 1:31:00] を対象期間とする。
【０１１９】
分布算出部２０６０は、上記対象期間に含まれる進捗履歴情報を用いて、タスク速度分布を算出する。この対象期間に含まれる進捗履歴情報は、図２３のレコード３〜８である。本実施例において、分布算出部２０６０は、実施例１で説明した方法でタスク速度分布を算出する。ここで、α = 0.5 とする。また、対象期間に含まれる進捗履歴情報に示されているタスクの処理速度のうち、最も大きい値（Vm）は 25%/s である。したがって、閾値 D の値は、α・Vm = 0.5・25 = 12.5 となる。そして、タスクの処理速度 v について、「0 ≦ v ≦ 12.5」となる確率が 0 であり、「v > 12.5」となる確率が 1 である確率分布を、タスク速度分布として算出する。図２４は、分布算出部２０６０によって算出されたタスク速度分布を表すグラフである。
【０１２０】
異常判定部２０８０は、実行中のタスク T1 〜 T4 それぞれを対象タスクとしてこのタスク速度分布と比較し、処理速度が異常であるか否かを判定する。なお、判定時における各タスクの処理速度は、図２３のレコード５〜８で表されているとする。タスク T1 〜 T4 のうち、タスク T1 の処理速度のみが、タスク速度分布において発生確率が 0 である速度となっている。したがって、異常判定部２０８０は、タスク T1 の処理速度が異常であると判定する。
【０１２１】
実行制御部２１００は、実行管理部３１２０に対し、タスク T1 の実行を制御するように指示を送る。この指示を受けた実行管理部３１２０は、タスク T1 の実行を制御する。例えば実行管理部３１２０は、タスク T1 をプロセス P1 上で再実行する。
【０１２２】
＜実施例４＞
異常検出装置２０００の具体的な動作について、さらに別の実施例を用いて説明する。本実施例で示す実施例も、異常検出装置２０００の動作の一例であり、本発明の異常検出装置２０００は、以下に示す実施例によって何らの限定を受けない。実施例４における異常検出装置２０００及び分散システム３０００の構成は、実施例３の場合と同様であるとする。
【０１２３】
図２５は、コンピュータ c1 と c2 の進捗度情報格納部３２４０に格納されている進捗度情報を併せて示す図である。ここで、本実施例における進捗度情報は、タスク完了時間（タスクの処理が完了するまでの残り所用時間）の予測値又は実績値を示している。本実施例の異常検出装置２０００は、タスク完了時間の予測値又は実績値を、タスクの処理速度を表す値として利用する。また、図２６は、履歴管理部３１４０によって管理されている進捗履歴情報を示す図である。ここで、タスク T1'、T2'、T3'、及び T4' は、過去に実行されていたタスクである。
【０１２４】
図２７は、対象範囲決定部２０４０によって決定される対象範囲に含まれる進捗履歴情報である。ここで、対象範囲決定部２０４０による対象範囲の決定は、実施例３の場合と同様に行われる。
【０１２５】
分布算出部２０６０は、図２７の進捗履歴情報に示されているタスク完了時間を標本とし、タスク速度分布を算出する。実施例４において、分布算出部２０６０によって算出されるタスク速度分布のモデルは、ポアソン分布である。ここで、分布算出部２０６０は、ポアソン分布の算出に用いるヒストグラムのビンの幅を5秒、パラメタλを1とする。
【０１２６】
まず分布算出部２０６０は、進捗履歴情報に示されているタスク完了時間を標本とするヒストグラムを生成する。タスク完了時間の範囲が [0, 5) のビン（ビン１）は T'4、T4 を含むため、ビン１の要素数は２である。タスク完了時間の範囲が [5, 10) のビン（ビン２）は T'3、T2、T3 を含むため、ビン２の要素数は３である。タスク完了時間の範囲が [10, 15) のビン（ビン３）に含まれる要素はないため、ビン３の要素数は０である。タスク完了時間の範囲が [15, 20) のビン（ビン４）にも含まれる要素がないため、ビン４の要素数は０である。タスク完了時間の範囲が [20, 25) のビン（ビン５）は T1 を含むため、ビン５の要素数は１である。
【０１２７】
次に分布算出部２０６０は、ヒストグラムの最頻値のビン番号 k_mode を求める。この場合、ビン２の要素数が最大であるため、k_mode = 2となる。次に分布算出部２０６０は、ポアソン分布 P(λ, k)（ただし、k = max(k' - k_mode, 0)）を、タスク速度分布として算出する。λ = 1であるため、P(1, k) のポアソン分布が算出される。
【０１２８】
異常判定部２０８０は、上記ポアソン分布 P(1,k) を用い、実行中のタスク T1 〜 T4 をそれぞれ対象タスクとして、タスクの処理速度が異常であるか否かを判定する。本実施例において、異常判定部２０８０は、タスク速度分布において、対象タスクの処理速度の発生確率が 0.1 以下である場合に、その対象タスクの処理速度が異常であると判定する。
【０１２９】
タスク T1 のタスク完了時間は 20 秒であるため、ビン番号k' = 5である。よって、k = max(k' - k_mod, 0)) = max(5 -2, 0) = 3 である。したがって、タスク T1 のタスク完了時間の発生確率は、P(1, 3) = 約 0.06 となる。この値は 0.1 より小さいため、異常判定部２０８０は、タスク T1 の処理速度が異常であると判定する。よって、実施例３の場合と同様に、実行制御部２１００は、実行管理部３１２０に対してタスク T1 の実行を制御する指示を送信する。
【０１３０】
タスク T2 〜 T4 のタスク完了時間の発生確率はそれぞれ、約 0.37、約 0.37、約 0.37 となり、いずれも閾値0.1より大きい。そのため、異常判定部２０８０は、これらのタスクの処理速度については、異常でないと判定する。
【０１３１】
＜実施例５＞
異常検出装置２０００の具体的な動作について、さらに別の実施例を用いて説明する。本実施例で示す実施例も、異常検出装置２０００の動作の一例であり、本発明の異常検出装置２０００は、以下に示す実施例によって何らの限定を受けない。図２８は、実施例５に係る異常検出装置２０００を、その使用環境と共に示すブロック図である。図２８において、矢印は情報の流れを表している。さらに、図２８において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。図２８の分散システム３０００は、図２０の分散システム３０００と同様であり、実施例３及び４における分散システム３０００と同様である。
【０１３２】
実施例５における異常検出装置２０００は、実施形態４で説明した割当情報取得部２１８０を有する。実施例５における対象範囲決定部２０４０は、実施形態４で説明した方法で、対象範囲を算出する。なお、本実施例における割当情報は、分散システム３０００に割り当てられているジョブ数の推移を表す。図２９は、割当情報取得部２１８０によって取得される割当情報を示す図である。
【０１３３】
分散システム３０００に含まれる処理サーバは、実施例３及び４と同様に、図２１で表される。また、コンピュータc1とc2の進捗度情報格納部３２４０に格納されているタスク情報は、実施例４と同様に、図２２で表される。そのため、本実施例では、実施例４と同様に、タスクの処理速度を表す値として、タスク完了時間の予測値または実績値を用いる。
【０１３４】
図３０は、履歴管理部３１４０に格納されている進捗履歴情報を示す図である。T'1 〜 T'6 は、過去に実行されたタスクに関する進捗履歴情報である。本実施例において、進捗履歴情報は異常フラグを有する。異常フラグは、その進捗履歴情報が示すタスクについて、異常判定部２０８０により、処理速度が異常であると判定されたか否かを表す。例えば図３０の６番目のレコードは、異常フラグの値が true である。このレコードは、タスク T'6 について、処理速度が異常であるという判定が行われたことを表している。
【０１３５】
対象範囲決定部２０４０は、割当情報が示すジョブ数の推移を用いて、対象範囲を決定する。本実施例では、1:29:01 において、ジョブ数が 1 から 2 へ変化している。そのため、対象範囲決定部２０４０は、1:29:01 を対象範囲の開始時点とする。したがって、対象範囲に含まれる進捗履歴情報は、タスク T'4 〜 T'6、及び T1 〜 T4に関する進捗履歴情報である。
【０１３６】
次に、分布算出部２０６０は、タスク T'4 〜 T'6、及び T1 〜 T4に関する進捗履歴情報のうち、異常判定部２０８０によって処理速度が異常であると判定されたタスクに関する進捗履歴情報以外の進捗履歴情報を用いて、タスク速度分布を算出する。具体的には、分布算出部２０６０は、対象範囲に含まれる進捗履歴情報のうち、タスク T'6 以外の進捗履歴情報を用いる。
【０１３７】
本実施例において、分布算出部２０６０は、実施例１に示したモデルを用いて、タスク速度分布を算出する。ここで、α = 2とする。最大の処理速度 Vm （最小のタスク完了時間）は、T'5 のタスク完了時間（4秒）である。したがって、閾値 D は、α・Vm = 8 秒である。分布算出部２０６０は、予測完了時間が [0秒, 8秒] であるタスクの発生確率を 1、予測完了時間が (8秒, ＋∞] であるタスクの発生確率を0とする確率分布を、タスク速度分布として算出する。図３１は、分布算出部２０６０によって算出されたタスク速度分布を示す。
【０１３８】
異常判定部２０８０は、実行中のタスク T1 〜 T4 それぞれを対象タスクとしてこのタスク速度分布と比較し、処理速度が異常であるか否かを判定する。なお、各タスクの現時点における処理速度（予測完了時間）は、図３０のレコード７〜１０で表されているとする。タスク T1 〜 T4 のうち、タスク T1 の処理速度のみが、タスク速度分布において発生確率が 0 である速度となっている。したがって、異常判定部２０８０は、タスク T1 の処理速度が異常であると判定する。
【０１３９】
実行制御部２１００は、実行管理部３１２０に対し、タスク T1 の実行を制御するように指示を送る。この指示を受けた実行管理部３１２０は、タスク T1 の実行を制御する。例えば実行管理部３１２０は、タスク T1 をプロセス P1 上で再実行する。
【０１４０】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記実施形態の組み合わせ、及び上記実施形態以外の様々な構成を採用することもできる。
【０１４１】
以下、参考形態の例を付記する。
１．  複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とする異常検出装置であって、
複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得手段と、
対象範囲を決定する対象範囲決定手段と、
前記履歴取得手段によって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出手段と、
対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定手段と、
を有する異常検出装置。
２．  前記異常判定手段によって、前記対象タスクの処理速度が異常であると判定された場合、前記対象タスクが割り当てられている第１サーバ上で前記対象タスクを再実行するか、又は前記対象タスクを複製したタスクを、前記第１サーバとは異なる第２サーバに割り当てる実行制御手段を有する１．に記載の異常検出装置。
３．  所定期間を取得する所定期間取得手段を有し、
前記対象範囲決定手段は、前記対象範囲の長さを前記所定期間とする１．又は２．に記載の異常検出装置。
４．  前記サーバと、そのサーバに割り当てられている前記タスクとの対応付けを示す割当情報を取得する割当情報取得手段を有し、
前記対象範囲決定手段は、いずれかの前記サーバに対する前記タスクの割り当てに変化があった時点を、前記対象範囲の開始時点とする１．又は２．に記載の異常検出装置。
５．  複数の期間それぞれについて、前記記録時点がそれら各期間に含まれる進捗履歴情報を用いて、それら各期間における前記タスクの処理速度の代表値を算出する代表値算出手段を有し、
前記対象範囲決定手段は、前記各期間のうち、その期間の前記代表値と現在時点に最も近い期間における前記代表値との間に有意な差が無い期間のみを含むように、前記対象範囲を決定する、
１．又は２．に記載の異常検出装置。
６．  前記タスクに対応するタスク種別を取得する種別取得手段を有し、
前記分布算出手段は、前記対象タスクと同一の前記タスク種別に対応している前記タスクに関する前記進捗履歴情報のみを用いて、前記タスク速度分布を算出する、
１．乃至５．いずれか一項に記載の異常検出装置。
７．  前記対象範囲決定手段は、前記対象タスクに対応する前記タスク種別に基づいて前記対象範囲を算出する６．に記載の異常検出装置。
８．  前記進捗履歴情報は、履歴格納手段に格納されており、
前記履歴取得手段は、前記履歴格納手段から前記進捗履歴情報を取得し、
前記対象範囲に含まれない前記進捗履歴情報を前記履歴格納手段から削除する履歴削除手段を有する、
１．乃至７．いずれか一項に記載の異常検出装置。
９．  前記分布算出手段は、前記異常判定手段によって処理速度が異常であると判定された前記対象タスクに関する進捗履歴情報を、その判定以降における前記タスク速度分布の算出に利用しない１．乃至８．いずれか一項に記載の異常検出装置。
１０．  複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とするコンピュータによって実行される制御方法であって、
複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得ステップと、
対象範囲を決定する対象範囲決定ステップと、
前記履歴取得ステップによって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出ステップと、
対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定ステップと、
を有する制御方法。
１１．  前記異常判定ステップによって、前記対象タスクの処理速度が異常であると判定された場合、前記対象タスクが割り当てられている第１サーバ上で前記対象タスクを再実行するか、又は前記対象タスクを複製したタスクを、前記第１サーバとは異なる第２サーバに割り当てる実行制御ステップを有する１０．に記載の制御方法。
１２．  所定期間を取得する所定期間取得ステップを有し、
前記対象範囲決定ステップは、前記対象範囲の長さを前記所定期間とする１０．又は１１．に記載の制御方法。
１３．  前記サーバと、そのサーバに割り当てられている前記タスクとの対応付けを示す割当情報を取得する割当情報取得ステップを有し、
前記対象範囲決定ステップは、いずれかの前記サーバに対する前記タスクの割り当てに変化があった時点を、前記対象範囲の開始時点とする１０．又は１１．に記載の制御方法。
１４．  複数の期間それぞれについて、前記記録時点がそれら各期間に含まれる進捗履歴情報を用いて、それら各期間における前記タスクの処理速度の代表値を算出する代表値算出ステップを有し、
前記対象範囲決定ステップは、前記各期間のうち、その期間の前記代表値と現在時点に最も近い期間における前記代表値との間に有意な差が無い期間のみを含むように、前記対象範囲を決定する、
１０．又は１１．に記載の制御方法。
１５．  前記タスクに対応するタスク種別を取得する種別取得ステップを有し、
前記分布算出ステップは、前記対象タスクと同一の前記タスク種別に対応している前記タスクに関する前記進捗履歴情報のみを用いて、前記タスク速度分布を算出する、
１０．乃至１４．いずれか一項に記載の制御方法。
１６．  前記対象範囲決定ステップは、前記対象タスクに対応する前記タスク種別に基づいて前記対象範囲を算出する１５．に記載の制御方法。
１７．  前記進捗履歴情報は、履歴格納手段に格納されており、
前記履歴取得ステップは、前記履歴格納手段から前記進捗履歴情報を取得し、
前記対象範囲に含まれない前記進捗履歴情報を前記履歴格納手段から削除する履歴削除ステップを有する、
１０．乃至１６．いずれか一項に記載の制御方法。
１８．  前記分布算出ステップは、前記異常判定ステップによって処理速度が異常であると判定された前記対象タスクに関する進捗履歴情報を、その判定以降における前記タスク速度分布の算出に利用しない１０．乃至１７．いずれか一項に記載の制御方法。
１９．  複数のサーバで構成される分散システムにおいて、前記サーバに割り当てられているタスクを処理対象とする異常検出装置として動作する機能をコンピュータに持たせるプログラムであって、前記コンピュータに、
複数の記録時点それぞれにおける複数の前記タスクの進捗に関する進捗履歴情報を取得する履歴取得機能と、
対象範囲を決定する対象範囲決定機能と、
前記履歴取得機能によって取得された前記進捗履歴情報のうち、前記記録時点が前記対象範囲に含まれる前記進捗履歴情報のみを用いて、前記タスクの処理速度の確率分布であるタスク速度分布を算出する分布算出機能と、
対象タスクの処理速度と前記タスク速度分布とを比較することで、前記対象タスクの処理速度が異常であるか否かを判定する異常判定機能と、
を持たせるプログラム。
２０．  前記異常判定機能によって、前記対象タスクの処理速度が異常であると判定された場合、前記対象タスクが割り当てられている第１サーバ上で前記対象タスクを再実行するか、又は前記対象タスクを複製したタスクを、前記第１サーバとは異なる第２サーバに割り当てる実行制御機能を有する１９．に記載のプログラム。
２１．  前記コンピュータに、所定期間を取得する所定期間取得機能を持たせ、
前記対象範囲決定機能は、前記対象範囲の長さを前記所定期間とする１９．又は２０．に記載のプログラム。
２２．  前記コンピュータに、前記サーバと、そのサーバに割り当てられている前記タスクとの対応付けを示す割当情報を取得する割当情報取得機能を持たせ、
前記対象範囲決定機能は、いずれかの前記サーバに対する前記タスクの割り当てに変化があった時点を、前記対象範囲の開始時点とする１９．又は２０．に記載のプログラム。
２３．  前記コンピュータに、複数の期間それぞれについて、前記記録時点がそれら各期間に含まれる進捗履歴情報を用いて、それら各期間における前記タスクの処理速度の代表値を算出する代表値算出機能を持たせ、
前記対象範囲決定機能は、前記各期間のうち、その期間の前記代表値と現在時点に最も近い期間における前記代表値との間に有意な差が無い期間のみを含むように、前記対象範囲を決定する、
１９．又は２０．に記載のプログラム。
２４．  前記コンピュータに、前記タスクに対応するタスク種別を取得する種別取得機能を持たせ、
前記分布算出機能は、前記対象タスクと同一の前記タスク種別に対応している前記タスクに関する前記進捗履歴情報のみを用いて、前記タスク速度分布を算出する、
１９．乃至２３．いずれか一項に記載のプログラム。
２５．  前記対象範囲決定機能は、前記対象タスクに対応する前記タスク種別に基づいて前記対象範囲を算出する２４．に記載のプログラム。
２６．  前記進捗履歴情報は、履歴格納手段に格納されており、
前記履歴取得機能は、前記履歴格納手段から前記進捗履歴情報を取得し、
前記コンピュータに、前記対象範囲に含まれない前記進捗履歴情報を前記履歴格納手段から削除する履歴削除機能を持たせる、
１９．乃至２５．いずれか一項に記載のプログラム。
２７．  前記分布算出機能は、前記異常判定機能によって処理速度が異常であると判定された前記対象タスクに関する進捗履歴情報を、その判定以降におけう前記タスク速度分布の算出に利用しない１９．乃至２６．いずれか一項に記載のプログラム。
【０１４２】
この出願は、２０１３年６月２８日に出願された日本出願特願２０１３−１３６４２７号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2014208139.tif 000004
【図２】
2014208139.tif 000005
【図３】
2014208139.tif 000006
【図４】
2014208139.tif 000007
【図５】
2014208139.tif 000008
【図６】
2014208139.tif 000009
【図７】
2014208139.tif 000010
【図８】
2014208139.tif 000011
【図９】
2014208139.tif 000012
【図１０】
2014208139.tif 000013
【図１１】
2014208139.tif 000014
【図１２】
2014208139.tif 000015
【図１３】
2014208139.tif 000016
【図１４】
2014208139.tif 000017
【図１５】
2014208139.tif 000018
【図１６】
2014208139.tif 000019
【図１７】
2014208139.tif 000020
【図１８】
2014208139.tif 000021
【図１９】
2014208139.tif 000022
【図２０】
2014208139.tif 000023
【図２１】
2014208139.tif 000024
【図２２】
2014208139.tif 000025
【図２３】
2014208139.tif 000026
【図２４】
2014208139.tif 000027
【図２５】
2014208139.tif 000028
【図２６】
2014208139.tif 000029
【図２７】
2014208139.tif 000030
【図２８】
2014208139.tif 000031
【図２９】
2014208139.tif 000032
【図３０】
2014208139.tif 000033
【図３１】
2014208139.tif 000034
【国際調査報告】
2014208139.tif 000035
2014208139.tif 000036
2014208139.tif 000037
2014208139.tif 000038