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