(57)【要約】【課題】計算機とジョブを管理するサーバが負荷状況の制御を行うグリッドコンピューティングシステム、計算機資源管理装置、及び分散処理方法を提供する。【解決手段】グリッドコンピューティングシステム１００において、計算機資源管理装置１は、資源提供計算機２の情報を記憶し、資源提供計算機２からジョブ割当リクエストを受信すると、計算機資源管理装置１の処理能力と資源提供計算機２の数とから、次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出し、計算機資源情報と割当ジョブから算出されるジョブ処理予測時間がリクエスト間隔を超えるように、資源提供計算機２にジョブを割り当てる。資源提供計算機２は割当られたジョブを実行した後、又はリクエスト間隔を経過した後に、計算機資源管理装置１との通信を再開して、ジョブ実行結果を計算機資源管理装置１に通信する。【選択図】図１
2007052506.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、
前記計算機資源管理装置は、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機から次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備え、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信する送信手段と、
前記計算機資源管理装置から割り当てられたジョブを受信する受信手段と、
前記割り当てられたジョブを実行するジョブ実行手段と、
割当られたジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信手段と、
を備える、
ことを特徴とするグリッドコンピューティングシステム。
【請求項２】
前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信し、
前記複数の計算機のジョブ実行結果通信手段は、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、
ことを特徴とする請求項１に記載のグリッドコンピューティングシステム。
【請求項３】
前記複数の計算機の送信手段は、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信し、
前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、
ことを特徴とする請求項１又は２に記載のグリッドコンピューティングシステム。
【請求項４】
ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置であって、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備えることを特徴とする計算機資源管理装置。
【請求項５】
前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともにリクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信する、
ことを特徴とする請求項４に記載の計算機資源管理装置。
【請求項６】
前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、
ことを特徴とする請求項４又は５に記載の計算機資源管理装置。
【請求項７】
ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおける分散処理方法であって、
前記計算機資源管理装置が、
前記複数の計算機の計算資源情報を取得する計算機資源取得ステップと、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信ステップと、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機のそれぞれに割り当てたジョブを記憶するジョブ割当記憶ステップと、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回のジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出するステップと、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測ステップと、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当ステップと、
を実行し、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信するリクエスト送信ステップと、
前記計算機資源管理装置から割り当てられたジョブを受信するジョブ受信ステップと、
前記割り当てられたジョブを実行するジョブ実行ステップと、
ジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信ステップと、
を実行する、
ことを特徴とするグリッドコンピューティングシステムの分散処理方法。
【請求項８】
前記計算機資源管理装置のジョブ割当ステップは、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信するステップを含み、
前記複数の計算機のジョブ実行結果通信ステップは、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、
ことを特徴とする請求項７に記載のグリッドコンピューティングシステムの分散処理方法。
【請求項９】
前記複数の計算機のリクエスト送信ステップは、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信するステップを含み、
前記計算機資源管理装置の計算機資源取得ステップは、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集するステップを含む、
ことを特徴とする請求項７又は８に記載のグリッドコンピューティングシステムの分散処理方法。
【請求項１０】
ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置としての機能をコンピュータに実行させるためのコンピュータプログラムであって、当該コンピュータを、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理予測手段、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当手段、
として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングに関する。
【背景技術】
【０００２】
バイオ、物理、設計、金融などの分野では、大量のデータを解析するために、複雑かつ膨大な量の計算処理を行わなければならない。このような計算処理を必要とする事業者は、処理性能の高いスーパーコンピュータを導入するか、スーパーコンピュータの代わりに多数のコンピュータを利用したグリッドコンピューティングを用いるか、あるいはこれらの設備を有する請負業者に計算処理を委託（アウトソーシング）する必要がある。
【０００３】
近年地理的に分散した複数のコンピュータをインターネットを介して接続し、コンピュータ資源をそれらの複数のコンピュータで共有して処理をすすめられるようにするグリッドコンピューティング技術の研究開発が盛んに行われ、高価なスーパーコンピュータが無くても複雑な計算やプログラムを短時間で実行できる技術として注目を集めている。
【０００４】
グリッドコンピューティング技術の一応用である分散コンピューティングシステムは、分散して処理を行うコンピュータを、容易に動的に追加することができる点に特徴がある。コンピュータの新規導入や、より高性能なコンピュータへの置き換えによって、分散コンピュータシステム全体の性能が向上する。
【０００５】
分散コンピューティングシステムでは多数のコンピュータ資源を活用して分散処理を行うことで、非常に高い計算能力を実現することができるが、そのためには多数のコンピュータを管理するための管理用コンピュータが必要になる。分散コンピューティングシステムは、多くの数のクライアントを有する、クライアント・サーバシステムとみなすことができる。
【０００６】
分散コンピューティングシステムにおいて負荷を分散するために、例えば、以下のような方法がある。特許文献１には、負荷分散モジュールは、サーバ能力データとクライアント能力データを比較して、サーバ及びクライアントの負荷の分散を決定する方法が記載されている。特許文献２には、サーバが処理可能なクライアント数を超えた場合には、アクセス情報に基づいて各クライアントの終了時刻を予想し、拒絶応答とともに次回リトライ時刻をクライアントに通知することによって、サーバの負荷を分散する方法が記載されている。特許文献３には、クライアントからサーバにデータを要求したとき、サーバの負荷が高くて要求されたデータを送信できない場合は、接続しているクライアント数と過去の統計的データから次にアクセスすべき時間を計算して、データを要求したクライアントに通知する方法が記載されている。
【０００７】
しかし、特許文献１では、クライアント及びサーバの処理能力にのみ着目しており、複数のクライアントがサーバにアクセスし、アクセスが集中することにより引き起こされるサーバの負荷に関する問題点は考慮されていない。また、特許文献２及び特許文献３では、既にサーバにアクセスが集中しており、クライアントがアクセスできない場合についての解決手段は開示されていない。このように、従来技術においては、クライアントの構成の変化に応じて、サーバが動的にクライアントによるアクセス負荷を制御する手法は提供されていなかった。
【０００８】
分散コンピューティングシステムは、処理能力を向上させるためにクライアント計算機の数の増減を動的に行えることを特徴としているが、クライアントの数や、クライアントに割り当てるジョブの計算量などに応じて、サーバ計算機の負荷が非常に大きく変化するので、実際に機能させるためには、分散コンピューティングシステムを構成するクライアント計算機の数を制限しなければならない。
【特許文献１】特開２００３−５８５１９号公報
【特許文献２】特開２００３−２０８４０１号公報
【特許文献３】特開平１１−８５６４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、上記事情に鑑みてなされたものであり、グリッドコンピューティング環境において、計算機とジョブを管理するサーバが負荷状況の制御を行うグリッドコンピューティングシステム、計算機資源管理装置、及び分散処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の第１の観点に係るグリッドコンピューティングシステムは、ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、
前記計算機資源管理装置は、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機から次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備え、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信する送信手段と、
前記計算機資源管理装置から割り当てられたジョブを受信する受信手段と、
前記割り当てられたジョブを実行するジョブ実行手段と、
割当られたジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信手段と、
を備える、ことを特徴とする。
【００１１】
特に、前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信し、
前記複数の計算機のジョブ実行結果通信手段は、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、
ことを特徴とする。
【００１２】
さらに、前記複数の計算機の送信手段は、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信し、
前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、
ことを特徴とする。
【００１３】
上記目的を達成するために、本発明の第２の観点に係る計算機資源管理装置は、ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置であって、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段と、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段と、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段と、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段と、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測手段と、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、ジョブ割当リクエストを送信した計算機にジョブを割り当てるジョブ割当手段と、
を備えることを特徴とする。
【００１４】
特に、前記計算機資源管理装置のジョブ割当手段は、ジョブ割当とともにリクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信する、ことを特徴とする。
【００１５】
さらに、前記計算機資源管理装置の計算機資源管理手段は、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集する、ことを特徴とする。
【００１６】
上記目的を達成するために、本発明の第３の観点に係る分散処理方法は、ネットワークを介して接続された複数の計算機の計算機資源を管理する計算機資源管理装置を備え、前記複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおける分散処理方法であって、
前記計算機資源管理装置が、
前記複数の計算機の計算資源情報を取得する計算機資源取得ステップと、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信ステップと、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機のそれぞれに割り当てたジョブを記憶するジョブ割当記憶ステップと、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回のジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出するステップと、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理時間予測ステップと、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当ステップと、
を実行し、
前記複数の計算機はそれぞれ、
前記計算機資源管理装置にジョブ割当リクエストを送信するリクエスト送信ステップと、
前記計算機資源管理装置から割り当てられたジョブを受信するジョブ受信ステップと、
前記割り当てられたジョブを実行するジョブ実行ステップと、
ジョブを実行した後に、前記計算機資源管理装置との通信を再開して、ジョブ実行結果を前記計算機資源管理装置に通信するジョブ実行結果通信ステップと、
を実行する、
ことを特徴とする。
【００１７】
特に、前記計算機資源管理装置のジョブ割当ステップは、ジョブ割当とともに前記リクエスト間隔を前記ジョブ割当リクエストを送信した計算機に送信するステップを含み、
前記複数の計算機のジョブ実行結果通信ステップは、前記リクエスト間隔を経過した後に、前記計算機資源管理装置との通信を再開する、ことを特徴とする。
【００１８】
さらに、前記複数の計算機のリクエスト送信ステップは、前記ジョブ割当リクエストを最初に送信する場合に、当該計算機の計算機資源情報を前記計算機資源管理装置に送信するステップを含み、
前記計算機資源管理装置の計算機資源取得ステップは、計算機から最初にジョブ割当リクエストを受信したときに、当該計算機から計算機資源情報を収集するステップを含む、ことを特徴とする
【００１９】
上記目的を達成するために、本発明の第４の観点に係るコンピュータプログラムは、ネットワークを介して接続された複数の計算機に並列処理を行わせるグリッドコンピューティングシステムにおいて、前記複数の計算機の計算機資源を管理する計算機資源管理装置としての機能をコンピュータに実行させるためのコンピュータプログラムであって、当該コンピュータを、
前記複数の計算機の計算資源情報を記憶する計算機資源管理手段、
前記複数の計算機からジョブ割当リクエストを受信するリクエスト受信手段、
前記ネットワークに接続された複数の計算機の数と、該複数の計算機に割り当てたジョブを記憶する計算機負荷管理手段、
前記計算機資源管理装置の処理能力と前記複数の計算機の数とから、前記複数の計算機の中のジョブ割当リクエストを送信した計算機からの次回ジョブ割当リクエストが受信可能になるまでの時間であるリクエスト間隔を算出する負荷算出手段、
前記計算機資源情報と割当ジョブから、前記複数の計算機におけるジョブ処理予測時間を算出する処理予測手段、
前記複数の計算機におけるジョブ処理予測時間が、前記リクエスト間隔を超えるように、現在通信している計算機にジョブを割り当てるジョブ割当手段、
として機能させることを特徴とする。
【発明の効果】
【００２０】
本発明により、分散コンピューティングシステムの負荷を自動的にコントロールすることが可能になり、小規模なサーバシステムで非常に多くの数の計算機資源を管理する分散コンピューティングシステムを構築することができる。
【００２１】
また、サーバ及び資源提供計算機の能力と、負荷となるジョブとが変化したときでも、可能な最大の能力を発揮することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の一実施の形態に係るグリッドコンピューティングシステムとその分散処理方法を、図面を参照して説明する。
【００２３】
本実施の形態に係るグリッドコンピューティングシステム１００は、図２に示すように、計算機資源管理装置１と、該計算機資源管理装置１にネットワーク３を介して接続された複数の資源提供計算機２とから構成されている。
【００２４】
計算機資源管理装置１は、このグリッドコンピューティングシステム１００が処理すべき仕事（プロセス）の一部を各資源提供計算機２に実行させ、実行結果を統合することにより、仕事（プロセス）を達成する計算機である。計算機資源管理装置１は、図１に示すように、スケジューリングプログラム１０１とサーバ状態監視プログラム１０２とを記憶し、計算機資源管理データベース１０３とジョブデータベース１０４とを備えている。
【００２５】
一方、資源提供計算機２は、このグリッドコンピューティングシステム１００に課された処理すべきプロセス（計算）を実行するためにハードウエア資源及びソフトウエア資源の全部又は一部を提供する計算機であり、図１に示すように、それぞれ、クライアント管理プログラム２０１と分散処理の実行プログラム２０２と、分散処理データ２０３とを記憶する。
【００２６】
計算機資源管理装置１と複数の資源提供計算機２とは、スケジューリングプログラム１０１とクライアント管理プログラム２０１がアップリンク３１およびダウンリンク３２によって通信を行う。
【００２７】
グリッドコンピューティングシステム１００では、処理すべき計算を、複数の資源提供計算機２で分散して行わせるために、適切な大きさに分割されており、その１単位をジョブと呼ぶ。
【００２８】
計算機資源管理装置１の計算機資源管理データベース１０３は、図５（ａ）、（ｂ）に示すように、各資源提供計算機２に関する情報及び計算機資源管理装置１の能力に関する情報を記憶する。
【００２９】
図５（ａ）に示すように、資源提供計算機２に関する情報としては、計算機の識別子（ＩＤ）と名称、その計算機が備えるＣＰＵの種類と動作周波数、ＯＳ（Operating System）、主記憶部のメモリ量、外部記憶部としてのディスク装置の記憶容量（ディスク容量）、提供できる資源の量（資源提供量）、資源提供状況統計、平均稼働率、ＣＰＵベンチマーク値、未処理ジョブ量、前回リクエストを受信した時刻、および指定したリクエスト間隔時間等の情報がある。ここで、計算機の識別子（ＩＤ）と名称は資源提供計算機２を特定する為の識別情報と名称である。ＣＰＵの種類と動作周波数はＣＰＵの名称及びバージョンと動作クロックの周波数を示す。ＯＳ（Operating System）はオペレーティングシステムの名称とバージョン情報等である。主記憶部のメモリ量は主記憶装置の記憶容量を意味する。ディスク容量はディスク装置の総容量である。資源提供量は総計算資源のうちのどの程度を提供できるかということであり、例えば、％などで表される。資源提供状況統計は、実際の資源の提供状況の統計情報である。平均稼働率は計算機の実際の平均稼働率である。ＣＰＵベンチマーク値はベンチマークテストの結果である。未処理ジョブ量は与えられたジョブのうちの未処理分の量である。前回リクエストを受信した時刻は、前回ジョブ要求リクエストを受信した時刻である。指定したリクエスト間隔時間は、計算機資源管理装置１が指定したジョブリクエスト発生間隔である。
【００３０】
図５（ｂ）に示すように、計算機資源管理装置１の能力に関する情報としては、平均サービス量、平均リクエスト到着間隔、平均応答時間、資源提供計算機数、などがある。平均サービス量は、この計算機資源管理装置１の計算機のサービス提供量の平均値である。平均リクエスト到着間隔はジョブリクエストの到達間隔の平均値である。平均応答時間は、ジョブリクエストを受信してから応答するまでの時間の平均値である。資源提供計算機数は資源を提供できる計算機の総数である。
【００３１】
計算機資源管理装置１のジョブデータベース１０４には計算処理要求と、各計算処理要求に応じた多数のジョブと、ジョブの割り当てに関する情報とが登録される。計算機資源管理装置１はジョブデータベース１０４に登録されているジョブを多数の資源提供計算機２に対して適当に割り当てて実行させ、その結果を収集して統合する。
【００３２】
ジョブの割当に関する情報としては、図５（ｃ）に示すように、ジョブＩＤ、処理状態、割当計算機ＩＤ、命令数（例えば、浮動小数点演算数 Floating-point operations）で計られるジョブの計算量、実行プログラムの名称と格納場所、処理データの名称と格納場所、ＣＰＵやＯＳなどの対応プラットフォーム、主記憶や外部記憶などの使用する資源量などがある。ジョブＩＤはジョブの識別情報である。ジョブ状態情報は、ジョブが未処理／処理中／済のいずれかであることを示す情報である。計算機ＩＤは、そのジョブを割り当てた計算機のＩＤである。ジョブの計算量は、命令数（例えば、浮動小数点演算数 Floating-point operations）で計られるジョブの計算量を示す。実行プログラムの名称と格納場所は実行すべきプログラムの識別情報と格納位置のアドレスである。処理データの名称と格納場所は、処理データの識別情報と格納場所のアドレスである。使用資源量は、ＣＰＵやＯＳなどの対応プラットフォーム、主記憶や外部記憶などが使用する資源量を示す。
【００３３】
計算機資源管理装置１のジョブ割当処理の性能は、登録されている資源提供計算機２やジョブの数、その他の状態に応じて変化する。このため、サーバ状態監視プログラム１０２がこれら（各資源提供計算機２が提供するハードウエア・ソフトウエア資源の能力、ジョブ数、ジョブの内容）を監視し、計算機資源管理データベース１０３の情報を更新する。
【００３４】
計算機資源管理装置１は、物理的には、図３に示すように、制御部１１、主記憶部１２、外部記憶部１３、入力部１４、表示部１５、送受信部１６及び印字部１７から構成される。主記憶部１２、外部記憶部１３、入力部１４、表示部１５、送受信部１６及び印字部１７はいずれも内部バス１０を介して制御部１１に接続されている。
【００３５】
制御部１１は、ＣＰＵ（Central Processing Unit）等から構成され、外部記憶部１３に記憶されているスケジューリングプログラム１０１及びサーバ状態監視プログラム１０２等を含む動作プログラムに従って、グリッドコンピューティングシステム１００の状態を監視し、ジョブのスケジューリングを決めて、資源提供計算機２に対してジョブの割当を実行する。
【００３６】
主記憶部１２はＲＡＭ（Random-Access Memory）等から構成され、制御部１１の作業領域として用いられる。
【００３７】
外部記憶部１３は、フラッシュメモリ、ハードディスク、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc Rewritable）等の不揮発性メモリから構成され、前記の処理を制御部１１に行わせるために、図１に示すスケジューリングプログラム１０１とサーバ状態監視プログラム１０２を含む動作プログラムを予め記憶する。制御部１１の指示に従って、このプログラムやそのほかプログラムが利用するデータを制御部１１に供給し、制御部１１から供給されたデータを記憶する。さらに、外部記憶部１３は、図１に示す計算機資源管理データベース１０３及びジョブデータベース１０４を含み、制御部１１の指示に従って、ジョブ割当を行うためのデータを供給する。
【００３８】
入力部１４はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス１０に接続するインターフェース装置から構成されている。入力部１４を介して、ジョブの情報、計算機資源管理データベース１０３の情報などが入力され制御部１１に供給される。
【００３９】
表示部１５は、ＣＲＴ（Cathode Ray Tube）またはＬＣＤ（Liquid Crystal Display）などから構成され、入力されたジョブの情報、計算機資源管理データベース１０３の内容、ジョブ割当の状況、グリッドコンピューティングシステム１００または計算機資源管理装置１の負荷状況などを表示する。
【００４０】
送受信部１６は、モデム又は網終端装置などと接続するシリアルインタフェース又はＬＡＮ（Local Area Network）インターフェースから構成されている。制御部１１は、送受信部１６を介して、資源提供計算機２からのジョブ割当リクエストおよび計算機資源情報、またはジョブ実行結果を受信し、資源提供計算機２にジョブ割当リプライの送信およびジョブのダウンロードを行う。
【００４１】
印字部１７は、プリンタとプリンタインターフェースから構成されている。印字部１７は、計算機資源管理データベース１０３の内容や、ジョブを実行した結果およびジョブを割り当てた履歴などを印字するために用いられる。
【００４２】
本実施の形態に係る資源提供計算機２は、物理的には、図４に示すように、制御部２１、主記憶部２２、外部記憶部２３、入力部２４、表示部２５、送受信部２６及び印字部２７から構成される。主記憶部２２、外部記憶部２３、入力部２４、表示部２５、送受信部２６及び印字部２７はいずれも内部バス２０を介して制御部２１に接続されている。
【００４３】
制御部２１はＣＰＵ（Central Processing Unit）等から構成され、外部記憶部２３に記憶されているプログラムに従って、ジョブ割当リクエスト、ジョブのダウンロード及び実行、ジョブ実行結果のアップロードなどを実行する。
【００４４】
主記憶部２２はＲＡＭ（Random-Access Memory）等から構成され、制御部２１の作業領域として用いられる。
【００４５】
外部記憶部２３は、フラッシュメモリ、ハードディスク、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc Rewritable）等の不揮発性メモリから構成され、前記の処理を制御部２１に行わせるためのプログラムを予め記憶し、また、制御部２１の指示に従って、このプログラムやそのほかプログラムが利用するデータを制御部２１に供給し、制御部２１から供給されたデータを記憶する。
【００４６】
入力部２４はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス２０に接続するインターフェース装置から構成されている。入力部２４を介して、計算機資源の提供の開始・終了、ジョブ実行履歴の参照命令などが入力され制御部２１に供給される。
【００４７】
表示部２５は、ＣＲＴ（Cathode Ray Tube）またはＬＣＤ（Liquid Crystal Display）などから構成され、割り当てられたジョブの情報、資源提供計算機の状態、ジョブ実行の状況などを表示する。
【００４８】
送受信部２６は、モデム又は網終端装置などと接続するシリアルインタフェース又はＬＡＮ（Local Area Network）インターフェースから構成されている。制御部２１は、送受信部２６を介して、計算機資源管理装置１にジョブ割当リクエストおよび計算機資源情報、またはジョブ実行結果を送信し、ジョブ割当リプライの受信およびジョブのダウンロードを行う。
【００４９】
印字部２７は、プリンタとプリンタインターフェースから構成されている。印字部２７は、ジョブを実行した結果およびジョブが割り当てられた履歴などを印字するために用いられる。
【００５０】
次に、図１に示す計算機資源管理装置１および資源提供計算機２の動作を、図５乃至図９を参照して説明する。なお、上述のように、計算機資源管理装置１の動作は、制御部１１が、主記憶部１２、外部記憶部１３、入力部１４、表示部１５、送受信部１６及び印字部１７、と協働して行う。また、資源提供計算機２の動作は、制御部２１が、主記憶部２２、外部記憶部２３、入力部２４、表示部２５、送受信部２６及び印字部２７、と協働して行う。
【００５１】
まず、前提として、各資源提供計算機２にはクライアント管理プログラム２０１がインストールされている。また、クライアント管理プログラム２０１（正確には、クライアント管理プログラムを実行する制御部２１）は、インストール時に、或いは定期的に、或いは操作者からの指示に応答して、資源提供計算機２の制御部２１、主記憶部２２の量などの構成情報やベンチマークテスト値を取得し、その情報、即ち、図５に示した資源提供計算機情報を、図６に示すように計算機資源管理装置１に送信する。計算機資源管理装置１は、送信された資源提供計算機情報を、計算機資源管理データベース１０３に登録する。
【００５２】
図６の例では、計算機情報は、計算機名がｃｌｉｅｎｔ０１、ＣＰＵがＩｎｔｅｌ（商標）社製Ｃｅｌｅｒｏｎ（商標）で、動作周波数が１０６６MHz、ＯＳがＷｉｎｄｏｗｓ２０００（登録商標）であり、主記憶のメモリ量が２５６Mbyte、ディスク容量が１０Gbyteなどである。計算機資源情報の登録は、以上の説明のように、資源提供計算機２へのジョブ割当とは別に、事前に（例えば、クライアント管理プログラム２０１のインストール時に、或いは定期的に、或いは操作者からの指示に応答して）行われてもよいが、ジョブ割当リクエスト時に行われてもよい。
【００５３】
計算機資源管理装置１は起動されると、図９に示すスケジューリング処理を開始し、任意の資源提供計算機２からのジョブ割り当てリクエスの受信を待機する。
一方、資源提供計算機２のクライアント管理プログラム２０１が起動されると、図９に示すクライアント管理処理を開始する。
【００５４】
資源提供計算機２のクライアント管理プログラム２０１は、送受信部２６を介して、計算機資源管理装置１のスケジューリングプログラム１０１と通信を行って、ジョブの割当リクエストを送信する（ステップＡ１）。
【００５５】
このジョブ割り当てリクエストは、図７に例示するように、資源の提供量、資源提供状況の統計、平均稼働率、ＣＰＵベンチマーク値、未処理ジョブ量などの現在の資源提供計算機２のステータスに関する情報を含む。図７の例では、資源提供計算機２の資源の提供量は８０、資源提供状況の統計値は３０００、平均稼働率は０．７、ＣＰＵベンチマーク値は３４１７０７０２ｆｌｏｐｓ、未処理ジョブ量は４０００秒である。
【００５６】
ジョブ割当リクエストを受信したスケジューリングプログラム１０１は、計算機資源管理データベース１０３を、ジョブ割り当てリクエストを送信した資源提供計算機２の名称によって検索して、ジョブ割当リクエストを送信してきた資源提供計算機２に関する情報を取得する（ステップＡ２）。その資源提供計算機２がデータベースに未登録である場合（初回リクエスト時）は、ジョブ割当リクエストに含まれている計算機に関する情報を計算機資源管理データベース１０３に登録する。
【００５７】
ジョブ割当リクエストを送信した資源提供計算機２の情報が計算機資源管理データベース１０３に登録されていない場合は、制御部１１は送受信部１６を介して、資源提供計算機２に必要な情報を問い合わせる。あるいは、ジョブ割当リクエストに資源提供計算機２の情報が添付されていて、その情報を取得すると同時に計算機資源管理データベース１０３に登録する。ジョブ割当リクエストを最初に送信したときに、その資源提供計算機２の情報を計算機資源管理データベース１０３に登録するようにすれば、資源提供計算機２をグリッドコンピューティングシステム１００に動的に追加することができる。
【００５８】
制御部１１は、そのときの計算機資源管理装置１の負荷状況を計算機資源管理データベース１０３に格納されている計算機資源管理装置に関する情報（図５（ｂ））に基づいて判別し、判別した負荷状況から、ジョブ割当リクエストを送信した資源提供計算機２から次回のジョブ割当リクエストを受信することが可能になるまでの時間であるリクエスト間隔を算出する（ステップＡ３）。
【００５９】
このリクエスト間隔は、例えば、平均応答時間×資源提供計算機数×安全係数から求めることができる。
ここで、平均応答時間は、計算機資源管理装置１が各リクエストを受信してから応答するまでの平均時間である。資源提供計算機数は資源提供計算機２の総数である。安全係数は、例えば、１以上の数であり、資源提供計算機数／リクエスト間隔＜計算機資源管理装置１の平均サービス量を達成するための係数である。
【００６０】
例えば、計算機資源管理装置１の平均サービス量（スループット）を２０［request/s]とすると、平均応答時間は、１／２０＝０．０５［ｓ］となる。
ここで、資源提供計算機２の総数が１００００台で、それぞれ１回ずつリクエストを送って来た場合には、それを処理するのに要する時間は０．０５×１００００＝５００［ｓ］となる。これにリクエストが同時に集中することを防ぐ目的で、安全係数を、例えば、１．０〜１．５の範囲内で例えばランダムに決定し、乗算値をリクエスト間隔とする。例えば、安全係数を１．２とすると、
リクエスト間隔＝０．０５［ｓ］×１００００×１．２＝６００［ｓ］＝１０［分］となる。
【００６１】
スケジューリングプログラム１０１は図５に示されているような、計算機資源管理データベース１０３の情報に基づいて、各計算機に以下の要領でジョブを割り当てる。
【００６２】
まず、現在登録されている資源提供計算機数と計算機資源管理装置１の平均サービス量から、資源提供計算機２のリクエスト間隔を
資源提供計算機数／リクエスト間隔  ＜  平均サービス量
を満たすように設定する。
【００６３】
次に、ジョブデータベース１０４から資源提供計算機２が利用を許可しているメモリ、ＨＤＤなどの資源量で処理が可能なジョブを選択して、その計算機に割り当てる（ステップＡ４）。また、そのジョブの処理予想時間を
ジョブ処理時間＝ジョブ計算量／ＣＰＵベンチマーク値・平均稼働率
という式で算出し、資源提供計算機２の割当ジョブ量に加算する。
これを
割当ジョブ量（処理時間）  ＞  リクエスト間隔
が満たされるまで繰り返す（ステップＡ５）。
【００６４】
すなわち、割り当てたジョブ量の処理時間がリクエスト間隔以下の場合は（ステップＡ５；ＮＯ）、さらにジョブを追加して割り当てる（ステップＡ４）。割当ジョブ量の処理時間がリクエスト間隔を越えたら（ステップＡ５；ＹＥＳ）、それらのジョブ割当情報をジョブ割当リプライとして資源提供計算機２に送信する（ステップＡ６）。ジョブ割当リプライには複数の割当ジョブが含まれうる。
【００６５】
ジョブ割当情報は、図８に例示するように、計算機資源管理装置１から資源提供計算機２への応答である、ジョブ割当リプライに含めて送信される（ステップＡ６）。
【００６６】
このジョブ割り当てリプライは、割り当てるジョブのＩＤ、そのジョブを実行するために予想される計算量、そのジョブを実行するためのプログラムの格納場所と名称、処理データの格納場所と名称、使用デスク容量、リクエスト間隔を含む。図８の例では、割り当てるジョブのＩＤは「３」、そのジョブを実行するために予想される計算量は４０００００００００００ｆｌｏｐ、そのジョブを実行するためのプログラムの格納場所はhttp://計算機資源管理装置でその名称はprogram3、処理データの格納場所はhttp://計算機資源管理装置でその名称はdata3、使用ディスク容量は１００００００バイト、リクエスト間隔は８６４００秒である。
【００６７】
資源提供計算機２の制御部２１は、ジョブ割当リプライを受信して（ステップＡ７）、このリプライ情報をファイルなどの形で保存しておく。資源提供計算機２はジョブ割当リプライの情報を元に、割り当てられた複数のジョブに必要な実行プログラム２０２、および分散処理データ２０３を計算機資源管理装置１からダウンロードする（ステップＡ８、ステップＡ９）。
【００６８】
資源提供計算機２のクライアント管理プログラム２０１は、制御部２１及び主記憶部２２などの資源を用いて、割り当てられたジョブを実行する（ステップＡ１０）。ジョブの実行が完了したら、制御部２１は送受信部２６を介して、ジョブ完了報告リクエストを計算機資源管理装置１に送信する（ステップＡ１１）。割当ジョブ量を処理する推定時間がリクエスト間隔より大きく設定されているので、ジョブ完了報告リクエストを送信したときに、多くの場合、計算機資源管理装置１はそれを受信することができる。計算機資源管理装置１は、ジョブ完了報告リクエストを受信して、計算機資源管理データベース１０３のジョブ情報と資源提供計算機２の情報を更新する（ステップＡ１２）。
【００６９】
計算機資源管理装置１の制御部１１が、ジョブ完了報告リプライを資源提供計算機２に送信する（ステップＡ１３）。資源提供計算機２は、ジョブ完了報告リプライを受信すると（ステップＡ１４）、完了したジョブの処理結果データを計算機資源管理装置１にアップロードする（ステップＡ１５、ステップＡ１６）。その後、ステップＡ１に戻って、新たなジョブ割当リクエストを送信する。
【００７０】
以上説明したように、計算機資源管理装置１では、負荷状況に応じて資源提供計算機２が計算機資源管理装置１にアクセスするリクエスト間隔を計算し、ジョブ処理時間がリクエスト間隔を越えるようにジョブを割り当てるので、ジョブ完了報告リクエストを送信するときに計算機資源管理装置１は、直ちに受信できる可能性が高い。その結果、資源提供計算機２にジョブ完了報告の待ち時間がなく、グリッドコンピューティングシステム１００全体で計算機資源が有効に利用される。資源提供計算機２の数が変動しても、その条件に応じた計算機資源管理装置１の負荷に合わせてリクエスト間隔が設定されるので、ジョブがあるにもかかわらず資源提供計算機２に空き時間が生じることがない。
【００７１】
次に、本実施の形態の変形として、リクエスト間隔を資源提供計算機２に通知し、資源提供計算機２はリクエスト間隔が経過してから、ジョブ完了報告リクエストを送信する場合の処理を説明する。図１０は、本発明の実施の形態に係るグリッドコンピューティングシステム１００の別の処理シーケンスを示すフローチャートである。
【００７２】
図１０において、ステップＡ１〜Ａ５，Ａ７、Ａ８、Ａ９、Ａ１１〜Ａ１６９は図９のステップＡ１〜Ａ５，Ａ７，Ａ８，Ａ９，Ａ１１〜Ａ１６と同様である。
一方、図９のフローチャートと異なる点として、ステップＢ１において、ステップＡ４で求められたジョブ割当情報に加えてステップＡ３で計算されたリクエスト間隔が、図８に示すように、ジョブ割当リプライに含めて送信される。
【００７３】
資源提供計算機２は、割り当てられたジョブの実行を開始すると、経過時間を計測するためのタイマを起動して、例えば１つのジョブの実行が完了するごとに、ジョブリクエスト間隔を経過したかどうか判断する（ステップＢ３）。計算機資源管理装置１から指示されたリクエスト間隔時間が経過している場合（ステップＢ３；ＹＥＳ）、計算機資源管理装置１に接続して、その時点までに完了しているジョブを報告する（ステップＡ１１〜Ａ１３）。リクエスト間隔が経過していない場合は（ステップＢ３；ＮＯ）、ジョブの実行を継続する。
【００７４】
そして、完了したジョブの処理結果データをアップロードする（ステップＡ１５，Ａ１６）。それと同時に、前回接続したときと同様に、ジョブ割当リクエストを行う（ステップＡ１）。計算機資源管理装置１は改めてリクエスト間隔を計算し（ステップＡ３）、
（未処理ジョブ量＋新規割当ジョブ量）  ＞  リクエスト間隔
となるまで追加のジョブを割り当てる（ステップＡ４，Ａ５）。
【００７５】
クライアント管理プログラム２０１が計算機資源管理装置１へのジョブ割当リクエスト又はジョブ完了報告リクエストを行った際に、応答が得られなかった場合は、クライアント管理プログラム２０１はサーバが過負荷状態にあるとみなして、未処理のジョブの実行を継続して行い、リクエスト間隔時間がもう一度経過した時点で、計算機資源管理装置１へのリクエストの送信を再度行う。この際、多数のクライアントプログラムが同じタイミングでリクエストを繰り返すことを防止するために、乱数などを用いて、リクエスト再試行時間に揺らぎを与えてもよい。
【００７６】
資源提供計算機２が、指示されたリクエスト間隔の後に計算機資源管理装置１に接続するので、実際のジョブの実行時間が実行予測時間と異なっても、リクエストを送信したときに計算機資源管理装置１が応答できない可能性が小さい。したがって、計算機資源管理装置１と資源提供計算機２の双方の待ち時間が減少され、グリッドコンピューティングシステム１００全体の効率が向上する。
【００７７】
本発明により、分散コンピューティングシステムの負荷を自動的にコントロールすることが可能になり、小規模なサーバシステムで非常に多くの数の計算機資源を管理する分散コンピューティングシステムを構築することができる。
【００７８】
この発明は上記実施の形態に限定されず、その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更及び修正が可能である。
【００７９】
計算機資源管理装置１および資源提供計算機２は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読みとり可能な記録媒体（フレキシブルディスク、CD-ROM、DVD-ROM等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する計算機資源管理装置１及び資源提供計算機２を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで本発明の計算機資源管理装置１及び資源提供計算機２を構成してもよい。
【００８０】
また、前記の各機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【００８１】
また、搬送波に上述のコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施の形態に係るグリッドコンピューティングシステムの機能の構成を示す概念図である。
【図２】本発明の実施の形態に係るグリッドコンピューティングシステムの全体を示す概念構成図である。
【図３】本発明の実施の形態に係る計算機資源管理装置の構成を示すブロック図である。
【図４】本発明の実施の形態に係る資源提供計算機の構成を示すブロック図である。
【図５】（ａ）と（ｂ）とは、計算機資源管理データベースの登録情報の一例を示す図、（ｃ）はジョブデータベースの登録情報の一例を示す図である。
【図６】資源提供計算機情報の一例を示す図である。
【図７】ジョブ割当リクエストの一例を示す図である。
【図８】ジョブ割当リプライの一例を示す図である。
【図９】本発明の実施の形態に係るグリッドコンピューティングシステムの処理シーケンスを示すフローチャートである。
【図１０】本発明の実施の形態に係るグリッドコンピューティングシステムの別の処理シーケンスを示すフローチャートである。
【符号の説明】
【００８３】
１  計算機資源管理装置
２  資源提供計算機
３  ネットワーク
１０、２０  内部バス
１１、２１  制御部
１２、２２  主記憶部
１３、２３  外部記憶部
１４、２４  入力部
１５、２５  表示部
１６、２６  送受信部
１７、２７  印字部
１００  グリッドコンピューティングシステム
【図１】
2007052506.tif 000003
【図２】
2007052506.tif 000004
【図３】
2007052506.tif 000005
【図４】
2007052506.tif 000006
【図５】
2007052506.tif 000007
【図６】
2007052506.tif 000008
【図７】
2007052506.tif 000009
【図８】
2007052506.tif 000010
【図９】
2007052506.tif 000011
【図１０】
2007052506.tif 000012