(57)【要約】【課題】分散処理システムにおいて、ソフトウェアの起動状態の変更に要する時間を考慮して、計算処理を割り当てる計算ノードを決定する【解決手段】ノード情報取得手段１ｂは、計算ノード２ａ，２ｂ，２ｃから起動中のソフトウェアを示す環境情報を継続的に取得し、ノード情報記憶手段１ａに格納する。要求受付手段１ｃは、実行に必要なソフトウェアを示す環境条件情報を含む処理要求３ａを受け付ける。ノード選択手段１ｄは、計算ノード２ａ，２ｂ，２ｃについて環境情報と環境条件情報とを比較し、新たなソフトウェアの起動が少ない計算ノードを、割り当て先として優先的に選択する。ノード制御手段１ｅは、選択された計算ノードを制御して、必要なソフトウェアを起動させ、その後、計算処理を実行させる。【選択図】図１
2008140120.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算ノードに分散して計算処理を割り当てる計算資源管理プログラムにおいて、
コンピュータを、
個々の前記計算ノードについて、前記計算ノードで起動中のソフトウェアを示す環境情報を記憶するノード情報記憶手段、
前記計算ノードから前記環境情報を継続的に取得して前記ノード情報記憶手段に格納するノード情報取得手段、
前記計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求の入力を受け付ける要求受付手段、
前記要求受付手段が前記処理要求を受け付けると、前記ノード情報記憶手段が記憶する個々の前記計算ノードについての最新の前記環境情報と前記環境条件情報とを比較して、新たに必要となるソフトウェアの起動処理が少ない前記計算ノードを、割り当て先の前記計算ノードとして優先的に選択するノード選択手段、
前記ノード選択手段が選択した前記計算ノードを制御して、前記環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には前記起動処理を実行させ、その後、前記処理要求に対応する前記計算処理を実行させるノード制御手段、
として機能させることを特徴とする計算資源管理プログラム。
【請求項２】
前記ノード情報記憶手段は、個々の前記計算ノードについて、前記計算ノードで実行中の前記計算処理を示す処理情報を更に記憶し、
前記ノード情報取得手段は、前記計算ノードから前記処理情報を継続的に取得して前記ノード情報記憶手段に格納すると共に、個々の前記計算ノードについて、ソフトウェアの起動状態が変更された変更時刻と前記計算処理が開始された開始時刻とを管理し、
前記ノード選択手段は、最新の前記変更時刻の直後に開始された前記計算処理が現在も実行中である前記計算ノードを、選択対象から除外する、
ことを特徴とする請求項１記載の計算資源管理プログラム。
【請求項３】
前記ノード情報記憶手段は、個々の前記計算ノードについて、前記計算ノードで実行中の前記計算処理を示す処理情報を更に記憶し、
前記ノード情報取得手段は、前記計算ノードから前記処理情報を継続的に取得して前記ノード情報記憶手段に格納すると共に、個々の前記計算ノードについて、ソフトウェアの起動状態が変更された変更時刻を管理し、
前記ノード選択手段は、最新の前記変更時刻から所定時間経過前であり、かつ、実行中の前記計算処理が存在する前記計算ノードを、選択対象から除外する、
ことを特徴とする請求項１記載の計算資源管理プログラム。
【請求項４】
前記ノード情報取得手段は、個々の前記計算ノードについて、ソフトウェアの起動状態が変更された変更時刻を管理し、
前記ノード選択手段は、最新の前記変更時刻から所定時間経過前であり、かつ、前記処理要求に対応する前記計算処理を実行するために前記起動処理が必要となる前記計算ノードを、選択対象から除外する、
ことを特徴とする請求項１記載の計算資源管理プログラム。
【請求項５】
複数の計算ノードに分散して計算処理を割り当てる計算資源管理装置において、
個々の前記計算ノードについて、前記計算ノードで起動中のソフトウェアを示す環境情報を記憶するノード情報記憶手段と、
前記計算ノードから前記環境情報を継続的に取得して前記ノード情報記憶手段に格納するノード情報取得手段と、
前記計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求の入力を受け付ける要求受付手段と、
前記要求受付手段が前記処理要求を受け付けると、前記ノード情報記憶手段が記憶する個々の前記計算ノードについての最新の前記環境情報と前記環境条件情報とを比較して、新たに必要となるソフトウェアの起動処理が少ない前記計算ノードを、割り当て先の前記計算ノードとして優先的に選択するノード選択手段と、
前記ノード選択手段が選択した前記計算ノードを制御して、前記環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には前記起動処理を実行させ、その後、前記処理要求に対応する前記計算処理を実行させるノード制御手段と、
を有することを特徴とする計算資源管理装置。
【請求項６】
複数のコンピュータに分散して計算処理を割り当てる分散処理システムにおいて、
ソフトウェアの起動処理で用いられる情報を記述した起動ファイルを記憶する起動ファイル記憶手段と、
前記起動処理の指示に応答して、前記起動ファイル記憶手段が記憶する前記起動ファイルを用いて指示された未起動のソフトウェアを起動すると共に、前記計算処理の指示に応答して、指示された前記計算処理を開始する計算実行手段と、
前記計算実行手段を継続的に監視して、起動中のソフトウェアを示す環境情報を収集する状態監視手段と、
を有する複数の計算ノードと、
前記計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求を所定のタイミングで発行する要求発行手段を有する業務コンピュータと、
個々の前記計算ノードについて前記環境情報を記憶するノード情報記憶手段と、
前記計算ノードから前記環境情報を継続的に取得して前記ノード情報記憶手段に格納するノード情報取得手段と、
前記業務コンピュータが発行した前記処理要求を受け付ける要求受付手段と、
前記要求受付手段が前記処理要求を受け付けると、前記ノード情報記憶手段が記憶する個々の前記計算ノードについての最新の前記環境情報と前記環境条件情報とを比較して、新たに必要となる前記起動処理が少ない前記計算ノードを、割り当て先の前記計算ノードとして優先的に選択するノード選択手段と、
前記ノード選択手段が選択した前記計算ノードを制御して、前記環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には前記起動処理を実行させ、その後、前記処理要求に対応する前記計算処理を実行させるノード制御手段と、
を有する管理コンピュータと、
を有することを特徴とする分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算資源管理プログラム、計算資源管理装置および分散処理システムに関し、特に複数の計算ノードに分散して計算処理を割り当てる計算資源管理プログラム、計算資源管理装置および分散処理システムに関する。
【背景技術】
【０００２】
近年、ハードウェア技術の発達により、コンピュータの高性能化・低廉化が急速に進んでいる。特に、単位コストあたりの処理性能の向上は、デスクトップＰＣ（Personal Computer）のような中小型のコンピュータにおいて顕著である。そこで、多数の低廉なコンピュータをネットワークで接続して、大型コンピュータに匹敵する処理性能を実現する分散処理システムが構築されている。異なる計算資源を備えるコンピュータを混合して構築した分散処理システムは、特にコンピュータグリッドと呼ばれる。
【０００３】
このような分散処理システムは、大型コンピュータと比べて低コストで構築することができる。また、システム構築後に必要に応じて処理性能を増強することも容易である。なお、分散処理システムにおいて、独立して計算処理を実行できるハードウェア資源の単位を、以降、計算ノードと呼ぶことにする。
【０００４】
ところで、分散処理システムで計算処理の実行効率を最大化するためには、計算処理のスケジューリング、すなわち、どの計算処理をどの計算ノードに割り当てるかの決定が重要となる。この点、従来の分散処理システムでは、システム管理者や利用者が各計算ノードでの計算処理の実行状況を調べて、事前に手作業で計算ノードを予約していた。しかし、手作業による予約は煩雑な作業であり、また、必ずしも実行効率が最大となるような割り当てが行われないという問題があった。
【０００５】
そこで、計算ノードを管理する管理コンピュータを設け、新たな計算処理の割り当て先を管理コンピュータが自動的に決定する技術が知られている。例えば、特許文献１に記載の技術では、管理コンピュータが各計算ノードの稼働状況を測定し、負荷の低い計算ノードに新たな計算処理を割り当てる。また、特許文献２に記載の技術では、新たな計算処理の予測実行時間と優先度とを更に考慮して、割り当て先の計算ノードを決定する。これにより、分散処理システムが備える処理性能を最大限に活用し、計算処理の実行効率を高めることが容易となる。
【特許文献１】特開２００５−１７４２０１号公報
【特許文献２】特開２００５−５６２０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１，２に記載の技術では、計算処理の開始前に必要な事前準備が考慮されていない。このため、計算処理の割り当て順序が不適切であるために、事前準備に要する時間の割合が高くなり、実行効率が低下するという問題がある。
【０００７】
ここで、事前準備とは、計算ノードにおけるソフトウェアの起動状態を変更する処理である。個々の計算処理は、実行に際して特定のソフトウェア（オペレーティングシステム（ＯＳ：Operating System）、応用ソフトウェア、ライブラリなど）を必要とすることが多い。割り当て先の計算ノードは、計算処理が必要とするソフトウェアが未起動の場合、事前準備として必要なソフトウェアを起動する必要がある。一方、計算処理が必要とするソフトウェアが全て起動済の場合、事前準備は必要ない。
【０００８】
このように、計算処理の実行効率を高める上で、各計算ノードで起動中のソフトウェアを考慮することが重要となる。上記の点は、同時に実行できない関係にあるソフトウェアが存在する場合に、特に重要となる。例えば、１つの計算ノードで同時に実行できるＯＳは一般に１つのみであるため、起動中のＯＳと異なるＯＳが必要になると、計算ノードはまず起動中のＯＳを終了しなければならない。ここで、ある計算ノードが、ＯＳ−１を必要とする計算処理Ａ，ＣとＯＳ−２を必要とする計算処理Ｂ，Ｄとを、Ａ，Ｂ，Ｃ，Ｄの順に実行すると、計算処理の実行の度にＯＳを切り替える必要があり、実行効率が著しく低下する。
【０００９】
本発明はこのような点に鑑みてなされたものであり、ソフトウェアの起動状態の変更に要する時間を考慮して、計算処理を割り当てる計算ノードを決定する計算資源管理プログラム、計算資源管理装置および分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明では上記課題を解決するために、図１に示すような計算資源管理プログラムが提供される。本発明に係る計算資源管理プログラムは、処理要求に応答して複数の計算ノードに分散して計算処理を割り当てるものである。この計算資源管理プログラムを実行する管理コンピュータ１は、ノード情報記憶手段１ａ、ノード情報取得手段１ｂ、要求受付手段１ｃ、ノード選択手段１ｄおよびノード制御手段１ｅを有する。ノード情報記憶手段１ａは、個々の計算ノード２ａ，２ｂ，２ｃについて、計算ノードで起動中のソフトウェアを示す環境情報を記憶する。ノード情報取得手段１ｂは、計算ノード２ａ，２ｂ，２ｃから環境情報を継続的に取得してノード情報記憶手段１ａに格納する。要求受付手段１ｃは、計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求３ａの入力を受け付ける。ノード選択手段１ｄは、要求受付手段１ｃが処理要求３ａを受け付けると、ノード情報記憶手段１ａが記憶する個々の計算ノード２ａ，２ｂ，２ｃについての最新の環境情報と環境条件情報とを比較して、新たに必要となるソフトウェアの起動処理が少ない計算ノードを、割り当て先の計算ノードとして優先的に選択する。ノード制御手段１ｅは、ノード選択手段１ｄが選択した計算ノードを制御して、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には起動処理を実行させ、その後、処理要求３ａに対応する計算処理を実行させる。
【００１１】
このような計算資源管理プログラムを実行する管理コンピュータ１によれば、ノード情報取得手段１ｂにより、計算ノード２ａ，２ｂ，２ｃから起動中のソフトウェアを示す環境情報が継続的に取得される。要求受付手段１ｃにより、計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求３ａが受け付けられる。ノード選択手段１ｄにより、個々の計算ノード２ａ，２ｂ，２ｃについての最新の環境情報と環境条件情報とが比較され、新たに必要となるソフトウェアの起動処理が少ない計算ノードが、割り当て先の計算ノードとして優先的に選択される。ノード制御手段１ｅにより、選択された計算ノードにおいて、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には起動処理が実行され、その後、処理要求３ａに対応する計算処理が実行されるように制御される。
【００１２】
また、上記課題を解決するために、複数の計算ノードに分散して計算処理を割り当てる計算資源管理装置において、個々の計算ノードについて、計算ノードで起動中のソフトウェアを示す環境情報を記憶するノード情報記憶手段と、計算ノードから環境情報を継続的に取得してノード情報記憶手段に格納するノード情報取得手段と、計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求の入力を受け付ける要求受付手段と、要求受付手段が処理要求を受け付けると、ノード情報記憶手段が記憶する個々の計算ノードについての最新の環境情報と環境条件情報とを比較して、新たに必要となるソフトウェアの起動処理が少ない計算ノードを、割り当て先の計算ノードとして優先的に選択するノード選択手段と、ノード選択手段が選択した計算ノードを制御して、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には起動処理を実行させ、その後、処理要求に対応する計算処理を実行させるノード制御手段と、を有することを特徴とする計算資源管理装置が提供される。
【００１３】
このような計算資源管理装置によれば、ノード情報取得手段により、計算ノードから起動中のソフトウェアを示す環境情報が継続的に取得される。要求受付手段により、計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求が受け付けられる。ノード選択手段により、個々の計算ノードについての最新の環境情報と環境条件情報とが比較され、新たに必要となるソフトウェアの起動処理が少ない計算ノードが、割り当て先の計算ノードとして優先的に選択される。ノード制御手段により、選択された計算ノードにおいて、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には起動処理が実行され、その後、処理要求に対応する計算処理が実行されるように制御される。
【００１４】
また、上記課題を解決するために、複数のコンピュータに分散して計算処理を割り当てる分散処理システムにおいて、ソフトウェアの起動処理で用いられる情報を記述した起動ファイルを記憶する起動ファイル記憶手段と、起動処理の指示に応答して、起動ファイル記憶手段が記憶する起動ファイルを用いて指示された未起動のソフトウェアを起動すると共に、計算処理の指示に応答して、指示された計算処理を開始する計算実行手段と、計算実行手段を継続的に監視して、起動中のソフトウェアを示す環境情報を収集する状態監視手段と、を有する複数の計算ノードと、計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求を所定のタイミングで発行する要求発行手段を有する業務コンピュータと、個々の計算ノードについて環境情報を記憶するノード情報記憶手段と、計算ノードから環境情報を継続的に取得してノード情報記憶手段に格納するノード情報取得手段と、業務コンピュータが発行した処理要求を受け付ける要求受付手段と、要求受付手段が処理要求を受け付けると、ノード情報記憶手段が記憶する個々の計算ノードについての最新の環境情報と環境条件情報とを比較して、新たに必要となる起動処理が少ない計算ノードを、割り当て先の計算ノードとして優先的に選択するノード選択手段と、ノード選択手段が選択した計算ノードを制御して、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には起動処理を実行させ、その後、処理要求に対応する計算処理を実行させるノード制御手段と、を有する管理コンピュータと、を有することを特徴とする分散処理システムが提供される。
【００１５】
このような分散処理システムによれば、個々の計算ノードの計算実行手段により、起動中のソフトウェアを示す環境情報が継続的に収集され、管理コンピュータのノード情報取得手段により、計算ノードから環境情報が継続的に取得される。業務コンピュータの要求発行手段により、計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求が発行される。管理コンピュータの要求受付手段により、発行された処理要求が受け付けられる。管理コンピュータのノード選択手段により、個々の計算ノードについての最新の環境情報と環境条件情報とが比較され、新たに必要となるソフトウェアの起動処理が少ない計算ノードが、割り当て先の計算ノードとして優先的に選択される。管理コンピュータのノード制御手段により、選択された計算ノードが制御され、制御対象の計算ノードの計算実行手段により、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には起動処理が実行され、その後、処理要求に対応する計算処理が実行される。
【発明の効果】
【００１６】
本発明では、個々の計算ノードから起動中のソフトウェアを示す環境情報を継続的に取得する共に、計算処理の実行に必要なソフトウェアを示す環境条件情報と環境情報とを比較して、新たに必要となる起動処理が少ない計算ノードを、その計算処理の割り当て先として優先的に選択することとした。これにより、ソフトウェアの起動状態の変更に要する時間を減少させ、計算処理の実行効率をより高めることができる。また、計算ノードの実質的な利用率をより向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して詳細に説明する。まず、本実施の形態の概要について説明し、その後、本実施の形態の具体的な内容を説明する。
図１は、本実施の形態の概要を示す図である。図１に示す管理コンピュータ１は、業務コンピュータ３が発行した処理要求３ａを受け付け、複数の計算ノード２ａ，２ｂ，２ｃに分散して計算処理を割り当てるものである。管理コンピュータ１は、ノード情報記憶手段１ａ、ノード情報取得手段１ｂ、要求受付手段１ｃ、ノード選択手段１ｄおよびノード制御手段１ｅを有する。
【００１８】
ノード情報記憶手段１ａは、計算ノード２ａ，２ｂ，２ｃの環境情報をそれぞれ記憶する。環境情報とは、各計算ノードで起動中のソフトウェアを示す情報である。環境情報には、例えば、起動中のＯＳ、応用ソフトウェア、ライブラリの名前が含まれる。なお、ソフトウェアが起動中であるとは、プログラムなどが主記憶に展開されて即時利用可能な状態にあることをいう。
【００１９】
ノード情報取得手段１ｂは、計算ノード２ａ，２ｂ，２ｃから環境情報を継続的に取得する。環境情報を取得する方法としては、ノード情報取得手段１ｂが計算ノード２ａ，２ｂ，２ｃにアクセスして環境情報を取得する能動的方法と、計算ノード２ａ，２ｂ，２ｃが環境情報を出力するのを待つ受動的方法とが考えられる。そして、ノード情報取得手段１ｂは、取得した環境情報をノード情報記憶手段１ａに格納する。
【００２０】
要求受付手段１ｃは、業務コンピュータ３が処理要求３ａを発行すると、発行された処理要求３ａを取得する。処理要求３ａには、計算処理の実行に必要なソフトウェアを示す環境条件情報が含まれる。
【００２１】
ノード選択手段１ｄは、要求受付手段１ｃが処理要求３ａを取得すると、ノード情報記憶手段１ａが記憶する環境情報を参照して、処理要求３ａに対応する計算処理を実行させる計算ノードを選択する。具体的には、ノード選択手段１ｄは、計算ノード２ａ，２ｂ，２ｃについての最新の環境情報と、処理要求３ａに含まれる環境条件情報とをそれぞれ比較する。そして、新たに必要となるソフトウェアの起動処理が少ない計算ノードを優先的に選択する。
【００２２】
ノード制御手段１ｅは、ノード選択手段１ｄが選択した計算ノードを制御して、処理要求３ａに対応する計算処理を開始させる。具体的には、ノード制御手段１ｅは、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には、まず、計算ノードに未起動のソフトウェアを起動させる。そして、起動処理が完了すると、ノード制御手段１ｅは、処理要求３ａに対応する計算処理を開始させる。
【００２３】
このような管理コンピュータ１によれば、ノード情報取得手段１ｂにより、計算ノード２ａ，２ｂ，２ｃから起動中のソフトウェアを示す環境情報が継続的に取得される。要求受付手段１ｃにより、計算処理の実行に必要なソフトウェアを示す環境条件情報を含む処理要求３ａが受け付けられる。ノード選択手段１ｄにより、個々の計算ノード２ａ，２ｂ，２ｃについての最新の環境情報と環境条件情報とが比較され、新たに必要となるソフトウェアの起動処理が少ない計算ノードが、割り当て先の計算ノードとして優先的に選択される。ノード制御手段１ｅにより、選択された計算ノードにおいて、環境条件情報が示すソフトウェアの少なくとも一部が未起動の場合には起動処理が実行され、その後、処理要求３ａに対応する計算処理が実行されるように制御される。
【００２４】
これにより、ソフトウェアの起動状態の変更に要する時間を減少させ、計算ノード２ａ，２ｂ，２ｃにおける計算処理の実行効率をより高めることができる。また、計算ノード２ａ，２ｂ，２ｃの実質的な利用率をより向上させることができる。
【００２５】
以下、本実施の形態を図面を参照して詳細に説明する。
図２は、本実施の形態のシステム構成を示す図である。本実施の形態に係る分散処理システムは、組織内に配置されたコンピュータが、遠隔地にあるコンピュータ群にネットワーク経由でアクセスし、ジョブの実行を依頼するものである。これにより、各組織は、必要に応じて組織外にある計算資源を利用することができ、間欠的に発生する大規模なジョブに備えて過剰な計算資源を保有する必要がなくなる。
【００２６】
図２に示す分散処理システムは、管理サーバ１００、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄ、業務サーバ３００，３００ａ、業務クライアント４００，４００ａ，４００ｂ，４００ｃおよびネットワーク２０で構成される。業務サーバ３００および業務クライアント４００，４００ａは、１つの組織内に配置されている。同様に、業務サーバ３００ａおよび業務クライアント４００ｂ，４００ｃも、１つの組織内に配置されている。
【００２７】
業務サーバ３００，３００ａは、ネットワーク２０を介して、管理サーバ１００および計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄと通信が可能である。また、管理サーバ１００は、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄと通信が可能である。業務クライアント４００，４００ａは、業務サーバ３００と通信が可能である。業務クライアント４００ｂ，４００ｃは、業務サーバ３００ａと通信が可能である。
【００２８】
管理サーバ１００は、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄを管理するコンピュータである。管理サーバ１００は、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄから、定期的に稼働状況の情報を受信する。また、管理サーバ１００は、業務サーバ３００，３００ａからジョブの実行依頼を示すジョブ要求を受信すると、各計算ノードの稼働状況を考慮して、ジョブを割り当てる計算ノードを決定する。
【００２９】
計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄは、指示されたジョブを実行するコンピュータである。計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄは、必要に応じて、ＯＳや応用ソフトウェア、ライブラリなどのソフトウェアの起動状態を変更する。また、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄは、定期的に、管理サーバ１００に稼働状況を報告する。
【００３０】
業務サーバ３００，３００ａは、それぞれの組織で日常の業務に使用されるコンピュータである。ここで、間欠的に必要となる大規模なジョブがある場合、業務サーバ３００，３００ａは、適切なタイミングで管理サーバ１００にジョブ要求を送信する。間欠的に必要となるジョブとは、例えば、月末に実行する決済処理などである。そして、業務サーバ３００，３００ａは、管理サーバ１００によって割り当てられた計算ノードにプログラムと入力データとを配置し、ジョブを実行させる。また、ジョブが終了した後、計算ノードから出力データを取得する。
【００３１】
業務クライアント４００，４００ａ，４００ｂ，４００ｃは、それぞれの組織に属する従業員が日常の業務で操作するコンピュータである。業務クライアント４００，４００ａは、従業員の操作入力に応答して業務サーバ３００にアクセスし、業務サーバ３００が保持するデータの参照および更新を行う。同様に、業務クライアント４００ｂ，４００ｃは、従業員の操作入力に応答して業務サーバ３００ａにアクセスし、業務サーバ３００ａが保持するデータの参照および更新を行う。
【００３２】
次に、管理サーバ１００、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄ、業務サーバ３００および業務クライアント４００，４００ａ，４００ｂ，４００ｃのハードウェア構成について説明する。
【００３３】
図３は、管理サーバのハードウェア構成を示す図である。管理サーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５および通信インタフェース１０６が接続されている。
【００３４】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳプログラムやアプリケーションプログラムが格納される。
【００３５】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。通信インタフェース１０６は、ネットワーク２０に接続されている。
【００３６】
計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄ、業務サーバ３００および業務クライアント４００，４００ａ，４００ｂ，４００ｃも、管理サーバ１００と同様のハードウェア構成によって実現できる。ただし、業務クライアント４００，４００ａ，４００ｂ，４００ｃは、ネットワーク２０とは接続されていない。
【００３７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、管理サーバ１００および計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄのモジュール構成について説明する。
【００３８】
図４は、管理サーバの機能を示すブロック図である。管理サーバ１００は、ノード情報記憶部１１０、ノード情報取得部１２０、要求受付部１３０、ノード選択部１４０およびノード制御部１５０を有する。ノード情報取得部１２０およびノード制御部１５０は、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄと通信が可能である。要求受付部１３０は、ネットワーク２０を介して、業務サーバ３００，３００ａと通信が可能である。
【００３９】
ノード情報記憶部１１０は、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄの稼働状況を示すノード情報を記憶する。ノード情報は、具体的には、ハードウェア構成を示す構成情報、ソフトウェアの起動状態を示す環境情報、ジョブの実行状況を示すジョブ情報で構成される。
【００４０】
ノード情報取得部１２０は、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄが送信した構成情報、環境情報、ジョブ情報を受信する。そして、ノード情報取得部１２０は、受信した情報に従って、ノード情報記憶部１１０が記憶するノード情報を逐次更新する。
【００４１】
要求受付部１３０は、業務サーバ３００，３００ａが送信したジョブ要求を受信する。ジョブ要求には、ジョブの実行条件を示す条件情報が含まれている。条件情報は、具体的には、ジョブが利用するハードウェアを示す構成条件情報、ジョブが利用するソフトウェアを示す環境条件情報、ジョブの重要度を示す重要度情報で構成される。
【００４２】
要求受付部１３０は、ジョブ要求を受信すると、条件情報をノード選択部１４０に通知する。ここで、ノード選択部１４０が計算ノードの選択に成功すると、要求受付部１３０は、選択された計算ノードの情報と環境条件情報とをノード制御部１５０に通知する。その後、ノード制御部１５０から準備完了の応答を受け取ると、要求受付部１３０は、ジョブ要求の送信元に割り当て先の計算ノードの情報を通知する。一方、ノード選択部１４０が計算ノードの選択に失敗すると、ジョブ要求の送信元にジョブの実行を拒否する旨を通知する。
【００４３】
ノード選択部１４０は、要求受付部１３０から条件情報を取得すると、ノード情報記憶部１１０が記憶するノード情報を参照して、ジョブを割り当てる計算ノードの選択を試みる。なお、選択される計算ノードは、実行中のジョブがない計算ノードが優先される。また、環境条件の合致度が高い計算ノードが優先される。計算ノードの選択方法については、後で詳細に説明する。そして、ノード選択部１４０は、計算ノードの選択に成功した場合、選択した計算ノードの情報を要求受付部１３０に通知する。一方、計算ノードの選択に失敗した場合、その旨を要求受付部１３０に通知する。
【００４４】
なお、ジョブ要求で、必要な計算ノードの個数が指定されることがある。この場合、ノード選択部１４０は、指定された個数の計算ノードを確保できる場合は選択成功と判断し、１個でも指定された個数に足らない場合は選択失敗と判断する。
【００４５】
ノード制御部１５０は、要求受付部１３０から計算ノードの情報と環境条件情報とを受け取ると、指定された計算ノードに環境条件情報を送信する。そして、送信先の計算ノードから準備完了通知を受け取ると、準備完了通知を要求受付部１３０に転送する。
【００４６】
図５は、計算ノードの機能を示すブロック図である。計算ノード２００は、起動ファイル記憶部２１０、一時ファイル記憶部２２０、命令受付部２３０、計算実行部２４０および状態監視部２５０を有する。命令受付部２３０および状態監視部２５０は、管理サーバ１００と通信が可能である。また、命令受付部２３０は、業務サーバ３００，３００ａと通信が可能である。
【００４７】
起動ファイル記憶部２１０は、ソフトウェアを起動するために必要な起動ファイルを記憶する。起動ファイルには、ＯＳや応用ソフトウェアのプログラムファイルや、ソフトウェアの初期状態を定義した設定ファイルなどが含まれる。
【００４８】
一時ファイル記憶部２２０は、ジョブの実行に必要なユーザ定義のプログラムおよび入力データを記憶する。また、計算実行部２４０がジョブの実行途中で随時出力する中間データや、実行結果として出力する出力データも記憶する。
【００４９】
命令受付部２３０は、管理サーバ１００から環境条件情報を受信すると、受信した環境条件情報を計算実行部２４０に通知する。また、命令受付部２３０は、業務サーバ３００，３００ａからユーザ定義のプログラムおよび入力データを受信すると、受け取ったプログラムおよび入力データを一時ファイル記憶部２２０に格納し、その後、計算実行部２４０にジョブの開始を指示する。また、業務サーバ３００，３００ａから出力データの取得要求を受信すると、一時ファイル記憶部２２０から対応する出力データを取得し、要求元の業務サーバに送信する。
【００５０】
計算実行部２４０は、命令受付部２３０から環境条件情報を受け取ると、起動中のソフトウェアと環境条件情報が示すソフトウェアとを比較し、新たに起動する必要があるソフトウェアを特定する。そして、計算実行部２４０は、起動する必要があるソフトウェアに対応する起動ファイルを起動ファイル記憶部２１０から取得し、起動処理を実行する。なお、新たなソフトウェアの起動に際し、現在起動中のソフトウェアの少なくとも一部を終了する必要がある場合、計算実行部２４０は、先に終了の処理を行う。
【００５１】
また、計算実行部２４０は、命令受付部２３０からジョブの開始が指示されると、一時ファイル記憶部２２０から対応するプログラムおよび入力データを取得し、ジョブを実行する。計算実行部２４０は、ジョブの実行途中で出力する中間データや、実行結果として出力する出力データを、一時ファイル記憶部２２０に随時格納する。なお、実行中のジョブがあるときに新たなジョブの開始が指示されると、計算実行部２４０は、実行中のジョブに関するデータを一時ファイル記憶部２２０に退避させて、新たなジョブを開始する。
【００５２】
状態監視部２５０は、計算ノード２００の電源がオフからオンになると、最初に、計算ノード２００のハードウェア構成を調べて、管理サーバ１００に構成情報を送信する。また、状態監視部２５０は、計算実行部２４０を継続的に監視し、管理サーバ１００に環境情報とジョブ情報とを定期的に送信する。例えば、２分間隔で環境情報とジョブ情報とを送信する。
【００５３】
計算ノード２００ａ，２００ｂ，２００ｃ，２００ｄも、計算ノード２００と同様のモジュール構成によって実現できる。
次に、管理サーバ１００のノード情報記憶部１１０が記憶するノード情報のデータ構造について説明する。ノード情報記憶部１１０には、構成情報テーブル１１１、環境情報テーブル１１２およびジョブ情報テーブル１１３が格納されている。
【００５４】
図６は、構成情報テーブルのデータ構造例を示す図である。構成情報テーブル１１１には、各計算ノードの構成情報がそれぞれ関連付けられてテーブル化されて格納されている。構成情報テーブル１１１には、ノード名を示す項目１１１ａ、ＩＰアドレスを示す項目１１１ｂ、ＣＰＵを示す項目１１１ｃおよびＲＡＭを示す項目１１１ｄが設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、構成情報を構成する。
【００５５】
項目１１１ａには、予め各計算ノードに付与されている一意なノード名が設定される。項目１１１ｂには、予め各計算ノードに割り当てられているＩＰ（Internet Protocol）アドレスが設定される。項目１１１ｃには、計算ノードが備えるＣＰＵの種類名が設定される。なお、計算ノードが複数のＣＰＵを備える場合には、それぞれのＣＰＵの種類名がカンマ（“，”）区切りで設定される。項目１１１ｄには、計算ノードが備えるＲＡＭの記憶容量が設定される。
【００５６】
構成情報テーブル１１１に格納された構成情報は、ノード情報取得部１２０によって適宜更新される。例えば、計算ノード２００について、ノード名が“Ｎｏｄｅ１”、ＩＰアドレスが“１９２．１６８．１０．１”、ＣＰＵが“ＣＰＵ−Ｖ３  １．０ＧＨｚ”、ＲＡＭが“１．０ＧＢ”という情報が格納される。
【００５７】
図７は、環境情報テーブルのデータ構造例を示す図である。環境情報テーブル１１２には、各計算ノードの環境情報がそれぞれ関連付けられてテーブル化されて格納されている。環境情報テーブル１１２には、ノード名を示す項目１１２ａ、ＯＳを示す項目１１２ｂ、応用ソフトウェアを示す項目１１２ｃ、ライブラリを示す項目１１２ｄおよび変更時刻を示す項目１１２ｅが設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、環境情報を構成する。
【００５８】
項目１１２ａには、計算ノードのノード名が設定される。項目１１２ｂには、計算ノードで起動中のＯＳの名称が設定される。項目１１２ｃには、計算ノードで起動中の応用ソフトウェアの名称が設定される。計算ノードで複数の応用ソフトウェアが起動中の場合には、それぞれの名称がカンマ区切りで設定される。項目１１２ｄには、計算ノードで起動中のライブラリの名称が設定される。計算ノードで複数のライブラリが起動中の場合には、それぞれの名称がカンマ区切りで設定される。項目１１２ｅには、ソフトウェアの起動状態の変更が完了した時刻が設定される。
【００５９】
環境情報テーブル１１２に格納された環境情報は、ノード情報取得部１２０によって適宜更新される。例えば、計算ノード２００について、ノード名が“Ｎｏｄｅ１”、ＯＳが“ＯＳ−Ｗ  Ｖ１０”、応用ソフトウェアが“画像通信”、ライブラリが“画像解析”、変更時刻が“２００６／１１／３  １０：１１”という情報が格納される。
【００６０】
なお、変更時刻は、各計算ノードが変更を検知し、検知した時刻をノード情報取得部１２０に報告するようにしてもよいし、ノード情報取得部１２０が各計算ノードから送信される情報に基づいて変更を検知し、検知した時刻を変更時刻とするようにしてもよい。
【００６１】
図８は、ジョブ情報テーブルのデータ構造例を示す図である。ジョブ情報テーブル１１３には、各計算ノードのジョブ情報がそれぞれ関連付けられてテーブル化されて格納されている。ジョブ情報テーブル１１３には、ノード名を示す項目１１３ａ、プログラム名を示す項目１１３ｂ、重要度を示す項目１１３ｃおよび開始時刻を示す項目１１３ｄが設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、ジョブ情報を構成する。
【００６２】
項目１１３ａには、計算ノードのノード名が設定される。項目１１３ｂには、計算ノードで実行中のジョブの名称が設定される。実行中のジョブがない場合は空欄となる。項目１１３ｃには、計算ノードで実行中のジョブの重要度を示す数値が設定される。“５”が最も重要度が高く、“１”が最も重要度が低いことを意味する。実行中のジョブがない場合は空欄となる。項目１１３ｄには、計算ノードで実行中のジョブの開始時刻が設定される。実行中のジョブがない場合は空欄となる。
【００６３】
ジョブ情報テーブル１１３に格納されたジョブ情報は、ノード情報取得部１２０によって適宜更新される。例えば、計算ノード２００について、ノード名が“Ｎｏｄｅ１”、プログラム名が“ｃｌａｓｓｉｆｉｃａｔｉｏｎ．ｅｘｅ”、重要度が“３”、開始時刻が“２００６／１１／３  １０：１１”という情報が格納される。
【００６４】
なお、開始時刻は、各計算ノードがジョブの開始を検知し、検知した時刻をノード情報取得部１２０に報告するようにしてもよいし、ノード情報取得部１２０が各計算ノードから送信される情報に基づいてジョブの開始を検知し、検知した時刻を開始時刻とするようにしてもよい。
【００６５】
次に、以上のような構成およびデータ構造のシステムにおいて実行される処理の詳細を説明する。
最初に、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄが、構成情報、環境情報およびジョブ情報を収集し管理サーバ１００に送信する処理について説明する。
【００６６】
図９は、状態監視処理の手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。なお、ここでは計算ノード２００が情報を送信する場合について説明するが、計算ノード２００ａ，２００ｂ，２００ｃ，２００ｄの場合も同様の処理が実行される。
【００６７】
［ステップＳ１１］状態監視部２５０は、計算ノード２００の電源がオンになると、計算ノード２００のハードウェア構成を調べて、構成情報を収集する。
［ステップＳ１２］状態監視部２５０は、ステップＳ１１で収集した構成情報を、管理サーバ１００のノード情報取得部１２０に送信する。
【００６８】
［ステップＳ１３］ノード情報取得部１２０は、受信した構成情報に従って、ノード情報記憶部１１０に格納された構成情報テーブル１１１を更新する。
［ステップＳ１４］状態監視部２５０は、計算実行部２４０におけるソフトウェアの起動状態を調べて、環境情報を収集する。
【００６９】
［ステップＳ１５］状態監視部２５０は、計算実行部２４０におけるジョブの実行状況を調べて、ジョブ情報を収集する。
［ステップＳ１６］状態監視部２５０は、ステップＳ１４で収集した環境情報と、ステップＳ１５で収集したジョブ情報とを、管理サーバ１００のノード情報取得部１２０に送信する。
【００７０】
［ステップＳ１７］ノード情報取得部１２０は、受信した環境情報に従って、ノード情報記憶部１１０に格納された環境情報テーブル１１２を更新する。また、ノード情報取得部１２０は、受信したジョブ情報に従って、ノード情報記憶部１１０に格納されたジョブ情報テーブル１１３を更新する。
【００７１】
［ステップＳ１８］状態監視部２５０は、予め設定された時間だけ待つ。
［ステップＳ１９］状態監視部２５０は、計算ノード２００が電源をオフにしようとしているか否か判断する。電源をオフにしようとしている場合、処理が終了する。電源をオフにしようとしていない場合、処理がステップＳ１４に進められる。
【００７２】
このようにして、計算ノード２００の状態監視部２５０は、電源がオンになった時点で、管理サーバ１００のノード情報取得部１２０に構成情報を送信する。また、状態監視部２５０は、計算実行部２４０を監視し、ノード情報取得部１２０に定期的に環境情報およびジョブ情報を送信する。
【００７３】
次に、業務サーバ３００が管理サーバ１００にジョブ要求を送信し、１つ以上の計算ノードでジョブを実行させる処理について説明する。
図１０は、ジョブ実行処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。なお、ここでは業務サーバ３００がジョブ要求を送信し、計算ノード２００が選択される場合について説明する。業務サーバ３００ａがジョブ要求を送信する場合、および、計算ノード２００ａ，２００ｂ，２００ｃ，２００ｄが選択される場合も同様の処理が実行される。
【００７４】
［ステップＳ２１］業務サーバ３００は、実行させるジョブの構成条件、環境条件および重要度を特定する。そして、業務サーバ３００は、特定した内容を示す条件情報を含むジョブ要求を、管理サーバ１００の要求受付部１３０に送信する。
【００７５】
［ステップＳ２２］要求受付部１３０は、受信したジョブ要求に含まれる条件情報を、ノード選択部１４０に通知する。ノード選択部１４０は、ノード情報記憶部１１０から計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄのノード情報を取得する。
【００７６】
［ステップＳ２３］ノード選択部１４０は、ステップＳ２２で受け取った条件情報と取得したノード情報とを照合して、ジョブを割り当てる計算ノードの選択を試みる。必要な計算ノードの個数が指定されている場合には、指定された個数の計算ノードの選択を試みる。計算ノードの選択方法は、後で詳細に説明する。
【００７７】
［ステップＳ２４］ノード選択部１４０は、ステップＳ２３で計算ノードの選択に成功したか否か判断する。選択に成功した場合には、処理がステップＳ２７に進められる。選択に失敗した場合には、処理がステップＳ２５に進められる。
【００７８】
［ステップＳ２５］ノード選択部１４０は、計算ノードの選択に失敗した旨を、要求受付部１３０に通知する。要求受付部１３０は、ジョブの実行を拒否する旨を業務サーバ３００に通知する。
【００７９】
［ステップＳ２６］業務サーバ３００は、ジョブを発行する準備を中断し、予め設定された時間だけ待つ。その後、処理がステップＳ２１に進められる。
［ステップＳ２７］ノード選択部１４０は、ステップＳ２３で選択した全ての計算ノードのＩＰアドレスを、要求受付部１３０に通知する。要求受付部１３０は、受け取ったＩＰアドレスとステップＳ２２で取得した条件情報の一部である環境条件情報とを、ノード制御部１５０に通知する。ノード制御部１５０は、ＩＰアドレスで示される計算ノードに対して、環境条件情報を送信する（ここでは、ステップＳ２３で計算ノード２００が選択されたものとする）。
【００８０】
［ステップＳ２８］命令受付部２３０は、受信した環境条件情報を計算実行部２４０に通知する。計算実行部２４０は、ソフトウェアの現在の起動状態と受け取った環境条件情報とを比較し、新たな起動が必要なソフトウェアを特定する。そして、計算実行部２４０は、起動ファイル記憶部２１０から対応する起動ファイルを取得し、特定したソフトウェアの起動処理を実行する。
【００８１】
［ステップＳ２９］命令受付部２３０は、計算実行部２４０で起動処理が完了すると、管理サーバ１００のノード制御部１５０に準備完了通知を送信する。
［ステップＳ３０］ノード制御部１５０は、ステップＳ２７で環境条件情報を送信した全ての計算ノードから準備完了通知を受け取ると、要求受付部１３０に準備完了通知を転送する。要求受付部１３０は、ステップＳ２７で受け取ったＩＰアドレスの一覧を、業務サーバ３００に通知する。
【００８２】
［ステップＳ３１］業務サーバ３００は、ＩＰアドレスの一覧を受け取る（ここでは、計算ノード２００が指定されているものとする）。そして、ジョブの実行に必要なプログラムおよび入力データのファイルを特定する。
【００８３】
［ステップＳ３２］業務サーバ３００は、ステップＳ３１で特定したプログラムおよび入力データを、計算ノード２００の命令受付部２３０に送信する。このとき、業務サーバ３００は、併せてジョブの重要度を指定する。
【００８４】
［ステップＳ３３］命令受付部２３０は、受信したプログラムおよび入力データを一時ファイル記憶部２２０に格納する。そして、命令受付部２３０は、ジョブの重要度を指定して、計算実行部２４０にジョブの開始を指示する。
【００８５】
このようにして、業務サーバ３００は、まず管理サーバ１００にジョブ要求を送信する。管理サーバ１００は、計算ノードの選択を試み、選択に成功した場合には選択した計算ノードに環境条件を通知し、選択に失敗した場合にはその旨を業務サーバに応答する。計算ノードは、指示された環境条件に従ってソフトウェアの起動状態を変更する。そして、計算ノードで準備が完了すると、管理サーバ１００が業務サーバ３００に割り当て先の計算ノードを通知する。業務サーバ３００は、割り当てられた計算ノードにジョブの実行を依頼する。
【００８６】
ここで、上記ステップＳ２３で実行される計算ノードの選択処理について詳細に説明する。
図１１は、ノード選択処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００８７】
［ステップＳ２３ａ］ノード選択部１４０は、各計算ノードの構成情報と条件情報の一部である構成条件情報とをそれぞれ比較し、構成条件情報が示すハードウェア構成を備えていない計算ノードを選択対象から除外する。
【００８８】
［ステップＳ２３ｂ］ノード選択部１４０は、残っている計算ノードの環境情報およびジョブ情報と条件情報の一部である環境条件情報とに基づいて、所定の条件に合致する選択不可能な計算ノードを特定する。そして、ノード選択部１４０は、特定した計算ノードを選択対象から除外する。選択不可能な計算ノードの特定方法は、後で詳細に説明する。
【００８９】
［ステップＳ２３ｃ］ノード選択部１４０は、残っている計算ノードが１つ以上存在するか否か判断する。存在する場合には、処理がステップＳ２３ｄに進められる。存在しない場合には、計算ノードの選択に失敗したと判断し、処理が終了する。
【００９０】
［ステップＳ２３ｄ］ノード選択部１４０は、残っている各計算ノードのジョブ情報を参照して、ジョブを実行していない計算ノードが存在するか否か判断する。存在する場合には、処理がステップＳ２３ｅに進められる。存在しない場合には、処理がステップＳ２３ｆに進められる。
【００９１】
［ステップＳ２３ｅ］ノード選択部１４０は、ジョブを実行中の計算ノードを選択対象から除外する。
［ステップＳ２３ｆ］ノード選択部１４０は、残っている各計算ノードのジョブ情報と条件情報の一部である重要度情報とをそれぞれ比較し、実行中のジョブの重要度が実行しようとするジョブの重要度以上である計算ノードを選択対象から除外する。
【００９２】
［ステップＳ２３ｇ］ノード選択部１４０は、残っている計算ノードが１つ以上存在するか否か判断する。存在する場合には、処理がステップＳ２３ｈに進められる。存在しない場合には、計算ノードの選択に失敗したと判断し、処理が終了する。
【００９３】
［ステップＳ２３ｈ］ノード選択部１４０は、残っている各計算ノードの環境情報と環境条件情報とをそれぞれ比較し、環境条件情報が示すソフトウェアのうち未起動のソフトウェアの個数が少ない計算ノードを選択する。
【００９４】
なお、上記ステップＳ２３ｈで、単にソフトウェアの個数で判断するのではなく、ソフトウェアの種類に応じて重み付けをして判断するようにしてもよい。例えば、起動処理に要する時間が大きいＯＳの重みを大きくすることが考えられる。
【００９５】
このようにして、ノード選択部１４０は、まず、ハードウェア構成が指定条件と合致する計算ノードを絞り込む。次に、ノード選択部１４０は、実行中のジョブがない計算ノードを絞り込む。全ての計算ノードでジョブが実行中の場合は、ジョブの重要度が低い計算ノードを絞り込む。そして、ノード選択部１４０は、ソフトウェアの起動状態が指定条件により近い計算ノードを選択する。
【００９６】
例えば、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄが、図６〜８に示した状態にあるとする。“Ｎｏｄｅ１”が計算ノード２００、“Ｎｏｄｅ２”が計算ノード２００ａ、“Ｎｏｄｅ３”が計算ノード２００ｂ、“Ｎｏｄｅ４”が計算ノード２００ｃ、“Ｎｏｄｅ５”が計算ノード２００ｄにそれぞれ対応する。そして、業務サーバ３００から、“ＲＡＭが２．０ＧＢ以上、ＯＳがＯＳ−Ｗ  Ｖ１０以降のバージョン”という条件のジョブ要求が与えられたとする。
【００９７】
この場合、ノード選択部１４０は、“ＲＡＭが２．０ＧＢ以上”という構成条件から、計算ノード２００ａ，２００ｂ，２００ｃ，２００ｄに絞り込む。次に、ノード選択部１４０は、実行中のジョブが存在するか否かに基づいて、計算ノード２００ａ，２００ｄに絞り込む。そして、ノード選択部１４０は、“ＯＳ−Ｗ  Ｖ１０以降のバージョン”という環境条件から、計算ノード２００ａに絞り込む。この結果、計算ノード２００ａがジョブの割り当て先として選択される。
【００９８】
次に、上記ステップＳ２３ｂで選択不可能な計算ノードを特定する方法について詳細に説明する。
計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄは、実行中のジョブがある場合でも、重要度が高い新たなジョブを割り込ませることを許可する。このため、ジョブ要求で指定されるソフトウェアの種類が多様であると、ソフトウェアの起動処理が頻繁に発生し、実行効率が低下するおそれがある。そこで、ジョブの割り込みや起動状態の変更について、一定の制限を設けるようにする。
【００９９】
以下、選択不可能な計算ノードを特定する方法として、５つの例を示す。管理者は、ジョブ要求の受信状況を考慮して適用する特定方法を選択し、予めノード選択部１４０に設定しておく。
【０１００】
図１２は、計算ノードの選択不可期間を示す第１の図である。
第１の方法は、起動状態の変更直後に開始したジョブが実行中の間は、ジョブの割り込みを許可しない方法である。例えば、図１２のジョブＡは、起動状態の変更直後に開始したジョブであるため、ジョブＡが終了するまでの間は他のジョブによる割り込みは行われない。
【０１０１】
一方、起動状態の変更を伴わないジョブは、実行途中で他のジョブに割り込まれる可能性がある。例えば、図１２のジョブＢは、起動状態の変更を伴わないジョブであり、ジョブＢが終了する前にジョブＣに割り込まれている。
【０１０２】
第１の方法は、起動状態の変更を伴うジョブを確実に終了させることができる。第１の方法は、特に、ジョブ要求が多いために割り込みが発生する可能性が高く、かつ、個々のジョブの実行時間が極度に長くなることがない状況で、ジョブの実行効率をより向上させることができる。
【０１０３】
図１３は、計算ノードの選択不可期間を示す第２の図である。
第２の方法は、起動状態の変更が完了してから所定時間経過するまでは、ジョブの割り込みを許可しない方法である。例えば、図１３のジョブＡおよびジョブＢは、起動状態の変更が完了してから所定時間経過前に終了しているため、割り込みは行われていない。
【０１０４】
一方、起動状態の変更が完了してから所定時間経過すると、ジョブの割り込みが発生する可能性がある。例えば、ジョブＣは、所定時間経過前に開始したジョブであるが、所定時間経過後も終了しておらず、ジョブＤに割り込まれている。
【０１０５】
なお、所定時間は、管理者が予め固定の時間を決めておいてもよいし、起動処理に要した時間に比例させるようにしてもよい。また、起動したソフトウェアの種類に応じて時間を決定するようにしてもよい。所定時間は、例えば、３時間程度になるようにする。
【０１０６】
第２の方法は、起動状態の変更を伴うジョブを、実行時間が所定時間以内であることを条件として、確実に終了させることができる。第２の方法は、特に、ジョブ要求が多いために割り込みが発生する可能性が高く、かつ、実行時間が長いジョブと短いジョブとが混在している状況で、ジョブの実行効率をより向上させることができる。
【０１０７】
図１４は、計算ノードの選択不可期間を示す第３の図である。
第３の方法は、起動状態の変更直後に開始したジョブが実行中の間はジョブの割り込みを許可せず、起動状態の変更が完了してから所定時間経過するまでもジョブの割り込みを許可しない方法である。例えば、図１４のジョブＡは、起動状態の変更が完了してから所定時間経過後も終了していないが、起動状態の変更直後に開始したジョブであるため、ジョブＡが終了するまでは割り込みは行われない。
【０１０８】
一方、起動状態の変更を伴わないジョブであって、起動状態の変更が完了してから所定時間経過後も終了していないジョブは、実行途中で他のジョブに割り込まれる可能性がある。例えば、図１４のジョブＢは、所定時間経過後にジョブＡに続いて開始したジョブであり、ジョブＣによって割り込まれている。
【０１０９】
なお、所定時間は第２の方法と同様、管理者が予め固定の時間を決めておいてもよいし、起動処理に要した時間に比例させるようにしてもよい。また、起動したソフトウェアの種類に応じて時間を決定するようにしてもよい。
【０１１０】
第３の方法は、起動状態の変更を伴うジョブを確実に終了させることができる。また、起動状態の変更を伴うジョブの実行時間が短い場合には、所定時間経過前までは他のジョブも確実に終了させることができる。第３の方法は、特に、ジョブ要求が多いために割り込みが発生する可能性が高く、かつ、実行時間のばらつきが大きい状況で、ジョブの実行効率をより向上させることができる。
【０１１１】
図１５は、計算ノードの選択不可期間を示す第４の図である。
第４の方法は、起動状態の変更が完了してから所定時間経過するまでは、起動状態の変更を伴うジョブの開始を許可しない方法である。ただし、起動状態の変更を伴わないジョブによる割り込みは許可される。例えば、図１５のジョブＢは、起動状態の変更を伴わないジョブであるため、起動状態の変更が完了してから所定時間経過前であってもジョブＡに割り込んでいる。仮に、ジョブＢが起動状態の変更を伴うジョブである場合は、このような割り込みは認められない。
【０１１２】
一方、起動状態の変更が完了してから所定時間経過すると、起動処理が行われる可能性がある。例えば、図１５のジョブＣは、所定時間経過後に開始するジョブであり、起動処理が行われている。
【０１１３】
なお、所定時間は第２の方法と同様、管理者が予め固定の時間を決めておいてもよいし、起動処理に要した時間に比例させるようにしてもよい。また、起動したソフトウェアの種類に応じて時間を決定するようにしてもよい。
【０１１４】
第４の方法は、起動処理が頻繁に発生して計算ノードの実質的な利用効率が低下することを直接的に防止できる。第４の方法は、特に、ジョブ要求が比較的少ないために割り込みが発生する可能性が低く、かつ、個々のジョブの実行時間が比較的短い状況で、ジョブの実行効率をより向上させることができる。
【０１１５】
図１６は、計算ノードの選択不可期間を示す第５の図である。
第５の方法は、起動状態の変更が完了してから所定時間経過するまでは、起動状態の変更を伴うジョブの開始も、ジョブの割り込みも許可しない方法である。例えば、図１６のジョブＡは、起動状態の変更が完了してから所定時間経過までに終了しているため、他のジョブによって割り込まれていない。また、ジョブＢは、起動状態の変更を伴わないジョブであるため、ジョブＡの終了に続いて開始されている。
【０１１６】
一方、起動状態の変更が完了してから所定時間経過すると、起動処理もジョブの割り込みも行われる可能性がある。例えば、図１６のジョブＣは、所定時間経過後に開始するジョブであり、ジョブＢに割り込んでいる。
【０１１７】
なお、所定時間は第２の方法と同様、管理者が予め固定の時間を決めておいてもよいし、起動処理に要した時間に比例させるようにしてもよい。また、起動したソフトウェアの種類に応じて時間を決定するようにしてもよい。
【０１１８】
第５の方法は、起動処理が頻繁に発生して計算ノードの実質的な利用効率が低下することを直接的に防止できる。また、割り込みが頻繁に発生してジョブの実行効率が低下することも直接的に防止できる。第５の方法は、特に、ジョブ要求が多いために割り込みが発生する可能性が高く、かつ、個々のジョブの実行時間が比較的短い状況で、ジョブの実行効率をより向上させることができる。
【０１１９】
このような分散処理システムを用いることで、ソフトウェアの起動状態の変更に要する時間を減少させ、ジョブの実行効率をより高めることができる。また、計算ノードの実質的な利用率をより向上させることができる。従って、多数のジョブ要求を集中的に受け付けて処理する共有システムとして利用する場合に、特に有効となる。
【０１２０】
なお、本実施の形態では、計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄが管理サーバ１００に定期的に環境情報とジョブ情報とを送信するようにしたが、逆に、管理サーバ１００が定期的に計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄにアクセスするようにしてもよい。
【０１２１】
また、本実施の形態では、１つの計算ノードで同時に実行できるジョブを１つとしたが、同時に複数のジョブを実行できるようにしてもよい。この場合、実行中のジョブの有無だけでなく、ＣＰＵの負荷も考慮して、割り当て先の計算ノードを選択するようにすればよい。
【０１２２】
以上、本発明の計算資源管理プログラム、計算資源管理装置および分散処理システムを図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。また、本発明は、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１２３】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、管理サーバ１００および計算ノード２００，２００ａ，２００ｂ，２００ｃ，２００ｄが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどが挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などが挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などが挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）などが挙げられる。
【０１２４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２５】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【０１２６】
【図１】本実施の形態の概要を示す図である。
【図２】本実施の形態のシステム構成を示す図である。
【図３】管理サーバのハードウェア構成を示す図である。
【図４】管理サーバの機能を示すブロック図である。
【図５】計算ノードの機能を示すブロック図である。
【図６】構成情報テーブルのデータ構造例を示す図である。
【図７】環境情報テーブルのデータ構造例を示す図である。
【図８】ジョブ情報テーブルのデータ構造例を示す図である。
【図９】状態監視処理の手順を示すフローチャートである。
【図１０】ジョブ実行処理の手順を示すフローチャートである。
【図１１】ノード選択処理の手順を示すフローチャートである。
【図１２】計算ノードの選択不可期間を示す第１の図である。
【図１３】計算ノードの選択不可期間を示す第２の図である。
【図１４】計算ノードの選択不可期間を示す第３の図である。
【図１５】計算ノードの選択不可期間を示す第４の図である。
【図１６】計算ノードの選択不可期間を示す第５の図である。
【符号の説明】
【０１２７】
１  管理コンピュータ
１ａ  ノード情報記憶手段
１ｂ  ノード情報取得手段
１ｃ  要求受付手段
１ｄ  ノード選択手段
１ｅ  ノード制御手段
２ａ，２ｂ，２ｃ  計算ノード
３  業務コンピュータ
３ａ  処理要求
【図１】
2008140120.tif 000003
【図２】
2008140120.tif 000004
【図３】
2008140120.tif 000005
【図４】
2008140120.tif 000006
【図５】
2008140120.tif 000007
【図６】
2008140120.tif 000008
【図７】
2008140120.tif 000009
【図８】
2008140120.tif 000010
【図９】
2008140120.tif 000011
【図１０】
2008140120.tif 000012
【図１１】
2008140120.tif 000013
【図１２】
2008140120.tif 000014
【図１３】
2008140120.tif 000015
【図１４】
2008140120.tif 000016
【図１５】
2008140120.tif 000017
【図１６】
2008140120.tif 000018