以下に、図面を参照して、本発明にかかるタスク配備プログラム、タスク配備方法、およびタスク配備装置の実施の形態を詳細に説明する。
(実施の形態にかかるタスク配備方法の一実施例)
図1は、実施の形態にかかるタスク配備方法の一実施例を示す説明図である。図1において、タスク配備装置100は、広域分散システムに設けられるコンピュータである。
広域分散システムは、複数のエッジを含む。エッジは、1以上のノードを含む、広域分散システムの一部である。ここでは、エッジは、広域分散システムの末端に存在してもよいし、広域分散システムの中央に存在してもよい。ノードは、演算装置を有する。演算装置は、例えば、CPU(Central Processing Unit)である。
広域分散システムのいずれかのエッジにおいて新たな処理が発生すると、新たな処理の配備場所が決定され、新たな処理が実行されることになる。処理は、例えば、タスクである。配備場所は、タスクを実行させるノードである。新たな処理の配置場所は、例えば、新たな処理が発生したエッジに含まれるノード、または、新たな処理が発生したエッジとは異なるエッジに含まれるノードに決定される。
ここで、広域分散システムにおいて、新たな処理の配備場所を決定する際、所定の期限までに処理が実行完了するような配備場所を決定することが望まれる傾向がある。しかしながら、所定の期限までに処理が実行完了するような配備場所を決定することは難しい。
例えば、Mesosなどの分散リソース管理技術により、処理の配備場所を制御する場合が考えられる。この場合、例えば、いずれのノードに処理を実行させれば、所定の期限までに処理を実行完了することができるかを判断せずに、処理の配備場所を決定することがあり、所定の期限までに処理が実行完了しないことがある。
これに対し、ノードの処理数と、ノードの処理実行速度とに基づいて、ノードに新たな処理を実行させた場合に、新たな処理が実行完了するまでの実行完了時点を推定し、所定の期限までに、新たな処理が実行完了することができるかを判断することが考えられる。
しかしながら、ノードは、複数の処理を実行する場合、複数の処理を所定時間ごとに代わる代わる実行する傾向がある。このため、ノードの処理数がリアルタイムに増減すると、処理の実行完了時点もリアルタイムに変動してしまう。したがって、所定の期限までに、ノードに実行させた新たな処理が実行完了することができるかを精度よく判断することができない。
これに対し、ノードにキューを設け、ノードで実行する処理をキューで管理した上で、キューにおける処理数と、ノードの処理実行速度とに基づいて、ノードで実行する処理の実行完了時点を推定することが考えられる。これにより、推定した実行完了時点に基づいて、所定の期限までに、新たな処理が実行完了することができるかを判断する。
しかしながら、広域分散システムは大規模化する傾向があり、エッジ間における通信遅延は増大化する傾向がある。例えば、通信遅延は、ms単位になる。このため、新たな処理の配置場所が、新たな処理が発生したエッジとは異なるエッジに含まれるノードに決定された場合、エッジ間における通信遅延により、推定された実行完了時点が、新たな処理の実際の実行完了時点とずれてしまうことがある。
そして、推定された実行完了時点を基に、新たな処理の実行時間をノードに確保させると、新たな処理の実行要求がノードに届くまでに、確保した実行時間が浪費されてしまうことがあり、ノードが空転してしまうことがある。また、ノードが実行する新たな処理が届いていないのに、ノードで実行時間を確保してしまい、他の処理をノードに実行させることができず、ノードを効率よく活用することができない。
そこで、本実施の形態では、ノードにキューを設け、ノードで実行する処理をキューで管理した上で、ノードに対する通信遅延を考慮することにより、ノードで実行する処理の実行完了時点の推定精度の向上を図ることができるタスク配備方法について説明する。これによれば、本実施の形態は、所定の期限までに処理が実行完了するようなノードに、処理を配備可能にすることができる。
図1において、タスク配備装置100は、いずれかのエッジに設けられる。タスク配備装置100は、例えば、エッジAに設けられる。タスク配備装置100は、自装置とは異なるエッジに含まれる管理ノード120と通信可能である。管理ノード120は、新たな処理を生成するコンピュータである。管理ノード120は、タスク配備装置100とは異なるエッジに設けられる。管理ノード120は、例えば、エッジBに設けられる。
タスク配備装置100は、自装置と同じエッジに含まれるノードと通信可能である。ノードは、エッジAに設けられる。ノードは、1以上の演算装置を有する。ノードは、処理を格納するキューを有する。ノードは、演算装置により、キューから取り出した処理を一つずつ実行する。以下の説明では、ノードを「タスク実行ノード110」と表記する場合がある。
(1−1)タスク配備装置100は、タスク実行ノード110で実行する処理が格納されるキューにおける処理数を取得する。図1の例では、タスク配備装置100は、例えば、キューに格納された処理140の数「2」を取得する。また、タスク配備装置100は、タスク実行ノード110における処理実行速度に関する情報を取得する。
また、タスク配備装置100は、管理ノード120とタスク実行ノード110との通信遅延に関する情報を取得する。タスク配備装置100は、例えば、管理ノード120とタスク実行ノード110との通信遅延に関する情報として、管理ノード120とタスク配備装置100との往復遅延Tを取得する。通信遅延は、例えば、インターネットやエッジネットワークを介した管理ノード120とタスク配備装置100との往復通信にかかる往復遅延である。
通信遅延は、タスク実行ノード110とタスク配備装置100との往復遅延を無視可能な程度に小さいと扱って、タスク実行ノード110とタスク配備装置100との往復遅延を含まないようにしてもよい。また、通信遅延は、管理ノード120とタスク配備装置100との往復通信にかかる往復遅延と、タスク実行ノード110とタスク配備装置100との往復遅延との両方を含むようにしてもよい。
(1−2)タスク配備装置100は、新たな処理160をタスク実行ノード110に実行させる場合における、新たな処理160の実行完了時点を特定する情報を生成する。新たな処理160の実行完了時点は、タスク実行ノード110において新たな処理160が実行完了する時点である。タスク配備装置100は、例えば、タスク実行ノード110についての処理数と、タスク実行ノード110における処理実行速度に関する情報と、管理ノード120とタスク実行ノード110との通信遅延に関する情報とを取得する。そして、タスク配備装置100は、取得した各種情報に基づいて、新たな処理160の実行完了時点を算出する。
ここで、往復遅延Tが経過する前に、キューに格納された処理140が実行完了しない場合と、キューに格納された処理140が実行完了する場合とがある。タスク配備装置100は、キューに格納された処理140が実行完了しない場合、往復遅延Tが経過した後、キューに格納された処理140が実行完了してから新たな処理160が実行されるとして、新たな処理160の実行完了時点を算出する。
また、タスク配備装置100は、キューに格納された処理140が実行完了する場合、キューに格納された処理140が実行完了した後、往復遅延Tが経過してから新たな処理160が実行されるとして、新たな処理160の実行完了時点を算出する。往復遅延Tが経過するまでは、例えば、タスク実行ノード110は、何らかの処理150を実行していてもよい。
(1−3)タスク配備装置100は、タスク実行ノード110について生成した実行完了時点を特定する情報を、管理ノード120に送信する。これにより、タスク配備装置100は、新たな処理160の実行完了時点を精度よく特定することができるように、新たな処理160の実行完了時点を特定する情報を生成することができる。
(1−4)管理ノード120は、タスク配備装置100から、新たな処理160の実行完了時点を特定する情報を受け付ける。これにより、管理ノード120は、今後、自ノードで新たな処理160を生成した場合、新たな処理160をタスク実行ノード110に実行させると、いつまでに実行完了されるのかを精度よく特定することができる。
(1−5)管理ノード120は、所定のデータを受け付けたことに応じて、所定のデータに基づいて新たな処理160を生成した場合、受け付けた情報が示す実行完了時点に基づいて、タスク実行ノード110に、新たな処理160を実行させるか否かを決定する。これにより、管理ノード120は、タスク実行ノード110に、新たな処理160を実行させた場合、所定の期限までに実行完了するか否かを精度よく判断することができ、所定の期限までに新たな処理160が実行完了するように配備しやすくすることができる。
ここで、タスク配備装置100は、処理数を取得した際、新たな処理160と置換可能なダミー処理がキューに追加されるように、タスク実行ノード110を制御してもよい。これにより、タスク配備装置100は、新たな処理160が生成されるまでに、キューに別の処理が追加されても、新たな処理160の実行完了時点がずれないようにすることができる。
ここでは、説明の簡略化のため、広域分散システムに含まれるエッジが2つであり、タスク配備装置100が1つであり、管理ノード120が1つである場合について説明したが、これに限らない。例えば、広域分散システムに含まれるエッジが3つ以上ある場合があってもよい。例えば、広域分散システムに含まれるタスク配備装置100が2つ以上ある場合があってもよいし、管理ノード120が2つ以上ある場合があってもよい。
ここでは、タスク実行ノード110が、演算装置として、CPUを1つ有する場合について説明したが、これに限らない。例えば、タスク実行ノード110が、演算装置として、CPUを複数有する場合があってもよい。そして、タスク実行ノード110が、演算装置ごとにキューを用意し、演算装置ごとに処理を実行する場合があってもよい。また、タスク実行ノード110が、キューに格納された処理を、複数の演算装置で分担して実行する場合があってもよい。
ここでは、処理実行速度が、処理の種別によらず一定である場合について説明したが、これに限らない。例えば、処理実行速度が、処理の種別によって異なり、タスク配備装置100が、処理の種別ごとに処理実行速度を記憶する場合があってもよい。
ここでは、エッジが、タスク配備装置100とタスク実行ノード110とを含む場合について説明したが、これに限らない。例えば、タスク配備装置100が1つのエッジとして扱われ、タスク配備装置100が有する演算装置がタスク実行ノード110として扱われる場合があってもよい。
ここでは、通信遅延が、管理ノード120とタスク配備装置100とを接続するインターネットやエッジネットワークにおける往復遅延である場合について説明したが、これに限らない。例えば、通信遅延が、管理ノード120とタスク実行ノード110との、タスク配備装置100を介した往復遅延である場合があってもよい。
ここでは、新たな処理160の実行完了時点が、タスク実行ノード110において新たな処理160が実行完了する時点である場合について説明したが、これに限らない。例えば、新たな処理160の実行完了時点が、管理ノード120において新たな処理160が実行完了したことを検知した時点であってもよい。具体的には、新たな処理160の実行完了時点が、タスク実行ノード110において新たな処理160が実行完了した後、管理ノード120において新たな処理160の実行結果を受信した時点である場合があってもよい。
(広域分散システム200の一例)
次に、図2を用いて、図1に示したタスク配備装置100を適用した、広域分散システム200の一例について説明する。
図2は、広域分散システム200の一例を示す説明図である。図2において、広域分散システム200は、複数のエッジEgと、データ生成装置201と、端末装置204とを含む。図2の例では、広域分散システム200は、3つのエッジEgを含む。エッジEgは、受信ノード202と、タスク配備装置100と、1以上のタスク実行ノード110と、配信ノード203とを含む。
広域分散システム200において、それぞれのエッジEgに含まれるタスク配備装置100は、有線または無線のネットワークを介して接続される。それぞれのエッジEgに含まれるタスク配備装置100を接続するネットワークは、例えば、インターネットやエッジネットワークなどである。
また、広域分散システム200において、データ生成装置201と、受信ノード202とは、有線または無線のネットワークを介して接続される。データ生成装置201と、受信ノード202とを接続するネットワークは、例えば、無線モバイル網などである。また、広域分散システム200において、配信ノード203と、端末装置204とは、有線または無線のネットワークを介して接続される。配信ノード203と、端末装置204とを接続するネットワークは、例えば、無線モバイル網などである。
エッジEgにおいて、受信ノード202と、タスク配備装置100とは、有線または無線によって通信可能に接続される。また、エッジEgにおいて、タスク配備装置100と、タスク実行ノード110とは、有線または無線によって通信可能に接続される。また、エッジEgにおいて、タスク配備装置100と、配信ノード203とは、有線または無線によって通信可能に接続される。
データ生成装置201は、タスクの実行に用いるデータを生成し、受信ノード202を介してタスク配備装置100に送信するコンピュータである。以下の説明では、タスクの実行に用いるデータを「処理対象データ」と表記する場合がある。データ生成装置201は、例えば、PC(Personal Computer)、タブレット端末、スマートフォン、ウェアラブル端末、撮像装置、センサ装置などである。データ生成装置201は、例えば、IoTデバイスである。
受信ノード202は、データ生成装置201から受信した処理対象データを、タスク配備装置100に送信するコンピュータである。受信ノード202は、例えば、サーバ、PC、タブレット端末、スマートフォン、ウェアラブル端末などである。
タスク配備装置100は、受信ノード202から処理対象データを受信する。また、タスク配備装置100は、タスク実行ノード110で実行するタスクが格納されるキューにおけるタスク数と、タスク実行ノード110の処理実行速度となどを、タスク実行ノード110から受信する。タスク実行ノード110のキューは、例えば、図10に後述するタスク実行キューである。
そして、タスク配備装置100は、受信した処理対象データを用いるタスクを生成し、受信した処理対象データを用いるタスクの配備場所となるタスク実行ノード110を決定する。タスク配備装置100は、タスクの配備場所を、自装置とは異なるエッジEgに含まれるタスク実行ノード110に決定してもよい。タスク配備装置100は、受信した処理対象データを用いるタスクを実行させるタスク実行要求を生成し、配備場所に決定したタスク実行ノード110に送信する。タスク配備装置100は、例えば、サーバやPCなどである。
タスク実行ノード110は、1以上のCPUを有するコンピュータである。タスク実行ノード110は、自ノードで実行するタスクが格納されるキューを有する。タスク実行ノード110のキューは、例えば、図10に後述するタスク実行キューである。タスク実行ノード110は、タスク配備装置100からの問い合わせに応じて、キューにおけるタスク数と、自ノードの処理実行速度となどをタスク配備装置100に送信する。
タスク実行ノード110は、タスク実行要求をタスク配備装置100から受信すると、CPUを用いてタスク実行要求に対応するタスクを実行する。タスク実行ノード110は、タスクを実行すると、タスク実行要求の送信元であるタスク配備装置100に、タスクの実行結果を送信する。タスク実行ノード110は、例えば、PC、タブレット端末、スマートフォン、ウェアラブル端末などである。
配信ノード203は、タスクの実行結果をタスク実行ノード110から直接受信し、または、タスク配備装置100を介してタスク実行ノード110から受信し、受信したタスクの実行結果を端末装置204に送信するコンピュータである。配信ノード203は、例えば、サーバ、PC、タブレット端末、スマートフォン、ウェアラブル端末などである。
端末装置204は、配信ノード203から受信したタスクの実行結果を出力するコンピュータである。端末装置204は、例えば、タスクの実行結果をディスプレイに表示する。端末装置204は、例えば、PC、タブレット端末、スマートフォン、ウェアラブル端末、車載装置などである。
ここでは、それぞれのエッジEgが、受信ノード202と、1以上のタスク実行ノード110と、配信ノード203とを含む場合について説明したが、これに限らない。例えば、いずれかのエッジEgが、受信ノード202と、1以上のタスク実行ノード110と、配信ノード203との少なくともいずれかを含まない場合があってもよい。
ここでは、受信ノード202と、タスク配備装置100と、タスク実行ノード110と、配信ノード203とが、それぞれ異なる装置である場合について説明したが、これに限らない。受信ノード202と、タスク配備装置100と、タスク実行ノード110と、配信ノード203とのいずれか2つ以上の組み合わせは、一体である場合があってもよい。例えば、タスク配備装置100が、タスク実行ノード110と一体である場合があってもよい。
(タスク配備装置100のハードウェア構成例)
次に、図3を用いて、タスク配備装置100のハードウェア構成例について説明する。
図3は、タスク配備装置100のハードウェア構成例を示すブロック図である。図3において、タスク配備装置100は、CPU301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、タスク配備装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。メモリ302は、図4〜図7に後述する各種DB(DataBase)を記憶する。
ネットワークI/F303は、通信回線を通じてネットワーク310に接続され、ネットワーク310を介して他のコンピュータに接続される。ネットワーク310は、例えば、エッジEg内の各装置を接続するネットワーク、図2に示したインターネット、または、図2に示したエッジネットワークなどである。そして、ネットワークI/F303は、ネットワーク310と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303には、例えば、モデムやLAN(Local Area Network)アダプタなどを採用することができる。
記録媒体I/F304は、CPU301の制御にしたがって記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、タスク配備装置100から着脱可能であってもよい。
タスク配備装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、タスク配備装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
(エッジ管理DB400の記憶内容の一例)
次に、図4を用いて、エッジ管理DB400の記憶内容の一例について説明する。エッジ管理DB400は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図4は、エッジ管理DB400の記憶内容の一例を示す説明図である。図4に示すように、エッジ管理DB400は、エッジIDと、NW(NetWork)遅延とのフィールドを有する。エッジ管理DB400は、各フィールドに情報を設定することにより、エッジ管理情報がレコードとして記憶される。
エッジIDのフィールドには、広域分散システム200に含まれる複数のエッジEgのうち、タスク配備装置100が含まれるエッジEgとは異なるエッジEgについてのエッジIDが設定される。エッジIDは、エッジEgを特定するIDである。NW遅延のフィールドには、タスク配備装置100から、エッジIDが特定するエッジEgまでの往復NW遅延が設定される。往復NW遅延の単位は、例えば、msである。
(オファー情報DB500の記憶内容の一例)
次に、図5を用いて、オファー情報DB500の記憶内容の一例について説明する。オファー情報DB500は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図5は、オファー情報DB500の記憶内容の一例を示す説明図である。図5に示すように、オファー情報DB500は、オファーIDと、タスクIDと、タスク実行完了時点のフィールドを有する。オファー情報DB500は、各フィールドに情報を設定することにより、オファー情報がレコードとして記憶される。
オファーIDのフィールドには、オファーIDが設定される。オファーIDは、オファー情報を送信したエッジEgを特定するIDである。オファー情報は、タスク実行ノード110が新たなタスクを実行可能であることを示す通知である。タスクIDのフィールドには、タスクIDが設定される。タスクIDは、タスクを特定するIDである。タスクIDは、例えば、新たに生成されるタスクと置換可能なアイドルタスクを特定するIDである。タスク実行完了時点のフィールドには、オファー情報の生成対象であるタスク実行ノード110におけるタスク実行完了時点が設定される。タスク実行完了時点は、見積もられたタスク実行完了時点である。
(タスク管理DB600の記憶内容の一例)
次に、図6を用いて、タスク管理DB600の記憶内容の一例について説明する。タスク管理DB600は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図6は、タスク管理DB600の記憶内容の一例を示す説明図である。図6に示すように、タスク管理DB600は、タスクIDと、データIDのフィールドを有する。タスク管理DB600は、各フィールドに情報を設定することにより、タスク管理情報がレコードとして記憶される。
タスクIDのフィールドには、タスクIDが設定される。タスクIDは、タスクを特定するIDである。タスクIDは、例えば、実行待ちのタスクを特定するIDである。データIDのフィールドには、データIDが設定される。データIDは、タスクIDに対応するタスクが用いる処理対象データを特定するIDである。
(データ管理DB700の記憶内容の一例)
次に、図7を用いて、データ管理DB700の記憶内容の一例について説明する。データ管理DB700は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図7は、データ管理DB700の記憶内容の一例を示す説明図である。図7に示すように、データ管理DB700は、データIDと、データのフィールドを有する。データ管理DB700は、各フィールドに情報を設定することにより、データがレコードとして記憶される。
データIDのフィールドには、データIDが設定される。データIDは、処理対象データになりうる、データ生成装置201から受信ノード202を介して受信した入力データを特定するIDである。データのフィールドには、データIDが示す入力データが設定される。データのフィールドには、例えば、データ生成装置201から受信ノード202を介して受信した入力データが設定される。
(データ生成装置201のハードウェア構成例)
データ生成装置201のハードウェア構成例は、例えば、図3に示したタスク配備装置100のハードウェア構成例と同様であるため、説明を省略する。データ生成装置201は、さらに、撮像素子やセンサなどを有してもよい。センサは、例えば、加速度センサや角速度センサ、磁気センサ、振動センサなどである。
(受信ノード202のハードウェア構成例)
受信ノード202のハードウェア構成例は、例えば、図3に示したタスク配備装置100のハードウェア構成例と同様であるため、説明を省略する。
(タスク実行ノード110のハードウェア構成例)
次に、図8を用いて、タスク実行ノード110のハードウェア構成例について説明する。
図8は、タスク実行ノード110のハードウェア構成例を示すブロック図である。図8において、タスク実行ノード110は、1以上のCPU801と、メモリ802と、ネットワークI/F803と、記録媒体I/F804と、記録媒体805とを有する。また、各構成部は、バス800によってそれぞれ接続される。
ここで、CPU801は、タスク実行ノード110の全体の制御を司る。メモリ802は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU801のワークエリアとして使用される。メモリ802に記憶されるプログラムは、CPU801にロードされることで、コーディングされている処理をCPU801に実行させる。メモリ802は、図9〜図12に後述する各種DBを記憶する。
ネットワークI/F803は、通信回線を通じてネットワーク810に接続され、ネットワーク810を介して他のコンピュータに接続される。ネットワーク810は、例えば、エッジEg内の各装置を接続するネットワークなどである。そして、ネットワークI/F803は、ネットワーク810と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F803には、例えば、モデムやLANアダプタなどを採用することができる。
記録媒体I/F804は、CPU801の制御にしたがって記録媒体805に対するデータのリード/ライトを制御する。記録媒体I/F804は、例えば、ディスクドライブ、SSD、USBポートなどである。記録媒体805は、記録媒体I/F804の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体805は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体805は、タスク実行ノード110から着脱可能であってもよい。
タスク実行ノード110は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、タスク実行ノード110は、記録媒体I/F804や記録媒体805を有していなくてもよい。
(キュー状態DB900の記憶内容の一例)
次に、図9を用いて、キュー状態DB900の記憶内容の一例について説明する。キュー状態DB900は、例えば、図8に示したタスク実行ノード110のメモリ802や記録媒体805などの記憶領域により実現される。
図9は、キュー状態DB900の記憶内容の一例を示す説明図である。図9に示すように、キュー状態DB900は、タスク実行ノードIDと、既存タスク数と、平均処理実行速度とのフィールドを有する。キュー状態DB900は、各フィールドに情報を設定することにより、キュー状態がレコードとして記憶される。
タスク実行ノードIDのフィールドには、タスク実行ノードIDが設定される。タスク実行ノードIDは、キュー状態DB900を記憶するタスク実行ノード110を特定するIDである。タスク実行ノードIDは、例えば、Xである。Xは、1〜kの整数である。kは、広域分散システム200におけるタスク実行ノード110の数である。
既存タスク数のフィールドには、既存タスク数が設定される。既存タスク数は、タスク実行ノードIDが示すタスク実行ノード110が有する、図10に後述するタスク実行キューの先頭から空きまでの既存タスク数である。平均処理実行速度のフィールドには、平均処理実行速度が設定される。平均処理実行速度は、タスク実行ノードIDが示すタスク実行ノード110が、過去に実行した全タスクの平均処理実行速度である。
キュー状態DB900は、例えば、タスク実行ノード110が有するCPU801ごとに用意される。タスク実行ノード110は、例えば、CPU801ごとに、実行するタスクを格納するタスク実行キューを管理するキュー状態DB900を記憶する。タスク実行ノード110は、1以上のCPU801が分担して実行するタスクを格納するタスク実行キューを管理する、1つのキュー状態DB900を記憶してもよい。
(タスク実行キュー1000の記憶内容の一例)
次に、図10を用いて、タスク実行キュー1000の記憶内容の一例について説明する。タスク実行キュー1000は、例えば、図8に示したタスク実行ノード110のメモリ802や記録媒体805などの記憶領域により実現される。
図10は、タスク実行キュー1000の記憶内容の一例を示す説明図である。図10に示すように、タスク実行キュー1000は、キューIDと、タスクIDと、データIDとのフィールドを有する。タスク実行キュー1000は、各フィールドに情報を設定することにより、タスク配備情報がレコードとして記憶される。
キューIDのフィールドには、キューIDが設定される。キューIDは、タスク実行キュー1000に格納されたタスクの実行順序を管理するためのIDである。キューIDは、例えば、Iである。Iは、1〜Qの整数である。Qは、例えば、タスク実行キュー1000に格納可能なタスク数である。
タスクIDのフィールドには、タスクIDが設定される。タスクIDは、タスク実行キュー1000に格納されたタスクを特定するIDである。タスクIDは、例えば、タスクの種別を特定するIDである。タスクの種別は、アイドルタスクを含む。データIDのフィールドには、タスクIDに対応するタスクが用いる処理対象データを特定するデータIDが設定される。データIDは、タスクIDがアイドルタスクを示す場合には、NULLである。
タスク実行キュー1000は、例えば、FIFO(First In First Out)である。タスク実行キュー1000は、例えば、タスク実行ノード110が有するCPU801ごとに用意される。タスク実行ノード110は、例えば、CPU801ごとに実行するタスクを格納するタスク実行キュー1000を記憶する。タスク実行キュー1000は、1以上のCPU801が分担して実行するタスクを格納する、1つのタスク実行キュー1000を記憶してもよい。
(データ管理DB1100の記憶内容の一例)
次に、図11を用いて、データ管理DB1100の記憶内容の一例について説明する。データ管理DB1100は、例えば、図8に示したタスク実行ノード110のメモリ802や記録媒体805などの記憶領域により実現される。
図11は、データ管理DB1100の記憶内容の一例を示す説明図である。図11に示すように、データ管理DB1100は、データIDと、データのフィールドを有する。データ管理DB1100は、各フィールドに情報を設定することにより、データがレコードとして記憶される。
データIDのフィールドには、データIDが設定される。データIDは、処理対象データになりうる、データ生成装置201から受信ノード202を介して受信した入力データを特定するIDである。データのフィールドには、データIDが示す入力データが設定される。データのフィールドには、例えば、データ生成装置201から受信ノード202を介して受信した入力データが設定される。
(配信ノード203のハードウェア構成例)
配信ノード203のハードウェア構成例は、例えば、図3に示したタスク配備装置100のハードウェア構成例と同様であるため、説明を省略する。
(端末装置204のハードウェア構成例)
端末装置204のハードウェア構成例は、例えば、図3に示したタスク配備装置100のハードウェア構成例と同様であるため、説明を省略する。端末装置204は、スピーカーやディスプレイを有してもよい。
(利用者DB1200の記憶内容の一例)
次に、図12を用いて、利用者DB1200の記憶内容の一例について説明する。利用者DB1200は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305など、または、図8に示したタスク実行ノード110のメモリ802や記録媒体805などにより実現される。
図12は、利用者DB1200の記憶内容の一例を示す説明図である。図12に示すように、利用者DB1200は、利用者IDと、要求時間のフィールドを有する。利用者DB1200は、各フィールドに情報を設定することにより、利用者情報がレコードとして記憶される。
利用者IDのフィールドには、利用者IDが設定される。利用者IDは、タスクについてのタスク実行要求を送信した端末装置204の利用者を特定するIDである。要求時間のフィールドには、要求時間が設定される。要求時間は、タスクの実行結果を受信する期限を示すデッドラインである。利用者DB1200は、配信ノード203または端末装置204が有してもよい。
(タスク配備装置100の機能的構成例)
次に、図13を用いて、タスク配備装置100の機能的構成例について説明する。
図13は、タスク配備装置100の機能的構成例を示すブロック図である。図13の例では、タスク配備装置100が、オファー情報を生成する場合における機能的構成例と、オファー情報に基づいてタスクの配備場所を決定する場合における機能的構成例とを示す。
以下の説明では、オファー情報を生成する側であるタスク配備装置100を「第1タスク配備装置100」と表記し、オファー情報に基づいてタスクの配備場所を決定する側であるタスク配備装置100を「第2タスク配備装置100」と表記し、区別して説明する。第2タスク配備装置100は、例えば、図1に示した管理ノード120として動作する。
第1タスク配備装置100は、第1記憶部1300と、第1取得部1301と、算出部1302と、追加部1303と、置換部1304と、第1出力部1305とを含む。第1記憶部1300は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、第1記憶部1300が、タスク配備装置100に含まれる場合について説明するが、これに限らない。例えば、第1記憶部1300が、タスク配備装置100とは異なる装置に含まれ、第1記憶部1300の記憶内容がタスク配備装置100から参照可能である場合があってもよい。
第1取得部1301〜第1出力部1305は、制御部となる機能である。第1取得部1301〜第1出力部1305は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
第1記憶部1300は、1以上のノードを管理する情報を記憶する。ノードは、例えば、図8に示したタスク実行ノード110である。タスク実行ノード110は、1以上の演算装置を有する。タスク実行ノード110は、処理を格納するタスク実行キュー1000を有する。タスク実行ノード110は、演算装置により、タスク実行キュー1000から取り出した処理を一つずつ実行する。第1記憶部1300は、広域分散システム200に含まれる1以上のエッジEgを管理する情報を記憶する。第1記憶部1300は、例えば、図4に示したエッジ管理DB400を記憶する。
第1記憶部1300は、タスク実行ノード110に実行させる処理の実行完了時点を記憶する。処理は、例えば、タスクである。第1記憶部1300は、例えば、図5に示したオファー情報DB500を記憶する。第1記憶部1300は、タスクを管理する情報を記憶する。第1記憶部1300は、例えば、図6に示したタスク管理DB600を記憶する。第1記憶部1300は、タスクに用いられる処理対象データを管理する情報を記憶する。第1記憶部1300は、例えば、図7に示したデータ管理DB700を記憶する。これにより、第1記憶部1300は、各機能部の処理に、図4〜図7に示した各種DBの記憶内容を参照させることができる。
第1取得部1301は、所定のタイミングで、タスク実行ノード110で実行するタスクが格納されるタスク実行キュー1000におけるタスク数を取得する。所定のタイミングは、例えば、所定時間ごとのタイミングである。所定のタイミングは、予め設定された所定の時刻であってもよい。所定のタイミングは、所定のイベントが発生したタイミングであってもよい。所定のイベントは、タスクの生成や利用者の操作入力などである。
第1取得部1301は、例えば、タスク実行ノード110が複数存在する場合、ランダムに選択したタスク実行ノード110が実行するタスクが格納されるタスク実行キュー1000におけるタスク数を取得する。第1取得部1301は、具体的には、ランダムに選択したタスク実行ノード110からキュー状態DB900の記憶内容を取得し、タスク実行キュー1000におけるタスク数を取得する。これにより、第1取得部1301は、ランダムに選択したタスク実行ノード110におけるタスク数を特定することができ、ランダムに選択したタスク実行ノード110に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
第1取得部1301は、例えば、タスク実行ノード110が複数存在する場合、それぞれのタスク実行ノード110が実行するタスクが格納されるタスク実行キュー1000におけるタスク数を取得してもよい。第1取得部1301は、具体的には、複数のタスク実行ノード110のそれぞれのタスク実行ノード110から、キュー状態DB900の記憶内容を取得する。第1取得部1301は、それぞれのタスク実行ノード110のキュー状態DB900の記憶内容から、タスク実行キュー1000におけるタスク数を取得する。これにより、第1取得部1301は、それぞれのタスク実行ノード110におけるタスク数を特定することができ、それぞれのタスク実行ノード110に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
第1取得部1301は、所定のタイミングで、タスク実行ノード110におけるタスク実行速度に関する情報を取得する。所定のタイミングは、例えば、所定時間ごとのタイミングである。所定のタイミングは、予め設定された所定の時刻であってもよい。所定のタイミングは、所定のイベントが発生したタイミングであってもよい。所定のイベントは、タスクの生成や利用者の操作入力などである。
第1取得部1301は、例えば、1以上のタスク実行ノード110のそれぞれのタスク実行ノード110から、それぞれのタスク実行ノード110のキュー状態DB900の記憶内容を取得する。第1取得部1301は、それぞれのタスク実行ノード110のキュー状態DB900の記憶内容から、タスク実行ノード110のタスク実行速度を取得する。これにより、第1取得部1301は、タスク実行ノード110に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
第1取得部1301は、第2タスク配備装置100とタスク実行ノード110との通信遅延に関する情報を取得する。通信遅延は、タスク実行ノード110と第1タスク配備装置100との往復遅延を無視可能な程度に小さいと扱ってもよい。通信遅延は、例えば、インターネットやエッジネットワークを介した第1タスク配備装置100と第2タスク配備装置100との往復通信にかかる往復遅延Tである。
第1取得部1301は、例えば、第1タスク配備装置100と第2タスク配備装置100との通信遅延を取得する。第1取得部1301は、具体的には、エッジ管理DB400を参照し、第1タスク配備装置100と第2タスク配備装置100との通信遅延を取得する。これにより、第1取得部1301は、第2タスク配備装置100から新たなタスクについてタスク実行要求が送信されてくるまでに、少なくともどのくらいの時間がかかるかを特定することができる。そして、第1取得部1301は、タスク実行ノード110に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
算出部1302は、新たなタスクをタスク実行ノード110に実行させる場合における新たなタスクの実行完了時点を特定する情報を生成する。新たなタスクの実行完了時点は、タスク実行ノード110において新たなタスクが実行完了する時点である。算出部1302は、例えば、タスク実行ノード110についてのタスク数およびタスク実行速度に関する情報と、第2タスク配備装置100とタスク実行ノード110との通信遅延に関する情報とに基づいて、新たなタスクの実行完了時点を特定する情報を生成する。
ここで、往復遅延Tが経過する前に、タスク実行キュー1000に格納されたタスクが実行完了しない場合と、タスク実行キュー1000に格納されたタスクが実行完了する場合とがある。算出部1302は、具体的には、タスク実行キュー1000に格納されたタスクが実行完了しない場合、往復遅延Tが経過した後、タスク実行キュー1000に格納されたタスクが実行完了してから新たなタスクが実行されると判断する。算出部1302は、判断した結果に基づいて、新たなタスクの実行完了時点を算出する。
算出部1302は、具体的には、タスク実行キュー1000に格納されたタスクが実行完了する場合、タスク実行キュー1000に格納されたタスクが実行完了した後、往復遅延Tが経過してから新たなタスクが実行されると判断する。算出部1302は、判断した結果に基づいて、新たなタスクの実行完了時点を算出する。往復遅延Tが経過するまでは、例えば、タスク実行ノード110は、何らかのタスクを実行していてもよい。これにより、算出部1302は、第2タスク配備装置100において、新たなタスクの実行完了時点を精度よく特定することができるように、新たなタスクの実行完了時点を特定する情報を生成することができる。
算出部1302は、例えば、第2タスク配備装置100が複数存在する場合、タスク実行ノード110との通信遅延が相対的に小さい第2タスク配備装置100を選択してもよい。そして、算出部1302は、選択した第2タスク配備装置100とタスク実行ノード110との通信遅延に関する情報に基づいて、新たなタスクをタスク実行ノード110に実行させる場合における新たなタスクの実行完了時点を特定する情報を生成する。
これにより、算出部1302は、通信遅延が相対的に小さいため、新たなタスクのタスク実行要求を送信してくる確率が相対的に大きいと判断される第2タスク配備装置100について、タスク実行完了時点を算出することができる。そして、算出部1302は、算出したタスク実行完了時点を用いて、第2タスク配備装置100から新たなタスクのタスク実行要求を受けやすくすることができる。
算出部1302は、例えば、第2タスク配備装置100が複数存在する場合、第2タスク配備装置100に関する処理負荷が相対的に大きい第2タスク配備装置100を選択してもよい。第2タスク配備装置100に関する処理負荷は、第2タスク配備装置100にかかる処理負荷である。第2タスク配備装置100に関する処理負荷は、第2タスク配備装置100が管理する1以上のタスク実行ノード110にかかる処理負荷であってもよい。そして、算出部1302は、選択した第2タスク配備装置100とタスク実行ノード110との通信遅延に関する情報に基づいて、新たなタスクをタスク実行ノード110に実行させる場合における新たなタスクの実行完了時点を特定する情報を生成する。
これにより、算出部1302は、処理負荷が相対的に大きいため、新たな処理の実行要求を送信してくる確率が相対的に大きいと判断される第2タスク配備装置100について、タスク実行完了時点を算出することができる。そして、算出部1302は、算出したタスク実行完了時点を用いて、第2タスク配備装置100から新たな処理の実行要求を受けやすくすることができる。
算出部1302は、1以上のタスク実行ノード110から、タスク数が相対的に小さいタスク実行ノード110を選択する。算出部1302は、選択したタスク実行ノード110についてのタスク数およびタスク実行速度に関する情報と、第2タスク配備装置100とタスク実行ノード110との通信遅延に関する情報とに基づいて、新たなタスクの実行完了時点を特定する情報を生成する。新たなタスクの実行完了時点は、具体的には、新たなタスクを、選択したタスク実行ノード110に実行させる場合における実行完了時点である。
これにより、算出部1302は、今後生成されうる新しいタスクを実行させる可能性が比較的高く、今後生成されうる新しいタスクが生成されてから実行完了するまでにかかる時間が比較的短いようなタスク実行ノード110を選択することができる。このため、算出部1302は、第2タスク配備装置100から新しいタスクのタスク実行要求を受けやすくすることができる。そして、算出部1302は、アイドルタスクを追加したのに新しいタスクが実行されず、演算リソースなどを浪費してしまうタスク実行ノード110を発生しにくくすることができる。
追加部1303は、タスク実行キュー1000におけるタスク数を取得した際、タスク実行ノード110に、通信遅延に対応するタスク時間に基づいて、タスク実行キュー1000に対して所定数のダミータスクを追加させる。ダミータスクは、アイドルタスクである。
追加部1303は、例えば、タスク実行ノード110に、タスク実行キュー1000に対応するタスク時間が通信遅延に対応するタスク時間になるまでタスク実行キュー1000に対して第1アイドルタスクを追加させる。追加部1303は、さらに、新たなタスクと置換可能な第2アイドルタスクをタスク実行キュー1000に対して追加させる。
追加部1303は、具体的には、タスク実行ノード110に、タスク実行キュー1000に対してアイドルタスクを追加させる実行順序確保依頼を送信する。これにより、追加部1303は、今後新たなタスクが生成された場合に、新たなタスクと入れ替えることができるアイドルタスクを、タスク実行キュー1000に追加しておくことができる。
置換部1304は、第2タスク配備装置100から新たなタスクの実行要求を受け付けた場合、タスク実行ノード110に、タスク実行キュー1000に追加されたアイドルタスクを、新たなタスクと置換させる。これにより、置換部1304は、タスク実行ノード110で、第2タスク配備装置100からの新たなタスクを、算出したタスク実行完了時点までに実行完了するようにすることができる。
置換部1304は、所定のデータを受け付けたことに応じて、所定のデータに基づいて新たに第2タスクを生成した場合、タスク実行ノード110に、タスク実行キュー1000に追加された第1アイドルタスクを、生成した第2タスクと置換させる。これにより、置換部1304は、タスク実行ノード110が、第2タスク配備装置100からの新たなタスクを実行開始するまでに、第2タスクを実行可能にし、タスク実行ノード110を効率的に活用することができる。
第1出力部1305は、タスク実行ノード110について生成した実行完了時点を特定する情報を、第2タスク配備装置100に送信する。第1出力部1305は、第2タスク配備装置100が複数存在する場合、タスク実行ノード110について生成した実行完了時点を特定する情報を、選択した第2タスク配備装置100に送信する。これにより、第1出力部1305は、第2タスク配備装置100で生成した新たなタスクをタスク実行ノード110に実行させると、いつまでに実行完了されるのかを、第2タスク配備装置100が精度よく特定可能にすることができる。
第1出力部1305は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、第1出力部1305は、各機能部の処理結果を利用者に通知可能にし、第1タスク配備装置100の利便性の向上を図ることができる。
第2タスク配備装置100は、第2記憶部1310と、第2取得部1311と、生成部1312と、決定部1313と、第2出力部1314とを含む。第2記憶部1310は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、第2記憶部1310が、タスク配備装置100に含まれる場合について説明するが、これに限らない。例えば、第2記憶部1310が、タスク配備装置100とは異なる装置に含まれ、第2記憶部1310の記憶内容がタスク配備装置100から参照可能である場合があってもよい。
第2取得部1311〜第2出力部1314は、制御部となる機能である。第2取得部1311〜第2出力部1314は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
第2記憶部1310は、1以上のノードを管理する情報を記憶する。ノードは、例えば、図8に示したタスク実行ノード110である。第2記憶部1310は、広域分散システム200に含まれる1以上のエッジEgを管理する情報を記憶する。第2記憶部1310は、例えば、図4に示したエッジ管理DB400を記憶する。第2記憶部1310は、タスク実行ノード110に実行させるタスクの実行完了時点を記憶する。タスクは、例えば、タスクである。第2記憶部1310は、例えば、図5に示したオファー情報DB500を記憶する。
第2記憶部1310は、タスクを管理する情報を記憶する。第2記憶部1310は、例えば、図6に示したタスク管理DB600を記憶する。第2記憶部1310は、タスクに用いられるタスク対象データを管理する情報を記憶する。第2記憶部1310は、例えば、図7に示したデータ管理DB700を記憶する。これにより、第2記憶部1310は、各機能部に、図4〜図7に示した各種DBの記憶内容を参照させることができる。
第2取得部1311は、第1タスク配備装置100から、第2タスク配備装置100とタスク実行ノード110との通信遅延に関する情報に基づいて生成された、新たなタスクの実行完了時点を特定する情報を受け付ける。第2取得部1311は、例えば、第1タスク配備装置100が複数存在する場合、それぞれの第1タスク配備装置100から、新たなタスクの実行完了時点を特定する情報を受け付ける。
これにより、第2取得部1311は、今後、自装置で新たなタスクを生成した場合、新たなタスクをタスク実行ノード110に実行させると、いつまでに実行完了されるのかを精度よく特定可能にすることができる。また、第2取得部1311は、第1タスク配備装置100が複数存在する場合、いずれの第1タスク配備装置100が管理するタスク実行ノード110が、新たなタスクを相対的に早く実行完了することができるかを特定可能にすることができる。
第2取得部1311は、新たなタスクの実行結果の送信期限を取得してもよい。送信期限は、デッドラインである。第2取得部1311は、例えば、データ生成装置201の処理対象データを用いる新たなタスクを生成した場合に、新たなタスクの実行結果の送信先になる端末装置204から、デッドラインを含む実行要求を受信する。
第2取得部1311は、第1取得部1301と同様に、第2タスク配備装置100が管理するタスク実行ノード110についての処理数と、第2タスク配備装置100が管理するタスク実行ノード110における処理実行速度に関する情報とを取得してもよい。また、第2取得部1311は、第2タスク配備装置100と、第2タスク配備装置100が管理するタスク実行ノード110との通信遅延に関する情報を取得してもよい。
生成部1312は、所定のデータを受け付けたことに応じて、所定のデータに基づいて新たなタスクを生成する。これにより、生成部1312は、新たなタスクを生成することができる。
決定部1313は、新たなタスクを生成した場合、受け付けた情報によって特定される実行完了時点に基づいて、タスク実行ノード110に、生成した新たなタスクを実行させるか否かを決定する。これにより、決定部1313は、タスク実行ノード110に、新たなタスクを実行させた場合、所定の期限までに実行完了するか否かを精度よく判断することができ、所定の期限までに新たなタスクが実行完了するように配備しやすくすることができる。
決定部1313は、受け付けた情報によって特定される実行完了時点が、取得した送信期限より前になるタスク実行ノード110を、新たなタスクを実行させるタスク実行ノード110に決定してもよい。これにより、決定部1313は、新たなタスクが送信期限までに実行完了する確率を向上させることができる。
決定部1313は、受け付けた情報によって特定される実行完了時点が現時点に最も近くなるタスク実行ノード110を、新たなタスクを実行させるタスク実行ノード110に決定してもよい。これにより、決定部1313は、新たなタスクが送信期限までに実行完了する確率を向上させることができる。
決定部1313は、第2タスク配備装置100が新たに生成する第2タスクを、第2タスク配備装置100が管理するタスク実行ノード110に実行させる場合における第2タスクの実行完了時点を特定する情報を生成してもよい。そして、決定部1313は、新たなタスクを生成した場合、生成した新たなタスクの実行完了時点を特定する情報に基づいて、第2タスク配備装置100が管理するタスク実行ノード110に、生成した新たなタスクを実行させるか否かを決定する。
これにより、決定部1313は、第1タスク配備装置100からのオファー情報がない場合に、第2タスク配備装置100が管理するタスク実行ノード110に、新たなタスクを実行させることができる。また、決定部1313は、第1タスク配備装置100が管理するタスク実行ノード110より、第2タスク配備装置100が管理するタスク実行ノード110の方が、新たなタスクを高速に実行可能であるか否かを判定する。決定部1313は、第2タスク配備装置100が管理するタスク実行ノード110の方が、新たなタスクを高速に実行可能である場合に、第2タスク配備装置100が管理するタスク実行ノード110に、新たなタスクを実行させることができる。
第2出力部1314は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、第2出力部1314は、各機能部の処理結果を利用者に通知可能にし、第2タスク配備装置100の利便性の向上を図ることができる。
タスク実行ノード110は、第3記憶部1320と、第3取得部1321と、実行部1322と、第3出力部1323とを含む。第3記憶部1320は、例えば、図8に示したメモリ802や記録媒体805などの記憶領域によって実現される。以下では、第3記憶部1320が、タスク配備装置100に含まれる場合について説明するが、これに限らない。例えば、第3記憶部1320が、タスク配備装置100とは異なる装置に含まれ、第3記憶部1320の記憶内容がタスク配備装置100から参照可能である場合があってもよい。
第3取得部1321〜第3出力部1323は、制御部となる機能である。第3取得部1321〜第3出力部1323は、具体的には、例えば、図8に示したメモリ802や記録媒体805などの記憶領域に記憶されたプログラムをCPU801に実行させることにより、または、ネットワークI/F803により、その機能を実現する。各機能部の処理結果は、例えば、図8に示したメモリ802や記録媒体805などの記憶領域に記憶される。
第3記憶部1320は、実行するタスクを管理する情報を記憶する。第3記憶部1320は、例えば、図9に示したキュー状態DB900を記憶する。第3記憶部1320は、実行するタスクを記憶する。第3記憶部1320は、例えば、図10に示したタスク実行キュー1000を記憶する。第3記憶部1320は、タスクが用いる処理対象データを記憶する。第3記憶部1320は、例えば、図11に示したデータ管理DB1100を記憶する。これにより、第3記憶部1320は、各機能部に各種DBの記憶内容を参照させることができる。
第3取得部1321は、アイドルタスクをタスク実行キュー1000に追加する実行順序確保依頼を取得する。第3取得部1321は、実行順序確保依頼を第1タスク配備装置100から受信する。これにより、第3取得部1321は、タスク実行キュー1000に、今後生成される新たなタスクの実行順序を確保することができる。
第3取得部1321は、タスク実行キュー1000のアイドルタスクを新たなタスクに置換する置換要求を取得する。第3取得部1321は、例えば、置換要求を第1タスク配備装置100から受信する。これにより、第3取得部1321は、確保しておいた実行順序で、新たなタスクを実行可能にすることができる。
実行部1322は、タスク実行キュー1000のタスクを取り出して実行する。実行部1322は、タスク実行キュー1000のタスクを取り出し、取り出したタスクを実行完了してから、タスク実行キュー1000から次のタスクを取り出す。これにより、実行部1322は、タスクの実行順序を確保することができる。
実行部1322は、第3取得部1321が実行順序確保依頼を取得した場合、アイドルタスクをタスク実行キュー1000に追加する。これにより、実行部1322は、タスク実行キュー1000に、今後生成される新たなタスクの実行順序を確保することができる。
実行部1322は、第3取得部1321が置換要求を取得した場合、タスク実行ノード110のアイドルタスクを新たなタスクと置換する。これにより、第3取得部1321は、確保しておいた実行順序で、新たなタスクを実行可能にすることができる。
第3出力部1323は、第1タスク配備装置100からの問い合わせに応じて、キュー状態DB900の記憶内容を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F803による外部装置への送信、または、メモリ802や記録媒体805などの記憶領域への記憶である。第3出力部1323は、第1タスク配備装置100からの実行要求に応じて、実行部1322の実行結果を出力してもよい。第3出力部1323は、各機能部の処理結果を出力してもよい。
(第1タスク配備装置100と第2タスク配備装置100とタスク実行ノード110との具体的な機能的構成例)
次に、図14を用いて、第1タスク配備装置100と第2タスク配備装置100とタスク実行ノード110との具体的な機能的構成例について説明する。
図14は、第1タスク配備装置100と第2タスク配備装置100とタスク実行ノード110との具体的な機能的構成例を示す説明図である。第1タスク配備装置100は、図4に示したエッジ管理DB400と、図5に示したオファー情報DB500と、図6に示したタスク管理DB600と、図7に示したデータ管理DB700とを有する。
第1タスク配備装置100は、オファー先エッジ選択部1401と、分散リソース管理部1402と、タスク実行完了時点見積もり部1403と、オファー管理部1405とを有する。また、第1タスク配備装置100は、タスク管理部1406と、タスク配備場所決定部1407と、送受信部1409とを有する。
一方で、タスク実行ノード110は、図9に示したキュー状態DB900と、図10に示したタスク実行キュー1000と、図11に示したデータ管理DB1100とを有する。タスク実行ノード110は、実行順序制御部1404と、タスク実行部1408とを有する。
オファー先エッジ選択部1401は、エッジ管理DB400を参照し、オファー情報を送信するオファー先エッジを選択する。オファー先エッジ選択部1401は、選択したオファー先エッジを、分散リソース管理部1402に出力する。
分散リソース管理部1402は、タスク実行ノード110を選択し、選択したタスク実行ノード110に、タスク実行ノード110に対応するタスク実行キュー1000におけるタスク数の問い合わせを送信する。そして、分散リソース管理部1402は、キュー状態DB900の記憶内容を示す第10のメッセージM10を受信する。第10のメッセージM10の一例は、例えば、図24に後述する。
分散リソース管理部1402は、タスク実行完了時点見積もり部1403に、選択したタスク実行ノード110に新たなタスクを実行させた場合におけるタスク実行完了時点を算出させる。分散リソース管理部1402は、タスク実行完了時点をタスク実行完了時点見積もり部1403から受け付け、オファー管理部1405に出力する。
分散リソース管理部1402は、タスク実行完了時点に基づいて、タスク実行ノード110の実行順序制御部1404に、実行順序確保依頼として、第11のメッセージM11を送信する。実行順序確保依頼は、タスク実行ノード110が実行するタスクが格納されるタスク実行キュー1000にアイドルタスクを追加させる依頼である。第11のメッセージM11の一例は、例えば、図25に後述する。
また、分散リソース管理部1402は、アイドルタスクを削除させる削除要求として、第12のメッセージM12を送信する。第12のメッセージM12の一例は、例えば、図26に後述する。これにより、分散リソース管理部1402は、新たなタスクの実行順序を確保しておくことができる。また、分散リソース管理部1402は、新たなタスクと置換しないアイドルタスクを、タスク実行キュー1000から削除させることができる。
タスク実行完了時点見積もり部1403は、エッジ管理DB400を参照し、第1タスク配備装置100と第2タスク配備装置100との往復NW遅延を取得する。タスク実行完了時点見積もり部1403は、往復NW遅延に基づいて、タスク実行ノード110に新たなタスクを実行させた場合におけるタスク実行完了時間を算出し、現時点からタスク実行完了時間が経過したタスク実行完了時点を算出する。タスク実行完了時点見積もり部1403は、タスク実行完了時点を、分散リソース管理部1402に出力する。
オファー管理部1405は、タスク実行完了時点を含むオファー情報を生成し、送受信部1409に出力する。オファー管理部1405は、タスク実行完了時点を含むオファー情報を生成し、オファー情報DB500を用いて記憶してもよい。これにより、オファー管理部1405は、新たなタスクを実行可能なタスク実行ノード110を管理し、新たなタスクをタスク実行ノード110に実行させた場合のタスク実行完了時点を管理することができる。
送受信部1409は、オファー先エッジに含まれる第2タスク配備装置100に、生成したオファー情報を、第13のメッセージM13として送信する。第13のメッセージM13の一例は、例えば、図27に後述する。
送受信部1409は、第13のメッセージM13を送信した結果、オファー辞退メッセージとして、第14のメッセージM14を受信すると、オファー管理部1405を介して、分散リソース管理部1402に出力する。第14のメッセージM14の一例は、例えば、図28に後述する。一方で、分散リソース管理部1402は、オファー辞退メッセージを受信すると、アイドルタスクを削除させる削除要求として、第12のメッセージM12を送信する。
送受信部1409は、第13のメッセージM13を送信した結果、タスク実行キュー1000のアイドルタスクを新たなタスクに置き換える置換要求として、第15のメッセージM15を受信し、タスク管理部1406に出力する。第15のメッセージM15の一例は、例えば、図29に後述する。
タスク管理部1406は、置換要求として、第15のメッセージM15を受信し、処理対象データを、データ管理DB700を用いて記憶する。タスク管理部1406は、新たなタスクについてのタスク管理情報を、タスク管理DB600を用いて記憶する。タスク管理部1406は、第3のメッセージM3として、タスク実行キュー1000のアイドルタスクを新たなタスクに置き換える置換要求を、実行順序制御部1404に送信する。実行順序制御部1404は、タスク実行キュー1000のアイドルタスクを新たなタスクに置き換える置換要求を受信すると、タスク実行キュー1000のアイドルタスクを新たなタスクに置き換える。
送受信部1409は、第2タスク配備装置100から、タスクの実行結果として、第16のメッセージM16を受信する。送受信部1409は、受信した第16のメッセージM16を、タスク管理部1406に送信する。第16のメッセージM16の一例は、例えば、図30に後述する。
送受信部1409は、第2タスク配備装置100からオファー情報を受信する場合があってもよい。この場合、送受信部1409は、オファー管理部1405を介して、オファー情報を、オファー情報DB500を用いて記憶する。これにより、オファー管理部1405は、新たなタスクを実行可能な、他のエッジEgに含まれるタスク実行ノード110を管理し、新たなタスクをタスク実行ノード110に実行させた場合のタスク実行完了時点を管理することができる。
データ生成装置201は、入力データとして、第1のメッセージM1を受信ノード202に送信する。第1のメッセージM1の一例は、例えば、図15に後述する。受信ノード202は、第1のメッセージM1を、第2のメッセージM2としてタスク管理部1406に転送する。第2のメッセージM2の一例は、例えば、図16に後述する。
実行順序制御部1404は、実行順序確保依頼として、第11のメッセージM11を受信すると、タスク実行キュー1000にアイドルタスクを追加する。実行順序制御部1404は、削除要求として、第12のメッセージM12を受信すると、タスク実行キュー1000のアイドルタスクを削除する。実行順序制御部1404は、タスク実行キュー1000のアイドルタスクを新たなタスクに置き換える置換要求として、第3のメッセージM3を受信すると、タスク実行キュー1000のアイドルタスクを新たなタスクに置き換える。第3のメッセージM3の一例は、例えば、図17に後述する。
タスク管理部1406は、入力データを、受信ノード202から受信する。タスク管理部1406は、入力データを、データ管理DB700を用いて記憶する。タスク管理部1406は、入力データに基づいて、新たなタスクを生成する。タスク管理部1406は、新たなタスクについてのタスク管理情報を、タスク管理DB600を用いて記憶する。タスク管理部1406は、新たなタスクを生成すると、タスク配備場所決定部1407に、新たなタスクの配備場所の決定依頼を送信する。
タスク配備場所決定部1407は、オファー情報DB500を参照し、新たなタスクの配備場所を決定する。タスク配備場所決定部1407は、例えば、応答遅延最小化のアルゴリズムにしたがって、タスク実行完了時点が現時点に最も近くなるタスク実行ノード110を、配備場所に決定する。タスク配備場所決定部1407は、例えば、利用者DB1200を参照し、デッドライン充足率最大化のアルゴリズムにしたがって、タスク実行完了時点がデッドラインよりも前になるタスク実行ノード110を、配備場所に決定してもよい。タスク配備場所決定部1407は、利用者DB1200を参照し、応答遅延最小化のアルゴリズムと、デッドライン充足率最大化のアルゴリズムとを使い分けてもよい。
タスク実行部1408は、タスク実行キュー1000から順にタスク管理情報を取り出し、データ管理DB1100を参照してタスクを実行する。タスク実行部1408は、タスク実行ノード110を用いて、タスクの実行結果として、第4のメッセージM4をタスク管理部1406に送信する。第4のメッセージM4の一例は、例えば、図18に後述する。
配信ノード203は、タスク管理部1406から、第5のメッセージM5として、タスク実行部1408からの第4のメッセージM4または第16のメッセージM16を転送される。第5のメッセージM5の一例は、例えば、図19に後述する。配信ノード203は、利用者DB1200から、利用者情報として、第6のメッセージM6を取得し、タスク管理部1406に送信する。第6のメッセージM6の一例は、例えば、図20に後述する。配信ノード203は、第7のメッセージM7として、タスク管理部1406から受信した第5のメッセージM5を、端末装置204に送信する。第7のメッセージM7の一例は、例えば、図21に後述する。
端末装置204は、タスクの実行結果として、第7のメッセージM7を受信する。端末装置204は、利用者の操作入力によって、タスクに対するデッドラインを受け付ける。端末装置204は、デッドラインを示す第8のメッセージM8を、利用者DB1200に入力する。第8のメッセージM8は、例えば、図22に後述する。利用者DB1200の利用者情報は、第9のメッセージM9として、タスク配備場所決定部1407に入力される。第9のメッセージM9は、例えば、図23に後述する。
(第1のメッセージM1の一例)
ここで、図15〜図26を用いて、図14に示した第1タスク配備装置100の各部と、第2タスク配備装置100の各部と、タスク実行ノード110の各部との間において送受信される、各種メッセージの一例について説明する。まず、図15を用いて、第1のメッセージM1の一例について説明する。
図15は、第1のメッセージM1の一例を示す説明図である。図15に示すように、第1のメッセージM1は、例えば、送信元アドレスと、宛先アドレスと、入力データとを含む。入力データは、フォーマットが任意であるデータである。第1のメッセージM1は、データ生成装置201から受信ノード202に送信される。
(第2のメッセージM2の一例)
次に、図16を用いて、第2のメッセージM2の一例について説明する。
図16は、第2のメッセージM2の一例を示す説明図である。図16に示すように、第2のメッセージM2は、例えば、送信元アドレスと、宛先アドレスと、入力データとを含む。入力データは、フォーマットが任意であるデータである。第2のメッセージM2は、受信ノード202から第1タスク配備装置100に送信される。
(第3のメッセージM3の一例)
次に、図17を用いて、第3のメッセージM3の一例について説明する。
図17は、第3のメッセージM3の一例を示す説明図である。図17に示すように、第3のメッセージM3は、送信元アドレスと、宛先アドレスと、タスクIDと、処理対象データとを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。処理対象データは、フォーマットが任意であるデータである。第3のメッセージM3は、第1タスク配備装置100からタスク実行ノード110に送信される。
(第4のメッセージM4の一例)
次に、図18を用いて、第4のメッセージM4の一例について説明する。
図18は、第4のメッセージM4の一例を示す説明図である。図18に示すように、第4のメッセージM4は、送信元アドレスと、宛先アドレスと、タスクIDと、実行結果データとを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。実行結果データは、フォーマットが任意であるデータである。第4のメッセージM4は、タスク実行ノード110から第1タスク配備装置100に送信される。
(第5のメッセージM5の一例)
次に、図19を用いて、第5のメッセージM5の一例について説明する。
図19は、第5のメッセージM5の一例を示す説明図である。図19に示すように、第5のメッセージM5は、送信元アドレスと、宛先アドレスと、タスクIDと、実行結果データとを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。実行結果データは、フォーマットが任意であるデータである。第5のメッセージM5は、タスク管理部1406から配信ノード203に送信される。
(第6のメッセージM6の一例)
次に、図20を用いて、第6のメッセージM6の一例について説明する。
図20は、第6のメッセージM6の一例を示す説明図である。図20に示すように、第6のメッセージM6は、送信元アドレスと、宛先アドレスと、タスクIDと、利用者アドレスとを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。利用者アドレスは、タスクの実行結果を送信する端末装置204を示すアドレスである。第6のメッセージM6は、利用者DB1200から配信ノード203に送信される。
(第7のメッセージM7の一例)
次に、図21を用いて、第7のメッセージM7の一例について説明する。
図21は、第7のメッセージM7の一例を示す説明図である。図21に示すように、第7のメッセージM7は、送信元アドレスと、宛先アドレスと、タスクIDと、実行結果データとを含む。タスクIDは、タスク実行ノード110に実行させたタスクを特定するIDである。実行結果データは、フォーマットが任意であるデータである。第7のメッセージM7は、配信ノード203から端末装置204に送信される。
(第8のメッセージM8の一例)
次に、図22を用いて、第8のメッセージM8の一例について説明する。
図22は、第8のメッセージM8の一例を示す説明図である。図22に示すように、第8のメッセージM8は、送信元アドレスと、宛先アドレスと、タスクIDと、制約条件とを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。
制約条件は、例えば、要求アルゴリズムと、要求時間とを含む。要求アルゴリズムは、デッドライン充足率最大化、または、応答遅延最小化である。デッドライン充足率最大化は、タスクをデッドラインまでに実行完了可能なタスク実行ノード110に、タスクを割り当てるアルゴリズムである。応答遅延最小化は、タスクの実行完了時点が現時点に最も近く、タスクの実行完了時点が最小になるタスク実行ノード110に、タスクを割り当てるアルゴリズムである。要求時間は、タスクの実行結果を送信する期限を示すデッドラインである。第8のメッセージM8は、端末装置204から利用者DB1200に入力される。
(第9のメッセージM9の一例)
次に、図23を用いて、第9のメッセージM9の一例について説明する。
図23は、第9のメッセージM9の一例を示す説明図である。図23に示すように、第9のメッセージM9は、送信元アドレスと、宛先アドレスと、タスクIDと、制約条件とを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。
制約条件は、例えば、要求アルゴリズムと、要求時間とを含む。要求アルゴリズムは、デッドライン充足率最大化、または、応答遅延最小化である。デッドライン充足率最大化は、タスクをデッドラインまでに実行完了可能なタスク実行ノード110に、タスクを割り当てるアルゴリズムである。応答遅延最小化は、タスクの実行完了時点が現時点に最も近く、タスクの実行完了時点が最小になるタスク実行ノード110に、タスクを割り当てるアルゴリズムである。要求時間は、タスクの実行結果を送信する期限を示すデッドラインである。第9のメッセージM9は、利用者DB1200から第1タスク配備装置100に入力される。
(第10のメッセージM10の一例)
次に、図24を用いて、第10のメッセージM10の一例について説明する。
図24は、第10のメッセージM10の一例を示す説明図である。図24に示すように、第10のメッセージM10は、送信元アドレスと、宛先アドレスと、キュー状態とを含む。キュー状態は、例えば、タスク実行ノードIDと、既存タスク数と、平均処理実行速度とを含む。タスク実行ノードIDは、タスク実行ノード110を特定するIDである。既存タスク数は、タスク実行ノードIDが示すタスク実行ノード110が有するタスク実行キュー1000の先頭から空きまでの既存タスク数である。平均処理実行速度は、タスク実行ノードIDが示すタスク実行ノード110が、過去に実行した全タスクの平均処理実行速度である。第10のメッセージM10は、タスク実行ノード110から第1タスク配備装置100に送信される。
(第11のメッセージM11の一例)
次に、図25を用いて、第11のメッセージM11の一例について説明する。
図25は、第11のメッセージM11の一例を示す説明図である。図25に示すように、第11のメッセージM11は、送信元アドレスと、宛先アドレスと、実行順序確保とを含む。実行順序確保は、例えば、タスク実行ノードIDを含む。タスク実行ノードIDは、アイドルタスクをタスク実行キュー1000に追加させ、今後生成されうる新たなタスクの実行順序を確保させるタスク実行ノード110を特定するIDである。第11のメッセージM11は、第1タスク配備装置100からタスク実行ノード110に送信される。
(第12のメッセージM12の一例)
次に、図26を用いて、第12のメッセージM12の一例について説明する。
図26は、第12のメッセージM12の一例を示す説明図である。図26に示すように、第12のメッセージM12は、送信元アドレスと、宛先アドレスと、実行順序解放とを含む。実行順序解放は、例えば、タスク実行ノードIDと、タスクIDとを含む。タスク実行ノードIDは、アイドルタスクをタスク実行キュー1000に追加させたタスク実行ノード110を特定するIDである。タスクIDは、タスク実行キュー1000から削除するアイドルタスクを特定するIDである。第12のメッセージM12は、第1タスク配備装置100からタスク実行ノード110に送信される。
(第13のメッセージM13の一例)
次に、図27を用いて、第13のメッセージM13の一例について説明する。
図27は、第13のメッセージM13の一例を示す説明図である。図27に示すように、第13のメッセージM13は、送信元アドレスと、宛先アドレスと、メッセージIDと、エッジIDと、タスクIDと、タスク実行完了時点とを含む。メッセージIDは、オファー情報であることを特定するIDである。エッジIDは、送信元のエッジEgを特定するIDである。タスクIDは、タスク実行キュー1000に追加したアイドルタスクを特定するIDである。タスク実行完了時点は、アイドルタスクと置換するタスクについてのタスク実行完了時点である。第13のメッセージM13は、第1タスク配備装置100から第2タスク配備装置100に送信される。
(第14のメッセージM14の一例)
次に、図28を用いて、第14のメッセージM14の一例について説明する。
図28は、第14のメッセージM14の一例を示す説明図である。図28に示すように、第14のメッセージM14は、送信元アドレスと、宛先アドレスと、メッセージIDと、エッジIDと、タスクIDとを含む。メッセージIDは、オファー辞退メッセージであることを特定するIDである。エッジIDは、送信元のエッジEgを特定するIDである。タスクIDは、タスク実行キュー1000から削除するアイドルタスクを特定するIDである。第14のメッセージM14は、第2タスク配備装置100から第1タスク配備装置100に送信される。
(第15のメッセージM15の一例)
次に、図29を用いて、第15のメッセージM15の一例について説明する。
図29は、第15のメッセージM15の一例を示す説明図である。図29に示すように、第15のメッセージM15は、送信元アドレスと、宛先アドレスと、メッセージIDと、タスクIDと、処理対象データとを含む。メッセージIDは、置換要求であることを特定するIDである。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。処理対象データは、フォーマットが任意であるデータである。第15のメッセージM15は、第2タスク配備装置100から第1タスク配備装置100に送信される。
(第16のメッセージM16の一例)
次に、図30を用いて、第16のメッセージM16の一例について説明する。
図30は、第16のメッセージM16の一例を示す説明図である。図30に示すように、第16のメッセージM16は、送信元アドレスと、宛先アドレスと、メッセージIDと、エッジIDと、タスクIDと、実行結果データとを含む。メッセージIDは、実行結果であることを特定するIDである。エッジIDは、送信元のエッジEgを特定するIDである。タスクIDは、タスク実行ノード110に実行させたタスクを特定するIDである。実行結果データは、フォーマットが任意であるデータである。第16のメッセージM16は、第2タスク配備装置100から第1タスク配備装置100に送信される。
(配備場所を決定する実施例1)
次に、図31〜図38を用いて、配備場所を決定する実施例1について説明する。
図31〜図38は、配備場所を決定する実施例1を示す説明図である。図31において、エッジAに、第1タスク配備装置100と、タスク実行ノード110とが含まれる。一方で、エッジBに、第2タスク配備装置100が含まれる。オファー先エッジ選択部1401は、エッジ管理DB400を参照し、オファー先エッジとしてエッジBを選択したとする。
ここで、分散リソース管理部1402は、タスク実行ノード110の実行順序制御部1404から、タスク実行キュー1000に格納されたタスク3101,3102の数として、既存タスク数K=2の通知を受け付け、キュー状態DB900に記憶する。分散リソース管理部1402は、エッジ管理DB400とキュー状態DB900とを参照し、タスク実行完了時点見積もり部1403を制御し、第2タスク配備装置100から受信しうる新たなタスクのタスク実行完了時点Exを算出する。
タスク実行完了時点見積もり部1403は、分散リソース管理部1402から、既存タスク数K=2と、平均処理実行速度μとを取得する。タスク実行完了時点見積もり部1403は、タスク数Kと平均処理実行速度μとに基づいて、現在タスク実行キュー1000に格納されたタスク3101,3102についてのタスク実行完了時間E=K/μを算出する。タスク実行完了時点見積もり部1403は、分散リソース管理部1402から、オファー先エッジであるエッジBとの往復NW遅延Tを取得する。ここで、図32の説明に移行し、往復NW遅延Tについて説明する。
図32に示すように、往復NW遅延Tは、オファー情報を送信するオファー送信側である第1タスク配備装置100から、オファー情報を受信するオファー受信側である第2タスク配備装置100へと、オファー情報を送信する際にかかる時間を含む。また、往復NW遅延Tは、オファー情報を受信するオファー受信側である第2タスク配備装置100から、オファー情報を送信するオファー送信側である第1タスク配備装置100へと、実行要求するタスクを送信する際にかかる時間を含む。
ここで、往復NW遅延Tは、さらに、第2タスク配備装置100がオファー情報を受信したことに応じて、タスクの配備場所を決定する際にかかる処理時間3201を含むようにしてもよい。これにより、第1タスク配備装置100は、第2タスク配備装置100からタスクが送られてくるまでにかかる時間を、精度よく特定することができる。
第1タスク配備装置100は、例えば、過去に第2タスク配備装置100にオファー情報を送信し、第2タスク配備装置100からタスクまたはオファー辞退メッセージが送られてくるまでにかかった平均時間を算出し、往復NW遅延Tとして用いる。これにより、第1タスク配備装置100は、処理時間3201を含む往復NW遅延Tを記憶することができる。ここで、図31の説明に戻る。
図31の説明に戻り、タスク実行完了時点見積もり部1403は、往復NW遅延T>タスク実行完了時間Eであると判断する。次に、タスク実行完了時点見積もり部1403は、タスク実行キュー1000に格納されたタスク3101,3102が実行完了した後、往復遅延Tが経過するまでに、何らかのタスク3103,3104を実行開始してもよいと判断する。そして、タスク実行完了時点見積もり部1403は、何らかのタスク3103,3104を実行開始してから、今後第2タスク配備装置100から受信しうるタスク3105を実行開始すると判断する。
このため、タスク実行完了時点見積もり部1403は、何らかのタスク3103,3104の数を、第2タスク配備装置100から受信しうるタスク3105を実行開始するまでに実行されてもよい仮タスク数=2として算出する。タスク実行完了時点見積もり部1403は、タスク数K=2に仮タスク数=2を加算する。
タスク実行完了時点見積もり部1403は、既存タスク数K=4にさらに1を加算し、今後第2タスク配備装置100から受信し、タスク実行キュー1000に追加されうる新たなタスク3105を含めた、タスク数K=5を算出する。タスク実行完了時点見積もり部1403は、キュー状態DB900を参照して、タスク数K=5と、CPU801の平均処理実行速度μとに基づいて、タスク実行完了時間E=K/μを算出する。タスク実行完了時点見積もり部1403は、現時点からタスク実行完了時間Eが経過した後のタスク実行完了時点Exを算出する。ここで、図33の説明に移行する。
図33において、分散リソース管理部1402は、タスク実行完了時点見積もり部1403からタスク実行完了時点Exを取得し、実行順序確保依頼を生成し、タスク実行ノード110の実行順序制御部1404に送信する。
実行順序制御部1404は、実行順序確保依頼を受信すると、仮タスク数分のアイドルタスク3301,3302を、タスク実行キュー1000に追加する。実行順序制御部1404は、例えば、アイドルタスク3301,3302を特定するIDと、処理対象データとしてNULLとを設定したレコードを、タスク実行キュー1000に追加する。
実行順序制御部1404は、さらに、今後第2タスク配備装置100から受信しうるタスク3105のためのアイドルタスク3303を、タスク実行キュー1000に追加する。実行順序制御部1404は、例えば、アイドルタスク3303を特定するIDと、処理対象データとしてNULLとを設定したレコードを、タスク実行キュー1000に追加する。ここで、図34の説明に移行する。
図34において、第1タスク配備装置100の分散リソース管理部1402は、第1タスク配備装置100のタスク実行完了時点見積もり部1403から取得したタスク実行完了時点Exを、第1タスク配備装置100のオファー管理部1405に送信する。第1タスク配備装置100のオファー管理部1405は、タスク実行完了時点Exを受信する。
第1タスク配備装置100のオファー管理部1405は、タスク実行完了時点Exを含むオファー情報を生成し、第1タスク配備装置100の送受信部1409に出力する。第1タスク配備装置100の送受信部1409は、オファー情報を第2タスク配備装置100の送受信部1409に送信する。
第2タスク配備装置100の送受信部1409は、オファー情報を受信し、第2タスク配備装置100のオファー管理部1405に送信する。第2タスク配備装置100のオファー管理部1405は、オファー情報を、オファー情報DB500に蓄積する。これにより、第2タスク配備装置100は、自装置とは異なるエッジEgに含まれるタスク実行ノード110で、新たなタスクが実行可能であることを記憶しておくことができる。ここで、図35〜図38の説明に移行する。
図35〜図38の例では、第1タスク配備装置100と第2タスク配備装置100とがオファー情報を送信し合い、第1タスク配備装置100で新たなタスクが生成された場合について示している。まず、図35の説明に移行する。
図35において、第1タスク配備装置100のタスク配備場所決定部1407は、オファー情報DB500を参照し、第1タスク配備装置100と同じエッジAに含まれるタスク実行ノード110を配備場所に決定する。第1タスク配備装置100のタスク配備場所決定部1407は、例えば、応答遅延最小化のアルゴリズム、または、デッドライン充足率最大化のアルゴリズムにしたがって配備場所を決定する。
第1タスク配備装置100のタスク配備場所決定部1407は、第1タスク配備装置100のタスク管理部1406に配備場所を通知する。第1タスク配備装置100のタスク管理部1406は、生成された新たなタスクと、処理対象データとを対応付けて、配備場所に決定されたタスク実行ノード110に送信する。
タスク実行ノード110は、新たなタスクと、処理対象データとを受信すると、タスク実行キュー1000のアイドルタスクを、新たなタスクと置換する。タスク実行ノード110は、タスク実行キュー1000からタスクを順に取り出して実行し、実行結果を第1タスク配備装置100に送信する。これにより、新たなタスクの実行結果は、第1タスク配備装置100を介して、端末装置204に配信される。ここで、図36の説明に移行する。
図36において、第1タスク配備装置100のタスク配備場所決定部1407は、オファー情報DB500を参照し、第1タスク配備装置100とは異なるエッジBに含まれるタスク実行ノード110を配備場所に決定する。第1タスク配備装置100のタスク配備場所決定部1407は、例えば、応答遅延最小化のアルゴリズム、または、デッドライン充足率最大化のアルゴリズムにしたがって配備場所を決定する。
第1タスク配備装置100のタスク配備場所決定部1407は、第1タスク配備装置100のタスク管理部1406に配備場所を通知する。第1タスク配備装置100のタスク管理部1406は、生成された新たなタスクと、処理対象データとを対応付けて、第1タスク配備装置100の送受信部1409を介して、第2タスク配備装置100の送受信部1409に送信する。
第2タスク配備装置100の送受信部1409は、新たなタスクと、処理対象データとを対応付けて、第1タスク配備装置100の送受信部1409から受信し、第2タスク配備装置100のタスク管理部1406に送信する。第2タスク配備装置100のタスク管理部1406は、生成された新たなタスクと、処理対象データとを対応付けて、配備場所に決定されたタスク実行ノード110に送信する。
タスク実行ノード110は、新たなタスクと、処理対象データとを受信すると、タスク実行キュー1000のアイドルタスクを、新たなタスクと置換する。タスク実行ノード110は、タスク実行キュー1000からタスクを順に取り出して実行し、実行結果を第2タスク配備装置100に送信する。これにより、新たなタスクの実行結果は、第2タスク配備装置100を介して、端末装置204に配信される。ここで、図37の説明に移行する。
図37において、第1タスク配備装置100のタスク配備場所決定部1407は、図36のように第1タスク配備装置100とは異なるエッジBに含まれるタスク実行ノード110を配備場所に決定したとする。
この場合、第1タスク配備装置100のタスク配備場所決定部1407は、第1タスク配備装置100のオファー管理部1405を介して、第1タスク配備装置100の分散リソース管理部1402に、配備場所を送信する。第1タスク配備装置100の分散リソース管理部1402は、エッジAのタスク実行ノード110が配備場所ではないため、オファー辞退メッセージを生成し、エッジAのタスク実行ノード110に送信する。
ここで、タスク実行ノード110は、オファー辞退通知を受信すると、タスク実行キュー1000のアイドルタスクを削除する。これにより、タスク実行ノード110は、アイドルタスクを実行してしまい、演算リソースや消費電力を浪費することを抑制することができる。
図37において、第1タスク配備装置100のタスク配備場所決定部1407は、図36のように第1タスク配備装置100とは異なるエッジBに含まれるタスク実行ノード110を配備場所に決定したとする。
この場合、第1タスク配備装置100のタスク配備場所決定部1407は、第1タスク配備装置100のオファー管理部1405を介して、第1タスク配備装置100の分散リソース管理部1402に、配備場所を送信する。第1タスク配備装置100の分散リソース管理部1402は、エッジAのタスク実行ノード110が配備場所ではないため、オファー辞退メッセージを生成し、エッジAのタスク実行ノード110に送信する。
ここで、タスク実行ノード110は、オファー辞退通知を受信すると、タスク実行キュー1000のアイドルタスクを削除する。これにより、タスク実行ノード110は、アイドルタスクを実行してしまい、演算リソースや消費電力を浪費することを抑制することができる。次に、図38の説明に移行する。
図38において、第1タスク配備装置100のタスク配備場所決定部1407は、図35のように第1タスク配備装置100と同じエッジAに含まれるタスク実行ノード110を配備場所に決定したとする。
この場合、第1タスク配備装置100のタスク配備場所決定部1407は、第1タスク配備装置100のオファー管理部1405に配備場所を送信する。第1タスク配備装置100のオファー管理部1405は、エッジAのタスク実行ノード110が配備場所であるため、オファー辞退メッセージをエッジBのタスク実行ノード110に届けるため、第1タスク配備装置100の送受信部1409に送信する。第1タスク配備装置100の送受信部1409は、オファー辞退メッセージを、第2タスク配備装置100の送受信部1409に送信する。
第2タスク配備装置100の送受信部1409は、オファー辞退メッセージを、第2タスク配備装置100のオファー管理部1405を介して、第2タスク配備装置100の分散リソース管理部1402に送信する。第2タスク配備装置100の分散リソース管理部1402は、エッジBのタスク実行ノード110が配備場所ではないため、オファー辞退メッセージを、エッジBのタスク実行ノード110に送信する。
ここで、タスク実行ノード110は、オファー辞退通知を受信すると、タスク実行キュー1000のアイドルタスクを削除する。これにより、タスク実行ノード110は、アイドルタスクを実行してしまい、演算リソースや消費電力を浪費することを抑制することができる。
(実施例1における分散リソース管理処理手順の一例)
次に、図39を用いて、第1タスク配備装置100によって実行される、実施例1における分散リソース管理処理手順の一例について説明する。
図39は、実施例1における分散リソース管理処理手順の一例を示すフローチャートである。図39において、第1タスク配備装置100は、エッジ管理DB400を参照し、図40に後述するオファー先エッジの選択処理を実行する(ステップS3901)。
次に、第1タスク配備装置100は、エッジ管理DB400と、キュー状態DB900とを参照し、図41に後述するタスク実行完了時点の算出処理を実行する(ステップS3902)。そして、第1タスク配備装置100は、仮タスク数を含む実行順序確保依頼をタスク実行ノード110に送信し、図42に後述する実行順序確保処理をタスク実行ノード110に実行させる(ステップS3903)。
次に、第1タスク配備装置100は、ステップS3901で選択されたオファー先エッジについて、図44に後述するオファー送信処理を実行する(ステップS3904)。そして、第1タスク配備装置100は、分散リソース管理処理手順を終了する。これにより、第1タスク配備装置100は、自装置と同じエッジEgに含まれるタスク実行ノード110においてタスクを実行可能であることを、他のエッジEgに通知することができる。
(実施例1におけるオファー先エッジの選択処理手順の一例)
次に、図40を用いて、ステップS3901で第1タスク配備装置100によって、オファー先エッジ選択部を用いて実行される、実施例1におけるオファー先エッジの選択処理手順の一例について説明する。
図40は、実施例1におけるオファー先エッジの選択処理手順の一例を示すフローチャートである。図40において、第1タスク配備装置100は、エッジ管理DB400を参照し、オファー先エッジとして、広域分散システム200に含まれる1以上のエッジEgのいずれかのエッジEgをランダムに選択する(ステップS4001)。そして、第1タスク配備装置100は、オファー先エッジの選択処理を終了する。
(実施例1におけるタスク実行完了時点の算出処理手順の一例)
次に、図41を用いて、ステップS3902で第1タスク配備装置100によって、タスク実行完了時点見積もり部を用いて実行される、実施例1におけるタスク実行完了時点の算出処理手順の一例について説明する。
図41は、実施例1におけるタスク実行完了時点の算出処理手順の一例を示すフローチャートである。図41において、第1タスク配備装置100は、キュー状態DB900を参照し、自装置と同じエッジEgに含まれるタスク実行ノード110のタスク実行キュー1000におけるタスク数Kと、平均処理実行速度μとを取得する(ステップS4101)。
次に、第1タスク配備装置100は、タスク数Kと平均処理実行速度μとに基づいて、タスク実行完了時間E=K/μを算出する(ステップS4102)。そして、第1タスク配備装置100は、エッジ管理DB400を参照し、選択されたオファー先エッジとの往復NW遅延Tを取得する(ステップS4103)。
次に、第1タスク配備装置100は、往復NW遅延T>タスク実行完了時間Eであるか否かを判定する(ステップS4104)。ここで、往復NW遅延T>タスク実行完了時間Eである場合(ステップS4104:Yes)、第1タスク配備装置100は、ステップS4105の処理に移行する。一方で、往復NW遅延T≦タスク実行完了時間Eである場合(ステップS4104:No)、第1タスク配備装置100は、ステップS4106の処理に移行する。
ステップS4105では、第1タスク配備装置100は、タスク実行完了時間Eが、往復NW遅延Tを超えるように、タスク実行キュー1000に追加する仮タスク数を算出し、タスク数Kに仮タスク数を加算する(ステップS4105)。そして、第1タスク配備装置100は、ステップS4106の処理に移行する。
ステップS4106では、第1タスク配備装置100は、タスク数Kに1を加算する(ステップS4106)。次に、第1タスク配備装置100は、タスク実行完了時間E=K/μを算出し直し、現時点とタスク実行完了時間Eとに基づいて、タスク実行完了時点Exを算出する(ステップS4107)。そして、第1タスク配備装置100は、タスク実行完了時点の算出処理を終了する。
(実施例1における実行順序確保処理手順の一例)
次に、図42を用いて、ステップS3903でタスク実行ノード110によって、実行順序制御部を用いて実行される、実施例1における実行順序確保処理手順の一例について説明する。
図42は、実施例1における実行順序確保処理手順の一例を示すフローチャートである。図42において、タスク実行ノード110は、仮タスク数を含む実行順序確保依頼を受信する(ステップS4201)。
次に、タスク実行ノード110は、仮タスク数が1以上であるか否かを判定する(ステップS4202)。ここで、仮タスク数が0である場合(ステップS4202:No)、タスク実行ノード110は、ステップS4205の処理に移行する。
一方で、仮タスク数が1以上である場合(ステップS4202:Yes)、タスク実行ノード110は、タスク実行キュー1000の末尾に、仮タスク数分のアイドルタスクを追加する(ステップS4203)。
次に、タスク実行ノード110は、追加した仮タスク数分のアイドルタスクのそれぞれのアイドルタスクについて、図43に後述するオファー情報の登録処理を、第1タスク配備装置100に実行させる(ステップS4204)。そして、タスク実行ノード110は、ステップS4205の処理に移行する。
ステップS4205では、タスク実行ノード110は、タスク実行キュー1000の末尾にアイドルタスクを追加する(ステップS4205)。そして、タスク実行ノード110は、実行順序確保処理を終了する。
(実施例1におけるオファー情報の登録処理手順の一例)
次に、図43を用いて、ステップS4204で第1タスク配備装置100によって、タスク実行完了時点見積もり部を用いて実行される、実施例1におけるオファー情報の登録処理手順の一例について説明する。
図43は、実施例1におけるオファー情報の登録処理手順の一例を示す説明図である。図43において、第1タスク配備装置100は、タスク実行ノード110から、仮タスク数分のアイドルタスクのそれぞれのアイドルタスクについて、オファー情報を登録する指示を受け付ける(ステップS4301)。
次に、第1タスク配備装置100は、タスク実行キュー1000におけるタスク数Kに基づいて、仮タスク数分のアイドルタスクのそれぞれのアイドルタスクのタスク実行完了時間Eを算出し、タスク実行完了時点Exを算出する(ステップS4302)。
そして、第1タスク配備装置100は、算出したタスク実行完了時点Exに基づいて、それぞれのアイドルタスクについてのオファー情報を生成し、オファー情報DB500に記憶する(ステップS4303)。その後、第1タスク配備装置100は、オファー情報の登録処理を終了する。
(実施例1におけるオファー送信処理手順の一例)
次に、図44を用いて、ステップS3904で第1タスク配備装置100によって、オファー管理部と送受信部とを用いて実行される、実施例1におけるオファー送信処理手順の一例について説明する。
図44は、実施例1におけるオファー送信処理手順の一例を示すフローチャートである。図44において、第1タスク配備装置100は、選択したオファー先エッジに対する、算出したタスク実行完了時点Exを含むオファー情報を生成する(ステップS4401)。
次に、第1タスク配備装置100は、生成したオファー情報を、選択したオファー先エッジに送信する(ステップS4402)。これに対し、オファー先エッジに含まれる第2タスク配備装置100は、オファー受信処理を実行する。そして、第1タスク配備装置100は、オファー送信処理を終了する。
(実施例1におけるオファー受信処理手順の一例)
次に、図45を用いて、ステップS4402で、オファー先エッジに含まれる第2タスク配備装置100によって、オファー管理部と送受信部とを用いて実行される、実施例1におけるオファー受信処理手順の一例について説明する。
図45は、実施例1におけるオファー受信処理手順の一例を示すフローチャートである。図45において、第2タスク配備装置100は、オファー情報を受信する(ステップS4501)。次に、第2タスク配備装置100は、オファー情報をオファー情報DB500に登録する(ステップS4502)。そして、第2タスク配備装置100は、オファー受信処理を終了する。
(実施例1における配備場所決定処理手順の一例)
次に、図46を用いて、オファー先エッジに含まれる第2タスク配備装置100によって実行される、実施例1における配備場所決定処理手順の一例について説明する。
図46は、実施例1における配備場所決定処理手順の一例を示すフローチャートである。図46において、第2タスク配備装置100は、IoTデータを受信する(ステップS4601)。
次に、第2タスク配備装置100は、受信したIoTデータに基づいて、図47に後述するタスク生成処理を実行し、新たなタスクを生成する(ステップS4602)。そして、第2タスク配備装置100は、オファー情報DB500を参照し、生成した新たなタスクについて、図48または図49に後述するタスク配備場所決定処理を実行する(ステップS4603)。
次に、第2タスク配備装置100は、タスク実行ノード110から実行結果を受信する(ステップS4604)。そして、第2タスク配備装置100は、実行結果を端末装置に送信する(ステップS4605)。その後、第2タスク配備装置100は、配備場所決定処理を終了する。これにより、第2タスク配備装置100は、タスク実行ノード110にタスクを実行させることができる。
(実施例1におけるタスク生成処理手順の一例)
次に、図47を用いて、ステップS3904で、オファー先エッジに含まれる第2タスク配備装置100によって、タスク管理部を用いて実行される、実施例1におけるタスク生成処理手順の一例について説明する。
図47は、実施例1におけるタスク生成処理手順の一例を示すフローチャートである。図47において、第2タスク配備装置100は、IoTデータを取得し、データ管理DB700に蓄積する(ステップS4701)。次に、第2タスク配備装置100は、IoTデータに基づいて、新たなタスクを生成し、タスク管理DB600に登録する(ステップS4702)。そして、第2タスク配備装置100は、タスク生成処理を終了する。
(実施例1におけるタスク配備場所決定処理手順の一例)
次に、図48を用いて、ステップS4603で、オファー先エッジに含まれる第2タスク配備装置100によって、タスク配備場所決定部を用いて実行される、実施例1におけるタスク配備場所決定処理手順の一例について説明する。
図48は、実施例1におけるタスク配備場所決定処理手順の一例を示すフローチャートである。図48において、第2タスク配備装置100は、オファー情報DB500を参照し、タスク実行完了時間が現時点に最も近くなるタスク実行ノード110を含むエッジEgを選択する(ステップS4801)。
次に、第2タスク配備装置100は、オファー情報DB500に登録された1以上のオファー情報のいずれかのオファー情報を選択する(ステップS4802)。そして、第2タスク配備装置100は、選択したオファー情報が、選択したエッジEgについてのオファー情報であるか否かを判定する(ステップS4803)。ここで、選択したエッジEgについてのオファー情報である場合(ステップS4803:Yes)、第2タスク配備装置100は、ステップS4804の処理に移行する。
ステップS4804では、第2タスク配備装置100は、選択したオファー情報に基づいて、新たなタスクと、新たなタスクに用いられるIoTデータとを対応付けたタスク実行要求を生成する(ステップS4804)。次に、第2タスク配備装置100は、選択したエッジEgに対して、生成したタスク実行要求を出力し、選択したエッジEgにおいて図50または図51に後述するオファー成功処理を実行させる(ステップS4805)。そして、第2タスク配備装置100は、ステップS4808の処理に移行する。
一方で、選択したエッジEgについてのオファー情報ではない場合(ステップS4803:No)、第2タスク配備装置100は、ステップS4806の処理に移行する。
ステップS4806では、第2タスク配備装置100は、オファー辞退通知を生成する(ステップS4806)。次に、第2タスク配備装置100は、選択したエッジEgに対して、生成したオファー辞退通知を出力し、選択したエッジEgにおいて図52または図53に後述するオファー失敗処理を実行させる(ステップS4807)。そして、第2タスク配備装置100は、ステップS4808の処理に移行する。
ステップS4808では、第2タスク配備装置100は、すべてのオファー情報を選択したか否かを判定する(ステップS4808)。ここで、いずれかのオファー情報を選択していない場合(ステップS4808:No)、第2タスク配備装置100は、ステップS4802の処理に戻る。一方で、すべてのオファー情報を選択している場合(ステップS4808:Yes)、第2タスク配備装置100は、タスク配備場所決定処理を終了する。
(実施例1におけるタスク配備場所決定処理手順の別の例)
次に、図49を用いて、ステップS4603で、オファー先エッジに含まれるタスク配備装置100によって、タスク配備場所決定部を用いて実行される、実施例1におけるタスク配備場所決定処理の別の例について説明する。
図49は、実施例1におけるタスク配備場所決定処理手順の別の例を示すフローチャートである。図49において、タスク配備装置100は、利用者DB1200を参照し、生成した新たなタスクのデッドラインを取得する(ステップS4901)。
次に、タスク配備装置100は、オファー情報DB500を参照し、タスク実行完了時点がデッドラインより前になるタスク実行ノード110のうち、タスク実行完了時点が最も遅くなるタスク実行ノード110を含むエッジEgを選択する(ステップS4902)。
次に、第2タスク配備装置100は、オファー情報DB500に登録された1以上のオファー情報のいずれかのオファー情報を選択する(ステップS4903)。そして、第2タスク配備装置100は、選択したオファー情報が、選択したエッジEgについてのオファー情報であるか否かを判定する(ステップS4904)。ここで、選択したエッジEgについてのオファー情報である場合(ステップS4904:Yes)、第2タスク配備装置100は、ステップS4905の処理に移行する。
ステップS4905では、第2タスク配備装置100は、選択したオファー情報に基づいて、新たなタスクと、新たなタスクに用いられるIoTデータとを対応付けたタスク実行要求を生成する(ステップS4905)。
次に、第2タスク配備装置100は、選択したエッジEgに対して、生成したタスク実行要求を出力し、選択したエッジEgにおいて図50または図51に後述するオファー成功処理を実行させる(ステップS4906)。そして、第2タスク配備装置100は、ステップS4909の処理に移行する。
一方で、選択したエッジEgについてのオファー情報ではない場合(ステップS4904:No)、第2タスク配備装置100は、ステップS4907の処理に移行する。
ステップS4907では、第2タスク配備装置100は、オファー辞退通知を生成する(ステップS4907)。次に、第2タスク配備装置100は、選択したエッジEgに対して、生成したオファー辞退通知を出力し、選択したエッジEgにおいて図52または図53に後述するオファー失敗処理を実行させる(ステップS4908)。そして、第2タスク配備装置100は、ステップS4909の処理に移行する。
ステップS4909では、第2タスク配備装置100は、すべてのオファー情報を選択したか否かを判定する(ステップS4909)。ここで、いずれかのオファー情報を選択していない場合(ステップS4909:No)、第2タスク配備装置100は、ステップS4903の処理に戻る。一方で、すべてのオファー情報を選択している場合(ステップS4909:Yes)、第2タスク配備装置100は、タスク配備場所決定処理を終了する。
タスク配備装置100は、利用者DB1200を参照し、図48に示したタスク配備場所決定処理と、図49に示したタスク配備場所決定処理とを使い分けるようにしてもよい。これにより、タスク配備装置100は、利用者に要求された基準にしたがって、タスク実行完了時点を制御することができる。
(実施例1におけるオファー成功処理手順の一例)
次に、図50を用いて、タスク実行要求の出力先が第2タスク配備装置100である場合に、第2タスク配備装置100と同じエッジEgに含まれるタスク実行ノード110によって実行される、実施例1におけるオファー成功処理手順の一例について説明する。
図50は、実施例1におけるオファー成功処理手順の一例を示すフローチャートである。図50において、タスク実行ノード110は、タスク実行要求を、第2タスク配備装置100から受信する(ステップS5001)。
次に、タスク実行ノード110は、タスク実行キュー1000のアイドルタスクを、タスク実行要求に対応する新たなタスクと置き換える(ステップS5002)。そして、タスク実行ノード110は、新たなタスクに用いられる処理対象データを、データ管理DB1100を用いて記憶する(ステップS5003)。
その後、タスク実行ノード110は、タスク実行キュー1000から新たなタスクを取り出した場合、新たなタスクを処理対象データを用いて実行する(ステップS5004)。次に、タスク実行ノード110は、新たなタスクの実行結果を第2タスク配備装置100に送信する(ステップS5005)。そして、タスク実行ノード110は、オファー成功処理を終了する。
(実施例1におけるオファー成功処理手順の別の例)
次に、図51を用いて、タスク実行要求の出力先が第1タスク配備装置100である場合に、第2タスク配備装置100によって実行される、実施例1におけるオファー成功処理手順の別の例について説明する。
図51は、実施例1におけるオファー成功処理手順の別の例を示すフローチャートである。図51において、第2タスク配備装置100は、タスク実行要求を、第1タスク配備装置100に送信する(ステップS5101)。
これにより、第1タスク配備装置100は、自装置と同じエッジEgに含まれるタスク実行ノード110に、図50に示したオファー成功処理を実行させ、新たなタスクの実行結果を第2タスク配備装置100に返信する。第2タスク配備装置100は、実行結果を受信する(ステップS5102)。そして、第2タスク配備装置100は、オファー成功処理を終了する。
(実施例1におけるオファー失敗処理手順の一例)
次に、図52を用いて、オファー辞退通知の出力先が第2タスク配備装置100である場合に、第2タスク配備装置100と同じエッジEgに含まれるタスク実行ノード110によって実行される、実施例1におけるオファー失敗処理手順の一例について説明する。
図52は、実施例1におけるオファー失敗処理手順の一例を示すフローチャートである。図52において、タスク実行ノード110は、オファー辞退通知を、第2タスク配備装置100から受信する(ステップS5201)。次に、タスク実行ノード110は、タスク実行キュー1000のアイドルタスクを削除する(ステップS5202)。そして、タスク実行ノード110は、オファー失敗処理を終了する。
(実施例1におけるオファー失敗処理手順の別の例)
次に、図53を用いて、オファー辞退通知の出力先が第1タスク配備装置100である場合に、第2タスク配備装置100によって実行される、実施例1におけるオファー失敗処理手順の別の例について説明する。
図53は、実施例1におけるオファー失敗処理手順の別の例を示すフローチャートである。図53において、第2タスク配備装置100は、オファー辞退通知を、第1タスク配備装置100に送信する(ステップS5301)。そして、第2タスク配備装置100は、オファー失敗処理を終了する。これにより、第1タスク配備装置100は、自装置と同じエッジEgに含まれるタスク実行ノード110に、図52に示したオファー失敗処理を実行させる。
(配備場所を決定する実施例2)
次に、図54および図55を用いて、配備場所を決定する実施例2について説明する。実施例1では、上述したように、エッジEgに含まれるタスク実行ノード110が1つであり、タスク配備装置100が同じエッジEgに含まれるタスク実行ノード110について新たなタスクのタスク実行完了時点を算出する場合について説明した。
これに対し、実施例2では、エッジEgに含まれるタスク実行ノード110が複数あり、タスク配備装置100がいずれかのタスク実行ノード110を選択して新たなタスクのタスク実行完了時点を算出する。
図54および図55は、配備場所を決定する実施例2を示す説明図である。図54に示すように、タスク配備装置100は、実施例2において、さらに、タスク実行ノード管理DB5400を記憶する。タスク実行ノード管理DB5400は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図54に示すように、タスク実行ノード管理DB5400は、タスク実行ノードIDのフィールドを有する。タスク実行ノード管理DB5400は、各フィールドに情報を設定することにより、タスク実行ノード管理情報がレコードとして記憶される。
タスク実行ノードIDのフィールドには、タスク実行ノードIDが設定される。タスク実行ノードIDは、タスク実行ノード110を特定するIDである。タスク実行ノードIDは、例えば、Iである。Iは、1〜kの整数である。kは、エッジEgにおけるタスク実行ノード110の数である。次に、図55の説明に移行する。
図55に示すように、タスク配備装置100は、実施例2において、さらに、オファー情報DB500の代わりに、オファー情報DB5500を記憶する。オファー情報DB5500は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図55に示すように、オファー情報DB5500は、オファーIDと、タスク実行ノードIDと、タスクIDと、タスク実行完了時点のフィールドを有する。オファー情報DB5500は、各フィールドに情報を設定することにより、オファー情報がレコードとして記憶される。
オファーIDのフィールドには、オファーIDが設定される。オファーIDは、オファー情報を送信したエッジEgを特定するIDである。タスク実行ノードIDのフィールドには、タスク実行ノードIDが設定される。タスク実行ノードIDは、新たなタスクを実行させることが可能なタスク実行ノード110を特定するIDである。タスクIDのフィールドには、タスクIDが設定される。タスクIDは、タスクを特定するIDである。タスクIDは、例えば、新たに生成されるタスクと置換可能なアイドルタスクを特定するIDである。タスク実行完了時点のフィールドには、オファー情報の生成対象であるタスク実行ノード110におけるタスク実行完了時点が設定される。タスク実行完了時点は、見積もられたタスク実行完了時点である。
実施例2において、タスク配備装置100は、タスク実行ノード管理DB5400を参照し、タスク実行ノード110をランダムに選択する。そして、タスク配備装置100は、オファー情報DB5500を用いて、タスク実行ノード110ごとにオファー情報を管理する。
また、タスク配備装置100は、タスク実行ノード管理DB5400を参照し、1以上のタスク実行ノード110のうち、タスク数が相対的に小さいタスク実行ノード110を選択してもよい。これにより、タスク配備装置100は、今後生成されうる新しいタスクを実行させる可能性が比較的高く、今後生成されうる新しいタスクが生成されてから実行完了するまでにかかる時間が比較的短いようなタスク実行ノード110を選択することができる。このため、タスク配備装置100は、新しいタスクのタスク実行要求を受けやすくすることができる。
(実施例2における分散リソース管理処理手順の一例)
タスク配備装置100によって実行される、実施例2における分散リソース管理処理手順の一例は、図39に示した実施例1における分散リソース管理処理手順に、新たな処理手順を1つ追加した場合と同様である。実施例2では、図39のステップS3901の処理を実行する前に、図56または図57に後述する実施例2におけるタスク実行ノード110の選択処理が追加される。
(実施例2におけるタスク実行ノード110の選択処理手順の一例)
次に、図56を用いて、実施例2におけるタスク実行ノード110の選択処理手順の一例について説明する。
図56は、実施例2におけるタスク実行ノード110の選択処理手順の一例を示すフローチャートである。図56において、タスク配備装置100は、タスク実行ノード管理DB5400を参照し、自装置と同じエッジEgに含まれる1以上のタスク実行ノード110のいずれかのタスク実行ノード110をランダムに選択する(ステップS5601)。そして、タスク配備装置100は、タスク実行ノード110の選択処理を終了する。
(実施例2におけるタスク実行ノード110の選択処理手順の別の例)
次に、図57を用いて、実施例2におけるタスク実行ノード110の選択処理手順の別の例について説明する。
図57は、実施例2におけるタスク実行ノード110の選択処理手順の別の例を示すフローチャートである。図57において、タスク配備装置100は、複数のタスク実行ノード110のそれぞれのタスク実行ノード110が実行するタスクが格納されるタスク実行キュー1000におけるタスク数Kを取得する(ステップS5701)。
次に、タスク配備装置100は、タスク数Kが最も小さくなるタスク実行ノード110を選択する(ステップS5702)。そして、タスク配備装置100は、タスク実行ノード110の選択処理を終了する。これにより、タスク配備装置100は、タスクを実行させる確率が比較的高くなるタスク実行ノード110を選択することができる。
(配備場所を決定する実施例3)
次に、図58を用いて、配備場所を決定する実施例3について説明する。実施例1では、上述したように、タスク配備装置100がオファー先エッジをランダムに選択する場合について説明した。
これに対し、実施例3では、タスク配備装置100は、新たな処理の実行要求を送信してくる確率が相対的に大きいと判断される第2タスク配備装置100を含むエッジを、オファー先エッジとして選択する。
図58は、配備場所を決定する実施例3を示す説明図である。図58に示すように、タスク配備装置100は、実施例3において、エッジ管理DB400の代わりに、エッジ管理DB5800を記憶する。エッジ管理DB5800は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図58に示すように、エッジ管理DB5800は、エッジIDと、NW(NetWork)遅延と、負荷とのフィールドを有する。エッジ管理DB5800は、各フィールドに情報を設定することにより、エッジ管理情報がレコードとして記憶される。
エッジIDのフィールドには、広域分散システム200に含まれる複数のエッジEgのうち、タスク配備装置100が含まれるエッジEgとは異なるエッジEgについてのエッジIDが設定される。エッジIDは、エッジEgを特定するIDである。NW遅延のフィールドには、タスク配備装置100から、エッジIDが特定するエッジEgまでの往復NW遅延が設定される。往復NW遅延の単位は、例えば、msである。負荷のフィールドには、エッジEgに関する処理負荷が設定される。負荷は、例えば、エッジEgに含まれるタスク実行ノード110のCPU負荷の代表値である。代表値は、例えば、平均値、最頻値、最大値、最小値、合計値などである。
実施例3において、タスク配備装置100は、他の1以上のエッジEgがある場合、エッジEgとの通信遅延が相対的に小さくなるエッジEgを選択し、新たなタスクの実行完了時点を算出する。また、タスク配備装置100は、エッジEgに関する処理負荷が相対的に大きくなるエッジEgを選択し、新たなタスクの実行完了時点を算出してもよい。
これにより、タスク配備装置100は、新たな処理の実行要求を送信してくる確率が相対的に大きいと判断されるエッジEgについて、タスク実行完了時点を算出することができる。そして、タスク配備装置100は、算出したタスク実行完了時点を用いて、新たな処理の実行要求を受けやすくすることができる。
(実施例3における分散リソース管理処理手順の一例)
タスク配備装置100によって実行される、実施例3における分散リソース管理処理手順の一例は、図39に示した実施例1における分散リソース管理処理手順の一例と同様である。実施例3では、図39のステップS3901で呼び出す図40のオファー先エッジの選択処理を、図59または図60に後述する実施例3におけるオファー先エッジの選択処理に置き換える。
(実施例3におけるオファー先エッジの選択処理手順の一例)
次に、図59を用いて、ステップS3901でタスク配備装置100によって、オファー先エッジ選択部を用いて実行される、実施例3におけるオファー先エッジの選択処理手順の一例について説明する。
図59は、実施例3におけるオファー先エッジの選択処理手順の一例を示すフローチャートである。図59において、タスク配備装置100は、エッジ管理DB5800を参照し、往復NW遅延が最も小さくなるエッジEgを、オファー先エッジに選択する(ステップS5901)。そして、タスク配備装置100は、オファー先エッジの選択処理を終了する。
(実施例3におけるオファー先エッジの選択処理手順の別の例)
次に、図60を用いて、ステップS3901でタスク配備装置100によって、オファー先エッジ選択部を用いて実行される、実施例3におけるオファー先エッジの選択処理手順の別の例について説明する。
図60は、実施例3におけるオファー先エッジの選択処理手順の別の例を示すフローチャートである。図60において、エッジ管理DB5800を参照し、タスク配備装置100は、他の1以上のエッジEgのそれぞれのエッジEgに関する処理負荷を取得する(ステップS6001)。次に、タスク配備装置100は、処理負荷が最も大きくなるエッジEgを、オファー先エッジに選択する(ステップS6002)。そして、タスク配備装置100は、オファー先エッジの選択処理を終了する。
(配備場所を決定する実施例4)
次に、配備場所を決定する実施例4について説明する。実施例1では、上述したように、オファー管理部1405およびタスク管理部1406がオファー辞退メッセージを受信する機能を有する場合について説明した。
これに対し、オファー管理部1405が有していた新たなタスクや処理対象データを受信する機能、および、タスク管理部1406が有していたオファー辞退メッセージを受信する機能を、実行順序制御部1404が有するようにする場合があってもよい。
実施例4では、タスク配備装置100が、オファー情報を生成する際、オファー情報に対応するタスク実行ノード110の実行順序制御部1404に、オファー情報に対応するエッジIDとタスクIDとを通知し、蓄積させておく。
これにより、タスク実行ノード110の実行順序制御部1404は、直接新たなタスクや処理対象データを受信しても、蓄積したエッジIDとタスクIDとを参照し、タスク実行キュー1000に新たなタスクを登録することができる。また、タスク実行ノード110の実行順序制御部1404は、新たなタスクを実行するまで、処理対象データを蓄積しておくことができる。
これにより、タスク実行ノード110の実行順序制御部1404は、直接オファー辞退メッセージを受信しても、蓄積したエッジIDとタスクIDとを参照し、タスク実行キュー1000からアイドルタスクを削除することができる。
さらに、タスク管理部1406が有していた実行結果を受信する機能を、配信ノード203が有するようにする場合があってもよい。
実施例4では、タスク配備装置100が、新たなタスクを送信する際、新たなタスクの送信先に対応するエッジIDとタスクIDとを、配信ノード203に通知し、蓄積させておく。配信ノード203は、実行結果を受信すると、蓄積しておいたエッジIDとタスクIDとを参照し、実行結果を端末装置に送信する。これにより、実施例4は、タスク配備装置100にかかる処理負担の低減化を図ることができる。
以上説明したように、タスク配備装置100によれば、タスク実行ノード110についての処理数と、タスク実行ノード110における処理実行速度と、他タスク配備装置100とタスク実行ノード110との通信遅延とを取得することができる。タスク配備装置100によれば、取得した各種情報に基づいて、新たな処理をタスク実行ノード110に実行させる場合における新たな処理の実行完了時点を特定する情報を生成することができる。タスク配備装置100によれば、タスク実行ノード110について生成した実行完了時点を特定する情報を、他タスク配備装置100に送信することができる。これにより、タスク配備装置100は、他タスク配備装置100で、新たな処理160の実行完了時点を精度よく特定可能にすることができ、所定の期限までに新たな処理160が実行完了するように配備場所を決定可能にすることができる。
タスク配備装置100によれば、処理数を取得した際、タスク実行ノード110に、通信遅延に対応する処理時間に基づいて、キューに対して所定数のダミー処理を追加させることができる。タスク配備装置100によれば、他タスク配備装置100から新たな処理の実行要求を受け付けた場合、タスク実行ノード110に、キューに追加されたダミー処理を、新たな処理と置換させることができる。これにより、タスク配備装置100は、今後新たな処理が生成された場合に、新たな処理と入れ替えることができるダミー処理を、キューに追加しておくことができる。このため、タスク配備装置100は、今後キューに処理がいくつ追加されても、他タスク配備装置100からの新たなタスクを、ダミー処理と入れ替えることにより、タスク実行完了時点までに実行完了することができる。
タスク配備装置100によれば、処理数を取得した際、タスク実行ノード110に、キューに対応する処理時間が通信遅延に対応する処理時間になるまでキューに対して第1ダミー処理を追加させることができる。タスク配備装置100によれば、さらに、新たな処理と置換可能な第2ダミー処理をキューに対して追加させることができる。タスク配備装置100によれば、所定のデータを受け付けたことに応じて自装置で生成した処理を、タスク実行ノード110に、キューに追加された第1ダミー処理と置換させることができる。これにより、タスク配備装置100は、タスク実行ノード110が、他タスク配備装置100からの新たなタスクを実行開始するまでに、自装置で生成した処理を実行可能にすることができ、タスク実行ノード110を効率的に活用することができる。
タスク配備装置100によれば、他タスク配備装置100から、自装置が新たに生成する処理の実行完了時点を特定する情報を受け付けることができる。タスク配備装置100によれば、所定のデータを受け付けたことに応じて、所定のデータに基づいて新たに処理を生成することができる。タスク配備装置100によれば、新たに処理を生成した場合、受け付けた情報に基づいて、他タスク配備装置100が管理するタスク実行ノード110に、生成した処理を実行させるか否かを決定することができる。これにより、タスク配備装置100は、他タスク配備装置100が管理するタスク実行ノード110を利用し、自装置を含むエッジEgにおける負荷低減を図ることができる。
タスク配備装置100によれば、自装置とタスク実行ノード110との通信遅延に関する情報に基づいて、自装置が新たに生成する処理をタスク実行ノード110に実行させる場合における実行完了時点を特定する情報を生成することができる。タスク配備装置100によれば、所定のデータを受け付けたことに応じて、所定のデータに基づいて新たに処理を生成した場合、生成した情報に基づいて、タスク実行ノード110に、生成した処理を実行させるか否かを決定することができる。これにより、タスク配備装置100は、自装置が管理するタスク実行ノード110までの通信遅延を考慮し、実行完了時点を精度よく特定し、所定の期限までに処理が実行完了するようなタスク実行ノード110に処理を配備可能にすることができる。
タスク配備装置100によれば、1以上の他タスク配備装置100のうち、タスク実行ノード110との通信遅延が相対的に小さい他タスク配備装置100を選択し、タスク実行ノード110について生成した実行完了時点を特定する情報を送信することができる。これにより、タスク配備装置100は、通信遅延が相対的に小さいため、新たな処理の実行要求を送信してくる確率が相対的に大きいと判断される他タスク配備装置100に、実行完了時点を特定する情報を送信することができる。このため、タスク配備装置100は、他タスク配備装置100から新たな処理の実行要求を受けやすくすることができる。
タスク配備装置100によれば、1以上の他タスク配備装置100のうち、処理負荷が相対的に大きい他タスク配備装置100を選択し、タスク実行ノード110について生成した実行完了時点を特定する情報を送信することができる。これにより、タスク配備装置100は、処理負荷が相対的に大きいため、新たな処理の実行要求を送信してくる確率が相対的に大きいと判断される他タスク配備装置100に、実行完了時点を特定する情報を送信することができる。このため、タスク配備装置100は、他タスク配備装置100から新たな処理の実行要求を受けやすくすることができる。
タスク配備装置100によれば、1以上のタスク実行ノード110からランダムに選択したタスク実行ノード110が実行する処理が格納されるキューにおける処理数を取得することができる。これにより、タスク配備装置100は、今後他タスク配備装置100で生成される、いくつかの新たな処理を、1以上のタスク実行ノード110で分担し、1以上のタスク実行ノード110の負荷分散を図ることができる。
タスク配備装置100によれば、1以上のタスク実行ノード110から選択した、処理数が相対的に小さいタスク実行ノード110について、新たな処理の実行完了時点を特定する情報を生成することができる。これにより、タスク配備装置100は、今後他タスク配備装置100で生成される新しいタスクが、実行完了するまでにかかる時間が比較的短くなるようなタスク実行ノード110を選択することができる。このため、タスク配備装置100は、他タスク配備装置100から新しいタスクのタスク実行要求を受けやすくすることができる。
タスク配備装置100によれば、自装置で生成する処理の実行結果の送信期限を取得することができる。タスク配備装置100によれば、自装置で生成する処理を、それぞれの他タスク配備装置100が管理するタスク実行ノード110に実行させる場合における実行完了時点を特定する情報を受け付けることができる。タスク配備装置100によれば、受け付けた情報によって特定される実行完了時点が、取得した送信期限より前になるタスク実行ノード110を、自装置で生成する処理を実行させるタスク実行ノード110に決定することができる。これにより、タスク配備装置100は、新たな処理がデッドラインまでに実行完了する確率を向上させることができる。
タスク配備装置100によれば、自装置で生成する処理を、それぞれの他タスク配備装置100が管理するタスク実行ノード110に実行させる場合における実行完了時点を特定する情報を受け付けることができる。タスク配備装置100によれば、受け付けた情報によって特定される実行完了時点が現時点に最も近くなるタスク実行ノード110を、自装置で生成する処理を実行させるタスク実行ノード110に決定することができる。これにより、タスク配備装置100は、新たな処理の実行結果を取得するまでにかかる時間の最小化を図ることができ、新たな処理がデッドラインまでに実行完了する確率を向上させることができる。
なお、本実施の形態で説明したタスク配備方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したタスク配備プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したタスク配備プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
ノードで実行する処理が格納されるキューにおける処理数を取得し、
取得した前記ノードについての処理数と、前記ノードにおける処理実行速度に関する情報と、新たな処理を生成する管理ノードと前記ノードとの通信遅延に関する情報とに基づいて、前記新たな処理を前記ノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を生成し、
前記ノードについて生成した前記実行完了時点を特定する情報を、前記管理ノードに送信する、
処理を実行させることを特徴とするタスク配備プログラム。
(付記2)前記コンピュータに、
前記ノードで実行する処理が格納されるキューにおける処理数を取得した際、前記ノードに、前記通信遅延に対応する処理時間に基づいて、前記キューに対して所定数のダミー処理を追加させ、
前記管理ノードから前記新たな処理の実行要求を受け付けた場合、前記ノードに、前記キューに追加された前記ダミー処理を、前記新たな処理と置換させる、処理を実行させることを特徴とする付記1に記載のタスク配備プログラム。
(付記3)前記追加させる処理は、前記ノードで実行する処理が格納されるキューにおける処理数を取得した際、前記ノードに、前記キューに対応する処理時間が前記通信遅延に対応する処理時間になるまで前記キューに対して第1ダミー処理を追加させ、さらに前記新たな処理と置換可能な第2ダミー処理を前記キューに対して追加させ、
前記コンピュータに、
所定のデータを受け付けたことに応じて、前記所定のデータに基づいて新たに第2処理を生成した場合、前記ノードに、前記キューに追加された前記第1ダミー処理を、生成した前記第2処理と置換させる、処理を実行させることを特徴とする付記2に記載のタスク配備プログラム。
(付記4)前記コンピュータに、
1以上のノードを管理する第2管理ノードから、前記コンピュータと前記1以上のノードのいずれかのノードとの通信遅延に関する情報に基づいて生成された、前記コンピュータが新たに生成する第2処理を前記いずれかのノードに実行させる場合における前記第2処理の実行完了時点を特定する第2情報を受け付け、
所定のデータを受け付けたことに応じて、前記所定のデータに基づいて新たに前記第2処理を生成した場合、受け付けた前記第2情報に基づいて、前記いずれかのノードに、生成した前記第2処理を実行させるか否かを決定する、処理を実行させることを特徴とする付記1〜3のいずれか一つに記載のタスク配備プログラム。
(付記5)前記コンピュータに、
取得した前記ノードについての処理数と、前記ノードにおける処理実行速度に関する情報と、前記コンピュータと前記ノードとの通信遅延に関する情報とに基づいて、前記コンピュータが新たに生成する第2処理を前記ノードに実行させる場合における前記第2処理の実行完了時点を特定する情報を生成し、
所定のデータを受け付けたことに応じて、前記所定のデータに基づいて新たに前記第2処理を生成した場合、生成した前記第2処理の実行完了時点を特定する情報に基づいて、前記ノードに、生成した前記第2処理を実行させるか否かを決定する、処理を実行させることを特徴とする付記1〜4のいずれか一つに記載のタスク配備プログラム。
(付記6)前記コンピュータに、
1以上の管理ノードのうち、前記ノードとの通信遅延が相対的に小さい管理ノードを選択する、処理を実行させ、
前記生成する処理は、取得した前記ノードについての処理数と、前記ノードにおける処理実行速度に関する情報と、選択した前記管理ノードと前記ノードとの通信遅延に関する情報とに基づいて、前記新たな処理を前記ノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を生成し、
前記送信する処理は、前記ノードについて生成した前記実行完了時点を特定する情報を、選択した前記管理ノードに送信する、ことを特徴とする付記1〜5のいずれか一つに記載のタスク配備プログラム。
(付記7)前記コンピュータに、
1以上の管理ノードのうち、管理ノードに関する処理負荷が相対的に大きい管理ノードを選択する、処理を実行させ、
前記生成する処理は、取得した前記ノードについての処理数と、前記ノードにおける処理実行速度に関する情報と、選択した前記管理ノードと前記ノードとの通信遅延に関する情報とに基づいて、前記新たな処理を前記ノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を生成し、
前記送信する処理は、前記ノードについて生成した前記実行完了時点を特定する情報を、選択した前記管理ノードに送信する、ことを特徴とする付記1〜6のいずれか一つに記載のタスク配備プログラム。
(付記8)前記取得する処理は、1以上のノードからランダムに選択したノードが実行する処理が格納されるキューにおける処理数を取得する、ことを特徴とする付記1〜7のいずれか一つに記載のタスク配備プログラム。
(付記9)前記取得する処理は、1以上のノードのそれぞれのノードが実行する処理が格納されるキューにおける処理数を取得し、
前記生成する処理は、前記1以上のノードから選択した、前記処理数が相対的に小さいノードについての処理数と、前記ノードにおける処理実行速度に関する情報と、前記管理ノードと前記ノードとの通信遅延に関する情報とに基づいて、前記新たな処理を前記ノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を生成する、ことを特徴とする付記1〜8のいずれか一つに記載のタスク配備プログラム。
(付記10)前記コンピュータに、
前記第2処理の実行結果の送信期限を取得する、処理を実行させ、
前記受け付ける処理は、複数の第2管理ノードのそれぞれの第2管理ノードから、前記第2処理を前記第2管理ノードが管理するノードに実行させる場合における前記第2処理の実行完了時点を特定する情報を受け付け、
前記決定する処理は、受け付けた前記情報によって特定される前記実行完了時点が、取得した前記送信期限より前になるノードを、前記第2処理を実行させるノードに決定する、ことを特徴とする付記4に記載のタスク配備プログラム。
(付記11)前記受け付ける処理は、複数の第2管理ノードのそれぞれの第2管理ノードから、前記第2処理を前記第2管理ノードが管理するノードに実行させる場合における前記第2処理の実行完了時点を特定する情報を受け付け、
前記決定する処理は、受け付けた前記情報によって特定される前記実行完了時点が現時点に最も近くなるノードを、前記第2処理を実行させるノードに決定する、ことを特徴とする付記4に記載のタスク配備プログラム。
(付記12)コンピュータに、
1以上のノードを管理する管理ノードから、前記コンピュータと前記1以上のノードのいずれかのノードとの通信遅延に関する情報に基づいて生成された、前記コンピュータが生成する新たな処理を前記いずれかのノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を受け付け、
所定のデータを受け付けたことに応じて、前記所定のデータに基づいて前記新たな処理を生成した場合、受け付けた前記情報によって特定される前記実行完了時点に基づいて、前記いずれかのノードに、生成した前記新たな処理を実行させるか否かを決定する、
処理を実行させることを特徴とするタスク配備プログラム。
(付記13)前記コンピュータに、
前記新たな処理の実行結果の送信期限を取得する、処理を実行させ、
前記受け付ける処理は、複数の管理ノードのそれぞれの管理ノードから、前記新たな処理を、前記管理ノードが管理するノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を受け付け、
前記決定する処理は、受け付けた前記情報によって特定される前記実行完了時点が、取得した前記送信期限より前になるノードを、前記新たな処理を実行させるノードに決定する、ことを特徴とする付記12に記載のタスク配備プログラム。
(付記14)前記受け付ける処理は、複数の管理ノードのそれぞれの管理ノードから、前記新たな処理を、前記管理ノードが管理するノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を受け付け、
前記決定する処理は、受け付けた前記情報によって特定される前記実行完了時点が現時点に最も近くなるノードを、前記新たな処理を実行させるノードに決定する、ことを特徴とする付記12または13に記載のタスク配備プログラム。
(付記15)第1コンピュータが、
ノードで実行する処理が格納されるキューにおける処理数を取得し、
取得した前記ノードについての処理数と、前記ノードにおける処理実行速度に関する情報と、新たな処理を生成する第2コンピュータと前記ノードとの通信遅延に関する情報とに基づいて、前記新たな処理を前記ノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を生成し、
前記ノードについて生成した前記実行完了時点を特定する情報を、前記第2コンピュータに送信する、処理を実行し、
前記第2コンピュータが、
前記第1コンピュータから前記新たな処理の実行完了時点を特定する情報を受け付け、
所定のデータを受け付けたことに応じて、前記所定のデータに基づいて前記新たな処理を生成した場合、受け付けた前記情報によって特定される前記実行完了時点に基づいて、前記ノードに、生成した前記新たな処理を実行させるか否かを決定する、
処理を実行することを特徴とするタスク配備方法。
(付記16)ノードで実行する処理が格納されるキューにおける処理数を取得し、
取得した前記ノードについての処理数と、前記ノードにおける処理実行速度に関する情報と、新たな処理を生成する管理ノードと前記ノードとの通信遅延に関する情報とに基づいて、前記新たな処理を前記ノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を生成し、
前記ノードについて生成した前記実行完了時点を特定する情報を、前記管理ノードに送信する、
制御部を有することを特徴とするタスク配備装置。
(付記17)タスク配備装置であって、
1以上のノードを管理する管理ノードから、前記タスク配備装置と前記1以上のノードのいずれかのノードとの通信遅延に関する情報に基づいて生成された、前記タスク配備装置が生成する新たな処理を前記いずれかのノードに実行させる場合における前記新たな処理の実行完了時点を特定する情報を受け付け、
所定のデータを受け付けたことに応じて、前記所定のデータに基づいて前記新たな処理を生成した場合、受け付けた前記情報によって特定される前記実行完了時点に基づいて、前記いずれかのノードに、生成した前記新たな処理を実行させるか否かを決定する、
制御部を有することを特徴とするタスク配備装置。