説明

グリッドコンピューティングシステム及び計算機資源管理装置、分散処理方法ならびにコンピュータプログラム

【課題】計算機とジョブを管理するサーバが負荷状況の制御を行うグリッドコンピューティングシステム、計算機資源管理装置、及び分散処理方法を提供する。
【解決手段】グリッドコンピューティングシステム100において、計算機資源管理装置1は、資源提供計算機2の情報を記憶し、資源提供計算機2からジョブ割当リクエストを受信すると、計算機資源管理装置1の処理能力と資源提供計算機2の数とから、次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出し、計算機資源情報と割当ジョブから算出されるジョブ処理予測時間がリクエスト間隔を超えるように、資源提供計算機2にジョブを割り当てる。資源提供計算機2は割当られたジョブを実行した後、又はリクエスト間隔を経過した後に、計算機資源管理装置1との通信を再開して、ジョブ実行結果を計算機資源管理装置1に通信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングに関する。
【背景技術】
【0002】
バイオ、物理、設計、金融などの分野では、大量のデータを解析するために、複雑かつ膨大な量の計算処理を行わなければならない。このような計算処理を必要とする事業者は、処理性能の高いスーパーコンピュータを導入するか、スーパーコンピュータの代わりに多数のコンピュータを利用したグリッドコンピューティングを用いるか、あるいはこれらの設備を有する請負業者に計算処理を委託(アウトソーシング)する必要がある。
【0003】
近年地理的に分散した複数のコンピュータをインターネットを介して接続し、コンピュータ資源をそれらの複数のコンピュータで共有して処理をすすめられるようにするグリッドコンピューティング技術の研究開発が盛んに行われ、高価なスーパーコンピュータが無くても複雑な計算やプログラムを短時間で実行できる技術として注目を集めている。
【0004】
グリッドコンピューティング技術の一応用である分散コンピューティングシステムは、分散して処理を行うコンピュータを、容易に動的に追加することができる点に特徴がある。コンピュータの新規導入や、より高性能なコンピュータへの置き換えによって、分散コンピュータシステム全体の性能が向上する。
【0005】
分散コンピューティングシステムでは多数のコンピュータ資源を活用して分散処理を行うことで、非常に高い計算能力を実現することができるが、そのためには多数のコンピュータを管理するための管理用コンピュータが必要になる。分散コンピューティングシステムは、多くの数のクライアントを有する、クライアント・サーバシステムとみなすことができる。
【0006】
分散コンピューティングシステムにおいて負荷を分散するために、例えば、以下のような方法がある。特許文献1には、負荷分散モジュールは、サーバ能力データとクライアント能力データを比較して、サーバ及びクライアントの負荷の分散を決定する方法が記載されている。特許文献2には、サーバが処理可能なクライアント数を超えた場合には、アクセス情報に基づいて各クライアントの終了時刻を予想し、拒絶応答とともに次回リトライ時刻をクライアントに通知することによって、サーバの負荷を分散する方法が記載されている。特許文献3には、クライアントからサーバにデータを要求したとき、サーバの負荷が高くて要求されたデータを送信できない場合は、接続しているクライアント数と過去の統計的データから次にアクセスすべき時間を計算して、データを要求したクライアントに通知する方法が記載されている。
【0007】
しかし、特許文献1では、クライアント及びサーバの処理能力にのみ着目しており、複数のクライアントがサーバにアクセスし、アクセスが集中することにより引き起こされるサーバの負荷に関する問題点は考慮されていない。また、特許文献2及び特許文献3では、既にサーバにアクセスが集中しており、クライアントがアクセスできない場合についての解決手段は開示されていない。このように、従来技術においては、クライアントの構成の変化に応じて、サーバが動的にクライアントによるアクセス負荷を制御する手法は提供されていなかった。
【0008】
分散コンピューティングシステムは、処理能力を向上させるためにクライアント計算機の数の増減を動的に行えることを特徴としているが、クライアントの数や、クライアントに割り当てるジョブの計算量などに応じて、サーバ計算機の負荷が非常に大きく変化するので、実際に機能させるためには、分散コンピューティングシステムを構成するクライアント計算機の数を制限しなければならない。
【特許文献1】特開2003−58519号公報
【特許文献2】特開2003−208401号公報
【特許文献3】特開平11−85647号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明は、上記事情に鑑みてなされたものであり、グリッドコンピューティング環境において、計算機とジョブを管理するサーバが負荷状況の制御を行うグリッドコンピューティングシステム、計算機資源管理装置、及び分散処理方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明の第1の観点に係るグリッドコンピューティングシステムは、ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、
前記計算機資源管理装置は、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機から次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備え、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信する送信手段と、
前記計算機資源管理装置から割り当てられたジョブを受信する受信手段と、
前記割り当てられたジョブを実行するジョブ実行手段と、
割当られたジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信手段と、
を備える、ことを特徴とする。
【0011】
特に、前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信し、
前記複数の計算機のジョブ実行結果通信手段は、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、
ことを特徴とする。
【0012】
さらに、前記複数の計算機の送信手段は、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信し、
前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、
ことを特徴とする。
【0013】
上記目的を達成するために、本発明の第2の観点に係る計算機資源管理装置は、ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置であって、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備えることを特徴とする。
【0014】
特に、前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともにリクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信する、ことを特徴とする。
【0015】
さらに、前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、ことを特徴とする。
【0016】
上記目的を達成するために、本発明の第3の観点に係る分散処理方法は、ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおける分散処理方法であって、
前記計算機資源管理装置が、
前記複数の計算機の計算資源情報を取得する計算機資源取得ステップと、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信ステップと、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機のそれぞれに割り当てたジョブを記憶するジョブ割当記憶ステップと、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回のジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出するステップと、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測ステップと、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当ステップと、
を実行し、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信するリクエスト送信ステップと、
前記計算機資源管理装置から割り当てられたジョブを受信するジョブ受信ステップと、
前記割り当てられたジョブを実行するジョブ実行ステップと、
ジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信ステップと、
を実行する、
ことを特徴とする。
【0017】
特に、前記計算機資源管理装置のジョブ割当ステップは、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信するステップを含み、
前記複数の計算機のジョブ実行結果通信ステップは、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、ことを特徴とする。
【0018】
さらに、前記複数の計算機のリクエスト送信ステップは、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信するステップを含み、
前記計算機資源管理装置の計算機資源取得ステップは、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集するステップを含む、ことを特徴とする
【0019】
上記目的を達成するために、本発明の第4の観点に係るコンピュータプログラムは、ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置としての機能をコンピュータに実行させるためのコンピュータプログラムであって、当該コンピュータを、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理予測手段、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当手段、
として機能させることを特徴とする。
【発明の効果】
【0020】
本発明により、分散コンピューティングシステムの負荷を自動的にコントロールすることが可能になり、小規模なサーバシステムで非常に多くの数の計算機資源を管理する分散コンピューティングシステムを構築することができる。
【0021】
また、サーバ及び資源提供計算機の能力と、負荷となるジョブとが変化したときでも、可能な最大の能力を発揮することができる。
【発明を実施するための最良の形態】
【0022】
以下、本発明の一実施の形態に係るグリッドコンピューティングシステムとその分散処理方法を、図面を参照して説明する。
【0023】
本実施の形態に係るグリッドコンピューティングシステム100は、図2に示すように、計算機資源管理装置1と、該計算機資源管理装置1にネットワーク3を介して接続された複数の資源提供計算機2とから構成されている。
【0024】
計算機資源管理装置1は、このグリッドコンピューティングシステム100が処理すべき仕事(プロセス)の一部を各資源提供計算機2に実行させ、実行結果を統合することにより、仕事(プロセス)を達成する計算機である。計算機資源管理装置1は、図1に示すように、スケジューリングプログラム101とサーバ状態監視プログラム102とを記憶し、計算機資源管理データベース103とジョブデータベース104とを備えている。
【0025】
一方、資源提供計算機2は、このグリッドコンピューティングシステム100に課された処理すべきプロセス(計算)を実行するためにハードウエア資源及びソフトウエア資源の全部又は一部を提供する計算機であり、図1に示すように、それぞれ、クライアント管理プログラム201と分散処理の実行プログラム202と、分散処理データ203とを記憶する。
【0026】
計算機資源管理装置1と複数の資源提供計算機2とは、スケジューリングプログラム101とクライアント管理プログラム201がアップリンク31およびダウンリンク32によって通信を行う。
【0027】
グリッドコンピューティングシステム100では、処理すべき計算を、複数の資源提供計算機2で分散して行わせるために、適切な大きさに分割されており、その1単位をジョブと呼ぶ。
【0028】
計算機資源管理装置1の計算機資源管理データベース103は、図5(a)、(b)に示すように、各資源提供計算機2に関する情報及び計算機資源管理装置1の能力に関する情報を記憶する。
【0029】
図5(a)に示すように、資源提供計算機2に関する情報としては、計算機の識別子(ID)と名称、その計算機が備えるCPUの種類と動作周波数、OS(Operating System)、主記憶部のメモリ量、外部記憶部としてのディスク装置の記憶容量(ディスク容量)、提供できる資源の量(資源提供量)、資源提供状況統計、平均稼働率、CPUベンチマーク値、未処理ジョブ量、前回リクエストを受信した時刻、および指定したリクエスト間隔時間等の情報がある。ここで、計算機の識別子(ID)と名称は資源提供計算機2を特定する為の識別情報と名称である。CPUの種類と動作周波数はCPUの名称及びバージョンと動作クロックの周波数を示す。OS(Operating System)はオペレーティングシステムの名称とバージョン情報等である。主記憶部のメモリ量は主記憶装置の記憶容量を意味する。ディスク容量はディスク装置の総容量である。資源提供量は総計算資源のうちのどの程度を提供できるかということであり、例えば、%などで表される。資源提供状況統計は、実際の資源の提供状況の統計情報である。平均稼働率は計算機の実際の平均稼働率である。CPUベンチマーク値はベンチマークテストの結果である。未処理ジョブ量は与えられたジョブのうちの未処理分の量である。前回リクエストを受信した時刻は、前回ジョブ要求リクエストを受信した時刻である。指定したリクエスト間隔時間は、計算機資源管理装置1が指定したジョブリクエスト発生間隔である。
【0030】
図5(b)に示すように、計算機資源管理装置1の能力に関する情報としては、平均サービス量、平均リクエスト到着間隔、平均応答時間、資源提供計算機数、などがある。平均サービス量は、この計算機資源管理装置1の計算機のサービス提供量の平均値である。平均リクエスト到着間隔はジョブリクエストの到達間隔の平均値である。平均応答時間は、ジョブリクエストを受信してから応答するまでの時間の平均値である。資源提供計算機数は資源を提供できる計算機の総数である。
【0031】
計算機資源管理装置1のジョブデータベース104には計算処理要求と、各計算処理要求に応じた多数のジョブと、ジョブの割り当てに関する情報とが登録される。計算機資源管理装置1はジョブデータベース104に登録されているジョブを多数の資源提供計算機2に対して適当に割り当てて実行させ、その結果を収集して統合する。
【0032】
ジョブの割当に関する情報としては、図5(c)に示すように、ジョブID、処理状態、割当計算機ID、命令数(例えば、浮動小数点演算数 Floating-point operations)で計られるジョブの計算量、実行プログラムの名称と格納場所、処理データの名称と格納場所、CPUやOSなどの対応プラットフォーム、主記憶や外部記憶などの使用する資源量などがある。ジョブIDはジョブの識別情報である。ジョブ状態情報は、ジョブが未処理/処理中/済のいずれかであることを示す情報である。計算機IDは、そのジョブを割り当てた計算機のIDである。ジョブの計算量は、命令数(例えば、浮動小数点演算数 Floating-point operations)で計られるジョブの計算量を示す。実行プログラムの名称と格納場所は実行すべきプログラムの識別情報と格納位置のアドレスである。処理データの名称と格納場所は、処理データの識別情報と格納場所のアドレスである。使用資源量は、CPUやOSなどの対応プラットフォーム、主記憶や外部記憶などが使用する資源量を示す。
【0033】
計算機資源管理装置1のジョブ割当処理の性能は、登録されている資源提供計算機2やジョブの数、その他の状態に応じて変化する。このため、サーバ状態監視プログラム102がこれら(各資源提供計算機2が提供するハードウエア・ソフトウエア資源の能力、ジョブ数、ジョブの内容)を監視し、計算機資源管理データベース103の情報を更新する。
【0034】
計算機資源管理装置1は、物理的には、図3に示すように、制御部11、主記憶部12、外部記憶部13、入力部14、表示部15、送受信部16及び印字部17から構成される。主記憶部12、外部記憶部13、入力部14、表示部15、送受信部16及び印字部17はいずれも内部バス10を介して制御部11に接続されている。
【0035】
制御部11は、CPU(Central Processing Unit)等から構成され、外部記憶部13に記憶されているスケジューリングプログラム101及びサーバ状態監視プログラム102等を含む動作プログラムに従って、グリッドコンピューティングシステム100の状態を監視し、ジョブのスケジューリングを決めて、資源提供計算機2に対してジョブの割当を実行する。
【0036】
主記憶部12はRAM(Random-Access Memory)等から構成され、制御部11の作業領域として用いられる。
【0037】
外部記憶部13は、フラッシュメモリ、ハードディスク、DVD(Digital Versatile Disc)、DVD−RAM(Digital Versatile Disc Random-Access Memory)、DVD−RW(Digital Versatile Disc Rewritable)等の不揮発性メモリから構成され、前記の処理を制御部11に行わせるために、図1に示すスケジューリングプログラム101とサーバ状態監視プログラム102を含む動作プログラムを予め記憶する。制御部11の指示に従って、このプログラムやそのほかプログラムが利用するデータを制御部11に供給し、制御部11から供給されたデータを記憶する。さらに、外部記憶部13は、図1に示す計算機資源管理データベース103及びジョブデータベース104を含み、制御部11の指示に従って、ジョブ割当を行うためのデータを供給する。
【0038】
入力部14はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス10に接続するインターフェース装置から構成されている。入力部14を介して、ジョブの情報、計算機資源管理データベース103の情報などが入力され制御部11に供給される。
【0039】
表示部15は、CRT(Cathode Ray Tube)またはLCD(Liquid Crystal Display)などから構成され、入力されたジョブの情報、計算機資源管理データベース103の内容、ジョブ割当の状況、グリッドコンピューティングシステム100または計算機資源管理装置1の負荷状況などを表示する。
【0040】
送受信部16は、モデム又は網終端装置などと接続するシリアルインタフェース又はLAN(Local Area Network)インターフェースから構成されている。制御部11は、送受信部16を介して、資源提供計算機2からのジョブ割当リクエストおよび計算機資源情報、またはジョブ実行結果を受信し、資源提供計算機2にジョブ割当リプライの送信およびジョブのダウンロードを行う。
【0041】
印字部17は、プリンタとプリンタインターフェースから構成されている。印字部17は、計算機資源管理データベース103の内容や、ジョブを実行した結果およびジョブを割り当てた履歴などを印字するために用いられる。
【0042】
本実施の形態に係る資源提供計算機2は、物理的には、図4に示すように、制御部21、主記憶部22、外部記憶部23、入力部24、表示部25、送受信部26及び印字部27から構成される。主記憶部22、外部記憶部23、入力部24、表示部25、送受信部26及び印字部27はいずれも内部バス20を介して制御部21に接続されている。
【0043】
制御部21はCPU(Central Processing Unit)等から構成され、外部記憶部23に記憶されているプログラムに従って、ジョブ割当リクエスト、ジョブのダウンロード及び実行、ジョブ実行結果のアップロードなどを実行する。
【0044】
主記憶部22はRAM(Random-Access Memory)等から構成され、制御部21の作業領域として用いられる。
【0045】
外部記憶部23は、フラッシュメモリ、ハードディスク、DVD(Digital Versatile Disc)、DVD−RAM(Digital Versatile Disc Random-Access Memory)、DVD−RW(Digital Versatile Disc Rewritable)等の不揮発性メモリから構成され、前記の処理を制御部21に行わせるためのプログラムを予め記憶し、また、制御部21の指示に従って、このプログラムやそのほかプログラムが利用するデータを制御部21に供給し、制御部21から供給されたデータを記憶する。
【0046】
入力部24はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス20に接続するインターフェース装置から構成されている。入力部24を介して、計算機資源の提供の開始・終了、ジョブ実行履歴の参照命令などが入力され制御部21に供給される。
【0047】
表示部25は、CRT(Cathode Ray Tube)またはLCD(Liquid Crystal Display)などから構成され、割り当てられたジョブの情報、資源提供計算機の状態、ジョブ実行の状況などを表示する。
【0048】
送受信部26は、モデム又は網終端装置などと接続するシリアルインタフェース又はLAN(Local Area Network)インターフェースから構成されている。制御部21は、送受信部26を介して、計算機資源管理装置1にジョブ割当リクエストおよび計算機資源情報、またはジョブ実行結果を送信し、ジョブ割当リプライの受信およびジョブのダウンロードを行う。
【0049】
印字部27は、プリンタとプリンタインターフェースから構成されている。印字部27は、ジョブを実行した結果およびジョブが割り当てられた履歴などを印字するために用いられる。
【0050】
次に、図1に示す計算機資源管理装置1および資源提供計算機2の動作を、図5乃至図9を参照して説明する。なお、上述のように、計算機資源管理装置1の動作は、制御部11が、主記憶部12、外部記憶部13、入力部14、表示部15、送受信部16及び印字部17、と協働して行う。また、資源提供計算機2の動作は、制御部21が、主記憶部22、外部記憶部23、入力部24、表示部25、送受信部26及び印字部27、と協働して行う。
【0051】
まず、前提として、各資源提供計算機2にはクライアント管理プログラム201がインストールされている。また、クライアント管理プログラム201(正確には、クライアント管理プログラムを実行する制御部21)は、インストール時に、或いは定期的に、或いは操作者からの指示に応答して、資源提供計算機2の制御部21、主記憶部22の量などの構成情報やベンチマークテスト値を取得し、その情報、即ち、図5に示した資源提供計算機情報を、図6に示すように計算機資源管理装置1に送信する。計算機資源管理装置1は、送信された資源提供計算機情報を、計算機資源管理データベース103に登録する。
【0052】
図6の例では、計算機情報は、計算機名がclient01、CPUがIntel(商標)社製Celeron(商標)で、動作周波数が1066MHz、OSがWindows2000(登録商標)であり、主記憶のメモリ量が256Mbyte、ディスク容量が10Gbyteなどである。計算機資源情報の登録は、以上の説明のように、資源提供計算機2へのジョブ割当とは別に、事前に(例えば、クライアント管理プログラム201のインストール時に、或いは定期的に、或いは操作者からの指示に応答して)行われてもよいが、ジョブ割当リクエスト時に行われてもよい。
【0053】
計算機資源管理装置1は起動されると、図9に示すスケジューリング処理を開始し、任意の資源提供計算機2からのジョブ割り当てリクエスの受信を待機する。
一方、資源提供計算機2のクライアント管理プログラム201が起動されると、図9に示すクライアント管理処理を開始する。
【0054】
資源提供計算機2のクライアント管理プログラム201は、送受信部26を介して、計算機資源管理装置1のスケジューリングプログラム101と通信を行って、ジョブの割当リクエストを送信する(ステップA1)。
【0055】
このジョブ割り当てリクエストは、図7に例示するように、資源の提供量、資源提供状況の統計、平均稼働率、CPUベンチマーク値、未処理ジョブ量などの現在の資源提供計算機2のステータスに関する情報を含む。図7の例では、資源提供計算機2の資源の提供量は80、資源提供状況の統計値は3000、平均稼働率は0.7、CPUベンチマーク値は34170702flops、未処理ジョブ量は4000秒である。
【0056】
ジョブ割当リクエストを受信したスケジューリングプログラム101は、計算機資源管理データベース103を、ジョブ割り当てリクエストを送信した資源提供計算機2の名称によって検索して、ジョブ割当リクエストを送信してきた資源提供計算機2に関する情報を取得する(ステップA2)。その資源提供計算機2がデータベースに未登録である場合(初回リクエスト時)は、ジョブ割当リクエストに含まれている計算機に関する情報を計算機資源管理データベース103に登録する。
【0057】
ジョブ割当リクエストを送信した資源提供計算機2の情報が計算機資源管理データベース103に登録されていない場合は、制御部11は送受信部16を介して、資源提供計算機2に必要な情報を問い合わせる。あるいは、ジョブ割当リクエストに資源提供計算機2の情報が添付されていて、その情報を取得すると同時に計算機資源管理データベース103に登録する。ジョブ割当リクエストを最初に送信したときに、その資源提供計算機2の情報を計算機資源管理データベース103に登録するようにすれば、資源提供計算機2をグリッドコンピューティングシステム100に動的に追加することができる。
【0058】
制御部11は、そのときの計算機資源管理装置1の負荷状況を計算機資源管理データベース103に格納されている計算機資源管理装置に関する情報(図5(b))に基づいて判別し、判別した負荷状況から、ジョブ割当リクエストを送信した資源提供計算機2から次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出する(ステップA3)。
【0059】
このリクエスト間隔は、例えば、平均応答時間×資源提供計算機数×安全係数から求めることができる。
ここで、平均応答時間は、計算機資源管理装置1が各リクエストを受信してから応答するまでの平均時間である。資源提供計算機数は資源提供計算機2の総数である。安全係数は、例えば、1以上の数であり、資源提供計算機数/リクエスト間隔<計算機資源管理装置1の平均サービス量を達成するための係数である。
【0060】
例えば、計算機資源管理装置1の平均サービス量(スループット)を20[request/s]とすると、平均応答時間は、1/20=0.05[s]となる。
ここで、資源提供計算機2の総数が10000台で、それぞれ1回ずつリクエストを送って来た場合には、それを処理するのに要する時間は0.05×10000=500[s]となる。これにリクエストが同時に集中することを防ぐ目的で、安全係数を、例えば、1.0〜1.5の範囲内で例えばランダムに決定し、乗算値をリクエスト間隔とする。例えば、安全係数を1.2とすると、
リクエスト間隔=0.05[s]×10000×1.2=600[s]=10[分]となる。
【0061】
スケジューリングプログラム101は図5に示されているような、計算機資源管理データベース103の情報に基づいて、各計算機に以下の要領でジョブを割り当てる。
【0062】
まず、現在登録されている資源提供計算機数と計算機資源管理装置1の平均サービス量から、資源提供計算機2のリクエスト間隔を
資源提供計算機数/リクエスト間隔 < 平均サービス量
を満たすように設定する。
【0063】
次に、ジョブデータベース104から資源提供計算機2が利用を許可しているメモリ、HDDなどの資源量で処理が可能なジョブを選択して、その計算機に割り当てる(ステップA4)。また、そのジョブの処理予想時間を
ジョブ処理時間=ジョブ計算量/CPUベンチマーク値・平均稼働率
という式で算出し、資源提供計算機2の割当ジョブ量に加算する。
これを
割当ジョブ量(処理時間) > リクエスト間隔
が満たされるまで繰り返す(ステップA5)。
【0064】
すなわち、割り当てたジョブ量の処理時間がリクエスト間隔以下の場合は(ステップA5;NO)、さらにジョブを追加して割り当てる(ステップA4)。割当ジョブ量の処理時間がリクエスト間隔を越えたら(ステップA5;YES)、それらのジョブ割当情報をジョブ割当リプライとして資源提供計算機2に送信する(ステップA6)。ジョブ割当リプライには複数の割当ジョブが含まれうる。
【0065】
ジョブ割当情報は、図8に例示するように、計算機資源管理装置1から資源提供計算機2への応答である、ジョブ割当リプライに含めて送信される(ステップA6)。
【0066】
このジョブ割り当てリプライは、割り当てるジョブのID、そのジョブを実行するために予想される計算量、そのジョブを実行するためのプログラムの格納場所と名称、処理データの格納場所と名称、使用デスク容量、リクエスト間隔を含む。図8の例では、割り当てるジョブのIDは「3」、そのジョブを実行するために予想される計算量は400000000000flop、そのジョブを実行するためのプログラムの格納場所はhttp://計算機資源管理装置でその名称はprogram3、処理データの格納場所はhttp://計算機資源管理装置でその名称はdata3、使用ディスク容量は1000000バイト、リクエスト間隔は86400秒である。
【0067】
資源提供計算機2の制御部21は、ジョブ割当リプライを受信して(ステップA7)、このリプライ情報をファイルなどの形で保存しておく。資源提供計算機2はジョブ割当リプライの情報を元に、割り当てられた複数のジョブに必要な実行プログラム202、および分散処理データ203を計算機資源管理装置1からダウンロードする(ステップA8、ステップA9)。
【0068】
資源提供計算機2のクライアント管理プログラム201は、制御部21及び主記憶部22などの資源を用いて、割り当てられたジョブを実行する(ステップA10)。ジョブの実行が完了したら、制御部21は送受信部26を介して、ジョブ完了報告リクエストを計算機資源管理装置1に送信する(ステップA11)。割当ジョブ量を処理する推定時間がリクエスト間隔より大きく設定されているので、ジョブ完了報告リクエストを送信したときに、多くの場合、計算機資源管理装置1はそれを受信することができる。計算機資源管理装置1は、ジョブ完了報告リクエストを受信して、計算機資源管理データベース103のジョブ情報と資源提供計算機2の情報を更新する(ステップA12)。
【0069】
計算機資源管理装置1の制御部11が、ジョブ完了報告リプライを資源提供計算機2に送信する(ステップA13)。資源提供計算機2は、ジョブ完了報告リプライを受信すると(ステップA14)、完了したジョブの処理結果データを計算機資源管理装置1にアップロードする(ステップA15、ステップA16)。その後、ステップA1に戻って、新たなジョブ割当リクエストを送信する。
【0070】
以上説明したように、計算機資源管理装置1では、負荷状況に応じて資源提供計算機2が計算機資源管理装置1にアクセスするリクエスト間隔を計算し、ジョブ処理時間がリクエスト間隔を越えるようにジョブを割り当てるので、ジョブ完了報告リクエストを送信するときに計算機資源管理装置1は、直ちに受信できる可能性が高い。その結果、資源提供計算機2にジョブ完了報告の待ち時間がなく、グリッドコンピューティングシステム100全体で計算機資源が有効に利用される。資源提供計算機2の数が変動しても、その条件に応じた計算機資源管理装置1の負荷に合わせてリクエスト間隔が設定されるので、ジョブがあるにもかかわらず資源提供計算機2に空き時間が生じることがない。
【0071】
次に、本実施の形態の変形として、リクエスト間隔を資源提供計算機2に通知し、資源提供計算機2はリクエスト間隔が経過してから、ジョブ完了報告リクエストを送信する場合の処理を説明する。図10は、本発明の実施の形態に係るグリッドコンピューティングシステム100の別の処理シーケンスを示すフローチャートである。
【0072】
図10において、ステップA1〜A5,A7、A8、A9、A11〜A169は図9のステップA1〜A5,A7,A8,A9,A11〜A16と同様である。
一方、図9のフローチャートと異なる点として、ステップB1において、ステップA4で求められたジョブ割当情報に加えてステップA3で計算されたリクエスト間隔が、図8に示すように、ジョブ割当リプライに含めて送信される。
【0073】
資源提供計算機2は、割り当てられたジョブの実行を開始すると、経過時間を計測するためのタイマを起動して、例えば1つのジョブの実行が完了するごとに、ジョブリクエスト間隔を経過したかどうか判断する(ステップB3)。計算機資源管理装置1から指示されたリクエスト間隔時間が経過している場合(ステップB3;YES)、計算機資源管理装置1に接続して、その時点までに完了しているジョブを報告する(ステップA11〜A13)。リクエスト間隔が経過していない場合は(ステップB3;NO)、ジョブの実行を継続する。
【0074】
そして、完了したジョブの処理結果データをアップロードする(ステップA15,A16)。それと同時に、前回接続したときと同様に、ジョブ割当リクエストを行う(ステップA1)。計算機資源管理装置1は改めてリクエスト間隔を計算し(ステップA3)、
(未処理ジョブ量+新規割当ジョブ量) > リクエスト間隔
となるまで追加のジョブを割り当てる(ステップA4,A5)。
【0075】
クライアント管理プログラム201が計算機資源管理装置1へのジョブ割当リクエスト又はジョブ完了報告リクエストを行った際に、応答が得られなかった場合は、クライアント管理プログラム201はサーバが過負荷状態にあるとみなして、未処理のジョブの実行を継続して行い、リクエスト間隔時間がもう一度経過した時点で、計算機資源管理装置1へのリクエストの送信を再度行う。この際、多数のクライアントプログラムが同じタイミングでリクエストを繰り返すことを防止するために、乱数などを用いて、リクエスト再試行時間に揺らぎを与えてもよい。
【0076】
資源提供計算機2が、指示されたリクエスト間隔の後に計算機資源管理装置1に接続するので、実際のジョブの実行時間が実行予測時間と異なっても、リクエストを送信したときに計算機資源管理装置1が応答できない可能性が小さい。したがって、計算機資源管理装置1と資源提供計算機2の双方の待ち時間が減少され、グリッドコンピューティングシステム100全体の効率が向上する。
【0077】
本発明により、分散コンピューティングシステムの負荷を自動的にコントロールすることが可能になり、小規模なサーバシステムで非常に多くの数の計算機資源を管理する分散コンピューティングシステムを構築することができる。
【0078】
この発明は上記実施の形態に限定されず、その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更及び修正が可能である。
【0079】
計算機資源管理装置1および資源提供計算機2は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読みとり可能な記録媒体(フレキシブルディスク、CD-ROM、DVD-ROM等)に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する計算機資源管理装置1及び資源提供計算機2を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで本発明の計算機資源管理装置1及び資源提供計算機2を構成してもよい。
【0080】
また、前記の各機能を、OS(オペレーティングシステム)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【0081】
また、搬送波に上述のコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。
【図面の簡単な説明】
【0082】
【図1】本発明の実施の形態に係るグリッドコンピューティングシステムの機能の構成を示す概念図である。
【図2】本発明の実施の形態に係るグリッドコンピューティングシステムの全体を示す概念構成図である。
【図3】本発明の実施の形態に係る計算機資源管理装置の構成を示すブロック図である。
【図4】本発明の実施の形態に係る資源提供計算機の構成を示すブロック図である。
【図5】(a)と(b)とは、計算機資源管理データベースの登録情報の一例を示す図、(c)はジョブデータベースの登録情報の一例を示す図である。
【図6】資源提供計算機情報の一例を示す図である。
【図7】ジョブ割当リクエストの一例を示す図である。
【図8】ジョブ割当リプライの一例を示す図である。
【図9】本発明の実施の形態に係るグリッドコンピューティングシステムの処理シーケンスを示すフローチャートである。
【図10】本発明の実施の形態に係るグリッドコンピューティングシステムの別の処理シーケンスを示すフローチャートである。
【符号の説明】
【0083】
1 計算機資源管理装置
2 資源提供計算機
3 ネットワーク
10、20 内部バス
11、21 制御部
12、22 主記憶部
13、23 外部記憶部
14、24 入力部
15、25 表示部
16、26 送受信部
17、27 印字部
100 グリッドコンピューティングシステム

