以下に、図面を参照して、本発明にかかるタスク配備プログラム、タスク配備方法、およびタスク配備装置の実施の形態を詳細に説明する。
(実施の形態にかかるタスク配備方法の一実施例)
図1は、実施の形態にかかるタスク配備方法の一実施例を示す説明図である。図1において、タスク配備装置100は、複数のノード110を含むシステムを制御するコンピュータである。タスク配備装置100は、例えば、処理の配備場所を制御する。ノード110は、演算装置を有する。演算装置は、例えば、CPU(Central Processing Unit)111である。処理は、例えば、タスクである。配備場所は、処理を実行させる演算装置である。
ここで、処理の配備場所を制御する際、所定の期限までに処理が実行完了するような配備場所を決定することが望まれる傾向がある。しかしながら、所定の期限までに処理が実行完了するような配備場所を決定することは難しい。
例えば、Mesosなどの分散リソース管理技術により、処理の配備場所を制御する場合が考えられる。この場合、例えば、いずれのノードに処理を実行させれば、所定の期限までに処理を実行完了することができるかを判断せずに、処理の配備場所を決定することがあり、所定の期限までに処理が実行完了しないことがある。
これに対し、ノードの処理数と、ノードの処理実行速度とに基づいて、ノードに新たな処理を実行させた場合に、新たな処理が実行完了するまでの実行完了時点を推定し、所定の期限までに、新たな処理が実行完了することができるかを判断することが考えられる。しかしながら、ノードは、複数の処理を実行する場合、複数の処理を所定時間ごとに代わる代わる実行する傾向がある。このため、ノードの処理数がリアルタイムに増減すると、処理の実行完了時点もリアルタイムに変動してしまう。したがって、所定の期限までに、ノードに実行させた新たな処理が実行完了することができるかを精度よく判断することができない。
そこで、本実施の形態では、演算装置にキューを設け、演算装置で実行する処理をキューで管理した上で、キューにおける処理数と、演算装置の処理実行速度とに基づいて、演算装置で実行する処理の実行完了時点を推定するタスク配備方法について説明する。これによれば、所定の期限までに処理が実行完了するような演算装置に、処理を配備可能にすることができる。
図1の例では、タスク配備装置100は、1以上のノード110と通信可能である。ノード110は、1以上の演算装置を有する。演算装置は、処理を格納するキューを有する。演算装置は、キューから取り出した処理を一つずつ実行する。以下の説明では、ノード110を「タスク実行ノード110」と表記する場合がある。
(1−1)タスク配備装置100は、所定の間隔で、1以上のタスク実行ノード110のいずれかのタスク実行ノード110に含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得する。所定の間隔は、例えば、予めタスク配備装置100の製造者や管理者によって設定される。
タスク配備装置100は、例えば、所定のタイミングまで、所定の間隔で、いずれかのタスク実行ノード110に含まれるCPU111が実行するタスクが格納されるキューにおけるタスク数を取得する。所定のタイミングは、例えば、タスク実行ノード110に実行させる新たな処理が発生したタイミングである。タスク配備装置100は、具体的には、CPU111が有するキューにおけるタスク数「3」を取得する。これにより、タスク配備装置100は、CPU111に新たなタスクを実行させる場合、CPU111が新たなタスクを実行する前に、いくつのタスクを実行完了することになるかを特定することができる。
(1−2)タスク配備装置100は、取得した演算装置についての処理数と、演算装置における処理実行速度とに基づいて、演算装置に新たな処理を実行させる場合における新たな処理の実行完了時点を、演算装置ごとに算出する。処理実行速度は、例えば、単位時間あたりに、いくつの処理を実行完了するかを示す値である。処理実行速度の単位は、例えば、個/sである。処理実行速度は、例えば、予めタスク実行ノード110との通信によって設定される。実行完了時点は、演算装置に実行させる新たな処理が実行完了した時点であり、現時点から実行完了時間が経過した時点である。実行完了時間は、例えば、現時点から、演算装置に実行させる新たな処理が実行完了するまでにかかる時間である。
タスク配備装置100は、例えば、所定のタイミングまでに取得したCPU111についてのタスク数と、CPU111におけるタスク実行速度とに基づいて、新たなタスクの実行完了時間を、CPU111ごとに算出する。タスク配備装置100は、具体的には、取得したタスク数「3」に新たなタスクの分として「1」を加算し、CPU111に新たなタスクを実行させる場合におけるCPU111が有するキューにおけるタスク数「4」を算出する。タスク配備装置100は、タスク数「4」に、CPU111における処理実行速度「0.5個/s」で除算し、実行完了時間「8s」を算出する。タスク配備装置100は、現時点から実行完了時間が経過した時点を、実行完了時点として算出する。これにより、タスク配備装置100は、CPU111に新たなタスクを実行させた場合に、新たなタスクがいつまでに実行完了するかを特定することができる。
(1−3)タスク配備装置100は、演算装置ごとに算出した実行完了時点に基づいて、新たな処理を実行させる演算装置を、1以上のタスク実行ノード110のいずれかのタスク実行ノード110に含まれる演算装置に決定する。タスク配備装置100は、例えば、新たなタスクを実行させるCPU111を、1以上のタスク実行ノード110のいずれかのタスク実行ノード110に含まれる、実行完了時点が現時点に最も近くなるCPU111に決定する。
これにより、タスク配備装置100は、所定の期限までに処理が実行完了するようなCPU111に、新たな処理を配備することができる。タスク配備装置100は、例えば、新たな処理が生成された際、直前に処理数を取得したCPU111のうち、所定の期限までに処理が実行完了するようなCPU111に、新たな処理を配備することができる。
また、タスク配備装置100は、処理数を取得した際、キューにダミー処理を追加させてもよい。これにより、タスク配備装置100は、新たな処理が生成されるまでに、キューに別の処理が追加されても、算出した実行完了時点までに新たな処理を実行完了することができるように、CPU111に新たな処理を実行させることができる。
ここでは、タスク配備装置100が、新たな処理を実行させる演算装置を、実行完了時間が現時点に最も近くなる演算装置に決定する場合について説明したが、これに限らない。例えば、タスク配備装置100が、新たな処理を実行させる演算装置を、実行完了時間が、所定の期限より前になる演算装置に決定する場合があってもよい。
ここでは、タスク実行ノード110が、演算装置単位でキューを有する場合について説明したが、これに限らない。例えば、タスク実行ノード110が、タスク実行ノード110単位でキューを有し、タスク実行ノード110に含まれる複数の演算装置でキューから取り出した処理を分担して実行する場合があってもよい。
ここでは、処理実行速度が、処理の種別によらず一定である場合について説明したが、これに限らない。例えば、処理実行速度が、処理の種別によって異なり、タスク配備装置100が、処理の種別ごとに処理実行速度を記憶する場合があってもよい。
(タスク配備システム200の一例)
次に、図2を用いて、図1に示したタスク配備装置100を適用した、タスク配備システム200の一例について説明する。
図2は、タスク配備システム200の一例を示す説明図である。図2において、タスク配備システム200は、データ生成装置201と、データ受信ノード202と、タスク配備装置100と、複数のタスク実行ノード110と、データ配信ノード203と、クライアント装置204とを含む。
タスク配備システム200において、データ生成装置201と、データ受信ノード202とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
また、データ受信ノード202と、タスク配備装置100とは、有線または無線によって通信可能に接続される。また、タスク配備装置100と、それぞれのタスク実行ノード110とは、有線または無線によって通信可能に接続される。また、タスク配備装置100と、データ配信ノード203とは、有線または無線によって通信可能に接続される。また、データ配信ノード203と、クライアント装置204とは、有線または無線のネットワーク210を介して接続される。
データ生成装置201は、タスクに用いるデータを生成し、データ受信ノード202を介してタスク配備装置100に送信するコンピュータである。以下の説明では、タスクに用いるデータを「処理対象データ」と表記する場合がある。データ生成装置201は、例えば、PC(Personal Computer)、ノートPC、タブレット端末、スマートフォン、ウェアラブル端末、撮像装置、センサ装置などである。データ生成装置201は、例えば、IoTデバイスである。
データ受信ノード202は、データ生成装置201から受信した処理対象データを、タスク配備装置100に送信するコンピュータである。データ受信ノード202は、例えば、サーバ、PC、ノートPC、タブレット端末、スマートフォン、ウェアラブル端末などである。
タスク配備装置100は、データ受信ノード202から処理対象データを受信する。また、タスク配備装置100は、CPUごとの対応するキューにおけるタスク数と、CPUごとのタスク実行速度となどを、タスク実行ノード110から受信する。そして、タスク配備装置100は、受信した処理対象データを用いたタスクの配備場所となるCPUを決定する。タスク配備装置100は、受信したデータを用いたタスクの実行依頼を、配備場所に決定したCPUを有するタスク実行ノード110に送信する。タスク配備装置100は、例えば、サーバ、PC、ノートPCなどである。
タスク実行ノード110は、1以上のCPUを有するコンピュータである。タスク実行ノード110は、CPUに対応するキューを有する。タスク実行ノード110は、キューにおけるタスク数とCPUのタスク実行速度となどをタスク配備装置100に送信する。タスク実行ノード110は、CPUを用いてタスクを実行し、タスクの実行結果をタスク配備装置100に送信する。タスク実行ノード110は、例えば、PC、ノートPC、タブレット端末、スマートフォン、ウェアラブル端末などである。
データ配信ノード203は、タスク配備装置100から受信したタスクの実行結果を、クライアント装置204に送信するコンピュータである。データ配信ノード203は、例えば、サーバ、PC、ノートPC、タブレット端末、スマートフォン、ウェアラブル端末などである。
クライアント装置204は、データ配信ノード203から受信したタスクの実行結果を出力するコンピュータである。クライアント装置204は、例えば、処理の実行結果をディスプレイに表示する。クライアント装置204は、例えば、PC、ノートPC、タブレット端末、スマートフォン、ウェアラブル端末などである。
(タスク配備装置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は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303には、例えば、モデムやLANアダプタなどを採用することができる。
記録媒体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のフィールドを有する。タスク実行ノード管理DB400は、各フィールドに情報を設定することにより、タスク実行ノード110管理情報がレコードとして記憶される。
タスク実行ノードIDのフィールドは、タスク実行ノードIDが設定される。タスク実行ノードIDは、タスク実行ノード110を特定するIDである。タスク実行ノードIDは、例えば、Iである。Iは、1〜kの整数である。kは、タスク配備システム200におけるタスク実行ノード110の数である。
(オファー情報DB500の記憶内容の一例)
次に、図5を用いて、オファー情報DB500の記憶内容の一例について説明する。オファー情報DB500は、例えば、図3に示したタスク配備装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図5は、オファー情報DB500の記憶内容の一例を示す説明図である。図5に示すように、オファー情報DB500は、オファーIDのフィールドに対応付けて、タスク実行完了時点のフィールドを有する。オファー情報DB500は、各フィールドに情報を設定することにより、オファー情報がレコードとして記憶される。
オファーIDのフィールドは、オファーIDが設定される。オファーIDは、オファーの発行元であるタスク実行ノード110を特定するIDである。オファーは、タスク実行ノード110が新たなタスクを実行可能であることを示す、タスク実行ノード110による申し出である。タスク実行完了時点のフィールドは、オファーの発行元であるタスク実行ノード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である。
(データ管理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〜図11に後述する各種DBを記憶する。
ネットワークI/F803は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F803は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワーク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に後述するタスク実行キュー1000の先頭から空きまでの既存タスク数である。平均処理実行速度のフィールドは、平均処理実行速度が設定される。平均処理実行速度は、タスク実行ノードIDが示すタスク実行ノード110が、過去に実行した全タスクの平均処理実行速度である。
キュー状態DB900は、例えば、タスク実行ノード110が有するCPU801ごとに用意される。タスク実行ノード110は、例えば、CPU801ごとに、実行するタスクを格納するタスク実行キュー1000を管理するキュー状態DB900を記憶する。タスク実行ノード110は、1以上のCPU801が分担して実行するタスクを格納するタスク実行キュー1000を管理する、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のハードウェア構成例と同様であるため、説明を省略する。
(利用者DB1200の記憶内容の一例)
次に、図12を用いて、利用者DB1200の記憶内容の一例について説明する。利用者DB1200は、例えば、図3に示したタスク配備装置100のメモリ802や記録媒体805など、または、図8に示したタスク実行ノード110のメモリ802や記録媒体805などにより実現される。
図12は、利用者DB1200の記憶内容の一例を示す説明図である。図12に示すように、利用者DB1200は、利用者IDのフィールドに対応付けて、要求時間のフィールドを有する。利用者DB1200は、各フィールドに情報を設定することにより、利用者情報がレコードとして記憶される。
利用者IDのフィールドは、利用者IDが設定される。利用者IDは、タスクの実行要求を送信したクライアント装置204の利用者を特定するIDである。要求時間のフィールドは、要求時間が設定される。要求時間は、タスクの実行結果を受信する期限を示すデッドラインである。利用者DB1200は、データ配信ノード203またはクライアント装置204が有してもよい。
(タスク配備装置100とタスク実行ノード110との機能的構成例)
次に、図13を用いて、タスク配備装置100とタスク実行ノード110との機能的構成例について説明する。
図13は、タスク配備装置100とタスク実行ノード110との機能的構成例を示すブロック図である。タスク配備装置100は、第1の記憶部1301と、第1の取得部1302と、追加部1303と、受付部1304と、算出部1305と、決定部1306と、置換部1307と、第1の出力部1308とを含む。
第1の記憶部1301は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。第1の取得部1302〜第1の出力部1308は、制御部となる機能である。第1の取得部1302〜第1の出力部1308は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
第1の記憶部1301は、1以上のノード110を管理する情報を記憶する。ノード110は、例えば、図8に示したタスク実行ノード110である。第1の記憶部1301は、例えば、図4に示したタスク実行ノード管理DB400を記憶する。第1の記憶部1301は、タスク実行ノード110に実行させる処理の実行完了時点を記憶する。処理は、例えば、タスクである。第1の記憶部1301は、例えば、図5に示したオファー情報DB500を記憶する。
第1の記憶部1301は、タスクを管理する情報を記憶する。第1の記憶部1301は、例えば、図6に示したタスク管理DB600を記憶する。第1の記憶部1301は、タスクに用いられる処理対象データを管理する情報を記憶する。第1の記憶部1301は、例えば、図7に示したデータ管理DB700を記憶する。これにより、第1の記憶部1301は、各機能部の処理に各種DBの記憶内容を参照させることができる。
第1の取得部1302は、所定の間隔で、1以上のタスク実行ノード110のいずれかのタスク実行ノード110に含まれる演算装置が実行するタスクが格納されるキューにおけるタスク数を取得する。演算装置は、例えば、図8に示したタスク実行ノード110が有するCPU801である。キューは、例えば、図10に示したタスク実行キュー1000である。
第1の取得部1302は、例えば、所定の間隔で、1以上のタスク実行ノード110に含まれる複数のCPU801からランダムに選択したCPU801が実行するタスクが格納されるタスク実行キュー1000におけるタスク数を取得する。第1の取得部1302は、具体的には、所定の間隔で、ランダムに選択したCPU801を有するタスク実行ノード110からキュー状態DB900の記憶内容を取得し、タスク実行キュー1000におけるタスク数を取得する。これにより、第1の取得部1302は、所定の間隔で、ランダムに選択したCPU801におけるタスク数を特定することができ、ランダムに選択したCPU801に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
第1の取得部1302は、例えば、所定の間隔で、1以上のタスク実行ノード110に含まれる複数のCPU801のそれぞれのCPU801が実行するタスクが格納されるタスク実行キュー1000におけるタスク数を取得してもよい。第1の取得部1302は、具体的には、所定の間隔で、1以上のタスク実行ノード110のそれぞれのタスク実行ノード110から、それぞれのタスク実行ノード110が有するCPU801ごとに対応するキュー状態DB900の記憶内容を取得する。第1の取得部1302は、それぞれのタスク実行ノード110が有するCPU801ごとに対応するキュー状態DB900の記憶内容から、タスク実行キュー1000におけるタスク数を取得する。これにより、第1の取得部1302は、所定の間隔で、それぞれのCPU801におけるタスク数を特定することができ、それぞれのCPU801に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
第1の取得部1302は、例えば、所定の間隔で、CPU801が実行するタスクが格納されるタスク実行キュー1000におけるタスク数のほか、CPU801におけるタスク実行速度を取得してもよい。第1の取得部1302は、具体的には、所定の間隔で、1以上のタスク実行ノード110のそれぞれのタスク実行ノード110から、それぞれのタスク実行ノード110が有するCPU801ごとに対応するキュー状態DB900の記憶内容を取得する。第1の取得部1302は、それぞれのタスク実行ノード110が有するCPU801ごとに対応するキュー状態DB900の記憶内容から、タスク実行キュー1000におけるタスク数を取得する。これにより、第1の取得部1302は、所定の間隔で、CPU801に新たなタスクを実行させる場合のタスク実行完了時点を算出する指標を取得することができる。
追加部1303は、CPU801が実行するタスクが格納されるタスク実行キュー1000におけるタスク数を取得した際、CPU801を含むタスク実行ノード110に、タスク実行キュー1000に対してダミーのタスクを追加させる。ダミーのタスクは、例えば、アイドルタスクである。追加部1303は、例えば、CPU801を含むタスク実行ノード110に、タスク実行キュー1000に対してアイドルタスクを追加させる実行順序確保依頼を送信する。これにより、追加部1303は、今後新たなタスクが生成された場合に、新たなタスクと入れ替えることができるアイドルタスクを、タスク実行キュー1000に追加しておくことができる。
追加部1303は、複数のCPU801のうち相対的に小さいタスク数を取得したCPU801を含むタスク実行ノード110に、タスク実行キュー1000に対してアイドルタスクを追加させる。追加部1303は、例えば、相対的に小さいタスクを取得したCPU801を含むタスク実行ノード110に、タスク実行キュー1000に対してアイドルタスクを追加させる実行順序確保依頼を送信する。これにより、追加部1303は、今後新たなタスクが生成された場合に、新たなタスクと入れ替えることができるアイドルタスクを、タスク実行キュー1000に追加しておくことができる。
受付部1304は、新たなタスクの実行要求を受け付ける。新たなタスクの実行要求は、新たなタスクの実行結果の送信期限を含む。送信期限は、デッドラインである。受付部1304は、例えば、データ生成装置201の処理対象データを用いる新たなタスクを生成した場合に、新たなタスクの実行結果の送信先になるクライアント装置204から、デッドラインを含む実行要求を受信する。
算出部1305は、第1の取得部1302が取得したCPU801についてのタスク数と、CPU801におけるタスク実行速度とに基づいて、CPU801に新たなタスクを実行させる場合における新たなタスクの実行完了時点を、CPU801ごとに算出する。算出部1305は、例えば、CPU801についてのタスク数と、CPU801におけるタスク実行速度とを乗算したタスク実行完了時間の分、現時点から経過した後の時点を、新たなタスクの実行完了時点として、CPU801ごとに算出する。これにより、算出部1305は、新たなタスクをいずれのCPU801に実行させるかを決定する指標として、新たなタスクの実行完了時点を算出することができる。
算出部1305は、第1の取得部1302が取得したCPU801についてのタスク数と、新たなタスクの種別に対応するタスク実行速度とに基づいて、新たなタスクの実行完了時点を、CPU801ごとに算出してもよい。算出部1305は、例えば、実行要求を受け付けたことに応じて、CPU801に新たなタスクを実行させる場合における新たなタスクの実行完了時点を、CPU801ごとに算出する。これにより、算出部1305は、新たなタスクをいずれのCPU801に実行させるかを決定する指標として、新たなタスクの実行完了時点を算出することができる。
決定部1306は、CPU801ごとに算出した実行完了時点に基づいて、新たなタスクを実行させるCPU801を、1以上のタスク実行ノード110のいずれかのタスク実行ノード110に含まれるCPU801に決定する。
決定部1306は、例えば、新たなタスクを実行させるCPU801を、算出した実行完了時点が、受け付けた実行要求に含まれる送信期限より前になるCPU801に決定する。これにより、決定部1306は、新たなタスクが送信期限までに実行完了する確率を向上させることができる。
決定部1306は、新たなタスクを実行させるCPU801を、算出した実行完了時点が現時点に最も近くなるCPU801に決定する。これにより、決定部1306は、新たなタスクが送信期限までに実行完了する確率を向上させることができる。
置換部1307は、新たなタスクを実行させるCPU801を決定した場合、新たなタスクを実行させるCPU801を含むタスク実行ノード110に、タスク実行キュー1000に追加されたアイドルタスクを、新たなタスクに置換させる。置換部1307は、例えば、新たなタスクを実行させるCPU801を決定した場合、新たなタスクを実行させるCPU801を含むタスク実行ノード110に、置換要求を送信する。これにより、置換部1307は、タスク実行ノード110に新たなタスクを実行させることができる。
第1の出力部1308は、タスク実行ノード110に実行させた新たなタスクの実行結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。外部装置は、例えば、タスク実行ノード110に実行させた新たな処理の実行要求の送信元であるクライアント装置204である。第1の出力部1308は、各機能部の処理結果を出力してもよい。
一方で、タスク実行ノード110は、第2の記憶部1310と、第2の取得部1311と、実行部1312と、第2の出力部1313とを含む。
第2の記憶部1310は、例えば、図8に示したメモリ802や記録媒体805などの記憶領域によって実現される。第2の取得部1311〜第2の出力部1313は、制御部となる機能である。第2の取得部1311〜第2の出力部1313は、具体的には、例えば、図8に示したメモリ802や記録媒体805などの記憶領域に記憶されたプログラムをCPU801に実行させることにより、または、ネットワークI/F803により、その機能を実現する。各機能部の処理結果は、例えば、図8に示したメモリ802や記録媒体805などの記憶領域に記憶される。
第2の記憶部1310は、実行するタスクを管理する情報を記憶する。第2の記憶部1310は、例えば、図9に示したキュー状態DB900を記憶する。第2の記憶部1310は、実行するタスクを記憶する。第2の記憶部1310は、例えば、図10に示したタスク実行キュー1000を記憶する。第2の記憶部1310は、タスクが用いる処理対象データを記憶する。第2の記憶部1310は、例えば、図11に示したデータ管理DB1100を記憶する。これにより、第2の記憶部1310は、各機能部に各種DBの記憶内容を参照させることができる。
第2の取得部1311は、アイドルタスクをタスク実行キュー1000に追加する実行順序確保依頼を取得する。第2の取得部1311は、実行順序確保依頼をタスク配備装置100から受信する。これにより、第2の取得部1311は、タスク実行キュー1000に、今後生成される新たなタスクの実行順序を確保することができる。
第2の取得部1311は、タスク実行キュー1000のアイドルタスクを新たなタスクに置換する置換要求を取得する。第2の取得部1311は、例えば、置換要求をタスク配備装置100から受信する。これにより、第2の取得部1311は、確保しておいた実行順序で、新たなタスクを実行することができる。
実行部1312は、タスク実行キュー1000のタスクを取り出して実行する。実行部1312は、タスク実行キュー1000のタスクを取り出し、取り出したタスクを実行完了してから、タスク実行キュー1000から次のタスクを取り出す。これにより、実行部1312は、タスクの実行順序を確保することができる。
実行部1312は、第2の取得部1311が実行順序確保依頼を取得した場合、アイドルタスクをタスク実行キュー1000に追加する。これにより、実行部1312は、タスク実行キュー1000に、今後生成される新たなタスクの実行順序を確保することができる。
実行部1312は、第2の取得部1311が置換要求を取得した場合、タスク実行ノード110のアイドルタスクを新たなタスクと置換する。これにより、第2の取得部1311は、確保しておいた実行順序で、新たなタスクを実行することができる。
第2の出力部1313は、タスク配備装置100からの問い合わせに応じて、キュー状態DB900の記憶内容を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F803による外部装置への送信、または、メモリ802や記録媒体805などの記憶領域への記憶である。外部装置は、例えば、タスク配備装置100である。第2の出力部1313は、タスク配備装置100からの実行要求に応じて、実行部1312の実行結果を出力してもよい。第2の出力部1313は、各機能部の処理結果を出力してもよい。
(タスク配備装置100とタスク実行ノード110との具体的な機能的構成例)
次に、図14を用いて、タスク配備装置100とタスク実行ノード110との具体的な機能的構成例について説明する。
図14は、タスク配備装置100とタスク実行ノード110との具体的な機能的構成例を示す説明図である。タスク配備装置100は、図4に示したタスク実行ノード管理DB400と、図5に示したオファー情報DB500と、図6に示したタスク管理DB600と、図7に示したデータ管理DB700とを有する。
タスク配備装置100は、タスク実行ノード選択部1401と、分散リソース管理部1402と、タスク実行完了時点見積もり部1403と、オファー管理部1405と、タスク管理部1406と、タスク配備場所決定部1407とを有する。
一方で、タスク実行ノード110は、図9に示したキュー状態DB900と、図10に示したタスク実行キュー1000と、図11に示したデータ管理DB1100とを有する。タスク実行ノード110は、実行順序制御部1404と、タスク実行部1408とを有する。
タスク実行ノード選択部1401は、タスク実行ノード管理DB400を参照し、タスク実行キュー1000におけるタスク数を問い合わせるタスク実行ノード110を選択する。タスク実行ノード選択部1401は、選択したタスク実行ノード110を、分散リソース管理部1402に出力する。
分散リソース管理部1402は、選択したタスク実行ノード110に、タスク実行ノード110のいずれかのCPU801に対応するタスク実行キュー1000におけるタスク数の問い合わせを送信する。そして、分散リソース管理部1402は、キュー状態DB900の記憶内容を示す第10のメッセージM10を受信する。第10のメッセージM10の一例は、例えば、図24に後述する。
分散リソース管理部1402は、タスク実行完了時点見積もり部1403に、選択したタスク実行ノード110のいずれかのCPU801に新たなタスクを実行させた場合におけるタスク実行完了時点を算出させる。分散リソース管理部1402は、タスク実行完了時点をタスク実行完了時点見積もり部1403から受け付け、オファー管理部1405に出力する。
分散リソース管理部1402は、タスク実行完了時点に基づいて、いずれかのCPU801を有するタスク実行ノード110の実行順序制御部1404に、実行順序確保依頼として、第11のメッセージM11を送信する。実行順序確保依頼は、いずれかのCPU801が実行するタスクが格納されるタスク実行キュー1000にアイドルタスクを追加させる依頼である。第11のメッセージM11の一例は、例えば、図25に後述する。
また、分散リソース管理部1402は、アイドルタスクを削除させる削除要求として、第12のメッセージM12を送信する。第12のメッセージM12の一例は、例えば、図26に後述する。これにより、分散リソース管理部1402は、新たなタスクの実行順序を確保しておくことができる。また、分散リソース管理部1402は、新たなタスクと置換しないアイドルタスクを、タスク実行キュー1000から削除させることができる。
タスク実行完了時点見積もり部1403は、いずれかのCPU801に新たなタスクを実行させた場合におけるタスク実行完了時間を算出し、現時点からタスク実行完了時間が経過したタスク実行完了時点を算出する。タスク実行完了時点見積もり部1403は、タスク実行完了時点を、分散リソース管理部1402に出力する。
オファー管理部1405は、タスク実行完了時点を含むオファー情報を、オファー情報DB500を用いて記憶する。これにより、オファー管理部1405は、新たなタスクを実行可能なタスク実行ノード110のCPU801を管理し、新たなタスクをタスク実行ノード110のCPU801に実行させた場合のタスク実行完了時点を管理することができる。
データ生成装置201は、入力データとして、第1のメッセージM1をデータ受信ノード202に送信する。第1のメッセージM1は、例えば、図15に後述する。データ受信ノード202は、第1のメッセージM1を、第2のメッセージM2としてタスク管理部1406に転送する。
実行順序制御部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は、例えば、応答遅延最小化のアルゴリズムにしたがって、タスク実行完了時点が現時点に最も近くなるCPU801を、配備場所に決定する。タスク配備場所決定部1407は、例えば、利用者DB1200を参照し、デッドライン充足率最大化のアルゴリズムにしたがって、タスク実行完了時点がデッドラインよりも前になるCPU801を、配備場所に決定してもよい。タスク配備場所決定部1407は、利用者DB1200を参照し、応答遅延最小化のアルゴリズムと、デッドライン充足率最大化のアルゴリズムとを使い分けてもよい。
タスク実行部1408は、タスク実行キュー1000から順にタスク管理情報を取り出し、データ管理DB1100を参照してタスクを実行する。タスク実行部1408は、CPU801を用いて、タスクの実行結果として、第4のメッセージM4をタスク管理部1406に送信する。第4のメッセージM4の一例は、例えば、図18に後述する。
データ配信ノード203は、タスク管理部1406から、第5のメッセージM5として、タスク実行部1408からの第4のメッセージM4を転送される。第5のメッセージM5の一例は、例えば、図19に後述する。データ配信ノード203は、利用者DB1200から、利用者情報として、第6のメッセージを取得し、タスク管理部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に示したタスク配備装置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からタスク配備装置100に送信される。
(第3のメッセージM3の一例)
次に、図17を用いて、第3のメッセージM3の一例について説明する。
図17は、第3のメッセージM3の一例を示す説明図である。図17に示すように、第3のメッセージM3は、送信元アドレスと、宛先アドレスと、タスクIDと、処理対象データとを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。処理対象データは、フォーマットが任意であるデータである。第3のメッセージM3は、タスク配備装置100からタスク実行ノード110に送信される。
(第4のメッセージM4の一例)
次に、図18を用いて、第4のメッセージM4の一例について説明する。
図18は、第4のメッセージM4の一例を示す説明図である。図18に示すように、第4のメッセージM4は、送信元アドレスと、宛先アドレスと、タスクIDと、実行結果データとを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。実行結果データは、フォーマットが任意であるデータである。第4のメッセージM4は、タスク実行ノード110からタスク配備装置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である。
制約条件は、例えば、要求アルゴリズムと、要求時間とを含む。要求アルゴリズムは、デッドライン充足率最大化、または、応答遅延最小化である。デッドライン充足率最大化は、タスクをデッドラインまでに実行完了可能なCPU801に、タスクを割り当てるアルゴリズムである。応答遅延最小化は、タスクの実行完了時点が現時点に最も近く、タスクの実行完了時点が最小になるCPU801に、タスクを割り当てるアルゴリズムである。要求時間は、タスクの実行結果を送信する期限を示すデッドラインである。第8のメッセージM8は、クライアント装置204から利用者DB1200に入力される。
(第9のメッセージM9の一例)
次に、図23を用いて、第9のメッセージM9の一例について説明する。
図23は、第9のメッセージM9の一例を示す説明図である。図23に示すように、第9のメッセージM9は、送信元アドレスと、宛先アドレスと、タスクIDと、制約条件とを含む。タスクIDは、タスク実行ノード110に実行させるタスクを特定するIDである。
制約条件は、例えば、要求アルゴリズムと、要求時間とを含む。要求アルゴリズムは、デッドライン充足率最大化、または、応答遅延最小化である。デッドライン充足率最大化は、タスクをデッドラインまでに実行完了可能なCPU801に、タスクを割り当てるアルゴリズムである。応答遅延最小化は、タスクの実行完了時点が現時点に最も近く、タスクの実行完了時点が最小になるCPU801に、タスクを割り当てるアルゴリズムである。要求時間は、タスクの実行結果を送信する期限を示すデッドラインである。第9のメッセージM9は、利用者DB1200からタスク配備装置100に入力される。
(第10のメッセージM10の一例)
次に、図24を用いて、第10のメッセージM10の一例について説明する。
図24は、第10のメッセージM10の一例を示す説明図である。図24に示すように、第10のメッセージM10は、送信元アドレスと、宛先アドレスと、キュー状態とを含む。キュー状態は、例えば、タスク実行ノードIDと、既存タスク数と、平均処理実行速度とを含む。タスク実行ノードIDは、タスク実行ノード110を特定するIDである。既存タスク数は、タスク実行ノードIDが示すタスク実行ノード110が有するタスク実行キュー1000の先頭から空きまでの既存タスク数である。平均処理実行速度は、タスク実行ノードIDが示すタスク実行ノード110が、過去に実行した全タスクの平均処理実行速度である。第10のメッセージM10は、タスク実行ノード110からタスク配備装置100に送信される。
(第11のメッセージM11の一例)
次に、図25を用いて、第11のメッセージM11の一例について説明する。
図25は、第11のメッセージM11の一例を示す説明図である。図25に示すように、第11のメッセージM11は、送信元アドレスと、宛先アドレスと、実行順序確保とを含む。実行順序確保は、例えば、タスク実行ノードIDを含む。タスク実行ノードIDは、アイドルタスクをタスク実行キュー1000に追加させ、今後生成されうる新たなタスクの実行順序を確保させるタスク実行ノード110を特定するIDである。第11のメッセージM11は、タスク配備装置100からタスク実行ノード110に送信される。
(第12のメッセージM12の一例)
次に、図26を用いて、第12のメッセージM12の一例について説明する。
図26は、第12のメッセージM12の一例を示す説明図である。図26に示すように、第12のメッセージM12は、送信元アドレスと、宛先アドレスと、実行順序確保とを含む。実行順序解放は、例えば、タスク実行ノードIDと、タスクIDとを含む。タスク実行ノードIDは、アイドルタスクをタスク実行キュー1000に追加させたタスク実行ノード110を特定するIDである。タスクIDは、タスク実行キュー1000から削除するアイドルタスクを特定するIDである。第12のメッセージM12は、タスク配備装置100からタスク実行ノード110に送信される。
(タスクの配備場所を決定する流れ)
次に、図27を用いて、タスクの配備場所を決定する流れについて説明する。
図27は、タスクの配備場所を決定する流れを示す説明図である。図27において、(27−1)分散リソース管理部1402は、タスク実行ノード110のCPU801が実行するタスクが格納されたタスク実行キュー1000における現在のタスク数を、タスク実行ノード110が発行したオファーとして受信する。
(27−2)分散リソース管理部1402は、タスク実行ノード110のCPU801が実行するタスクが格納されたタスク実行キュー1000にアイドルタスクを追加させる実行順序確保依頼を、タスク実行ノード110に送信する。これにより、分散リソース管理部1402は、タスク実行ノード110のCPU801が実行するタスクが格納されたタスク実行キュー1000に、今後生成されうる新たなタスクと置換可能なアイドルタスクを追加させることができる。分散リソース管理部1402は、今後生成されうる新たなタスクの実行順序を確保しておくことができる。
(27−3)分散リソース管理部1402は、タスク数に基づくタスク実行完了時点を含む、タスク実行ノード110が発行したオファーについてのオファー情報を、タスク配備場所決定部1407に送信する。
(27−4)タスク配備場所決定部1407は、分散リソース管理部1402からオファー情報を受信する。タスク配備場所決定部1407は、新たなタスクが生成されると、オファー情報に基づいて、新たなタスクの配備場所になるCPU801を決定する。タスク配備場所決定部1407は、決定したCPU801を有するタスク実行ノード110に、新たなタスクの実行要求を送信する。
(27−5)タスク実行ノード110は、実行要求を受信すると、タスク実行キュー1000のアイドルタスクを新たなタスクに置換する。タスク実行ノード110は、タスク実行キュー1000のタスクを順に取り出して実行する。タスク実行ノード110は、タスクの実行結果を、タスク配備装置100に送信する。これにより、タスク配備装置100は、所定の期限までにタスクが実行完了するようなCPUに、新たなタスクを配備することができる。
ここで、例えば、タスク実行ノード110が1つのCPU801を有し、タスク配備装置100がオファーの発行元としてタスク実行ノード110をランダムに選択し、タスクの処理量は一様である場合がある。この場合については、後述する実施例1に対応する。
また、例えば、タスク実行ノード110が1つのCPU801を有し、タスク配備装置100がオファーの発行元としてタスク数が相対的に小さいタスク実行ノード110を選択し、タスクの処理量は一様である場合がある。この場合については、後述する実施例2に対応する。
また、例えば、タスク実行ノード110が1つのCPU801を有し、タスク配備装置100がオファーの発行元としてタスク実行ノード110をランダムに選択し、タスクの処理量が一様ではない場合がある。この場合については、後述する実施例3に対応する。
また、例えば、タスク実行ノード110が複数のCPU801を有し、タスク配備装置100がオファーの発行元としてタスク実行ノード110をランダムに選択し、タスクの処理量は一様である場合がある。この場合については、後述する実施例4に対応する。
(配備場所を決定する実施例1)
次に、図28〜図31を用いて、配備場所を決定する実施例1について説明する。
図28〜図31は、配備場所を決定する実施例1を示す説明図である。図28において、分散リソース管理部1402は、タスク実行ノード管理DB400を参照し、オファーの発行元としてタスク実行ノード110をランダムに選択する。分散リソース管理部1402は、タスク実行ノード110が有するCPU801が1つであるため、CPU801単位で選択しなくてもよい。
分散リソース管理部1402は、タスク実行ノード110Aを選択する。分散リソース管理部1402は、選択したタスク実行ノード110Aの実行順序制御部1404から、タスク実行キュー1000に格納されたタスク2801,2802の数として、既存タスク数K=2の通知を受け付け、キュー状態DB900に記憶する。
分散リソース管理部1402は、既存タスク数K=2に1を加算し、今後生成され、タスク実行キュー1000に追加されうる新たなタスク2803を含めた、タスク実行キュー1000のタスク数K+1=3を算出する。分散リソース管理部1402は、キュー状態DB900を参照して、タスク数K+1と、CPU801の平均処理実行速度μとに基づいて、タスク実行完了時間E=(K+1)/μを算出する。分散リソース管理部1402は、現時点からタスク実行完了時間Eが経過した後のタスク実行完了時点を算出する。ここで、図29の説明に移行する。
図29において、分散リソース管理部1402は、実行順序確保依頼を実行順序制御部1404に送信する。実行順序制御部1404は、実行順序確保依頼を受信すると、アイドルタスク2901を、タスク実行キュー1000に追加する。実行順序制御部1404は、例えば、アイドルタスク2901を特定するIDと、処理対象データとしてNULLとを設定したレコードを、タスク実行キュー1000に追加する。ここで、図30の説明に移行する。
図30において、タスク配備場所決定部1407は、生成された新たなタスク3001の配備場所を、応答遅延最小化のアルゴリズム、または、デッドライン充足率最大化のアルゴリズムにしたがって、タスク実行ノード110Aに決定する。タスク配備場所決定部1407は、生成された新たなタスク3001と、処理対象データとを対応付けて、タスク実行ノード110Aに送信する。
ここで、タスク実行ノード110Aは、タスク2801を実行完了している。タスク実行ノード110Aは、新たなタスク3001と、処理対象データとを受信すると、タスク実行キュー1000のアイドルタスク2901を、新たなタスク3001と置換する。タスク実行ノード110Aは、タスク実行キュー1000からタスク2802,3001を順に取り出して実行し、実行結果をタスク配備装置100に送信する。これにより、新たなタスク3001の実行結果は、タスク配備装置100やデータ配信ノード203を介して、クライアント装置204に配信される。ここで、図31の説明に移行する。
図31において、タスク配備場所決定部1407は、生成された新たなタスク3001の配備場所を、応答遅延最小化のアルゴリズム、または、デッドライン充足率最大化のアルゴリズムにしたがって、タスク実行ノード110Bに決定する場合があってもよい。タスク配備場所決定部1407は、オファー辞退通知を、タスク実行ノード110Aに送信する。
ここで、タスク実行ノード110Aは、オファー辞退通知を受信すると、タスク実行キュー1000のアイドルタスク2901を削除する。これにより、タスク実行ノード110Aは、アイドルタスク2901を実行してしまい、演算リソースや消費電力を浪費することを抑制することができる。
(実施例1における分散リソース管理処理手順の一例)
次に、図32を用いて、タスク配備装置100によって実行される、実施例1における分散リソース管理処理手順の一例について説明する。
図32は、実施例1における分散リソース管理処理手順の一例を示すフローチャートである。図32において、タスク配備装置100は、タスク実行ノード管理DB400を参照し、タスク実行ノード110の選択処理を実行する(ステップS3201)。次に、タスク配備装置100は、キュー状態DB900を参照し、タスク実行完了時点の算出処理を実行する(ステップS3202)。そして、タスク配備装置100は、実行順序確保依頼をタスク実行ノード110に送信し、実行順序確保処理をタスク実行ノード110に実行させる(ステップS3203)。
次に、タスク配備装置100は、オファー情報を、オファー情報DB500を用いて記憶する(ステップS3204)。そして、タスク配備装置100は、分散リソース管理処理手順を終了する。これにより、タスク配備装置100は、タスクを実行可能なタスク実行ノード110を特定可能になる。
(実施例1における配備場所決定処理手順の一例)
次に、図33を用いて、タスク配備装置100によって実行される、実施例1における配備場所決定処理手順の一例について説明する。
図33は、実施例1における配備場所決定処理手順の一例を示すフローチャートである。図33において、タスク配備装置100は、IoTデータを受信する(ステップS3301)。次に、タスク配備装置100は、受信したIoTデータに基づいて、新たなタスクを生成する(ステップS3302)。そして、タスク配備装置100は、オファー情報DB500を参照し、生成した新たなタスクについて、タスク配備場所決定処理を実行する(ステップS3303)。
次に、タスク配備装置100は、タスク実行ノード110から実行結果を受信する(ステップS3304)。そして、タスク配備装置100は、実行結果をクライアント装置204に送信する(ステップS3305)。その後、タスク配備装置100は、配備場所決定処理を終了する。これにより、タスク配備装置100は、タスク実行ノード110にタスクを実行させることができる。
(実施例1におけるタスク実行ノード110の選択処理手順の一例)
次に、図34を用いて、ステップS3201でタスク配備装置100によって実行される、実施例1におけるタスク実行ノード110の選択処理手順の一例について説明する。
図34は、実施例1におけるタスク実行ノード110の選択処理手順の一例を示すフローチャートである。図34において、タスク配備装置100は、タスク実行ノード管理DB400を参照し、タスク配備システム200の複数のタスク実行ノード110のいずれかのタスク実行ノード110をランダムに選択する(ステップS3401)。そして、タスク配備装置100は、タスク実行ノード110の選択処理を終了する。
(実施例1におけるタスク実行完了時点の算出処理手順の一例)
次に、図35を用いて、ステップS3202でタスク配備装置100によって実行される、実施例1におけるタスク実行完了時点の算出処理の一例について説明する。
図35は、実施例1におけるタスク実行完了時点の算出処理手順の一例を示すフローチャートである。図35において、タスク配備装置100は、キュー状態DB900を参照し、選択したタスク実行ノード110のCPU801が実行するタスクが格納されるタスク実行キュー1000におけるタスク数Kを取得する(ステップS3501)。
次に、タスク配備装置100は、キュー状態DB900を参照し、タスク数K+1とCPU801の平均処理実行速度μとに基づいて、タスク実行完了時間E=(K+1)/μを算出し、タスク実行完了時点を算出する(ステップS3502)。そして、タスク配備装置100は、タスク実行完了時点の算出処理を終了する。
(実施例1における実行順序確保処理手順の一例)
次に、図36を用いて、ステップS3203でタスク実行ノード110によって実行される、実施例1における実行順序確保処理の一例について説明する。
図36は、実施例1における実行順序確保処理手順の一例を示すフローチャートである。図36において、タスク実行ノード110は、実行順序確保依頼を受信する(ステップS3601)。次に、タスク実行ノード110は、タスク実行キュー1000の末尾にアイドルタスクを追加する(ステップS3602)。そして、タスク実行ノード110は、実行順序確保処理を終了する。
(実施例1におけるタスク配備場所決定処理手順の一例)
次に、図37を用いて、ステップS3303でタスク配備装置100によって実行される、実施例1におけるタスク配備場所決定処理の一例について説明する。
図37は、実施例1におけるタスク配備場所決定処理手順の一例を示すフローチャートである。図37において、タスク配備装置100は、オファー情報DB500を参照し、タスク実行完了時間が現時点に最も近くなるタスク実行ノード110を選択する(ステップS3701)。
次に、タスク配備装置100は、選択したタスク実行ノード110に、タスク実行依頼を送信する(ステップS3702)。一方で、タスク配備装置100は、選択していないタスク実行ノード110に、オファー辞退通知を送信する(ステップS3703)。そして、タスク配備装置100は、タスク配備場所決定処理を終了する。
(実施例1におけるタスク配備場所決定処理手順の別の例)
次に、図38を用いて、ステップS3303でタスク配備装置100によって実行される、実施例1におけるタスク配備場所決定処理の別の例について説明する。
図38は、実施例1におけるタスク配備場所決定処理手順の別の例を示すフローチャートである。図38において、タスク配備装置100は、利用者DB1200を参照し、生成した新たなタスクのデッドラインを取得する(ステップS3801)。
次に、タスク配備装置100は、オファー情報DB500を参照し、タスク実行完了時点がデッドラインより前になるタスク実行ノード110のうち、タスク実行完了時点が最も遅くなるタスク実行ノード110を選択する(ステップS3802)。
そして、タスク配備装置100は、選択したタスク実行ノード110に、タスク実行依頼を送信する(ステップS3803)。一方で、タスク配備装置100は、選択していないタスク実行ノード110に、オファー辞退通知を送信する(ステップS3804)。そして、タスク配備装置100は、タスク配備場所決定処理を終了する。
タスク配備装置100は、利用者DB1200を参照し、図37に示したタスク配備場所決定処理と、図38に示したタスク配備場所決定処理とを使い分けるようにしてもよい。これにより、タスク配備装置100は、利用者に要求された基準にしたがって、タスク実行完了時点を制御することができる。
(実施例1におけるオファー成功処理手順の一例)
次に、図39を用いて、タスク実行ノード110によって実行される、実施例1におけるオファー成功処理の一例について説明する。
図39は、実施例1におけるオファー成功処理手順の一例を示すフローチャートである。図39において、タスク実行ノード110は、タスク実行要求を受信する(ステップS3901)。
次に、タスク実行ノード110は、タスク実行キュー1000のアイドルタスクを、タスク実行要求に対応する新たなタスクと置き換える(ステップS3902)。そして、タスク実行ノード110は、新たなタスクに用いられる処理対象データを、データ管理DB1100を用いて記憶する(ステップS3903)。
その後、タスク実行ノード110は、タスク実行キュー1000から新たなタスクを取り出した場合、新たなタスクを処理対象データを用いて実行する(ステップS3904)。次に、タスク実行ノード110は、新たなタスクの実行結果をタスク配備装置100に送信する(ステップS3905)。そして、タスク実行ノード110は、オファー成功処理を終了する。
(実施例1におけるオファー失敗処理手順の一例)
次に、図40を用いて、タスク実行ノード110によって実行される、実施例1におけるオファー失敗処理の一例について説明する。
図40は、実施例1におけるオファー失敗処理手順の一例を示すフローチャートである。図40において、タスク実行ノード110は、オファー辞退通知を受信する(ステップS4001)。
次に、タスク実行ノード110は、タスク実行キュー1000のアイドルタスクを削除する(ステップS4002)。そして、タスク実行ノード110は、オファー失敗処理を終了する。
(配備場所を決定する実施例2)
次に、配備場所を決定する実施例2について説明する。実施例1では、上述したように、分散リソース管理部1402が、オファーの発行元として、タスク実行ノード110をランダムに選択する場合について説明した。
これに対し、実施例2では、分散リソース管理部1402は、複数のタスク実行ノード110のそれぞれのタスク実行ノード110のタスク実行キュー1000における既存タスク数Kを取得する。そして、分散リソース管理部1402は、オファーの発行元として、取得した既存タスク数Kが相対的に小さくなるタスク実行ノード110を選択する。分散リソース管理部1402は、タスク実行ノード110が有するCPU801が1つであるため、CPU801単位で選択しなくてもよい。
以降では、分散リソース管理部1402は、実施例1と同様に、選択したタスク実行ノード110について、タスク実行完了時間Eを算出し、タスク実行完了時点を算出し、図29〜図31に示したような動作を行うため、説明を省略する。
(実施例2におけるタスク実行ノード110の選択処理手順の一例)
次に、図41を用いて、ステップS3201でタスク配備装置100によって実行される、実施例2におけるタスク実行ノード110の選択処理手順の一例について説明する。
図41は、実施例2におけるタスク実行ノード110の選択処理手順の一例を示すフローチャートである。図41において、タスク配備装置100は、複数のタスク実行ノード110のそれぞれのタスク実行ノード110のCPU801が実行するタスクが格納されるタスク実行キュー1000におけるタスク数Kを取得する(ステップS4101)。
次に、タスク配備装置100は、タスク数Kが最も小さくなるタスク実行ノード110を選択する(ステップS4102)。そして、タスク配備装置100は、タスク実行ノード110の選択処理を終了する。これにより、タスク配備装置100は、タスクを実行させる確率が比較的高くなるタスク実行ノード110を選択することができる。
(配備場所を決定する実施例3)
次に、図42を用いて、配備場所を決定する実施例3について説明する。
図42は、実施例3におけるキュー状態DB4200の記憶内容の一例を示す説明図である。実施例3では、実施例1とは異なり、キュー状態DB4200は、平均処理実行速度のフィールドに対応付けて、タスクの種別ごとの平均処理実行速度μiを記憶する。タスクIDは、タスクの種別を特定するIDである。
実施例1では、分散リソース管理部1402が、タスクの種別によらない、過去に実行した全タスクの平均処理実行速度を用いて、タスク実行完了時間Eを算出し、タスク実行完了時点を算出する場合について説明した。
これに対し、実施例3では、分散リソース管理部1402は、今後生成され、タスク実行キュー1000に追加されうる新たなタスクの種別を特定するタスクの種別を推定し、タスクの種別に対応するタスクIDを特定する。推定は、例えば、過去にデータ生成装置201から受信した入力データの内容に基づいて行われる。分散リソース管理部1402は、キュー状態DB4200を参照して、タスク数K+1と、特定したタスクIDに対応する平均処理実行速度μiとに基づいて、タスク実行完了時間Ei=(K+1)/μiを算出し、タスク実行完了時点を算出する。
(実施例3におけるタスク実行完了時点の算出処理手順の一例)
次に、図43を用いて、ステップS3202でタスク配備装置100によって実行される、実施例3におけるタスク実行完了時点の算出処理の一例について説明する。
図43は、実施例3におけるタスク実行完了時点の算出処理手順の一例を示すフローチャートである。図43において、タスク配備装置100は、キュー状態DB4200を参照し、選択したタスク実行ノード110のCPU801が実行するタスクが格納されるタスク実行キュー1000におけるタスク数Kを取得する(ステップS4301)。
次に、タスク配備装置100は、タスク数K+1と、タスクの種別に対応するCPU801の平均処理実行速度μiとに基づいて、タスク実行完了時間Ei=(K+1)/μiを算出し、タスク実行完了時点を算出する(ステップS4302)。そして、タスク配備装置100は、タスク実行完了時点の算出処理を終了する。
(配備場所を決定する実施例4)
次に、図44および図45を用いて、配備場所を決定する実施例4について説明する。
図44は、実施例4におけるタスク実行ノード管理DB4400の記憶内容の一例を示す説明図である。実施例4では、実施例1とは異なり、タスク実行ノード管理DB4400は、タスク実行ノードIDと、CPU_IDとのフィールドを有する。
タスク実行ノードIDのフィールドは、タスク実行ノードIDが設定される。タスク実行ノードIDは、タスク実行ノード110を特定するIDである。タスク実行ノードIDは、例えば、Xである。Xは、1〜kの整数である。kは、タスク配備システム200におけるタスク実行ノード110の数である。CPU_IDのフィールドは、CPU_IDが設定される。CPU_IDは、タスク実行ノードIDが示すタスク実行ノード110が有するCPU801を特定するIDである。CPU_IDは、例えば、cである。cは、1〜tの整数である。tは、タスク実行ノード110が有するCPU801の数である。
図45は、実施例4におけるキュー状態DB4500の記憶内容の一例を示す説明図である。実施例4では、実施例1とは異なり、キュー状態DB4500は、タスク実行ノードIDのフィールドに対応付けて、CPU_IDと、既存タスク数と、平均処理実行速度とのフィールドを有する。
タスク実行ノードIDのフィールドは、タスク実行ノードIDが設定される。タスク実行ノードIDは、キュー状態DB4500を記憶するタスク実行ノード110を特定するIDである。タスク実行ノードIDは、例えば、Xである。Xは、1〜kの整数である。kは、タスク配備システム200におけるタスク実行ノード110の数である。CPU_IDのフィールドは、CPU_IDが設定される。CPU_IDは、タスク実行ノードIDが示すタスク実行ノード110が有するCPU801を特定するIDである。CPU_IDは、例えば、cである。cは、1〜tの整数である。tは、タスク実行ノード110が有するCPU801の数である。
既存タスク数のフィールドは、既存タスク数が設定される。既存タスク数は、CPU_IDが示すCPU801に対応するタスク実行キュー1000の先頭から空きまでの既存タスク数である。平均処理実行速度のフィールドは、平均処理実行速度が設定される。平均処理実行速度は、CPU_IDが示すCPU801が、過去に実行した全タスクの平均処理実行速度である。
実施例1では、分散リソース管理部1402が、オファーの発行元としてタスク実行ノード110単位で選択し、タスク実行ノード110単位でタスク実行完了時間Eを算出し、タスク実行完了時点を算出する場合について説明した。
これに対し、実施例4では、分散リソース管理部1402は、タスク実行ノード管理DB4400を参照し、オファーの発行元として複数のタスク実行ノード110のいずれかのタスク実行ノード110を選択する。さらに、分散リソース管理部1402は、新たなタスクの実行先として選択したタスク実行ノード110が有するいずれかのCPU801を選択する。
分散リソース管理部1402は、選択したタスク実行ノード110の実行順序制御部1404から、選択したCPU801に対応するタスク実行キュー1000に格納されたタスクの数として、既存タスク数Kの通知を受け付け、キュー状態DB4500に記憶する。
分散リソース管理部1402は、既存タスク数Kに1を加算し、今後生成され、タスク実行キュー1000に追加されうる新たなタスクを含めた、タスク実行キュー1000のタスク数K+1を算出する。分散リソース管理部1402は、キュー状態DB4500を参照して、タスク数K+1と、CPU801の平均処理実行速度μとに基づいて、タスク実行完了時間E=(K+1)/μを算出し、タスク実行完了時点を算出する。
また、実施例4において、タスク配備装置100は、いずれかのタスク実行ノード110に含まれる全てのCPU801が、タスクをデッドラインまでに実行完了することができる場合、CPU801を特定せずに、タスクの実行要求を送信してもよい。
(配備場所を決定する実施例5)
実施例4では、CPU801単位でタスク実行キュー1000が用意され、CPU801が、自CPU801に対応するタスク実行キュー1000のタスクを実行する場合について説明した。
これに対し、実施例5では、タスク実行ノード110単位でタスク実行キュー1000が用意され、タスク実行ノード110に含まれる1以上のCPU801は、タスク実行キュー1000のタスクを分担して実行する。
この場合、分散リソース管理部1402は、タスク実行ノード管理DB400を参照し、オファーの発行元として複数のタスク実行ノード110のいずれかのタスク実行ノード110を選択する。分散リソース管理部1402は、選択したタスク実行ノード110の実行順序制御部1404から、タスク実行キュー1000に格納されたタスクの数として、既存タスク数Kの通知を受け付け、キュー状態DB900に記憶する。
分散リソース管理部1402は、既存タスク数Kに1を加算し、今後生成され、タスク実行キュー1000に追加されうる新たなタスクを含めた、タスク実行キュー1000のタスク数K+1を算出する。
ここで、タスク実行ノード110に含まれるCPU801ごとの平均処理実行速度が一様である場合がある。この場合、分散リソース管理部1402は、タスク実行ノード110に含まれるCPU801の平均処理実行速度μと、タスク実行ノード110に含まれるCPU801の数nとに基づいて、タスク実行ノード110全体での平均処理実行速度μ’=nμを算出する。分散リソース管理部1402は、キュー状態DB4500を参照して、タスク数K+1と、平均処理実行速度μ’に基づいて、タスク実行完了時間E=(K+1)/μ’を算出し、タスク実行完了時点を算出する。
また、タスク実行ノード110に含まれるCPU801ごとの平均処理実行速度が異なる場合がある。この場合、分散リソース管理部1402は、タスク実行ノード110に含まれるCPU801ごとの平均処理実行速度μnと、タスク数K+1とに基づいて、タスク実行完了時点を算出してもよい。
以上説明したように、タスク配備装置100によれば、所定の間隔で、1以上のノード110のいずれかのノード110に含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得することができる。タスク配備装置100によれば、取得した演算装置についての処理数と、演算装置における処理実行速度とに基づいて、演算装置に新たな処理を実行させる場合における新たな処理の実行完了時点を、演算装置ごとに算出することができる。タスク配備装置100によれば、演算装置ごとに算出した実行完了時点に基づいて、新たな処理を実行させる演算装置を、1以上のノード110のいずれかのノード110に含まれる演算装置に決定することができる。これにより、タスク配備装置100は、所定の期限までに処理が実行完了するようなCPUに、新たな処理を配備することができる。タスク配備装置100は、新たな処理が生成される前に、キューにおける処理数を取得しておき、新たな処理の実行完了時点を算出しておくため、新たな処理が生成されてから、新たな処理をノード110に実行させるまでにかかる時間の低減化を図ることができる。
タスク配備装置100によれば、演算装置が実行する処理が格納されるキューにおける処理数を取得した際、演算装置を含むノード110に、演算装置が実行する処理が格納されるキューに対してダミー処理を追加させることができる。タスク配備装置100によれば、新たな処理を実行させる演算装置を決定した場合、新たな処理を実行させる演算装置を含むノード110に、演算装置が実行する処理が格納されるキューに追加されたダミー処理を、新たな処理に置換させることができる。これにより、タスク配備装置100は、予め確保された順序で新たな処理を実行することができ、新たな処理が生成されてから実行完了するまでにかかる時間の低減化を図ることができる。
タスク配備装置100によれば、所定の間隔で、1以上のノード110に含まれる複数の演算装置からランダムに選択した演算装置が実行する処理が格納されるキューにおける処理数を取得することができる。これにより、タスク配備装置100は、1以上のノード110全体における通信量の低減化を図ることができる。
タスク配備装置100によれば、所定の間隔で、1以上のノード110に含まれる複数の演算装置のそれぞれの演算装置が実行する処理が格納されるキューにおける処理数を取得することができる。タスク配備装置100によれば、複数の演算装置のうち相対的に小さい処理数を取得した演算装置を含むノード110に、演算装置が実行する処理が格納されるキューに対してダミー処理を追加させることができる。これにより、タスク配備装置100は、今後生成されうる新しい処理を実行させる可能性が比較的高く、今後生成されうる新しい処理が生成されてから実行完了するまでにかかる時間が比較的短いような演算装置を選択し、ダミー処理を追加させることができる。このため、タスク配備装置100は、ダミー処理を追加したのに新しい処理が実行されず、演算リソースなどを浪費してしまう演算装置が発生しにくくすることができる。
タスク配備装置100によれば、新たな処理の実行結果の送信期限を含む、新たな処理の実行要求を受け付けることができる。タスク配備装置100によれば、新たな処理を実行させる演算装置を、算出した実行完了時点が、受け付けた実行要求に含まれる送信期限より前になる演算装置に決定することができる。これにより、タスク配備装置100は、新たな処理がデッドラインまでに実行完了する確率を向上させることができる。
タスク配備装置100によれば、新たな処理を実行させる演算装置を、算出した実行完了時点が現時点に最も近くなる演算装置に決定することができる。これにより、タスク配備装置100は、新たな処理の実行結果を取得するまでにかかる時間の最小化を図ることができ、新たな処理がデッドラインまでに実行完了する確率を向上させることができる。
タスク配備装置100によれば、取得した演算装置についての処理数と、処理の種別ごとの演算装置における処理実行速度のうち新たな処理の種別に対応する処理実行速度とに基づいて、新たな処理の実行完了時点を、演算装置ごとに算出することができる。これにより、タスク配備装置100は、新たな処理の種別に合わせて、新たな処理の実行完了時点を精度よく算出することができる。
タスク配備装置100によれば、所定の間隔で、1以上のノード110のいずれかのノード110に含まれる演算装置が実行する処理が格納されるキューにおける処理数と、演算装置における処理実行速度とを取得することができる。これにより、タスク配備装置100は、演算装置における処理実行速度を最新の状態に更新することができる。
なお、本実施の形態で説明したタスク配備方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したタスク配備プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したタスク配備プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
所定の間隔で、1以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記1以上のノードのいずれかのノードに含まれる演算装置に決定する、
処理を実行させることを特徴とするタスク配備プログラム。
(付記2)前記コンピュータに、
前記演算装置が実行する処理が格納されるキューにおける処理数を取得した際、前記演算装置を含むノードに、前記演算装置が実行する処理が格納されるキューに対してダミー処理を追加させ、
前記新たな処理を実行させる演算装置を決定した場合、前記新たな処理を実行させる演算装置を含むノードに、前記新たな処理を実行させる演算装置が実行する処理が格納されるキューに追加されたダミー処理を、前記新たな処理に置換させる、処理を実行させることを特徴とする付記1に記載のタスク配備プログラム。
(付記3)前記取得する処理は、前記所定の間隔で、前記1以上のノードに含まれる複数の演算装置からランダムに選択した演算装置が実行する処理が格納されるキューにおける処理数を取得する、ことを特徴とする付記2に記載のタスク配備プログラム。
(付記4)前記取得する処理は、前記所定の間隔で、前記1以上のノードに含まれる複数の演算装置のそれぞれの演算装置が実行する処理が格納されるキューにおける処理数を取得し、
前記追加させる処理は、前記複数の演算装置のうち相対的に小さい処理数を取得した演算装置を含むノードに、前記複数の演算装置のうち相対的に小さい処理数を取得した演算装置が実行する処理が格納されるキューに対してダミー処理を追加させる、ことを特徴とする付記2に記載のタスク配備プログラム。
(付記5)前記コンピュータに、
前記新たな処理の実行結果の送信期限を含む、前記新たな処理の実行要求を受け付ける処理を実行させ、
前記決定する処理は、前記新たな処理を実行させる演算装置を、算出した前記実行完了時点が、受け付けた前記実行要求に含まれる前記送信期限より前になる演算装置に決定する、ことを特徴とする付記1〜4のいずれか一つに記載のタスク配備プログラム。
(付記6)前記決定する処理は、前記新たな処理を実行させる演算装置を、算出した前記実行完了時点が現時点に最も近くなる演算装置に決定する、ことを特徴とする付記1〜5のいずれか一つに記載のタスク配備プログラム。
(付記7)前記算出する処理は、取得した前記演算装置についての処理数と、処理の種別ごとの前記演算装置における処理実行速度のうち前記新たな処理の種別に対応する処理実行速度とに基づいて、前記新たな処理の実行完了時点を、前記演算装置ごとに算出する、ことを特徴とする付記1〜6のいずれか一つに記載のタスク配備プログラム。
(付記8)前記取得する処理は、前記所定の間隔で、前記1以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数と、前記演算装置における処理実行速度とを取得する、ことを特徴とする付記1〜7のいずれか一つに記載のタスク配備プログラム。
(付記9)コンピュータが
所定の間隔で、1以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記1以上のノードのいずれかのノードに含まれる演算装置に決定する、
処理を実行することを特徴とするタスク配備方法。
(付記10)所定の間隔で、1以上のノードのいずれかのノードに含まれる演算装置が実行する処理が格納されるキューにおける処理数を取得し、
取得した前記演算装置についての処理数と、前記演算装置における処理実行速度とに基づいて、前記演算装置に新たな処理を実行させる場合における前記新たな処理の実行完了時点を、前記演算装置ごとに算出し、
前記演算装置ごとに算出した前記実行完了時点に基づいて、前記新たな処理を実行させる演算装置を、前記1以上のノードのいずれかのノードに含まれる演算装置に決定する、
制御部を有することを特徴とするタスク配備装置。