(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-12-16
(45)【発行日】2022-12-26
(54)【発明の名称】プログラム、サーバ、システム及び方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20221219BHJP
【FI】
G06F9/50 150A
G06F9/50 150E
(21)【出願番号】P 2022049403
(22)【出願日】2022-03-25
【審査請求日】2022-03-25
【早期審査対象出願】
(73)【特許権者】
【識別番号】516092005
【氏名又は名称】AI inside株式会社
(74)【代理人】
【識別番号】110002815
【氏名又は名称】IPTech弁理士法人
(72)【発明者】
【氏名】胡 為明
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2001-325041(JP,A)
【文献】特開2005-135209(JP,A)
【文献】特表2020-510938(JP,A)
【文献】特開2005-234931(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムにおける前記管理サーバを動作させるためのプログラムであって、
前記管理サーバはプロセッサとメモリとを備え、
前記プログラムは、前記プロセッサに、
前記分散処理システム外のクライアントからの前記分散処理システムによる計算要求であるタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと、
各々の前記ノードから、前記分散処理システムへの参加の有無に関する参加有無情報を受け入れる第8ステップと、
前記参加有無情報に基づいてその時点で参加している前記ノードを登録する第9ステップと
、
前記参加有無情報に基づいて各々の前記ノードの前記分散処理システムへの参加の可否を決定する第10ステップと
を実行させ、さらに、
前記第3ステップにおいて、その時点で参加している前記ノードに割り当てる前記ジョブの前記スケジュールを決定
し、
前記第10ステップにおいて、前記ジョブを割り当ててその計算結果を受け入れていない前記ノードから前記分散処理システムへ参加しない旨の前記参加有無情報を受け入れたら、前記ジョブの前記計算結果を受け入れるまで前記分散処理システムへの参加を継続させる決定を行う、プログラム。
【請求項2】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムにおける前記管理サーバを動作させるためのプログラムであって、
前記管理サーバはプロセッサとメモリとを備え、
前記プログラムは、前記プロセッサに、
前記分散処理システム外のクライアントからの前記分散処理システムによる計算要求であるタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと
を実行させ、
前記第3ステップにおいて、前記タスクの計算処理工数を算出し、前記計算処理工数が所定値を上回る場合、前記ノード及び前記管理サーバの間の通信速度を取得し、この通信速度が予め定めた閾値を上回る前記ノードに前記ジョブを割り当てる前記スケジュールを生成する、プログラム。
【請求項3】
前記プログラムは、前記第8ステップにおいて、前記参加有無情報及び前記計算リソースに関する計算リソース情報を受け入れる
請求項1に記載のプログラム。
【請求項4】
前記プログラムは、前記第2ステップにおいて、各々の前記ジョブに基づく計算処理工数が一定となるように前記タスクを複数の前記ジョブに分解する
請求項
1に記載のプログラム。
【請求項5】
前記プログラムは、さらに、
前記ジョブの前記計算結果を受け入れた前記ノードに対して、前記計算リソースに基づく特典を付与する第11ステップ
を実行させる、請求項1記載のプログラム。
【請求項6】
前記プログラムは、前記第3ステップにおいて、各々の前記ノードと前記管理サーバとの間のネットワーク距離を取得し、このネットワーク距離が近い順に、前記ジョブを割り当てる前記ノードを決定し、決定した前記ノードに前記ジョブを割り当てる前記スケジュールを決定する
請求項1記載のプログラム。
【請求項7】
前記プログラムは、前記第3ステップにおいて、各々の前記ノードと前記管理サーバとの間のルーティングコストを取得し、前記ネットワーク距離が近い順に、または、前記ルーティングコストが安い順に、前記ジョブを割り当てる前記ノードを決定し、決定した前記ノードに前記ジョブを割り当てる前記スケジュールを決定する
請求項
6記載のプログラム。
【請求項8】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムにおける前記管理サーバであって、
前記管理サーバはプロセッサとメモリとを備え、
前記プロセッサが、
前記分散処理システム外のクライアントからの計算要求に関するタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと、
各々の前記ノードから、前記分散処理システムへの参加の有無に関する参加有無情報を任意のタイミングで受け入れる第8ステップと、
前記参加有無情報に基づいてその時点で参加している前記ノードを登録する第9ステップと
、
前記参加有無情報に基づいて各々の前記ノードの前記分散処理システムへの参加の可否を決定する第10ステップと
を実行させ、さらに、
前記第3ステップにおいて、その時点で参加している前記ノードに割り当てる前記ジョブの前記スケジュールを決定
し、
前記第10ステップにおいて、前記ジョブを割り当ててその計算結果を受け入れていない前記ノードから前記分散処理システムへ参加しない旨の前記参加有無情報を受け入れたら、前記ジョブの前記計算結果を受け入れるまで前記分散処理システムへの参加を継続させる決定を行う、サーバ。
【請求項9】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムであって、
前記管理サーバはプロセッサとメモリとを備え、
前記プロセッサが、
前記分散処理システム外のクライアントからの計算要求に関するタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと、
各々の前記ノードから、前記分散処理システムへの参加の有無に関する参加有無情報を任意のタイミングで受け入れる第8ステップと、
前記参加有無情報に基づいてその時点で参加している前記ノードを登録する第9ステップと
、
前記参加有無情報に基づいて各々の前記ノードの前記分散処理システムへの参加の可否を決定する第10ステップと
を実行させ、さらに、
前記第3ステップにおいて、その時点で参加している前記ノードに割り当てる前記ジョブの前記スケジュールを決定
し、
前記第10ステップにおいて、前記ジョブを割り当ててその計算結果を受け入れていない前記ノードから前記分散処理システムへ参加しない旨の前記参加有無情報を受け入れたら、前記ジョブの前記計算結果を受け入れるまで前記分散処理システムへの参加を継続させる決定を行う、システム。
【請求項10】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムにおける前記管理サーバにより実行される方法であって、
前記管理サーバはプロセッサとメモリとを備え、
前記プロセッサは、
前記分散処理システム外のクライアントからの計算要求に関するタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと、
各々の前記ノードから、前記分散処理システムへの参加の有無に関する参加有無情報を任意のタイミングで受け入れる第8ステップと、
前記参加有無情報に基づいてその時点で参加している前記ノードを登録する第9ステップと
、
前記参加有無情報に基づいて各々の前記ノードの前記分散処理システムへの参加の可否を決定する第10ステップと
を実行させ、さらに、
前記第3ステップにおいて、その時点で参加している前記ノードに割り当てる前記ジョブの前記スケジュールを決定
し、
前記第10ステップにおいて、前記ジョブを割り当ててその計算結果を受け入れていない前記ノードから前記分散処理システムへ参加しない旨の前記参加有無情報を受け入れたら、前記ジョブの前記計算結果を受け入れるまで前記分散処理システムへの参加を継続させる決定を行う、方法。
【請求項11】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムにおける前記管理サーバであって、
前記管理サーバはプロセッサとメモリとを備え、
前記プロセッサ
が、
前記分散処理システム外のクライアントからの前記分散処理システムによる計算要求であるタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと
を実行させ、
前記第3ステップにおいて、前記タスクの計算処理工数を算出し、前記計算処理工数が所定値を上回る場合、前記ノード及び前記管理サーバの間の通信速度を取得し、この通信速度が予め定めた閾値を上回る前記ノードに前記ジョブを割り当てる前記スケジュールを生成する、サーバ。
【請求項12】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムであって、
前記管理サーバはプロセッサとメモリとを備え、
前記プロセッサ
が、
前記分散処理システム外のクライアントからの前記分散処理システムによる計算要求であるタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと
を実行させ、
前記第3ステップにおいて、前記タスクの計算処理工数を算出し、前記計算処理工数が所定値を上回る場合、前記ノード及び前記管理サーバの間の通信速度を取得し、この通信速度が予め定めた閾値を上回る前記ノードに前記ジョブを割り当てる前記スケジュールを生成する、システム。
【請求項13】
複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々の前記ノードは、自身の設定により前記ネットワークを介して前記分散処理システムへの参加を行う前記分散処理システムにおける前記管理サーバにより実行される方法であって、
前記管理サーバはプロセッサとメモリとを備え、
前記プロセッサ
が、
前記分散処理システム外のクライアントからの前記分散処理システムによる計算要求であるタスクを前記分散処理システム全体で受け入れる第1ステップと、
前記タスクを複数のジョブに分解する第2ステップと、
各々の前記ノードから予め取得した各々の前記ノードの利用可能な計算リソースから、前記ノードに割り当てる前記ジョブのスケジュールを決定する第3ステップと、
前記スケジュールに基づいて、各々の前記ノードに割り当てる前記ジョブを送出する第4ステップと、
各々の前記ノードから、前記ジョブの計算結果を受け入れる第5ステップと、
受け入れた前記ジョブの計算結果に基づいて前記タスクの計算結果を生成する第6ステップと、
前記タスクの計算結果を前記クライアントに送出する第7ステップと
を実行させ、
前記第3ステップにおいて、前記タスクの計算処理工数を算出し、前記計算処理工数が所定値を上回る場合、前記ノード及び前記管理サーバの間の通信速度を取得し、この通信速度が予め定めた閾値を上回る前記ノードに前記ジョブを割り当てる前記スケジュールを生成する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、プログラム、サーバ、システム及び方法に関する。
【背景技術】
【0002】
例えば大規模数値計算を行う目的で、数値計算を分割し、分割した数値計算を複数のノードにそれぞれ割り当て、ノードからの計算結果をまとめて出力する、分散処理システムが知られている。このような分散処理システムでは、処理速度の向上とノードの負荷軽減のために、1つの処理を分散して行う。
【0003】
一般的な分散処理システムによる分散処理方法は、1台のコンピュータに多数のプロセッサを搭載して処理する方法、大規模データ処理を複数のサーバに分散させ、処理結果をネットワーク上で共有する方法などがある。後者の分散処理方法によれば、1台のサーバで処理するよりも処理速度を向上させることができ、かつ、計算処理の稼働率を担保することができる(例えば非特許文献1)。
【0004】
特許文献1では、各計算資源を有効に使い、ジョブ処理を従来よりもスピードアップさせることを目的として、ネットワーク接続された複数のノードを有し、複数の各ノードの現在の負荷状況、過去の実績、ノードのステータス・スペック、ネットワーク上の距離の1つ以上から成る計算資源量を監視すること、監視した情報を基に、ジョブ依頼をするノードを選択している。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】“Apache Hadoop”,[online],Apache Software Foundation,[令和4年3月10日検索],インターネット<URL:https://hadoop.apache.org/>
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、実際に複数のサーバを用意することは、コストがかかる。このため、大量の計算をしたい場合でも、分散処理に必要なサーバ群を用意することが困難である。また、分散処理に必要なサーバ群を用意できたとしても、ユーザに対し計算資源を迅速に用意する必要がある。
【0008】
そこで、本開示は、上記課題を解決すべくなされたものであって、その目的は、仮想的なデータセンタ(DC)を実現し、迅速かつ低コストに計算資源を有効活用した分散処理をユーザに提供することが可能なプログラム、サーバ、システム及び方法を提供することである。
【課題を解決するための手段】
【0009】
一実施形態によると、複数のノードと、これらノードのそれぞれとネットワークを介して接続された管理サーバとを有する分散処理システムであって、各々のノードは、自身の設定によりネットワークを介して分散処理システムへの参加を行う分散処理システムにおける管理サーバを動作させるためのプロセッサを備えるコンピュータを動作させるためのプログラムが提供される。ここに、管理サーバはプロセッサとメモリを備える。このプログラムは、プロセッサに、分散処理システム外のクライアントからの分散処理システムによる計算要求であるタスクを分散処理システム全体で受け入れる第1ステップと、タスクを複数のジョブに分解する第2ステップと、各々のノードから予め取得した各々のノードの利用可能な計算リソースから、ノードに割り当てるジョブのスケジュールを決定する第3ステップと、スケジュールに基づいて、各々のノードに割り当てるジョブを送出する第4ステップと、各々のノードから、ジョブの計算結果を受け入れる第5ステップと、受け入れたジョブの計算結果に基づいてタスクの計算結果を生成する第6ステップと、タスクの計算結果をクライアントに送出する第7ステップとを実行させる。
【発明の効果】
【0010】
本開示によれば、仮想的なデータセンタを実現し、迅速かつ低コストに計算資源を有効活用した分散処理をユーザに提供することが可能なプログラム、サーバ、システム及び方法を提供することができる。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係るシステムの概要を示す図である。
【
図2】実施形態に係るシステムのハードウェア構成を示すブロック図である。
【
図3】実施形態に係る管理サーバの機能的な構成を示す図である。
【
図4】実施形態に係る計算サーバの機能的な構成を示す図である。
【
図5】実施形態に係る管理サーバに格納されたノード管理DBのデータ構造を示す図である。
【
図6】実施形態に係る管理サーバに格納されたタスク管理DBのデータ構造を示す図である。
【
図7】実施形態に係る管理サーバに格納されたジョブ管理DBのデータ構造を示す図である。
【
図8】実施形態に係る管理サーバに格納された割当テーブルの一例を示す図である。
【
図9】実施形態に係る管理サーバの動作の一例を説明するためのフローチャートである。
【
図10】実施形態に係る管理サーバの動作の他の例を説明するためのフローチャートである。
【
図11】実施形態に係る管理サーバの動作のまた他の例を説明するためのフローチャートである。
【
図12】実施形態に係る管理サーバの動作のさらにまた他の例を説明するためのフローチャートである。
【
図13】実施形態に係るシステムの動作の一例を説明するためのシーケンス図である。
【
図14】実施形態に係るシステムにおける端末装置に表示される画面の一例を示す図である。
【
図15】実施形態に係るシステムにおける端末装置に表示される画面の他の例を示す図である。
【
図16】実施形態に係るシステムにおける端末装置に表示される画面のまた他の例を示す図である。
【発明を実施するための形態】
【0012】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。また、各図は模式図であり、必ずしも厳密に図示されたものではない。
【0013】
また、以下の説明において、「プロセッサ」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
【0014】
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
【0015】
また、以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
【0016】
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
【0017】
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶部及び/又はインタフェース部などを用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。
【0018】
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0019】
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。
【0020】
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
【0021】
また、以下の説明において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【0022】
<実施形態>
<実施形態の概要>
実施形態に係る分散処理システムは、クライアントである端末装置からの計算処理依頼に対して、管理サーバがこの計算処理依頼を複数に分割してノードに割り当て、ノードからの計算結果を管理サーバがまとめてクライアントに返信するものである。管理サーバ及び複数のノードは全体として分散処理システム(仮想データセンタ)を構成する。本実施形態の分散処理システムは計算処理全体への適用が可能であるが、以下では、主に、分散処理システムは大規模数値計算を行うものであるとして説明を行う。ここにいう大規模数値計算には、人工知能(AI)に基づく推論動作、画像処理・画像解析動作、いわゆるビッグデータに基づく統計処理動作などが含まれうる。
【0023】
図1を参照して、実施形態である分散処理システムの概要について説明する。
【0024】
実施形態に係る分散処理システム1は、管理サーバ2と、複数のノード3とを有し、これら管理サーバ2及びノード3がネットワーク5を介して互いに通信可能に構成されている。
図1及び後述する
図2において、分散処理システム1は2つのノード3を有しているが、分散処理システム1において複数のノード3を有していれば足り、その個数に制限はない。また、
図1及び
図2において、ノード3は直接(つまりネットワーク5を介さずに)接続されていないが、本実施例において、複数のノード3が直接相互接続される態様を排除する意図はない。
【0025】
以下の説明において、ノード3は広い意味に捉えるべきである。つまり、ノード3はプロセッサ単位であってもよく、コンピュータ等の情報処理装置単位であってもよく、さらには、複数の情報処理装置をまとめた、例えばサーバ群であってもよい。ノード3と管理サーバ2との位置関係についても特段の限定はなく、例えばノード3がサーバであった場合、オンプレミス、エッジ、クラウド、いずれの設置態様であってもよい。但し、本実施例では、ノード3はプロセッサ単位で考える。つまり、1つの情報処理装置(サーバ)内に複数のプロセッサがあれば、このサーバは複数のノードからなると考える。
【0026】
一般的な分散処理システムにおいて、ノード3間の接続形態は多様に考え得る。
図1、
図2に示す分散処理システム1において、各々のノード3は1次元的に接続されているが、ノード3が互いに自立的に通信可能であるならば、ノード3が2次元的に接続されていてもよいし、3次元的、あるいはそれ以上の高次元での接続態様も考え得る。ノード3の接続態様が2次元以上である場合、複数のノード3をまとめてノード群として捉えることもできる。つまり、管理サーバ2がノード群に対して単一の数値計算を割り当て、ノード群に所属する各々のノードが協同してこの数値計算を行う態様も考え得る。但し、本実施例においては、上述したようにノード3の接続態様は1次元であるから、数値計算の割当は単一のノード3に対して行われる。このようなノード3間の接続態様は、後述する、ノード3への割当テーブル作成の際に考慮される。また、ノード3間の接続形態は、管理サーバ2とノード3との間の通信速度やネットワーク距離にも影響を及ぼす。
【0027】
本実施例の分散処理システム1の特徴の一つとして、各々のノード3は、自身の設定により分散処理システム1への参加を行う。これは、本実施例の分散処理システム1の前提として、ノード3が分散処理システム1専用の設備ではない場合を含むからである。つまり、分散処理システム1に参加しない状態では、ノード3はその所有者から課せられた情報処理を行うことが可能であり、分散処理システム1に参加した状態では、ノード3は所有者から化せられた情報処理を行わずに管理サーバ2から割り当てられた数値計算を行う。これにより、ノード3が所有者により使用されていない空き時間においてノード3を分散処理システム1に参加させることで、ノード3の所有者により使用されていない計算リソースを分散処理システム1のために提供することができる。よって、本実施例の分散処理システム1によれば、迅速にかつ低コストに計算リソースを確保することができる。
【0028】
ノード3の分散処理システム1への参加は基本的に能動的なものである。つまり、ノード3自身の設定により、ノード3は分散処理システム1に参加する。この点、情報処理装置にアプリケーションを常時稼働させて情報処理装置の計算リソースを把握し、情報処理装置の所有者による各種情報処理を行ってもなお計算リソースに余裕がある場合、所有者による各種情報処理と並行して管理サーバからの情報処理を行う周知の分散処理システムとは相違する。
【0029】
図1を再度参照して、クライアントである端末装置4は、ネットワーク5を介して分散処理システム1に対して数値計算処理の要求を行う。以下の説明において、この数値計算処理をタスクと称する。タスクは、分散処理システム1を構成する管理サーバ2またはノード3のいずれが受信してもよい。ノード3がタスクを受信した場合、受信したノード3は、タスクを管理サーバ2に送出する。
【0030】
管理サーバ2は、各ノード3の利用可能な計算リソース、管理サーバ2と各ノード3との間の通信速度、及び、管理サーバ2と各ノード3との間のネットワーク距離を把握している。各ノード3は、好ましくは定期的に、利用可能な計算リソースを管理サーバ2に通知する。また、管理サーバ2と各ノード3との間の通信速度、及び、管理サーバ2と各ノード3との間のネットワーク距離については管理サーバ2自身が(好ましくは定期的に)測定し、把握する。
【0031】
管理サーバ2は、受領したタスクを解析し、このタスクを複数に分解する。以下の説明において、分解したタスクをジョブと称する。そして、管理サーバ2は、各ノード3の利用可能な計算リソースを考慮して、各々のノード3に割り当てるべきジョブのスケジュール(割当テーブル)を作成し、このスケジュールに基づいて各々のノード3に割り当てるジョブをノード3に送出する。
【0032】
好ましくは、管理サーバ2は、全てのノード3においてジョブの計算結果を管理サーバ2が受け入れるまでの工数を算出し、この工数が所定値を上回る場合、ノード3と管理サーバ2との間の通信速度が予め定めた閾値を下回るノード3にジョブを割り当てるスケジュールを生成する。また、管理サーバ2は、各々のノード3と管理サーバ2との間のネットワーク距離が近い順に、または、各々のノード3と管理サーバ2との間のルーティングコストが安い順にジョブを割り当てるノード3を決定し、決定したノード3にジョブを割り当てるスケジュールを決定する。
【0033】
ジョブを割り当てられた各々のノード3は、このジョブについての数値計算を行い、その計算結果を管理サーバ2に送出する。管理サーバ2は、ジョブを割り当てたノード3の全てから計算結果を受領したら、この計算結果をまとめてタスクの計算結果とし、このタスクの計算結果を、タスクを要求した端末装置4に返送する。
【0034】
既に説明したように、ノード3は自身の設定により分散処理システム1に参加する。設定変更は任意のタイミングで行うことができるが、管理サーバ2から当該ノード3にジョブを割り当てており、ノード3がジョブについての数値計算を行っている途中で分散処理システム1に参加しなくなると、ジョブについての数値計算の結果を管理サーバ2が受領できない可能性が生じる。そこで、管理サーバ2は、現在ジョブを割り当てているノード3から分散処理システム1から参加しない旨の設定を受領しても、数値計算の結果を受領するまでは分散処理システム1から外れる(参加しない)ことができないことを通知し、当該ノード3の分散処理システム1への参加を継続させる。そして、管理サーバ2は、当該ノード3からジョブの計算結果を受領したら、当該ノード3からの設定を受け入れて分散処理システム1から外れる旨の設定を行う。
【0035】
このように、本実施例の分散処理システム1では、ノード3が分散処理システム1から外れる自由度を一定程度確保することが好ましい。このため、管理サーバ2は、タスクをできるだけ細かい(つまり計算処理工数が小さい)ジョブに分割し、ノード3が分散処理システム1から外れるタイミングをできるだけ多く確保する。タスクを細かいジョブに分割する手法の一つとして、各々のジョブに必要とされる計算処理工数を一定にする手法が挙げられる。
【0036】
<システム1の基本構成>
図2を参照して、実施形態である分散処理システム1の基本構成について説明する。
【0037】
図2は、実施形態の分散処理システム1の全体の構成を示す図である。
図2に示すように、本実施形態の分散処理システム1は、ネットワーク80を介して接続された複数の端末装置10(
図2では、端末装置10A及び端末装置10Bを示している。以下、総称して「端末装置10」ということもある)、管理サーバ20及び計算サーバ30(
図2では、計算サーバ30A及び計算サーバ30Bを示している。以下、総称して「計算サーバ30」ということもある)を有する。管理サーバ20の機能構成を
図3に、計算サーバ30の機能構成を
図4に示す。これら管理サーバ20、計算サーバ30及び端末装置10は、情報処理装置により構成されている。
【0038】
情報処理装置は演算装置と記憶装置とを備えたコンピュータにより構成されている。コンピュータの基本ハードウェア構成および、当該ハードウェア構成により実現されるコンピュータの基本機能構成は後述する。なお、管理サーバ20、計算サーバ30及び端末装置10のそれぞれについて、後述するコンピュータの基本ハードウェア構成およびコンピュータの基本機能構成と重複する説明は繰り返さない。
【0039】
管理サーバ20は、本実施例の分散処理システム1を統括する情報処理装置であって、分散処理システム1の運営者により運営される。計算サーバ30は、本実施例の分散処理システム1において実際に計算処理を行う(ジョブを実行する)情報処理装置である。本実施例の分散処理システム1の特徴として、計算サーバ30の運営者は管理サーバ20の運営者と必ずしも同一人物である必要はない。つまり、管理サーバ20の運営者以外の運営者(所有者)が計算サーバ30を運用していてもよい。加えて、計算サーバ30が分散処理システム1に参加していない状態では、計算サーバ30は所有者による各種情報処理を専用に行う。一方、計算サーバ30が分散処理システム1に参加している状態では、計算サーバ30は管理サーバ20から割り当てられたジョブの計算処理を行う専用のサーバとして機能する。
【0040】
端末装置10は、各ユーザが操作する装置である。ここで、ユーザとは、端末装置10を使用してジョブの実行を要求する者であり、分散処理システム1の利用者である。利用者には特段の限定はなく、大規模数値計算を分散処理システム1により実行することを希望する大学研究者、企業研究者等をいう。端末装置10は、例えば移動体通信システムに対応したタブレットや、スマートフォン等の携帯端末であっても、据え置き型のPC(Personal Computer)、ラップトップPC等であってもよい。
【0041】
端末装置10は、ネットワーク80を介して管理サーバ20、計算サーバ30と通信可能に接続される。端末装置10は、4G、5G、LTE(Long Term Evolution)等の通信規格に対応した無線基地局81、IEEE(Institute of Electrical and Electronics Engineers)802.11等の無線LAN(Local Area Network)規格に対応した無線LANルータ82等の通信機器と通信することにより、ネットワーク80に接続される。端末装置10と無線LANルータ82等の間を無線で接続する場合、通信プロトコルとして例えば、Z-Wave(登録商標)、ZigBee(登録商標)、Bluetooth(登録商標)等が含まれる。有線で接続する場合は、USB(Universal Serial Bus)ケーブル等により直接接続するものも含む。
【0042】
図2に端末装置10Bとして示すように、端末装置10は、通信IF(Interface)12と、入力装置13と、出力装置14と、メモリ15と、記憶部16と、プロセッサ19とを備える。
【0043】
通信IF12は、端末装置10が管理サーバ20などの外部の装置と通信するため、信号を入出力するためのインタフェースである。入力装置13は、ユーザからの入力操作を受け付けるための入力装置(例えば、キーボードや、タッチパネル、タッチパッド、マウス等のポインティングデバイス等)である。出力装置14は、ユーザに対し情報を提示するための出力装置(ディスプレイ、スピーカ等)である。メモリ15は、プログラム、及び、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。記憶部16は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。プロセッサ19は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路等により構成される。
【0044】
管理サーバ20は分散処理システム1の運営・管理を行う情報処理装置であり、計算サーバ30は分散処理システム1におけるジョブを実行する情報処理装置である。
図2では管理サーバ20のハードウェア構成のみ図示しているが、計算サーバ30のハードウェア構成も管理サーバ20と同様であるので、図示を行わない。管理サーバ20は、通信IF22と、入出力IF23と、メモリ25と、ストレージ26と、プロセッサ29とを備える。
【0045】
通信IF22は、管理サーバ20が外部の装置と通信するため、信号を入出力するためのインタフェースである。入出力IF23は、ユーザからの入力操作を受け付けるための図示しない入力装置、及び、ユーザに対し情報を提示するための図示しない出力装置とのインタフェースとして機能する。メモリ25は、プログラム、及び、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリである。ストレージ26は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)である。プロセッサ29は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路等により構成される。
【0046】
<管理サーバ20の機能構成>
管理サーバ20のハードウェア構成が実現する機能構成を
図3に示す。管理サーバ20は、記憶部220、制御部230、通信部240を備える。通信部240は通信IF22により構成され、記憶部220は管理サーバ20のストレージ26により構成され、制御部230は主に管理サーバ20のプロセッサ29により構成される。
【0047】
通信部240は、ネットワーク80を介して端末装置10、計算サーバ30等との間での通信を行う。
【0048】
<管理サーバ20の記憶部220の構成>
管理サーバ20の記憶部220は、ノード管理DB(DataBase)222、タスク管理DB223、タスク定義データ224、ジョブ管理DB225、割当テーブル226、画面データ227、仮想ドライブ228及びルートマップ229を有する。
【0049】
これらノード管理DB222等のうち、タスク定義データ224、割当テーブル226、画面データ227及び仮想ドライブ228を除くものはデータベースである。ここに言うデータベースは、リレーショナルデータベースを指し、行と列によって構造的に規定された表形式のテーブルと呼ばれるデータ集合を、互いに関連づけて管理するためのものである。データベースでは、表をテーブル、表の列をカラム、表の行をレコードと呼ぶ。リレーショナルデータベースでは、テーブル同士の関係を設定し、関連づけることができる。
【0050】
通常、各テーブルにはレコードを一意に特定するための主キーとなるカラムが設定されるが、カラムへの主キーの設定は必須ではない。制御部230は、各種プログラムに従ってプロセッサ29に、記憶部220に記憶された特定のテーブルにレコードを追加、削除、更新を実行させることができる。
【0051】
図5は、ノード管理DB222のデータ構造を示す図である。ノード管理DB222は、分散処理システム1を構成するノード(計算サーバ30)を管理サーバ20が管理するためのデータベースである。
【0052】
ノード管理DB222は、分散処理システム1を構成する計算サーバ30(ノード)を特定するためのノードIDを主キーとして、ノードアドレス、計算能力、ネットワーク距離、通信速度及び酸化状態のカラムを有するテーブルである。
【0053】
「ノードID」は、計算サーバ30を特定するための情報である。「ノードアドレス」は、ネットワーク80における計算サーバ30を識別し特定するためのアドレスであり、一例として、
図5に示す例では、IPアドレスがノードアドレスとして入力されている。
図5に示す例では、IPv4に基づくIPアドレスが入力されているが、IPv6に基づくIPアドレスであってもよいし、IPアドレス以外に計算サーバ30をネットワーク80内で識別し特定する情報であればよい。
【0054】
「計算能力」は、ノードIDにより特定される計算サーバ30の計算リソースを示す値である。
図5に示す例ではいわゆる無次元値が入力されているが、計算能力を示す値としては、計算サーバ30が有するプロセッサのクロック周波数、1クロック当たりの演算数、そして、これらクロック周波数と1クロック当たりの演算数とを乗じたFLOPS(Floating point number Operations Per Second)などが好適に使用可能である。
図5に示す例では、計算能力として用いられる値は、特定のプロセッサに対する相対値が入力されている。
【0055】
「ネットワーク距離」は、ノードIDにより特定される計算サーバ30と管理サーバ20との間のネットワーク距離を示す値である。
図5に示す例ではいわゆる無次元値が入力されているが、ネットワーク距離を示す値としては、管理サーバ20が計算サーバ30に向けて、あるいは、計算サーバ30が管理サーバ20に向けてpingコマンドを発行してその応答時間(例えばRTT:Round Trip Time)をネットワーク距離としてもよい。但し、RTTには種々の遅延(latency)を含みうるので、RTTをネットワーク距離とした場合、厳密な意味での距離ではなく一応の目安としての値であることに注意すべきである。また、一般的には、ネットワーク距離として通信速度を用いることもあるが、本実施例ではネットワーク距離と別に通信速度を分散処理システム1の管理に用いているので、ネットワーク距離と通信速度とは別のパラメータとして扱う。
【0056】
「通信速度」は、ノードIDにより特定される計算サーバ30と管理サーバ20との間の通信速度を示す値である。
図5に示す例ではいわゆる無次元値が入力されているが、bps(bit per second)を単位とした通信速度が一般的に用いられる。一例として、特定のデータを計算サーバ30から管理サーバ20にアップロードする際の通信量及び時間、また、特定のデータを管理サーバ20から計算サーバ30にダウンロードする際の通信量及び時間から通信速度を求めることができる。但し、データのアップロード/ダウンロードはOSI参照モデルにおけるアプリケーション層で行われるので、データのアップロード/ダウンロードに基づく通信速度の測定は、アプリケーション層における通信速度であり、一方、pingコマンドの応答時間に基づくネットワーク距離(pingコマンドはトランスポート層での通信の場合が多い)であるので、両者は異なる値を取りうることに注意すべきである。「参加状態」は、ノードIDにより特定される計算サーバ30が分散処理システム1に現在参加しているか否かの状態に関する値である。
【0057】
ノード管理DB222において、ノードIDはノード管理部234が生成し、それ以外のカラムについては個々の計算サーバ30からの通知に基づいてノード管理部234がノード管理DB222に格納する。
【0058】
図6は、タスク管理DB223のデータ構造を示す図である。タスク管理DB223は、分散処理システム1が計算処理を行うタスクを管理するデータベースである。
【0059】
タスク管理DB223は、分散処理システム1において計算処理が行われるタスクを特定するためのタスクIDを主キーとして、タスク定義データ、タスク受領日時及び計算結果出力日時のカラムを有するテーブルである。
【0060】
「タスクID」は、タスクを特定するための情報である。「タスク定義データ」は、分散処理システム1においてタスクの計算処理を行う際に参照されるデータである。詳細は後述する。「タスク受領日時」は、タスクを管理サーバ20が受領した日時に関する値である。「計算結果出力日時」は、タスクに関する計算処理を行った結果、その計算結果を、タスクを送出したクライアントである端末装置10に送出した日時に関する値である。
【0061】
タスク管理DB223において、タスクIDはタスク解析部235が生成し、タスク定義データ及びタスク受領日時は端末装置10からの入力に基づいてタスク解析部235がタスク管理DB223に格納し、計算結果出力日時は計算結果統合部238がタスク管理DB223に格納する。
【0062】
タスク定義データ224は、分散処理システム1において処理されるタスクに関する仕様を定義したデータである。タスク定義データ224は、少なくとも次の項目に関するデータを含む。
・タスクを処理する際に必要とされる処理モデル。一例として、タスクが機械学習に関する計算処理であった場合、処理モデルは推論動作を行うためのニューラルネットワーク等である。
・タスクを処理する際のデータ。一例として、タスクが機械学習に関する計算処理であった場合、データは教師データやニューラルネットワークの変数等である。
【0063】
図6に示すように、タスク定義データ224はデータ記述言語の一例であるJSON(JavaScript Object Notation)形式(JavaScriptは登録商標)で記述されているが、データ記述形式はこれに限定されない。
【0064】
図7は、ジョブ管理DB225のデータ構造を示す図である。ジョブ管理DB225は、管理サーバ20が計算サーバ30に割り当てる(アサインする)ジョブを管理するデータベースである。
【0065】
ジョブ管理DB225は、タスクを特定するための情報であるタスクIDを主キーとして、ジョブID、割当ノードID及び状態のカラムを有するテーブルである。
【0066】
「タスクID」は、タスクを特定するための情報であり、タスク管理DB223の「タスクID」と共通である。「ジョブID」は、ジョブを特定するための情報である。「割当ノードID」は、ジョブIDにより特定されるジョブが割り当てられたノード(計算サーバ30)を特定するための情報であり、ノード管理DB222の「ノードID」と共通である。「状態」は、ジョブIDにより特定されるジョブに関する計算処理の状態を示す情報である。
図7に示す「計算結果受領」は、ジョブを割り当てた計算サーバ30からジョブに関する計算結果を既に受領していることを示し、「算出中」は、ジョブを割り当てた計算サーバ30からジョブに関する計算結果をまだ受領しておらず、計算サーバ30においてジョブに関する計算処理を行っていることが推測されることを示し、「未送信」は、ジョブを割り当てることを決定した計算サーバ30に対してまだジョブを送信していないことを示している。
【0067】
ジョブ管理DB225において、ジョブIDはタスク解析部235が生成し、タスクID及び割当ノードIDはスケジュール生成部236がジョブ管理DB225に格納し、状態はジョブ割当部237がジョブ管理DB225に格納する。
【0068】
図8は、割当テーブル226の一例を示す図である。割当テーブル226は、タスクを計算サーバ30に割り当て、このタスクがどのようなスケジュールで実行されるかを決定するためのテーブルであり、スケジュール生成部236により生成される。
【0069】
割当テーブル226の縦軸はノード(計算サーバ30)を示し、横軸は時刻(一例として単位は時間)を示している。本実施例における分散処理システム1は2個の計算サーバ30を有し、いずれの計算サーバ30も分散処理システム1に参加している状態とする。各々のジョブに割り当てられる計算資源は、連続する1つ以上の計算サーバ30を一方の辺とし、それらの計算サーバ30が連続して使用される使用時間を他方の辺とする、長方形によって表される。J0001~J0005は各々のジョブの名称であり、ジョブ管理DB225の「ジョブID」を用いて記述されている。各ジョブのジョブ名が記載された長方形は、そのジョブが要求する計算資源を表す。例えば、ジョブ名j0001のジョブが要求する計算資源は1×5である。
【0070】
画面データ227は、端末装置10が管理サーバ20にアクセスする際に、ユーザが有する端末装置10に表示させるための画面データである。
【0071】
仮想ドライブ228は、計算サーバ30の仮想ドライブ322と共通するドライブである。より正確には、管理サーバ20の記憶部220の一部をなす物理的記憶手媒体と計算サーバ30の記憶部320の一部をなす物理的記憶媒体とを用いて単一の仮想ドライブ228、322が構成される。管理サーバ20及び計算サーバ30は、実際にはいずれのサーバ20、30の物理的記憶媒体であるかを意識せずに、共通の単一のドライブ228、322が実現されているものとしてこの仮想ドライブ228、323に対してデータのアクセス、書込及び読出を行う。ドライブの仮想化技術については周知であるので、ここでは詳細な説明を行わない。
【0072】
仮想ドライブ228には、端末装置10から送出されたタスクを構成するデータ、具体的にはタスク定義データ224に記述された処理モデル及びデータが格納されている。これら処理モデル及びデータは、ジョブが割り当てられた計算サーバ30が適宜参照することでジョブに関する計算処理を行う。また、ジョブに関する計算過程で必要とされるデータ等も仮想ドライブ228に格納されうる。
ルートマップ229は、管理サーバ20を経由するIPパケットの宛先を記述したものである。ルートマップ229自体は既知のものであるので、ここではこれ以上の説明を省略する。
【0073】
<管理サーバ20の制御部230の構成>
管理サーバ20の制御部230は、受信制御部231、送信制御部232、画面提示部233、ノード管理部234、タスク解析部235、スケジュール生成部236、ジョブ割当部237、計算結果統合部238及び特典付与部239を備える。制御部230は、記憶部220に記憶されたアプリケーションプログラム221を実行することにより、これら受信制御部231等の機能ユニットが実現される。
【0074】
受信制御部231は、管理サーバ20が外部の装置から通信プロトコルに従って信号を受信する処理を制御する。
【0075】
送信制御部232は、管理サーバ20が外部の装置に対し通信プロトコルに従って信号を送信する処理を制御する。
【0076】
画面提示部233は、いわゆるWebサーバとしての機能を管理サーバ20に提供する。具体的には、画面提示部233は、ネットワーク80を介してアクセスした端末装置10に対して、画面データ227に格納されたデータ等に基づいて、管理サーバ20が提供するサイトを構成する(通常はトップ画面と言われる)画面のデータを生成し、この画面データを、アクセスをした端末装置10に送出する。さらに、画面提示部233は、端末装置10からの操作入力に基づいて、サイトを構成する画面を動的に(つまりインタラクティブに)変化させ、さらに、必要に応じて、サイトを構成する他の画面に遷移させ、この画面データを端末装置10に送出する。画面提示部233により提示されるサイトの画面の詳細については後述する。
【0077】
ノード管理部234は、計算サーバ30から送信されてきた計算能力に関する情報に基づいてノード管理DB222を更新する。加えて、ノード管理部234は、好ましくは定期的に計算サーバ30と管理サーバ20との間のネットワーク距離及び通信速度を測定し、測定結果に基づいてノード管理DB222を更新する。
【0078】
加えて、ノード管理部234は、計算サーバ30から分散処理システム1への参加の有無に関する参加有無情報を受け入れ、この参加有無情報に基づいてノード管理DB222を更新して、現在参加している計算サーバ30を登録する。また、ノード管理部234は、ある計算サーバ30から分散処理システム1へ参加しない(参加を離脱する)旨の参加有無情報を受領したら、その計算サーバ30にジョブを送信して計算サーバ30がジョブの処理中である(実際には計算サーバ30から計算結果をまだ受領していないか否かで判断する)と判断したら、計算サーバ30に対して分散処理システム1への参加離脱を許可しない旨の通知を行い、引き続き分散処理システム1への参加を継続させるとともに、計算サーバ30のジョブが終了して計算結果を受領したら、分散処理システム1への参加離脱を許可する。そして、ノード管理部234は、当該計算サーバ30が分散処理システム1に参加していないことをノード管理DB222に記述する。
【0079】
タスク解析部235は、端末装置10から送信されてきたタスクを受領し、このタスクを仮想ドライブ228に格納するとともに、タスク定義データ224を生成する。次いで、タスク解析部235は、受領したタスクを複数のジョブに分解する。タスク解析部235によるタスクからジョブへの分解作業は既知のものであり、ここではこれ以上の詳細な説明を省略する。
【0080】
一点だけ詳述すると、タスク解析部235は、受領したタスクを解析してこのタスクに関する数値計算処理の工数を見積もり、タスクをジョブに分解した際に、各々のジョブが計算サーバ30において数値計算処理がされた際に、その工数が一定となるようにタスクを複数のジョブに分解する。このようなジョブ分解工程を取るのは、計算サーバ30が分散処理システム1からの参加離脱申込をした際に、その計算サーバ30において実際にジョブが実行されているとノード管理部234は直ちに参加離脱を許可せずにジョブの処理を継続させるため、できるだけジョブに基づく計算処理工数を細分化して、計算サーバ30の分散処理システム1への参加離脱を早めるためである。
【0081】
スケジュール生成部236は、タスク解析部235が分割したジョブを、ノード管理DB222に格納されている各々の計算サーバ30の計算リソース(計算能力)に基づいて、その時点で分散処理システム1に参加している計算サーバ30に割り当てる決定をする。そして、スケジュール生成部236は、割り当てたジョブのスケジュールを決定し、決定したスケジュールに基づいて割当テーブル226を生成して記憶部220に格納する。割当テーブル226の生成方法については既知であるので、ここではこれ以上の説明を省略する。
【0082】
ここで、スケジュール生成部236は、ノード管理DB222を参照し、計算サーバ30と管理サーバ20との間のネットワーク距離を入手する。また、スケジュール生成部236は、ノード管理DB222を参照し、計算サーバ30と管理サーバ20との間のルーティングコストを算出する。ルーティングコストの算出方法は既知のものから適宜選択すれば良いが、一例として、ルートマップ229を参照して計算サーバ30と管理サーバ20との間のネットワーク上の経路を特定し、この経路の帯域幅に基づいてルーティングコストを算出する手法が挙げられる。そして、スケジュール生成部236は、ネットワーク距離が近い順に、または、ルーティングコストが安い順に、ジョブを割り当てる計算サーバ30を決定し、決定した計算サーバ30にジョブを割り当てるスケジュールを決定する。
【0083】
また、スケジュール生成部236は、タスク解析部235が見積もったタスクの数値計算処理の工数が所定値を上回る場合、この計算サーバ30と管理サーバ20との間の通信速度を取得し、この通信速度が予め定めた閾値を上回る計算サーバ30にジョブを割り当てるスケジュールを決定する。
【0084】
ジョブ割当部237は、スケジュール生成部236が生成した割当テーブル226に基づいて、タスク解析部235が分割したジョブを、その時点で分散処理システム1に参加している計算サーバ30に送出し、計算サーバ30に割り当てたジョブに関する計算処理を指示する。そして、ジョブ割当部237は、ジョブを送出した計算サーバ30からジョブに関する計算結果を受領する。ジョブ割当部237によるジョブ送出及び計算結果受領の情報は、ジョブ割当部237がジョブ管理DB225に逐次記述する。
【0085】
計算結果統合部238は、ジョブ割当部237が割り当てたジョブの全てについて計算結果をジョブ割当部237が受領したら、これら計算結果をまとめてタスクの計算結果を生成する。そして、計算結果統合部238は、生成したタスクの計算結果を、タスクに関する数値計算を要求した端末装置10に送出する。
【0086】
特典付与部239は、割り当てたジョブに関する計算結果を送出した計算サーバ30(の管理者)に対して、その計算サーバ30の計算リソース(計算能力)に基づいて特典を付与する。特典に特段の限定はなく、物品の供与、分散処理システム1の時間利用権などが一例として挙げられる。
【0087】
<計算サーバ30の機能構成>
計算サーバ30のハードウェア構成が実現する機能構成を
図4に示す。計算サーバ30の機能構成は管理サーバ20の機能構成と共通する部分があるので、共通する部分については説明を省略し、管理サーバ20と異なる部分を中心に説明する。計算サーバ30は、記憶部320、制御部330、通信部340を備える。
【0088】
<計算サーバ30の記憶部320の構成>
計算サーバ30の記憶部320は仮想ドライブ322を有する。仮想ドライブ322は管理サーバ20の仮想ドライブ228と同様である。
【0089】
<計算サーバ30の制御部330の構成>
計算サーバ30の制御部330は、受信制御部331、送信制御部332、通知部333、参加通知受信部334、参加管理部335、計算リソース管理部336及びジョブ処理部337を備える。制御部330は、記憶部320に記憶されたアプリケーションプログラム321を実行することにより、これら受信制御部331等の機能ユニットが実現される。受信制御部331、送信制御部332は、管理サーバ20の受信制御部231、送信制御部232とほぼ共通する機能を有する。
【0090】
通知部333は、計算サーバ30の所有者からの設定指示入力に基づいて、管理サーバ20に対して分散処理システム1への参加有無情報を送出する。
【0091】
参加通知受信部334は、通知部333が送出した参加有無情報に基づいて管理サーバ20が分散処理システム1への参加の可否の決定、少なくとも管理サーバ20からの分散処理システム1への参加離脱を許可しない旨の通知を受領する。
【0092】
参加管理部335は、通知部333が送出した参加有無情報、及び、参加通知受信部334が受信した参加の可否の決定に基づいて、その時点で計算サーバ30が分散処理システム1に参加しているか否かを把握する。
【0093】
計算リソース管理部336は、計算サーバ30の計算リソース(計算能力)を把握し、好ましくは定期的に測定し、その結果を管理サーバ20に送出する。
【0094】
ジョブ処理部337は、管理サーバ20から割り当てられたジョブを受領し、このジョブに関する計算処理を行って計算結果を管理サーバ20に送出する。
【0095】
<分散処理システム1の動作>
以下、
図9~
図12のフローチャート及び
図13のシーケンス図を参照しながら、本実施形態の分散処理システム1の処理について説明する。
【0096】
図9に示すフローチャートは、本実施形態の分散処理システム1全体の動作を、管理サーバ20の動作を中心として説明するためのフローチャートである。
【0097】
図9において、管理サーバ20は、分散処理システム1に参加している計算サーバ30(その時点で参加していない計算サーバ30を含んでもよい)から、その計算サーバ30の計算能力(計算リソース)に関する情報等を受信し、ノード管理DB222を更新する。また、管理サーバ20は、管理サーバ20と各々の計算サーバ30との間のネットワーク距離及び通信速度を測定し、この情報を用いてノード管理DB222を更新する(S900)。
【0098】
次いで、管理サーバ20は、端末装置10から計算要求に関するタスクを受信する(S901)。
【0099】
さらに、管理サーバ20は、S901で受信したタスクをジョブに分解し、このジョブを、その時点で分散処理システム1に参加している計算サーバ30に割り当てて、割り当てたジョブを計算サーバ30に送出する(S902)。
【0100】
そして、管理サーバ20は、計算サーバ30からジョブに関する計算結果を受領し、受領した計算結果に基づいてタスクの計算結果を生成し、タスクの計算結果を、タスクを送信した端末装置10に送出する(S903)。
【0101】
図10は、本実施形態の管理サーバ20の動作を説明するためのフローチャートであり、
図9のS900の動作の詳細を説明するためのフローチャートである。
【0102】
まず、管理サーバ20のノード管理部234は、計算サーバ30からのアクセスを待つ(S1000)。そして、計算サーバ30からのアクセスがあったら(S1000においてYES)、ノード管理部234は、アクセスがあった計算サーバ30から、当該計算サーバ30の計算能力(計算リソース)に関する情報の受信を待ち(S1001)、情報を受信したら(S1001においてYES)、受信した情報をノード管理DB222に格納してこのノード管理DB222を更新する(S1002)。
【0103】
次いで、ノード管理部234は、その時点で分散処理システム1に参加している計算サーバ30と管理サーバ20との間のネットワーク距離及び通信速度を測定し(S1003、s1004)、測定したネットワーク距離及び通信速度に関する情報をノード管理DB222に格納してこのノード管理DB222を更新する(S1005)。ネットワーク距離及び通信速度の測定手法については既に説明したので、ここでの説明は省略する。
【0104】
図11は、本実施形態の管理サーバ20の動作を説明するためのフローチャートであり、
図9のS901の動作の詳細を説明するためのフローチャートである。
【0105】
まず、管理サーバ20のタスク解析部235は、端末装置10からのアクセスを待つ(S1100)。そして、端末装置10からのアクセスがあったら(S1100においてYES)、タスク解析部235は、アクセスがあった端末装置10から、分散処理システム1による計算要求であるタスクの受信を待ち(S1101)、タスクを受信したら(S1101においてYES)、受信した情報をタスク管理DB223に格納してこのタスク管理DB223を更新する(S1102)。
【0106】
分散処理システム1において数値計算処理の要求を行う端末装置10が管理サーバ20にアクセスした際に、この端末装置10の出力装置14であるディスプレイに表示される画面の一例を
図14に示す。
【0107】
図14に示す画面1400には、数値計算処理を行う際の処理モデルを管理サーバ20にアップロードするためのボタン1401と、数値計算処理を行う際の処理データを管理サーバ20にアップロードするためのボタン1402、1403とが表示されている。端末装置10のユーザは、このボタン1401~1403を用いて、端末装置10に格納されている処理モデル及び処理データを特定し、入力装置13であるタッチパネル等を用いてOKボタン1404をクリックする。OKボタン1404に対する入力があると、端末装置10のプロセッサ19は、指定された処理モデル及び処理データを管理サーバ20にアップロードする。
【0108】
次いで、タスク解析部235は、S1101で受領したタスクを複数のジョブに分割することでジョブを生成する(S1103)。その後、スケジュール生成部236は、S11003で生成されたジョブを、その時点で分散処理システム1に参加している計算サーバ30に割り当てるスケジュールを生成し、このスケジュールに基づいて割当テーブル226を生成する(S1104)。
【0109】
さらに、タスク解析部235は、生成したジョブに基づく計算サーバ30における処理工数を算出し、この処理工数が所定値以内であるかどうかを判定する(S1105)。そして、処理工数が所定値以内であると判定したら(S1105においてYES)、タスク解析部235はジョブ管理DB225を更新し(S1106)、処理工数が所定値を上回ると判定したら(S1105においてNO)、S1103に戻って、タスク解析部235は再度ジョブを生成する。
【0110】
図12は、本実施形態の管理サーバ20の動作を説明するためのフローチャートであり、
図9のS902の動作の詳細を説明するためのフローチャートである。
【0111】
まず、ジョブ割当部237は、
図11のS1104でスケジュール生成部236が生成した割当テーブル226に基づいて、その時点で分散処理システム1に参加している計算サーバ30に、割り当てたジョブを送信する(S1200)。
【0112】
この後、計算結果統合部238は、ジョブを送信した計算サーバ30から、割り当てたジョブに関する計算結果を受信する(S1201)。そして、計算結果統合部238は、ジョブを送信した全ての計算サーバ30から計算結果を受信するのを待ち(S1202)、全ての計算サーバ30から計算結果を受信したと判定したら(S1202においてYES)、これらジョブの計算結果から、タスクとしての計算結果を生成する(S1203)。そして、計算結果統合部238は、タスクを送信した端末装置10に、S1203で生成した計算結果を送出する(S1204)。この後、特典付与部239は、ジョブ処理を行った計算サーバ30(の管理者)に対して特典を付与する(S1205)。
【0113】
図13は、計算サーバ30が分散処理システム1への参加登録または参加離脱を申請する際の管理サーバ20及び計算サーバ30の動作の一例を示すシーケンス図である。
【0114】
まず、計算サーバ30の通知部333は、計算サーバ30の管理者からの操作入力を受け入れることで、当該計算サーバ30の分散処理システム1への参加可否入力を受け入れる(S1300)。
【0115】
図15は、S1300において計算サーバ30に設けられた図略の出力装置の一例であるディスプレイに表示される画面の一例を示す図である。
図15に示す画面1500には、計算サーバ(ノード)30を管理サーバ20に接続する、言い換えれば計算サーバ30を分散処理システム1に参加させるか、計算サーバ30を管理サーバ20から切断する、言い換えれば計算サーバ30を分散処理システム1から参加離脱させるかを指示するボタン1501が表示されている。計算サーバ30の管理者は、計算サーバ30に設けられた図略の入力装置であるマウス等を用いてこのボタン1501をスライド操作し、さらに、OKボタン1502をクリック等することで、参加有無情報を管理サーバ20に送出する指示を行う。
【0116】
図13に戻って、計算サーバ30の通知部333は、計算サーバ30の管理者からの指示に基づいて、参加有無情報を管理サーバ20に送出する(S1301)。管理サーバ20のノード管理部234は計算サーバ30からの参加有無情報を受信し(S1302)、参加有無情報を送信した計算サーバ30がその時点で計算処理中であるか否かを判定する(S1303)。そして、参加有無情報を送信した計算サーバ30がその時点で計算処理中であると判定したら(S1303においてYES)、ノード管理部234は、参加有無情報を送信した計算サーバ30に対して、分散処理システム1への参加の切断(参加離脱)が不可である旨の通知を行い(S1304)、計算サーバ30の参加通知受信部334はこの通知を受信する(S1305)。
【0117】
図16は、S1304に基づく通知により計算サーバ30の出力装置14であるディスプレイに表示される画面の一例を示す図である。
図16に示す画面1600には、分散処理システム1への参加は継続するが、ジョブに関する計算処理が終了したら分散処理システム1への参加離脱がされる旨の表示がされている。
【0118】
図13に戻って、ノード管理部234は、計算サーバ30から送信されてきた参加有無情報、及び、S1304による参加離脱不可の通知に基づいて、ノード管理DB222を更新する(S1306)。
【0119】
<実施形態の効果>
以上詳細に説明したように、本実施形態の分散処理システム1によれば、仮想的なデータセンタ(DC)を実現し、迅速かつ低コストに計算資源を有効活用した分散処理をユーザに提供することが可能となる。
【0120】
また、本実施例の分散処理システム1では、タスクの計算処理工数が所定値を上回る場合、計算サーバ30と管理サーバ20との間の通信速度を取得し、この通信速度が予め定めた閾値を上回る計算サーバ30にジョブを割り当てるスケジュールを生成している。つまり、通信速度が高く、結果的に管理サーバ20と計算サーバ30との間の通信が安定的である(この場合、管理サーバ20と計算サーバ30との間のネットワーク距離が近いことが十分に推測される)計算サーバ30にジョブを割り当てることで、安定的かつ低コストな計算処理を実行することができる。
【0121】
また、本実施例の分散処理システム1では、計算サーバ30から送出される参加有無情報に基づいて、その時点で分散処理システム1に参加している計算サーバ30により分散処理システム1を構築しているので、計算サーバ30の管理者は、計算サーバ30の計算リソースを分散処理システム1に提供したい時のみ分散処理システム1に参加することができる。これにより、通常は計算サーバ30の管理者が自身の計算処理を行うために計算サーバ30を利用しており、その空き時間(言い換えれば空きリソース)を分散処理システム1に提供する形態を実現することができる。このような形態は、分散処理システム1に参加する計算サーバ30の数及び範囲を広げることにつながり、結果として、市中にある計算資源を有効活用した分散処理をユーザに提供することが可能となる。
【0122】
この際、参加有無情報を送信した計算サーバ30がジョブの計算処理をその時点で行っている(ジョブの計算処理をしているか否かを計算サーバ30の管理者は直接知ることはない)場合、計算処理が終了して計算結果を管理サーバ20に送出するまで、計算サーバ30が分散処理システム1から参加離脱することができない。これにより、意図せぬタイミングで計算サーバ30が分散処理システム1から離脱することを防ぐことができる。
【0123】
但し、計算サーバ30が参加有無情報を送出してから実際に分散処理システム1から参加離脱できるまでの時間が長くなると、計算サーバ30の管理者を長時間待機させることにもなり得る。そこで、管理サーバ20は、各々のジョブに基づく計算処理工数が一定となるようにジョブを細分化しており、これにより、参加有無情報を送出した計算サーバ30ができるだけ早期に分散処理システム1から離脱することができる。一方、分散処理システム1全体で考えれば、計算サーバ30が分散処理システム1から離脱しても、ジョブを細分化することで、参加離脱した計算サーバ30に当初割り当てていたジョブを素早く他の計算サーバ30に割り当てることができ、分散処理システム1全体としての処理時間損失を抑制することができる。
【0124】
さらに、本実施例の分散処理システム1では、管理サーバ20と計算サーバ30との間のネットワーク距離が近い順に、または、ルーティングコストが安い順に、ジョブを割り当てる計算サーバ30を決定し、決定した計算サーバ30にジョブを割り当てるスケジュールを決定している。これにより、分散処理システム1全体としてのネットワーク及び計算処理の負担を軽減することができる。
【0125】
<付記>
なお、上記した実施形態は本開示を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施形態の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0126】
一例として、上述した実施形態では管理サーバ20と(複数の)計算サーバ30とからなる分散処理システム1について説明したが、管理サーバ20を統括する上位管理サーバを設けてもよい。つまり、管理サーバ20と計算サーバ30とが単一の分散処理システム1を構成し、これら分散処理システム1が複数設けられ、複数の分散処理システム1を統括する上位管理サーバが複数の分散処理システム1を統括してもよい。この場合、上位管理サーバが統括する分散処理システムを一つの分散処理システムとして考え、この分散処理システムの下位に下位分散処理システムが複数存在するとも考えることができる。上位管理サーバは、その下位に存在する分散処理システム1のリソースを管理する。このような構成において上位管理サーバと管理サーバとの接続が途絶えた場合、管理サーバは上位管理サーバの管理業務の少なくとも一部を分担することもできる。
【0127】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0128】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0129】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0130】
以上の各実施形態で説明した事項を以下に付記する。
【0131】
(付記1)
複数のノード(3、30)と、これらノード(3、30)のそれぞれとネットワーク(5、80)を介して接続された管理サーバ(2、20)とを有する分散処理システム(1)であって、各々のノード(3、30)は、自身の設定によりネットワーク(5、80)を介して分散処理システム(1)への参加を行う分散処理システム(1)における管理サーバ(2、20)を動作させるためのプログラム(221)であって、管理サーバ(2、20)はプロセッサ(29)とメモリ(25)とを備え、プログラム(221)は、プロセッサ(29)に、分散処理システム(1)外のクライアント(4、10)からの分散処理システム(1)による計算要求であるタスクを分散処理システム(1)全体で受け入れる第1ステップ(S901)と、タスクを複数のジョブに分解する第2ステップ(S902)と、各々のノード(3、30)から予め取得した各々のノード(3、30)の利用可能な計算リソースから、ノード(3、30)に割り当てるジョブのスケジュールを決定する第3ステップ(S902)と、スケジュールに基づいて、各々のノード(3、30)に割り当てるジョブを送出する第4ステップ(S902)と、各々のノード(3、30)から、ジョブの計算結果を受け入れる第5ステップ(S903)と、受け入れたジョブの計算結果に基づいてタスクの計算結果を生成する第6ステップ(S903)と、タスクの計算結果をクライアント(4、10)に送出する第7ステップ(S903)とを実行させる、プログラム(221)。
(付記2)
プログラム(221)は、第3ステップ(S902)において、タスクの計算処理工数を算出し、計算処理工数が所定値を上回る場合、ノード(3、30)及び管理サーバ(2、20)の間の通信速度を取得し、この通信速度が予め定めた閾値を上回るノード(3、30)にジョブを割り当てるスケジュールを生成する付記1記載のプログラム(221)。
(付記3)
プログラム(221)は、さらに、各々のノード(3、30)から、分散処理システム(1)への参加の有無に関する参加有無情報を受け入れる第8ステップ(S1302)と、参加有無情報に基づいてその時点で参加しているノード(3、30)を登録する第9ステップ(S1306)とを実行させ、さらに、プログラム(221)は、第3ステップ(S902)において、その時点で参加しているノード(3、30)に割り当てるジョブのスケジュールを決定する付記1記載のプログラム(221)。
(付記4)
プログラム(221)は、第8ステップ(S1302)において、参加有無情報及び計算リソースに関する計算リソース情報を受け入れる付記3に記載のプログラム(221)。
(付記5)
プログラム(221)は、さらに、参加有無情報に基づいて各々のノード(3、30)の分散処理システム(1)への参加の可否を決定する第10ステップ(S1304)を実行させ、さらに、プログラム(221)は、第10ステップ(S1304)において、ジョブを割り当ててその計算結果を受け入れていないノード(3、30)から分散処理システム(1)へ参加しない旨の参加有無情報を受け入れたら、ジョブの計算結果を受け入れるまで分散処理システム(1)への参加を継続させる決定を行う付記3に記載のプログラム(221)。
(付記6)
プログラム(221)は、第2ステップ(S902)において、各々のジョブに基づく計算処理工数が一定となるようにタスクを複数のジョブに分解する付記5に記載のプログラム(221)。
(付記7)
プログラム(221)は、さらに、ジョブの計算結果を受け入れたノード(3、30)に対して、計算リソースに基づく特典を付与する第11ステップ(S1205)を実行させる、付記1記載のプログラム(221)。
(付記8)
プログラム(221)は、第3ステップ(S902)において、各々のノード(3、30)と管理サーバ(2、20)との間のネットワーク距離を取得し、このネットワーク距離が近い順に、ジョブを割り当てるノード(3、30)を決定し、決定したノード(3、30)にジョブを割り当てるスケジュールを決定する付記1記載のプログラム(221)。
(付記9)
プログラム(221)は、第3ステップ(S902)において、各々のノード(3、30)と管理サーバ(2、20)との間のルーティングコストを取得し、ネットワーク距離が近い順に、または、ルーティングコストが安い順に、ジョブを割り当てるノード(3、30)を決定し、決定したノード(3、30)にジョブを割り当てるスケジュールを決定する付記8記載のプログラム(221)。
(付記10)
複数のノード(3、30)と、これらノード(3、30)のそれぞれとネットワークを介して接続された管理サーバ(2、20)とを有する分散処理システム(1)であって、各々のノード(3、30)は、自身の設定によりネットワーク(5、80)を介して分散処理システム(1)への参加を行う分散処理システム(1)における管理サーバ(2、20)であって、管理サーバ(2、20)はプロセッサ(29)とメモリ(25)とを備え、プロセッサ(29)が、分散処理システム(1)外のクライアント(4、10)からの計算要求に関するタスクを分散処理システム(1)全体で受け入れる第1ステップ(S901)と、タスクを複数のジョブに分解する第2ステップ(S902)と、各々のノード(3、30)から予め取得した各々のノード(3、30)の利用可能な計算リソースから、ノード(3、30)に割り当てるジョブのスケジュールを決定する第3ステップ(S902)と、スケジュールに基づいて、各々のノード(3、30)に割り当てるジョブを送出する第4ステップ(S902)と、各々のノード(3、30)から、ジョブの計算結果を受け入れる第5ステップ(S903)と、受け入れたジョブの計算結果に基づいてタスクの計算結果を生成する第6ステップ(S903)と、タスクの計算結果をクライアント(4、10)に送出する第7ステップ(S903)とを実行する、サーバ(2、20)。
(付記11)
複数のノード(3、30)と、これらノード(3、30)のそれぞれとネットワークを介して接続された管理サーバ(2、20)とを有する分散処理システム(1)であって、各々のノード(3、30)は、自身の設定によりネットワークを介して分散処理システム(1)への参加を行う分散処理システム(1)であって、管理サーバ(2、20)はプロセッサ(29)とメモリ(25)とを備え、プロセッサ(29)が、分散処理システム(1)外のクライアント(4、10)からの計算要求に関するタスクを分散処理システム(1)全体で受け入れる第1ステップ(S901)と、タスクを複数のジョブに分解する第2ステップ(S902)と、各々のノード(3、30)から予め取得した各々のノード(3、30)の利用可能な計算リソースから、ノード(3、30)に割り当てるジョブのスケジュールを決定する第3ステップ(S902)と、スケジュールに基づいて、各々のノード(3、30)に割り当てるジョブを送出する第4ステップ(S902)と、各々のノード(3、30)から、ジョブの計算結果を受け入れる第5ステップ(S903)と、受け入れたジョブの計算結果に基づいてタスクの計算結果を生成する第6ステップ(S903)と、タスクの計算結果をクライアント(4、10)に送出する第7ステップ(S903)とを実行する、システム(1)。
(付記12)
複数のノード(3、30)と、これらノード(3、30)のそれぞれとネットワーク(5、80)を介して接続された管理サーバ(2、20)とを有する分散処理システム(1)であって、各々のノード(3、30)は、自身の設定によりネットワーク(5、80)を介して分散処理システム(1)への参加を行う分散処理システム(1)における管理サーバ(2、20)により実行される方法であって、管理サーバ(20)はプロセッサ(29)とメモリ(25)とを備え、プロセッサ(29)は、分散処理システム(1)外のクライアント(4、10)からの計算要求に関するタスクを分散処理システム(1)全体で受け入れる第1ステップ(S901)と、タスクを複数のジョブに分解する第2ステップ(S902)と、各々のノード(3、30)から予め取得した各々のノード(3、30)の利用可能な計算リソースから、ノード(3、30)に割り当てるジョブのスケジュールを決定する第3ステップ(S902)と、スケジュールに基づいて、各々のノード(3、30)に割り当てるジョブを送出する第4ステップ(S902)と、各々のノード(3、30)から、ジョブの計算結果を受け入れる第5ステップ(S903)と、受け入れたジョブの計算結果に基づいてタスクの計算結果を生成する第6ステップ(S903)と、タスクの計算結果をクライアント(4、10)に送出する第7ステップ(S903)とを実行する、方法。
【符号の説明】
【0132】
1…分散処理システム 2、20…管理サーバ 3…ノード 4…端末装置 5…ネットワーク 10、10A、10B…端末装置 25…メモリ 29…プロセッサ 30、30A、30B…計算サーバ 80…ネットワーク 220…記憶部 221…アプリケーションプログラム 222…ノード管理DB 223…タスク管理DB 224…タスク定義データ 225…ジョブ管理DB 226…割当テーブル 227…画面データ 228…仮想ドライブ 229…ルートマップ 230…制御部 231…受信制御部 232…送信制御部 233…画面提示部 234…ノード管理部 235…タスク解析部 236…スケジュール生成部 237…ジョブ割当部 238…計算結果統合部 239…特典付与部
【要約】
【課題】仮想的なデータセンタ(DC)を実現し、迅速かつ低コストに計算資源を有効活用した分散処理をユーザに提供する。
【解決手段】管理サーバ20のプログラムは、端末装置10からの分散処理システム1による計算要求であるタスクを受け入れる第1ステップと、タスクを複数のジョブに分解する第2ステップと、各々の計算サーバ30から予め取得した各々の計算サーバ30の利用可能な計算リソースから、計算サーバ30に割り当てるジョブのスケジュールを決定する第3ステップと、スケジュールに基づいて、各々の計算サーバ30に割り当てるジョブを送出する第4ステップと、各々の計算サーバ30から、ジョブの計算結果を受け入れる第5ステップと、受け入れたジョブの計算結果に基づいてタスクの計算結果を生成する第6ステップと、タスクの計算結果を端末装置10に送出する第7ステップとを実行させる。
【選択図】
図2