【特許請求の範囲】
【請求項1】
ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、
前記計算機資源管理装置は、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機から次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備え、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信する送信手段と、
前記計算機資源管理装置から割り当てられたジョブを受信する受信手段と、
前記割り当てられたジョブを実行するジョブ実行手段と、
割当られたジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信手段と、
を備える、
ことを特徴とするグリッドコンピューティングシステム。
【請求項2】
前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信し、
前記複数の計算機のジョブ実行結果通信手段は、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、
ことを特徴とする請求項1に記載のグリッドコンピューティングシステム。
【請求項3】
前記複数の計算機の送信手段は、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信し、
前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、
ことを特徴とする請求項1又は2に記載のグリッドコンピューティングシステム。
【請求項4】
ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置であって、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備えることを特徴とする計算機資源管理装置。
【請求項5】
前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともにリクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信する、
ことを特徴とする請求項4に記載の計算機資源管理装置。
【請求項6】
前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、
ことを特徴とする請求項4又は5に記載の計算機資源管理装置。
【請求項7】
ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおける分散処理方法であって、
前記計算機資源管理装置が、
前記複数の計算機の計算資源情報を取得する計算機資源取得ステップと、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信ステップと、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機のそれぞれに割り当てたジョブを記憶するジョブ割当記憶ステップと、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回のジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出するステップと、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測ステップと、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当ステップと、
を実行し、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信するリクエスト送信ステップと、
前記計算機資源管理装置から割り当てられたジョブを受信するジョブ受信ステップと、
前記割り当てられたジョブを実行するジョブ実行ステップと、
ジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信ステップと、
を実行する、
ことを特徴とするグリッドコンピューティングシステムの分散処理方法。
【請求項8】
前記計算機資源管理装置のジョブ割当ステップは、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信するステップを含み、
前記複数の計算機のジョブ実行結果通信ステップは、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、
ことを特徴とする請求項7に記載のグリッドコンピューティングシステムの分散処理方法。
【請求項9】
前記複数の計算機のリクエスト送信ステップは、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信するステップを含み、
前記計算機資源管理装置の計算機資源取得ステップは、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集するステップを含む、
ことを特徴とする請求項7又は8に記載のグリッドコンピューティングシステムの分散処理方法。
【請求項10】
ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置としての機能をコンピュータに実行させるためのコンピュータプログラムであって、当該コンピュータを、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理予測手段、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当手段、
として機能させることを特徴とするコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2007−52506(P2007−52506A)
【公開日】平成19年3月1日(2007.3.1)
【国際特許分類】
【出願番号】特願2005−235559(P2005−235559)
【出願日】平成17年8月15日(2005.8.15)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)