(57)【要約】【課題】所定の期限までに処理が実行完了するような演算装置に処理を配備可能にすること。【解決手段】タスク配備装置１００は、所定の間隔で、１以上のタスク実行ノード１１０のいずれかのタスク実行ノード１１０に含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得する。タスク配備装置１００は、取得した演算装置についての処理数と、演算装置における処理実行速度とに基づいて、演算装置に新たな処理を実行させる場合における新たな処理の実行完了時点を、演算装置ごとに算出する。タスク配備装置１００は、演算装置ごとに算出した実行完了時点に基づいて、新たな処理を実行させる演算装置を、１以上のタスク実行ノード１１０のいずれかのタスク実行ノード１１０に含まれる演算装置に決定する。【選択図】図１
2018200603.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
所定の間隔で、１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記１以上のノードのいずれかのノードに含まれる演算装置に決定する、
処理を実行させることを特徴とするタスク配備プログラム。
【請求項２】
前記コンピュータに、
前記演算装置が実行する処理が格納されるキューにおける処理数を取得した際、前記演算装置を含むノードに、前記演算装置が実行する処理が格納されるキューに対してダミー処理を追加させ、
前記新たな処理を実行させる演算装置を決定した場合、前記新たな処理を実行させる演算装置を含むノードに、前記新たな処理を実行させる演算装置が実行する処理が格納されるキューに追加されたダミー処理を、前記新たな処理に置換させる、処理を実行させることを特徴とする請求項１に記載のタスク配備プログラム。
【請求項３】
前記取得する処理は、前記所定の間隔で、前記１以上のノードに含まれる複数の演算装置からランダムに選択した演算装置が実行する処理が格納されるキューにおける処理数を取得する、ことを特徴とする請求項２に記載のタスク配備プログラム。
【請求項４】
前記取得する処理は、前記所定の間隔で、前記１以上のノードに含まれる複数の演算装置のそれぞれの演算装置が実行する処理が格納されるキューにおける処理数を取得し、
前記追加させる処理は、前記複数の演算装置のうち相対的に小さい処理数を取得した演算装置を含むノードに、前記複数の演算装置のうち相対的に小さい処理数を取得した演算装置が実行する処理が格納されるキューに対してダミー処理を追加させる、ことを特徴とする請求項２に記載のタスク配備プログラム。
【請求項５】
前記コンピュータに、
前記新たな処理の実行結果の送信期限を含む、前記新たな処理の実行要求を受け付ける処理を実行させ、
前記決定する処理は、前記新たな処理を実行させる演算装置を、算出した前記実行完了時点が、受け付けた前記実行要求に含まれる前記送信期限より前になる演算装置に決定する、ことを特徴とする請求項１〜４のいずれか一つに記載のタスク配備プログラム。
【請求項６】
前記決定する処理は、前記新たな処理を実行させる演算装置を、算出した前記実行完了時点が現時点に最も近くなる演算装置に決定する、ことを特徴とする請求項１〜５のいずれか一つに記載のタスク配備プログラム。
【請求項７】
前記算出する処理は、取得した前記演算装置についての処理数と、処理の種別ごとの前記演算装置における処理実行速度のうち前記新たな処理の種別に対応する処理実行速度とに基づいて、前記新たな処理の実行完了時点を、前記演算装置ごとに算出する、ことを特徴とする請求項１〜６のいずれか一つに記載のタスク配備プログラム。
【請求項８】
コンピュータが
所定の間隔で、１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記１以上のノードのいずれかのノードに含まれる演算装置に決定する、
処理を実行することを特徴とするタスク配備方法。
【請求項９】
所定の間隔で、１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記１以上のノードのいずれかのノードに含まれる演算装置に決定する、
制御部を有することを特徴とするタスク配備装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク配備プログラム、タスク配備方法、およびタスク配備装置に関する。
【背景技術】
【０００２】
従来、複数のノードを含み、いずれかのノードでＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）デバイスから得られるデータに対して処理を実行し、実行結果を利用者の端末装置に送信するクラウドシステムがある。クラウドシステムには、例えば、Ｈａｄｏｏｐなどの分散処理技術や、Ｍｅｓｏｓなどの分散リソース管理技術が適用される。
【０００３】
先行技術としては、例えば、選択された１つ以上のコンピューティングリソースを使用して、タスクの実行を、スケジュール設定された時刻に開始するものがある。また、例えば、複数のタスクの割り当て先を、複数のタスク処理部のうち、１つの処理部に共通して割り当てる技術がある。また、例えば、資源管理装置に仮予約操作を実行した後でジョブを割り当てる資源を決定し、ジョブ予約を実行する技術がある。また、例えば、他プロセッサに処理単位を分散し、並列実行によって処理時間の短縮を図る技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１６−５０７１２１号公報
【特許文献２】特開２０１３−２０５８８０号公報
【特許文献３】特開２００４−３０２７４８号公報
【特許文献４】特開平６−２４３１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、所定の期限までに処理を実行完了することが困難である。例えば、いずれのノードに処理を実行させれば、所定の期限までに処理を実行完了することができるかを精度よく判断することができない。
【０００６】
１つの側面では、本発明は、所定の期限までに処理が実行完了するような演算装置に処理を配備可能にすることができるタスク配備プログラム、タスク配備方法、およびタスク配備装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、所定の間隔で、１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記１以上のノードのいずれかのノードに含まれる演算装置に決定するタスク配備プログラム、タスク配備方法、およびタスク配備装置が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、所定の期限までに処理が実行完了するような演算装置に処理を配備可能にすることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるタスク配備方法の一実施例を示す説明図である。
【図２】図２は、タスク配備システム２００の一例を示す説明図である。
【図３】図３は、タスク配備装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、タスク実行ノード管理ＤＢ４００の記憶内容の一例を示す説明図である。
【図５】図５は、オファー情報ＤＢ５００の記憶内容の一例を示す説明図である。
【図６】図６は、タスク管理ＤＢ６００の記憶内容の一例を示す説明図である。
【図７】図７は、データ管理ＤＢ７００の記憶内容の一例を示す説明図である。
【図８】図８は、タスク実行ノード１１０のハードウェア構成例を示すブロック図である。
【図９】図９は、キュー状態ＤＢ９００の記憶内容の一例を示す説明図である。
【図１０】図１０は、タスク実行キュー１０００の記憶内容の一例を示す説明図である。
【図１１】図１１は、データ管理ＤＢ１１００の記憶内容の一例を示す説明図である。
【図１２】図１２は、利用者ＤＢ１２００の記憶内容の一例を示す説明図である。
【図１３】図１３は、タスク配備装置１００とタスク実行ノード１１０との機能的構成例を示すブロック図である。
【図１４】図１４は、タスク配備装置１００とタスク実行ノード１１０との具体的な機能的構成例を示す説明図である。
【図１５】図１５は、第１のメッセージＭ１の一例を示す説明図である。
【図１６】図１６は、第２のメッセージＭ２の一例を示す説明図である。
【図１７】図１７は、第３のメッセージＭ３の一例を示す説明図である。
【図１８】図１８は、第４のメッセージＭ４の一例を示す説明図である。
【図１９】図１９は、第５のメッセージＭ５の一例を示す説明図である。
【図２０】図２０は、第６のメッセージＭ６の一例を示す説明図である。
【図２１】図２１は、第７のメッセージＭ７の一例を示す説明図である。
【図２２】図２２は、第８のメッセージＭ８の一例を示す説明図である。
【図２３】図２３は、第９のメッセージＭ９の一例を示す説明図である。
【図２４】図２４は、第１０のメッセージＭ１０の一例を示す説明図である。
【図２５】図２５は、第１１のメッセージＭ１１の一例を示す説明図である。
【図２６】図２６は、第１２のメッセージＭ１２の一例を示す説明図である。
【図２７】図２７は、タスクの配備場所を決定する流れを示す説明図である。
【図２８】図２８は、配備場所を決定する実施例１を示す説明図（その１）である。
【図２９】図２９は、配備場所を決定する実施例１を示す説明図（その２）である。
【図３０】図３０は、配備場所を決定する実施例１を示す説明図（その３）である。
【図３１】図３１は、配備場所を決定する実施例１を示す説明図（その４）である。
【図３２】図３２は、実施例１における分散リソース管理処理手順の一例を示すフローチャートである。
【図３３】図３３は、実施例１における配備場所決定処理手順の一例を示すフローチャートである。
【図３４】図３４は、実施例１におけるタスク実行ノード１１０の選択処理手順の一例を示すフローチャートである。
【図３５】図３５は、実施例１におけるタスク実行完了時点の算出処理手順の一例を示すフローチャートである。
【図３６】図３６は、実施例１における実行順序確保処理手順の一例を示すフローチャートである。
【図３７】図３７は、実施例１におけるタスク配備場所決定処理手順の一例を示すフローチャートである。
【図３８】図３８は、実施例１におけるタスク配備場所決定処理手順の別の例を示すフローチャートである。
【図３９】図３９は、実施例１におけるオファー成功処理手順の一例を示すフローチャートである。
【図４０】図４０は、実施例１におけるオファー失敗処理手順の一例を示すフローチャートである。
【図４１】図４１は、実施例２におけるタスク実行ノード１１０の選択処理手順の一例を示すフローチャートである。
【図４２】図４２は、実施例３におけるキュー状態ＤＢ４２００の記憶内容の一例を示す説明図である。
【図４３】図４３は、実施例３におけるタスク実行完了時点の算出処理手順の一例を示すフローチャートである。
【図４４】図４４は、実施例４におけるタスク実行ノード管理ＤＢ４４００の記憶内容の一例を示す説明図である。
【図４５】図４５は、実施例４におけるキュー状態ＤＢ４５００の記憶内容の一例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかるタスク配備プログラム、タスク配備方法、およびタスク配備装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかるタスク配備方法の一実施例）
図１は、実施の形態にかかるタスク配備方法の一実施例を示す説明図である。図１において、タスク配備装置１００は、複数のノード１１０を含むシステムを制御するコンピュータである。タスク配備装置１００は、例えば、処理の配備場所を制御する。ノード１１０は、演算装置を有する。演算装置は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１１である。処理は、例えば、タスクである。配備場所は、処理を実行させる演算装置である。
【００１２】
ここで、処理の配備場所を制御する際、所定の期限までに処理が実行完了するような配備場所を決定することが望まれる傾向がある。しかしながら、所定の期限までに処理が実行完了するような配備場所を決定することは難しい。
【００１３】
例えば、Ｍｅｓｏｓなどの分散リソース管理技術により、処理の配備場所を制御する場合が考えられる。この場合、例えば、いずれのノードに処理を実行させれば、所定の期限までに処理を実行完了することができるかを判断せずに、処理の配備場所を決定することがあり、所定の期限までに処理が実行完了しないことがある。
【００１４】
これに対し、ノードの処理数と、ノードの処理実行速度とに基づいて、ノードに新たな処理を実行させた場合に、新たな処理が実行完了するまでの実行完了時点を推定し、所定の期限までに、新たな処理が実行完了することができるかを判断することが考えられる。しかしながら、ノードは、複数の処理を実行する場合、複数の処理を所定時間ごとに代わる代わる実行する傾向がある。このため、ノードの処理数がリアルタイムに増減すると、処理の実行完了時点もリアルタイムに変動してしまう。したがって、所定の期限までに、ノードに実行させた新たな処理が実行完了することができるかを精度よく判断することができない。
【００１５】
そこで、本実施の形態では、演算装置にキューを設け、演算装置で実行する処理をキューで管理した上で、キューにおける処理数と、演算装置の処理実行速度とに基づいて、演算装置で実行する処理の実行完了時点を推定するタスク配備方法について説明する。これによれば、所定の期限までに処理が実行完了するような演算装置に、処理を配備可能にすることができる。
【００１６】
図１の例では、タスク配備装置１００は、１以上のノード１１０と通信可能である。ノード１１０は、１以上の演算装置を有する。演算装置は、処理を格納するキューを有する。演算装置は、キューから取り出した処理を一つずつ実行する。以下の説明では、ノード１１０を「タスク実行ノード１１０」と表記する場合がある。
【００１７】
（１−１）タスク配備装置１００は、所定の間隔で、１以上のタスク実行ノード１１０のいずれかのタスク実行ノード１１０に含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得する。所定の間隔は、例えば、予めタスク配備装置１００の製造者や管理者によって設定される。
【００１８】
タスク配備装置１００は、例えば、所定のタイミングまで、所定の間隔で、いずれかのタスク実行ノード１１０に含まれるＣＰＵ１１１が実行するタスクが格納されるキューにおけるタスク数を取得する。所定のタイミングは、例えば、タスク実行ノード１１０に実行させる新たな処理が発生したタイミングである。タスク配備装置１００は、具体的には、ＣＰＵ１１１が有するキューにおけるタスク数「３」を取得する。これにより、タスク配備装置１００は、ＣＰＵ１１１に新たなタスクを実行させる場合、ＣＰＵ１１１が新たなタスクを実行する前に、いくつのタスクを実行完了することになるかを特定することができる。
【００１９】
（１−２）タスク配備装置１００は、取得した演算装置についての処理数と、演算装置における処理実行速度とに基づいて、演算装置に新たな処理を実行させる場合における新たな処理の実行完了時点を、演算装置ごとに算出する。処理実行速度は、例えば、単位時間あたりに、いくつの処理を実行完了するかを示す値である。処理実行速度の単位は、例えば、個／ｓである。処理実行速度は、例えば、予めタスク実行ノード１１０との通信によって設定される。実行完了時点は、演算装置に実行させる新たな処理が実行完了した時点であり、現時点から実行完了時間が経過した時点である。実行完了時間は、例えば、現時点から、演算装置に実行させる新たな処理が実行完了するまでにかかる時間である。
【００２０】
タスク配備装置１００は、例えば、所定のタイミングまでに取得したＣＰＵ１１１についてのタスク数と、ＣＰＵ１１１におけるタスク実行速度とに基づいて、新たなタスクの実行完了時間を、ＣＰＵ１１１ごとに算出する。タスク配備装置１００は、具体的には、取得したタスク数「３」に新たなタスクの分として「１」を加算し、ＣＰＵ１１１に新たなタスクを実行させる場合におけるＣＰＵ１１１が有するキューにおけるタスク数「４」を算出する。タスク配備装置１００は、タスク数「４」に、ＣＰＵ１１１における処理実行速度「０．５個／ｓ」で除算し、実行完了時間「８ｓ」を算出する。タスク配備装置１００は、現時点から実行完了時間が経過した時点を、実行完了時点として算出する。これにより、タスク配備装置１００は、ＣＰＵ１１１に新たなタスクを実行させた場合に、新たなタスクがいつまでに実行完了するかを特定することができる。
【００２１】
（１−３）タスク配備装置１００は、演算装置ごとに算出した実行完了時点に基づいて、新たな処理を実行させる演算装置を、１以上のタスク実行ノード１１０のいずれかのタスク実行ノード１１０に含まれる演算装置に決定する。タスク配備装置１００は、例えば、新たなタスクを実行させるＣＰＵ１１１を、１以上のタスク実行ノード１１０のいずれかのタスク実行ノード１１０に含まれる、実行完了時点が現時点に最も近くなるＣＰＵ１１１に決定する。
【００２２】
これにより、タスク配備装置１００は、所定の期限までに処理が実行完了するようなＣＰＵ１１１に、新たな処理を配備することができる。タスク配備装置１００は、例えば、新たな処理が生成された際、直前に処理数を取得したＣＰＵ１１１のうち、所定の期限までに処理が実行完了するようなＣＰＵ１１１に、新たな処理を配備することができる。
【００２３】
また、タスク配備装置１００は、処理数を取得した際、キューにダミー処理を追加させてもよい。これにより、タスク配備装置１００は、新たな処理が生成されるまでに、キューに別の処理が追加されても、算出した実行完了時点までに新たな処理を実行完了することができるように、ＣＰＵ１１１に新たな処理を実行させることができる。
【００２４】
ここでは、タスク配備装置１００が、新たな処理を実行させる演算装置を、実行完了時間が現時点に最も近くなる演算装置に決定する場合について説明したが、これに限らない。例えば、タスク配備装置１００が、新たな処理を実行させる演算装置を、実行完了時間が、所定の期限より前になる演算装置に決定する場合があってもよい。
【００２５】
ここでは、タスク実行ノード１１０が、演算装置単位でキューを有する場合について説明したが、これに限らない。例えば、タスク実行ノード１１０が、タスク実行ノード１１０単位でキューを有し、タスク実行ノード１１０に含まれる複数の演算装置でキューから取り出した処理を分担して実行する場合があってもよい。
【００２６】
ここでは、処理実行速度が、処理の種別によらず一定である場合について説明したが、これに限らない。例えば、処理実行速度が、処理の種別によって異なり、タスク配備装置１００が、処理の種別ごとに処理実行速度を記憶する場合があってもよい。
【００２７】
（タスク配備システム２００の一例）
次に、図２を用いて、図１に示したタスク配備装置１００を適用した、タスク配備システム２００の一例について説明する。
【００２８】
図２は、タスク配備システム２００の一例を示す説明図である。図２において、タスク配備システム２００は、データ生成装置２０１と、データ受信ノード２０２と、タスク配備装置１００と、複数のタスク実行ノード１１０と、データ配信ノード２０３と、クライアント装置２０４とを含む。
【００２９】
タスク配備システム２００において、データ生成装置２０１と、データ受信ノード２０２とは、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００３０】
また、データ受信ノード２０２と、タスク配備装置１００とは、有線または無線によって通信可能に接続される。また、タスク配備装置１００と、それぞれのタスク実行ノード１１０とは、有線または無線によって通信可能に接続される。また、タスク配備装置１００と、データ配信ノード２０３とは、有線または無線によって通信可能に接続される。また、データ配信ノード２０３と、クライアント装置２０４とは、有線または無線のネットワーク２１０を介して接続される。
【００３１】
データ生成装置２０１は、タスクに用いるデータを生成し、データ受信ノード２０２を介してタスク配備装置１００に送信するコンピュータである。以下の説明では、タスクに用いるデータを「処理対象データ」と表記する場合がある。データ生成装置２０１は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノートＰＣ、タブレット端末、スマートフォン、ウェアラブル端末、撮像装置、センサ装置などである。データ生成装置２０１は、例えば、ＩｏＴデバイスである。
【００３２】
データ受信ノード２０２は、データ生成装置２０１から受信した処理対象データを、タスク配備装置１００に送信するコンピュータである。データ受信ノード２０２は、例えば、サーバ、ＰＣ、ノートＰＣ、タブレット端末、スマートフォン、ウェアラブル端末などである。
【００３３】
タスク配備装置１００は、データ受信ノード２０２から処理対象データを受信する。また、タスク配備装置１００は、ＣＰＵごとの対応するキューにおけるタスク数と、ＣＰＵごとのタスク実行速度となどを、タスク実行ノード１１０から受信する。そして、タスク配備装置１００は、受信した処理対象データを用いたタスクの配備場所となるＣＰＵを決定する。タスク配備装置１００は、受信したデータを用いたタスクの実行依頼を、配備場所に決定したＣＰＵを有するタスク実行ノード１１０に送信する。タスク配備装置１００は、例えば、サーバ、ＰＣ、ノートＰＣなどである。
【００３４】
タスク実行ノード１１０は、１以上のＣＰＵを有するコンピュータである。タスク実行ノード１１０は、ＣＰＵに対応するキューを有する。タスク実行ノード１１０は、キューにおけるタスク数とＣＰＵのタスク実行速度となどをタスク配備装置１００に送信する。タスク実行ノード１１０は、ＣＰＵを用いてタスクを実行し、タスクの実行結果をタスク配備装置１００に送信する。タスク実行ノード１１０は、例えば、ＰＣ、ノートＰＣ、タブレット端末、スマートフォン、ウェアラブル端末などである。
【００３５】
データ配信ノード２０３は、タスク配備装置１００から受信したタスクの実行結果を、クライアント装置２０４に送信するコンピュータである。データ配信ノード２０３は、例えば、サーバ、ＰＣ、ノートＰＣ、タブレット端末、スマートフォン、ウェアラブル端末などである。
【００３６】
クライアント装置２０４は、データ配信ノード２０３から受信したタスクの実行結果を出力するコンピュータである。クライアント装置２０４は、例えば、処理の実行結果をディスプレイに表示する。クライアント装置２０４は、例えば、ＰＣ、ノートＰＣ、タブレット端末、スマートフォン、ウェアラブル端末などである。
【００３７】
（タスク配備装置１００のハードウェア構成例）
次に、図３を用いて、タスク配備装置１００のハードウェア構成例について説明する。
【００３８】
図３は、タスク配備装置１００のハードウェア構成例を示すブロック図である。図３において、タスク配備装置１００は、ＣＰＵ３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、記録媒体Ｉ／Ｆ３０４と、記録媒体３０５とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００３９】
ここで、ＣＰＵ３０１は、タスク配備装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。メモリ３０２は、図４〜図７に後述する各種ＤＢ（ＤａｔａＢａｓｅ）を記憶する。
【００４０】
ネットワークＩ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４１】
記録媒体Ｉ／Ｆ３０４は、ＣＰＵ３０１の制御に従って記録媒体３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体３０５は、記録媒体Ｉ／Ｆ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体３０５は、タスク配備装置１００から着脱可能であってもよい。
【００４２】
タスク配備装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、タスク配備装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を有していなくてもよい。
【００４３】
（タスク実行ノード管理ＤＢ４００の記憶内容の一例）
次に、図４を用いて、タスク実行ノード管理ＤＢ４００の記憶内容の一例について説明する。タスク実行ノード管理ＤＢ４００は、例えば、図３に示したタスク配備装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００４４】
図４は、タスク実行ノード管理ＤＢ４００の記憶内容の一例を示す説明図である。図４に示すように、タスク実行ノード管理ＤＢ４００は、タスク実行ノードＩＤのフィールドを有する。タスク実行ノード管理ＤＢ４００は、各フィールドに情報を設定することにより、タスク実行ノード１１０管理情報がレコードとして記憶される。
【００４５】
タスク実行ノードＩＤのフィールドは、タスク実行ノードＩＤが設定される。タスク実行ノードＩＤは、タスク実行ノード１１０を特定するＩＤである。タスク実行ノードＩＤは、例えば、Ｉである。Ｉは、１〜ｋの整数である。ｋは、タスク配備システム２００におけるタスク実行ノード１１０の数である。
【００４６】
（オファー情報ＤＢ５００の記憶内容の一例）
次に、図５を用いて、オファー情報ＤＢ５００の記憶内容の一例について説明する。オファー情報ＤＢ５００は、例えば、図３に示したタスク配備装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００４７】
図５は、オファー情報ＤＢ５００の記憶内容の一例を示す説明図である。図５に示すように、オファー情報ＤＢ５００は、オファーＩＤのフィールドに対応付けて、タスク実行完了時点のフィールドを有する。オファー情報ＤＢ５００は、各フィールドに情報を設定することにより、オファー情報がレコードとして記憶される。
【００４８】
オファーＩＤのフィールドは、オファーＩＤが設定される。オファーＩＤは、オファーの発行元であるタスク実行ノード１１０を特定するＩＤである。オファーは、タスク実行ノード１１０が新たなタスクを実行可能であることを示す、タスク実行ノード１１０による申し出である。タスク実行完了時点のフィールドは、オファーの発行元であるタスク実行ノード１１０におけるタスク実行完了時点が設定される。タスク実行完了時点は、見積もられたタスク実行完了時点である。
【００４９】
（タスク管理ＤＢ６００の記憶内容の一例）
次に、図６を用いて、タスク管理ＤＢ６００の記憶内容の一例について説明する。タスク管理ＤＢ６００は、例えば、図３に示したタスク配備装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００５０】
図６は、タスク管理ＤＢ６００の記憶内容の一例を示す説明図である。図６に示すように、タスク管理ＤＢ６００は、タスクＩＤのフィールドに対応付けて、データＩＤのフィールドを有する。タスク管理ＤＢ６００は、各フィールドに情報を設定することにより、タスク管理情報がレコードとして記憶される。
【００５１】
タスクＩＤのフィールドは、タスクＩＤが設定される。タスクＩＤは、タスクを特定するＩＤである。データＩＤのフィールドは、データＩＤが設定される。データＩＤは、タスクＩＤに対応するタスクが用いる処理対象データを特定するＩＤである。
【００５２】
（データ管理ＤＢ７００の記憶内容の一例）
次に、図７を用いて、データ管理ＤＢ７００の記憶内容の一例について説明する。データ管理ＤＢ７００は、例えば、図３に示したタスク配備装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００５３】
図７は、データ管理ＤＢ７００の記憶内容の一例を示す説明図である。図７に示すように、データ管理ＤＢ７００は、データＩＤのフィールドに対応付けて、データのフィールドを有する。データ管理ＤＢ７００は、各フィールドに情報を設定することにより、データがレコードとして記憶される。
【００５４】
データＩＤのフィールドは、データＩＤが設定される。データＩＤは、処理対象データになりうる、データ生成装置２０１からデータ受信ノード２０２を介して受信した入力データを特定するＩＤである。データのフィールドは、データＩＤが示す入力データが設定される。データのフィールドは、例えば、データ生成装置２０１からデータ受信ノード２０２を介して受信した入力データが設定される。
【００５５】
（データ生成装置２０１のハードウェア構成例）
データ生成装置２０１のハードウェア構成例は、例えば、図３に示したタスク配備装置１００のハードウェア構成例と同様であるため、説明を省略する。データ生成装置２０１は、さらに、撮像素子やセンサなどを有してもよい。センサは、例えば、加速度センサや角速度センサ、磁気センサ、振動センサなどである。
【００５６】
（データ受信ノード２０２のハードウェア構成例）
データ受信ノード２０２のハードウェア構成例は、例えば、図３に示したタスク配備装置１００のハードウェア構成例と同様であるため、説明を省略する。
【００５７】
（タスク実行ノード１１０のハードウェア構成例）
次に、図８を用いて、タスク実行ノード１１０のハードウェア構成例について説明する。
【００５８】
図８は、タスク実行ノード１１０のハードウェア構成例を示すブロック図である。図８において、タスク実行ノード１１０は、１以上のＣＰＵ８０１と、メモリ８０２と、ネットワークＩ／Ｆ８０３と、記録媒体Ｉ／Ｆ８０４と、記録媒体８０５とを有する。また、各構成部は、バス８００によってそれぞれ接続される。
【００５９】
ここで、ＣＰＵ８０１は、タスク実行ノード１１０の全体の制御を司る。メモリ８０２は、例えば、ＲＯＭ、ＲＡＭおよびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ８０１のワークエリアとして使用される。メモリ８０２に記憶されるプログラムは、ＣＰＵ８０１にロードされることで、コーディングされている処理をＣＰＵ８０１に実行させる。メモリ８０２は、図９〜図１１に後述する各種ＤＢを記憶する。
【００６０】
ネットワークＩ／Ｆ８０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ８０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ８０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００６１】
記録媒体Ｉ／Ｆ８０４は、ＣＰＵ８０１の制御に従って記録媒体８０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ８０４は、例えば、ディスクドライブ、ＳＳＤ、ＵＳＢポートなどである。記録媒体８０５は、記録媒体Ｉ／Ｆ８０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体８０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体８０５は、タスク実行ノード１１０から着脱可能であってもよい。
【００６２】
タスク実行ノード１１０は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、タスク実行ノード１１０は、記録媒体Ｉ／Ｆ８０４や記録媒体８０５を有していなくてもよい。
【００６３】
（キュー状態ＤＢ９００の記憶内容の一例）
次に、図９を用いて、キュー状態ＤＢ９００の記憶内容の一例について説明する。キュー状態ＤＢ９００は、例えば、図８に示したタスク実行ノード１１０のメモリ８０２や記録媒体８０５などの記憶領域により実現される。
【００６４】
図９は、キュー状態ＤＢ９００の記憶内容の一例を示す説明図である。図９に示すように、キュー状態ＤＢ９００は、タスク実行ノードＩＤのフィールドに対応付けて、既存タスク数と、平均処理実行速度とのフィールドを有する。キュー状態ＤＢ９００は、各フィールドに情報を設定することにより、キュー状態がレコードとして記憶される。
【００６５】
タスク実行ノードＩＤのフィールドは、タスク実行ノードＩＤが設定される。タスク実行ノードＩＤは、キュー状態ＤＢ９００を記憶するタスク実行ノード１１０を特定するＩＤである。タスク実行ノードＩＤは、例えば、Ｘである。Ｘは、１〜ｋの整数である。ｋは、タスク配備システム２００におけるタスク実行ノード１１０の数である。
【００６６】
既存タスク数のフィールドは、既存タスク数が設定される。既存タスク数は、タスク実行ノードＩＤが示すタスク実行ノード１１０が有する、図１０に後述するタスク実行キュー１０００の先頭から空きまでの既存タスク数である。平均処理実行速度のフィールドは、平均処理実行速度が設定される。平均処理実行速度は、タスク実行ノードＩＤが示すタスク実行ノード１１０が、過去に実行した全タスクの平均処理実行速度である。
【００６７】
キュー状態ＤＢ９００は、例えば、タスク実行ノード１１０が有するＣＰＵ８０１ごとに用意される。タスク実行ノード１１０は、例えば、ＣＰＵ８０１ごとに、実行するタスクを格納するタスク実行キュー１０００を管理するキュー状態ＤＢ９００を記憶する。タスク実行ノード１１０は、１以上のＣＰＵ８０１が分担して実行するタスクを格納するタスク実行キュー１０００を管理する、１つのキュー状態ＤＢ９００を記憶してもよい。
【００６８】
（タスク実行キュー１０００の記憶内容の一例）
次に、図１０を用いて、タスク実行キュー１０００の記憶内容の一例について説明する。タスク実行キュー１０００は、例えば、図８に示したタスク実行ノード１１０のメモリ８０２や記録媒体８０５などの記憶領域により実現される。
【００６９】
図１０は、タスク実行キュー１０００の記憶内容の一例を示す説明図である。図１０に示すように、タスク実行キュー１０００は、キューＩＤのフィールドに対応付けて、タスクＩＤと、データＩＤとのフィールドを有する。タスク実行キュー１０００は、各フィールドに情報を設定することにより、タスク配備情報がレコードとして記憶される。
【００７０】
キューＩＤのフィールドは、キューＩＤが設定される。キューＩＤは、タスク実行キュー１０００に格納されたタスクの実行順序を管理するためのＩＤである。キューＩＤは、例えば、Ｉである。Ｉは、１〜Ｑの整数である。Ｑは、例えば、タスク実行キュー１０００に格納可能なタスク数である。
【００７１】
タスクＩＤのフィールドは、タスクＩＤが設定される。タスクＩＤは、タスク実行キュー１０００に格納されたタスクを特定するＩＤである。タスクＩＤは、例えば、タスクの種別を特定するＩＤである。タスクの種別は、アイドルタスクを含む。データＩＤのフィールドは、タスクＩＤに対応するタスクが用いる処理対象データを特定するデータＩＤが設定される。データＩＤは、タスクＩＤがアイドルタスクを示す場合には、ＮＵＬＬである。
【００７２】
タスク実行キュー１０００は、例えば、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）である。タスク実行キュー１０００は、例えば、タスク実行ノード１１０が有するＣＰＵ８０１ごとに用意される。タスク実行ノード１１０は、例えば、ＣＰＵ８０１ごとに実行するタスクを格納するタスク実行キュー１０００を記憶する。タスク実行キュー１０００は、１以上のＣＰＵ８０１が分担して実行するタスクを格納する、１つのタスク実行キュー１０００を記憶してもよい。
【００７３】
（データ管理ＤＢ１１００の記憶内容の一例）
次に、図１１を用いて、データ管理ＤＢ１１００の記憶内容の一例について説明する。データ管理ＤＢ１１００は、例えば、図８に示したタスク実行ノード１１０のメモリ８０２や記録媒体８０５などの記憶領域により実現される。
【００７４】
図１１は、データ管理ＤＢ１１００の記憶内容の一例を示す説明図である。図１１に示すように、データ管理ＤＢ１１００は、データＩＤのフィールドに対応付けて、データのフィールドを有する。データ管理ＤＢ１１００は、各フィールドに情報を設定することにより、データがレコードとして記憶される。
【００７５】
データＩＤのフィールドは、データＩＤが設定される。データＩＤは、処理対象データになりうる、データ生成装置２０１からデータ受信ノード２０２を介して受信した入力データを特定するＩＤである。データのフィールドは、データＩＤが示す入力データが設定される。データのフィールドは、例えば、データ生成装置２０１からデータ受信ノード２０２を介して受信した入力データが設定される。
【００７６】
（データ配信ノード２０３のハードウェア構成例）
データ配信ノード２０３のハードウェア構成例は、例えば、図３に示したタスク配備装置１００のハードウェア構成例と同様であるため、説明を省略する。
【００７７】
（クライアント装置２０４のハードウェア構成例）
クライアント装置２０４のハードウェア構成例は、例えば、図３に示したタスク配備装置１００のハードウェア構成例と同様であるため、説明を省略する。
【００７８】
（利用者ＤＢ１２００の記憶内容の一例）
次に、図１２を用いて、利用者ＤＢ１２００の記憶内容の一例について説明する。利用者ＤＢ１２００は、例えば、図３に示したタスク配備装置１００のメモリ８０２や記録媒体８０５など、または、図８に示したタスク実行ノード１１０のメモリ８０２や記録媒体８０５などにより実現される。
【００７９】
図１２は、利用者ＤＢ１２００の記憶内容の一例を示す説明図である。図１２に示すように、利用者ＤＢ１２００は、利用者ＩＤのフィールドに対応付けて、要求時間のフィールドを有する。利用者ＤＢ１２００は、各フィールドに情報を設定することにより、利用者情報がレコードとして記憶される。
【００８０】
利用者ＩＤのフィールドは、利用者ＩＤが設定される。利用者ＩＤは、タスクの実行要求を送信したクライアント装置２０４の利用者を特定するＩＤである。要求時間のフィールドは、要求時間が設定される。要求時間は、タスクの実行結果を受信する期限を示すデッドラインである。利用者ＤＢ１２００は、データ配信ノード２０３またはクライアント装置２０４が有してもよい。
【００８１】
（タスク配備装置１００とタスク実行ノード１１０との機能的構成例）
次に、図１３を用いて、タスク配備装置１００とタスク実行ノード１１０との機能的構成例について説明する。
【００８２】
図１３は、タスク配備装置１００とタスク実行ノード１１０との機能的構成例を示すブロック図である。タスク配備装置１００は、第１の記憶部１３０１と、第１の取得部１３０２と、追加部１３０３と、受付部１３０４と、算出部１３０５と、決定部１３０６と、置換部１３０７と、第１の出力部１３０８とを含む。
【００８３】
第１の記憶部１３０１は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域によって実現される。第１の取得部１３０２〜第１の出力部１３０８は、制御部となる機能である。第１の取得部１３０２〜第１の出力部１３０８は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００８４】
第１の記憶部１３０１は、１以上のノード１１０を管理する情報を記憶する。ノード１１０は、例えば、図８に示したタスク実行ノード１１０である。第１の記憶部１３０１は、例えば、図４に示したタスク実行ノード管理ＤＢ４００を記憶する。第１の記憶部１３０１は、タスク実行ノード１１０に実行させる処理の実行完了時点を記憶する。処理は、例えば、タスクである。第１の記憶部１３０１は、例えば、図５に示したオファー情報ＤＢ５００を記憶する。
【００８５】
第１の記憶部１３０１は、タスクを管理する情報を記憶する。第１の記憶部１３０１は、例えば、図６に示したタスク管理ＤＢ６００を記憶する。第１の記憶部１３０１は、タスクに用いられる処理対象データを管理する情報を記憶する。第１の記憶部１３０１は、例えば、図７に示したデータ管理ＤＢ７００を記憶する。これにより、第１の記憶部１３０１は、各機能部の処理に各種ＤＢの記憶内容を参照させることができる。
【００８６】
第１の取得部１３０２は、所定の間隔で、１以上のタスク実行ノード１１０のいずれかのタスク実行ノード１１０に含まれる演算装置が実行するタスクが格納されるキューにおけるタスク数を取得する。演算装置は、例えば、図８に示したタスク実行ノード１１０が有するＣＰＵ８０１である。キューは、例えば、図１０に示したタスク実行キュー１０００である。
【００８７】
第１の取得部１３０２は、例えば、所定の間隔で、１以上のタスク実行ノード１１０に含まれる複数のＣＰＵ８０１からランダムに選択したＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００におけるタスク数を取得する。第１の取得部１３０２は、具体的には、所定の間隔で、ランダムに選択したＣＰＵ８０１を有するタスク実行ノード１１０からキュー状態ＤＢ９００の記憶内容を取得し、タスク実行キュー１０００におけるタスク数を取得する。これにより、第１の取得部１３０２は、所定の間隔で、ランダムに選択したＣＰＵ８０１におけるタスク数を特定することができ、ランダムに選択したＣＰＵ８０１に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
【００８８】
第１の取得部１３０２は、例えば、所定の間隔で、１以上のタスク実行ノード１１０に含まれる複数のＣＰＵ８０１のそれぞれのＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００におけるタスク数を取得してもよい。第１の取得部１３０２は、具体的には、所定の間隔で、１以上のタスク実行ノード１１０のそれぞれのタスク実行ノード１１０から、それぞれのタスク実行ノード１１０が有するＣＰＵ８０１ごとに対応するキュー状態ＤＢ９００の記憶内容を取得する。第１の取得部１３０２は、それぞれのタスク実行ノード１１０が有するＣＰＵ８０１ごとに対応するキュー状態ＤＢ９００の記憶内容から、タスク実行キュー１０００におけるタスク数を取得する。これにより、第１の取得部１３０２は、所定の間隔で、それぞれのＣＰＵ８０１におけるタスク数を特定することができ、それぞれのＣＰＵ８０１に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
【００８９】
第１の取得部１３０２は、例えば、所定の間隔で、ＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００におけるタスク数のほか、ＣＰＵ８０１におけるタスク実行速度を取得してもよい。第１の取得部１３０２は、具体的には、所定の間隔で、１以上のタスク実行ノード１１０のそれぞれのタスク実行ノード１１０から、それぞれのタスク実行ノード１１０が有するＣＰＵ８０１ごとに対応するキュー状態ＤＢ９００の記憶内容を取得する。第１の取得部１３０２は、それぞれのタスク実行ノード１１０が有するＣＰＵ８０１ごとに対応するキュー状態ＤＢ９００の記憶内容から、タスク実行キュー１０００におけるタスク数を取得する。これにより、第１の取得部１３０２は、所定の間隔で、ＣＰＵ８０１に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
【００９０】
追加部１３０３は、ＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００におけるタスク数を取得した際、ＣＰＵ８０１を含むタスク実行ノード１１０に、タスク実行キュー１０００に対してダミーのタスクを追加させる。ダミーのタスクは、例えば、アイドルタスクである。追加部１３０３は、例えば、ＣＰＵ８０１を含むタスク実行ノード１１０に、タスク実行キュー１０００に対してアイドルタスクを追加させる実行順序確保依頼を送信する。これにより、追加部１３０３は、今後新たなタスクが生成された場合に、新たなタスクと入れ替えることができるアイドルタスクを、タスク実行キュー１０００に追加しておくことができる。
【００９１】
追加部１３０３は、複数のＣＰＵ８０１のうち相対的に小さいタスク数を取得したＣＰＵ８０１を含むタスク実行ノード１１０に、タスク実行キュー１０００に対してアイドルタスクを追加させる。追加部１３０３は、例えば、相対的に小さいタスクを取得したＣＰＵ８０１を含むタスク実行ノード１１０に、タスク実行キュー１０００に対してアイドルタスクを追加させる実行順序確保依頼を送信する。これにより、追加部１３０３は、今後新たなタスクが生成された場合に、新たなタスクと入れ替えることができるアイドルタスクを、タスク実行キュー１０００に追加しておくことができる。
【００９２】
受付部１３０４は、新たなタスクの実行要求を受け付ける。新たなタスクの実行要求は、新たなタスクの実行結果の送信期限を含む。送信期限は、デッドラインである。受付部１３０４は、例えば、データ生成装置２０１の処理対象データを用いる新たなタスクを生成した場合に、新たなタスクの実行結果の送信先になるクライアント装置２０４から、デッドラインを含む実行要求を受信する。
【００９３】
算出部１３０５は、第１の取得部１３０２が取得したＣＰＵ８０１についてのタスク数と、ＣＰＵ８０１におけるタスク実行速度とに基づいて、ＣＰＵ８０１に新たなタスクを実行させる場合における新たなタスクの実行完了時点を、ＣＰＵ８０１ごとに算出する。算出部１３０５は、例えば、ＣＰＵ８０１についてのタスク数と、ＣＰＵ８０１におけるタスク実行速度とを乗算したタスク実行完了時間の分、現時点から経過した後の時点を、新たなタスクの実行完了時点として、ＣＰＵ８０１ごとに算出する。これにより、算出部１３０５は、新たなタスクをいずれのＣＰＵ８０１に実行させるかを決定する指標として、新たなタスクの実行完了時点を算出することができる。
【００９４】
算出部１３０５は、第１の取得部１３０２が取得したＣＰＵ８０１についてのタスク数と、新たなタスクの種別に対応するタスク実行速度とに基づいて、新たなタスクの実行完了時点を、ＣＰＵ８０１ごとに算出してもよい。算出部１３０５は、例えば、実行要求を受け付けたことに応じて、ＣＰＵ８０１に新たなタスクを実行させる場合における新たなタスクの実行完了時点を、ＣＰＵ８０１ごとに算出する。これにより、算出部１３０５は、新たなタスクをいずれのＣＰＵ８０１に実行させるかを決定する指標として、新たなタスクの実行完了時点を算出することができる。
【００９５】
決定部１３０６は、ＣＰＵ８０１ごとに算出した実行完了時点に基づいて、新たなタスクを実行させるＣＰＵ８０１を、１以上のタスク実行ノード１１０のいずれかのタスク実行ノード１１０に含まれるＣＰＵ８０１に決定する。
【００９６】
決定部１３０６は、例えば、新たなタスクを実行させるＣＰＵ８０１を、算出した実行完了時点が、受け付けた実行要求に含まれる送信期限より前になるＣＰＵ８０１に決定する。これにより、決定部１３０６は、新たなタスクが送信期限までに実行完了する確率を向上させることができる。
【００９７】
決定部１３０６は、新たなタスクを実行させるＣＰＵ８０１を、算出した実行完了時点が現時点に最も近くなるＣＰＵ８０１に決定する。これにより、決定部１３０６は、新たなタスクが送信期限までに実行完了する確率を向上させることができる。
【００９８】
置換部１３０７は、新たなタスクを実行させるＣＰＵ８０１を決定した場合、新たなタスクを実行させるＣＰＵ８０１を含むタスク実行ノード１１０に、タスク実行キュー１０００に追加されたアイドルタスクを、新たなタスクに置換させる。置換部１３０７は、例えば、新たなタスクを実行させるＣＰＵ８０１を決定した場合、新たなタスクを実行させるＣＰＵ８０１を含むタスク実行ノード１１０に、置換要求を送信する。これにより、置換部１３０７は、タスク実行ノード１１０に新たなタスクを実行させることができる。
【００９９】
第１の出力部１３０８は、タスク実行ノード１１０に実行させた新たなタスクの実行結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ３０３による外部装置への送信、または、メモリ３０２や記録媒体３０５などの記憶領域への記憶である。外部装置は、例えば、タスク実行ノード１１０に実行させた新たな処理の実行要求の送信元であるクライアント装置２０４である。第１の出力部１３０８は、各機能部の処理結果を出力してもよい。
【０１００】
一方で、タスク実行ノード１１０は、第２の記憶部１３１０と、第２の取得部１３１１と、実行部１３１２と、第２の出力部１３１３とを含む。
【０１０１】
第２の記憶部１３１０は、例えば、図８に示したメモリ８０２や記録媒体８０５などの記憶領域によって実現される。第２の取得部１３１１〜第２の出力部１３１３は、制御部となる機能である。第２の取得部１３１１〜第２の出力部１３１３は、具体的には、例えば、図８に示したメモリ８０２や記録媒体８０５などの記憶領域に記憶されたプログラムをＣＰＵ８０１に実行させることにより、または、ネットワークＩ／Ｆ８０３により、その機能を実現する。各機能部の処理結果は、例えば、図８に示したメモリ８０２や記録媒体８０５などの記憶領域に記憶される。
【０１０２】
第２の記憶部１３１０は、実行するタスクを管理する情報を記憶する。第２の記憶部１３１０は、例えば、図９に示したキュー状態ＤＢ９００を記憶する。第２の記憶部１３１０は、実行するタスクを記憶する。第２の記憶部１３１０は、例えば、図１０に示したタスク実行キュー１０００を記憶する。第２の記憶部１３１０は、タスクが用いる処理対象データを記憶する。第２の記憶部１３１０は、例えば、図１１に示したデータ管理ＤＢ１１００を記憶する。これにより、第２の記憶部１３１０は、各機能部に各種ＤＢの記憶内容を参照させることができる。
【０１０３】
第２の取得部１３１１は、アイドルタスクをタスク実行キュー１０００に追加する実行順序確保依頼を取得する。第２の取得部１３１１は、実行順序確保依頼をタスク配備装置１００から受信する。これにより、第２の取得部１３１１は、タスク実行キュー１０００に、今後生成される新たなタスクの実行順序を確保することができる。
【０１０４】
第２の取得部１３１１は、タスク実行キュー１０００のアイドルタスクを新たなタスクに置換する置換要求を取得する。第２の取得部１３１１は、例えば、置換要求をタスク配備装置１００から受信する。これにより、第２の取得部１３１１は、確保しておいた実行順序で、新たなタスクを実行することができる。
【０１０５】
実行部１３１２は、タスク実行キュー１０００のタスクを取り出して実行する。実行部１３１２は、タスク実行キュー１０００のタスクを取り出し、取り出したタスクを実行完了してから、タスク実行キュー１０００から次のタスクを取り出す。これにより、実行部１３１２は、タスクの実行順序を確保することができる。
【０１０６】
実行部１３１２は、第２の取得部１３１１が実行順序確保依頼を取得した場合、アイドルタスクをタスク実行キュー１０００に追加する。これにより、実行部１３１２は、タスク実行キュー１０００に、今後生成される新たなタスクの実行順序を確保することができる。
【０１０７】
実行部１３１２は、第２の取得部１３１１が置換要求を取得した場合、タスク実行ノード１１０のアイドルタスクを新たなタスクと置換する。これにより、第２の取得部１３１１は、確保しておいた実行順序で、新たなタスクを実行することができる。
【０１０８】
第２の出力部１３１３は、タスク配備装置１００からの問い合わせに応じて、キュー状態ＤＢ９００の記憶内容を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ８０３による外部装置への送信、または、メモリ８０２や記録媒体８０５などの記憶領域への記憶である。外部装置は、例えば、タスク配備装置１００である。第２の出力部１３１３は、タスク配備装置１００からの実行要求に応じて、実行部１３１２の実行結果を出力してもよい。第２の出力部１３１３は、各機能部の処理結果を出力してもよい。
【０１０９】
（タスク配備装置１００とタスク実行ノード１１０との具体的な機能的構成例）
次に、図１４を用いて、タスク配備装置１００とタスク実行ノード１１０との具体的な機能的構成例について説明する。
【０１１０】
図１４は、タスク配備装置１００とタスク実行ノード１１０との具体的な機能的構成例を示す説明図である。タスク配備装置１００は、図４に示したタスク実行ノード管理ＤＢ４００と、図５に示したオファー情報ＤＢ５００と、図６に示したタスク管理ＤＢ６００と、図７に示したデータ管理ＤＢ７００とを有する。
【０１１１】
タスク配備装置１００は、タスク実行ノード選択部１４０１と、分散リソース管理部１４０２と、タスク実行完了時点見積もり部１４０３と、オファー管理部１４０５と、タスク管理部１４０６と、タスク配備場所決定部１４０７とを有する。
【０１１２】
一方で、タスク実行ノード１１０は、図９に示したキュー状態ＤＢ９００と、図１０に示したタスク実行キュー１０００と、図１１に示したデータ管理ＤＢ１１００とを有する。タスク実行ノード１１０は、実行順序制御部１４０４と、タスク実行部１４０８とを有する。
【０１１３】
タスク実行ノード選択部１４０１は、タスク実行ノード管理ＤＢ４００を参照し、タスク実行キュー１０００におけるタスク数を問い合わせるタスク実行ノード１１０を選択する。タスク実行ノード選択部１４０１は、選択したタスク実行ノード１１０を、分散リソース管理部１４０２に出力する。
【０１１４】
分散リソース管理部１４０２は、選択したタスク実行ノード１１０に、タスク実行ノード１１０のいずれかのＣＰＵ８０１に対応するタスク実行キュー１０００におけるタスク数の問い合わせを送信する。そして、分散リソース管理部１４０２は、キュー状態ＤＢ９００の記憶内容を示す第１０のメッセージＭ１０を受信する。第１０のメッセージＭ１０の一例は、例えば、図２４に後述する。
【０１１５】
分散リソース管理部１４０２は、タスク実行完了時点見積もり部１４０３に、選択したタスク実行ノード１１０のいずれかのＣＰＵ８０１に新たなタスクを実行させた場合におけるタスク実行完了時点を算出させる。分散リソース管理部１４０２は、タスク実行完了時点をタスク実行完了時点見積もり部１４０３から受け付け、オファー管理部１４０５に出力する。
【０１１６】
分散リソース管理部１４０２は、タスク実行完了時点に基づいて、いずれかのＣＰＵ８０１を有するタスク実行ノード１１０の実行順序制御部１４０４に、実行順序確保依頼として、第１１のメッセージＭ１１を送信する。実行順序確保依頼は、いずれかのＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００にアイドルタスクを追加させる依頼である。第１１のメッセージＭ１１の一例は、例えば、図２５に後述する。
【０１１７】
また、分散リソース管理部１４０２は、アイドルタスクを削除させる削除要求として、第１２のメッセージＭ１２を送信する。第１２のメッセージＭ１２の一例は、例えば、図２６に後述する。これにより、分散リソース管理部１４０２は、新たなタスクの実行順序を確保しておくことができる。また、分散リソース管理部１４０２は、新たなタスクと置換しないアイドルタスクを、タスク実行キュー１０００から削除させることができる。
【０１１８】
タスク実行完了時点見積もり部１４０３は、いずれかのＣＰＵ８０１に新たなタスクを実行させた場合におけるタスク実行完了時間を算出し、現時点からタスク実行完了時間が経過したタスク実行完了時点を算出する。タスク実行完了時点見積もり部１４０３は、タスク実行完了時点を、分散リソース管理部１４０２に出力する。
【０１１９】
オファー管理部１４０５は、タスク実行完了時点を含むオファー情報を、オファー情報ＤＢ５００を用いて記憶する。これにより、オファー管理部１４０５は、新たなタスクを実行可能なタスク実行ノード１１０のＣＰＵ８０１を管理し、新たなタスクをタスク実行ノード１１０のＣＰＵ８０１に実行させた場合のタスク実行完了時点を管理することができる。
【０１２０】
データ生成装置２０１は、入力データとして、第１のメッセージＭ１をデータ受信ノード２０２に送信する。第１のメッセージＭ１は、例えば、図１５に後述する。データ受信ノード２０２は、第１のメッセージＭ１を、第２のメッセージＭ２としてタスク管理部１４０６に転送する。
【０１２１】
実行順序制御部１４０４は、実行順序確保依頼として、第１１のメッセージＭ１１を受信すると、タスク実行キュー１０００にアイドルタスクを追加する。実行順序制御部１４０４は、削除要求として、第１２のメッセージＭ１２を受信すると、タスク実行キュー１０００のアイドルタスクを削除する。実行順序制御部１４０４は、タスク実行キュー１０００のアイドルタスクを新たなタスクに置き換える置換要求として、第３のメッセージＭ３を受信すると、タスク実行キュー１０００のアイドルタスクを新たなタスクに置き換える。第３のメッセージＭ３の一例は、例えば、図１７に後述する。
【０１２２】
タスク管理部１４０６は、入力データを、データ受信ノード２０２から受信する。タスク管理部１４０６は、入力データを、データ管理ＤＢ７００を用いて記憶する。タスク管理部１４０６は、入力データに基づいて、新たなタスクを生成する。タスク管理部１４０６は、新たなタスクについてのタスク管理情報を、タスク管理ＤＢ６００を用いて記憶する。タスク管理部１４０６は、新たなタスクを生成すると、タスク配備場所決定部１４０７に、新たなタスクの配備場所の決定依頼を送信する。
【０１２３】
タスク配備場所決定部１４０７は、オファー情報ＤＢ５００を参照し、新たなタスクの配備場所を決定する。タスク配備場所決定部１４０７は、例えば、応答遅延最小化のアルゴリズムにしたがって、タスク実行完了時点が現時点に最も近くなるＣＰＵ８０１を、配備場所に決定する。タスク配備場所決定部１４０７は、例えば、利用者ＤＢ１２００を参照し、デッドライン充足率最大化のアルゴリズムにしたがって、タスク実行完了時点がデッドラインよりも前になるＣＰＵ８０１を、配備場所に決定してもよい。タスク配備場所決定部１４０７は、利用者ＤＢ１２００を参照し、応答遅延最小化のアルゴリズムと、デッドライン充足率最大化のアルゴリズムとを使い分けてもよい。
【０１２４】
タスク実行部１４０８は、タスク実行キュー１０００から順にタスク管理情報を取り出し、データ管理ＤＢ１１００を参照してタスクを実行する。タスク実行部１４０８は、ＣＰＵ８０１を用いて、タスクの実行結果として、第４のメッセージＭ４をタスク管理部１４０６に送信する。第４のメッセージＭ４の一例は、例えば、図１８に後述する。
【０１２５】
データ配信ノード２０３は、タスク管理部１４０６から、第５のメッセージＭ５として、タスク実行部１４０８からの第４のメッセージＭ４を転送される。第５のメッセージＭ５の一例は、例えば、図１９に後述する。データ配信ノード２０３は、利用者ＤＢ１２００から、利用者情報として、第６のメッセージを取得し、タスク管理部１４０６に送信する。第６のメッセージＭ６の一例は、例えば、図２０に後述する。データ配信ノード２０３は、第７のメッセージＭ７として、タスク管理部１４０６から受信した第５のメッセージＭ５を、クライアント装置２０４に送信する。第７のメッセージＭ７の一例は、例えば、図２１に後述する。
【０１２６】
クライアント装置２０４は、タスクの実行結果として、第７のメッセージＭ７を受信する。クライアント装置２０４は、利用者の操作入力によって、タスクに対するデッドラインを受け付ける。クライアント装置２０４は、デッドラインを示す第８のメッセージＭ８を、利用者ＤＢ１２００に入力する。第８のメッセージＭ８は、例えば、図２２に後述する。利用者ＤＢ１２００の利用者情報は、第９のメッセージＭ９として、タスク配備場所決定部１４０７に入力される。第９のメッセージＭ９は、例えば、図２３に後述する。
【０１２７】
（第１のメッセージＭ１の一例）
ここで、図１５〜図２６を用いて、図１４に示したタスク配備装置１００の各部と、タスク実行ノード１１０の各部との間において送受信される、各種メッセージの一例について説明する。まず、図１５を用いて、第１のメッセージＭ１の一例について説明する。
【０１２８】
図１５は、第１のメッセージＭ１の一例を示す説明図である。図１５に示すように、第１のメッセージＭ１は、例えば、送信元アドレスと、宛先アドレスと、入力データとを含む。入力データは、フォーマットが任意であるデータである。第１のメッセージＭ１は、データ生成装置２０１からデータ受信ノード２０２に送信される。
【０１２９】
（第２のメッセージＭ２の一例）
次に、図１６を用いて、第２のメッセージＭ２の一例について説明する。
【０１３０】
図１６は、第２のメッセージＭ２の一例を示す説明図である。図１６に示すように、第２のメッセージＭ２は、例えば、送信元アドレスと、宛先アドレスと、入力データとを含む。入力データは、フォーマットが任意であるデータである。第２のメッセージＭ２は、データ受信ノード２０２からタスク配備装置１００に送信される。
【０１３１】
（第３のメッセージＭ３の一例）
次に、図１７を用いて、第３のメッセージＭ３の一例について説明する。
【０１３２】
図１７は、第３のメッセージＭ３の一例を示す説明図である。図１７に示すように、第３のメッセージＭ３は、送信元アドレスと、宛先アドレスと、タスクＩＤと、処理対象データとを含む。タスクＩＤは、タスク実行ノード１１０に実行させるタスクを特定するＩＤである。処理対象データは、フォーマットが任意であるデータである。第３のメッセージＭ３は、タスク配備装置１００からタスク実行ノード１１０に送信される。
【０１３３】
（第４のメッセージＭ４の一例）
次に、図１８を用いて、第４のメッセージＭ４の一例について説明する。
【０１３４】
図１８は、第４のメッセージＭ４の一例を示す説明図である。図１８に示すように、第４のメッセージＭ４は、送信元アドレスと、宛先アドレスと、タスクＩＤと、実行結果データとを含む。タスクＩＤは、タスク実行ノード１１０に実行させるタスクを特定するＩＤである。実行結果データは、フォーマットが任意であるデータである。第４のメッセージＭ４は、タスク実行ノード１１０からタスク配備装置１００に送信される。
【０１３５】
（第５のメッセージＭ５の一例）
次に、図１９を用いて、第５のメッセージＭ５の一例について説明する。
【０１３６】
図１９は、第５のメッセージＭ５の一例を示す説明図である。図１９に示すように、第５のメッセージＭ５は、送信元アドレスと、宛先アドレスと、タスクＩＤと、実行結果データとを含む。タスクＩＤは、タスク実行ノード１１０に実行させるタスクを特定するＩＤである。実行結果データは、フォーマットが任意であるデータである。第５のメッセージＭ５は、タスク管理部１４０６からデータ配信ノード２０３に送信される。
【０１３７】
（第６のメッセージＭ６の一例）
次に、図２０を用いて、第６のメッセージＭ６の一例について説明する。
【０１３８】
図２０は、第６のメッセージＭ６の一例を示す説明図である。図２０に示すように、第６のメッセージＭ６は、送信元アドレスと、宛先アドレスと、タスクＩＤと、利用者アドレスとを含む。タスクＩＤは、タスク実行ノード１１０に実行させるタスクを特定するＩＤである。利用者アドレスは、タスクの実行結果を送信するクライアント装置２０４を示すアドレスである。第６のメッセージＭ６は、利用者ＤＢ１２００からデータ配信ノード２０３に取得される。
【０１３９】
（第７のメッセージＭ７の一例）
次に、図２１を用いて、第７のメッセージＭ７の一例について説明する。
【０１４０】
図２１は、第７のメッセージＭ７の一例を示す説明図である。図２１に示すように、第７のメッセージＭ７は、送信元アドレスと、宛先アドレスと、タスクＩＤと、実行結果データとを含む。タスクＩＤは、タスク実行ノード１１０に実行させるタスクを特定するＩＤである。実行結果データは、フォーマットが任意であるデータである。第７のメッセージＭ７は、データ配信ノード２０３からクライアント装置２０４に送信される。
【０１４１】
（第８のメッセージＭ８の一例）
次に、図２２を用いて、第８のメッセージＭ８の一例について説明する。
【０１４２】
図２２は、第８のメッセージＭ８の一例を示す説明図である。図２２に示すように、第８のメッセージＭ８は、送信元アドレスと、宛先アドレスと、タスクＩＤと、制約条件とを含む。タスクＩＤは、タスク実行ノード１１０に実行させるタスクを特定するＩＤである。
【０１４３】
制約条件は、例えば、要求アルゴリズムと、要求時間とを含む。要求アルゴリズムは、デッドライン充足率最大化、または、応答遅延最小化である。デッドライン充足率最大化は、タスクをデッドラインまでに実行完了可能なＣＰＵ８０１に、タスクを割り当てるアルゴリズムである。応答遅延最小化は、タスクの実行完了時点が現時点に最も近く、タスクの実行完了時点が最小になるＣＰＵ８０１に、タスクを割り当てるアルゴリズムである。要求時間は、タスクの実行結果を送信する期限を示すデッドラインである。第８のメッセージＭ８は、クライアント装置２０４から利用者ＤＢ１２００に入力される。
【０１４４】
（第９のメッセージＭ９の一例）
次に、図２３を用いて、第９のメッセージＭ９の一例について説明する。
【０１４５】
図２３は、第９のメッセージＭ９の一例を示す説明図である。図２３に示すように、第９のメッセージＭ９は、送信元アドレスと、宛先アドレスと、タスクＩＤと、制約条件とを含む。タスクＩＤは、タスク実行ノード１１０に実行させるタスクを特定するＩＤである。
【０１４６】
制約条件は、例えば、要求アルゴリズムと、要求時間とを含む。要求アルゴリズムは、デッドライン充足率最大化、または、応答遅延最小化である。デッドライン充足率最大化は、タスクをデッドラインまでに実行完了可能なＣＰＵ８０１に、タスクを割り当てるアルゴリズムである。応答遅延最小化は、タスクの実行完了時点が現時点に最も近く、タスクの実行完了時点が最小になるＣＰＵ８０１に、タスクを割り当てるアルゴリズムである。要求時間は、タスクの実行結果を送信する期限を示すデッドラインである。第９のメッセージＭ９は、利用者ＤＢ１２００からタスク配備装置１００に入力される。
【０１４７】
（第１０のメッセージＭ１０の一例）
次に、図２４を用いて、第１０のメッセージＭ１０の一例について説明する。
【０１４８】
図２４は、第１０のメッセージＭ１０の一例を示す説明図である。図２４に示すように、第１０のメッセージＭ１０は、送信元アドレスと、宛先アドレスと、キュー状態とを含む。キュー状態は、例えば、タスク実行ノードＩＤと、既存タスク数と、平均処理実行速度とを含む。タスク実行ノードＩＤは、タスク実行ノード１１０を特定するＩＤである。既存タスク数は、タスク実行ノードＩＤが示すタスク実行ノード１１０が有するタスク実行キュー１０００の先頭から空きまでの既存タスク数である。平均処理実行速度は、タスク実行ノードＩＤが示すタスク実行ノード１１０が、過去に実行した全タスクの平均処理実行速度である。第１０のメッセージＭ１０は、タスク実行ノード１１０からタスク配備装置１００に送信される。
【０１４９】
（第１１のメッセージＭ１１の一例）
次に、図２５を用いて、第１１のメッセージＭ１１の一例について説明する。
【０１５０】
図２５は、第１１のメッセージＭ１１の一例を示す説明図である。図２５に示すように、第１１のメッセージＭ１１は、送信元アドレスと、宛先アドレスと、実行順序確保とを含む。実行順序確保は、例えば、タスク実行ノードＩＤを含む。タスク実行ノードＩＤは、アイドルタスクをタスク実行キュー１０００に追加させ、今後生成されうる新たなタスクの実行順序を確保させるタスク実行ノード１１０を特定するＩＤである。第１１のメッセージＭ１１は、タスク配備装置１００からタスク実行ノード１１０に送信される。
【０１５１】
（第１２のメッセージＭ１２の一例）
次に、図２６を用いて、第１２のメッセージＭ１２の一例について説明する。
【０１５２】
図２６は、第１２のメッセージＭ１２の一例を示す説明図である。図２６に示すように、第１２のメッセージＭ１２は、送信元アドレスと、宛先アドレスと、実行順序確保とを含む。実行順序解放は、例えば、タスク実行ノードＩＤと、タスクＩＤとを含む。タスク実行ノードＩＤは、アイドルタスクをタスク実行キュー１０００に追加させたタスク実行ノード１１０を特定するＩＤである。タスクＩＤは、タスク実行キュー１０００から削除するアイドルタスクを特定するＩＤである。第１２のメッセージＭ１２は、タスク配備装置１００からタスク実行ノード１１０に送信される。
【０１５３】
（タスクの配備場所を決定する流れ）
次に、図２７を用いて、タスクの配備場所を決定する流れについて説明する。
【０１５４】
図２７は、タスクの配備場所を決定する流れを示す説明図である。図２７において、（２７−１）分散リソース管理部１４０２は、タスク実行ノード１１０のＣＰＵ８０１が実行するタスクが格納されたタスク実行キュー１０００における現在のタスク数を、タスク実行ノード１１０が発行したオファーとして受信する。
【０１５５】
（２７−２）分散リソース管理部１４０２は、タスク実行ノード１１０のＣＰＵ８０１が実行するタスクが格納されたタスク実行キュー１０００にアイドルタスクを追加させる実行順序確保依頼を、タスク実行ノード１１０に送信する。これにより、分散リソース管理部１４０２は、タスク実行ノード１１０のＣＰＵ８０１が実行するタスクが格納されたタスク実行キュー１０００に、今後生成されうる新たなタスクと置換可能なアイドルタスクを追加させることができる。分散リソース管理部１４０２は、今後生成されうる新たなタスクの実行順序を確保しておくことができる。
【０１５６】
（２７−３）分散リソース管理部１４０２は、タスク数に基づくタスク実行完了時点を含む、タスク実行ノード１１０が発行したオファーについてのオファー情報を、タスク配備場所決定部１４０７に送信する。
【０１５７】
（２７−４）タスク配備場所決定部１４０７は、分散リソース管理部１４０２からオファー情報を受信する。タスク配備場所決定部１４０７は、新たなタスクが生成されると、オファー情報に基づいて、新たなタスクの配備場所になるＣＰＵ８０１を決定する。タスク配備場所決定部１４０７は、決定したＣＰＵ８０１を有するタスク実行ノード１１０に、新たなタスクの実行要求を送信する。
【０１５８】
（２７−５）タスク実行ノード１１０は、実行要求を受信すると、タスク実行キュー１０００のアイドルタスクを新たなタスクに置換する。タスク実行ノード１１０は、タスク実行キュー１０００のタスクを順に取り出して実行する。タスク実行ノード１１０は、タスクの実行結果を、タスク配備装置１００に送信する。これにより、タスク配備装置１００は、所定の期限までにタスクが実行完了するようなＣＰＵに、新たなタスクを配備することができる。
【０１５９】
ここで、例えば、タスク実行ノード１１０が１つのＣＰＵ８０１を有し、タスク配備装置１００がオファーの発行元としてタスク実行ノード１１０をランダムに選択し、タスクの処理量は一様である場合がある。この場合については、後述する実施例１に対応する。
【０１６０】
また、例えば、タスク実行ノード１１０が１つのＣＰＵ８０１を有し、タスク配備装置１００がオファーの発行元としてタスク数が相対的に小さいタスク実行ノード１１０を選択し、タスクの処理量は一様である場合がある。この場合については、後述する実施例２に対応する。
【０１６１】
また、例えば、タスク実行ノード１１０が１つのＣＰＵ８０１を有し、タスク配備装置１００がオファーの発行元としてタスク実行ノード１１０をランダムに選択し、タスクの処理量が一様ではない場合がある。この場合については、後述する実施例３に対応する。
【０１６２】
また、例えば、タスク実行ノード１１０が複数のＣＰＵ８０１を有し、タスク配備装置１００がオファーの発行元としてタスク実行ノード１１０をランダムに選択し、タスクの処理量は一様である場合がある。この場合については、後述する実施例４に対応する。
【０１６３】
（配備場所を決定する実施例１）
次に、図２８〜図３１を用いて、配備場所を決定する実施例１について説明する。
【０１６４】
図２８〜図３１は、配備場所を決定する実施例１を示す説明図である。図２８において、分散リソース管理部１４０２は、タスク実行ノード管理ＤＢ４００を参照し、オファーの発行元としてタスク実行ノード１１０をランダムに選択する。分散リソース管理部１４０２は、タスク実行ノード１１０が有するＣＰＵ８０１が１つであるため、ＣＰＵ８０１単位で選択しなくてもよい。
【０１６５】
分散リソース管理部１４０２は、タスク実行ノード１１０Ａを選択する。分散リソース管理部１４０２は、選択したタスク実行ノード１１０Ａの実行順序制御部１４０４から、タスク実行キュー１０００に格納されたタスク２８０１，２８０２の数として、既存タスク数Ｋ＝２の通知を受け付け、キュー状態ＤＢ９００に記憶する。
【０１６６】
分散リソース管理部１４０２は、既存タスク数Ｋ＝２に１を加算し、今後生成され、タスク実行キュー１０００に追加されうる新たなタスク２８０３を含めた、タスク実行キュー１０００のタスク数Ｋ＋１＝３を算出する。分散リソース管理部１４０２は、キュー状態ＤＢ９００を参照して、タスク数Ｋ＋１と、ＣＰＵ８０１の平均処理実行速度μとに基づいて、タスク実行完了時間Ｅ＝（Ｋ＋１）／μを算出する。分散リソース管理部１４０２は、現時点からタスク実行完了時間Ｅが経過した後のタスク実行完了時点を算出する。ここで、図２９の説明に移行する。
【０１６７】
図２９において、分散リソース管理部１４０２は、実行順序確保依頼を実行順序制御部１４０４に送信する。実行順序制御部１４０４は、実行順序確保依頼を受信すると、アイドルタスク２９０１を、タスク実行キュー１０００に追加する。実行順序制御部１４０４は、例えば、アイドルタスク２９０１を特定するＩＤと、処理対象データとしてＮＵＬＬとを設定したレコードを、タスク実行キュー１０００に追加する。ここで、図３０の説明に移行する。
【０１６８】
図３０において、タスク配備場所決定部１４０７は、生成された新たなタスク３００１の配備場所を、応答遅延最小化のアルゴリズム、または、デッドライン充足率最大化のアルゴリズムにしたがって、タスク実行ノード１１０Ａに決定する。タスク配備場所決定部１４０７は、生成された新たなタスク３００１と、処理対象データとを対応付けて、タスク実行ノード１１０Ａに送信する。
【０１６９】
ここで、タスク実行ノード１１０Ａは、タスク２８０１を実行完了している。タスク実行ノード１１０Ａは、新たなタスク３００１と、処理対象データとを受信すると、タスク実行キュー１０００のアイドルタスク２９０１を、新たなタスク３００１と置換する。タスク実行ノード１１０Ａは、タスク実行キュー１０００からタスク２８０２，３００１を順に取り出して実行し、実行結果をタスク配備装置１００に送信する。これにより、新たなタスク３００１の実行結果は、タスク配備装置１００やデータ配信ノード２０３を介して、クライアント装置２０４に配信される。ここで、図３１の説明に移行する。
【０１７０】
図３１において、タスク配備場所決定部１４０７は、生成された新たなタスク３００１の配備場所を、応答遅延最小化のアルゴリズム、または、デッドライン充足率最大化のアルゴリズムにしたがって、タスク実行ノード１１０Ｂに決定する場合があってもよい。タスク配備場所決定部１４０７は、オファー辞退通知を、タスク実行ノード１１０Ａに送信する。
【０１７１】
ここで、タスク実行ノード１１０Ａは、オファー辞退通知を受信すると、タスク実行キュー１０００のアイドルタスク２９０１を削除する。これにより、タスク実行ノード１１０Ａは、アイドルタスク２９０１を実行してしまい、演算リソースや消費電力を浪費することを抑制することができる。
【０１７２】
（実施例１における分散リソース管理処理手順の一例）
次に、図３２を用いて、タスク配備装置１００によって実行される、実施例１における分散リソース管理処理手順の一例について説明する。
【０１７３】
図３２は、実施例１における分散リソース管理処理手順の一例を示すフローチャートである。図３２において、タスク配備装置１００は、タスク実行ノード管理ＤＢ４００を参照し、タスク実行ノード１１０の選択処理を実行する（ステップＳ３２０１）。次に、タスク配備装置１００は、キュー状態ＤＢ９００を参照し、タスク実行完了時点の算出処理を実行する（ステップＳ３２０２）。そして、タスク配備装置１００は、実行順序確保依頼をタスク実行ノード１１０に送信し、実行順序確保処理をタスク実行ノード１１０に実行させる（ステップＳ３２０３）。
【０１７４】
次に、タスク配備装置１００は、オファー情報を、オファー情報ＤＢ５００を用いて記憶する（ステップＳ３２０４）。そして、タスク配備装置１００は、分散リソース管理処理手順を終了する。これにより、タスク配備装置１００は、タスクを実行可能なタスク実行ノード１１０を特定可能になる。
【０１７５】
（実施例１における配備場所決定処理手順の一例）
次に、図３３を用いて、タスク配備装置１００によって実行される、実施例１における配備場所決定処理手順の一例について説明する。
【０１７６】
図３３は、実施例１における配備場所決定処理手順の一例を示すフローチャートである。図３３において、タスク配備装置１００は、ＩｏＴデータを受信する（ステップＳ３３０１）。次に、タスク配備装置１００は、受信したＩｏＴデータに基づいて、新たなタスクを生成する（ステップＳ３３０２）。そして、タスク配備装置１００は、オファー情報ＤＢ５００を参照し、生成した新たなタスクについて、タスク配備場所決定処理を実行する（ステップＳ３３０３）。
【０１７７】
次に、タスク配備装置１００は、タスク実行ノード１１０から実行結果を受信する（ステップＳ３３０４）。そして、タスク配備装置１００は、実行結果をクライアント装置２０４に送信する（ステップＳ３３０５）。その後、タスク配備装置１００は、配備場所決定処理を終了する。これにより、タスク配備装置１００は、タスク実行ノード１１０にタスクを実行させることができる。
【０１７８】
（実施例１におけるタスク実行ノード１１０の選択処理手順の一例）
次に、図３４を用いて、ステップＳ３２０１でタスク配備装置１００によって実行される、実施例１におけるタスク実行ノード１１０の選択処理手順の一例について説明する。
【０１７９】
図３４は、実施例１におけるタスク実行ノード１１０の選択処理手順の一例を示すフローチャートである。図３４において、タスク配備装置１００は、タスク実行ノード管理ＤＢ４００を参照し、タスク配備システム２００の複数のタスク実行ノード１１０のいずれかのタスク実行ノード１１０をランダムに選択する（ステップＳ３４０１）。そして、タスク配備装置１００は、タスク実行ノード１１０の選択処理を終了する。
【０１８０】
（実施例１におけるタスク実行完了時点の算出処理手順の一例）
次に、図３５を用いて、ステップＳ３２０２でタスク配備装置１００によって実行される、実施例１におけるタスク実行完了時点の算出処理の一例について説明する。
【０１８１】
図３５は、実施例１におけるタスク実行完了時点の算出処理手順の一例を示すフローチャートである。図３５において、タスク配備装置１００は、キュー状態ＤＢ９００を参照し、選択したタスク実行ノード１１０のＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００におけるタスク数Ｋを取得する（ステップＳ３５０１）。
【０１８２】
次に、タスク配備装置１００は、キュー状態ＤＢ９００を参照し、タスク数Ｋ＋１とＣＰＵ８０１の平均処理実行速度μとに基づいて、タスク実行完了時間Ｅ＝（Ｋ＋１）／μを算出し、タスク実行完了時点を算出する（ステップＳ３５０２）。そして、タスク配備装置１００は、タスク実行完了時点の算出処理を終了する。
【０１８３】
（実施例１における実行順序確保処理手順の一例）
次に、図３６を用いて、ステップＳ３２０３でタスク実行ノード１１０によって実行される、実施例１における実行順序確保処理の一例について説明する。
【０１８４】
図３６は、実施例１における実行順序確保処理手順の一例を示すフローチャートである。図３６において、タスク実行ノード１１０は、実行順序確保依頼を受信する（ステップＳ３６０１）。次に、タスク実行ノード１１０は、タスク実行キュー１０００の末尾にアイドルタスクを追加する（ステップＳ３６０２）。そして、タスク実行ノード１１０は、実行順序確保処理を終了する。
【０１８５】
（実施例１におけるタスク配備場所決定処理手順の一例）
次に、図３７を用いて、ステップＳ３３０３でタスク配備装置１００によって実行される、実施例１におけるタスク配備場所決定処理の一例について説明する。
【０１８６】
図３７は、実施例１におけるタスク配備場所決定処理手順の一例を示すフローチャートである。図３７において、タスク配備装置１００は、オファー情報ＤＢ５００を参照し、タスク実行完了時間が現時点に最も近くなるタスク実行ノード１１０を選択する（ステップＳ３７０１）。
【０１８７】
次に、タスク配備装置１００は、選択したタスク実行ノード１１０に、タスク実行依頼を送信する（ステップＳ３７０２）。一方で、タスク配備装置１００は、選択していないタスク実行ノード１１０に、オファー辞退通知を送信する（ステップＳ３７０３）。そして、タスク配備装置１００は、タスク配備場所決定処理を終了する。
【０１８８】
（実施例１におけるタスク配備場所決定処理手順の別の例）
次に、図３８を用いて、ステップＳ３３０３でタスク配備装置１００によって実行される、実施例１におけるタスク配備場所決定処理の別の例について説明する。
【０１８９】
図３８は、実施例１におけるタスク配備場所決定処理手順の別の例を示すフローチャートである。図３８において、タスク配備装置１００は、利用者ＤＢ１２００を参照し、生成した新たなタスクのデッドラインを取得する（ステップＳ３８０１）。
【０１９０】
次に、タスク配備装置１００は、オファー情報ＤＢ５００を参照し、タスク実行完了時点がデッドラインより前になるタスク実行ノード１１０のうち、タスク実行完了時点が最も遅くなるタスク実行ノード１１０を選択する（ステップＳ３８０２）。
【０１９１】
そして、タスク配備装置１００は、選択したタスク実行ノード１１０に、タスク実行依頼を送信する（ステップＳ３８０３）。一方で、タスク配備装置１００は、選択していないタスク実行ノード１１０に、オファー辞退通知を送信する（ステップＳ３８０４）。そして、タスク配備装置１００は、タスク配備場所決定処理を終了する。
【０１９２】
タスク配備装置１００は、利用者ＤＢ１２００を参照し、図３７に示したタスク配備場所決定処理と、図３８に示したタスク配備場所決定処理とを使い分けるようにしてもよい。これにより、タスク配備装置１００は、利用者に要求された基準にしたがって、タスク実行完了時点を制御することができる。
【０１９３】
（実施例１におけるオファー成功処理手順の一例）
次に、図３９を用いて、タスク実行ノード１１０によって実行される、実施例１におけるオファー成功処理の一例について説明する。
【０１９４】
図３９は、実施例１におけるオファー成功処理手順の一例を示すフローチャートである。図３９において、タスク実行ノード１１０は、タスク実行要求を受信する（ステップＳ３９０１）。
【０１９５】
次に、タスク実行ノード１１０は、タスク実行キュー１０００のアイドルタスクを、タスク実行要求に対応する新たなタスクと置き換える（ステップＳ３９０２）。そして、タスク実行ノード１１０は、新たなタスクに用いられる処理対象データを、データ管理ＤＢ１１００を用いて記憶する（ステップＳ３９０３）。
【０１９６】
その後、タスク実行ノード１１０は、タスク実行キュー１０００から新たなタスクを取り出した場合、新たなタスクを処理対象データを用いて実行する（ステップＳ３９０４）。次に、タスク実行ノード１１０は、新たなタスクの実行結果をタスク配備装置１００に送信する（ステップＳ３９０５）。そして、タスク実行ノード１１０は、オファー成功処理を終了する。
【０１９７】
（実施例１におけるオファー失敗処理手順の一例）
次に、図４０を用いて、タスク実行ノード１１０によって実行される、実施例１におけるオファー失敗処理の一例について説明する。
【０１９８】
図４０は、実施例１におけるオファー失敗処理手順の一例を示すフローチャートである。図４０において、タスク実行ノード１１０は、オファー辞退通知を受信する（ステップＳ４００１）。
【０１９９】
次に、タスク実行ノード１１０は、タスク実行キュー１０００のアイドルタスクを削除する（ステップＳ４００２）。そして、タスク実行ノード１１０は、オファー失敗処理を終了する。
【０２００】
（配備場所を決定する実施例２）
次に、配備場所を決定する実施例２について説明する。実施例１では、上述したように、分散リソース管理部１４０２が、オファーの発行元として、タスク実行ノード１１０をランダムに選択する場合について説明した。
【０２０１】
これに対し、実施例２では、分散リソース管理部１４０２は、複数のタスク実行ノード１１０のそれぞれのタスク実行ノード１１０のタスク実行キュー１０００における既存タスク数Ｋを取得する。そして、分散リソース管理部１４０２は、オファーの発行元として、取得した既存タスク数Ｋが相対的に小さくなるタスク実行ノード１１０を選択する。分散リソース管理部１４０２は、タスク実行ノード１１０が有するＣＰＵ８０１が１つであるため、ＣＰＵ８０１単位で選択しなくてもよい。
【０２０２】
以降では、分散リソース管理部１４０２は、実施例１と同様に、選択したタスク実行ノード１１０について、タスク実行完了時間Ｅを算出し、タスク実行完了時点を算出し、図２９〜図３１に示したような動作を行うため、説明を省略する。
【０２０３】
（実施例２におけるタスク実行ノード１１０の選択処理手順の一例）
次に、図４１を用いて、ステップＳ３２０１でタスク配備装置１００によって実行される、実施例２におけるタスク実行ノード１１０の選択処理手順の一例について説明する。
【０２０４】
図４１は、実施例２におけるタスク実行ノード１１０の選択処理手順の一例を示すフローチャートである。図４１において、タスク配備装置１００は、複数のタスク実行ノード１１０のそれぞれのタスク実行ノード１１０のＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００におけるタスク数Ｋを取得する（ステップＳ４１０１）。
【０２０５】
次に、タスク配備装置１００は、タスク数Ｋが最も小さくなるタスク実行ノード１１０を選択する（ステップＳ４１０２）。そして、タスク配備装置１００は、タスク実行ノード１１０の選択処理を終了する。これにより、タスク配備装置１００は、タスクを実行させる確率が比較的高くなるタスク実行ノード１１０を選択することができる。
【０２０６】
（配備場所を決定する実施例３）
次に、図４２を用いて、配備場所を決定する実施例３について説明する。
【０２０７】
図４２は、実施例３におけるキュー状態ＤＢ４２００の記憶内容の一例を示す説明図である。実施例３では、実施例１とは異なり、キュー状態ＤＢ４２００は、平均処理実行速度のフィールドに対応付けて、タスクの種別ごとの平均処理実行速度μiを記憶する。タスクＩＤは、タスクの種別を特定するＩＤである。
【０２０８】
実施例１では、分散リソース管理部１４０２が、タスクの種別によらない、過去に実行した全タスクの平均処理実行速度を用いて、タスク実行完了時間Ｅを算出し、タスク実行完了時点を算出する場合について説明した。
【０２０９】
これに対し、実施例３では、分散リソース管理部１４０２は、今後生成され、タスク実行キュー１０００に追加されうる新たなタスクの種別を特定するタスクの種別を推定し、タスクの種別に対応するタスクＩＤを特定する。推定は、例えば、過去にデータ生成装置２０１から受信した入力データの内容に基づいて行われる。分散リソース管理部１４０２は、キュー状態ＤＢ４２００を参照して、タスク数Ｋ＋１と、特定したタスクＩＤに対応する平均処理実行速度μiとに基づいて、タスク実行完了時間Ｅi＝（Ｋ＋１）／μiを算出し、タスク実行完了時点を算出する。
【０２１０】
（実施例３におけるタスク実行完了時点の算出処理手順の一例）
次に、図４３を用いて、ステップＳ３２０２でタスク配備装置１００によって実行される、実施例３におけるタスク実行完了時点の算出処理の一例について説明する。
【０２１１】
図４３は、実施例３におけるタスク実行完了時点の算出処理手順の一例を示すフローチャートである。図４３において、タスク配備装置１００は、キュー状態ＤＢ４２００を参照し、選択したタスク実行ノード１１０のＣＰＵ８０１が実行するタスクが格納されるタスク実行キュー１０００におけるタスク数Ｋを取得する（ステップＳ４３０１）。
【０２１２】
次に、タスク配備装置１００は、タスク数Ｋ＋１と、タスクの種別に対応するＣＰＵ８０１の平均処理実行速度μiとに基づいて、タスク実行完了時間Ｅi＝（Ｋ＋１）／μiを算出し、タスク実行完了時点を算出する（ステップＳ４３０２）。そして、タスク配備装置１００は、タスク実行完了時点の算出処理を終了する。
【０２１３】
（配備場所を決定する実施例４）
次に、図４４および図４５を用いて、配備場所を決定する実施例４について説明する。
【０２１４】
図４４は、実施例４におけるタスク実行ノード管理ＤＢ４４００の記憶内容の一例を示す説明図である。実施例４では、実施例１とは異なり、タスク実行ノード管理ＤＢ４４００は、タスク実行ノードＩＤと、ＣＰＵ＿ＩＤとのフィールドを有する。
【０２１５】
タスク実行ノードＩＤのフィールドは、タスク実行ノードＩＤが設定される。タスク実行ノードＩＤは、タスク実行ノード１１０を特定するＩＤである。タスク実行ノードＩＤは、例えば、Ｘである。Ｘは、１〜ｋの整数である。ｋは、タスク配備システム２００におけるタスク実行ノード１１０の数である。ＣＰＵ＿ＩＤのフィールドは、ＣＰＵ＿ＩＤが設定される。ＣＰＵ＿ＩＤは、タスク実行ノードＩＤが示すタスク実行ノード１１０が有するＣＰＵ８０１を特定するＩＤである。ＣＰＵ＿ＩＤは、例えば、ｃである。ｃは、１〜ｔの整数である。ｔは、タスク実行ノード１１０が有するＣＰＵ８０１の数である。
【０２１６】
図４５は、実施例４におけるキュー状態ＤＢ４５００の記憶内容の一例を示す説明図である。実施例４では、実施例１とは異なり、キュー状態ＤＢ４５００は、タスク実行ノードＩＤのフィールドに対応付けて、ＣＰＵ＿ＩＤと、既存タスク数と、平均処理実行速度とのフィールドを有する。
【０２１７】
タスク実行ノードＩＤのフィールドは、タスク実行ノードＩＤが設定される。タスク実行ノードＩＤは、キュー状態ＤＢ４５００を記憶するタスク実行ノード１１０を特定するＩＤである。タスク実行ノードＩＤは、例えば、Ｘである。Ｘは、１〜ｋの整数である。ｋは、タスク配備システム２００におけるタスク実行ノード１１０の数である。ＣＰＵ＿ＩＤのフィールドは、ＣＰＵ＿ＩＤが設定される。ＣＰＵ＿ＩＤは、タスク実行ノードＩＤが示すタスク実行ノード１１０が有するＣＰＵ８０１を特定するＩＤである。ＣＰＵ＿ＩＤは、例えば、ｃである。ｃは、１〜ｔの整数である。ｔは、タスク実行ノード１１０が有するＣＰＵ８０１の数である。
【０２１８】
既存タスク数のフィールドは、既存タスク数が設定される。既存タスク数は、ＣＰＵ＿ＩＤが示すＣＰＵ８０１に対応するタスク実行キュー１０００の先頭から空きまでの既存タスク数である。平均処理実行速度のフィールドは、平均処理実行速度が設定される。平均処理実行速度は、ＣＰＵ＿ＩＤが示すＣＰＵ８０１が、過去に実行した全タスクの平均処理実行速度である。
【０２１９】
実施例１では、分散リソース管理部１４０２が、オファーの発行元としてタスク実行ノード１１０単位で選択し、タスク実行ノード１１０単位でタスク実行完了時間Ｅを算出し、タスク実行完了時点を算出する場合について説明した。
【０２２０】
これに対し、実施例４では、分散リソース管理部１４０２は、タスク実行ノード管理ＤＢ４４００を参照し、オファーの発行元として複数のタスク実行ノード１１０のいずれかのタスク実行ノード１１０を選択する。さらに、分散リソース管理部１４０２は、新たなタスクの実行先として選択したタスク実行ノード１１０が有するいずれかのＣＰＵ８０１を選択する。
【０２２１】
分散リソース管理部１４０２は、選択したタスク実行ノード１１０の実行順序制御部１４０４から、選択したＣＰＵ８０１に対応するタスク実行キュー１０００に格納されたタスクの数として、既存タスク数Ｋの通知を受け付け、キュー状態ＤＢ４５００に記憶する。
【０２２２】
分散リソース管理部１４０２は、既存タスク数Ｋに１を加算し、今後生成され、タスク実行キュー１０００に追加されうる新たなタスクを含めた、タスク実行キュー１０００のタスク数Ｋ＋１を算出する。分散リソース管理部１４０２は、キュー状態ＤＢ４５００を参照して、タスク数Ｋ＋１と、ＣＰＵ８０１の平均処理実行速度μとに基づいて、タスク実行完了時間Ｅ＝（Ｋ＋１）／μを算出し、タスク実行完了時点を算出する。
【０２２３】
また、実施例４において、タスク配備装置１００は、いずれかのタスク実行ノード１１０に含まれる全てのＣＰＵ８０１が、タスクをデッドラインまでに実行完了することができる場合、ＣＰＵ８０１を特定せずに、タスクの実行要求を送信してもよい。
【０２２４】
（配備場所を決定する実施例５）
実施例４では、ＣＰＵ８０１単位でタスク実行キュー１０００が用意され、ＣＰＵ８０１が、自ＣＰＵ８０１に対応するタスク実行キュー１０００のタスクを実行する場合について説明した。
【０２２５】
これに対し、実施例５では、タスク実行ノード１１０単位でタスク実行キュー１０００が用意され、タスク実行ノード１１０に含まれる１以上のＣＰＵ８０１は、タスク実行キュー１０００のタスクを分担して実行する。
【０２２６】
この場合、分散リソース管理部１４０２は、タスク実行ノード管理ＤＢ４００を参照し、オファーの発行元として複数のタスク実行ノード１１０のいずれかのタスク実行ノード１１０を選択する。分散リソース管理部１４０２は、選択したタスク実行ノード１１０の実行順序制御部１４０４から、タスク実行キュー１０００に格納されたタスクの数として、既存タスク数Ｋの通知を受け付け、キュー状態ＤＢ９００に記憶する。
【０２２７】
分散リソース管理部１４０２は、既存タスク数Ｋに１を加算し、今後生成され、タスク実行キュー１０００に追加されうる新たなタスクを含めた、タスク実行キュー１０００のタスク数Ｋ＋１を算出する。
【０２２８】
ここで、タスク実行ノード１１０に含まれるＣＰＵ８０１ごとの平均処理実行速度が一様である場合がある。この場合、分散リソース管理部１４０２は、タスク実行ノード１１０に含まれるＣＰＵ８０１の平均処理実行速度μと、タスク実行ノード１１０に含まれるＣＰＵ８０１の数ｎとに基づいて、タスク実行ノード１１０全体での平均処理実行速度μ’＝ｎμを算出する。分散リソース管理部１４０２は、キュー状態ＤＢ４５００を参照して、タスク数Ｋ＋１と、平均処理実行速度μ’に基づいて、タスク実行完了時間Ｅ＝（Ｋ＋１）／μ’を算出し、タスク実行完了時点を算出する。
【０２２９】
また、タスク実行ノード１１０に含まれるＣＰＵ８０１ごとの平均処理実行速度が異なる場合がある。この場合、分散リソース管理部１４０２は、タスク実行ノード１１０に含まれるＣＰＵ８０１ごとの平均処理実行速度μnと、タスク数Ｋ＋１とに基づいて、タスク実行完了時点を算出してもよい。
【０２３０】
以上説明したように、タスク配備装置１００によれば、所定の間隔で、１以上のノード１１０のいずれかのノード１１０に含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得することができる。タスク配備装置１００によれば、取得した演算装置についての処理数と、演算装置における処理実行速度とに基づいて、演算装置に新たな処理を実行させる場合における新たな処理の実行完了時点を、演算装置ごとに算出することができる。タスク配備装置１００によれば、演算装置ごとに算出した実行完了時点に基づいて、新たな処理を実行させる演算装置を、１以上のノード１１０のいずれかのノード１１０に含まれる演算装置に決定することができる。これにより、タスク配備装置１００は、所定の期限までに処理が実行完了するようなＣＰＵに、新たな処理を配備することができる。タスク配備装置１００は、新たな処理が生成される前に、キューにおける処理数を取得しておき、新たな処理の実行完了時点を算出しておくため、新たな処理が生成されてから、新たな処理をノード１１０に実行させるまでにかかる時間の低減化を図ることができる。
【０２３１】
タスク配備装置１００によれば、演算装置が実行する処理が格納されるキューにおける処理数を取得した際、演算装置を含むノード１１０に、演算装置が実行する処理が格納されるキューに対してダミー処理を追加させることができる。タスク配備装置１００によれば、新たな処理を実行させる演算装置を決定した場合、新たな処理を実行させる演算装置を含むノード１１０に、演算装置が実行する処理が格納されるキューに追加されたダミー処理を、新たな処理に置換させることができる。これにより、タスク配備装置１００は、予め確保された順序で新たな処理を実行することができ、新たな処理が生成されてから実行完了するまでにかかる時間の低減化を図ることができる。
【０２３２】
タスク配備装置１００によれば、所定の間隔で、１以上のノード１１０に含まれる複数の演算装置からランダムに選択した演算装置が実行する処理が格納されるキューにおける処理数を取得することができる。これにより、タスク配備装置１００は、１以上のノード１１０全体における通信量の低減化を図ることができる。
【０２３３】
タスク配備装置１００によれば、所定の間隔で、１以上のノード１１０に含まれる複数の演算装置のそれぞれの演算装置が実行する処理が格納されるキューにおける処理数を取得することができる。タスク配備装置１００によれば、複数の演算装置のうち相対的に小さい処理数を取得した演算装置を含むノード１１０に、演算装置が実行する処理が格納されるキューに対してダミー処理を追加させることができる。これにより、タスク配備装置１００は、今後生成されうる新しい処理を実行させる可能性が比較的高く、今後生成されうる新しい処理が生成されてから実行完了するまでにかかる時間が比較的短いような演算装置を選択し、ダミー処理を追加させることができる。このため、タスク配備装置１００は、ダミー処理を追加したのに新しい処理が実行されず、演算リソースなどを浪費してしまう演算装置が発生しにくくすることができる。
【０２３４】
タスク配備装置１００によれば、新たな処理の実行結果の送信期限を含む、新たな処理の実行要求を受け付けることができる。タスク配備装置１００によれば、新たな処理を実行させる演算装置を、算出した実行完了時点が、受け付けた実行要求に含まれる送信期限より前になる演算装置に決定することができる。これにより、タスク配備装置１００は、新たな処理がデッドラインまでに実行完了する確率を向上させることができる。
【０２３５】
タスク配備装置１００によれば、新たな処理を実行させる演算装置を、算出した実行完了時点が現時点に最も近くなる演算装置に決定することができる。これにより、タスク配備装置１００は、新たな処理の実行結果を取得するまでにかかる時間の最小化を図ることができ、新たな処理がデッドラインまでに実行完了する確率を向上させることができる。
【０２３６】
タスク配備装置１００によれば、取得した演算装置についての処理数と、処理の種別ごとの演算装置における処理実行速度のうち新たな処理の種別に対応する処理実行速度とに基づいて、新たな処理の実行完了時点を、演算装置ごとに算出することができる。これにより、タスク配備装置１００は、新たな処理の種別に合わせて、新たな処理の実行完了時点を精度よく算出することができる。
【０２３７】
タスク配備装置１００によれば、所定の間隔で、１以上のノード１１０のいずれかのノード１１０に含まれる演算装置が実行する処理が格納されるキューにおける処理数と、演算装置における処理実行速度とを取得することができる。これにより、タスク配備装置１００は、演算装置における処理実行速度を最新の状態に更新することができる。
【０２３８】
なお、本実施の形態で説明したタスク配備方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したタスク配備プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したタスク配備プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２３９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２４０】
（付記１）コンピュータに、
所定の間隔で、１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記１以上のノードのいずれかのノードに含まれる演算装置に決定する、
処理を実行させることを特徴とするタスク配備プログラム。
【０２４１】
（付記２）前記コンピュータに、
前記演算装置が実行する処理が格納されるキューにおける処理数を取得した際、前記演算装置を含むノードに、前記演算装置が実行する処理が格納されるキューに対してダミー処理を追加させ、
前記新たな処理を実行させる演算装置を決定した場合、前記新たな処理を実行させる演算装置を含むノードに、前記新たな処理を実行させる演算装置が実行する処理が格納されるキューに追加されたダミー処理を、前記新たな処理に置換させる、処理を実行させることを特徴とする付記１に記載のタスク配備プログラム。
【０２４２】
（付記３）前記取得する処理は、前記所定の間隔で、前記１以上のノードに含まれる複数の演算装置からランダムに選択した演算装置が実行する処理が格納されるキューにおける処理数を取得する、ことを特徴とする付記２に記載のタスク配備プログラム。
【０２４３】
（付記４）前記取得する処理は、前記所定の間隔で、前記１以上のノードに含まれる複数の演算装置のそれぞれの演算装置が実行する処理が格納されるキューにおける処理数を取得し、
前記追加させる処理は、前記複数の演算装置のうち相対的に小さい処理数を取得した演算装置を含むノードに、前記複数の演算装置のうち相対的に小さい処理数を取得した演算装置が実行する処理が格納されるキューに対してダミー処理を追加させる、ことを特徴とする付記２に記載のタスク配備プログラム。
【０２４４】
（付記５）前記コンピュータに、
前記新たな処理の実行結果の送信期限を含む、前記新たな処理の実行要求を受け付ける処理を実行させ、
前記決定する処理は、前記新たな処理を実行させる演算装置を、算出した前記実行完了時点が、受け付けた前記実行要求に含まれる前記送信期限より前になる演算装置に決定する、ことを特徴とする付記１〜４のいずれか一つに記載のタスク配備プログラム。
【０２４５】
（付記６）前記決定する処理は、前記新たな処理を実行させる演算装置を、算出した前記実行完了時点が現時点に最も近くなる演算装置に決定する、ことを特徴とする付記１〜５のいずれか一つに記載のタスク配備プログラム。
【０２４６】
（付記７）前記算出する処理は、取得した前記演算装置についての処理数と、処理の種別ごとの前記演算装置における処理実行速度のうち前記新たな処理の種別に対応する処理実行速度とに基づいて、前記新たな処理の実行完了時点を、前記演算装置ごとに算出する、ことを特徴とする付記１〜６のいずれか一つに記載のタスク配備プログラム。
【０２４７】
（付記８）前記取得する処理は、前記所定の間隔で、前記１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数と、前記演算装置における処理実行速度とを取得する、ことを特徴とする付記１〜７のいずれか一つに記載のタスク配備プログラム。
【０２４８】
（付記９）コンピュータが
所定の間隔で、１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記１以上のノードのいずれかのノードに含まれる演算装置に決定する、
処理を実行することを特徴とするタスク配備方法。
【０２４９】
（付記１０）所定の間隔で、１以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記１以上のノードのいずれかのノードに含まれる演算装置に決定する、
制御部を有することを特徴とするタスク配備装置。
【符号の説明】
【０２５０】
１００  タスク配備装置
１１０  ノード
１１１，３０１，８０１  ＣＰＵ
２００  タスク配備システム
２０１  データ生成装置
２０２  データ受信ノード
２０３  データ配信ノード
２０４  クライアント装置
２１０  ネットワーク
３００，８００  バス
３０２，８０２  メモリ
３０３，８０３  ネットワークＩ／Ｆ
３０４，８０４  記録媒体Ｉ／Ｆ
３０５，８０５  記録媒体
４００  タスク実行ノード管理ＤＢ
５００  オファー情報ＤＢ
６００  タスク管理ＤＢ
７００，１１００  データ管理ＤＢ
９００  キュー状態ＤＢ
１０００  タスク実行キュー
１２００  利用者ＤＢ
１３０１  第１の記憶部
１３０２  第１の取得部
１３０３  追加部
１３０４  受付部
１３０５  算出部
１３０６  決定部
１３０７  置換部
１３０８  第１の出力部
１３１０  第２の記憶部
１３１１  第２の取得部
１３１２  実行部
１３１３  第２の出力部
１４０１  タスク実行ノード選択部
１４０２  分散リソース管理部
１４０３  タスク実行完了時点見積もり部
１４０４  実行順序制御部
１４０５  オファー管理部
１４０６  タスク管理部
１４０７  タスク配備場所決定部
１４０８  タスク実行部
２８０１〜２８０３，３００１  タスク
２９０１  アイドルタスク
【図１】
2018200603.tif 000003
【図２】
2018200603.tif 000004
【図３】
2018200603.tif 000005
【図４】
2018200603.tif 000006
【図５】
2018200603.tif 000007
【図６】
2018200603.tif 000008
【図７】
2018200603.tif 000009
【図８】
2018200603.tif 000010
【図９】
2018200603.tif 000011
【図１０】
2018200603.tif 000012
【図１１】
2018200603.tif 000013
【図１２】
2018200603.tif 000014
【図１３】
2018200603.tif 000015
【図１４】
2018200603.tif 000016
【図１５】
2018200603.tif 000017
【図１６】
2018200603.tif 000018
【図１７】
2018200603.tif 000019
【図１８】
2018200603.tif 000020
【図１９】
2018200603.tif 000021
【図２０】
2018200603.tif 000022
【図２１】
2018200603.tif 000023
【図２２】
2018200603.tif 000024
【図２３】
2018200603.tif 000025
【図２４】
2018200603.tif 000026
【図２５】
2018200603.tif 000027
【図２６】
2018200603.tif 000028
【図２７】
2018200603.tif 000029
【図２８】
2018200603.tif 000030
【図２９】
2018200603.tif 000031
【図３０】
2018200603.tif 000032
【図３１】
2018200603.tif 000033
【図３２】
2018200603.tif 000034
【図３３】
2018200603.tif 000035
【図３４】
2018200603.tif 000036
【図３５】
2018200603.tif 000037
【図３６】
2018200603.tif 000038
【図３７】
2018200603.tif 000039
【図３８】
2018200603.tif 000040
【図３９】
2018200603.tif 000041
【図４０】
2018200603.tif 000042
【図４１】
2018200603.tif 000043
【図４２】
2018200603.tif 000044
【図４３】
2018200603.tif 000045
【図４４】
2018200603.tif 000046
【図４５】
2018200603.tif 000047