(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を取得するネットワーク管理情報取得ステップと、
１つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得する並列数取得ステップと、
１つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該１つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記１つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記１つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する決定ステップ
を実行させるプログラム。
【請求項２】
前記プログラムは、前記複数の計算サーバがそれぞれ設置された場所と複数の空調設備がそれぞれ設置された場所に応じて前記複数の計算サーバを前記複数の空調設備のいずれかと対応づける空調設備対応づけ情報を取得する空調設備対応づけ情報取得ステップをさらに前記コンピュータに実行させ、
前記評価値は、１つのジョブを異なる空調設備に対応づけられた計算サーバに割り当てるよりも、当該１つのジョブを同じ空調設備に対応づけられた計算サーバに割り当てることを高く評価するものであり、
前記決定ステップでは、前記割り当てパターンの決定にあたり、さらに前記空調設備対応づけ情報も用いられる、
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記複数の計算サーバのうち、前記決定ステップで決定した前記割り当てパターンにおいて前記１つ以上のジョブのいずれかが割り当てられた計算サーバであるジョブ実行計算サーバに対し、第１の設定を表す設定ファイルを送付する第１の送付ステップと、
前記複数の計算サーバのうち、前記ジョブ実行計算サーバ以外の計算サーバであるジョブ非実行計算サーバに対し、前記第１の設定とは異なる第２の設定を表す設定ファイルを送付する第２の送付ステップと、
をさらに前記コンピュータに実行させることを特徴とする請求項１または２に記載のプログラム。
【請求項４】
前記複数の空調設備のそれぞれについて、前記空調設備対応づけ情報において当該空調設備に対応づけられている計算サーバのうち、前記決定ステップで決定した前記割り当てパターンにおいていずれかのジョブが割り当てられている計算サーバの数に応じて、当該空調設備を制御する空調制御ステップを
さらに前記コンピュータに実行させることを特徴とする請求項２に記載のプログラム。
【請求項５】
前記ネットワークは、１つのスイッチに接続される１つ以上の計算サーバを１つの構成単位とする
ことを特徴とする請求項１から４のいずれか１項に記載のプログラム。
【請求項６】
前記決定ステップは、
前記１つ以上のジョブの順列を表すジョブパターンを複数作成するジョブパターン作成ステップ、
前記ジョブパターン作成ステップで作成した前記ジョブパターンの各々についての、
当該ジョブパターン内での並び順にしたがって前記１つ以上のジョブについて順次、前記複数の計算サーバの中で所定の基準による順序が先になる計算サーバを優先して、当該ジョブの前記並列数分の計算サーバに当該ジョブを対応づけることで、当該ジョブパターンにしたがった割り当てパターンを求める対応づけステップおよび
前記対応づけステップで求めた前記割り当てパターンについての前記総合評価値を、前記ネットワーク管理情報を用いて算出する評価ステップ、ならびに
複数の前記ジョブパターンに対応する複数の前記割り当てパターンのうち、前記評価ステップで算出した前記総合評価値が相対的に高い割り当てパターンを選択する選択ステップ
を含むことを特徴とする請求項１から５のいずれか１項に記載のプログラム。
【請求項７】
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を記憶する記憶手段と、
１つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得する並列数取得手段と、
１つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該１つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記１つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記１つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する決定手段と
を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブの割り当て方を決定する技術に関する。
【背景技術】
【０００２】
近年、クラスタリング、分散コンピューティング、グリッドコンピューティングなど、広義の並列コンピューティングに該当する各種技術の利用が広まりつつあり、様々な観点からの研究開発も進められている。並列コンピューティングに関する観点の１つは、例えば、「各ジョブをいくつのプロセッサ（または、どのプロセッサ）に割り当てるのが好ましいか」といった、割り当て方に関するものである。
【０００３】
他方で、マルチタスクの動作環境では、走行させるプログラムの要求性能を満足する範囲において、必要最低限のCentral Processing Unit（ＣＰＵ）の動作クロックに自動的に切り替えて消費電力を節約する制御装置が知られている。
【０００４】
ここで、消費電力という判断基準は、マルチタスクの動作環境での制御に利用可能なだけでなく、並列コンピューティングにおけるジョブの割り当てにも利用可能である。
例えば、Personal Computer（ＰＣ）クラスタリングシステムにおいて、外部条件を考慮したジョブスケジューリングを行うサーバが知られている。当該サーバは、外部条件に基づいてジョブスケジューリングを行い、ＰＣクラスタリングシステムの各ＰＣに投入するプログラムを調節するか、または、各ＰＣの電源のＯＮ／ＯＦＦを制御する。
【０００５】
具体的には、当該サーバは、利用者端末より投入されたプログラムに対してジョブスケジューリングを行うジョブスケジューリング手段と、消費電力センサ、室温センサより取得した外部条件をジョブスケジューリング手段に通知する外部状況通知手段を含む。そして、当該サーバは、運用管理者端末より入力された外部条件に関する制御ポリシーを登録する制御ポリシー登録手段も有する。
【０００６】
また、コンピュータシステムの消費電力が、予め設定した許容電力値を上回るケースには、システム自体のデータ処理動作を止めずに、システムの消費電力が設定消費電力値を超えないようにすることを目的として、次のようなコンピュータシステムも提案されている。
【０００７】
コンピュータシステムの電源供給部に設けた電流計測装置により、コンピュータシステムに供給される電源電流がリアルタイムに測定される。その測定により、消費電力が算出される。すると、コンピュータシステムは、算出された消費電力を予め設定された低消費電力化ポリシー上の基準消費電力値と比較する。
【０００８】
そして、比較結果が、低消費電力化手段を適用する条件に該当する場合、コンピュータシステムは、自らが持つ複数の低消費電力手段を段階的に適用することにより、コンピュータシステムで消費される電力を、システム管理者が設定する許容電力値以内に抑える。具体的には、例えば、使用消費電力を低減させる機能として、ノード強制停止機能があってもよい。
【０００９】
さらに、ジョブ実行装置がジョブを実行する際に使用する複数の機器の電源を制御する電源制御装置において、ジョブ実行中に電源が断とならないようにするとともに、無駄な電力消費を抑えることを目的とした、次のような技術も提案されている。
【００１０】
すなわち、電源制御時間帯の開始時刻において、実行予定ジョブ表作成手段が、その時点で実行中のジョブのジョブ名および実行が予定されているジョブのジョブ名を、そのジョブが使用する電源制御対象機器に対応する実行予定ジョブ表に登録しておく。そして、実行予定ジョブ表更新手段は、ジョブ実行手段でジョブが終了するごとに、終了したジョブのジョブ名を、実行予定ジョブ表から削除する。また、電源断判定手段は、登録ジョブ名の数が０になった実行予定ジョブ表が発生すると、その実行予定ジョブ表に対応する電源制御対象機器に対して電源切断命令を発行する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平８−７６８７４号公報
【特許文献２】特開２００７−７２７６８号公報
【特許文献３】特開２００７−２３３８９４号公報
【特許文献４】特開２００６−３０１９０７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
１つまたは複数のジョブを複数の計算サーバに割り当てる割り当て方として複数のパターンがありうる場合、何らかの観点から見て複数のパターンの中で相対的に良い割り当て方を選ぶことが好ましい。例えば、観点の一例は消費電力である。
【００１３】
また、「１つのジョブが複数の計算サーバにより実行されることも珍しくない」という点を考慮に入れると、割り当て方を決める際に配慮することが好ましい観点として、次のようなものも考えられる。
【００１４】
すなわち、ジョブの割り当て方を決める際には、「同じジョブに割り当てられる複数の計算サーバは、並列コンピューティングに適した組み合わせか否か」という観点を配慮することが好ましい。そして、並列コンピューティングへの適合性の尺度の１つとして、具体的には通信環境の均一性が挙げられる。
【００１５】
つまり、同じジョブに割り当てられる複数の計算サーバ間での通信環境の均一性が高いほど、当該複数の計算サーバ間での通信時間の対称性も高く、当該複数の計算サーバは並列コンピューティングに適した組み合わせである。
【００１６】
そこで本発明は、通信環境の均一性という観点から見て並列コンピューティングに適した組み合わせの計算サーバが、優先的に同じジョブに割り当てられるようにすることを目的とする。
【課題を解決するための手段】
【００１７】
一態様によるプログラムは、コンピュータに、ネットワーク管理情報取得ステップと、並列数取得ステップと、決定ステップを実行させる。
前記ネットワーク管理情報取得ステップは、複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を取得するステップである。また、前記並列数取得ステップは、１つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得するステップである。
【００１８】
そして、前記決定ステップは、１つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該１つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記１つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記１つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定するステップである。
【発明の効果】
【００１９】
１つのジョブが同じ構成単位に属する計算サーバのみに割り当てられていれば、通信環境という観点から見て、１つのジョブを実行する計算サーバ間の関係は均一である。このような均一性は、計算サーバ間の通信の時間の対称性を高めるので、並列コンピューティングに好適である。
【００２０】
そして、上記の評価値を使う上記のプログラムによれば、構成単位をまたがない割り当てパターンの方が、高く評価される。よって、上記のプログラムによる決定にしたがってジョブの割り当てを行うことで、通信環境の均一性という観点から見て並列コンピューティングに適した組み合わせの計算サーバが優先的に同じジョブに割り当てられる。
【図面の簡単な説明】
【００２１】
【図１】本実施形態が適用される環境の例を示す図である。
【図２】運用管理装置の構成を各種情報とともに示す図である。
【図３Ａ】本実施形態で用いる各種情報の例を示す図（その１）である。
【図３Ｂ】本実施形態で用いる各種情報の例を示す図（その２）である。
【図３Ｃ】本実施形態で用いる各種情報の例を示す図（その３）である。
【図４】割り当て・予約処理のフローチャートである。
【図５Ａ】実行中ジョブの確認・予測処理のフローチャート（その１）である。
【図５Ｂ】実行中ジョブの確認・予測処理のフローチャート（その２）である。
【図６Ａ】実行候補ジョブ選択処理のフローチャート（その１）である。
【図６Ｂ】実行候補ジョブ選択処理のフローチャート（その２）である。
【図６Ｃ】実行候補ジョブ選択処理において行われる経過中確保可能空きＰＣ時間算出処理のフローチャートである。
【図７Ａ】ＰＣ決定処理のフローチャート（その１）である。
【図７Ｂ】ＰＣ決定処理のフローチャート（その２）である。
【図７Ｃ】ＰＣ決定処理のフローチャート（その３）である。
【図８Ａ】再配置処理のフローチャート（その１）である。
【図８Ｂ】再配置処理のフローチャート（その２）である。
【図８Ｃ】再配置処理のフローチャート（その３）である。
【図８Ｄ】再配置処理における前処理のフローチャートである。
【図８Ｅ】再配置処理において再配置先と再配置元の候補を求める処理のフローチャートである。
【図８Ｆ】再配置処理においてジョブ選択情報を求める処理のフローチャートである。
【図８Ｇ】再配置処理において再配置元と再配置先のＰＣを対応づける処理のフローチャートである。
【図８Ｈ】再配置処理において可能と判明した再配置の仕方を記憶する処理のフローチャートである。
【図９】予約設定処理のフローチャートである。
【図１０】ＰＣ起動処理のフローチャートである。
【発明を実施するための形態】
【００２２】
以下、実施形態について、図面を参照しながら次の順序で詳細に説明する。すなわち、まず本明細書で使ういくつかの用語について説明し、続いて、図１を参照して、実施形態が適用される環境の具体例を説明する。その後、図１の環境への適用を具体例として挙げながら、実施形態の詳細について図２〜１０を参照しつつ説明し、最後に他の実施形態についても説明する。
【００２３】
さて、まずここで、本明細書で使う「計算サーバ」、「グリッド」および「割り当て」という用語について説明する。
広義の並列コンピューティングにおいて、並列に処理を実行する複数の主体の各々は、１つのプロセッサ内の個々のコア、個々のプロセッサ、１つ以上のプロセッサを備える個々のコンピュータなどである。これらの主体は「ノード」とも呼ばれるが、以下、本明細書では「計算サーバ」と呼ぶことにする。
【００２４】
なお、「計算サーバ」は「サーバ」という語を含むが、業務用の高性能コンピュータを含意するわけではない。「計算サーバ」は任意のコンピュータでよく、例えばＰＣでもよい。
【００２５】
「計算サーバ」という名称における「サーバ」という語は、ジョブの実行を要求するクライアントに対して、サービスを提供することを意味する。換言すれば、「計算サーバ」は、クライアントに対して計算資源（コンピューティングリソース）を提供し、クライアントから要求された処理を行う。
【００２６】
なお、以下では主に１つのＰＣが１つの計算サーバの単位として使われる場合を例にして説明するが、実施形態によっては、コンピュータ内の個々のプロセッサまたは個々のコアを１つの計算サーバとして扱って管理してもよい。
【００２７】
また、グリッドコンピューティングは、インターネットなどの広域ネットワーク上のコンピュータを使って行われることも多い。しかし、本明細書における「グリッド」という語は、必ずしも「広域」を含意するわけではなく、計算サーバが配置されているネットワークの広さは任意である。
【００２８】
例えば、後述の図１に例示する環境では、グリッドコンピューティングシステムの計算サーバとして使われる複数のＰＣは、すべて同じ１つのイントラネットに含まれる。つまり、図１のグリッドコンピューティングシステムは、１つのイントラネットに閉じた分散コンピューティングシステムである。
【００２９】
また、１つまたは複数のジョブと複数の計算サーバがあるとき、ジョブと計算サーバの対応づけに関して、本明細書では、「ジョブを計算サーバに割り当てる」のように表現することもあるし、「計算サーバをジョブに割り当てる」のように表現することもある。すなわち、ジョブと計算サーバを対応づけることは、ある１つのジョブに注目すれば「当該ジョブを１つ以上の計算サーバに割り当てる」と表現可能であり、ある１つの計算サーバに注目すれば「当該計算サーバをあるジョブに割り当てる」とも表現可能である。
【００３０】
特に混乱のおそれはないので、以下、本明細書では「ジョブを計算サーバに割り当てる」のような言い方と「計算サーバをジョブに割り当てる」のような言い方を混在させて説明する。また、より簡便に「ジョブの割り当て先の計算サーバ」のような表現を用いることもある。
【００３１】
また、以下では、ジョブの割り当てに関して表現の煩雑さを避けるために、文脈から明らかな場合は、実際の割り当てと、割り当ての予約と、試行錯誤中の暫定的な割り当てについて、単に「割り当てる」とだけ表現することがある。
【００３２】
続いて、図１を参照して、本実施形態が適用される環境の例について説明する。本実施形態による運用管理装置１００は、グリッドコンピューティングシステム（以下単に「システム」という）１０１の運用を管理する装置であり、汎用的なコンピュータ（つまり情報処理装置）により実現することができる。
【００３３】
詳しくは後述するが、システム１０１は大学等の教育研究機関で運用される。システム１０１は、具体的には、図１に示すように、教室Ｒａ、ＲｂおよびＲｃの３つの部屋にまたがって分散配置された４８台のＰＣを計算サーバとして含む。運用管理装置１００は、ネットワークを介して管理対象の各ＰＣと接続されている。
【００３４】
具体的には、図１の例では、運用管理装置１００はスイッチ１０２に接続され、スイッチ１０２はルータ１０３に接続されている。また、ルータ１０３には、ネットワーク１０４を介して端末機１０５が接続されている。
【００３５】
ネットワーク１０４は、例えば、Local Area Network（ＬＡＮ）、Wide Area Network（ＷＡＮ）、インターネット、計算サーバ用インターコネクトなどの任意のネットワークであってよい。端末機１０５は、ワークステーションやＰＣなどの任意のコンピュータである。端末機１０５には、システム１０１にジョブを実行させるための要求がユーザから入力される。
【００３６】
また、ルータ１０３にはさらに、教室Ｒａ内のスイッチＳａ１と、教室Ｒｂ内のスイッチＳｂ１と、教室Ｒｃ内のスイッチＳｃ１が接続されている。そして、スイッチＳａ１は同じ教室Ｒａ内のスイッチＳａ２に接続されている。また、スイッチＳｃ１は同じ教室Ｒｃ内のスイッチＳｃ２に接続されており、スイッチＳｃ２にはさらに、同じ教室Ｒｃ内のスイッチＳｃ３も接続されている。
【００３７】
なお、スイッチ１０２、Ｓａ１、Ｓａ２、Ｓｂ１、Ｓｃ１、Ｓｃ２およびＳｃ３の各々は、本実施形態ではレイヤ２（Ｌ２）スイッチである。実施形態によってはレイヤ３（Ｌ３）スイッチが使われてもよい。
【００３８】
以下では説明の便宜上、ジョブを実行させるために端末機１０５に入力される要求が、所定のパラメタを引数として持つ所定のコマンド（以下「ジョブ投入コマンド」という）の形であるとする。ジョブ投入コマンドは、引数とともに、ネットワーク１０４、ルータ１０３およびスイッチ１０２を介して、端末機１０５から運用管理装置１００へと送信される。運用管理装置１００は、受け付けたジョブ投入コマンドに基づいて、ジョブの割り当てなどの処理を行う。
【００３９】
また、スイッチＳａ１には、教室Ｒａ内に設置された８台のＰＣ・Ｐａ０１〜Ｐａ０８が接続されており、スイッチＳａ２には、教室Ｒａ内に設置されたもう８台のＰＣ・Ｐａ０９〜Ｐａ１６が接続されている。また、スイッチＳｂ１には、教室Ｒｂ内に設置された８台のＰＣ・Ｐｂ０１〜Ｐｂ０８が接続されている。
【００４０】
さらに、スイッチＳｃ１には、教室Ｒｃ内に設置された８台のＰＣ・Ｐｃ０１〜Ｐｃ０８が接続されている。同様に、スイッチＳｃ２には、教室Ｒｃ内に設置された他の８台のＰＣ・Ｐｃ０９〜Ｐｃ１６が接続され、スイッチＳｃ３には、教室Ｒｃ内に設置された残りの８台のＰＣ・Ｐｃ１７〜Ｐｃ２４が接続されている。
【００４１】
したがって、運用管理装置１００は、システム１０１に含まれる４８台のＰＣの各々とネットワークを介して接続されており、これら４８台のＰＣの各々に対するリモート管理を行うことができる。すなわち、これら４８台のＰＣがシステム１０１内の計算サーバとして利用可能である。
【００４２】
具体的には、図１の４８台のＰＣは、運用管理装置１００からネットワークブートが可能なように設定されている。また、計算サーバとして機能することができるように、図１の４８台のＰＣにはグリッドコンピューティング用のミドルウェアがインストールされている。
【００４３】
さらに、図１に示すように、教室Ｒａには空調機Ｃａ１が設置され、教室Ｒｂには空調機Ｃｂ１が設置され、教室Ｒｃには空調機Ｃｃ１とＣｃ２が設置されている。そして、これら４台の空調機Ｃａ１〜Ｃｃ２は、いずれも運用管理装置１００と接続されている。よって、運用管理装置１００は空調機Ｃａ１〜Ｃｃ２に対するリモート管理を行うこともできる。なお、これらの空調機は、少なくとも冷却機能を有する空調設備であれば、どのようなものでもよい。
【００４４】
なお、以下では、空調機Ｃａ１によって温度が調整される範囲を「エリアＡａ１」と呼び、空調機Ｃｂ１によって温度が調整される範囲を「エリアＡｂ１」と呼ぶ。同様に、空調機Ｃｃ１によって温度が調整される範囲を「エリアＡｃ１」と呼び、空調機Ｃｃ２によって温度が調整される範囲を「エリアＡｃ２」と呼ぶ。以下、特に断らない限り、「エリア」という語は、１つの空調機によって温度が調整される範囲を意味する。
【００４５】
図１の例では、教室Ｒａ内の１６台のＰＣ・Ｐａ０１〜Ｐａ１６のすべてがエリアＡａ１内に設置され、教室Ｒｂ内の８台のＰＣ・Ｐｂ０１〜Ｐｂ０８のすべてがエリアＡｂ１内に設置されている。また、教室Ｒｃ内では、８台のＰＣ・Ｐｃ０１〜Ｐｃ０８がエリアＡｃ１内に設置されており、残りの１６台のＰＣ・Ｐｃ０９〜Ｐｃ２４がエリアＡｃ２内に設置されている。
【００４６】
なお、本実施形態におけるシステム１０１は、「キャンパスグリッド」と呼ばれるシステムの一例である。キャンパスグリッドは、大学等の教育研究機関において、教育目的で教室に設置されたＰＣを、夜間や休日などの課外時間にグリッドコンピューティングの計算サーバとして利用するシステムである。大学等の研究者は、キャンパスグリッドを利用することで、教育用の既存の資産（つまり教育目的のＰＣ）を活用してグリッドコンピューティングにより研究用の計算を行うことができる。
【００４７】
本実施形態のキャンパスグリッドは、「教育利用モード」と「研究利用モード」の２つの運用モードで運用される。教育利用モードは、図１の各ＰＣを教育用の設定で運用するモードであり、教育利用モードではグリッドコンピューティングによるジョブの実行は行われない。
【００４８】
本実施形態は、キャンパスグリッドとして示してあるが、ジョブの割り当て方については、エリアをラックと読み替えることで、ＰＣクラスタシステムを実施例とすることもできる。また、エリアをノードと読み替えることで、大規模スーパコンピュータシステムを実施例とすることもできる。
【００４９】
また、研究利用モードは、グリッドコンピューティングによるジョブの実行を主たる用途としてシステム１０１を運用するモードである。本実施形態では、研究利用モードでのシステム１０１の運用中に、ジョブが割り当てられていないＰＣの一部または全部を教育用に学生等に開放してもよい。それにより、「使われていないＰＣを利用したい」というユーザの希望に柔軟に対応することができ、リソースを有効に利用することもできる。
【００５０】
本実施形態の運用管理装置１００は、具体的には、運用モードの切り換えと、ジョブのＰＣへの割り当てと、割り当ての予約を行う。そこで、以下では運用管理装置１００が行うこれらの処理について、引き続き図１を参照してまず概要を説明し、その後、図２〜１０を参照して詳細を説明する。
【００５１】
本実施形態では、例えば「平日の８時から２０時は教育利用モードの時間帯で、平日の２０時から翌日の８時までと休日の８時から翌日の８時までは研究利用モードの時間帯」のような運用規則が予め決められている。この運用規則は、「平日の８時になったら教育利用モードに切り換え、平日の２０時になったら研究利用モードに切り換える」のように言い換えることもできる。
【００５２】
運用管理装置１００は、例えば上記のような運用規則にしたがって、次の（ａ１）〜（ａ５）の処理を行う。
（ａ１）教育利用モードでの運用中に、ジョブのＰＣへの割り当ての予約を定期的に行う処理。
（ａ２）研究利用モードでの運用中に、ジョブのＰＣへの割り当ての予約を定期的に行う処理。
（ａ３）運用規則にしたがって所定の時刻に教育利用モードから研究利用モードに切り換え、ジョブをＰＣに割り当てる処理。
【００５３】
（ａ４）研究利用モードでの運用中に、ジョブのＰＣへの割り当てを不定期に行う処理。
（ａ５）運用規則にしたがって所定の時刻に研究利用モードから教育利用モードに切り換える処理。
【００５４】
なお、詳しくは後述するように、（ａ１）や（ａ２）における予約処理と、（ａ３）や（ａ４）における実際の割り当て処理は、どのジョブをどのＰＣに割り当てるのが好ましいかを判断する点で共通しており、互いに類似する。そこで、「どのジョブをどのＰＣに割り当てるのが好ましいか」についての運用管理装置１００による判断の概略を、まず説明する。
【００５５】
例えば図１のように、一般的に、グリッドコンピューティングシステムに含まれる複数の計算サーバ（本実施形態では４８台のＰＣ）は、複数の部屋にまたがって配置されている可能性もある。また、複数の計算サーバのすべてが１つの同じスイッチに接続されているとも限らない。
【００５６】
さらに、例えば部屋が広い場合などには、図１の教室Ｒｃのように１つの部屋の温度が複数の空調機により調整されるかもしれない。したがって、複数の計算サーバは、たとえ１つの部屋に集中しており１つの同じスイッチに接続されているとしても複数のエリアにまたがっている場合もある。
【００５７】
そこで、運用管理装置１００は、各ＰＣがネットワークの構成単位のうちのいずれに属するのかという点と、各ＰＣがどのエリアに属するのかと点を考慮して、どのジョブをどのＰＣに割り当てるのが好ましいのかを判断する。
【００５８】
なお、ネットワークの構成単位としては、例えば、同じスイッチに物理的に接続されている機器の集合が１つの構成単位となりうる。また、同じブロードキャストドメインに属する機器の集合も構成単位となりうる。
【００５９】
そして、構成単位は階層化されていてもよい。つまり、上層の構成単位が下層の１つ以上の構成単位を含んでいてもよい。例えば、１つのブロードキャストドメインに複数のスイッチが含まれる場合、同じスイッチに物理的に接続されている機器の集合が下層の構成単位であり、同じブロードキャストドメイン（つまり同じＬＡＮセグメント）に属する機器の集合が上層の構成単位であってもよい。
【００６０】
本実施形態の運用管理装置１００は、１つのジョブをなるべく同じスイッチに接続されたＰＣに割り当てようとする。その理由は、同じスイッチに接続されたＰＣ間での通信環境は均一（換言すれば対称的）だからである。
【００６１】
例えば、第１のＰＣと第２のＰＣが同じ第１のスイッチに接続され、ルータを介して第１のスイッチに接続された第２のスイッチに第３のＰＣが接続されている場合、第１〜第３のＰＣ間での通信環境は均一でなく、非対称的である。具体的には、第１と第２のＰＣ間での通信は、第１と第３のＰＣ間（あるいは第２と第３のＰＣ間）での通信よりも短時間で完了する。
【００６２】
それに対し、第１〜第３のＰＣがいずれも第１のスイッチに接続されている場合は、どの２つのＰＣ間の通信もほぼ同じ時間で完了する。つまり、第１〜第３のＰＣ間での通信環境は均一であり、対称的である。
【００６３】
グリッドコンピューティングにおいては、１つのジョブを実行する計算サーバ間の通信環境が均一で対称的であることが好ましい。そのため、運用管理装置１００は、１つのジョブをなるべく同じスイッチに接続されたＰＣに割り当てようとする。
【００６４】
また、本実施形態の運用管理装置１００は、たとえ１つのジョブを同じスイッチに接続されたＰＣに割り当てられないとしても、１つのジョブをなるべく同じブロードキャストドメインに属するＰＣに割り当てようとする。その理由は、複数の計算サーバが複数のブロードキャストドメインにまたがっており互いにルータを介して通信を行う場合と比べれば、複数の計算サーバ間の通信が１つのブロードキャストドメイン内に閉じている場合の方が通信環境が均一だからである。なお、図１の環境では、各教室が１つのブロードキャストドメインに対応する。
【００６５】
さらに、本実施形態において、運用管理装置１００は、できれば１つのジョブをなるべく同じエリアに位置するＰＣに割り当てようとする。その理由は、無駄な空調機の運転を避け、消費電力を節約するためである。
【００６６】
さて、以上のような運用管理装置１００の判断方針について、ジョブのＰＣへの割り当ての具体例を挙げながら説明すると、以下のとおりである。
なお、以下の説明において、教室、エリア、スイッチおよびＰＣには、図１中の参照符号が識別子（identifier、ＩＤ）として割り当てられているものとする。例えば、教室ＲａのＩＤは「Ｒａ」である。同様に、システム１０１が実行する各ジョブにもＩＤが割り当てられているものとし、例えば「Ｊ」というＩＤのジョブを「ジョブＪ」のように参照する。各種ＩＤの形式は実施形態に応じて任意である。
【００６７】
ここで説明の便宜上、各ジョブには「何台のＰＣを使って当該ジョブを実行するのか」を示す「並列数」が予め指定されているものとし、ジョブＪの並列数を「Ｐａｒａ（Ｊ）」と表記する。また、割り当てに関するある方針ＰにしたがってジョブＪが割り当てられたＰＣの集合を「Ａｌｌｏｃ（Ｊ，Ｐ）」と表記する。方針Ｐは、具体的には後述のジョブパターンＩＤで表される。
【００６８】
具体例として、４つのジョブＪａ〜Ｊｄの割り当てについて取り上げる。例えば、ジョブＪａ〜Ｊｄの並列数が式（１）〜（４）のとおりであり、ジョブＪａ〜Ｊｄの割り当て先が、ある方針Ｐαによれば式（５）〜（８）のようになるとする。
Ｐａｒａ（Ｊａ）＝８                                              （１）
Ｐａｒａ（Ｊｂ）＝１６                                            （２）
Ｐａｒａ（Ｊｃ）＝８                                              （３）
Ｐａｒａ（Ｊｄ）＝４                                              （４）
Ａｌｌｏｃ（Ｊａ，Ｐα）
＝｛Ｐａ０１，Ｐａ０２，Ｐａ０３，Ｐａ０４，
Ｐａ０５，Ｐａ０６，Ｐａ０７，Ｐａ０８｝                        （５）
Ａｌｌｏｃ（Ｊｂ，Ｐα）
＝｛Ｐａ０９，Ｐａ１０，Ｐａ１１，Ｐａ１２，
Ｐａ１３，Ｐａ１４，Ｐａ１５，Ｐａ１６，
Ｐｂ０１，Ｐｂ０２，Ｐｂ０３，Ｐｂ０４，
Ｐｂ０５，Ｐｂ０６，Ｐｂ０７，Ｐｂ０８｝                        （６）
Ａｌｌｏｃ（Ｊｃ，Ｐα）
＝｛Ｐｃ０１，Ｐｃ０２，Ｐｃ０３，Ｐｃ０４，
Ｐｃ０５，Ｐｃ０６，Ｐｃ０７，Ｐｃ０８｝                        （７）
Ａｌｌｏｃ（Ｊｄ，Ｐα）
＝｛Ｐｃ０９，Ｐｃ１０，Ｐｃ１１，Ｐｃ１２｝                        （８）
【００６９】
式（５）〜（８）に示す上記の割り当ては、次の２つの点で改善の余地がある。
第１に、式（６）に示すとおり、ジョブＪｂが、複数のＬＡＮセグメント（つまり複数のブロードキャストドメイン）にまたがって存在するＰＣに割り当てられている。そのため、例えばＰＣ・Ｐａ０９とＰａ１０の間の通信にかかる時間と、ＰＣ・Ｐａ０９とＰＣ・Ｐｂ０１の間の通信にかかる時間が異なる。すなわち、１つのジョブＪｂが割り当てられた１６台のＰＣ間での通信環境が不均一であり、好ましくない。
【００７０】
第２に、空調機の運転に無駄が生じている。その理由は、本実施形態では、「あるエリアに属するＰＣのうち１台でも稼働していれば、当該エリアの温度を調整する空調機を運転する」という方針が採用されているためである。
【００７１】
一般に、コンピュータが稼働すると熱を生じるが、コンピュータの過熱は故障の原因になるので好ましくない。そこで、本実施形態では、各ＰＣを保護するため、空調機の運転に関して上記の方針が採用されている。
【００７２】
この方針のもとでは、式（５）〜（８）に示す割り当ての場合、図１の４台の空調機すべてを稼働させることになる。しかし、エリアＡｃ２に属する１６台のＰＣのうち１２台のＰＣは何のジョブも割り当てられていないので、もし式（７）の代わりに次の式（９）のようにジョブＪｃの割り当てを行えば、空調機Ｃｃ１を稼働させなくてもよくなる。つまり、方針Ｐαとは別の方針Ｐβにしたがって、ジョブＪｃの割り当てを式（７）から式（９）のように変更することで、消費電力を節約することが可能となる。
Ａｌｌｏｃ（Ｊｃ，Ｐβ）
＝｛Ｐｃ１７，Ｐｃ１８，Ｐｃ１９，Ｐｃ２０，
Ｐｃ２１，Ｐｃ２２，Ｐｃ２３，Ｐｃ２４｝                        （９）
【００７３】
詳しくは後述するが、本実施形態の運用管理装置１００は、例えば上記の式（５）〜（８）の割り当てよりも、式（９）〜（１２）の割り当ての方を好ましいと判断する。
Ａｌｌｏｃ（Ｊａ，Ｐβ）
＝｛Ｐｃ０１，Ｐｃ０２，Ｐｃ０３，Ｐｃ０４，
Ｐｃ０５，Ｐｃ０６，Ｐｃ０７，Ｐｃ０８｝                      （１０）
Ａｌｌｏｃ（Ｊｂ，Ｐβ）
＝｛Ｐａ０１，Ｐａ０２，Ｐａ０３，Ｐａ０４，
Ｐａ０５，Ｐａ０６，Ｐａ０７，Ｐａ０８，
Ｐａ０９，Ｐａ１０，Ｐａ１１，Ｐａ１２，
Ｐａ１３，Ｐａ１４，Ｐａ１５，Ｐａ１６｝                      （１１）
Ａｌｌｏｃ（Ｊｄ，Ｐβ）
＝Ａｌｌｏｃ（Ｊｄ，Ｐα）
＝｛Ｐｃ０９，Ｐｃ１０，Ｐｃ１１，Ｐｃ１２｝                      （１２）
以上説明したような判断に基づいて、運用管理装置１００は、ジョブのＰＣへの割り当ての予約および実際の割り当てを行う。
【００７４】
なお、１つ以上のジョブそれぞれの割り当て先について、全体的にまとめて「割り当てパターン」または「割り当て方」ということもある。例えば、上記の例は、全体として「ジョブＪａに式（１０）の集合を割り当て、ジョブＪｂに式（１１）の集合を割り当て、ジョブＪｃに式（９）の集合を割り当て、ジョブＪｄに式（１２）の集合を割り当てる」という割り当てパターン（割り当て方）を示す。
【００７５】
続いて、図２〜１０を参照して、運用管理装置１００の構成と動作についてさらに詳しく説明する。具体的には、まず図２を参照して運用管理装置１００の構成を説明し、次に図３Ａ〜３Ｃを参照して各種情報の例を説明する。そして、図４を参照して、運用管理装置が行う上記（ａ１）〜（ａ４）の処理の全体的な流れを説明する。その後、上記（ａ５）の処理について説明し、図４の処理から呼ばれる各種処理について図５Ａ〜１０を参照して説明する。
【００７６】
さて、図２は、運用管理装置１００の構成を各種情報とともに示す図である。
運用管理装置１００は各種情報を記憶する記憶部２０１を備える。図示の便宜上、図２では、記憶部２０１を網点パターンで示し、記憶部２０１に格納される各種情報を網点パターンの背景に重ねて図示してある。
【００７７】
運用管理装置１００は、例えば、ＣＰＵと、Random Access Memory（ＲＡＭ）などのメモリと、ハードディスク装置などの外部記憶装置を備えたコンピュータにより実現される。この場合、記憶部２０１は、上記ハードディスク装置によって実現されてもよいし、ＲＡＭとハードディスク装置の組み合わせによって実現されてもよい。各種情報の詳細は後述するが、記憶部２０１は以下の（ｂ１）〜（ｂ１４）の情報を格納する。
【００７８】
（ｂ１）ジョブの実行にかかると予測される時間として端末機１０５から与えられる「実行予測時間」を記憶するためのジョブ実行予測時間情報Ｄａ。
（ｂ２）各空調機に関する空調機管理情報Ｄｂ。
（ｂ３）各ＰＣに関するＰＣ情報Ｄｃ１。なお、以下の説明において「ＰＣ情報」という名称は、互いに同じ形式で表されるＰＣ予測情報Ｄｃ２とＰＣ管理情報Ｄｃ３の総称である。そのため、図２においてＰＣ情報Ｄｃ１を示す矩形は、ＰＣ予測情報Ｄｃ２を示す矩形とＰＣ管理情報Ｄｃ３を示す矩形を含む。図２には同様に、いくつかの情報に関して、総称を示す矩形が具体的な情報を示す２つの矩形を含むように図示してある。
【００７９】
（ｂ４）再配置後ＰＣ情報Ｄｃ４。なお、「再配置後ＰＣ情報」という名称は、互いに同じ形式で表される再配置後ＰＣ予測情報Ｄｃ５と再配置後ＰＣ管理情報Ｄｃ６の総称である。また、再配置後ＰＣ情報Ｄｃ４はＰＣ情報Ｄｃ１と同じ形式である。
（ｂ５）ジョブパターン別ＰＣ情報Ｄｃｘ１。なお、「ジョブパターン別ＰＣ情報」という名称は、互いに同じ形式で表されるジョブパターン別ＰＣ予測情報Ｄｃｘ２とジョブパターン別ＰＣ管理情報Ｄｃｘ３の総称である。また、ジョブパターン別ＰＣ情報Ｄｃｘ１は、ＰＣ情報Ｄｃ１と同じ形式の情報を複数集積した情報である。
【００８０】
（ｂ６）運用管理装置１００の動作を規定する各種パラメタを含むパラメタファイルＤｄ。
（ｂ７）ジョブとＰＣとの対応づけ（すなわちジョブの割り当て方）に関するジョブ・ＰＣ情報Ｄｅ１。なお、「ジョブ・ＰＣ情報」という名称は、互いに同じ形式で表されるジョブ・ＰＣ予測情報Ｄｅ２とジョブ・ＰＣ管理情報Ｄｅ３の総称である。
【００８１】
（ｂ８）再配置後ジョブ・ＰＣ情報Ｄｅ４。なお、「再配置後ジョブ・ＰＣ情報」という名称は、互いに同じ形式で表される再配置後ジョブ・ＰＣ予測情報Ｄｅ５と再配置後ジョブ・ＰＣ管理情報Ｄｅ６の総称である。また、再配置後ジョブ・ＰＣ情報Ｄｅ４はジョブ・ＰＣ情報Ｄｅ１と同じ形式である。
【００８２】
（ｂ９）ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１。なお、「ジョブパターン別ジョブ・ＰＣ情報」という名称は、互いに同じ形式で表されるジョブパターン別ジョブ・ＰＣ予測情報Ｄｅｘ２とジョブパターン別ジョブ・ＰＣ管理情報Ｄｅｘ３の総称である。また、ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１は、ジョブ・ＰＣ情報Ｄｅ１と同じ形式の情報を複数集積した情報である。
【００８３】
（ｂ１０）実行しようとするジョブに関する実行候補ジョブ情報Ｄｆ１。なお、「実行候補ジョブ情報」という名称は、互いに同じ形式で表される実行予測ジョブ情報Ｄｆ２と実行可能ジョブ情報Ｄｆ３の総称である。
（ｂ１１）ジョブの並べ方の様々なパターンを示すジョブパターン群Ｄｇ１。なお、「ジョブパターン群」という名称は、互いに同じ形式で表される予測ジョブパターン群Ｄｇ２と実行ジョブパターン群Ｄｇ３の総称である。
【００８４】
（ｂ１２）並列数に応じたジョブスケジューラ２０４の各キューに、どのＰＣが対応しているかを示すキュー・ＰＣ定義情報Ｄｈ。
（ｂ１３）各ＰＣのブート設定に関するブート設定情報Ｄｉ。
【００８５】
（ｂ１４）上記（ａ２）の予約処理のためのＰＣ経過情報Ｄｊ。具体的には、ＰＣ経過情報Ｄｊは、運用管理装置１００が予約処理を行う時刻から予約の対象となる時刻までの間に、何台のＰＣがどれくらいの時間、現在は未実行の新たなジョブの割り当て先として利用可能な状態になりそうかを示す。
【００８６】
以上のように記憶部２０１は、（ｂ１）〜（ｂ１４）の各種情報を格納する。また、運用管理装置１００は、下記（ｃ１）〜（ｃ７）の各部を備える。
（ｃ１）図１のスイッチ１０２を介した通信のためのネットワークインタフェース（Ｉ／Ｆ）２０２。
（ｃ２）図１の空調機Ｃａ１〜Ｃｃ２との通信のための空調機Ｉ／Ｆ２０３。
（ｃ３）ネットワークＩ／Ｆ２０２を介した入力に応じて、随時、処理を行うジョブスケジューラ２０４。
【００８７】
（ｃ４）空調機Ｉ／Ｆ２０３を介した通信を含む処理を行う空調機管理部２０５。
（ｃ５）ネットワークＩ／Ｆ２０２を介した通信を含む処理を行うＰＣ管理部２０６。
（ｃ６）所定の日時または所定の状況の変化に応じて、図４とともに後述する割り当て・予約処理を開始し、他の各部を呼び出して割り当て・予約処理の流れを制御するフロー制御部２０７。
【００８８】
（ｃ７）フロー制御部２０７の制御のもとで協働して割り当て・予約処理を行う、実行中ジョブ確認・予測部２０８、実行候補ジョブ選択部２０９、ジョブパターン作成部２１０、評価部２１１、再配置部２１２および予約部２１３。本実施形態においては、好ましいジョブの割り当てパターンを決定する決定手段が、具体的にはフロー制御部２０７とこれら（ｃ７）の各部により実現される。なお、図２では、記憶部２０１と（ｃ７）の各部をまとめて「割り当て・予約処理部２００」として示してある。また、線の錯綜を避けるため、図２では、割り当て・予約処理部２００内の各部をフロー制御部２０７と直接結ぶ線の代わりに、割り当て・予約処理部２００とフロー制御部２０７とを線で結んで示してある。
【００８９】
上記（ｃ１）のネットワークＩ／Ｆ２０２は、例えば一般的なＬＡＮ・Ｉ／Ｆにより実現され、（ｃ２）の空調機Ｉ／Ｆ２０３は、例えば拡張カードにより実現される。また、（ｃ３）〜（ｃ７）の各部は、ハードディスク装置などに格納されたプログラムを、ＣＰＵがＲＡＭにロードし、ＲＡＭをワークエリアとして使いながら実行することにより、実現される。
【００９０】
上記プログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、運用管理装置１００にインストールされてもよく、ネットワークからダウンロードされてもよい。記憶媒体としてはCompact Disc（ＣＤ）やDigital Versatile Disk（ＤＶＤ）などの光ディスク、光磁気ディスク、磁気ディスク、フラッシュメモリなどの不揮発性の半導体メモリなどが利用可能である。なお、実施形態によっては、（ｃ３）〜（ｃ７）の各部の一部が、専用のハードウェア回路により実現されてもよい。
【００９１】
続いて、（ｃ３）〜（ｃ７）の各部について詳しく説明する。
上記（ｃ３）のジョブスケジューラ２０４は、ネットワークＩ／Ｆ２０２を介して外部から入力されるジョブ投入コマンドを受け付ける。具体的には、ジョブ投入コマンドは、図１の端末機１０５から、ネットワーク１０４とルータ１０３とスイッチ１０２を介して随時入力され、ジョブスケジューラ２０４に受け付けられる。すると、ジョブスケジューラ２０４は、受け付けたジョブ投入コマンドで指定されているジョブに対し、一意なＩＤ（以下「ジョブＩＤ」という）を発行して割り当てる。なお、本実施形態では、ジョブ受付後、ジョブはホールド状態として扱われ、リリース操作によってジョブが開始されることを前提としている。
【００９２】
ジョブ投入コマンドの形式は実施形態に応じて任意だが、本実施形態では、ジョブ投入コマンドの引数として、ジョブ自体を指定する情報のほかに、ジョブの並列数と実行予測時間と優先度が指定されるものとする。実行予測時間は、例えばユーザが端末機１０５を介して任意に指定した時間でもよい。
【００９３】
また、ジョブスケジューラ２０４は、並列数に応じた複数のFirst In First Out（ＦＩＦＯ）キューを備えており、ジョブ投入コマンドの引数として指定された並列数に基づいて、ジョブを適宜のキューにエンキューする。なお、各キューには識別子として予め一意なキューＩＤが割り当てられているものとする。
【００９４】
ジョブスケジューラ２０４はさらに、ジョブ投入コマンドの引数で指定された実行予測時間と、発行したジョブＩＤとを対応づけ、ジョブ実行予測時間情報Ｄａのエントリとして記憶部２０１に格納する。
【００９５】
また、図１の各ＰＣは、割り当てられたジョブの実行を完了すると、完了通知をジョブスケジューラ２０４に送信する。ジョブスケジューラ２０４は、ネットワークＩ／Ｆ２０２を介して各ＰＣからの完了通知を受信することにより、ジョブの状態が「実行中」から「完了」へ変化したことを認識することができる。
【００９６】
また、上記（ｃ４）の空調機管理部２０５は、フロー制御部２０７からの命令に応じて、空調機Ｉ／Ｆ２０３を介して図１の各空調機と通信し、各空調機の状態をチェックしたり、場合に応じて各空調機の電源を投入または切断したりする。そして、空調機管理部２０５は、チェックした結果や、電源の投入または切断を行った結果を、空調機管理情報Ｄｂに反映させる。
【００９７】
また、上記（ｃ５）のＰＣ管理部２０６は、フロー制御部２０７からの命令に応じて、ネットワークＩ／Ｆ２０２を介して図１の各ＰＣと通信し、各ＰＣの状態をチェックしたり、場合に応じて各ＰＣを起動または停止させたりする。そして、ＰＣ管理部２０６は、チェックした結果や、起動または停止を行った結果を、ＰＣ情報Ｄｃ１に反映させる。
【００９８】
詳しくは後述するが、ＰＣ管理部２０６は、再配置後ＰＣ情報Ｄｃ４と再配置後ジョブ・ＰＣ情報Ｄｅ４を用いて各ＰＣの起動や停止を制御する。また、ＰＣ管理部２０６が各ＰＣに転送するブートイメージの所在が、ブート設定情報Ｄｉで指定される。
【００９９】
また、上記（ｃ６）のフロー制御部２０７は、図４に示す割り当て・予約処理の流れを制御する。フロー制御部２０７は、ジョブスケジューラ２０４からの通知を契機として割り当て・予約処処理を開始する場合もあるし、パラメタファイルＤｄに規定されたスケジュールにしたがって処理を開始する場合もある。また、フロー制御部２０７はその他の契機により図４の処理を開始してもよい。
【０１００】
例えば、ジョブスケジューラ２０４は、あるジョブの完了を認識したり、新たなジョブの投入の要求を受け付けたりしたときに、ジョブの実行状況が変化した旨をフロー制御部２０７に通知してもよい。すると、フロー制御部２０７は、この通知を契機として、実行待ちのジョブの割り当ての処理を開始することができる。
【０１０１】
また、例えば「平日の２０時からは研究利用モード」といったスケジュールがパラメタファイルＤｄで規定されている。よって、フロー制御部２０７は、パラメタファイルＤｄで規定されたパラメタにしたがって、平日の２０時になると上記（ａ３）のようにモードを切り換えてジョブを割り当てる処理を行う。
【０１０２】
さらに、フロー制御部２０７は、パラメタファイルＤｄに規定される所定のスケジュールにしたがって一定間隔で上記（ａ１）または（ａ２）の処理を開始してもよい。もちろん、運用管理装置１００がキーボードなどの不図示の入力部をさらに備えていてもよく、フロー制御部２０７は入力部から入力される指示を契機として不定期に（ａ１）または（ａ２）の処理を行うこともできる。
【０１０３】
なお、ＣＰＵがプログラムを実行することで（ｃ３）〜（ｃ７）の各部が実現される場合、（ｃ６）のフロー制御部２０７を実現するためのプログラムは、後述の図４の処理のためのプログラムのメインルーチンと、それを呼び出すスケジューラプログラムを含む。そして、メインルーチンから呼び出される各サブルーチンをＣＰＵが実行することにより、上記（ｃ４）、（ｃ５）および（ｃ７）の各部が実現される。また、（ｃ３）のジョブスケジューラ２０４も、フロー制御部２０７と連携して動作する。
【０１０４】
さて、上記（ｃ７）の実行中ジョブ確認・予測部２０８は、フロー制御部２０７からの命令に応じて、図５Ａ〜５Ｂの実行中ジョブの確認・予測処理を行い、結果をＰＣ情報Ｄｃ１とジョブ・ＰＣ情報Ｄｅ１に反映する。また、上記（ａ２）の予約のために実行中ジョブの確認・予測処理を行う場合は、実行中ジョブ確認・予測部２０８は、ＰＣ経過情報Ｄｊの作成も行う。なお、実行中ジョブ確認・予測部２０８への入力は、ＰＣ情報Ｄｃ１と、パラメタファイルＤｄに規定されているパラメタと、ジョブスケジューラ２０４からの出力を含む。
【０１０５】
また、上記（ｃ７）の実行候補ジョブ選択部２０９は、フロー制御部２０７からの命令に応じて、図６Ａ〜６Ｃの実行候補ジョブ選択処理を行い、処理結果を実行候補ジョブ情報Ｄｆ１として記憶部２０１に格納する。なお、実行候補ジョブ選択部２０９は、ジョブ実行予測時間情報Ｄａと、パラメタファイルＤｄに規定されているパラメタと、ジョブスケジューラ２０４からの出力を利用して処理を行う。また、上記（ａ２）の予約のために実行候補ジョブ選択処理を行う場合は、実行候補ジョブ選択部２０９は、ＰＣ経過情報Ｄｊをさらに利用する。
【０１０６】
そして、上記（ｃ７）のジョブパターン作成部２１０は、フロー制御部２０７からの命令に応じて、実行候補ジョブ情報Ｄｆ１からジョブパターン群Ｄｇ１を作成する。
また、上記（ｃ７）の評価部２１１は、フロー制御部２０７からの命令に応じて、図７Ａ〜７ＣのＰＣ決定処理を行うことで、ジョブパターン別ＰＣ情報Ｄｃｘ１とジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１を作成する。また、評価部２１１は図７Ａ〜７ＣのＰＣ決定処理の返り値として、ジョブパターンに対応する評価点をフロー制御部２０７に返す。なお、評価部２１１は、ＰＣ情報Ｄｃ１と、パラメタファイルＤｄに規定されているパラメタと、ジョブ・ＰＣ情報Ｄｅ１と、ジョブパターン群Ｄｇ１と、キュー・ＰＣ定義情報Ｄｈを利用して処理を行う。
【０１０７】
また、上記（ｃ７）の再配置部２１２は、フロー制御部２０７からの命令に応じて、図８Ａ〜８Ｈの再配置処理を行うことで、再配置後ＰＣ情報Ｄｃ４と再配置後ジョブ・ＰＣ情報Ｄｅ４を作成する。なお、再配置部２１２は、ジョブパターン別ＰＣ情報Ｄｃｘ１と、ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１と、キュー・ＰＣ定義情報Ｄｈを利用して処理を行う。
【０１０８】
上記（ｃ７）の予約部２１３は、フロー制御部２０７からの命令に応じて、図９の予約設定処理を行い、ブート設定情報Ｄｉ、ＰＣ情報Ｄｃ１およびジョブ・ＰＣ情報Ｄｅ１を適宜更新する。なお、予約部２１３は、再配置後ジョブ・ＰＣ情報Ｄｅ４を利用して処理を行う。
【０１０９】
以上説明した運用管理装置１００内の各部の動作のさらなる詳細は、図４〜１０とともに後述する。
さて、図３Ａ〜３Ｃは、本実施形態で用いる各種情報の例を示す図である。図２に関する説明で（ｂ１）〜（ｂ１４）として列挙したように、いくつかの情報は形式が共通である。そこで、以下では共通の形式を持つ各種情報については、１つの図によりまとめて説明する。
【０１１０】
上記（ｂ１）に挙げた図３Ａのジョブ実行予測時間情報Ｄａは、実行中または実行待ちの各ジョブに対応するエントリを有する。各エントリは、対応するジョブのジョブＩＤと当該ジョブの実行予測時間とを対応づける、〈ジョブＩＤ，実行予測時間〉というタプル（tuple）である。
【０１１１】
例えば、図３Ａに例示したジョブ実行予測時間情報Ｄａは、５つのエントリを含み、ジョブＪａ、Ｊｂ、Ｊｃ、ＪｄおよびＪｅの実行予測時間が各々９時間、８時間、４時間、４時間および１０時間であることを示している。なお、実行予測時間は、上記のとおり、ジョブの投入を要求するユーザから端末機１０５を介して与えられる。
【０１１２】
また、上記（ｂ２）に挙げた図３Ａの空調機管理情報Ｄｂは、図１の４台の空調機にそれぞれ対応する４つのエントリを有する。各エントリは、対応する空調機の空調機ＩＤと、当該空調機が設置されている教室の教室ＩＤと、当該空調機が温度調節を担当するエリアのエリアＩＤと、当該空調機の状態を対応づける、〈空調機ＩＤ，教室ＩＤ，エリアＩＤ，状態〉というタプルである。
【０１１３】
なお、空調機の状態は、“電源ＯＮ”または“電源ＯＦＦ”という値により示される。“電源ＯＮ”状態は、電源が入っており室温調整のために稼働中であることを示し、“電源ＯＦＦ”状態は、電源が切断されて空調機が稼働していないことを示す。
【０１１４】
また、空調機ＩＤ、教室ＩＤおよびエリアＩＤの３つのＩＤ間の対応づけは静的であり、状態だけが動的に変化する。図３Ａには、４台の空調機が図１に示したように配置され、かつ４台とも稼動中である場合の空調機管理情報Ｄｂが例示してある。
【０１１５】
なお、本実施形態では、空調機管理部２０５が空調機Ｉ／Ｆ２０３に通信先の空調機の空調機ＩＤを通知し、空調機Ｉ／Ｆ２０３は空調機ＩＤにより通信先の空調機を特定して通信するものとする。
【０１１６】
しかし、実施形態によっては、各空調機にMedia Access Controller（ＭＡＣ）アドレスやInternet Protocol（ＩＰ）アドレスなどのネットワークアドレスが割り当てられていてもよい。この場合、空調機Ｉ／Ｆ２０３はネットワークアドレスにより通信先の空調機を特定することができる。
【０１１７】
なお、空調機のネットワークアドレスが空調機ＩＤとして用いられてもよいし、空調機管理情報Ｄｂの各エントリがさらにネットワークアドレスのフィールドを有していてもよい。後者の場合、空調機管理部２０５は、通信先の空調機の空調機ＩＤからネットワークアドレスを求めて当該ネットワークアドレスを空調機Ｉ／Ｆ２０３に通知すればよい。
【０１１８】
また、図３Ａの情報Ｄｃは、上記（ｂ３）〜（ｂ４）に挙げた図２のＰＣ予測情報Ｄｃ２、ＰＣ管理情報Ｄｃ３、再配置後ＰＣ予測情報Ｄｃ５および再配置後ＰＣ管理情報Ｄｃ６に共通の形式を説明するための例である。
【０１１９】
また、情報Ｄｃと同形式の情報は、上記（ｂ５）に挙げたジョブパターン別ＰＣ予測情報Ｄｃｘ２に複数集積され、ジョブパターン別ＰＣ管理情報Ｄｃｘ３にも複数集積される。例えば図３Ａに例示するように情報Ｄｃがテーブル形式で表現される場合、ジョブパターン別ＰＣ予測情報Ｄｃｘ２とジョブパターン別ＰＣ管理情報Ｄｃｘ３は、それぞれ情報Ｄｃの形式のテーブルを複数含む。
【０１２０】
情報Ｄｃは、具体的には、図１のシステム１０１の計算サーバとして利用可能な４８台のＰＣそれぞれに対応する４８個のエントリを含む。そして、各エントリは、下記（ｄ１）〜（ｄ７）を対応づける、〈ＰＣＩＤ，教室ＩＤ，エリアＩＤ，スイッチＩＤ，状態，ジョブＩＤ，予約〉というタプルである。
【０１２１】
（ｄ１）当該エントリに対応するＰＣのＰＣＩＤ。
（ｄ２）当該ＰＣが設置されている教室の教室ＩＤ。
（ｄ３）当該ＰＣが設置されているエリアのエリアＩＤ。
【０１２２】
（ｄ４）当該ＰＣが接続されているスイッチのスイッチＩＤ。
（ｄ５）当該ＰＣの状態。本実施形態では、状態の値として、“教育利用中”、“グリッド利用中”、“電源ＯＦＦ”、“割り当て済”および“再配置先”が使われる。具体的には、“教育利用中”状態は、教育利用向けのオペレーティングシステム（ＯＳ）が指定された状態でＰＣが起動していることを示す。そして、“グリッド利用中”状態は、システム１０１の計算サーバとしてＰＣを利用するためのＯＳが指定された状態でＰＣが起動していることを示す。また、“電源ＯＦＦ”状態は、電源が切断されていることを示す。“割り当て済”状態と“再配置先”状態は、ジョブの割り当てまたは割り当ての予約を行うための処理の途中で一時的に設定される値であり、詳細は後述する。
【０１２３】
（ｄ６）当該ＰＣに割り当てられるジョブのジョブＩＤ。何もジョブが割り当てられない場合の値は空（すなわちＮＵＬＬ）である。なおここで「割り当てられる」とは、実際の割り当て、割り当ての予約、または実際の割り当てもしくは予約を行う過程での暫定的な割り当てのいずれかがなされていることを意味する。
【０１２４】
（ｄ７）当該ＰＣへのジョブの割り当ての予約の有無。当該ＰＣに対して予約されたジョブがあるときは、“あり”という値が設定される。他方、当該ＰＣに対して予約されたジョブがないときは何も設定されず、予約フィールドの値は空（すなわちＮＵＬＬ）である。
【０１２５】
なお、上記（ｄ１）〜（ｄ４）の項目間の対応づけは静的であり、（ｄ５）〜（ｄ７）が動的に変化する項目である。また、図３Ａの情報Ｄｃは、図１の４８台のＰＣのいずれもが、“教育利用中”状態であり、かつ何のジョブも割り当てられていない場合を示している。
【０１２６】
また、上記説明から明らかなように、ＰＣ管理情報Ｄｃ３は、図１のように複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、複数の構成単位のいずれに属するのかを表すネットワーク管理情報を含む。つまり、ＰＣ管理情報Ｄｃ３におけるＰＣＩＤと教室ＩＤとスイッチＩＤの対応づけが、ネットワーク管理情報に相当する。
【０１２７】
また、ＰＣ管理情報Ｄｃ３は、複数の計算サーバがそれぞれ設置された場所と複数の空調設備がそれぞれ設置された場所に応じて複数の計算サーバを複数の空調設備のいずれかと対応づける空調設備対応づけ情報も含む。つまり、空調機管理情報Ｄｂにおいて空調機ＩＤと対応づけられているエリアＩＤが、ＰＣ管理情報Ｄｃ３ではＰＣＩＤと対応づけられている。したがって、ＰＣＩＤはエリアＩＤを介して空調機ＩＤと１対１に対応づけられている。ＰＣ管理情報Ｄｃ３におけるＰＣＩＤとエリアＩＤの対応づけが、空調設備対応づけ情報に相当する。
【０１２８】
さて、上記（ｂ６）に挙げた図３ＢのパラメタファイルＤｄは、教育利用モードから研究利用モードへ移行するタイミングを示す「グリッド運用開始時刻」というパラメタと、研究利用モードから教育利用モードへ移行するタイミングを示す「グリッド運用終了時刻」というパラメタを含む。図３Ｂの例では、グリッド運用開始時刻は平日２０時であり、グリッド運用終了時刻は平日８時である。
【０１２９】
パラメタファイルＤｄはさらに「予測用経過時間」というパラメタを含む。予測用経過時間は、ジョブの割り当てを予約するために運用管理装置１００が未来を予測するときに用いるパラメタであり、予測を実行する時点から予測対象の時点までの時間の長さを示す。図３Ｂの例では、予測用経過時間は３６００秒である。
【０１３０】
また、パラメタファイルＤｄは、運用管理装置１００が定期的に行う処理の実行間隔に関する「予約処理実行間隔」と「教育利用ＰＣ監視実行間隔」という２つのパラメタを含む。
【０１３１】
予約処理実行間隔は、図３Ｂの例では３００秒であり、教育利用モードでの運用中に上記（ａ１）の予約処理を３００秒ごとに実行することと、研究利用モードでの運用中に上記（ａ２）の予約処理を３００秒ごとに実行することを規定している。もちろん、実施形態によっては、（ａ１）と（ａ２）の予約処理それぞれに対して個別に実行間隔のパラメタが規定されていてもよい。
【０１３２】
また、教育利用ＰＣ監視実行間隔は、研究利用モードでのシステム１０１の運用中に教育用途に開放されて実際に利用されているＰＣを確認する処理（以下「教育利用ＰＣ監視処理」という）を行う間隔を示す。教育利用ＰＣ監視処理については、図３Ｃについての説明の後で説明する。
【０１３３】
さらに、パラメタファイルＤｄは、ジョブの割り当て方を評価するために評価部２１１が用いる評価テーブルを含む。評価テーブルは複数のエントリを含み、各エントリは、ジョブの並列数の範囲と、後述する満足度と、当該範囲に含まれる並列数のジョブに関して当該満足度が得られたときの配点とを対応づける〈並列数，満足度，配点〉というタプルである。
【０１３４】
例えば、図３Ｂには、並列数の範囲として「９〜１６」、「５〜８」、「１〜４」の３通りが例示されており、それぞれの範囲に対して満足度として１から５が対応づけられ、それぞれの配点が規定されている。例えば、４番目の〈９〜１６，２，２〉というエントリは、「並列数の範囲が９以上１６以下で満足度が２のときの配点が２である」と示している。
【０１３５】
もちろん、実施形態によっては、並列数の範囲の代わりに個々の並列数の値を満足度および配点と対応づける形式で評価テーブルが実現されてもよい。つまり、実施形態に応じて、並列数に関して任意の粒度で配点を規定することができる。また、テーブル形式以外のデータ形式により評価テーブルと同等の情報が表現されてもよい。
【０１３６】
なお、パラメタファイルＤｄは、複数のファイルに分割されていてもよい。例えば、グリッド運用開始時刻とグリッド運用終了時刻と予約処理実行間隔と教育利用ＰＣ監視実行間隔は、運用管理装置１００を実現するコンピュータにおけるスケジューリング機能用のパラメタ定義ファイルに定義されていてもよい。そして、予測用経過時間が別のファイルに定義され、評価テーブルが別のデータベースファイル内に定義されていてもよい。
【０１３７】
また、図３Ｂの情報Ｄｅは、上記（ｂ７）〜（ｂ８）に挙げた図２のジョブ・ＰＣ予測情報Ｄｅ２、ジョブ・ＰＣ管理情報Ｄｅ３、再配置後ジョブ・ＰＣ予測情報Ｄｅ５および再配置後ジョブ・ＰＣ管理情報Ｄｅ６に共通の形式を説明するための例である。
【０１３８】
また、情報Ｄｅと同形式の情報は、上記（ｂ９）に挙げたジョブパターン別ジョブ・ＰＣ予測情報Ｄｅｘ２に複数集積され、ジョブパターン別ジョブ・ＰＣ管理情報Ｄｅｘ３にも複数集積される。例えば図３Ｂに例示するように情報Ｄｅがテーブル形式で表現される場合、ジョブパターン別ジョブ・ＰＣ予測情報Ｄｅｘ２とジョブパターン別ジョブ・ＰＣ管理情報Ｄｅｘ３は、それぞれ情報Ｄｅの形式のテーブルを複数含む。
【０１３９】
情報Ｄｅは、割り当てまたはその予約の対象となる各ジョブに対応するエントリを有する。図３Ｂの例では、情報Ｄｅは、ジョブＪｃ、Ｊａ、Ｊｂ、ＪｄおよびＪｇに対応する５つのエントリを含む。そして、各エントリは、下記（ｅ１）〜（ｅ７）を対応づける、〈ジョブＩＤ，キューＩＤ，並列数，ＰＣリスト，教室ＩＤ，エリアＩＤ，スイッチＩＤ〉というタプルである。
【０１４０】
（ｅ１）当該エントリに対応するジョブのジョブＩＤ。
（ｅ２）当該ジョブがエンキューされた、ジョブスケジューラ２０４内のキューのキューＩＤ。
【０１４１】
（ｅ３）当該ジョブの並列数。
（ｅ４）当該ジョブの割り当て先のＰＣのＰＣＩＤのリスト。なお、割り当て先のＰＣの数は、上記（ｅ３）の並列数に一致する。また、図３Ｂと図３Ｃでは紙幅の都合上、「〜」を用いてリストを簡略化して表記している。
【０１４２】
（ｅ５）当該ジョブの割り当て先のＰＣが配置されている教室の教室ＩＤのリスト。割り当て先のＰＣが複数の教室にわたって分散していれば、複数の教室の教室ＩＤが含まれる。
【０１４３】
（ｅ６）当該ジョブの割り当て先のＰＣが配置されているエリアのエリアＩＤのリスト。割り当て先のＰＣが複数のエリアにわたって分散していれば、複数のエリアＩＤが含まれる。
【０１４４】
（ｅ７）当該ジョブの割り当て先のＰＣが接続されているスイッチのスイッチＩＤのリスト。割り当て先のＰＣが１つの同じスイッチに接続されているのでなければ、複数のスイッチＩＤが含まれる。
【０１４５】
例えば、図３Ｂの例では、情報Ｄｅの１つ目のエントリは、ジョブＪｃについて、キューＱ１６にエンキューされており、並列数は１６であり、割り当て先のＰＣがＰＣ・Ｐａ０１〜Ｐａ１６であることを示している。この１つ目のエントリはさらに、ジョブＪｃの割り当て先であるＰＣ・Ｐａ０１〜Ｐａ１６について、いずれも教室ＲａのエリアＡａ１に配置されていることと、接続先のスイッチがスイッチＳａ１とＳａ２にまたがっていることを示している。
【０１４６】
そして、上記（ｂ１０）に挙げた図３Ｂの実行候補ジョブ情報Ｄｆ１は、各ジョブの詳細を示す。具体的には、実行候補ジョブ情報Ｄｆ１は、割り当てまたはその予約の対象となる各ジョブに対応するエントリを有する。各エントリは、対応するジョブのジョブＩＤと、当該ジョブがエンキューされたジョブスケジューラ２０４中のキューのキューＩＤと、当該ジョブの並列数を対応づける〈ジョブＩＤ，キューＩＤ，並列数〉というタプルである。
【０１４７】
ここで、紙幅の都合上、上記（ｂ１１）〜（ｂ１３）の情報の例を説明する前に、（ｂ１４）に挙げたＰＣ経過情報Ｄｊの例を先に図３Ｂに示す。ＰＣ経過情報Ｄｊは、運用管理装置１００が予約処理を行う時刻から予約の対象となる時刻までの間に、現在は未実行の新たなジョブの割り当て先として利用可能になりそうな計算リソースの量を示す。
【０１４８】
なお、運用管理装置１００が予約処理を行う時刻から予約の対象となる時刻までの時間の長さは、上記のとおり、パラメタファイルＤｄにおいて予測用経過時間として定義されている。また、計算リソースの量は、計算サーバとして利用可能なＰＣの台数と、利用可能な時間の積で表すことができる。
【０１４９】
現在ジョブを実行中のあるＰＣは、予約の対象となる時刻までの間に、現在実行中のジョブを終了するかもしれない。また、そもそも現在は何のジョブも行っていないアイドル状態のＰＣもあるかもしれない。
【０１５０】
そこで、図３Ｂに例示するように、ＰＣ経過情報Ｄｊは、新たなジョブの実行のために利用可能な時間である空き時間を、当該空き時間が発生すると予測されるＰＣの台数と対応づける〈ＰＣ数，空き時間〉というタプルをエントリとして有する。なお、以下では説明の便宜上、ＰＣ経過情報Ｄｊにおける空き時間を分単位で示すが、もちろん秒単位で空き時間が表されていてもよい。
【０１５１】
図３Ｂの例では、ＰＣ経過情報Ｄｊが〈１２，３０〉というエントリを含み、このエントリが示す予測内容は次のとおりである。すなわち、「運用管理装置１００が上記（ａ２）の予約処理を行う時点からパラメタファイルＤｄの予測用経過時間で定義される６０分（＝３６００秒）が経過するまでの間に、１２台のＰＣが現在実行中のジョブを終えるだろう」と予測される。そして、「これら１２台のＰＣは、６０分のうちの最後の３０分は、新たなジョブの実行のために利用可能となるだろう」と予測される。
【０１５２】
同様に、図３Ｂに例示の〈８，２０〉というエントリは、「８台のＰＣは、６０分が経過するまでの間に現在実行中のジョブを終え、６０分のうちの最後の２０分間、新たなジョブの実行のために利用可能となるだろう」という予測を示す。また、図３Ｂに例示の〈４，６０〉というエントリは、そもそも４台のＰＣが現在ジョブを実行していないことを示し、「当該４台のＰＣは６０分間ずっと、新たなジョブの実行のために利用可能な状態だろう」という予測を示す。
【０１５３】
また、上記（ｂ１１）に挙げた図３Ｃのジョブパターン群Ｄｇ１は、複数の「ジョブパターン」を含み、各ジョブパターンにはジョブパターンＩＤが割り当てられている。個々のジョブパターンは、実行候補ジョブ情報Ｄｆ１に含まれる全ジョブの情報を順序づけて並べるパターンである。
【０１５４】
例えば、図３Ｂの実行候補ジョブ情報Ｄｆ１は、５つのジョブＪａ、Ｊｂ、Ｊｃ、ＪｄおよびＪｇに対応する５つのエントリを含む。５つのジョブの順列は１２０（＝５！）通りなので、図３Ｃのジョブパターン群Ｄｇ１は１２０個のジョブパターンを含む。
【０１５５】
本実施形態では、各ジョブパターン内の各ジョブの情報として、ジョブＩＤとキューＩＤと並列数が使われる。ただし、キューＩＤと並列数はジョブＩＤから一意に定まるものなので、以下では説明の便宜と表記の簡略化のため、各ジョブパターンを、〈Ｊａ，Ｊｂ，Ｊｃ，Ｊｄ，Ｊｇ〉のようにジョブＩＤを並べたタプルにより表記する。
【０１５６】
図３Ｃには、１２０個のジョブパターンのうち、“Ｐ００１”、“Ｐ０４９”および“Ｐ１２０”というジョブパターンＩＤが割り当てられた３つのジョブパターンについてのみ詳細を示してある。これら３つのジョブパターンは、それぞれ、〈Ｊａ，Ｊｂ，Ｊｃ，Ｊｄ，Ｊｇ〉と〈Ｊｃ，Ｊａ，Ｊｂ，Ｊｄ，Ｊｇ〉と〈Ｊｇ，Ｊｄ，Ｊｃ，Ｊｂ，Ｊａ〉というタプルにより表すことができる。
【０１５７】
また、上記（ｂ１２）に挙げた図３Ｃのキュー・ＰＣ定義情報Ｄｈは、ジョブスケジューラ２０４の各キューに対応するエントリを含む。各エントリは、キューのキューＩＤと、当該キュー用に利用可能な（つまり当該キューに対応している）ＰＣのＰＣＩＤのリストとを対応づける、〈キューＩＤ，ＰＣリスト〉というタプルである。なお、キュー・ＰＣ定義情報Ｄｈは静的な情報であり、例えばシステム１０１の管理者などにより予め設定されていてもよい。
【０１５８】
例えば、図３Ｃの例では、ジョブスケジューラ２０４が３つのキューを持つことに対応して、キュー・ＰＣ定義情報Ｄｈが３つのエントリを有する。３つのキューとは、具体的には、並列数が９から１６のジョブのためのキューＱ１６と、並列数が２から８のジョブのためのキューＱ０８と、並列数が１のジョブ（すなわち並列実行型ではなく逐次実行型のジョブ）のためのキューＱ０１である。
【０１５９】
そして、図３Ｃの例では、キューＱ１６には、ＰＣ・Ｐａ０１〜Ｐａ１６、Ｐｂ０１〜Ｐｂ０８、Ｐｃ０９〜Ｐｃ２４の４０台のＰＣが対応づけられている。また、キューＱ０８には、ＰＣ・Ｐａ０１〜Ｐａ０８、Ｐｂ０１〜Ｐｂ０８、Ｐｃ０１〜Ｐｃ２４の４０台のＰＣが対応づけられている。また、キューＱ０１には、ＰＣ・Ｐｃ０１〜Ｐｃ２４の２４台のＰＣが対応づけられている。
【０１６０】
このように本実施形態では、各キューに対して図１の４８台のうちの一部のＰＣのみが対応づけられており、かつ、各キューに対応するＰＣの集合同士には重なりがある。しかし、実施形態によっては、４８台すべてのＰＣが対応づけられているキューがあってもよいし、逆に、各キューに対応するＰＣの集合同士に重なりがなくてもよい。また、ジョブスケジューラ２０４が備えるキューの本数は、当然ながら実施形態によって任意である。
【０１６１】
例えば、図３Ｃの例では、ＰＣ・Ｐａ０１〜Ｐａ０８は、キューＱ１６とＱ０８の両方に対応づけられている。よって、例えば、キューＱ１６に実行待ちのジョブが多いときには、それらのジョブにＰＣ・Ｐａ０１〜Ｐａ０８を割り当て、逆にキューＱ０８に実行待ちのジョブが多いときには、それらのジョブにＰＣ・Ｐａ０１〜Ｐａ０８を割り当てることも可能である。つまり、各キューに対応するＰＣの集合同士に重なりがあると、実行待ちのジョブの並列数の偏りに応じた、臨機応変かつ効率的な割り当てが可能となる。
【０１６２】
他方、一部のＰＣを特定のキューにのみ対応づけることで、当該キューにエンキューされているジョブの割り当てを円滑化することもできる。例えば、図３Ｃの例では、ＰＣ・Ｐａ０９〜Ｐａ１６は、キューＱ１６のみに対応づけられている。このように一部のＰＣを排他的にキューＱ１６のみと対応づけることで、「キューＱ１６の実行待ちのジョブのためにＰＣが確保できない」といった事態を避け、キューＱ１６の実行待ちのジョブの割り当てを円滑化することができる。
【０１６３】
例えば、図３Ｃの例では、キューＱ１６に対応しているＰＣのうちＰＣ・Ｐａ０９〜Ｐａ１６以外の３２台は、他のキューにも対応している。よって、これら３２台のＰＣは、先に、他のキューでの実行待ちのジョブに割り当てられる可能性がある。しかし、ＰＣ・Ｐａ０９〜Ｐａ１６の８台はキューＱ１６専用に確保されているのだから、例えば並列数１２のジョブに対しては、上記３２台のうち少なくとも４台さえ残っていれば、全体で１２台のＰＣを確保して当該ジョブに割り当てることができる。
【０１６４】
よって、各キューに対応づけられたＰＣの集合同士にどの程度の重なりを持たせるかということは、臨機応変かつ効率的な割り当てを可能とする効果と、割り当てを円滑化する効果との間のトレードオフを考慮して、実施形態に応じて適宜定めることが好ましい。
【０１６５】
また、図３Ｃには、上記（ｂ１３）に挙げた図２のブート設定情報Ｄｉに含まれる各種情報Ｄｉ１〜Ｄｉ５の具体例を示してある。
具体的には、ブート設定情報Ｄｉは、ブートローダの設定ファイル（コンフィグレーションファイル）として記述された３つのテンプレートファイルを含む。これら３つのファイルは、本実施形態では、運用管理装置１００のルートディレクトリ直下の“ｔｆｔｐｂｏｏｔ”ディレクトリに保存されている。本実施形態では、ブートローダとしてPreboot eXecution Environment GRand Unified Bootloader（ＰＸＥＧＲＵＢ）が採用されている。
【０１６６】
図３Ｃの例では、研究利用向けテンプレートＤｉ１は、“ｇｒｉｄ．ｃｏｎｆ”という名前で保存されている。研究利用向けテンプレートＤｉ１には、“ＧＲＩＤ−Ｕｎｉｘ”というタイトルの下に、研究利用モードにおいてシステム１０１の計算サーバとしてＰＣを用いるときのＯＳをＰＣにロードするための設定が記述されている。設定ファイルの文法等は公知なので説明を割愛するが、本実施形態では、「研究利用モード用に各種設定がなされたＵＮＩＸ（登録商標）を２番のパーティションからロードする」という設定が、研究利用向けテンプレートＤｉ１に記述されている。
【０１６７】
また、教育用利用向けテンプレートＤｉ２は、“ｅｄｕ．ｃｏｎｆ”という名前で保存されている。教育用利用向けテンプレートＤｉ２には、Ｗｉｎｄｏｗｓ（登録商標）と、教育利用モード用に各種設定がなされたＵＮＩＸ（登録商標）の２つのＯＳの中から、学生等のユーザが起動ＯＳを自由に選べるようにするための設定が記述されている。
【０１６８】
そして、ブートシステムなし用テンプレートＤｉ３は、“ｎｏｕｓｅ．ｃｏｎｆ”という名前で保存されており、「電源を切断する」という設定が記述されている。
また、本実施形態では、ネットワークブートの実現のために、ＰＣ管理部２０６が、ＰＸＥサーバ、Trivial File Transfer Protocol（ＴＦＴＰ）サーバおよびDynamic Host Configuration Protocol（ＤＨＣＰ）サーバとしての機能も備える。ブート設定情報Ｄｉに含まれるＤＨＣＰ設定ファイルＤｉ４は、ＤＨＣＰサーバが利用する設定ファイルである。
【０１６９】
ＤＨＣＰ設定ファイルＤｉ４は、図３Ｃの例では、運用管理装置１００において“／ｅｔｃ／ｄｈｃｐｄ．ｃｏｎｆ”というパスで参照されるファイルである。
ＤＨＣＰ設定ファイルＤｉ４は、ＰＸＥ対応の任意のＰＣに対して、所定のブートローダをダウンロードして使うように教えるための設定を含む。図３Ｃの例では、所定のブートローダとは、運用管理装置１００において“／ｔｆｔｐｂｏｏｔ／ｐｘｅｇｒｕｂ”というパスで参照される実行可能ファイルである。
【０１７０】
また、ＤＨＣＰ設定ファイルＤｉ４には、４８台のＰＣそれぞれに対して、ブート設定ファイルとしてダウンロードして読み込むべきファイルが設定されている。
例えば、図３Ｃの例では、図１のＰＣ・Ｐａ０１に関して、「アクセスしてきたＰＣのＭＡＣアドレスが“００：０ｃ：２９：ｄａ：４６：ｆｃ”であれば、当該ＰＣがＰＣ・Ｐａ０１である」と定義されている。そして、ＤＨＣＰ設定ファイルＤｉ４は、運用管理装置１００において“／ｔｆｔｐｂｏｏｔ／Ｐａ０１．ｃｏｎｆ”というパスで参照されるファイルをダウンロードするよう、ＰＣ・Ｐａ０１に教えるための設定を含んでいる。他の４７台のＰＣに関しても同様である。
【０１７１】
そして、図３Ｃにリンク設定Ｄｉ５として示すように、本実施形態では運用管理装置１００の“／ｔｆｔｐｂｏｏｔ”ディレクトリには、上記３つのテンプレートファイルが保存されている。さらに、この“／ｔｆｔｐｂｏｏｔ”ディレクトリには、図１の４８台のＰＣそれぞれに対応するシンボリックリンクが設定されている。
【０１７２】
例えば、ＰＣ・Ｐａ０１に対応して“Ｐａ０１．ｃｏｎｆ”という名前で設定されたシンボリックリンクのリンク先は、“ｇｒｉｄ．ｃｏｎｆ”という名前のファイル（すなわち研究利用向けテンプレートＤｉ１）である。他の４７台についても同様に、適宜リンク先が、研究利用向けテンプレートＤｉ１、教育用利用向けテンプレートＤｉ２またはブートシステムなし用テンプレートＤｉ３に設定されている。後述するように、リンク先は動的に書き換えられる。
【０１７３】
なお、シンボリックリンクのリンク先を示す情報は運用管理装置１００のファイルシステム上に記憶されるので、リンク設定Ｄｉ５も、記憶部２０１に格納されているブート設定情報Ｄｉの一部であると言える。
【０１７４】
そして、以上のような各種情報Ｄｉ１〜Ｄｉ５を含むブート設定情報Ｄｉにより、次のような手順でのネットワークブートが可能となる。
本実施形態において図１の４８台のＰＣの各々は、ＰＸＥ対応のNetwork Interface Card（ＮＩＣ）を備えており、起動時にＤＨＣＰサーバにアクセスする。ＤＨＣＰサーバは、アクセスしてきたＰＣにＩＰアドレスを割り当てるとともに、ＤＨＣＰ設定ファイルＤｉ４にしたがって、ブートローダと設定ファイルのパスも通知する。
【０１７５】
すると、ＰＣは、割り当てられたＩＰアドレスを使ってＴＦＴＰサーバにアクセスし、ＤＨＣＰサーバから通知されたパスにあるブートローダと設定ファイルをダウンロードする。続いて、ＰＣは、設定ファイルにしたがってブートローダを実行することでＯＳをロードする。
【０１７６】
例えば、ＰＣ・Ｐａ０１は、電源が投入されると、ＤＨＣＰサーバにアクセスしてＩＰアドレスを割り当ててもらう。そして、ＰＣ・Ｐａ０１は、運用管理装置１００の“／ｔｆｔｐｂｏｏｔ／ｐｘｅｇｒｕｂ”というパスで参照されるブートローダと、“／ｔｆｔｐｂｏｏｔ／Ｐａ０１．ｃｏｎｆ”というパスで設定される設定ファイルを、ＴＦＴＰによりダウンロードする。なお、ＰＣの側から見て設定ファイルをダウンロードする動作は、運用管理装置１００の側から見れば、個々のＰＣに応じた適宜の設定ファイルをＰＣに送付する動作である。
【０１７７】
図３Ｃの例では、リンク設定Ｄｉ５に示すように、“／ｔｆｔｐｂｏｏｔ／Ｐａ０１．ｃｏｎｆ”というパスで設定される設定ファイルの実体は、“ｇｒｉｄ．ｃｏｎｆ”という名前で保存されている研究利用向けテンプレートＤｉ１である。よって、ＰＣ・Ｐａ０１は、研究利用向けテンプレートＤｉ１をダウンロードし、研究利用向けテンプレートＤｉ１にしたがって、研究利用モード用に各種設定のなされたＵＮＩＸ（登録商標）をロードする。
【０１７８】
以上のように、本実施形態では、運用モードに応じて異なる設定ファイルが自動的にＰＣに送付されるので、運用モードに応じて異なる設定でＰＣが動作する。したがって、例えば「計算サーバとして機能するためのプログラム（つまりグリッドコンピューティング用のプログラム）が、教育利用モードでの運用中に、ユーザの誤操作によりＰＣ上で誤って起動されてしまう」といった事態を未然に防げる。
【０１７９】
例えば、ＰＣがジョブを実行するためのミドルウェアは、研究利用向けテンプレートＤｉ１によりロードされるＯＳ上では実行可能であり、教育用利用向けテンプレートＤｉ２によりロードされるＯＳ上では実行不能なものでもよい。あるいは、ＯＳにおいて設定される各種パラメタにより、ジョブの実行を可能とする設定を研究利用向けテンプレートＤｉ１により実現し、ジョブの実行を不能にする設定を教育用利用向けテンプレートＤｉ２により実現することもできる。
【０１８０】
ＰＣ管理部２０６は、ジョブが割り当てられた計算サーバであるＰＣに対し、ジョブの実行を可能とする第１の設定を表す設定ファイルである研究利用向けテンプレートＤｉ１を送付する。換言すれば、ＰＣ管理部２０６は、後述の図９のステップＳ１１０４または図１０のステップＳ１２０３においてブートＯＳの設定を行ったＰＣに対し、研究利用向けテンプレートＤｉ１を送付する。
【０１８１】
また、ＰＣ管理部２０６は、ジョブが割り当てられた計算サーバ以外の計算サーバであるＰＣに対し、第１の設定とは異なる第２の設定を表す設定ファイルを送付する。第２の設定は、場合に応じて、計算サーバの起動を禁止する設定でもよいし、ジョブの実行を不能にする設定でもよい。
【０１８２】
すなわち、ＰＣ管理部２０６は、ジョブが割り当てられていないＰＣに対しては、ブートシステムなし用テンプレートＤｉ３を送付してもよいし、教育用利用向けテンプレートＤｉ２を送付してもよい。具体的には、本実施形態のＰＣ管理部２０６は、後述の図４のステップＳ１２２においてブートＯＳの設定を行ったＰＣに対しては、計算サーバの起動を禁止する設定を表す設定ファイルであるブートシステムなし用テンプレートＤｉ３を送付する。そして、ＰＣ管理部２０６は、後述の図９のステップＳ１１１５においてブートＯＳの設定を行ったＰＣに対しては、ジョブの実行を不能にする設定を表す設定ファイルである教育用利用向けテンプレートＤｉ２を送付する。
【０１８３】
もちろん、実施形態によっては上記に例示した以外のプロトコルによるネットワークブートも可能であり、ブート設定情報Ｄｉの形式の詳細は実施形態に応じて適宜変更可能である。
【０１８４】
なお、上記のように本実施形態では、ＤＨＣＰサーバとしても機能するＰＣ管理部２０６が各ＰＣにＩＰアドレスを割り当てており、ＭＡＣアドレスとＩＰアドレスの対応づけを記憶している。そして、ＤＨＣＰ設定ファイルＤｉ４に示すようにＰＣＩＤとＭＡＣアドレスの対応づけは予め決められている。
【０１８５】
そのため、ＰＣ管理部２０６は、ＰＣＩＤとＭＡＣアドレスとＩＰアドレスを対応づけて管理することができる。つまり、ＰＣ管理部２０６は、ＰＣとの通信においては、通信先のＰＣのＰＣＩＤからＭＡＣアドレスあるいはＩＰアドレスを求め、所望のＰＣとネットワークＩ／Ｆ２０２を介して通信することができる。
【０１８６】
ところで、パラメタファイルＤｄに関して説明した教育利用ＰＣ監視処理について、ここで説明する。フロー制御部２０７はパラメタファイルＤｄを参照し、研究利用モードでの運用中に教育利用ＰＣ監視実行間隔が経過するたびに、ＰＣ管理部２０６に教育利用ＰＣ監視を行うよう命令する。
【０１８７】
すると、ＰＣ管理部２０６はリンク設定Ｄｉ５を参照して、設定ファイルのリンク先が教育用利用向けテンプレートＤｉ２になっているＰＣを特定する。そして、ＰＣ管理部２０６は、特定したＰＣの各々について、当該ＰＣがシャットダウンされているか否かを、ネットワークＩ／Ｆ２０２を介して調べる。調べた結果、当該ＰＣがシャットダウンされていれば、ＰＣ管理部２０６は、ＰＣ管理情報Ｄｃ３で当該ＰＣに対応するエントリにおいて、状態に“電源ＯＦＦ”を設定する。
【０１８８】
続いて、図１の環境を例として参照しつつ、図２の運用管理装置１００が図３Ａ〜３Ｃの各種情報を利用して行う処理について、図４〜１０とともに詳しく説明する。
図４は、ジョブのＰＣへの割り当ておよびその予約について総括的に示すフローチャートである。以下、図４の処理を便宜的に「割り当て・予約処理」と呼ぶが、その理由は、下記のとおり、図４の処理は引数に応じて割り当て処理にもなり予約処理にもなるからである。以下では、まず割り当て・予約処理の概要について説明してから、各ステップの詳細について説明してゆく。
【０１８９】
運用管理装置１００は、上記（ａ１）と（ａ２）のとおり、教育利用モードおよび研究利用モードでのシステム１０１の運用中に、それぞれ定期的に割り当て・予約処理を実行することで予約を行う。また、運用管理装置１００は、上記（ａ３）のとおり、教育利用モードから研究利用モードに切り換える時刻になると、割り当て・予約処理を実行し、それによりジョブをＰＣに割り当てる。
【０１９０】
さらに、運用管理装置１００は、研究利用モードでの運用中に、状況の変化を契機として不定期に割り当て・予約処理を実行し、それにより上記（ａ４）のとおりジョブのＰＣへの割り当てを行う。なお、割り当て・予約を実行する契機となる「状況の変化」とは、本実施形態では「ジョブの実行が完了した」というイベントである。実施形態によっては、「新たなジョブの要求をジョブスケジューラ２０４が受け付けた」などのイベントをさらに契機として利用することも可能である。
【０１９１】
図４のフローチャートは、このように（ａ１）〜（ａ４）を総括的に表している。したがって、図４の割り当て・予約処理は、（ａ１）〜（ａ４）の違いを示すための２つの引数をとる。割り当て・予約処理は、具体的には、引数の値によって割り当て処理となるか、または予約処理となる。
【０１９２】
割り当て・予約処理の第１引数は、運用モードを示し、以下の（ｆ１）〜（ｆ３）に示す３つの値のいずれかをとる。
（ｆ１）現在の運用モードが教育利用モードであることを示し、上記（ａ１）のときに指定される、“ｅｄｕｃａｔｅ”という値。
【０１９３】
（ｆ２）現在の運用モードが研究利用モードであることを示し、上記（ａ２）と（ａ４）のときに指定される、“ｒｅｓｅａｒｃｈ”という値。
（ｆ３）教育利用モードから研究利用モードに切り換えるタイミングであることを示し、上記（ａ３）のときに指定される、“ｓｔａｒｔ−ＧＲＩＤ”という値。
【０１９４】
また、割り当て・予約処理の第２引数は、割り当て処理を行うのか予約処理を行うのかを示し、以下ではこの第２引数を「処理モード」という。処理モードの値は、具体的には以下の（ｇ１）〜（ｇ２）に示す２つの値のいずれかである。
【０１９５】
（ｇ１）予約処理を行うことを示し、上記（ａ１）と（ａ２）のときに指定される、“ｒｅｓｅｒｖｅ”という値。
（ｇ２）割り当て処理を行うことを示し、上記（ａ３）と（ａ４）のときに指定される、“ａｓｓｉｇｎ”という値。
【０１９６】
図２のフロー制御部２０７は、図４の割り当て・予約処理を開始するトリガの発生を監視し、トリガの発生を検出すると、上記の２つの引数の値を定め、割り当て・予約処理を開始する。トリガにはいくつか種類があり、トリガの種類に応じて、フロー制御部２０７は引数の値を定めることができる。
【０１９７】
具体的には、フロー制御部２０７は、パラメタファイルＤｄで規定されている予約処理実行間隔（図３Ｂでは３００秒）の経過を、第１のトリガとして検出する。この第１のトリガを検出すると、フロー制御部２０７は、処理モードの値を“ｒｅｓｅｒｖｅ”に定める。
【０１９８】
第１のトリガを検出した場合、フロー制御部２０７は、現在時刻ならびにパラメタファイルＤｄで規定されているグリッド運用開始時刻およびグリッド運用終了時刻に基づいて、現在時刻が教育利用モードと研究利用モードのいずれの運用期間に含まれるのかを判断する。そして、フロー制御部２０７は、判断結果にしたがって運用モードの値を“ｅｄｕｃａｔｅ”または“ｒｅｓｅａｒｃｈ”に定め、割り当て・予約処理を開始する。以上により、具体的には（ａ１）または（ａ２）の処理が開始される。
【０１９９】
あるいは、フロー制御部２０７は、現在時刻がパラメタファイルＤｄで規定されているグリッド運用開始時刻になると、それを第２のトリガとして検出する。この第２のトリガを検出すると、フロー制御部２０７は、処理モードの値を“ａｓｓｉｇｎ”に定め、運用モードの値を“ｓｔａｒｔ−ＧＲＩＤ”に定め、割り当て・予約処理を開始する。以上により、具体的には（ａ３）の処理が開始される。
【０２００】
あるいは、フロー制御部２０７は、あるジョブの実行が終了したという通知をジョブスケジューラ２０４から受け取ると、その通知を第３のトリガとして検出する。なお、この第３のトリガが検出されるのは、研究利用モードの運用期間中に限られる。フロー制御部２０７は、第３のトリガを検出すると、処理モードの値を“ａｓｓｉｇｎ”に定め、運用モードの値を“ｒｅｓｅａｒｃｈ”に定め、割り当て・予約処理を開始する。以上により、具体的には（ａ４）の処理が開始される。
【０２０１】
さて、以上のようにしてトリガに応じて引数が定められて開始される図４の処理は、概要を示せば、次のとおりである。
図４において、ステップＳ１０１〜Ｓ１１０は前処理に相当し、ステップＳ１１１〜Ｓ１１６では、複数の割り当て方がそれぞれ評価され、そのうち１つの割り当て方が選ばれる。そして、選ばれた割り当て方についての微調整がステップＳ１１７で行われ、ステップＳ１１８以降で、実際の割り当てまたは予約が行われる。各ステップの詳細は以下のとおりである。
【０２０２】
ステップＳ１０１でフロー制御部２０７は、空調機状態チェック処理を行うよう空調機管理部２０５に命令する。すると、空調機管理部２０５は、空調機管理情報Ｄｂにより管理される各空調機と空調機Ｉ／Ｆ２０３を介して通信し、各空調機の状態をチェックし、チェック結果を空調機管理情報Ｄｂに反映する。
【０２０３】
本実施形態では、図１の空調機Ｃａ１、Ｃｂ１、Ｃｃ１およびＣｃ２の各々について、“電源ＯＮ”と“電源ＯＦＦ”のいずれの状態であるかを、空調機管理部２０５がチェックする。そして、空調機管理部２０５は、チェック結果を図３Ａに示した空調機管理情報Ｄｂのテーブルの状態の列に書き込む。なお、空調機には待機電力が常時供給されているので、空調機は、室温調整を行っていない“電源ＯＦＦ”状態のときであっても、運用管理装置１００と通信を行うことができる。
【０２０４】
次のステップＳ１０２でフロー制御部２０７は、処理モードの値が“ｒｅｓｅｒｖｅ”と“ａｓｓｉｇｎ”のいずれであるのかを判断する。処理モードの値が“ｒｅｓｅｒｖｅ”のとき（つまり予約処理を行おうとする場合）、処理はステップＳ１０３に移行する。逆に、処理モードの値が“ａｓｓｉｇｎ”のとき（つまり割り当て処理を行おうとする場合）、処理はステップＳ１０４に移行する。
【０２０５】
ステップＳ１０３でフロー制御部２０７は、ＰＣ管理部２０６に対して引数として運用モードの値を与え、ＰＣ状態チェック処理を行うよう命令する。すると、ＰＣ管理部２０６は、ＰＣ管理情報Ｄｃ３により管理されているすべてのＰＣ（本実施形態では図１の４８台のＰＣ）の状態をチェックし、チェック結果をＰＣ管理情報Ｄｃ３に反映する。
【０２０６】
ステップＳ１０３の結果としてＰＣ管理情報Ｄｃ３に書き込まれる状態には、ＰＣの電源が切断されていることを示す“電源ＯＦＦ”状態か、ＰＣに電源が入っており教育用に利用されていることを示す“教育利用中”状態がありうる。また、運用モードが“ｒｅｓｅａｒｃｈ”である場合は、ＰＣが現在何らかのジョブを実行中であることを示す“グリッド利用中”状態もありうる。
【０２０７】
なお、本実施形態のＰＣ状態チェック処理は、引数として与えられた運用モードに応じた条件を満たすＰＣの台数を数える処理も含む。ＰＣ管理部２０６は、数えた結果を返り値としてフロー制御部２０７に返す。
【０２０８】
具体的には、運用モードの値が“ｅｄｕｃａｔｅ”のとき、ＰＣ管理部２０６は、ＰＣ管理情報Ｄｃ３により管理されているＰＣの総数（図１の例の場合は４８）を数える。
逆に、運用モードの値が“ｒｅｓｅａｒｃｈ”のとき、ＰＣ管理部２０６は、“教育利用中”状態以外の状態（つまり“電源ＯＦＦ”状態または“グリッド利用中”状態）のＰＣの数を数える。なぜなら、本実施形態では、研究利用モードでのシステム１０１の運用期間中に、一部のＰＣをグリッドコンピューティングに従事させずに教育目的で学生等に開放することができるからである。
【０２０９】
以上のようにしてステップＳ１０３のＰＣ状態チェック処理をＰＣ管理部２０６が行うと、フロー制御部２０７は、ＰＣ管理部２０６からの返り値を「研究用ＰＣ台数」として記憶する。上記の説明から明らかなように、研究用ＰＣ台数は、グリッドコンピューティング用に利用可能なＰＣの台数を示す。
【０２１０】
ステップＳ１０３の実行後、処理はステップＳ１０６に移行する。なお、運用モードの値が“ｓｔａｒｔ−ＧＲＩＤ”のときにステップＳ１０３が実行されることはない。
他方、ステップＳ１０２で処理モードが“ａｓｓｉｇｎ”であると判断された場合、ステップＳ１０４でフロー制御部２０７は、運用モードが“ｒｅｓｅａｒｃｈ”と“ｓｔａｒｔ−ＧＲＩＤ”のいずれであるかを判断する。なお、ステップＳ１０４が実行されるのは処理モードが“ａｓｓｉｇｎ”のときのみなので、運用モードの値が“ｅｄｕｃａｔｅ”となることはない。
【０２１１】
運用モードが“ｓｔａｒｔ−ＧＲＩＤ”の場合は、運用管理装置１００が上記（ａ３）のように教育利用モードから研究利用モードへの切り換えを行おうとしている場合であり、処理はステップＳ１０５に移行する。他方、運用モードが“ｒｅｓｅａｒｃｈ”の場合は、上記（ａ４）の場合に相当し、処理はステップＳ１０３に移行する。
【０２１２】
ステップＳ１０５でフロー制御部２０７は、全ＰＣ停止処理を行うようＰＣ管理部２０６に命令する。すると、ＰＣ管理部２０６は、ＰＣ管理情報Ｄｃ３により管理されているすべてのＰＣ（本実施形態では図１の４８台のＰＣ）を強制的にシャットダウンさせ、ＰＣ管理情報Ｄｃ３において、すべてのＰＣの状態を“電源ＯＦＦ”状態に設定する。この段階で、ＰＣ管理部２０６は、当該ＰＣのブートＯＳに、「電源を切断する」設定を行う。
【０２１３】
そして、ＰＣ管理部２０６は、全ＰＣ停止処理の返り値として、ＰＣ管理情報Ｄｃ３により管理されているＰＣの総数を返す。フロー制御部２０７は、ＰＣ管理部２０６からの返り値を「研究用ＰＣ台数」として記憶する。ステップＳ１０５の実行後、処理はステップＳ１０６に移行する。
【０２１４】
ステップＳ１０６でフロー制御部２０７は、ジョブ・ＰＣ管理情報Ｄｅ３とジョブ・ＰＣ予測情報Ｄｅ２を初期化する。なお、ステップＳ１０６における「初期化」とは、すべてのエントリを削除することを意味する。
【０２１５】
そして、続くステップＳ１０７においてフロー制御部２０７は、実行中ジョブ確認・予測部２０８に対し、研究用ＰＣ台数と処理モードの値を引数として与え、図５Ａ〜５Ｂとともに後述する「実行中ジョブの確認・予測処理」を行うよう命令する。そして、フロー制御部２０７は、実行中ジョブ確認・予測部２０８から処理結果を受け取り、「空きＰＣ数」として記憶する。
【０２１６】
ステップＳ１０７で引数として与えられる研究用ＰＣ台数は、ステップＳ１０３またはステップＳ１０５で記憶された値であり、ジョブを実行する計算サーバとして利用可能であると想定されるＰＣの台数を示す。原則的には、システム１０１に含まれるすべてのＰＣは計算サーバとして利用可能である。しかし、本実施形態においては、研究利用モードでの運用期間中に、例外的に一部のＰＣが教育目的で学生等に開放され、ジョブの割り当て対象から除外されることがある。
【０２１７】
ステップＳ１０３で引数として“ｅｄｕｃａｔｅ”が与えられて研究用ＰＣ台数に値が設定される場合と、ステップＳ１０５で研究用ＰＣ台数の値が設定される場合は、原則どおり、システム１０１内のＰＣの総数が研究用ＰＣ台数として得られる。他方、ステップＳ１０３で引数として“ｒｅｓｅａｒｃｈ”が与えられて研究用ＰＣ台数に値が設定される場合は、例外的に教育目的で開放されたＰＣをジョブの割り当て対象から除外した、残りのＰＣの総数が、研究用ＰＣ台数として得られる。
【０２１８】
また、ステップＳ１０７で得られる空きＰＣ数は、これから運用管理装置１００が行おうとする割り当てまたは予約において、新たなジョブの実行のために最大限利用可能なＰＣの台数を示す。つまり、空きＰＣ数は、割り当てまたは予約の対象時点においてジョブを実行していない（あるいは実行していないと予測される）ＰＣの台数を示す。
【０２１９】
ステップＳ１０７の実行後、処理はステップＳ１０８に進む。ステップＳ１０８でフロー制御部２０７は、実行候補ジョブ選択部２０９に対し、図６Ａ〜６Ｃとともに後述する「実行候補ジョブ選択処理」を行うよう命令する。その際、フロー制御部２０７は実行候補ジョブ選択部２０９に対し、引数として、空きＰＣ数と運用モードと処理モードの値を与える。
【０２２０】
実行候補ジョブ選択処理は、「ジョブの優先度と投入時刻順に、利用可能なＰＣの範囲内で、ジョブのＰＣへの割り当て（またはその予約）を行うとしたら、どのジョブまでが割り当て（またはその予約）の対象となるのか」を決定する処理である。
【０２２１】
例えば、ジョブスケジューラ２０４のキューに、実行待ちのジョブが大量にある場合、すべてのジョブをシステム１０１が同時に処理することができるとは限らない。よって、実行候補ジョブ選択部２０９は、ステップＳ１０８において、空きＰＣ数が示すシステム１０１の余力の範囲で処理可能な量の分だけ、新たなジョブを選択する。
【０２２２】
選択の結果は、実行候補ジョブ情報Ｄｆ１として記憶部２０１に記憶される。また、選択されたジョブの数は、フロー制御部２０７に返り値として返され、フロー制御部２０７は返り値を「ジョブ数」として記憶する。
【０２２３】
そして、フロー制御部２０７は、続くステップＳ１０９において、記憶したジョブ数が０であるか否かを判断する。
ジョブ数が０のとき、新たに割り当てまたはその予約を行う対象のジョブが見つからなかったということである。つまり、ジョブ数が０になるのは、実行待ちのジョブがそもそも存在しない場合か、最も優先度の高いジョブがシステム１０１の余力の範囲内では実行不能なために今回はどのジョブも割り当てまたはその予約の対象として選択されなかった場合である。そこで、ジョブ数が０のとき、フロー制御部２０７は図４の処理を終える。
【０２２４】
他方、ジョブ数が１以上であれば、処理はステップＳ１０９からステップＳ１１０へと移行する。そして、ステップＳ１１０でフロー制御部２０７は、ジョブパターンを生成するようジョブパターン作成部２１０に命令する。ジョブパターンは、ステップＳ１０８で選択された全ジョブの情報を順序づけて並べるパターンである。
【０２２５】
本実施形態のジョブパターン作成部２１０は、具体的には、可能なすべてのジョブパターンを網羅的に生成する。例えば、ステップＳ１０８で５つのジョブＪａ、Ｊｂ、Ｊｃ、Ｊｄ，Ｊｇが選択された場合、ジョブパターン作成部２１０は、１２０（＝５！）通りのジョブパターンを生成する。
【０２２６】
以下に示す一群の式（まとめて式（１３）という）は、こうして生成される１２０個のジョブパターンを示す。なお、式の左辺の“Ｐ００１”等の記号は、以下の説明において各ジョブパターンを識別するジョブパターンＩＤとしても使うことにする。
【０２２７】
Ｐ００１＝〈Ｊａ，Ｊｂ，Ｊｃ，Ｊｄ，Ｊｇ〉
Ｐ００２＝〈Ｊａ，Ｊｂ，Ｊｃ，Ｊｇ，Ｊｄ〉
Ｐ００３＝〈Ｊａ，Ｊｂ，Ｊｄ，Ｊｃ，Ｊｇ〉
Ｐ００４＝〈Ｊａ，Ｊｂ，Ｊｄ，Ｊｇ，Ｊｃ〉
Ｐ００５＝〈Ｊａ，Ｊｂ，Ｊｇ，Ｊｃ，Ｊｄ〉
（中略）
Ｐ０４９＝〈Ｊｃ，Ｊａ，Ｊｂ，Ｊｄ，Ｊｇ〉
（中略）
Ｐ１２０＝〈Ｊｇ，Ｊｄ，Ｊｃ，Ｊｂ，Ｊａ〉                      （１３）
【０２２８】
ジョブパターン作成部２１０は、ジョブパターンごとに上記のように一意なジョブパターンＩＤも生成し、ジョブパターンとジョブパターンＩＤを対応づけてジョブパターン群Ｄｇ１として記憶部２０１に格納する。具体的には、処理モードが“ｒｅｓｅｒｖｅ”のとき、ジョブパターン群Ｄｇ１は予測ジョブパターン群Ｄｇ２であり、処理モードが“ａｓｓｉｇｎ”のとき、ジョブパターン群Ｄｇ１は実行ジョブパターン群Ｄｇ３である。
【０２２９】
続くステップＳ１１１〜Ｓ１１６の処理は、各ジョブパターンを評価して最良のジョブパターンを選択する処理である。具体的には、ステップＳ１１１において、フロー制御部２０７は、ジョブパターン群Ｄｇ１からジョブパターンを１件読み込む。
【０２３０】
そして、ステップＳ１１２でフロー制御部２０７は、図７Ａ〜７Ｃとともに後述する「ＰＣ決定処理」を評価部２１１に行わせる。その際に、フロー制御部２０７は、ステップＳ１１１（または後述のステップＳ１１５）で読み込んだジョブパターンのジョブパターンＩＤと処理モードの値を引数として評価部２１１に与える。
【０２３１】
ＰＣ決定処理は、「ジョブパターン中の先頭のジョブから順にＰＣへの割り当てを行っていくと、各ジョブはどのＰＣに割り当てられるのか」を決定するとともに、そのように決定した割り当てパターンを評価する処理である。評価部２１１は、ＰＣ決定処理による評価結果をフロー制御部２０７に返し、フロー制御部２０７は返り値を「ジョブパターン評価」として得る。
【０２３２】
すると、ステップＳ１１３においてフロー制御部２０７は、ステップＳ１１２で得たジョブパターン評価を、評価対象のジョブパターンのジョブパターンＩＤと対応づけて記憶する。
【０２３３】
次のステップＳ１１４でフロー制御部２０７は、すべてのジョブパターンを処理したか否かを判定する。未処理のジョブパターンが残っていれば、処理はステップＳ１１５に移行する。他方、すべてのジョブパターンについてステップＳ１１２とＳ１１３の処理が完了していれば、処理はステップＳ１１６に移行する。
【０２３４】
ステップＳ１１５で評価部２１１は、未処理のジョブパターンの中から次のジョブパターンを１件読み込む。そして処理はステップＳ１１２に戻る。
また、ステップＳ１１６でフロー制御部２０７は、ステップＳ１１３で記憶したジョブパターン評価の中で最良の値を持つジョブパターンを選択する。なお、本実施形態では、ジョブパターン評価が最良の値のジョブパターンが複数ある場合は、フロー制御部２０７がその中から任意の１つを選択するものとする。以下、ステップＳ１１６で選択されたジョブパターンのジョブパターンＩＤを、「選択ジョブパターンＩＤ」という。
【０２３５】
すると、続くステップＳ１１７でフロー制御部２０７は、再配置部２１２に対し、図８Ａ〜８Ｈとともに後述する「再配置処理」を行うよう命令し、引数として選択ジョブパターンＩＤと処理モードの値を与える。
【０２３６】
なお、再配置処理は、選択ジョブパターンＩＤで識別されるジョブパターンに対応してステップＳ１１２で決定した各ジョブのＰＣへの割り当て方を、微調整する処理である。具体的には、再配置処理は、「評価を下げない範囲で各ジョブのＰＣへの割り当て方を変えてみることによって、空調機の無駄な稼働をなくせないかを試し、可能ならば空調機の無駄な稼働をなくすように各ジョブのＰＣへの割り当て方を変える」という処理である。
【０２３７】
ステップＳ１１７の実行後、再配置部２１２はフロー制御部２０７に再配置処理の完了を通知する。すると、続くステップＳ１１８でフロー制御部２０７は、処理モードの値が“ｒｅｓｅｒｖｅ”と“ａｓｓｉｇｎ”のいずれであるのかを判断する。
【０２３８】
処理モードの値が“ｒｅｓｅｒｖｅ”のとき、処理はステップＳ１１９に移行する。逆に、処理モードの値が“ａｓｓｉｇｎ”のとき、処理はステップＳ１２０に移行する。
ステップＳ１１９が実行されるのは、予約のために図４の処理が行われる場合である。よって、ステップＳ１１９でフロー制御部２０７は、予約部２１３に対して、図９とともに後述する「予約設定処理」を行うよう命令し、引数として運用モードの値を与える。
【０２３９】
予約設定処理は、「ステップＳ１１７の再配置処理の結果にしたがって各ジョブのＰＣへの割り当てを予約し、予約の内容をＰＣ予測情報Ｄｃ２とＰＣ管理情報Ｄｃ３とブート設定情報Ｄｉに反映させる」という処理である。予約設定処理の実行が完了すると、図４の割り当て・予約処理も終了する。
【０２４０】
他方、ステップＳ１２０でフロー制御部２０７は、図１０とともに後述する「ＰＣ起動処理」をＰＣ管理部２０６に行わせる。ＰＣ起動処理は、「再配置後ジョブ・ＰＣ情報Ｄｅ４にしたがって、必要ならＰＣを新たに起動し、割り当てられたジョブを各ＰＣに実行させるための制御を行う」という処理である。
【０２４１】
ＰＣ起動処理が完了すると、続いてステップＳ１２１において、フロー制御部２０７は、運用モードの値が“ｓｔａｒｔ−ＧＲＩＤ”と“ｒｅｓｅａｒｃｈ”のいずれであるのかを判断する。運用モードの値が“ｒｅｓｅａｒｃｈ”のとき、処理はステップＳ１２２に移行する。逆に、運用モードの値が“ｓｔａｒｔ−ＧＲＩＤ”のときには、グリッド運用開始処理として、ステップＳ１０５で、既にすべてのＰＣの電源が切断されているので、処理はステップＳ１２３に移行する。
【０２４２】
ステップＳ１２２でフロー制御部２０７は、ＰＣ管理部２０６に「ＰＣ停止処理」を行うよう命令し、ＰＣ管理部２０６がＰＣ停止処理を終えると、処理はステップＳ１２３に移行する。なお、ＰＣ停止処理は、不測のエラーを予防するためにＰＣ管理部２０６がＰＣ管理情報Ｄｃ３を参照して行う処理である。
【０２４３】
具体的には、ＰＣ管理部２０６は、ＰＣ管理情報Ｄｃ３で管理されている各ＰＣについて、当該ＰＣが“グリッド利用中”状態でも“教育利用中”状態でも“電源ＯＦＦ”状態でもないときに、当該ＰＣをシャットダウンさせる。そして、ＰＣ管理部２０６は、ＰＣ管理情報Ｄｃ３を書き換えて、シャットダウンさせた当該ＰＣの状態の値を“電源ＯＦＦ”に更新する。この段階で、ＰＣ管理部２０６は、当該ＰＣのブートＯＳに、「電源を切断する」設定を行う。
【０２４４】
また、ステップＳ１２３でフロー制御部２０７は、空調機管理部２０５に「空調機制御処理」を行うよう命令する。空調機管理部２０５が空調機制御処理を終了すると、図４の割り当て・予約処理も終了する。
【０２４５】
なお、空調機制御処理として、空調機管理部２０５は、空調機管理情報Ｄｂにより管理される空調機（本実施形態では図１の４台）の各々について、稼働させる必要性を判断し、判断の結果にしたがって当該空調機を制御する。
【０２４６】
つまり、空調機管理部２０５は、判断対象の空調機に対応するエリアのＩＤを検索キーにしてＰＣ管理情報Ｄｃ３を検索し、当該エリアに設置されているＰＣのうちで“電源ＯＦＦ”状態以外のものの台数を求める。得られた台数が０台であれば、空調機管理部２０５は、判断対象の空調機を稼働させる必要がないと判断する。他方、得られた台数が１台以上ならば、空調機管理部２０５は、判断対象の空調機を稼働させる必要があると判断する。
【０２４７】
そして、空調機管理部２０５は、判断対象の空調機を稼働させる必要がないと判断した場合に、当該空調機の現在の状態が空調機管理情報Ｄｂにおいて“電源ＯＦＦ”と設定されていれば、当該空調機については現状維持と決定する。そして、空調機管理部２０５は当該空調機についての処理を終える。
【０２４８】
同様に、空調機管理部２０５は、判断対象の空調機を稼働させる必要があると判断した場合に、当該空調機の現在の状態が空調機管理情報Ｄｂにおいて“電源ＯＮ”と設定されているときも、当該空調機については現状維持と決定する。そして、空調機管理部２０５は当該空調機についての処理を終える。
【０２４９】
また、空調機管理部２０５は、判断対象の空調機を稼働させる必要がないと判断した場合に、当該空調機の現在の状態が空調機管理情報Ｄｂにおいて“電源ＯＮ”と設定されていれば、当該空調機の稼働を停止させる。つまり、空調機管理部２０５は、空調機Ｉ／Ｆ２０３を介して当該空調機をリモート制御により停止させる。そして、空調機管理部２０５は、空調機管理情報Ｄｂ上の当該空調機の状態を“電源ＯＦＦ”に設定する。
【０２５０】
また、空調機管理部２０５は、判断対象の空調機を稼働させる必要があると判断した場合に、当該空調機の状態が空調機管理情報Ｄｂにおいて“電源ＯＦＦ”と設定されていれば、当該空調機を稼働させる。つまり、空調機管理部２０５は、空調機Ｉ／Ｆ２０３を介して当該空調機をリモート制御により稼働させる。そして、空調機管理部２０５は、空調機管理情報Ｄｂ上の当該空調機の状態を“電源ＯＮ”に設定する。
【０２５１】
以上のようにしてステップＳ１２３で空調機管理部２０５が空調機制御処理を終えると、図４の割り当て・予約処理も終了する。
【０２５２】
さて、以上説明した図４の割り当て・予約処理は、上記（ａ１）〜（ａ４）の処理に相当する。次に、上記（ａ５）の研究利用モードから教育利用モードに切り換える処理について説明する。
【０２５３】
図３Ｂに示すようにグリッド運用終了時刻を規定するパラメタファイルＤｄの設定にしたがい、フロー制御部２０７は、グリッド運用終了時刻になると、（ａ５）の処理を開始する。具体的には、フロー制御部２０７は、ジョブスケジューラ２０４に対して実行中のジョブの中断のための「ジョブ中断処理」を行うよう、命令する。
【０２５４】
ジョブ中断処理の具体的詳細は実施形態に応じて任意であるが、例えば、ジョブスケジューラ２０４は、実行中の各ジョブについて、直近のチェックポイントにおけるデータを退避してもよい。データの退避先は、例えば運用管理装置１００が備えるハードディスク装置でもよい。また、ジョブ中断処理においてジョブスケジューラ２０４は、ジョブを実行中の各ＰＣに対して、ジョブの実行中断を命じる。
【０２５５】
ジョブスケジューラ２０４は、例えば上記のようにしてジョブ中断処理を完了すると、フロー制御部２０７に完了を通知する。すると、通知を受けたフロー制御部２０７は、ＰＣ管理部２０６に対し、「教育利用モード移行処理」を行うよう命令する。そして、ＰＣ管理部２０６は、教育利用モード移行処理として、次の一連の処理を行う。
【０２５６】
すなわち、ＰＣ管理部２０６は、すべてのＰＣを強制的にシャットダウンさせ、ＰＣ管理情報Ｄｃ３においてすべてのＰＣの状態の値を“電源ＯＦＦ”に設定する。さらに、ＰＣ管理部２０６は、すべてのＰＣの起動ＯＳが教育利用モード用のＯＳとなるように、図３Ｃのリンク設定Ｄｉ５を設定しなおす（つまり、４８個のリンクすべてについて、リンク先を教育用利用向けテンプレートＤｉ２に設定する）。
【０２５７】
なお、実施形態によっては、すでに教育用に開放中のＰＣについては、シャットダウンの対象から外すようにしてもよい。また、その場合に、すでに教育用に開放中のＰＣに関しては、リンク設定Ｄｉ５におけるリンク先が教育用利用向けテンプレートＤｉ２に設定されているので、リンク設定Ｄｉ５のリンク先の再設定は、してもしなくても結果は変わらない。
【０２５８】
以上のようにして、研究利用モードから教育利用モードに切り換える上記（ａ５）の処理を運用管理装置１００が終えると、すべてのＰＣは、電源さえ入れられれば教育利用モードの設定での利用が可能な状態となる。よって、学生等は、教育利用モードでの運用時間帯では、使いたい任意のＰＣを選んで電源を投入すれば当該ＰＣを利用することができる。
【０２５９】
また、本実施形態では研究利用向けテンプレートＤｉ１と教育用利用向けテンプレートＤｉ２が別々に設けられている。よって、教育利用モードでの運用中に学生等が誤ってグリッドコンピューティング用の設定でＰＣを起動してしまうことを未然に防ぐことができる。
【０２６０】
以上、運用管理装置１００が行う（ａ１）〜（ａ５）の各処理について概要の説明を終えたので、続いて、（ａ１）〜（ａ４）の処理に相当する図４の割り当て・予約処理から呼び出される各種処理の詳細について、図５Ａ〜１０を参照して説明する。
【０２６１】
図５Ａ〜５Ｂは、図４のステップＳ１０７で実行される実行中ジョブの確認・予測処理のフローチャートである。
ステップＳ２０１で実行中ジョブ確認・予測部２０８は、処理モードの値が“ｒｅｓｅｒｖｅ”と“ａｓｓｉｇｎ”のいずれであるかを判断する。処理モードの値が“ｒｅｓｅｒｖｅ”であるとき、処理はステップＳ２０２に移行し、処理モードの値が“ａｓｓｉｇｎ”であるとき、処理はステップＳ２０３に移行する。
【０２６２】
ステップＳ２０２で実行中ジョブ確認・予測部２０８は、図３ＢのパラメタファイルＤｄから、予測用経過時間を得る。図３Ｂの例では、予測用経過時間の値は３６００秒なので、実行中ジョブ確認・予測部２０８は「予約のために状況を予測する対象となる時点は現在から３６００秒後である」と認識する。ステップＳ２０２の実行後、処理はステップＳ２０３に移行する。
【０２６３】
ステップＳ２０３で実行中ジョブ確認・予測部２０８は、「起動済ＰＣ数」を０に初期化する。処理モードが“ｒｅｓｅｒｖｅ”のとき、起動済ＰＣ数は、予測用経過時間により示される予測対象の時刻において、ジョブを実行中であると予測されるＰＣの数を示す。他方、処理モードが“ａｓｓｉｇｎ”のとき、起動済ＰＣ数は、現在ジョブを実際に実行中のＰＣの数を示す。
【０２６４】
また、ステップＳ２０３で実行中ジョブ確認・予測部２０８は、続いて、「経過中空きＰＣ数集計」を０に初期化する。経過中空きＰＣ数集計は、運用モードが“ｒｅｓｅａｒｃｈ”で、かつ処理モードが“ｒｅｓｅｒｖｅ”の場合に利用される。経過中空きＰＣ数集計が示すのは、研究用ＰＣ台数のうちで、現在はジョブを実行中だが、予測用経過時間により示される予測対象の時刻までにはジョブを終えると予測されるＰＣの台数である。
【０２６５】
そして、次のステップＳ２０４で実行中ジョブ確認・予測部２０８は、ＰＣ経過情報Ｄｊを、何もエントリを持たない状態に初期化する。
続くステップＳ２０５で実行中ジョブ確認・予測部２０８は、ジョブスケジューラ２０４に、現在実行中のジョブの件数を問い合わせる。問い合わせに対するジョブスケジューラ２０４からの回答を、以下では「実行中ジョブ件数」という。
【０２６６】
そして、次のステップＳ２０６で実行中ジョブ確認・予測部２０８は、ステップＳ２０５で得た実行中ジョブ件数が０であるか、それとも１以上であるかを判断する。実行中ジョブ件数が０のとき、処理はステップＳ２０７に移行し、実行中ジョブ件数が１以上のとき、処理はステップＳ２０８に移行する。
【０２６７】
ステップＳ２０７で実行中ジョブ確認・予測部２０８は、引数として与えられた研究用ＰＣ台数を戻り値としてフロー制御部２０７に返す。つまり、実行中ジョブ確認・予測部２０８は、「現在まだ実行を開始していない新たなジョブを割り当てること（または、割り当ての予約を受け入れること）が可能な状態のＰＣの台数は、研究用ＰＣ台数である」ということをフロー制御部２０７に通知する。そして、実行中ジョブの確認・予測処理は終了する。
【０２６８】
なお、運用モードが“ｓｔａｒｔ−ＧＲＩＤ”または“ｅｄｕｃａｔｅ”の場合は常に、実行中のジョブが存在しないので、処理がステップＳ２０６からＳ２０７へと進む。もちろん、運用モードが“ｒｅｓｅａｒｃｈ”の場合でも、実行中のジョブが０件ということはありうる。そのときも、処理がステップＳ２０６からＳ２０７へと進む。
【０２６９】
さて、ここでステップＳ２０６の分岐の説明に戻ると、実行中ジョブ確認・予測部２０８は、ステップＳ２０６で実行中ジョブ件数が１以上であると判断した場合、ステップＳ２０８以下の処理を行う。つまり、運用モードが“ｒｅｓｅａｒｃｈ”であり、かつ実際に１件以上のジョブが現在実行中のときのみ、ステップＳ２０８以下の処理が行われる。
【０２７０】
ステップＳ２０８で実行中ジョブ確認・予測部２０８は、ジョブスケジューラ２０４に現在実行中のジョブの情報を問い合わせ、それに対する回答を「実行中ジョブ情報」として記憶する。本実施形態の実行中ジョブ情報は、具体的には、各ジョブを、〈ジョブＩＤ，実行予測時間，実行開始からの経過時間，キューＩＤ，並列数，使用ＰＣリスト〉の組（タプル）により表現したエントリを含む。なお、ここでの使用ＰＣリストとは、当該ジョブを実行中のＰＣのＰＣＩＤのリストである。
【０２７１】
続くステップＳ２０９〜Ｓ２１７は、実行中ジョブ情報の各エントリに関する繰り返し処理である。
ステップＳ２０９で実行中ジョブ確認・予測部２０８は、ステップＳ２０８で記憶した実行中ジョブ情報の１件目のエントリを読み込む（つまり、実行中のジョブのうち１件目に注目する）。
【０２７２】
続くステップＳ２１０で実行中ジョブ確認・予測部２０８は、処理モードの値が“ｒｅｓｅｒｖｅ”と“ａｓｓｉｇｎ”のいずれであるかを判断する。処理モードの値が“ｒｅｓｅｒｖｅ”のとき、処理はステップＳ２１１に移行し、処理モードの値が“ａｓｓｉｇｎ”のとき、処理はステップＳ２１２に移行する。
【０２７３】
ステップＳ２１１で実行中ジョブ確認・予測部２０８は、注目している当該ジョブの実行予測時間と実行開始からの経過時間を、ステップＳ２０９または後述のステップＳ２１７で読み出したエントリから取得する。そして、実行中ジョブ確認・予測部２０８は、当該ジョブの実行予測時間を、当該ジョブの経過時間とステップＳ２０２で得た予測用経過時間の和と比較する。
【０２７４】
当該ジョブの実行予測時間が、当該ジョブの経過時間と予測用経過時間の和よりも長い場合、実行中ジョブ確認・予測部２０８は、「予測対象時刻になっても当該ジョブは終了しない」と予測する。換言すれば、実行中ジョブ確認・予測部２０８は、「現在当該ジョブを実行中のＰＣには、予測対象時刻において他の新たなジョブの割り当てを予約することはできない」と判断する。そのため、この場合には処理がステップＳ２１２に移行する。
【０２７５】
例えば、現在注目しているジョブに関して、実行予測時間が５時間で、経過時間が２時間であり、予測用経過時間は図３Ｂに示すように３６００秒（＝１時間）であるとする。この場合、「５時間＞２時間＋１時間＝３時間」である。よって、実行中ジョブ確認・予測部２０８は、「当該ジョブを実行中のＰＣは、予測対象時刻においてもまだ当該ジョブを実行中であろうから、それらのＰＣに対して、新たに他のジョブの割り当てを予約することはできない」と判断する。
【０２７６】
他方で、当該ジョブの実行予測時間が、当該ジョブの経過時間と予測用経過時間の和以下の場合、実行中ジョブ確認・予測部２０８は、「予測対象時刻以前に当該ジョブが終了する」と予測する。換言すれば、実行中ジョブ確認・予測部２０８は、「現在当該ジョブを実行中のＰＣには、予測対象時刻において他の新たなジョブの割り当てを予約することができる」と判断する。そのため、この場合には処理がステップＳ２１３に移行する。
【０２７７】
ステップＳ２１２で実行中ジョブ確認・予測部２０８は、ステップＳ２０８で得た実行中ジョブ情報の中で現在注目している当該ジョブの情報を、「実行ジョブ予測情報」として出力する。つまり、実行中ジョブ確認・予測部２０８は、当該ジョブのエントリを実行ジョブ予測情報に追加する。その後、処理はステップＳ２１６に移行する。
【０２７８】
なお、実行ジョブ予測情報は、図２に示す実行予測ジョブ情報Ｄｆ２と似た名称だが、実行予測ジョブ情報Ｄｆ２とは別の情報であり、実行中ジョブ確認・予測部２０８が内部処理用に記憶する情報である。また、図５Ａの処理の開始時における実行ジョブ予測情報は、何もエントリを持たない空の状態であるものとする。
【０２７９】
また、ステップＳ２１３で実行中ジョブ確認・予測部２０８は、当該ジョブの並列数を「経過中空きＰＣ数」として記憶する。当該ジョブの並列数分のＰＣは、予測対象時刻においては当該ジョブを終了していると予測されるため、他の新たなジョブの割り当てを予約することができる。よって、実行中ジョブ確認・予測部２０８は、他の新たなジョブの割り当てを予約することができるＰＣの台数として、経過中空きＰＣ数を記憶する。
【０２８０】
続くステップＳ２１４で実行中ジョブ確認・予測部２０８は、「ＰＣ経過情報出力処理」を行う。具体的には、実行中ジョブ確認・予測部２０８は、当該ジョブの終了から予測対象時刻までの長さを「経過中空き時間」として計算し、ステップＳ２１３で記憶した経過中空きＰＣ数と、計算した経過中空き時間を対応づけたエントリをＰＣ経過情報Ｄｊに追加する。
【０２８１】
なお、実行中ジョブ確認・予測部２０８は、当該ジョブの開始から現在までの経過時間と予測用経過時間の和から、当該ジョブの実行予測時間を減じることで、経過中空き時間を算出することができる。
【０２８２】
例えば、当該ジョブの開始時刻が２０時１０分であり、当該ジョブの実行予測時間が９０分であり、このステップＳ２１４を実行中ジョブ確認・予測部２０８が実行している現在時刻が２１時００分であるとする。また、ステップＳ２０２で得られた予測用経過時間は６０分（＝３６００秒）であり、２２時００分のジョブ実行を実行中ジョブ確認・予測部２０８が予測するものとする。
【０２８３】
この場合、当該ジョブの開始から現在（２１時００分）までの経過時間は、５０分（＝２１時００分−２０時１０分）である。また、予測用経過時間は６０分（＝３６００秒）であることから、実行中ジョブ確認・予測部２０８は、経過中空き時間として２０分（＝５０分＋６０分−９０分）を得る。
【０２８４】
なお、本実施形態では以上のように、実行中ジョブ確認・予測部２０８が予測用経過時間のうちの空き時間を使ってＰＣ経過情報Ｄｊを作成し、実行候補ジョブ選択部２０９がＰＣ経過情報Ｄｊを用いた処理を行う。しかし、実施形態によっては、予測用経過時間のうちでジョブの実行によって占有される「使用時間」が、空き時間の代わりにＰＣ経過情報Ｄｊにおいて管理されてもよい。そして、ＰＣ経過情報Ｄｊの変形にともなって、各種処理が適宜変形されてもよい。
【０２８５】
使用時間と空き時間の和は定数の予測用経過時間に等しいので、使用時間は空き時間と表裏一体の関係にある。したがって、使用時間の観点からＰＣ経過情報Ｄｊが管理される実施形態におけるいくつかのステップにおける処理も、当業者が適宜変形することができる。例えば、最長の空き時間は最短の使用時間に対応するので、使用時間の観点から表現するようにＰＣ経過情報Ｄｊが変形された実施形態においては、最長の空き時間を求める処理は、最短の使用時間を求める処理に置き換えられる。
【０２８６】
なお、使用時間の観点からＰＣ経過情報Ｄｊが管理される場合、使用時間は、厳密には、ジョブの実行によってＰＣが占有される時間だけでなく、待機時間も含む。つまり、同じジョブを実行するための他のＰＣが、実行中の他のジョブの実行を終えて空いた状態になるまで待機する間の、アイドル状態の時間も、使用時間には含まれる。このことは、後述の図６Ａ〜６Ｃに関する説明から明らかである。
【０２８７】
さて、ここで図５Ａの説明に戻る。上記のようにステップＳ２１４でＰＣ経過情報出力処理を行うと、実行中ジョブ確認・予測部２０８は、続くステップＳ２１５で、経過中空きＰＣ数集計の値を経過中空きＰＣ数の分だけ増やす。その後、処理はステップＳ２１６に移行する。
【０２８８】
そして、ステップＳ２１６で実行中ジョブ確認・予測部２０８は、すべての実行中ジョブを処理したか否かを判断する。すなわち、実行中ジョブ確認・予測部２０８は、ステップＳ２０８で得た実行中ジョブ情報のすべてのエントリについて処理したか否かを判断する。
【０２８９】
未処理の実行中ジョブが残っていれば処理はステップＳ２１７に移行する。他方、すべての実行中ジョブが処理済ならば処理はステップＳ２１８に移行する。
ステップＳ２１７で実行中ジョブ確認・予測部２０８は、ステップＳ２０８で得た実行中ジョブ情報の中で次のジョブに注目する。そして、処理はステップＳ２１０に戻る。
【０２９０】
以上のステップＳ２０９〜Ｓ２１７の処理により、研究利用モードで運用中の現時点において運用管理装置１００が実際の割り当てを行おうとしている場合は、現時点で実際に実行中のすべてのジョブに関する情報が、実行ジョブ予測情報として記録される。また、研究利用モードでの運用中に運用管理装置１００が予約を行おうとしている場合は、予約のための予測対象時刻になってもまだ実行継続中と予測されるジョブに関する情報が、実行ジョブ予測情報として記録される。
【０２９１】
よって、実行中ジョブ確認・予測部２０８は、実行ジョブ予測情報を用いて、新たなジョブの割り当て（またはその予約）のために割くことができないＰＣを特定することが可能となる。
【０２９２】
さて、ステップＳ２１８で実行中ジョブ確認・予測部２０８は、処理モードの値が“ｒｅｓｅｒｖｅ”と“ａｓｓｉｇｎ”のいずれであるかを判断する。処理モードの値が“ｒｅｓｅｒｖｅ”のとき、処理はステップＳ２１９に移行し、処理モードの値が“ａｓｓｉｇｎ”のとき、処理は図５ＢのステップＳ２２１に移行する。
【０２９３】
すなわち、ステップＳ２１９は、研究利用モードにおいて１件以上のジョブを実行中のときに、運用管理装置１００が将来の予約を行おうとしている場合に実行される。そして、ステップＳ２１９で実行中ジョブ確認・予測部２０８は、ＰＣ管理情報Ｄｃ３の全エントリにおける「予約」フィールドをクリアする（値をＮＵＬＬとする）。つまり、ＰＣ管理情報Ｄｃ３に前回の予約内容が残っているかもしれないので、実行中ジョブ確認・予測部２０８は、前回の予約内容を今回の予約内容で上書きする準備として、ＰＣ管理情報Ｄｃ３の全エントリにおける「予約」フィールドをクリアする。
【０２９４】
続いて、ステップＳ２２０で実行中ジョブ確認・予測部２０８は、ＰＣ管理情報Ｄｃ３の内容をＰＣ予測情報Ｄｃ２にコピーする。ただし、「状態」フィールドに関しては、実行中ジョブ確認・予測部２０８は以下のように動作する。
【０２９５】
すなわち、コピー元のＰＣ管理情報Ｄｃ３のエントリにおいて、状態の値が“教育利用中”のとき、実行中ジョブ確認・予測部２０８は、コピー先のＰＣ予測情報Ｄｃ２のエントリにおいても状態の値は“教育利用中”と設定する。しかし、コピー元のＰＣ管理情報Ｄｃ３のエントリにおいて、状態の値が“教育利用中”以外のとき、実行中ジョブ確認・予測部２０８は、コピー先のＰＣ予測情報Ｄｃ２のエントリにおいて状態の値を“電源ＯＦＦ”に設定する。
【０２９６】
以上の設定により、研究利用モードでの運用中に一部のＰＣが教育用途に開放されて利用されている場合に、当該一部のＰＣが引き続き教育用途に利用されることを前提とした予約処理が可能となる。つまり、運用管理装置１００は、教育用途に利用されているＰＣをジョブの割り当て先の候補から除外して、ジョブの割り当ての予約処理を行うことができる。
【０２９７】
ステップＳ２２０の実行後、処理は図５ＢのステップＳ２２１に移行する。ステップＳ２２１〜Ｓ２３１は、ステップＳ２０９〜Ｓ２１７の処理により得られた実行ジョブ予測情報の各エントリに関する繰り返し処理である。
【０２９８】
まず、ステップＳ２２１で実行中ジョブ確認・予測部２０８は、実行ジョブ予測情報中の１件目のエントリから、ジョブＩＤ、キューＩＤ、並列数および使用ＰＣリストを得る。
【０２９９】
続くステップＳ２２２で実行中ジョブ確認・予測部２０８は、処理モードの値が“ａｓｓｉｇｎ”と“ｒｅｓｅｒｖｅ”のいずれであるかを判断する。処理モードの値が“ａｓｓｉｇｎ”のとき、処理はステップＳ２２３に移行し、処理モードの値が“ｒｅｓｅｒｖｅ”のとき、処理はステップＳ２２６に移行する。
【０３００】
ステップＳ２２３で実行中ジョブ確認・予測部２０８は、ステップＳ２２１または後述のステップＳ２３１で得た使用ＰＣリストにＰＣＩＤが含まれる各ＰＣについて、ＰＣ管理情報Ｄｃ３における当該ＰＣのエントリの状態を、“グリッド使用中”に設定する。
【０３０１】
次に、ステップＳ２２４で実行中ジョブ確認・予測部２０８は、ステップＳ２２１または後述のステップＳ２３１で得た使用ＰＣリストにＰＣＩＤが含まれるＰＣに対応する、教室ＩＤ、エリアＩＤ、スイッチＩＤそれぞれの集合をＰＣ管理情報Ｄｃ３から求める。
【０３０２】
例えば、使用ＰＣリストが（Ｐａ１５，Ｐａ１６，Ｐｂ０１，Ｐｂ０２）であるとする。この場合、実行中ジョブ確認・予測部２０８は、ＰＣＩＤがこの使用ＰＣリスト内のいずれかの要素と一致するエントリをＰＣ管理情報Ｄｃ３内で検索し、４つのエントリを得る。
【０３０３】
そして、実行中ジョブ確認・予測部２０８は、得た４つのエントリから、重複を除いて教室ＩＤを取り出す。すると、｛Ｒａ，Ｒｂ｝という教室ＩＤの集合が得られる。同様にして、実行中ジョブ確認・予測部２０８は、｛Ａａ１，Ａｂ１｝というエリアＩＤの集合と｛Ｓａ２，Ｓｂ１｝というスイッチＩＤの集合を得る。
【０３０４】
すると、次のステップＳ２２５で実行中ジョブ確認・予測部２０８は、ステップＳ２２１または後述のステップＳ２３１で得たジョブＩＤ、キューＩＤ、並列数、使用ＰＣリストと、ステップＳ２２４で求めた各ＩＤの集合を対応づけるエントリを作成する。なお、ステップＳ２２４で求めた各ＩＤの集合はリストで表されるものとする。つまり、ステップＳ２２５で作成されるエントリは、図３Ｂの情報Ｄｅのエントリと同じ形式である。
【０３０５】
実行中ジョブ確認・予測部２０８は、こうして作成したエントリをジョブ・ＰＣ管理情報Ｄｅ３に追加する。そして、処理はステップＳ２２９に移行する。
他方、ステップＳ２２６で実行中ジョブ確認・予測部２０８は、ステップＳ２２１または後述のステップＳ２３１で得た使用ＰＣリストにＰＣＩＤが含まれる各ＰＣについて、ＰＣ管理情報Ｄｃ３とＰＣ予測情報Ｄｃ２における当該ＰＣのエントリを更新する。具体的には、実行中ジョブ確認・予測部２０８は、当該ＰＣのエントリにおける「予約」フィールドの値を“あり”に設定する。
【０３０６】
次に、ステップＳ２２７で実行中ジョブ確認・予測部２０８は、ステップＳ２２１または後述のステップＳ２３１で得た使用ＰＣリストにＰＣＩＤが含まれるＰＣに対応する、教室ＩＤ、エリアＩＤ、スイッチＩＤそれぞれの集合をＰＣ管理情報Ｄｃ３から求める。ステップＳ２２７の詳細はステップＳ２２４と同様である。
【０３０７】
すると、次のステップＳ２２８で実行中ジョブ確認・予測部２０８は、ステップＳ２２１または後述のステップＳ２３１で得たジョブＩＤ、キューＩＤ、並列数、使用ＰＣリストと、ステップＳ２２７で求めた各ＩＤの集合を対応づけるエントリを作成する。なお、ステップＳ２２７で求めた各ＩＤの集合はリストで表されるものとする。つまり、ステップＳ２２８で作成されるエントリも、図３Ｂの情報Ｄｅのエントリと同じ形式である。
【０３０８】
実行中ジョブ確認・予測部２０８は、こうして作成したエントリをジョブ・ＰＣ予測情報Ｄｅ２に追加する。そして、処理はステップＳ２２９に移行する。
ステップＳ２２９において実行中ジョブ確認・予測部２０８は、ステップＳ２２１または後述のステップＳ２３１で得た使用ＰＣリストに含まれるＰＣＩＤの数を、起動済ＰＣ数に足し、加算結果を新たな起動済ＰＣ数として記憶する。
【０３０９】
すると、次のステップＳ２３０で実行中ジョブ確認・予測部２０８は、ステップＳ２０９〜Ｓ２１７で作成した実行ジョブ予測情報中のすべてのジョブ（つまりすべてのエントリ）についてステップＳ２２２〜Ｓ２２９の処理を行ったか否かを判断する。未処理のジョブが残っていれば、処理はステップＳ２３１に移行し、すべてのジョブが処理済ならば、処理はステップＳ２３２に移行する。
【０３１０】
ステップＳ２３１で実行中ジョブ確認・予測部２０８は、実行ジョブ予測情報中の次のエントリから、ジョブＩＤ、キューＩＤ、並列数、使用ＰＣリストを得る。そして、処理はステップＳ２２２に戻る。
【０３１１】
また、ステップＳ２３２で実行中ジョブ確認・予測部２０８は、引数として与えられた研究用ＰＣ台数から起動済ＰＣ数を減じ、その減算結果を「空きＰＣ数」として記憶する。
【０３１２】
そして、次のステップＳ２３３で実行中ジョブ確認・予測部２０８は、処理モードの値が“ａｓｓｉｇｎ”と“ｒｅｓｅｒｖｅ”のいずれであるかを判断する。処理モードの値が“ａｓｓｉｇｎ”のとき、処理はステップＳ２３５に移行し、処理モードの値が“ｒｅｓｅｒｖｅ”のとき、処理はステップＳ２３４に移行する。
【０３１３】
ステップＳ２３４で実行中ジョブ確認・予測部２０８は、「未使用ＰＣ経過情報出力処理」を行う。具体的には、実行中ジョブ確認・予測部２０８は、ジョブの割り当てを受け入れることができるＰＣのうちで、現時点でジョブを実行していないＰＣの台数を「未使用ＰＣ数」として計算する。そして、実行中ジョブ確認・予測部２０８は、未使用ＰＣ数とステップＳ２０２で得た予測用経過時間を対応づけたエントリをＰＣ経過情報Ｄｊに追加する。
【０３１４】
なお、実行中ジョブ確認・予測部２０８は、空きＰＣ数から経過中空きＰＣ数集計を減じることで未使用ＰＣ数を算出することができる。その理由は次のとおりである。
ジョブを実行する計算サーバとしてシステム１０１内で利用可能なＰＣ（換言すれば、教育用途に開放されていないＰＣ）の数は、図５Ａ〜５Ｂの処理に引数として与えられる研究用ＰＣ台数である。そして、研究用ＰＣ台数のＰＣのうち、現在ジョブを実行中であり、かつ実行中のジョブを予測対象時刻までに終えられないと予測されるＰＣの数が、起動済みＰＣ数である。
【０３１５】
したがって、研究用ＰＣ台数から起動済みＰＣ数を引いて得られる空きＰＣ数は、ジョブを実行する計算サーバとして利用可能なＰＣのうち、予測対象時刻ではジョブを実行していないと予測されるＰＣの台数である。具体的には、空きＰＣ数は、現在ジョブを実行中で、かつ実行中のジョブを予測対象時刻までに終えられると予測されるＰＣの数と、計算サーバとして利用可能だが現在はジョブを実行していないＰＣの数の和である。
【０３１６】
そして、経過中空きＰＣ数集計は、現在はジョブを実行中だが、予測対象時刻までにはジョブを終えると予測されるＰＣの台数である。よって、空きＰＣ数から経過中空きＰＣ数集計を減じることで、未使用ＰＣ数が得られる。換言すれば、未使用ＰＣ数は、現在から予測対象時刻まで、予測用経過時間が経過する間ずっと、新たなジョブの割り当て先として利用可能な状態にあるＰＣの数を示す。
【０３１７】
例えば、図３Ｂに例示のＰＣ経過情報Ｄｊのうち、空き時間が予測用経過時間の６０分と設定されている３番目の〈４，６０〉というエントリは、以上のようにしてステップＳ２３４で追加される。そして、以上のようにして実行中ジョブ確認・予測部２０８が未使用ＰＣ経過情報出力処理を行うと、続いて処理はステップＳ２３５へと移行する。
【０３１８】
ステップＳ２３５で実行中ジョブ確認・予測部２０８は空きＰＣ数を戻り値として返す。そして、実行中ジョブの確認・予約処理が終了する。
なお、こうして戻り値として返される空きＰＣ数は、前述のとおり、ジョブの実行用に利用可能なＰＣのうち、予測対象時刻ではジョブを実行していないと予測されるＰＣの台数を示す。したがって、空きＰＣ数は、ＰＣ経過情報Ｄｊの全エントリのＰＣ数の合計と等しい。
【０３１９】
さて、図６Ａ〜６Ｂは、図４のステップＳ１０８で実行される実行候補ジョブ選択処理のフローチャートである。また、図６Ｃは、実行候補ジョブ選択処理において行われる経過中確保可能空きＰＣ時間算出処理のフローチャートである。
【０３２０】
図６ＡのステップＳ３０１で実行候補ジョブ選択部２０９は、処理モードの値が“ａｓｓｉｇｎ”と“ｒｅｓｅｒｖｅ”のいずれであるかを判定する。処理モードの値が“ａｓｓｉｇｎ”のとき、処理はステップＳ３０２に移行し、処理モードの値が“ｒｅｓｅｒｖｅ”のとき、処理はステップＳ３０３に移行する。
【０３２１】
ステップＳ３０２で実行候補ジョブ選択部２０９は、実行可能ジョブ情報Ｄｆ３を実行候補ジョブ情報Ｄｆ１とする（つまり、これ以降は実行候補ジョブ情報Ｄｆ１として具体的には実行可能ジョブ情報Ｄｆ３を使うことに決定する）。そして、処理はステップＳ３０５に移行する。
【０３２２】
また、ステップＳ３０３で実行候補ジョブ選択部２０９は、図３ＢのパラメタファイルＤｄから予測用経過時間を得る。図３Ｂの例では、予測用経過時間は３６００秒である。
続くステップＳ３０４で実行候補ジョブ選択部２０９は、実行予測ジョブ情報Ｄｆ２を実行候補ジョブ情報Ｄｆ１とする。そして、処理はステップＳ３０５に移行する。
【０３２３】
ステップＳ３０５で実行候補ジョブ選択部２０９は、「必要ＰＣ数」を０に初期化する。必要ＰＣ数は、割り当てまたは予約の対象となる個々のジョブの並列数の総和を表すための変数である。必要ＰＣ数は、引数として与えられる空きＰＣ数とともに、割り当てまたは予約の対象として新たなジョブをさらに選択する余地があるか否かの判断に使われる。
【０３２４】
そして、次のステップＳ３０６で実行候補ジョブ選択部２０９は、「候補ジョブ数」を０に初期化する。候補ジョブ数は、引数として与えられる空きＰＣ数が示すシステム１０１の余力の範囲内で実行可能なジョブの数を表すための変数である。
【０３２５】
続いて、ステップＳ３０７で実行候補ジョブ選択部２０９は、実行候補ジョブ情報Ｄｆ１を初期化する。すなわち、処理モードが“ｒｅｓｅｒｖｅ”のときは実行予測ジョブ情報Ｄｆ２を、処理モードが“ａｓｓｉｇｎ”のときは実行可能ジョブ情報Ｄｆ３を、実行候補ジョブ選択部２０９は初期化する。なおステップＳ３０７での初期化とは、全エントリの削除のことである。
【０３２６】
続いてステップＳ３０８で実行候補ジョブ選択部２０９は、ジョブスケジューラ２０４に問い合わせることにより、実行待ちジョブ件数を得る。
そして、ステップＳ３０９で実行候補ジョブ選択部２０９は、実行待ちジョブ件数が０であるか、それとも１以上であるかを判断する。実行待ちジョブ件数が０のとき、処理はステップＳ３１０に移行し、実行待ちジョブ件数が１以上のとき、処理はステップＳ３１１に移行する。
【０３２７】
ステップＳ３１０で実行候補ジョブ選択部２０９は、戻り値として０を返し、実行候補ジョブ選択処理を終える。すなわち、実行待ちのジョブが存在しなければ、そもそも新たに割り当てや割り当ての予約を行う対象が存在しないので、実行候補ジョブ選択部２０９は０を返す。
【０３２８】
他方、実行待ちのジョブが存在する場合、実行候補ジョブ選択部２０９はステップＳ３１１で、実行待ちの各ジョブについてのエントリを含む情報をジョブスケジューラ２０４から得る。具体的には、各エントリは、ジョブの優先度と、ジョブＩＤと、キューＩＤと、並列数と、ジョブスケジューラ２０４への投入時刻（つまりジョブ投入コマンドの受付時刻）を対応づけたものである。
【０３２９】
実行候補ジョブ選択部２０９は、ジョブスケジューラ２０４から得た情報を、優先度を第１ソートキーとし、ジョブスケジューラ２０４への投入時刻を第２ソートキーとしてソートする。なお、ソート順は、優先度が高いものから低いものへ、投入時刻が古いものから新しいものへ、という順である。
【０３３０】
そして、次のステップＳ３１２で実行候補ジョブ選択部２０９は、ソート後の１件目の実行待ちジョブの情報を得る。
続くステップＳ３１３で実行候補ジョブ選択部２０９は、「処理モードが“ｒｅｓｅｒｖｅ”でありかつ運用モードが“ｒｅｓｅａｒｃｈ”である」という条件が成立するか否かを判断する。そして、この条件が成立するとき、処理はステップＳ３１４に移行する。他方、処理モードが“ａｓｓｉｇｎ”であるか、または運用モードが“ｅｄｕｃａｔｅ”のとき、処理はステップＳ３２５に移行する。ステップＳ３１３の分岐の意味については、後述する。
【０３３１】
ステップＳ３１４で実行候補ジョブ選択部２０９は、空きＰＣ数が、ステップＳ３１２または後述のステップＳ３２７で情報を得たジョブ（以下「当該ジョブ」という）の並列数以上であるか否かを判断する。そして、空きＰＣ数が当該ジョブの並列数以上ならば処理はステップＳ３１５に移行する。逆に空きＰＣ数が当該ジョブの並列数未満ならば、予測対象時刻における割り当ての予約を行う対象となりうる実行待ちのジョブはこれ以上存在しないので、処理はステップＳ３２８に移行する。
【０３３２】
ステップＳ３１５で実行候補ジョブ選択部２０９は、当該ジョブのジョブＩＤをもとに、当該ジョブの実行予測時間をジョブ実行予測時間情報Ｄａから得る。
そして、次のステップＳ３１６で実行候補ジョブ選択部２０９は、ステップＳ３１５で得た当該ジョブの実行予測時間を当該ジョブの並列数に乗じ、得られた積を「ジョブ総予測時間」として記憶する。
【０３３３】
すると、次のステップＳ３１７で実行候補ジョブ選択部２０９は、図６Ｃに示す「経過中確保可能空きＰＣ時間算出処理」を行う。
詳細は図６Ｃとともに後述するが、経過中確保可能空きＰＣ時間算出処理は、ＰＣ経過情報Ｄｊに基づいて、「予測対象時刻までの期間中に、何台のＰＣが、予測対象時刻から遡ってどれだけの時間の間、当該ジョブに割り当て可能なのか」を調べる処理を含む。実行候補ジョブ選択部２０９は、調べた結果を反映するように、ＰＣ経過情報Ｄｊのエントリを並べ替える。また、経過中確保可能空きＰＣ時間算出処理の中で、実行候補ジョブ選択部２０９は、予測対象時刻までの期間中に当該ジョブの実行にかけることが可能な延べ時間を「経過中確保可能空きＰＣ時間」として求め、記憶する。
【０３３４】
例えば、ＰＣ経過情報Ｄｊが図３Ｂに示したとおりであるとする。そして、実行候補ジョブ選択部２０９は実行待ちのジョブのうち１件目のジョブに注目しており、当該ジョブは、並列数が１４であり実行予測時間が１０分であるとする。
【０３３５】
すると、実行候補ジョブ選択部２０９は、ステップＳ３１７において「予測対象時刻までの期間中に、１４台のＰＣが、予測対象時刻から遡って最大で３０分間、当該ジョブに割り当て可能である」と認識する。また、実行候補ジョブ選択部２０９は、経過中確保可能空きＰＣ時間として４２０分（＝３０分×１４並列）と記憶する。
【０３３６】
なぜなら、まず、図３ＢのＰＣ経過情報Ｄｊの１つ目の〈１２，３０〉というエントリが示すように、１２台のＰＣが、予測対象時刻の直前の３０分間は利用可能だからである。そして、３つ目の〈４，６０〉というエントリが示すように、さらに４台のＰＣが６０分間ずっと利用可能なので、この４台のうちの２台を、６０分間のうちの後半３０分間、当該ジョブに利用することも当然可能だからである。
【０３３７】
そして、当該ジョブの並列数をまかなうには、以上の１４台（＝１２台＋２台）で十分であり、図３ＢのＰＣ経過情報Ｄｊの２番目の〈８，２０〉というエントリに相当する８台は、当該ジョブの割り当て先として考慮しなくてよい。
【０３３８】
実行候補ジョブ選択部２０９は、以上の認識に基づいて、ＰＣ経過情報Ｄｊのエントリの順序を並べ替える。具体的に、実行候補ジョブ選択部２０９は、１２台すべてのＰＣが当該ジョブの割り当て先として考慮の対象になる〈１２，３０〉というエントリを１番目に並べる。また、実行候補ジョブ選択部２０９は、４台のうち一部のＰＣが当該ジョブの割り当て先として考慮の対象になる〈４，６０〉というエントリを２番目に並べる。そして、実行候補ジョブ選択部２０９は、８台のうちどのＰＣも当該ジョブの割り当て先として考慮の対象にならない〈８，２０〉というエントリを最後に並べる。
【０３３９】
そして、以上のようなステップＳ３１７における経過中確保可能空きＰＣ時間算出処理の実行後、処理はステップＳ３１８に移行する。
続くステップＳ３１８で実行候補ジョブ選択部２０９は、ステップＳ３１６で記憶したジョブ総予測時間が、ステップＳ３１７で記憶した経過中確保可能空きＰＣ時間より長いか否かを判断する。
【０３４０】
ジョブ総予測時間が経過中確保可能空きＰＣ時間より長い場合、実行候補ジョブ選択部２０９は「予測対象時刻までに当該ジョブが終了してしまうことはないだろう」と判断する。この場合、当該ジョブの実行が可能な状況なのか否かを確かめるため、処理はステップＳ３１９に移行する。
【０３４１】
他方、ジョブ総予測時間が経過中確保可能空きＰＣ時間以下である場合、実行候補ジョブ選択部２０９は「仮に、当該ジョブが実行されるとしても、予測対象時刻までに当該ジョブは終了するだろう」と予測する。そして、この予測に基づき、実行候補ジョブ選択部２０９は「当該ジョブは予測対象時刻における予約の対象から外してよい」と判断する。そこで、予測対象時刻における予約の対象として別のジョブを検討する前に、「空きＰＣ数に数えられるＰＣの予測対象時刻までの状況が当該ジョブの実行によりどう変化するか」ということをＰＣ経過情報Ｄｊに反映するため、処理はステップＳ３２４に移行する。
【０３４２】
さて、ステップＳ３１９で実行候補ジョブ選択部２０９は、引数として与えられた空きＰＣ数を、必要ＰＣ数と当該ジョブの並列数の和と比較する。
空きＰＣ数が、必要ＰＣ数と当該ジョブの並列数の和以上であれば、当該ジョブを実行する余力がシステム１０１にあり、当該ジョブは、予測対象時刻における予約の対象となる可能性がある。そこで、「空きＰＣ数に数えられるＰＣの予測対象時刻までの状況が当該ジョブの実行によりどう変化するか」ということをＰＣ経過情報Ｄｊに反映するため、処理はステップＳ３２０に移行する。
【０３４３】
他方、空きＰＣ数が、必要ＰＣ数と当該ジョブの並列数の和未満であれば、当該ジョブを実行する余力がシステム１０１にはないため、処理はステップＳ３２８に移行する。
さて、ここで、説明の便宜上、ステップＳ３２０とＳ３２４について具体例を挙げてまとめて説明し、その後でステップＳ３２１〜Ｓ３２３の説明に移ることにする。
【０３４４】
ここでは、具体的に以下の状況を例としてステップＳ３２０とＳ３２４について説明する。すなわち、実行待ちの１件目のジョブは、ステップＳ３１７に関して例示したように、並列数が１４で実行予測時間が１０分とする。また、実行待ちの２件目のジョブは、並列数が８で実行予測時間が１５分、実行待ちの３件目のジョブは、並列数が４で実行予測時間が６０分であるとする。
【０３４５】
この３つの実行待ちジョブを処理する例を用いて、ステップＳ３２０の「ジョブ継続実行用更新処理」と、ステップＳ３２４の「ジョブ終了用更新処理」の動作について以下に説明する。なお、実行待ちジョブの順序に応じて説明する関係上、「ジョブ終了用更新処理」、「ジョブ継続実行用更新処理」の順に説明する。
【０３４６】
当該ジョブが１件目の実行待ちジョブである場合、ステップＳ３２４で実行候補ジョブ選択部２０９は、ジョブ終了用更新処理を行う。ジョブ終了用更新処理は、「予測対象時刻までに実行が完了する」と予測された当該ジョブに関してＰＣ経過情報Ｄｊを更新する処理である。つまり、ジョブ終了用更新処理は、「当該ジョブを実行したとすると、空きＰＣ数に数えられるＰＣの予測対象時刻までの状況は、どのように変わるか」ということをＰＣ経過情報Ｄｊに反映する処理である。
【０３４７】
具体的には、実行候補ジョブ選択部２０９は、エントリ中の空き時間を更新する処理を１番目のエントリから順に行い、空き時間を減じたエントリにおけるＰＣ数の和が当該ジョブの並列数に達したところで処理を止める。また、必要に応じて、実行候補ジョブ選択部２０９は、ＰＣ経過情報Ｄｊにエントリを追加する。
【０３４８】
例えば、ステップＳ３１７に関する上記の例の場合、ＰＣ経過情報Ｄｊが３つのエントリを有する。そして、ステップＳ３１７での並べ替えの結果、１番目のエントリは〈１２，３０〉、２番目のエントリは〈４，６０〉、３番目のエントリは〈８，２０〉である。そして、実行候補ジョブ選択部２０９が当該ジョブとして注目している１件目の実行待ちジョブは、並列数が１４であり実行予測時間が１０分である。
【０３４９】
この場合、１２＜１４＜１２＋４なので、ＰＣ経過情報ＤｊのエントリにおけるＰＣ数の和が当該ジョブの並列数である１４に達するのは、２番目のエントリにおいてである。そして、２番目のエントリまでの範囲で、空き時間の最小値は３０分である。
【０３５０】
よって、上記の並び順は、「１番目と２番目のエントリに対応するＰＣは、予測対象時刻の直前の最大３０分間は、当該ジョブのために利用可能である」ということを示している。例えば、予測対象時刻が２２時であれば、１番目と２番目のエントリに対応するＰＣは、２１時３０分から当該ジョブのために利用可能である。そして、当該ジョブの実行予測時間は前記のとおり１０分である。
【０３５１】
よって、上記の利用可能な３０分から当該ジョブの実行予測時間である１０分を減じた残りの２０分が、１４台のＰＣに当該ジョブを割り当てたときの、それら１４台のＰＣにとっての新たな空き時間となる。つまり、１４台のＰＣが、２１時３０分からの１０分間、当該ジョブの実行のために利用されると、１４台のＰＣの空き時間は、２１時４０分から予測対象時刻である２２時までの２０分間になる。
【０３５２】
なお、以上の説明から明らかなとおり、２番目の〈４，６０〉というエントリに対応する４台のＰＣのうち当該ジョブの割り当て先として予測される２台に関しては、最初の３０分間はどのジョブも実行しないという仮定のもとに、以後の処理が行われることになる。つまり、「２１時から、１番目の〈１２，３０〉というエントリに対応する１２台が空く２１時３０分までの３０分間は、この２台のＰＣは、どのジョブも実行しないアイドル状態とする」という前提のもと、以後の処理が行われる。したがって、この２台に関しては、２１時３０分からの１０分間で当該ジョブを実行した後、２２時までの残りの２０分が、他のジョブの割り当てが可能な空き時間として残されるのであり、５０分（＝６０分−１０分）が新たな空き時間となるわけではない。
【０３５３】
実行候補ジョブ選択部２０９は、上記のような空き時間の変化をＰＣ経過情報Ｄｊに反映するため、具体的には次のような処理を行う。
実行候補ジョブ選択部２０９は、まず、当該ジョブの割り当てによって減少した後の空き時間を計算する。すなわち、実行候補ジョブ選択部２０９は、ステップＳ３１７で計算した経過中確保可能空きＰＣ時間を当該ジョブの並列数で割り、得られた商から当該ジョブの実行予測時間を減じる。その結果、例えば上記の例であれば、２０分（＝４２０分÷１４並列−１０分）という新たな空き時間が得られる。
【０３５４】
そして、実行候補ジョブ選択部２０９は、１番目の〈１２，３０〉というエントリの空き時間を上記のようにして計算した新たな空き時間に設定しなおす。つまり、実行候補ジョブ選択部２０９は１番目のエントリを〈１２，２０〉と更新する。
【０３５５】
また、実行候補ジョブ選択部２０９は、２番目の〈４，６０〉というエントリに関しては、このエントリ自身を〈２，２０〉と更新するとともに、新たな〈２，６０〉というエントリをＰＣ経過情報Ｄｊに追加する。なお、３番目のエントリは〈８，２０〉に関しては、実行候補ジョブ選択部２０９は何も行わない。
【０３５６】
すなわち、実行候補ジョブ選択部２０９は、エントリの空き時間を、上記のようにして計算した新たな空き時間に上書き更新する処理を、上書き更新したエントリのＰＣ数が当該ジョブの並列数に達するまで行う。
【０３５７】
正確には、あるエントリ（上記の例では２番目のエントリ）までのＰＣ数の和が当該ジョブの並列数を超える場合は、実行候補ジョブ選択部２０９は、ＰＣ数の和が当該ジョブの並列数を超える当該エントリを更新し、さらに、エントリの追加も行う。すなわち、実行候補ジョブ選択部２０９は、当該エントリ（上記の例では２番目のエントリ）を、当該ジョブへの割り当ての対象となる台数（上記の例では１４台−１２台＝２台）と計算した新たな空き時間（上記の例では２０分）とを対応づけるよう、更新する。そして、実行候補ジョブ選択部２０９は、残りの台数（上記の例では４台−２台＝２台）を当該エントリの元の空き時間（上記の例では６０分）と対応づける新たなエントリを、ＰＣ経過情報Ｄｊに追加する。
【０３５８】
以上のジョブ終了用更新処理により、ＰＣ経過情報Ｄｊは、例えば上記の例の場合は、〈１２，２０〉、〈２，２０〉、〈２，６０〉、〈８，２０〉という４つのエントリを有することになる。そして、以上のようにステップＳ３２４で実行候補ジョブ選択部２０９がジョブ終了用更新処理を行うと、処理はステップＳ３２６に移行する。
【０３５９】
さて、以上説明したステップＳ３２４のジョブ終了用更新処理は、ステップＳ３１８において、ジョブ総予測時間が経過中確保可能空きＰＣ時間以下であると判明した場合に実行される処理である。他方、ジョブ総予測時間が経過中確保可能空きＰＣ時間より長いとステップＳ３１８で判明した場合、ステップＳ３１９の条件判定を経て、もし空きＰＣ数が必要ＰＣ数と当該ジョブの並列数の和以上であれば、Ｓ３２０のジョブ継続実行用更新処理が実行される。つまり、実行候補ジョブ選択部２０９がステップＳ３２０のジョブ継続実行用更新処理を実行するのは、ステップＳ３１８において、「予測対象時刻までに当該ジョブが終了してしまうことはないだろう」と判断した場合のみである。
【０３６０】
以下、ステップＳ３２０のジョブ継続実行用更新処理について、ステップＳ３２４についての上記の例を引き続き参照して説明する。なお、具体的には、実行待ちジョブの処理が進み、実行候補ジョブ選択部２０９が３件目の実行待ちジョブを当該ジョブとして処理する例を用いてジョブ継続実行用更新処理について説明する。
【０３６１】
当該ジョブが３件目の実行待ちのジョブである場合は、ステップＳ３２０で実行候補ジョブ選択部２０９は、ジョブ継続実行用更新処理を行う。ジョブ継続実行用更新処理は、「予測対象時刻までには実行が完了しない」と予測された当該ジョブに関してＰＣ経過情報Ｄｊを更新する処理である。つまり、ジョブ継続実行用更新処理は、「当該ジョブを実行したとすると、空きＰＣ数に数えられるＰＣの予測対象時刻までの状況は、どのように変わるか」ということをＰＣ経過情報Ｄｊに反映する処理である。
【０３６２】
ジョブ継続実行用更新処理において、実行候補ジョブ選択部２０９は、ステップＳ３１７の経過中確保可能空きＰＣ時間算出処理によってエントリの順序を並べ替えたＰＣ経過情報Ｄｊを、１番目のエントリから順に処理してゆく。具体的には、実行候補ジョブ選択部２０９は、エントリ中のＰＣ数を減じる処理を１番目のエントリから順に行い、減じたＰＣ数の和が当該ジョブの並列数に達したところで処理を止める。
【０３６３】
ＰＣ経過情報Ｄｊは、実行候補ジョブ選択部２０９が２件目の実行待ちのジョブについての処理を終えた時点で、〈８，５〉と〈８，２０〉と〈４，２０〉と〈２，２０〉と〈２，６０〉という５つのエントリを有している。一方、３件目の実行待ちのジョブでは、ステップＳ３１６で２４０分（＝６０分×４並列）がジョブ総予測時間として得られている。
【０３６４】
なお、この５つのエントリの中で最も長い空き時間は、〈２，６０〉というエントリの６０分であり、当該ジョブの実行予測時間である６０分以上である。しかし、〈２，６０〉というエントリに対応する２台のＰＣだけでは、当該ジョブの並列数の４に満たない。ステップＳ３１７では、当該ジョブの並列数に相当する４台のＰＣを確保することが可能な最長の時間が、結局は２０分のみであることが判明する。
【０３６５】
つまり、ステップＳ３１７では、経過中確保可能空きＰＣ時間として８０分（＝２０分×４並列）が得られる。実際に、例えば、〈８，２０〉というエントリで示される８台のＰＣのうちの４台が、当該ジョブのために２０分間利用可能である。
【０３６６】
そして、実行候補ジョブ選択部２０９は、ステップＳ３１７でさらに、この〈８，２０〉というエントリが先頭に来るように、ＰＣ経過情報Ｄｊのエントリを並べ替える。
以下では説明の便宜上、例えば、〈８，２０〉、〈４，２０〉、〈８，５〉、〈２，６０〉、〈２，２０〉という順序にＰＣ経過情報Ｄｊのエントリが並べ替えられたとする。
【０３６７】
そして、この場合、２４０分は８０分より長い。また、図５ＢのステップＳ２３５に関して説明したように、図６Ａの処理の開始時点で、空きＰＣ数は、ＰＣ経過情報Ｄｊの全エントリのＰＣ数の合計と等しいので、現在注目している例の場合、空きＰＣ数は２４（＝１２＋８＋４）である。よって、当該ジョブが３件目の実行待ちのジョブである場合、ステップＳ３１８とＳ３１９の条件判定を経て、ステップＳ３２０が実行される。
【０３６８】
具体的には、ステップＳ３２０で実行候補ジョブ選択部２０９は、ＰＣ経過情報Ｄｊのエントリ中のＰＣ数を減じる処理を、減じたＰＣ数の和が当該ジョブの並列数に達するまで行う。
【０３６９】
この場合、４＜８なので、ＰＣ経過情報ＤｊのエントリにおけるＰＣ数の和が当該ジョブの並列数である４に達するのは、１番目のエントリにおいてである。よって、実行候補ジョブ選択部２０９は１番目のエントリを〈４，２０〉と更新し、２〜５番目のエントリに対しては何も行わない。この更新により減じられるＰＣ数は、全体として４である。
【０３７０】
なお、別の例として、当該ジョブの並列数が１０である場合についても説明しておく。この場合、実行候補ジョブ選択部２０９は、１番目のエントリはＰＣ数を８減じて〈０，２０〉と更新し、２番目のエントリはＰＣ数を２（＝１０−８）減じて〈２，２０〉と更新する。
【０３７１】
つまり、実行候補ジョブ選択部２０９は、減じたＰＣ数の和が並列数と等しくなるように、１番目のエントリから順に、エントリ中のＰＣ数を減じる処理を行う。そして、減じたＰＣ数の和が当該ジョブの並列数に達したら、残りのエントリについては、実行候補ジョブ選択部２０９はステップＳ３２０では何も行わない。
【０３７２】
以上のようにステップＳ３２０で実行候補ジョブ選択部２０９がジョブ継続実行用更新処理を行うと、処理はステップＳ３２１に移行する。
ステップＳ３２１で実行候補ジョブ選択部２０９は、必要ＰＣ数に当該ジョブの並列数を足し、加算結果を新たな必要ＰＣ数として記憶する。
【０３７３】
そして、次のステップＳ３２２で実行候補ジョブ選択部２０９は、当該ジョブの情報を実行候補ジョブ情報Ｄｆ１に追加する。具体的には、実行候補ジョブ選択部２０９は、当該ジョブのジョブＩＤとキューＩＤと並列数を対応づけたエントリを、実行候補ジョブ情報Ｄｆ１に追加する。
【０３７４】
さらに、次のステップＳ３２３で実行候補ジョブ選択部２０９は、候補ジョブ数を１だけ増やす。そして、処理はステップＳ３２６に移行する。
ここで、ステップＳ３１３の分岐の説明に戻る。ステップＳ３１３において、処理モードが“ａｓｓｉｇｎ”であるか、または運用モードが“ｅｄｕｃａｔｅ”であると判明した場合、上記のようにステップＳ３２５の処理が行われる。
【０３７５】
具体的には、ステップＳ３２５で実行候補ジョブ選択部２０９は、引数として与えられた空きＰＣ数を、必要ＰＣ数と当該ジョブの並列数の和と比較する。ステップＳ３２５の比較はステップＳ３１９の比較と同様である。
【０３７６】
空きＰＣ数が、必要ＰＣ数と当該ジョブの並列数の和以上であれば、当該ジョブを実行する余力がシステム１０１にあり、当該ジョブは、実行の対象となる可能性がある。そこで、必要ＰＣ数を更新し、当該ジョブの情報を実行候補ジョブ情報Ｄｆ１に追加し、候補ジョブ数を数えるため、処理はステップＳ３２１に移行する。
【０３７７】
逆に、空きＰＣ数が、必要ＰＣ数と当該ジョブの並列数の和未満であれば、当該ジョブを実行する余力がシステム１０１はないため、処理はステップＳ３２８に移行する。
ところで、ステップＳ３２６の処理は、上記のとおり、ステップＳ３２４の実行後か、ステップＳ３１９とＳ３２０を経てのステップＳ３２１〜Ｓ３２３の実行後か、またはステップＳ３２５を経てのステップＳ３２１〜Ｓ３２３の実行後に行われる。そのステップＳ３２６で実行候補ジョブ選択部２０９は、ステップＳ３１１で情報を得たすべての実行待ちジョブについて、ステップＳ３１３以降の処理が済んだか否かを判断する。未処理の実行待ちジョブが残っていれば、処理はステップＳ３２７に移行し、すべての実行待ちジョブについて処理済であれば、処理はステップＳ３２８に移行する。
【０３７８】
ステップＳ３２７で実行候補ジョブ選択部２０９は、ステップＳ３１１でソートした情報から、現在注目しているジョブのエントリの次のエントリ（つまり次の実行待ちジョブの情報）を得る。そして、処理はステップＳ３１３に戻る。
【０３７９】
また、ステップＳ３２８で実行候補ジョブ選択部２０９は、候補ジョブ数を戻り値として返し、実行候補ジョブ選択処理を終える。
以上の実行候補ジョブ選択処理によれば、ステップＳ３１１でソートされた順位が高いものから、空きＰＣ数が示す余力の範囲内で最大限のジョブが選択される。
【０３８０】
例えば、上記のステップＳ３２０などの例とは異なる例として、現在ジョブスケジューラ２０４において７つのジョブが実行待ちであり、ステップＳ３１１でソートされた順にそれぞれの並列数を挙げると４、４、１６、８、４、１６、８であるとする。また、説明の簡単化のため、処理モードが“ａｓｓｉｇｎ”であるか、またはどのジョブの実行予測時間も予測用経過時間より長いものとし、空きＰＣ数が４８であるとする。
【０３８１】
この場合、ソート順が５位までの５つのジョブの並列数の和は３６であり４８以下だが、ソート順が６位のジョブの並列数を３６に足すと５２となり４８を超えてしまう。よって、ソート順が５位までの５つのジョブが割り当てまたは予約の対象として実行候補ジョブ情報Ｄｆ１に追加される。なお、ソート順が７位のジョブの並列数を３６に足しても４８以下ではあるが、６位のジョブが対象から外されるため７位以下のジョブは自動的に対象から外される。
【０３８２】
また、ステップＳ３１３の場合分けについて意味を補足説明すると、次のとおりである。
処理モードが“ａｓｓｉｇｎ”の場合は、実行待ちのジョブは、割り当て可能なＰＣさえあれば、すべて割り当ての対象となる。
【０３８３】
他方、処理モードが“ｒｅｓｅｒｖｅ”の場合は、もし運用モードが“ｒｅｓｅａｒｃｈ”であれば、実行待ちのジョブのすべてが予約の対象となるとは限らない。よって、実行候補ジョブ選択部２０９は、予測対象時刻までに終了してしまいそうなジョブを、割り当ての予約を行う対象から除外する。換言すれば、実行候補ジョブ選択部２０９は、現在は実行待ちだが予測対象時刻には実行待ちではなくなっていそうなジョブを予約の対象から除外する。
【０３８４】
しかし、処理モードが“ｒｅｓｅｒｖｅ”の場合であっても、もし運用モードが“ｅｄｕｃａｔｅ”であれば、実行待ちのジョブは、割り当て可能なＰＣさえあれば、すべて予約の対象となる。なぜなら、運用モードが“ｅｄｕｃａｔｅ”ならば、予測対象時刻は常に図３ＢのパラメタファイルＤｄに規定されているグリッド運用開始時刻であり、現在から予測対象時刻までの間にジョブが実行されることはないからである。つまり、「現在は実行待ちだが、予測対象時刻には実行待ちではなくなっている」と予測可能なジョブは、運用モードが“ｅｄｕｃａｔｅ”の場合には存在しないからである。よって、予約の対象から除外するジョブは存在しない。
【０３８５】
もちろん、実際には、教育利用モードでの運用期間中に、実行待ちのジョブが端末機１０５からキャンセルされることはありうる。しかし、特定のジョブがグリッド運用開始時刻までにキャンセルされるか否かは、予測不能である。よって、ステップＳ３１３の判断基準は、上記のように「処理モードが“ｒｅｓｅｒｖｅ”で、かつ運用モードが“ｒｅｓｅａｒｃｈ”であるか否か」なのである。
【０３８６】
続いて、図６Ｃを参照して、図６ＡのステップＳ３１７で実行される経過中確保可能空きＰＣ時間算出処理の詳細を説明する。なお、図６Ａ〜６Ｂでの説明と同様に、以下の図６Ｃの説明においても、図６ＡのステップＳ３１７で実行候補ジョブ選択部２０９が注目しているジョブのことを「当該ジョブ」という。
【０３８７】
ステップＳ３３１で実行候補ジョブ選択部２０９は、「経過中確保可能空きＰＣ時間リスト」を空に初期化する。
そして、次のステップＳ３３２で実行候補ジョブ選択部２０９は、ＰＣ経過情報Ｄｊのエントリの並び順のすべてのパターンを作成する。なお、以下では説明の便宜上、ステップＳ３３２で作成されたｎ番目のパターンを「第ｎパターンＰＣ経過情報」という。
【０３８８】
例えば、図３Ｂの例のようにＰＣ経過情報Ｄｊが３つのエントリを有する場合、エントリの並び順は６（＝３！）通りある。よって、ステップＳ３３２で実行候補ジョブ選択部２０９は、６通りのパターンを作成する。
【０３８９】
続くステップＳ３３３で実行候補ジョブ選択部２０９は、ステップＳ３３２で作成したパターンを順に数えるための変数ｎの値を１に初期化する。そして、処理はステップＳ３３４に移行する。
【０３９０】
ステップＳ３３４で実行候補ジョブ選択部２０９は、第ｎパターンＰＣ経過情報にしたがって「第ｎ経過中確保可能空きＰＣ時間」を算出する。
具体的には、実行候補ジョブ選択部２０９は、第ｎパターンＰＣ経過情報におけるエントリの並び順にしたがって、１番目のエントリから順に注目する。そして、実行候補ジョブ選択部２０９は、１番目のエントリから、ＰＣ数の合計が当該ジョブの並列数以上になるエントリまでの範囲で、空き時間の最小値を求め、求めた最小値と当該ジョブの並列数の積を、第ｎ経過中確保可能空きＰＣ時間として算出する。なお、すべてのエントリのＰＣ数の合計が当該ジョブの並列数に満たない場合は、実行候補ジョブ選択部２０９は、第ｎ経過中確保可能空きＰＣ時間を０に設定する。
【０３９１】
例えば、第ｎパターンＰＣ経過情報が、〈８，２０〉、〈１２，３０〉、〈４，６０〉という順に並んだ３つのエントリを有するとし、当該ジョブの並列数を１４とする。すると、８＜１４＜８＋１２なので、ＰＣ数の合計が当該ジョブの並列数以上になるエントリは２番目のエントリである。そして、１番目のエントリから２番目のエントリまでの範囲で空き時間の最小値は、１番目のエントリにおける２０分である。よって、実行候補ジョブ選択部２０９は、４２０分（＝２０分×１４並列）を第ｎ経過中確保可能空きＰＣ時間として算出する。
【０３９２】
この例は、次のことを示す。すなわち、１番目のエントリに対応する８台のＰＣと２番目のエントリに対応するＰＣのうちの６台との合計１４台のＰＣに当該ジョブを割り当て、なるべく早く当該ジョブの実行を開始することにすると、当該ジョブの開始時刻は、予測対象時刻の２０分前となる。
【０３９３】
以上のようにしてステップＳ３３４で実行候補ジョブ選択部２０９が第ｎ経過中確保可能空きＰＣ時間を算出すると、処理はステップＳ３３５に移行する。そして、ステップＳ３３５において、実行候補ジョブ選択部２０９は、経過中確保可能空きＰＣ時間リストに、ステップＳ３３４で算出した第ｎ経過中確保可能空きＰＣ時間を加える。
【０３９４】
そして、次のステップＳ３３６で実行候補ジョブ選択部２０９は、ステップＳ３３２で作成したＰＣ経過情報Ｄｊのすべてのパターンについて処理したか否かを判断する。
すなわち、変数ｎの値がＰＣ経過情報Ｄｊのエントリ数の階乗に達していれば、すべてのＰＣ経過情報Ｄｊのパターンについて処理済みなので、処理はステップＳ３３８に移行する。逆に、変数ｎの値がＰＣ経過情報Ｄｊのエントリ数の階乗未満ならば、未処理のパターンが残っているので、処理はステップＳ３３７に移行する。
【０３９５】
ステップＳ３３７で実行候補ジョブ選択部２０９は変数ｎの値を１増やす。そして、処理はステップＳ３３４に戻る。
また、ステップＳ３３８で実行候補ジョブ選択部２０９は、経過中確保可能空きＰＣ時間リストから最大値を求め、求めた最大値を「経過中確保可能空きＰＣ時間」として記憶する。
【０３９６】
例えば、ＰＣ経過情報Ｄｊが図３Ｂに示した３つのエントリを含む場合、経過中確保可能空きＰＣ時間リストは、６（＝３！）通りのパターンに対応する６つの値を要素として含む、（２８０，４２０，２８０，２８０，４２０，２８０）というリストである。よって、この例での経過中確保可能空きＰＣ時間は、４２０分である。
【０３９７】
そして、ステップＳ３３８の後、処理はステップＳ３３９に移行する。ステップＳ３３９で実行候補ジョブ選択部２０９は、経過中確保可能空きＰＣ時間リストの中で、ステップＳ３３８で経過中確保可能空きＰＣ時間として記憶した最大値が何番目の要素にあたるかという位置を求め、求めた位置を変数ｍとして記憶する。
【０３９８】
そして、次のステップＳ３４０で実行候補ジョブ選択部２０９は、ＰＣ経過情報Ｄｊに第ｍパターンＰＣ経過情報の内容をコピーする。
すなわち、ステップＳ３３９によれば、ＰＣ経過情報Ｄｊのすべてのパターンのうちの第ｍパターンＰＣ経過情報にしたがって算出した第ｍ経過中確保可能空きＰＣ時間が、予測対象時刻までの期間の中で当該ジョブの実行に費やせる最長の時間を表す。換言すれば、第ｍパターンＰＣ経過情報は、最も早く当該ジョブの実行を開始することができる場合に対応し、第ｍ経過中確保可能空きＰＣ時間は、最も早く当該ジョブの実行を開始するとしたら開始時刻が予測対象時刻のどれだけ前になるかを示す。
【０３９９】
よって、ステップＳ３４０で実行候補ジョブ選択部２０９は、第ｍパターンＰＣ経過情報でＰＣ経過情報Ｄｊを置き換える。その結果、ＰＣ経過情報Ｄｊは、最長の時間（つまり経過中確保可能空きＰＣ時間として記憶している時間）を当該ジョブに割り当てるのに適した順序でエントリが並んだ状態となる。
【０４００】
以上のようにして、図６Ｃの経過中確保可能空きＰＣ時間算出処理により、経過中確保可能空きＰＣ時間が計算され、ＰＣ経過情報Ｄｊのエントリが並べ替えられる。
続いて、図７Ａ〜７Ｃを参照して、図４のステップＳ１１２で実行されるＰＣ決定処理について説明する。なお、図７Ａ〜７Ｃのフローチャートを参照して処理の流れをひととおり先に説明してから、具体例を挙げて説明する。
【０４０１】
図７ＡのステップＳ４０１で評価部２１１は、引数として与えられた処理モードに応じて、以降のステップで使用する情報を設定する。具体的には、処理モードの値が“ａｓｓｉｇｎ”の場合、評価部２１１は、以降のステップで使用する情報を次の（ｈ１）〜（ｈ５）のように決める。
【０４０２】
（ｈ１）ＰＣ情報Ｄｃ１としてＰＣ管理情報Ｄｃ３を用いること。
（ｈ２）ジョブ・ＰＣ情報Ｄｅ１としてジョブ・ＰＣ管理情報Ｄｅ３を用いること。
（ｈ３）ジョブパターン群Ｄｇ１として実行ジョブパターン群Ｄｇ３を用いること。
【０４０３】
（ｈ４）ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１としてジョブパターン別ジョブ・ＰＣ管理情報Ｄｅｘ３を用いること。
（ｈ５）ジョブパターン別ＰＣ情報Ｄｃｘ１としてジョブパターン別ＰＣ管理情報Ｄｃｘ３を用いること。
【０４０４】
他方、処理モードの値が“ｒｅｓｅｒｖｅ”の場合、評価部２１１は、以降のステップで使用する情報を次の（ｉ１）〜（ｉ５）のように決める。
（ｉ１）ＰＣ情報Ｄｃ１としてＰＣ予測情報Ｄｃ２を用いること。
【０４０５】
（ｉ２）ジョブ・ＰＣ情報Ｄｅ１としてジョブ・ＰＣ予測情報Ｄｅ２を用いること。
（ｉ３）ジョブパターン群Ｄｇ１として予測ジョブパターン群Ｄｇ２を用いること。
（ｉ４）ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１としてジョブパターン別ジョブ・ＰＣ予測情報Ｄｅｘ２を用いること。
（ｉ５）ジョブパターン別ＰＣ情報Ｄｃｘ１としてジョブパターン別ＰＣ予測情報Ｄｃｘ２を用いること。
【０４０６】
そして、次のステップＳ４０２で評価部２１１は、引数として与えられたジョブパターンＩＤが示すジョブパターンの評価点を０に初期化する。より正確には、式（１）に関して説明したようにジョブパターンＩＤは割り当てパターンを決定するための方針を表し、評価点は割り当てパターンに対する評価を示すが、以下では表記の簡便のため「ジョブパターンの評価点」のようにいう。
【０４０７】
なお、ジョブパターンＰ＝〈Ｊ１，Ｊ２，…，Ｊｎ〉の評価点を「Ｅｖａｌ（Ｐ）」と記すことにすると（ｎ≧１）、本実施形態における評価点Ｅｖａｌ（Ｐ）は式（１４）で定義される。
【数１】
0005392129.tif 000002
【０４０８】
なお、式（１）〜（８）に関連して説明したように、Ｐａｒａ（Ｊｈ）はジョブＪｈの並列数であり、Ａｌｌｏｃ（Ｊｈ，Ｐ）はジョブパターンＰにしたがって割り当てを行う場合のジョブＪｈの割り当て先のＰＣの集合である。本実施形態のＰＣ決定処理によれば、同じジョブでもジョブパターンに応じて割り当て先が異なることがあるので、ジョブの割り当て先のＰＣの集合を表すのに、Ａｌｌｏｃ（Ｊｈ，Ｐ）のようにジョブパターンＩＤも引数に含めている。
【０４０９】
また、式（１４）内で使われているＳａｔ（Ａｌｌｏｃ（Ｊｈ，Ｐ））は、ジョブＪｈの割り当て先のＰＣの集合Ａｌｌｏｃ（Ｊｈ，Ｐ）に対して定義される「満足度」である。
【０４１０】
本実施形態の満足度は、１から５の値をとり、最も満足な状態が満足度５であり、最も不満な状態が満足度１である。具体的には、ＰＣの集合Ａに対して満足度Ｓａｔ（Ａ）は次の（ｊ１）〜（ｊ５）のように定義される。
【０４１１】
（ｊ１）集合Ａに含まれるすべてのＰＣが、同じ教室に設置されており、かつ、同じスイッチに接続されており、かつ、同じエリアに設置されているとき、満足度Ｓａｔ（Ａ）は５である。
【０４１２】
（ｊ２）集合Ａに含まれるすべてのＰＣが、同じ教室に設置されており、かつ、同じスイッチに接続されているが、集合Ａの中の中には互いに異なるエリアに設置されているＰＣが存在するとき、満足度Ｓａｔ（Ａ）は４である。
【０４１３】
（ｊ３）集合Ａに含まれるすべてのＰＣが、同じ教室に設置されており、かつ、同じエリアに設置されているが、集合Ａの中の中には互いに異なるスイッチに接続されているＰＣが存在するとき、満足度Ｓａｔ（Ａ）は３である。
【０４１４】
（ｊ４）集合Ａに含まれるすべてのＰＣが同じ教室に設置されているが、集合Ａの中の中には、互いに異なるエリアに設置されているＰＣが存在し、かつ、互いに異なるスイッチに接続されているＰＣも存在するとき、満足度Ｓａｔ（Ａ）は２である。
【０４１５】
（ｊ５）集合Ａに含まれるＰＣの中に、互いに異なる教室に設置されているＰＣが存在するとき、満足度Ｓａｔ（Ａ）は１である。
【０４１６】
また、式（１４）における関数ｆは、次の式（１５）のように、ジョブの並列数ｐと満足度ｓを引数として当該ジョブに関する「満足度評価」を示す関数である。
ｆ（ｐ，ｓ）＝Ｐｔ（ｐ，ｓ）・ｐ                                （１５）
【０４１７】
すなわち、本実施形態の満足度評価は、並列数ｐと満足度ｓの組み合わせに応じて定義される配点Ｐｔ（ｐ，ｓ）と、並列数ｐとの積で表される。なお、本実施形態では、評価点Ｅｖａｌ（Ｐ）は、値が大きいほど評価が高いことを示すので、関数ｆ（ｐ，ｓ）としては、並列数ｐに対して単調増加であり、かつ満足度ｓに対しても単調増加であるような、任意の関数を用いることができる。
【０４１８】
また、本実施形態の配点Ｐｔ（ｐ，ｓ）は、図３ＢのパラメタファイルＤｄ内の評価テーブルに定義されている。例えば、並列数ｐ＝１２かつ満足度ｓ＝３の場合、並列数が９〜１６で満足度が３のエントリの配点フィールドには５という値が定義されているので、Ｐａ（１２，３）＝５である。
【０４１９】
図７ＡのステップＳ４０２で０に初期化された評価点は、ＰＣ決定処理の進行につれて評価部２１１により更新されてゆき、ＰＣ決定処理の終了時には式（１４）で定義される値が設定された状態となる。
【０４２０】
さて、次のステップＳ４０３で評価部２１１は、ＰＣ情報Ｄｃ１（具体的にはステップＳ４０１で使うことに決めたＰＣ予測情報Ｄｃ２またはＰＣ管理情報Ｄｃ３）をジョブパターン別ＰＣ情報Ｄｃｘ１にコピーする。より詳しくは、評価部２１１は、ジョブパターン別ＰＣ情報Ｄｃｘ１のうちの、引数として与えられたジョブパターンＩＤに対応する部分として、ＰＣ情報Ｄｃ１をコピーする。
【０４２１】
例えば、引数として与えられたジョブパターンＩＤの値が“Ｐ０４９”の場合、ステップＳ４０３では、ＰＣ情報Ｄｃ１のコピーが“Ｐ０４９”と対応づけられて、ジョブパターン別ＰＣ情報Ｄｃｘ１の一部として記憶される。
【０４２２】
続くステップＳ４０４で評価部２１１は、ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１を初期化する。より正確には、評価部２１１は、ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１のうち、ジョブパターンＩＤに対応する部分を、何もエントリを持たない状態に初期化する。
【０４２３】
続くステップＳ４０５から図７ＣのステップＳ４３９までは、ジョブパターンＩＤで識別されるジョブパターンに含まれる各ジョブについての繰り返し処理である。なお、ＰＣ決定処理における「割り当て」は、言うまでもないが、「最終的な割り当てパターンとして決定する」という意味ではなく、「あるジョブパターンに対応する割り当てパターンを、割り当てパターンの候補の一つとして、決定する」という意味である。また、ステップＳ４０５〜Ｓ４３９の繰り返し処理の概要は、次のとおりである。
【０４２４】
すなわち、ステップＳ４０６〜Ｓ４１６は、ジョブパターンの中で注目しているジョブ（以下「当該ジョブ」という）の割り当て先のＰＣを順々に決めていくにあたり、どのＰＣを先頭とするのが良さそうかを判断する処理である。また、ステップＳ４１７は、ある順序にしたがって先頭のＰＣから順々に、当該ジョブの並列数の分のＰＣに当該ジョブを割り当てる処理である。
【０４２５】
そして、ステップＳ４１８は例外処理のためのステップである。その後のステップＳ４１９〜Ｓ４３１は、割り当てた結果の当該ジョブの満足度評価を求める処理であり、ステップＳ４３２〜Ｓ４３７は割り当て方を記録する処理である。ステップＳ４３８とＳ４３９は繰り返し制御のためのステップである。
【０４２６】
概ね以上のようにして各ジョブについての繰り返し処理を行うことで、評価部２１１は、最終的な評価点を得る。以下にその詳細を説明する。
評価部２１１はステップＳ４０５で、ジョブパターンＩＤにより識別されるジョブパターンの情報（つまり、ジョブパターン群Ｄｇ１のうちジョブパターンＩＤに対応する部分）から１件目のジョブの情報を読み込む。具体的には、評価部２１１はジョブの情報として、ジョブＩＤとキューＩＤと並列数を取得する。
【０４２７】
例えば、ジョブパターンＩＤの値が“Ｐ０４９”のとき、図３Ｃの例では１件目のジョブはジョブＪｃである。よって、ステップＳ４０５では、ジョブＩＤとして“Ｊｃ”が取得され、キューＩＤとして“Ｑ１６”が取得され、並列数として１６が取得される。
【０４２８】
続いてステップＳ４０６で評価部２１１は、図３Ｃのキュー・ＰＣ定義情報Ｄｈにおいて、ステップＳ４０５または後述のステップＳ４３９で読み込んで取得したキューＩＤと対応づけられているＰＣリストを、「キュー割り当てＰＣ情報」として記憶する。
【０４２９】
例えば、上記の例のようにキューＩＤの値が“Ｑ１６”のとき、評価部２１１は、図３Ｃのキュー・ＰＣ定義情報Ｄｈの１番目のエントリから、式（１６）に示す４０個のＰＣＩＤを含むＰＣリストを得て、キュー割り当てＰＣ情報として記憶する。
（Ｐａ０１，Ｐａ０２，Ｐａ０３，Ｐａ０４，
Ｐａ０５，Ｐａ０６，Ｐａ０７，Ｐａ０８，
Ｐａ０９，Ｐａ１０，Ｐａ１１，Ｐａ１２，
Ｐａ１３，Ｐａ１４，Ｐａ１５，Ｐａ１６，
Ｐｂ０１，Ｐｂ０２，Ｐｂ０３，Ｐｂ０４，
Ｐｂ０５，Ｐｂ０６，Ｐｂ０７，Ｐｂ０８，
Ｐｃ０９，Ｐｃ１０，Ｐｃ１１，Ｐｃ１２，
Ｐｃ１３，Ｐｃ１４，Ｐｃ１５，Ｐｃ１６，
Ｐｃ１７，Ｐｃ１８，Ｐｃ１９，Ｐｃ２０，
Ｐｃ２１，Ｐｃ２２，Ｐｃ２３，Ｐｃ２４）                      （１６）
【０４３０】
そして、次のステップＳ４０７で評価部２１１は、ジョブパターン別ＰＣ情報Ｄｃｘ１のうち、引数として与えられたジョブパターンＩＤに対応する部分から、キュー割り当てＰＣ情報にＰＣＩＤが含まれるＰＣのエントリを読み出す。例えば、キューＩＤの値が“Ｑ１６”の場合は、式（１６）に対応する４０個のエントリが読み出される。
【０４３１】
そして、評価部２１１は、読み出したエントリを所定の基準でソートし、ソート結果を「キュー対応ＰＣ情報」として記憶する。
なお、ステップＳ４０７におけるソートの目的は、システム１０１内の計算サーバ間を接続するネットワークにおいて同じ構成単位に属するＰＣのエントリ同士が隣り合うように、キュー対応ＰＣ情報のエントリを並べるためである。そのようにエントリを並べることで、式（１４）の評価点がある程度の水準以上の割り当て方のみを評価の対象とすることが可能になる。
【０４３２】
つまり、１つのジョブの割り当て先として、潜在的にはランダムに複数のＰＣを選ぶことも可能ではあるが、ランダムな選択をした場合の式（１４）の評価点は、上記（ｊ１）〜（ｊ５）の満足度の定義から理解されるように、一般的には低い。そこで、評価部２１１は、同じ構成単位に属するＰＣのエントリ同士が隣り合うようにソートすることで、同じ構成単位に属するＰＣが１つのジョブの割り当て先として選ばれやすいようにし、ひいては式（１４）の評価点がある程度の水準を保つようにしている。
【０４３３】
具体的に、本実施形態では上記の所定の基準として、「第１ソートキーは教室ＩＤ、第２ソートキーはエリアＩＤ、第３ソートキーはスイッチＩＤ、第４ソートキーはＰＣＩＤであり、各ソートキーによって昇順にソートする」という基準が使われる。もちろん、実施形態に応じて、ソートキーごとに昇順と降順を適宜定めることもできるが、本実施形態では以下の理由から、このような基準を用いている。
【０４３４】
本実施形態では、システム１０１内の計算サーバ間を接続するネットワークの構成単位が、２層に階層化されている。つまり、１つの教室は、１つのブロードキャストドメインという上位層の構成単位に相当する。そして、下位層の構成単位は、同じスイッチに接続されているＰＣの集合であり、したがって、図１に示すように上位層の構成単位の各々は下位層の構成単位を１つ以上含んでいる。
【０４３５】
ネットワークの構成単位がこのような階層化されている本実施形態においては、上位層の構成単位を識別する教室ＩＤが、下位層の構成単位を識別するスイッチＩＤよりも優位のソートキーとして使われる。また、個々の計算サーバを識別するＩＤとしてのＰＣＩＤは、ソートキーに含める必要はないが、本実施形態ではデータの具体例をより分かりやすく説明するために、ＰＣＩＤもソートキーとして用いるものとする。なお、ＰＣＩＤは、ソートキーとして用いる場合は常に最劣位のソートキーとする。
【０４３６】
また、空調機と１対１に対応するエリアを識別するエリアＩＤは、ネットワークの構成単位とは独立した、空調という観点からの構成単位を識別するＩＤである。そして、上記の基準では、エリアＩＤが第２ソートキーとして使われるが、その理由は、図１の配置では「同じスイッチに接続されているＰＣは同じエリアに属する」という包含関係と「各教室は１つ以上のエリアを含む」という包含関係が成立するからである。
【０４３７】
このような包含関係が成立する実施形態においては、包含する側の構成単位に対応するＩＤを、包含される側の構成単位に対応するＩＤよりも優位のソートキーとして用いるとよい。実施形態によっては、例えばネットワークに関する構成単位と空調に関する構成単位との間で必ずしも包含関係が成立しないこともあり、その場合は、ソートキーの順序は任意である。
【０４３８】
なお、各種のＩＤの名前付けの体系によっては、ステップＳ４０７において異なるソートキーを利用しても、意味的に差のないソート結果を得ることができる場合がある。例えば、図１の例ではＰＣＩＤが各種の包含関係を反映した値である。よって、ＰＣＩＤのみをソートキーとして用いても、上記の例のように３つのソートキーを用いた場合と意味的に差のないソート結果が得られる。
【０４３９】
さて、続くステップＳ４０８からＳ４１６の処理は、ステップＳ４０５または後述のステップＳ４３９で情報を読み込んだ当該ジョブの割り当て先のＰＣのうち先頭のものを決定する処理である。
【０４４０】
本実施形態では、システム１０１内のＰＣは決められた順序で順序づけられており、後述のステップＳ４１７において評価部２１１は、その順序にしたがって先頭のＰＣから順に当該ジョブの並列数の分のＰＣを当該ジョブに割り当てようとする。その準備のため、ステップＳ４０８からＳ４１６で評価部２１１は、なるべく適切なＰＣを先頭のＰＣとして選ぶ。なお、ここでの「決められた順序」とは、ステップＳ４０７でのソートの基準と同じ基準によってシステム１０１内のすべてのＰＣをソートしたと仮定したときの順序である。
【０４４１】
ステップＳ４０８で評価部２１１は、ステップＳ４０７で記憶したキュー対応ＰＣ情報から〈教室ＩＤ，エリアＩＤ，スイッチＩＤ〉のすべての組み合わせを得て、ステップＳ４０７と同様の所定の基準でソートする。評価部２１１は、ソートした結果を「ＰＣグループ情報」として記憶する。なお、ここで「ステップＳ４０７と同様」と述べたが、正確には、〈教室ＩＤ，エリアＩＤ，スイッチＩＤ〉の組み合わせはＰＣＩＤと無関係なので、ステップＳ４０７での第４ソートキーであるＰＣＩＤはステップＳ４０８では使われない。
【０４４２】
例えば、ステップＳ４０６でキューＩＤが“Ｑ１６”のとき、ステップＳ４０７では式（１６）の４０台のＰＣに関するエントリがキュー対応ＰＣ情報にコピーされる。よって、評価部２１１は、ステップＳ４０８でＰＣグループ情報として次の式（１７）に示す５つのエントリを得る（図１を参照）。
〈Ｒａ，Ａａ１，Ｓａ１〉，
〈Ｒａ，Ａａ１，Ｓａ２〉，
〈Ｒｂ，Ａｂ１，Ｓｂ１〉，
〈Ｒｃ，Ａｃ２，Ｓｃ２〉，
〈Ｒｃ，Ａｃ２，Ｓｃ３〉                                          （１７）
【０４４３】
そして、次のステップＳ４０９で評価部２１１は、ＰＣグループ情報の１件目のエントリの内容を、「ＰＣグループ教室ＩＤ」、「ＰＣグループエリアＩＤ」および「ＰＣグループスイッチＩＤ」という３つの変数に設定する。
【０４４４】
例えば、ＰＣグループ情報が式（１７）の５つのエントリを持つ場合、１件目のエントリは〈Ｒａ，Ａａ１，Ｓａ１〉である。よって、ＰＣグループ教室ＩＤの値は“Ｒａ”、ＰＣグループエリアＩＤの値は“Ａａ１”、ＰＣグループスイッチＩＤの値は“Ｓａ１”となる。なお、ＰＣグループ教室ＩＤ、ＰＣグループエリアＩＤおよびＰＣグループスイッチＩＤの値は、後述のステップＳ４１５またはＳ４１６で上書きされる可能性がある。
【０４４５】
さて、ステップＳ４０９に続くステップＳ４１０で、評価部２１１は、ステップＳ４０７で記憶したキュー対応ＰＣ情報において以下の（ｋ１）〜（ｋ４）の条件をすべて満たすエントリの数を求める。
【０４４６】
（ｋ１）教室ＩＤの値が、ステップＳ４０９または後述のステップＳ４１５で設定された最新のＰＣグループ教室ＩＤの値と一致する。
（ｋ２）エリアＩＤの値が、ステップＳ４０９またはＳ４１５で設定された最新のＰＣグループエリアＩＤの値と一致する。
【０４４７】
（ｋ３）スイッチＩＤの値が、ステップＳ４０９またはＳ４１５で設定された最新のＰＣグループスイッチＩＤの値と一致する。
（ｋ４）状態の値が“割り当て済”である。
【０４４８】
つまり、評価部２１１は、（ｋ１）〜（ｋ４）の条件をすべて満たすＰＣの台数を求める。そして、評価部２１１は、求めた台数を「割り当て済ＰＣ台数」として記憶する。
また、次のステップＳ４１１で評価部２１１は、ステップＳ４０７で記憶したキュー対応ＰＣ情報において以下の（ｌ１）〜（ｌ４）の条件をすべて満たすエントリの数を求める。なお、条件（ｌ１）〜（ｌ３）は上記（ｋ１）〜（ｋ３）と同じである。
【０４４９】
（ｌ１）教室ＩＤの値が、ステップＳ４０９またはＳ４１５で設定された最新のＰＣグループ教室ＩＤの値と一致する。
（ｌ２）エリアＩＤの値が、ステップＳ４０９またはＳ４１５で設定された最新のＰＣグループエリアＩＤの値と一致する。
【０４５０】
（ｌ３）スイッチＩＤの値が、ステップＳ４０９またはＳ４１５で設定された最新のＰＣグループスイッチＩＤの値と一致する。
（ｌ４）状態の値が“電源ＯＦＦ”である。
【０４５１】
つまり、評価部２１１は、（ｌ１）〜（ｌ４）の条件をすべて満たすＰＣの台数を求める。そして、評価部２１１は求めた台数を「空きＰＣ台数」として記憶する。
続くステップＳ４１２で評価部２１１は、ステップＳ４１０で記憶した割り当て済ＰＣ台数が０より大きいか否かを判断する。割り当て済ＰＣ台数が０より大きい場合、処理はステップＳ４１３に移行する。他方、割り当て済ＰＣ台数が０の場合、処理は図７ＢのステップＳ４１７に移行する。
【０４５２】
ここで、ステップＳ４１２の分岐の意味を明らかにするため、ステップＳ４０８からＳ４１２にいたる各ステップについて振り返って意味を補足説明すれば、次のとおりである。
【０４５３】
ステップＳ４０８で得られたＰＣグループ情報の各エントリは、キュー割り当てＰＣ情報にＰＣＩＤが含まれるＰＣを、教室とエリアと接続先のスイッチが互いに等しいＰＣ同士を１つのグループにまとめたときの、各グループに相当する。よって、各グループは、ステップＳ４０９（または後述のステップＳ４１５もしくはＳ４１６）で設定される３つの変数の組み合わせにより特定することができる。
【０４５４】
すると、ステップＳ４１０より割り当て済ＰＣ台数の意味は、「３つの変数の組み合わせで特定される、現在の注目対象のグループにおいて、他のジョブに既に割り当てられているＰＣの台数」である。同様に、ステップＳ４１１より空きＰＣ台数の意味は、「現在の注目対象のグループにおいて、新たなジョブに割り当て可能なＰＣの台数」である。
【０４５５】
割り当て済ＰＣ台数が０ならば、「まだ他のジョブが割り当てられていないグループが見つかった」ということである。よって、評価部２１１は、「ＰＣに関して決められた上記の所定の順序が当該グループ内で１番のＰＣは、割り当ての先頭として適切である」と判断する。そして、評価部２１１は、先頭のＰＣを探す処理を打ち切り、図７ＢのステップＳ４１７へと処理を進める。
【０４５６】
他方、割り当て済ＰＣ台数が０より大きければ、「現在注目しているグループには既に他のジョブが割り当てられている」ということである。しかし、もしかすると当該グループには、十分な数のＰＣがあり、現在注目しているジョブを丸ごと引き受ける余力が残っているかもしれない。そこで、割り当て済ＰＣ台数が０より大きいとき、「現在注目しているジョブは、現在注目しているグループのＰＣから順に割り当てていったとき、当該グループ内のＰＣ内だけに収まりきるか」を検討するため、処理はステップＳ４１３に移行する。
【０４５７】
そして、ステップＳ４１３で評価部２１１は、空きＰＣ台数を、現在注目している当該ジョブの並列数（つまり、ステップＳ４０５または後述のステップＳ４３９で読み込んだ値）と比較する。
【０４５８】
空きＰＣ台数が並列数未満のとき、仮に現在注目している当該グループのＰＣへ当該ジョブを割り当てるとしても、明らかに当該グループのＰＣだけでは不足である。つまり、当該ジョブの割り当て先のＰＣは他のグループにまたがらざるを得ず、上記（ｊ１）の定義から、満足度が最高の５にならないことも明らかである。
【０４５９】
よって、この場合、評価部２１１は「先頭のＰＣとしてより適切なＰＣが他のグループにあるかもしれない」と判断する。そして、評価部２１１は他のグループについて検討するため、処理をステップＳ４１４に進める。
【０４６０】
他方、空きＰＣ台数が並列数以上ならば、当該ジョブの割り当て先のＰＣは、現在注目している当該グループ内だけでまかないきれる。よって、当該ジョブに関しては、最高の満足度５が得られることが、上記（ｊ１）の定義から明らかである。したがって、この場合、評価部２１１は「先頭として適切なＰＣが見つかった」と判断し、先頭のＰＣを探す処理を打ち切り、図７ＢのステップＳ４１７へと処理を進める。
【０４６１】
さて、ステップＳ４１４で評価部２１１は、ステップＳ４０８で記憶したＰＣグループ情報のすべてのエントリについてステップＳ４１０〜Ｓ４１３の処理を行ったか否か（つまり、すべてのグループについて検討し終えたか否か）を判断する。
【０４６２】
未処理のエントリが残っていれば、評価部２１１は、他のグループについての検討を続けるため、ステップＳ４１５へと処理を進める。他方、すべてのエントリが処理済であれば、「すべてのグループについて検討してみたが、取り立てて有望なグループがなかった」ということなので、評価部２１１はデフォルトの先頭位置を設定するために処理をステップＳ４１６に進める。
【０４６３】
ステップＳ４１５で評価部２１１は、ステップＳ４０８で得たＰＣグループ情報の中から、未処理の次のエントリを読み出す。そして、評価部２１１は当該エントリの内容を３つの変数（すなわちＰＣグループ教室ＩＤ、ＰＣグループエリアＩＤおよびＰＣグループスイッチＩＤ）に設定する。その後、処理はステップＳ４１０に戻る。
【０４６４】
また、ステップＳ４１６で評価部２１１は、デフォルトの先頭位置を設定するために、ＰＣグループ情報の１件目のエントリの内容を上記の３つの変数（つまり、ＰＣグループ教室ＩＤ、ＰＣグループエリアＩＤおよびＰＣグループスイッチＩＤ）に設定する。ステップＳ４１６の後、処理は図７ＢのステップＳ４１７に移行する。
【０４６５】
ステップＳ４１７で評価部２１１は、ステップＳ４０７でソートして記憶したキュー対応ＰＣ情報において、まず次の（ｍ１）〜（ｍ３）の条件をすべて満たすエントリのうちで先頭のものを探す。そして、評価部２１１は、見つけた先頭のエントリから順に、状態が“電源ＯＦＦ”のエントリだけを、ステップＳ４０５または後述のステップＳ４３９で読み込んだ並列数の分だけ取り出して、「選択ＰＣ情報」として記憶する。
【０４６６】
（ｍ１）キュー対応ＰＣ情報のエントリ中の教室ＩＤの値が、ステップＳ４０９、Ｓ４１５またはＳ４１６で設定された最新のＰＣグループ教室ＩＤの値と一致する。
（ｍ２）キュー対応ＰＣ情報のエントリ中のエリアＩＤの値が、ステップＳ４０９、Ｓ４１５またはＳ４１６で設定された最新のＰＣグループエリアＩＤの値と一致する。
【０４６７】
（ｍ３）キュー対応ＰＣ情報のエントリ中のスイッチＩＤの値が、ステップＳ４０９、Ｓ４１５またはＳ４１６で設定された最新のＰＣグループスイッチＩＤの値と一致する。
なお、ステップＳ４０６〜Ｓ４１６より、ステップＳ４１７では（ｍ１）〜（ｍ３）の条件をすべて満たすエントリの存在が保証されるので、必ず先頭のエントリが見つかる。ただし、見つかった先頭のエントリは必ずしも状態が“電源ＯＦＦ”であるとは限らない。
【０４６８】
そこで評価部２１１は、ステップＳ４１７において具体的には、まず選択ＰＣ情報をクリアして初期化する。その後、評価部２１１は、キュー対応ＰＣ情報の各エントリについて、見つけた先頭のエントリから１つずつ順に、状態の値を調べていき、調べた状態が“電源ＯＦＦ”であれば当該エントリを選択ＰＣ情報に追加する。
【０４６９】
選択ＰＣ情報のエントリ数が並列数に達したら、処理はステップＳ４１７からステップＳ４１８へ移行する。また、選択ＰＣ情報のエントリ数が並列数に達する前に、キュー対応ＰＣ情報のエントリが尽きてしまった場合も、処理はステップＳ４１７からステップＳ４１８へ移行する。
【０４７０】
ステップＳ４１８で評価部２１１は、ステップＳ４１７で並列数分のエントリを取り出すことができたか否か（つまり選択ＰＣ情報のエントリ数が並列数に達しているか否か）を判断する。
並列数分のエントリを取り出すことができた場合は、当該ジョブに関する評価を行うため、処理がステップＳ４１９へと移行する。
【０４７１】
他方、並列数分のエントリを取り出すことができなかった場合は、「引数として指定されたジョブパターンＩＤが表すジョブパターンにしたがった割り当てを試してみたら、当該ジョブが割り当て不能だった」ということである。よって、当該ジョブについては評価不能であるから、当該ジョブに関する評価のためのステップＳ４１９〜Ｓ４３７を飛ばして、処理は図７ＣのステップＳ４３８へと移行する。ステップＳ４１８からＳ４３８へのジャンプは、当該ジョブを暗黙的に０点と評価することを意味する。
【０４７２】
なお、ステップＳ４０７とＳ４１７から明らかなように、選択ＰＣ情報の各エントリは、図３Ａの情報Ｄｃと同様の〈ＰＣＩＤ，教室ＩＤ，エリアＩＤ，スイッチＩＤ，状態，ジョブＩＤ，予約〉という形式である。
【０４７３】
ステップＳ４１９で評価部２１１は、ステップＳ４１７で得た選択ＰＣ情報の内容を、〈教室ＩＤ，スイッチＩＤ，エリアＩＤ〉の組ごとに数え、何組あったかを「パターン５ＰＣグループ数」として記憶する。
【０４７４】
次にステップＳ４２０で評価部２１１は、パターン５ＰＣグループ数が１か否かを判断する。なお、パターン５ＰＣグループ数はその定義から明らかに１以上の整数であり、０以下にはならない。同様に、後述の「パターン４ＰＣグループ数」から「パターン２ＰＣグループ数」も１以上の整数である。
【０４７５】
パターン５ＰＣグループ数が１のとき、現在注目している当該ジョブに関して、上記（ｊ１）に定義した満足度５の配置ができたということである。よって、処理はステップＳ４２１に移行する。
【０４７６】
逆に、パターン５ＰＣグループ数が２以上のとき、当該ジョブに関して満足度は４以下ということである。よって、満足度の具体的な値を調べるため、処理はステップＳ４２２に移行する。
【０４７７】
ステップＳ４２１で評価部２１１は、当該ジョブの並列数と、満足度を示す５という値を引数として、式（１５）の満足度評価を計算する。なお、満足度評価の計算のため、評価部２１１はパラメタファイルＤｄの評価テーブルを参照し、式（１５）の配点Ｐｔ（ｐ．ｓ）を取得する。
【０４７８】
そして、評価部２１１は、計算した満足度評価を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップＳ４３２に移行する。
また、ステップＳ４２２で評価部２１１は、ステップＳ４１７で得た選択ＰＣ情報の内容を、〈教室ＩＤ，スイッチＩＤ〉の組ごとに数え、何組あったかを「パターン４ＰＣグループ数」として記憶する。
【０４７９】
そして、次のステップＳ４２３で評価部２１１は、パターン４ＰＣグループ数が１か否かを判断する。
パターン４ＰＣグループ数が１のとき、現在注目している当該ジョブに関して、上記（ｊ２）に定義した満足度４の配置ができたということである。よって、処理はステップＳ４２４に移行する。
【０４８０】
逆に、パターン４ＰＣグループ数が２以上のとき、当該ジョブに関して満足度は３以下ということである。よって、満足度の具体的な値を調べるため、処理はステップＳ４２５に移行する。
【０４８１】
ステップＳ４２４で評価部２１１は、当該ジョブの並列数と、満足度を示す４という値を引数として、式（１５）の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップＳ４３２に移行する。
【０４８２】
また、ステップＳ４２５で評価部２１１は、ステップＳ４１７で得た選択ＰＣ情報の内容を、〈教室ＩＤ，エリアＩＤ〉の組ごとに数え、何組あったかを「パターン３ＰＣグループ数」として記憶する。
【０４８３】
そして、次のステップＳ４２６で評価部２１１は、パターン３ＰＣグループ数が１か否かを判断する。
パターン３ＰＣグループ数が１のとき、現在注目している当該ジョブに関して、上記（ｊ３）に定義した満足度３の配置ができたということである。よって、処理はステップＳ４２７に移行する。
【０４８４】
逆に、パターン３ＰＣグループ数が２以上のとき、当該ジョブに関して満足度は２以下ということである。よって、満足度の具体的な値を調べるため、処理はステップＳ４２８に移行する。
【０４８５】
ステップＳ４２７で評価部２１１は、当該ジョブの並列数と、満足度を示す３という値を引数として、式（１５）の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップＳ４３２に移行する。
【０４８６】
また、ステップＳ４２８で評価部２１１は、ステップＳ４１７で得た選択ＰＣ情報の内容を教室ＩＤごとに数え、何組あったかを「パターン２ＰＣグループ数」として記憶する。
【０４８７】
そして、次のステップＳ４２９で評価部２１１は、パターン２ＰＣグループ数が１か否かを判断する。
パターン２ＰＣグループ数が１のとき、現在注目している当該ジョブに関して、上記（ｊ４）に定義した満足度２の配置ができたということである。よって、処理はステップＳ４３０に移行する。
【０４８８】
逆に、パターン２ＰＣグループ数が２以上のとき、当該ジョブに関して満足度は最低の１ということである。よって、処理はステップＳ４３１に移行する。
ステップＳ４３０で評価部２１１は、当該ジョブの並列数と、満足度を示す２という値を引数として、式（１５）の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップＳ４３２に移行する。
【０４８９】
また、ステップＳ４３１で評価部２１１は、当該ジョブの並列数と、満足度を示す１という値を引数として、式（１５）の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして処理はステップＳ４３２に移行する。
【０４９０】
評価部２１１は、以上のように満足度に応じてステップＳ４２１、Ｓ４２４、Ｓ４２７、Ｓ４３０またはＳ４３１のいずれかで評価点を更新した後、ステップＳ４３２で以下の処理を行う。すなわち、評価部２１１は、ステップＳ４１７で得た選択ＰＣ情報に含まれる各ＰＣに関して、ジョブパターン別ＰＣ情報Ｄｃｘ１のうちＰＣ決定処理の引数として与えられたジョブパターンＩＤに対応する部分での当該ＰＣの状態を、“割り当て済”に設定する。そして処理は図７ＣのステップＳ４３３に移行する。
【０４９１】
すると、図７ＣのステップＳ４３３で評価部２１１は、ステップＳ４１７で得た選択ＰＣ情報に含まれるＰＣＩＤの集合をリスト化し、「ＰＣＩＤリスト」として記憶する。
さらに、ステップＳ４３４で評価部２１１は、選択ＰＣ情報に含まれる教室ＩＤの集合をリスト化し、「教室ＩＤリスト」として記憶する。
【０４９２】
また、ステップＳ４３５で評価部２１１は、選択ＰＣ情報に含まれるエリアＩＤの集合をリスト化し、「エリアＩＤリスト」として記憶する。
そして、ステップＳ４３６で評価部２１１は、選択ＰＣ情報に含まれるスイッチＩＤの集合をリスト化し、「スイッチＩＤリスト」として記憶する。なお、ステップＳ４３３〜Ｓ４３６の実行順序は任意である。
【０４９３】
続いて、ステップＳ４３７で評価部２１１は、〈ジョブＩＤ，キューＩＤ，並列数，ＰＣＩＤリスト，教室ＩＤリスト，エリアＩＤリスト，スイッチＩＤリスト〉を対応づけたエントリを、ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１に追加する。
【０４９４】
ここで、ジョブＩＤとキューＩＤと並列数は、ステップＳ４０５または後述のステップＳ４３９で読み込まれたものである。また、ＰＣＩＤリストと教室ＩＤリストとエリアＩＤリストとスイッチＩＤリストは、ステップＳ４３３〜Ｓ４３６で記憶されたものである。ステップＳ４３７で追加されるエントリは、図３Ｂの情報Ｄｅの形式である。
【０４９５】
そして、続くステップＳ４３８で評価部２１１は、ＰＣ決定処理の引数として与えられたジョブパターンＩＤにより識別されるジョブパターン中のすべてのジョブを処理したか否かを判断する。ステップＳ４０６〜Ｓ４３７の処理をまだ行っていないジョブが当該ジョブパターン中に残っていれば、処理はステップＳ４３９に移行する。他方、当該ジョブパターン中のすべてのジョブが処理済であれば、処理はステップＳ４４０に移行する。
【０４９６】
ステップＳ４３９で評価部２１１は、ジョブパターンＩＤで識別されるジョブパターンから、ステップＳ４０６〜Ｓ４３７の処理をまだ行っていない次のジョブのジョブＩＤとキューＩＤと並列数を読み込んで取得する。そして処理は図７ＡのステップＳ４０６に戻る。
【０４９７】
また、ステップＳ４４０で評価部２１１は戻り値として評価点をフロー制御部２０７に返す。そして図７Ａ〜７ＣのＰＣ決定処理は終了する。
続いて、ＰＣ決定処理についての理解を助けるため、以下の（ｎ１）〜（ｎ３）の仮定のもとで、具体例を説明する。
【０４９８】
（ｎ１）教育利用モードから研究利用モードヘ移行するために図４の割り当て・予約処理が実行されるとする。よって、処理モードは“ａｓｓｉｇｎ”であり、図４のステップＳ１０７で得られる空きＰＣ数は４８である。
【０４９９】
（ｎ２）図４のステップＳ１０８で得られる実行可能ジョブ情報Ｄｆ３が、図３Ｂの実行候補ジョブ情報Ｄｆ１のとおりであるとする。よって、ステップＳ１０８での返り値であるジョブ数は５であり、ステップＳ１１０で得られる実行ジョブパターン群Ｄｇ３は、図３Ｃのジョブパターン群Ｄｇ１のとおりである。
【０５００】
（ｎ３）図４のステップＳ１１２（つまり図７Ａ）で引数として与えられるジョブパターンＩＤが“Ｐ００１”であるとする。
以上の（ｎ１）〜（ｎ３）の仮定によれば、ジョブパターンＰ００１の１つ目のジョブＪａに関して、ステップＳ４０５で以下の式（１８）の並列数が得られる。そして、ステップＳ４１７の１回目の実行時に以下の式（１９）に示す各ＰＣの情報が選択ＰＣ情報として得られる。
Ｐａｒａ（Ｊａ）＝４                                            （１８）
Ａｌｌｏｃ（Ｊａ，Ｐ００１）
＝｛Ｐａ０１，Ｐａ０２，Ｐａ０３，Ｐａ０４｝                      （１９）
【０５０１】
すると、以下の式（２０）のとおり満足度が５であるから、ステップＳ４２１で以下の式（２１）のとおり満足度評価が２０と計算され、評価値が０から２０に更新される。
Ｓａｔ（Ａｌｌｏｃ（Ｊａ，Ｐ００１））＝５                      （２０）
ｆ（４，５）＝Ｐｔ（４，５）・４＝５・４＝２０                  （２１）
【０５０２】
同様にして、２つ目のジョブＪｂに関して、ステップＳ４３９の１回目の実行時に以下の式（２２）の並列数が得られる。そして、ステップＳ４１７の２回目の実行時に以下の式（２３）に示す各ＰＣの情報が選択ＰＣ情報として得られる。
Ｐａｒａ（Ｊｂ）＝４                                            （２２）
Ａｌｌｏｃ（Ｊｂ，Ｐ００１）
＝｛Ｐａ０５，Ｐａ０６，Ｐａ０７，Ｐａ０８｝                      （２３）
【０５０３】
すると、以下の式（２４）のとおり満足度が５であるから、ステップＳ４２１で以下の式（２５）のとおり満足度評価が２０と計算され、評価値が２０から４０に更新される。
Ｓａｔ（Ａｌｌｏｃ（Ｊｂ，Ｐ００１））＝５                      （２４）
ｆ（４，５）＝Ｐｔ（４，５）・４＝５・４＝２０                  （２５）
【０５０４】
同様にして、３つ目のジョブＪｃに関して、ステップＳ４３９の２回目の実行時に以下の式（２６）の並列数が得られる。そして、ステップＳ４１７の３回目の実行時に以下の式（２７）に示す各ＰＣの情報が選択ＰＣ情報として得られる。
Ｐａｒａ（Ｊｃ）＝１６                                          （２６）
Ａｌｌｏｃ（Ｊｃ，Ｐ００１）
＝｛Ｐａ０９，Ｐａ１０，Ｐａ１１，Ｐａ１２，
Ｐａ１３，Ｐａ１４，Ｐａ１５，Ｐａ１６，
Ｐｂ０１，Ｐｂ０２，Ｐｂ０３，Ｐｂ０４，
Ｐｂ０５，Ｐｂ０６，Ｐｂ０７，Ｐｂ０８｝                      （２７）
【０５０５】
すると、以下の式（２８）のとおり満足度が１であるから、ステップＳ４３０で以下の式（２９）のとおり満足度評価が１６と計算され、評価値が４０から５６に更新される。
Ｓａｔ（Ａｌｌｏｃ（Ｊｃ，Ｐ００１））＝１                      （２８）
ｆ（１６，１）＝Ｐｔ（１６，１）・１６＝１・１６＝１６          （２９）
【０５０６】
同様にして、４つ目のジョブＪｄに関して、ステップＳ４３９の３回目の実行時に以下の式（３０）の並列数が得られる。そして、ステップＳ４１７の４回目の実行時に以下の式（３１）に示す各ＰＣの情報が選択ＰＣ情報として得られる。
Ｐａｒａ（Ｊｄ）＝８                                            （３０）
Ａｌｌｏｃ（Ｊｄ，Ｐ００１）
＝｛Ｐｃ０１，Ｐｃ０２，Ｐｃ０３，Ｐｃ０４，
Ｐｃ０５，Ｐｃ０６，Ｐｃ０７，Ｐｃ０８｝                      （３１）
【０５０７】
すると、以下の式（３２）のとおり満足度が５であるから、ステップＳ４２１で以下の式（３３）のとおり満足度評価が４０と計算され、評価値が５６から９６に更新される。
Ｓａｔ（Ａｌｌｏｃ（Ｊｄ，Ｐ００１））＝５                      （３２）
ｆ（８，５）＝Ｐｔ（８，５）・８＝５・８＝４０                  （３３）
【０５０８】
同様にして、５つ目のジョブＪｇに関して、ステップＳ４３９の４回目の実行時に以下の式（３４）の並列数が得られる。そして、ステップＳ４１７の５回目の実行時に以下の式（３５）に示す各ＰＣの情報が選択ＰＣ情報として得られる。
Ｐａｒａ（Ｊｇ）＝４                                            （３４）
Ａｌｌｏｃ（Ｊｇ，Ｐ００１）
＝｛Ｐｃ０９，Ｐｃ１０，Ｐｃ１１，Ｐｃ１２｝                      （３５）
【０５０９】
すると、以下の式（３６）のとおり満足度が５であるから、ステップＳ４２１で以下の式（３７）のとおり満足度評価が２０と計算され、評価値が９６から１１６に更新される。
Ｓａｔ（Ａｌｌｏｃ（Ｊｇ，Ｐ００１））＝５                      （３６）
ｆ（４，５）＝Ｐｔ（４，５）・４＝５・４＝２０                  （３７）
【０５１０】
その後、処理はステップＳ４２１からステップＳ４３２へと進み、ステップＳ４３３〜Ｓ４３７を経て、ステップＳ４３８からステップＳ４４０へと進んで終了する。以上のようにして、上記（ｎ１）〜（ｎ３）の仮定のもとでは、ジョブパターンＰ００１に対して、最終的に以下の式（３８）の１１６点という評価点が得られる。
Ｅｖａｌ（Ｐ００１）＝２０＋２０＋１６＋４０＋２０＝１１６      （３８）
【０５１１】
同様に、上記（ｎ１）〜（ｎ３）の仮定のもとでは、図３Ｃに示すジョブパターンＰ０４９に対して、後述の式（４０）〜（４４）のような割り当てとなるため、最終的に以下の式（３９）の１８０点という評価点が得られる。
Ｅｖａｌ（Ｐ０４９）
＝ｆ（１６，３）＋ｆ（４，５）＋ｆ（４，５）＋ｆ（８，５）＋ｆ（４，５）
＝８０＋２０＋２０＋４０＋２０
＝１８０                                                          （３９）
【０５１２】
続いて、図４のステップＳ１１７で実行される再配置処理について説明する。前述のとおり再配置処理は、「評価を下げない範囲で各ジョブのＰＣへの割り当て方を変えてみることによって、空調機の無駄な稼働をなくせないかを試し、可能ならば空調機の無駄な稼働をなくすように各ジョブのＰＣへの割り当て方を変える」という処理である。
【０５１３】
ここで、ジョブパターンに含まれる各ジョブについての式（１５）の満足度評価を下げないことは、式（１４）によるジョブパターン全体の評価を下げないための十分条件である。本実施形態の再配置部２１２は、再配置の仕方を探る探索空間を狭めて処理を簡略化するため、この十分条件が満たされる場合のみを探索範囲に含めて再配置を試みる。
【０５１４】
つまり、再配置部２１２は、「あるジョブについての満足度評価の低下を、他のジョブについての満足度評価の上昇が補うことにより、ジョブパターン全体の評価としては低下していない」というような再配置は考慮しない。したがって、再配置部２１２が再配置の仕方を探る際の制約条件は、具体的には下記（ｏ１）〜（ｏ５）のように表現することができる。
【０５１５】
（ｏ１）あるジョブの割り当て先が、教室ＩＤとスイッチＩＤとエリアＩＤが共通のｘ台のＰＣである場合、評価を下げずに当該ジョブを再配置するには、教室ＩＤとスイッチＩＤとエリアＩＤが共通の他のｘ台のＰＣを再配置先とすればよい。つまり、再配置前の満足度が５のジョブについては、満足度が５となる再配置先が見つかれば、ジョブパターンの評価は下がらない。
【０５１６】
（ｏ２）あるジョブの割り当て先が、教室ＩＤとスイッチＩＤは共通だが複数のエリアにまたがっているｘ台のＰＣである場合、評価を下げずに当該ジョブを再配置するには、教室ＩＤとスイッチＩＤが共通の他のｘ台のＰＣを再配置先とすればよい。つまり、再配置前の満足度が４のジョブについては、満足度が４以上となる再配置先が見つかれば、ジョブパターンの評価は下がらない。
【０５１７】
（ｏ３）あるジョブの割り当て先が、教室ＩＤとエリアＩＤは共通だが複数のスイッチにまたがっているｘ台のＰＣである場合、評価を下げずに当該ジョブを再配置するには、教室ＩＤとエリアＩＤが共通の他のｘ台のＰＣを再配置先とすればよい。つまり、再配置前の満足度が３のジョブについては、満足度が３以上となる再配置先が見つかれば、ジョブパターンの評価は下がらない。なお、本実施形態では、１つのエリアが複数の教室にまたがることはなく、１つのスイッチに接続されたＰＣが複数のエリアにまたがることもないので、再配置先のｘ台のＰＣが同じエリアに属してさえいれば、満足度が３のジョブに関してジョブパターンの評価が下がることはない。
【０５１８】
（ｏ４）あるジョブの割り当て先が、教室ＩＤは共通だが複数のエリアおよび複数のスイッチにまたがったｘ台のＰＣである場合、評価を下げずに当該ジョブを再配置するには、教室ＩＤが共通の他のｘ台のＰＣを再配置先とすればよい。つまり、再配置前の満足度が２のジョブについては、満足度が２以上となる再配置先が見つかれば、ジョブパターンの評価は下がらない。換言すれば、再配置先の上記の「他のｘ台のＰＣ」が、同じエリアに属しているか否か、そして同じ１台のスイッチに接続されているか否か、ということは問題ではない。
【０５１９】
（ｏ５）あるジョブの割り当て先が、複数の教室に分散しているｘ台のＰＣである場合、他のどのようなｘ台のＰＣを再配置先としても、ジョブパターンの評価は下がらない。つまり、再配置前の満足度が最低の１であるジョブについては、いかなる再配置を行おうとも評価は下がらない。
【０５２０】
以上説明した制約条件下で、再配置部２１２は各ジョブのＰＣへの割り当て方を変えることを試みる。その再配置部２１２の動作の詳細を、図８Ａ〜８Ｈを参照しながら以下に説明する。
【０５２１】
図８Ａ〜８Ｈは、再配置処理のフローチャートである。なお、図示の便宜上、図８Ａ〜８Ｃに再配置処理全体の流れを示し、図８Ａ〜８Ｃ中に示したステップで行われるいくつかの処理の詳細を図８Ｄ〜８Ｈに分けて示してある。図８Ａ〜８Ｈに分けて示したのはあくまでも図示の便宜上であり、再配置部２１２は、例えば図８Ｄの処理で得た情報を図８Ｅの処理で利用することもある。
【０５２２】
さて、図８Ａに示すように、再配置処理は、ジョブパターンＩＤと処理モードを引数としてフロー制御部２０７から呼び出される。以下では説明の便宜上、「図４のステップＳ１０７で空きＰＣ数が４８であり、ステップＳ１１７で評価部２１１が式（１３）のジョブパターンＰ０４９を選択した」という場合を具体例として適宜参照する。また、処理モードの値は、“ｒｅｓｅｒｖｅ”または“ａｓｓｉｇｎ”である。
【０５２３】
ステップＳ５０１で再配置部２１２は、図８Ｄに示す前処理を行い、再配置の余地がありそうか否かを大まかに調べる。すなわち、あるエリア内のＰＣに割り当てられているジョブを別のエリア内のＰＣに割り当てなおすことで、当該「あるエリア」のすべてのＰＣを、何のジョブにも割り当てられていない状態とすることができそうか否かを再配置部２１２は大まかに検討する。
【０５２４】
具体的には、図８ＤのステップＳ６０１で再配置部２１２は、再配置処理の引数として与えられた処理モードに応じて、使用する情報を決定する。すなわち、処理モードの値が“ｒｅｓｅｒｖｅ”である（つまり、予約のために再配置処理が行われる）場合、再配置部２１２は、使用する情報を以下の（ｐ１）〜（ｐ４）のように決定する。
【０５２５】
（ｐ１）ジョブパターン別ＰＣ情報Ｄｃｘ１として参照する先は、具体的にはジョブパターン別ＰＣ予測情報Ｄｃｘ２であること。
（ｐ２）ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１として参照する先は、具体的にはジョブパターン別ジョブ・ＰＣ予測情報Ｄｅｘ２であること。
【０５２６】
（ｐ３）再配置後ＰＣ情報Ｄｃ４として、具体的には再配置後ＰＣ予測情報Ｄｃ５を生成すること。
（ｐ４）再配置後ジョブ・ＰＣ情報Ｄｅ４として、具体的には再配置後ジョブ・ＰＣ予測情報Ｄｅ５を生成すること。
【０５２７】
逆に、処理モードの値が“ａｓｓｉｇｎ”である（つまり、実際の割り当てのために再配置処理が行われる）場合、再配置部２１２は、使用する情報を以下の（ｑ１）〜（ｑ４）のように決定する。
【０５２８】
（ｑ１）ジョブパターン別ＰＣ情報Ｄｃｘ１として参照する先は、具体的にはジョブパターン別ＰＣ管理情報Ｄｃｘ３であること。
（ｑ２）ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１として参照する先は、具体的にはジョブパターン別ジョブ・ＰＣ管理情報Ｄｅｘ３であること。
【０５２９】
（ｑ３）再配置後ＰＣ情報Ｄｃ４として、具体的には再配置後ＰＣ管理情報Ｄｃ６を生成すること。
（ｑ４）再配置後ジョブ・ＰＣ情報Ｄｅ４として、具体的には再配置後ジョブ・ＰＣ管理情報Ｄｅ６を生成すること。
【０５３０】
再配置部２１２は、以上のようにして、ステップＳ６０１で使用する情報を決定する。そして、次のステップＳ６０２において再配置部２１２は、ジョブパターン別ＰＣ情報Ｄｃｘ１から、再配置処理の引数として指定されたジョブパターンＩＤに対応する内容をコピーし、「暫定ＰＣ情報」として記憶する。よって、暫定ＰＣ情報は、図３Ａに示すＰＣ情報Ｄｃと同じく、それぞれが〈ＰＣＩＤ，教室ＩＤ，エリアＩＤ，スイッチＩＤ，状態，ジョブＩＤ，予約〉の組（タプル）により表される複数のエントリを含む。
【０５３１】
例えば、上記具体例において再配置部２１２は、図３Ｃのジョブパターン群Ｄｇ１に示す１２０通りのジョブパターンに対応する内容を含むジョブパターン別ＰＣ情報Ｄｃｘ１の中から、ジョブパターンＰ０４９に対応する内容を暫定ＰＣ情報としてコピーする。
【０５３２】
例えば図１のようにシステム１０１内にＰＣが４８台ある場合、ジョブパターン別ＰＣ情報Ｄｃｘ１は、１２０通りのジョブパターンそれぞれに対して４８個のエントリを持つ情報である。再配置部２１２は、この４８×１２０個のエントリの中から、ジョブパターンＰ０４９に対応する４８個のエントリを、暫定ＰＣ情報としてコピーする。
【０５３３】
上記具体例においては、式（１３）に示したとおりＰ０４９＝〈Ｊｃ，Ｊａ，Ｊｂ，Ｊｄ，Ｊｇ〉である。そして、ジョブパターンＰ０４９に対応する各ジョブの再配置前の割り当て方は、図７Ａ〜７ＣのＰＣ決定処理によれば、以下の式（４０）〜（４４）のとおりである（つまり、上記具体例ではジョブ・ＰＣ情報Ｄｅ１は図３Ｂの情報Ｄｅのとおりである）。
Ａｌｌｏｃ（Ｊｃ，Ｐ０４９）
＝｛Ｐａ０１，Ｐａ０２，Ｐａ０３，Ｐａ０４，
Ｐａ０５，Ｐａ０６，Ｐａ０７，Ｐａ０８，
Ｐａ０９，Ｐａ１０，Ｐａ１１，Ｐａ１２，
Ｐａ１３，Ｐａ１４，Ｐａ１５，Ｐａ１６｝                      （４０）
Ａｌｌｏｃ（Ｊａ，Ｐ０４９）
＝｛Ｐｂ０１，Ｐｂ０２，Ｐｂ０３，Ｐｂ０４｝                      （４１）
Ａｌｌｏｃ（Ｊｂ，Ｐ０４９）
＝｛Ｐｂ０５，Ｐｂ０６，Ｐｂ０７，Ｐｂ０８｝                      （４２）
Ａｌｌｏｃ（Ｊｄ，Ｐ０４９）
＝｛Ｐｃ０１，Ｐｃ０２，Ｐｃ０３，Ｐｃ０４，
Ｐｃ０５，Ｐｃ０６，Ｐｃ０７，Ｐｃ０８｝                      （４３）
Ａｌｌｏｃ（Ｊｇ，Ｐ０４９）
＝｛Ｐｃ０９，Ｐｃ１０，Ｐｃ１１，Ｐｃ１２｝                      （４４）
【０５３４】
したがって、上記具体例の場合、暫定ＰＣ情報において、ＰＣＩＤがＰａ０１〜Ｐａ１６、Ｐｂ０１〜Ｐｂ０８、Ｐｃ０１〜Ｐｃ１２のエントリの状態は“割り当て済”であり、ＰＣＩＤがＰｃ１３〜Ｐｃ２４のエントリの状態は“電源ＯＦＦ”である。
【０５３５】
再配置部２１２は、以上のようにして暫定ＰＣ情報を得ると、続くステップＳ６０３において、ジョブパターン別ジョブ・ＰＣ情報Ｄｅｘ１から、再配置処理の引数として指定されたジョブパターンＩＤに対応する内容をコピーする。また、再配置部２１２は、コピーした各エントリに、状態として空白（ＮＵＬＬ）を設定し、結果を「暫定ジョブ・ＰＣ情報」として記憶する。
【０５３６】
つまり、暫定ジョブ・ＰＣ情報は、それぞれが〈ジョブＩＤ，キューＩＤ，並列数，ＰＣリスト，教室ＩＤ，エリアＩＤ，スイッチＩＤ，状態〉の組（タプル）により表される複数のエントリを含む情報である。例えば、ジョブパターンＰ０４９が選択された場合、各ジョブの割り当て先は上記の式（４０）〜（４４）のとおりであり、各ＰＣは図１のように配置されているので、暫定ジョブ・ＰＣ情報は、図３Ｂの情報Ｄｅに空白の状態を追加したものとなる。
【０５３７】
そして、続くステップＳ６０４で再配置部２１２は、ステップＳ６０２で記憶した暫定ＰＣ情報において、エリアＩＤごとにＰＣの台数（すなわちエントリの数）を「管理ＰＣ台数」として数える。再配置部２１２は、数えた管理ＰＣ台数をエリアＩＤと対応づけて、〈エリアＩＤ，管理ＰＣ台数〉の組（タプル）を「エリア管理ＰＣ台数情報」の各エントリとして記憶する。
【０５３８】
本実施形態の場合、図１に示すようにエリアＡａ１、Ａｂ１、Ａｃ１、Ａｃ２にはそれぞれ１６台、８台、８台、１６台のＰＣが配置されているので、次の式（４５）に示す４つのエントリを含むエリア管理ＰＣ台数情報がステップＳ６０４で得られる。
〈Ａａ１，１６〉，
〈Ａｂ１，  ８〉，
〈Ａｃ１，  ８〉，
〈Ａｃ２，１６〉                                                  （４５）
【０５３９】
また、ステップＳ６０５で再配置部２１２は、ステップＳ６０２で記憶した暫定ＰＣ情報において、〈エリアＩＤ，スイッチＩＤ〉の組ごとにＰＣの台数（すなわちエントリの数）を「管理ＰＣ台数」として数える。そして、再配置部２１２には、〈エリアＩＤ，スイッチＩＤ，管理ＰＣ台数〉の組（タプル）を「スイッチ管理ＰＣ台数情報」の各エントリとして記憶する。
【０５４０】
本実施形態の場合、図１に示すとおり、エリアをまたいで分散している複数のＰＣが同じ１つのスイッチに接続されることはない。また、スイッチＳａ１、Ｓａ２、Ｓｂ１，Ｓｃ１、Ｓｃ２、Ｓｃ３には、いずれも８台のＰＣが接続されている。よって、次の式（４６）に示す６つのエントリがステップＳ６０５で得られる。
〈Ａａ１，Ｓａ１，８〉，
〈Ａａ１，Ｓａ２，８〉，
〈Ａｂ１，Ｓｂ１，８〉，
〈Ａｃ１，Ｓｃ１，８〉，
〈Ａｃ２，Ｓｃ２，８〉，
〈Ａｃ２，Ｓｃ３，８〉                                            （４６）
【０５４１】
さらに、ステップＳ６０６で再配置部２１２は、ステップＳ６０２で記憶した暫定ＰＣ情報において、状態が“電源ＯＦＦ”のＰＣの台数（すなわちエントリの数）をエリアＩＤごとに「空きＰＣ台数」として数える。そして、再配置部２１２は、〈エリアＩＤ，空きＰＣ台数〉の組（タプル）を、空きＰＣ台数の降順にソートし、ソートされた順に並んだ各組を「エリア空きＰＣ台数情報」の各エントリとして記憶する。
【０５４２】
例えば、上記具体例では、ステップＳ６０２に関して説明したとおり、暫定ＰＣ情報において、状態が“電源ＯＦＦ”のエントリは、ＰＣＩＤがＰｃ１３〜Ｐｃ２４の１２個のエントリのみである。そして、図１に示すとおり、ＰＣ・Ｐｃ１３〜Ｐｃ２４は、１２台ともすべてエリアＡｃ２にある。
【０５４３】
したがって、この場合ステップＳ６０６では、次の式（４７）に示す順にソートされた４つのエントリを含むエリア空きＰＣ台数情報が得られる。なお、エリア空き台数情報は、後述のステップＳ６０８のためと、図８Ｅの処理におけるソートの基準を与えるために、ステップＳ６０６で用意される情報である。
〈Ａｃ２，１２〉，
〈Ａａ１，  ０〉，
〈Ａｂ１，  ０〉，
〈Ａｃ１，  ０〉                                                  （４７）
【０５４４】
続いて、ステップＳ６０７で再配置部２１２は、後で利用する「再配置情報」をクリアして初期化する。再配置情報は、〈再配置元のＰＣＩＤ，再配置先のＰＣＩＤ〉の組（タプル）を記憶するためのものである。
【０５４５】
続くステップＳ６０８で再配置部２１２は、ステップＳ６０６で求めたエリア空きＰＣ台数情報の空きＰＣ台数の合計を「合計空きＰＣ台数」として求める。式（４７）の例の場合、合計空きＰＣ台数は、１２（＝１２＋０＋０＋０）である。
【０５４６】
そして、ステップＳ６０９で再配置部２１２は、ステップＳ６０４で求めたエリア管理ＰＣ台数情報における管理ＰＣ台数の最小値を「最小管理ＰＣ台数」として求める。式（４５）の例の場合、最小管理ＰＣ台数は８（＝ｍｉｎ（１６，８，８，１６））である。
【０５４７】
なお、図８Ｄの各ステップの実行順序は、実施形態により適宜変えることができる。例えば、ステップＳ６０７は任意の順番で実行可能であり、ステップＳ６０４〜Ｓ６０６の実行順序はステップＳ６０２の後でさえあれば任意である。
【０５４８】
そして、以上の図８ＤのステップＳ６０１〜Ｓ６０９の実行後、処理は図８ＡのステップＳ５０２に進む。ステップＳ５０２で再配置部２１２は、ステップＳ６０８で求めた合計空きＰＣ台数がステップＳ６０９で求めた最小管理ＰＣ台数以上であるか否かを判断する。
【０５４９】
合計空きＰＣ台数が最小管理ＰＣ台数以上の場合、再配置の余地があるかもしれないので、処理はステップＳ５０３に移行する。逆に、合計空きＰＣ台数が最小管理ＰＣ台数未満の場合、再配置部２１２は、評価を落とさずに再配置を行う余地がないと判断し、処理は図８ＣのステップＳ５３４に移行する。
【０５５０】
例えば、上記のように合計空きＰＣ台数が１２で最小管理ＰＣ台数が８であるとする。すると、１２≧８なので、「最小管理ＰＣ台数に対応するエリアの８台のＰＣに割り当てられているジョブがもしあれば、当該ジョブを、互いに同じエリアに属しており“電源ＯＦＦ”状態の１２台のＰＣに割り当てなおす」という再配置が可能性として考えられる。
【０５５１】
つまり、その再配置によって、最小管理ＰＣ台数に対応するエリア内のすべてのＰＣを“電源ＯＦＦ”状態にすることができるかもしれない。したがって、当該エリアの空調機を稼働させる必要性をなくすことができるかもしれない。
【０５５２】
なお、ステップＳ５０２の段階では、上記８台のＰＣのすべてにジョブが割り当てられているか否かを調べてはいない。よって、実際には８台のうち一部にのみジョブが割り当てられており、残りは“電源ＯＦＦ”状態かもしれない。
【０５５３】
しかし、仮に８台すべてのジョブが割り当てられているとしても、どこかのエリアに１２台の“電源ＯＦＦ”状態のＰＣがまとまって存在していれば、その１２台のうちの８台にジョブを割り当てなおすという再配置が、可能性としてはありうる。そのため、ステップＳ５０２で再配置部２１２は、合計空きＰＣ台数と最小管理ＰＣ台数とを比較して、再配置の余地について大まかな判断を下している。
【０５５４】
また、ステップＳ５０２の段階では、空いている１２台のＰＣがどこのエリアにあるかを再配置部２１２は特に認識してはいない。よって、再配置によってあるエリア内の全ＰＣを“電源ＯＦＦ”状態とすることが実際に可能となるのか否かは、ステップＳ５０２の段階では不明である。しかし、潜在的な可能性はある。
【０５５５】
他方、例えば合計空きＰＣ台数が４で最小管理ＰＣ台数が８であれば、４＜８なので、再配置部２１２は「再配置の余地がない」と判断する。
なお、実際には最小管理ＰＣ台数に対応するエリア内の８台のＰＣ中の４台以下にしかジョブが割り当てられていないかもしれない。しかし、仮に８台すべてにジョブが割り当てられていれば、どのように再配置を行っても、最小管理ＰＣ台数に対応するエリア内に、何らかのジョブに割り当てられたＰＣが残ってしまう。したがって、最小管理ＰＣ台数に対応するエリアを担当する空調機を稼働させることになる。
【０５５６】
つまり、最小管理ＰＣ台数に対応するエリアにおいて全ＰＣにジョブが割り当てられているならば、再配置によっても電力の節約は見込めない。そこで、本実施形態の再配置部２１２は、単純に合計空きＰＣ台数と最小管理ＰＣ台数を比較し、合計空きＰＣ台数が最小管理ＰＣ台数未満のとき、「再配置を検討する余地がない」と判断する。そして、再配置部２１２は、再配置元と再配置先を対応づけるための各ステップを省略して、すぐに図８ＣのステップＳ５３４を実行する。
【０５５７】
このように、最小管理ＰＣ台数に対応するエリア内で実際にジョブが割り当てられているＰＣの台数を厳密に判断しない理由は、処理の簡略化のためである。つまり、潜在的に可能な再配置の仕方を網羅的に考慮すると処理量が厖大になってしまうので、本実施形態の再配置部２１２は、「ある程度計算量を抑えた範囲内で、明らかにより良い割り当ての仕方が見つかるようなら、再配置をする」という方針にしたがっている。
【０５５８】
さて、合計空きＰＣ台数が最小管理ＰＣ台数以上のとき、再配置部２１２はステップＳ５０３で図８Ｅの処理を行い、再配置先と再配置元それぞれの候補の情報を求める。
具体的には、図８ＥのステップＳ７０１で再配置部２１２は、図８ＤのステップＳ６０２で得た暫定ＰＣ情報において、〈エリアＩＤ，スイッチＩＤ〉の組ごとに、状態が“電源ＯＦＦ”のＰＣの台数（すなわちエントリの数）を「空きＰＣ台数」として数える。数えた結果にしたがって、再配置部２１２は、〈エリアＩＤ，スイッチＩＤ，空きＰＣ台数〉の組（タプル）を「スイッチ空きＰＣ台数情報」の各エントリとして記憶する。
【０５５９】
例えば、上記具体例の場合、ステップＳ６０２に関して説明したように、状態が“電源ＯＦＦ”のＰＣは、ＰＣ・Ｐｃ１３〜Ｐｃ２４のみである。そして、図１に示すように、これら１２台のＰＣはいずれもエリアＡｃ２にある。また、ＰＣ・Ｐｃ１３〜Ｐｃ１６の４台はスイッチＳｃ２に、ＰＣ・Ｐｃ１７〜Ｐｃ２４の８台はスイッチＳｃ３に接続されている。よって、この場合、次の式（４８）に示す６つのエントリを含むスイッチ空きＰＣ台数情報が得られる。
〈Ａａ１，Ｓａ１，０〉，
〈Ａａ１，Ｓａ２，０〉，
〈Ａｂ１，Ｓｂ１，０〉，
〈Ａｃ１，Ｓｃ１，０〉，
〈Ａｃ２，Ｓｃ２，４〉，
〈Ａｃ２，Ｓｃ３，８〉                                            （４８）
【０５６０】
以上のようにして得たスイッチ空きＰＣ台数情報において、空きＰＣ台数が０でない各エントリは、〈エリアＩＤ，スイッチＩＤ〉の組を単位とした再配置先の候補を表す。
【０５６１】
続くステップＳ７０２〜Ｓ７０６で再配置部２１２は、ステップＳ７０１で得たスイッチ空きＰＣ台数情報のエントリをソートした「ソート済スイッチ空きＰＣ台数情報」を生成する。第１ソートキーは、エリア内で“電源ＯＦＦ”状態のＰＣの台数であり、スイッチ空きＰＣ台数情報の個々のエントリ自体に直接含まれている値ではない。第２ソートキーは、同一スイッチに接続されているＰＣのうちで“電源ＯＦＦ”状態のＰＣの台数である。再配置部２１２は、第１ソートキーと第２ソートキーのいずれに関しても、降順のソートを行う。
【０５６２】
再配置部２１２は、具体的にはまずステップＳ７０２において、ソート済スイッチ空きＰＣ台数情報を、１つもエントリを持たない状態に初期化する。
そして、ステップＳ７０３で再配置部２１２は、図８ＤのステップＳ６０６で空きＰＣ台数の降順に既にソートしてあるエリア空きＰＣ台数情報の１件目のエントリのエリアＩＤを「空き情報エリアＩＤ」として取得する。つまり、再配置部２１２は、第１ソートキーによるソート順が先頭となるエリアＩＤを空き情報エリアＩＤとして取得する。
【０５６３】
例えば、エリア空きＰＣ台数情報が式（４７）のとおりである場合、１件目のエントリは〈Ａｃ２，１２〉なので、ステップＳ７０３で得られる空き情報エリアＩＤは“Ａｃ２”である。
【０５６４】
そして、ステップＳ７０４で再配置部２１２は、ステップＳ７０１で得たスイッチ空きＰＣ台数情報内で、エリアＩＤが空き情報エリアＩＤに一致するエントリを検索する。定義から明らかに、検索の結果として少なくとも１件のエントリがヒットする。再配置部２１２は、ステップＳ７０４においてさらに、検索の結果ヒットしたエントリを空きＰＣ台数の降順にソートし、ソートした結果を、ソート済スイッチ空きＰＣ台数情報の末尾に追加出力する。
【０５６５】
例えば、スイッチ空きＰＣ台数情報が式（４８）のとおりであり、上記のようにステップＳ７０３で空き情報エリアＩＤが“Ａｃ２”に設定された場合、検索の結果、〈Ａｃ２，Ｓｃ２，４〉と〈Ａｃ２，Ｓｃ３，８〉という２つのエントリがヒットする。再配置部２１２は、この２つのエントリを空きＰＣ台数の降順にソートし、ステップＳ７０２で空に初期化されているソート済スイッチ空きＰＣ台数情報の末尾に追加する。その結果、ソート済スイッチ空きＰＣ台数情報は、次の式（４９）に示す順で２つのエントリを持つ状態となる。
〈Ａｃ２，Ｓｃ３，８〉，
〈Ａｃ２，Ｓｃ２，４〉                                            （４９）
【０５６６】
そして、ステップＳ７０５で再配置部２１２は、エリア空きＰＣ台数情報のすべてのエントリを処理したか否かを判断する。空き情報エリアＩＤへの代入とステップＳ７０４の処理をまだ行っていないエントリがある場合、処理はステップＳ７０６に移行し、すべてのエントリが処理済の場合、処理はステップＳ７０７に移行する。
【０５６７】
ステップＳ７０６で再配置部２１２は、エリア空きＰＣ台数情報の次のエントリのエリアＩＤで、空き情報エリアＩＤを上書きする。そして、処理はステップＳ７０４に戻る。
例えば、図８ＤのステップＳ６０６で得られたエリア空きＰＣ台数情報が式（４７）のとおりで、ステップＳ７０１で得られた元のスイッチ空きＰＣ台数情報が式（４８）のとおりであるとする。この場合、ステップＳ７０４〜Ｓ７０６の繰り返しにより最終的に得られるソート済スイッチ空きＰＣ台数情報は、具体的には、式（４９）の２つのエントリに続いてさらに４つのエントリが追加された、以下の式（５０）のとおりである。
〈Ａｃ２，Ｓｃ３，８〉，
〈Ａｃ２，Ｓｃ２，４〉，
〈Ａａ１，Ｓａ１，０〉，
〈Ａａ１，Ｓａ２，０〉，
〈Ａｂ１，Ｓｂ１，０〉，
〈Ａｃ１，Ｓｃ１，０〉                                            （５０）
【０５６８】
式（５０）のソート済スイッチ空きＰＣ台数情報は、エントリの並び順によって、例えば次の（ｒ１）と（ｒ２）のことを表している。
【０５６９】
（ｒ１）“電源ＯＦＦ”状態のＰＣが最も多く存在するのはエリアＡｃ２なので、エリア単位での再配置先の候補として最も優先的に考慮の対象となるのは、エリアＡｃ２内のＰＣである。
【０５７０】
（ｒ２）エリアＡｃ２内でスイッチ単位に検討すると、再配置先の候補としての優先順位は、スイッチＳｃ３に接続されている８台のＰＣが第１位であり、スイッチＳｃ２に接続されている４台のＰＣが第２位である。
【０５７１】
つまり、空いているＰＣ（ジョブに割り当てられていないＰＣ）がより多く存在し、そのため再配置が成功しそうな候補ほど、優先的に再配置先として考慮されるように、再配置部２１２はソート済スイッチ空きＰＣ台数情報を作成する。
【０５７２】
また、ステップＳ７０７で再配置部２１２は、図８ＤのステップＳ６０２で記憶した暫定ＰＣ情報において、エリアＩＤごとに、状態が“割り当て済”のＰＣの台数（すなわちエントリの数）を「割り当て済ＰＣ台数」として数える。数えた結果にしたがって、再配置部２１２は、〈エリアＩＤ，割り当て済ＰＣ台数〉の組（タプル）を「エリア割り当てＰＣ台数情報」の各エントリとして記憶する。
【０５７３】
そして、次のステップＳ７０８で再配置部２１２は、ステップＳ７０７で得たエリア割り当てＰＣ台数情報を、割り当て済ＰＣ台数の降順にソートする。
例えば、上記具体例の場合、ステップＳ６０２に関して説明したように、状態が“割り当て済”のＰＣは、ＰＣ・Ｐａ０１〜Ｐａ１６、Ｐｂ０１〜Ｐｂ０８、Ｐｃ０１〜Ｐｃ１２の３６台である（式（４０）~（４４）も参照）。そして、図１に示すように、ＰＣ・Ｐａ０１〜Ｐａ１６はエリアＡａ１にあり、ＰＣ・Ｐｂ０１〜Ｐｂ０８はエリアＡｂ１にあり、ＰＣ・Ｐｃ０１〜Ｐｃ０８はエリアＡｃ１にあり、ＰＣ・Ｐｃ０９〜Ｐｃ１２はエリアＡｃ２にある。
【０５７４】
したがって、この場合、ステップＳ７０７とＳ７０８の結果として得られるエリア割り当てＰＣ台数情報は、次の式（５１）に示す順にソートされた４つのエントリを含む。
〈Ａａ１，１６〉，
〈Ａｂ１，  ８〉，
〈Ａｃ１，  ８〉，
〈Ａｃ２，  ４〉                                                  （５１）
なお、状態が“割り当て済”のＰＣが存在しないエリアがもしあれば、割り当て済ＰＣ台数が０のエントリがエリア割り当てＰＣ台数情報の末尾に含まれることになる。
【０５７５】
また、ステップＳ７０９で再配置部２１２は、暫定ＰＣ情報において、今度は〈エリアＩＤ，スイッチＩＤ，ジョブＩＤ〉の組ごとに、状態が“割り当て済”のＰＣの台数（すなわちエントリの数）を「割り当て済ＰＣ台数」として数える。数えた結果にしたがって、再配置部２１２は、〈エリアＩＤ，スイッチＩＤ，ジョブＩＤ，割り当て済ＰＣ台数，状態〉の組（タプル）を「ジョブ割り当て情報」の各エントリとして記憶する。ただし、再配置部２１２は、ジョブ割り当て情報のエントリにおける「状態」を初期化して空白（つまりＮＵＬＬ）とする。
【０５７６】
例えば、上記具体例の場合、各ジョブの再配置前の割り当て方は式（４０）〜（４４）のとおりなので、ジョブ割り当て情報は次の式（５２）の７つのエントリを含む。
〈Ａａ１，Ｓａ１，    Ｊｃ，８，ＮＵＬＬ〉，
〈Ａａ１，Ｓａ２，    Ｊｃ，８，ＮＵＬＬ〉，
〈Ａｂ１，Ｓｂ１，    Ｊａ，４，ＮＵＬＬ〉，
〈Ａｂ１，Ｓｂ１，    Ｊｂ，４，ＮＵＬＬ〉，
〈Ａｃ１，Ｓｃ１，    Ｊｄ，８，ＮＵＬＬ〉，
〈Ａｃ２，Ｓｃ２，    Ｊｇ，４，ＮＵＬＬ〉，
〈Ａｃ２，Ｓｃ３，ＮＵＬＬ，０，ＮＵＬＬ〉                        （５２）
【０５７７】
なお、ジョブ割り当て情報は、〈エリアＩＤ，スイッチＩＤ，ジョブＩＤ〉の組を単位として再配置元の候補を表す情報である。ジョブ割り当て情報の各エントリの状態は、再配置元の候補が再配置されると“再配置済”に変更される。
【０５７８】
続いて、ステップＳ７１０で再配置部２１２は、後の処理で使う「ジョブ選択情報」をクリアして初期化する。なお、ジョブ選択情報は、〈エリアＩＤ，スイッチＩＤ，ジョブＩＤ，割り当て済ＰＣ台数〉の組（タプル）をエントリとして有する情報である。
【０５７９】
以上のようにして、再配置部２１２は、ステップＳ７０１〜Ｓ７０６で再配置先の候補を求め、ステップＳ７０７〜Ｓ７０９で再配置元の候補を求め、ステップＳ７１０で後の図８Ｆの処理のための初期化を行う。実施形態によって、ステップの実行順序は適宜変更することもでき、例えば、再配置部２１２は再配置元の候補を再配置先の候補よりも先に求めてもよい。
【０５８０】
さて、再配置部２１２は、図８ＡのステップＳ５０３に相当する図８Ｅの処理を上記のように行うと、続く図８Ａ〜８ＣのステップＳ５０４〜Ｓ５３３で、再配置先の各候補についての処理を繰り返す。
【０５８１】
具体的には、再配置部２１２は、まずステップＳ５０４で、図８ＥのステップＳ７０２〜Ｓ７０６で再配置先の候補を示す情報として得られたソート済スイッチ空きＰＣ台数情報から、１件目のエントリを読み込む。そして、再配置部２１２は、読み込んだ当該エントリのエリアＩＤ、スイッチＩＤ、空きＰＣ台数を、「空き情報エリアＩＤ」、「空き情報スイッチＩＤ」、「空きＰＣ台数」として記憶する。
【０５８２】
例えば、ソート済スイッチ空きＰＣ台数情報が式（５０）で表される場合、１件目のエントリは〈Ａｃ２，Ｓｃ３，８〉である。よって、空き情報エリアＩＤは“Ａｃ２”、空き情報スイッチＩＤは“Ｓｃ３”、空きＰＣ台数は８である。
【０５８３】
なお、空き情報エリアＩＤ、空き情報スイッチＩＤ、空きＰＣ台数には、後のステップＳ５３２で新たな値が代入される。以下では、ステップＳ５０４またはＳ５３２で再配置部２１２が読み込んだエントリの表す再配置先の候補を「当該再配置先候補」または「現在注目している再配置先候補」ということもある。
【０５８４】
続いて、図８ＢのステップＳ５０５で再配置部２１２は、ステップＳ５０４または後述のステップＳ５３２で設定された空きＰＣ台数が、０より大きいか否かを判断する。空きＰＣ台数が０のとき、現在注目している当該再配置先候補への再配置の余地はない。そこで、他の再配置先候補への再配置を試みるため、処理は、ステップＳ５０６〜Ｓ５３０を飛ばして図８ＣのステップＳ５３１に移行する。他方、空きＰＣ台数が０より大きいとき、当該再配置先候補への再配置を試みるため、処理はステップＳ５０６に移行する。
【０５８５】
なお、再配置先候補としてのソート済スイッチ空きＰＣ台数情報のソートの基準は図８Ｅとともに説明したとおりであり、単純な空きＰＣ台数順のソートではない。そのため、空きＰＣ台数が０のエントリよりも後に、空きＰＣ台数が１以上のエントリが存在することもある。よって、空きＰＣ台数が０のときのジャンプ先は、後述のステップＳ５３４ではなくステップＳ５３１なのである。
【０５８６】
さて、ステップＳ５０６で再配置部２１２は、当該再配置先候補（つまり注目しているソート済スイッチ空きＰＣ台数のエントリ）に関する初期化とバックアップを行う。
具体的には、再配置部２１２は「再配置フラグ」と「エリア再配置ＰＣ数」をともに０に初期化する。なお、再配置フラグは、０のとき、当該再配置先候補への再配置が可能そうな再配置元の候補がまだ見つかっていないことを示し、１のとき、当該再配置先候補への再配置が可能そうな再配置元の候補が見つかったことを示す。また、エリア再配置ＰＣ数は、エリアＩＤとスイッチＩＤの組を単位とする当該再配置先候補（に含まれるＰＣ）へのジョブの再配置が可能と判明した、再配置元のＰＣの台数を示す。
【０５８７】
また、再配置部２１２は、以下の（ｓ１）〜（ｓ５）の各情報のバックアップも行う。バックアップされた情報は、後述のステップＳ５１２でリストアを行う場合に使われる。
（ｓ１）図８ＡのステップＳ５０１（より詳しくは図８ＤのステップＳ６０２）で得られ、後述のステップＳ５１７（より詳しくは図８ＨのステップＳ１００７とＳ１００８）で更新される、暫定ＰＣ情報。
【０５８８】
（ｓ２）図８ＡのステップＳ５０１（より詳しくは図８ＤのステップＳ６０３）で得られ、後述のステップＳ５１７（より詳しくは図８ＨのステップＳ１００６）で更新される、暫定ジョブ・ＰＣ情報。
【０５８９】
（ｓ３）図８ＡのステップＳ５０３（より詳しくは図８ＥのステップＳ７０７〜Ｓ７０８）で得られ、後述のステップＳ５１７（より詳しくは図８ＨのステップＳ１００２〜Ｓ１００４）で更新される、エリア割り当てＰＣ台数情報。
【０５９０】
（ｓ４）図８ＡのステップＳ５０３（より詳しくは図８ＥのステップＳ７０９）で得られ、後述のステップＳ５１７（より詳しくは図８ＨのステップＳ１００５）で更新される、ジョブ割り当て情報。
【０５９１】
（ｓ５）図８ＡのステップＳ５０１（より詳しくは図８ＤのステップＳ６０７）で初期化され、後述のステップＳ５１７（より詳しくは図８ＨのステップＳ１００１）で更新される再配置ＰＣ情報。
【０５９２】
次に、ステップＳ５０７で再配置部２１２は、当該再配置先候補への再配置が可能そうなジョブの候補をジョブ選択情報として記憶する。具体的には、再配置部２１２は図８Ｆの処理を行う。
【０５９３】
すなわち、図８ＦのステップＳ８０１で再配置部２１２は、図８ＥのステップＳ７０８で再配置元候補として得たエリア割り当てＰＣ台数情報の１件目のエントリを読み込む。そして、再配置部２１２は、読み込んだ当該エントリのエリアＩＤと割り当て済ＰＣ台数を、「割り当て情報エリアＩＤ」と「割り当て済ＰＣ台数」として記憶する。
【０５９４】
例えば、再配置部２１２が最初に図８Ｆの処理を行う場合、現在注目している再配置先候補は、図８ＡのステップＳ５０４で読み込んだエントリ（式（５０）の１つ目のエントリ）に相当する。つまり、当該再配置先候補は、エリアＡｃ２のスイッチＳｃ３に接続された８台のＰＣである。
【０５９５】
そして、ステップＳ７０７とＳ７０８により得られたエリア割り当てＰＣ台数情報は、式（５１）の４つのエントリを有し、１つ目のエントリは〈Ａａ１，１６〉である。よって、割り当て情報エリアＩＤは“Ａａ１”となり、割り当て済ＰＣ台数は１６となる。これは、エリアＡａ１にあり、かつ何らかのジョブが割り当てられている１６台のＰＣに、再配置部２１２が再配置元候補として今注目していることを示す。
【０５９６】
さて、ステップＳ８０１の実行後、処理はステップＳ８０２に移行し、再配置部２１２は、図８ＡのステップＳ５０４または図８ＣのステップＳ５３２で得た空きＰＣ台数の値を「残り空きＰＣ台数」としてコピーする。残り空きＰＣ台数は、このように初期値として空きＰＣ台数の値が設定され、その後のステップＳ８０４〜Ｓ８１１の繰り返しにより値が減らされていく。
【０５９７】
また、続くステップＳ８０３で再配置部２１２は、「再配置元エリアＩＤリスト」を空に初期化する。再配置元エリアＩＤリストへの要素の追加は図８Ｆの処理において行われ、作成された再配置元エリアＩＤリストは、後述の図８ＣのステップＳ５２２とＳ５２７で参照される。
【０５９８】
そして、ステップＳ８０３（または後述のステップＳ８１１）に続くステップＳ８０４において、再配置部２１２は、空き情報エリアＩＤと割り当て情報エリアＩＤが等しいか否かを判断する。空き情報エリアＩＤは、図８ＡのステップＳ５０４または図８ＣのステップＳ５３２で設定され、現在注目している再配置先候補がどのエリアにあるかを示し、例えば上記の例では“Ａｃ２”である。また、割り当て情報エリアＩＤは、ステップＳ８０１または後述のステップＳ８１１で設定され、現在注目している再配置元候補がどのエリアにあるかを示す。
【０５９９】
もし、空き情報エリアＩＤと割り当て情報エリアＩＤが等しければ、再配置先候補と再配置元候補が同じエリア内にあるということなので、再配置を行っても空調機の稼働状況に影響がない。つまり、再配置を検討する必要がない。よって、別の再配置元候補を探すために、処理はステップＳ８１０に移行する。
【０６００】
他方、空き情報エリアＩＤと割り当て情報エリアＩＤが異なれば、再配置先候補と再配置元候補が別のエリア内にあるということなので、再配置によって空調機の無駄な運転を防げるかもしれない。つまり、現在注目している再配置先候補と再配置元候補の組による再配置を検討する余地がある。よって、処理はステップＳ８０５に移行する。
【０６０１】
ステップＳ８０５で再配置部２１２は、割り当て済ＰＣ台数が０かそれとも１以上かを判断する。
ここで、図８ＥのステップＳ７０８のとおり、エリア割り当てＰＣ台数情報は割り当て済ＰＣ台数の降順にソートされている。また、図８Ｆの処理において再配置部２１２は、エリア割り当てＰＣ台数情報のエントリを、１件目から順に注目している。
【０６０２】
したがって、現在の割り当て済ＰＣ台数の値が０のとき、割り当て済ＰＣ台数が１以上のエントリがエリア割り当てＰＣ台数情報の中に残っていない。つまり、エリアを単位とした再配置元の候補がもう残っておらず、換言すれば、ジョブ選択情報に追加するエントリが残っていない。そこで、処理はステップＳ８１２へと移行する。
【０６０３】
他方、割り当て済ＰＣ台数が１以上のとき、ジョブ選択情報に追加するエントリがまだ残っている可能性がある。そこで、処理はステップＳ８０６に移行する。
ステップＳ８０６で再配置部２１２は、残り空きＰＣ台数と割り当て済ＰＣ台数を比較する。
【０６０４】
残り空きＰＣ台数は、ステップＳ８０２で設定された初期値か、または、過去のステップＳ８０４〜Ｓ８１１のループ内においてステップＳ８０７で設定された値を持つ。そして、残り空きＰＣ台数は、エリアＩＤとスイッチＩＤの組を単位として現在注目している再配置先候補の中に、再配置先として利用するための仮の対応づけがまだなされていないＰＣが、あと何台残っているかを示す。例えば、図８ＡのステップＳ５０４に例示したように空きＰＣ台数が８のとき、ステップＳ８０２で残り空きＰＣ台数は８に設定される。
【０６０５】
また、割り当て済ＰＣ台数は、図８ＦのステップＳ８０１またはＳ８１１で設定され、現在注目している再配置元候補（具体的にはエリアを単位とした候補）が何台のＰＣを含むのかを示し、例えば上記のステップＳ８０１で設定された例では１６である。
【０６０６】
残り空きＰＣ台数が割り当て済ＰＣ台数よりも少ない場合、「現在注目している再配置先候補と再配置元候補の組による再配置を検討しなくてよい」と再配置部２１２は判断し、処理はステップＳ８１０に移行する。なぜなら、この場合、現在注目している再配置元候補のエリア内のＰＣに割り当てられたジョブのすべてを、現在注目している再配置先候補のＰＣに再配置しようとしても、空いているＰＣが足りないからである。
【０６０７】
例えば、再配置先候補が式（５０）の１つ目のエントリ〈Ａｃ２，Ｓｃ３，８〉で再配置元候補が式（５１）の１つ目のエントリ〈Ａａ１，１６〉のとき、ステップＳ８０１で割り当て済ＰＣ台数が１６に設定される。また、残り空きＰＣ台数はステップＳ８０２で８に初期化される。すると、８＜１６なので、処理はステップＳ８０６からＳ８１０へと移行する。
【０６０８】
逆に、残り空きＰＣ台数が割り当て済ＰＣ台数以上の場合、「現在注目している再配置先候補と再配置元候補の組による再配置は検討の対象となる」と再配置部２１２は判断し、処理はステップＳ８０７に移行する。なぜなら、この場合、現在注目している再配置元候補のエリア内のＰＣに割り当てられた分のジョブは、すべて、他のある１つのエリア内の同じスイッチに接続されたＰＣに再配置することが可能だからである。
【０６０９】
なお、実際には、ジョブはエリアをまたいで配置されているかもしれない。つまり、現在注目している再配置元候補のエリア内のＰＣに割り当てられたジョブの中には、他のエリアのＰＣにも割り当てられているものがあるかもしれない。すると、ジョブ全体をまとめて再配置しようとすると、残り空きＰＣ台数では足りなくなる可能性もある。
【０６１０】
しかし、図８Ｆの処理の段階では、まだ、「再配置元候補のエリア内のＰＣに割り当てられたジョブの中に、他のエリアのＰＣにも割り当てられているものがあるか否か」という厳密な判断までは、再配置部２１２は行っていない。厳密な判断は後に図８ＧのステップＳ９０７で行われる。よって、ステップＳ８０６の段階で再配置部２１２は、上記のように単純に「残り空きＰＣ台数が割り当て済ＰＣ台数以上の場合、現在注目している再配置先候補と再配置元候補の組による再配置は検討の対象となる」と判断する。
【０６１１】
さて、ステップＳ８０７で再配置部２１２は、残り空きＰＣ台数から割り当て済ＰＣ台数を引き、その減算結果を新たな残り空きＰＣ台数として記憶する。
また、次のステップＳ８０８で再配置部２１２は、再配置元エリアＩＤリストに、割り当て情報エリアＩＤを追加する。つまり、再配置元エリアＩＤリストには、再配置元の候補として再配置部２１２が注目しているジョブが割り当てられているＰＣが存在するエリアのエリアＩＤが追加される。
【０６１２】
そして、続くステップＳ８０９で再配置部２１２は、図８ＥのステップＳ７０９で記憶したジョブ割り当て情報において、エリアＩＤが割り当て情報エリアＩＤに一致するエントリを検索する。そして、再配置部２１２はステップＳ８０９でさらに、検索した結果ヒットしたエントリをコピーして、ジョブ選択情報の末尾に追加出力する。
【０６１３】
図８ＥのステップＳ７０９に関して説明したように、ジョブ割り当て情報の各エントリは、〈エリアＩＤ，スイッチＩＤ，ジョブＩＤ，割り当て済ＰＣ台数，状態〉の組である。つまり、ステップＳ８０９で再配置部２１２は、現在注目している再配置元候補のエリア内で、具体的にはどのスイッチに接続された何台のＰＣにどのジョブが割り当てられているのかを調べ、調べた結果をまとめてジョブ選択情報にコピーする。
【０６１４】
そして、次のステップＳ８１０で再配置部２１２は、エリア割り当てＰＣ台数情報のすべてのエントリを処理したか否か（すなわち、エリアを単位とするすべての再配置元候補について注目し終わったか否か）を判断する。未処理のエントリが残っていれば、処理はステップＳ８１１に移行し、すべてのエントリが処理済であれば、処理はステップＳ８１２に移行する。
【０６１５】
ステップＳ８１１で再配置部２１２は、エリア割り当てＰＣ台数情報の次のエントリを読み込み、当該エントリのエリアＩＤと割り当て済ＰＣ台数を、割り当て情報エリアＩＤと割り当て済ＰＣ台数として記憶する。そして処理はステップＳ８０４に戻る。
【０６１６】
また、ステップＳ８１２で再配置部２１２は、ジョブ選択情報のエントリの件数が０であるか、それとも１以上であるかを判断する。
なお、ジョブ選択情報は、図８ＢのステップＳ５０７に相当する図８Ｆの処理の開始時には、空である。なぜなら、ステップＳ５０７の実行前に、図８ＡのステップＳ５０３（より正確には図８ＥのステップＳ７１０）か図８ＢのステップＳ５３３で初期化されているからである。
【０６１７】
よって、ステップＳ８１２でジョブ選択情報のエントリの件数が０のとき、ステップＳ８０９でのエントリの追加が行われなかったということである。換言すれば、再配置部２１２が現在注目している当該再配置先候補への再配置が可能そうな再配置元の候補は、見つからなかった。よって、ここで図８Ｆの処理も終了し、再配置フラグの値は初期値の０のままである。
【０６１８】
逆に、ステップＳ８１２においてジョブ選択情報のエントリの件数が１以上のとき、処理はステップＳ８１３に移行し、ステップＳ８１３で再配置部２１２は、再配置フラグの値を１に設定する。すなわち、再配置部２１２は、現在注目している再配置先候補への再配置が可能そうな再配置元候補が見つかったことを記憶する。そして、図８Ｆの処理は終了する。
【０６１９】
例えば、現在注目している再配置先候補が式（５０）の１件目のエントリ〈Ａｃ２，Ｓｃ３，８〉に対応する場合、以上の図８Ｆの処理の結果、ジョブ選択情報には、式（５２）のジョブ割り当て情報から次の式（５３）の２つのエントリがコピーされる。
〈Ａｂ１，Ｓｂ１，Ｊａ，４，ＮＵＬＬ〉，
〈Ａｂ１，Ｓｂ１，Ｊｂ，４，ＮＵＬＬ〉                            （５３）
【０６２０】
つまり、式（５１）のエリア割り当てＰＣ台数情報のうち、１件目の〈Ａａ１，１６〉というエントリに関しては、８＜１６なのでステップＳ８０６からステップＳ８１０へ処理が進む。よって、エリアＩＤが“Ａａ１”のエントリはジョブ選択情報に追加されない。その後、式（５１）の２件目の〈Ａｂ１，８〉というエントリに関して、ステップＳ８０７で残り空きＰＣ台数が８から０に更新され、ステップＳ８０９で式（５３）の２つのエントリが追加される。
【０６２１】
その後、式（５１）の３件目の〈Ａｃ１，８〉というエントリに関しては、やはりステップＳ８０６からステップＳ８１０へ処理が進むため、ジョブ選択情報へのエントリの追加は行われない。また、式（５１）の４件目の〈Ａｃ２，４〉というエントリに関しては、ステップＳ８０４からＳ８１０へ処理が進むので、やはりジョブ選択情報へのエントリの追加は行われない。以上から、最終的にジョブ選択情報は式（５３）の２つのエントリを有することになる。
【０６２２】
さて、再配置部２１２は、以上のようにして図８ＢのステップＳ５０７において図８Ｆの処理を行ってジョブ選択情報を取得すると、続いて図８ＢのステップＳ５０８において、現在注目している再配置先候補に関する再配置の可能性を判断する。具体的には、再配置部２１２は、再配置フラグを参照し、再配置フラグが１ならば「現在注目している再配置先候補に関して再配置の可能性がある」と判断し、再配置フラグが０ならば「現在注目している再配置先候補に関して再配置の可能性がない」と判断する。
【０６２３】
換言すれば、再配置部２１２は、図８ＦのステップＳ８０９でのジョブ選択情報へのエントリ追加の結果として、ステップＳ８１３で再配置フラグを１に上書きしたときは、「再配置の可能性がある」と判断する。
【０６２４】
逆に、ジョブ選択情報が図８ＥのステップＳ７１０または後述の図８ＢのステップＳ５３３でクリアされた初期状態のままであれば、再配置フラグも０である。よって、この場合に再配置部２１２は、「現在注目している再配置先候補に関しては再配置の可能性がない」と判断する。
【０６２５】
そして、再配置フラグが１の場合、処理はステップＳ５０９に移行する。再配置フラグが０の場合、他の再配置先候補への再配置を検討するために、処理は図８ＣのステップＳ５３１に移行する。
【０６２６】
さて、ステップＳ５０９で再配置部２１２は「ジョブ再配置情報」をクリアして初期化する。ジョブ再配置情報は、再配置情報（図８ＤのステップＳ６０７で初期化され、後述のステップＳ５１７に相当する図８ＨのステップＳ１００１でエントリが追加される情報）を得るための一時的な情報であり、形式は再配置情報と同じである。つまり、ジョブ再配置情報は、〈再配置元のＰＣＩＤ，再配置先のＰＣＩＤ〉の組を個々のエントリとして有する。
【０６２７】
また、ここでクリアされたジョブ再配置情報には、後述のステップＳ５１５（より詳しくは図８ＧのステップＳ９１７）でエントリが追加される。さらに、その後のステップＳ５１９でジョブ再配置情報は再度クリアされる。
【０６２８】
続くステップＳ５１０〜Ｓ５２１の処理は、再配置元の候補を示す情報としてステップＳ５０７で得たジョブ選択情報の各エントリに関する繰り返し処理である。
まず、ステップＳ５１０で再配置部２１２は、ジョブ選択情報から１件目のエントリを読み込む。そして、再配置部２１２は、当該エントリのエリアＩＤ、スイッチＩＤ、ジョブＩＤ、割り当て済ＰＣ台数を、それぞれ「選択ジョブエリアＩＤ」、「選択ジョブスイッチＩＤ」、「選択ジョブＩＤ」、「選択ジョブ割り当て済ＰＣ台数」として記憶する。
【０６２９】
例えば、ジョブ選択情報が式（５３）の２つのエントリを含む場合、１件目のエントリから、ステップＳ５１０では、選択ジョブエリアＩＤが“Ａｂ１”に設定され、選択ジョブスイッチＩＤが“Ｓｂ１”に設定される。そして、選択ジョブＩＤが“Ｊａ”に設定され、選択ジョブ割り当て済ＰＣ台数が４に設定される。
【０６３０】
次のステップＳ５１１で再配置部２１２は、ステップＳ５１０または後述のステップＳ５２１で設定された選択ジョブ割り当て済ＰＣ台数と、空きＰＣ台数を比較する。なお、空きＰＣ台数の値は、図８ＡのステップＳ５０４または後述の図８ＣのステップＳ５３２において現在注目している再配置先候補に関して設定され、ステップＳ５１０〜Ｓ５２１の実行につれて減少する。
【０６３１】
選択ジョブ割り当て済ＰＣ台数が空きＰＣ台数以下の場合、再配置の検討を続けるために処理はステップＳ５１３へ移行する。
逆に、選択ジョブ割り当て済ＰＣ台数が空きＰＣ台数より多いとき、再配置部２１２は「現在注目している再配置先候補への再配置はうまくいかない」と判断する。この場合、再配置部２１２は次の再配置先候補について検討しようとするが、再配置失敗と再配置部２１２が判断した現在の再配置先候補に関して、既にデータが更新されている場合もある。つまり、後述のステップＳ５１７でのデータの更新の後、処理がステップＳ５２１からステップＳ５１１へと戻ってきた場合もある。そこで、ステップＳ５１１において選択ジョブ割り当て済ＰＣ台数が空きＰＣ台数より多いときには、データのロールバックのために、まず処理はステップＳ５１２へと移行する。
【０６３２】
ステップＳ５１２で再配置部２１２は、当該再配置先候補に関してステップＳ５０６でバックアップしたデータを使って、各種データのリストアを行う。つまり、再配置部２１２は、ステップＳ５０６に関して（ｓ１）〜（ｓ５）として列挙した各情報のリストア（すなわちロールバック）を行う。そして、次の再配置先候補についての検討のため、処理は図８ＣのステップＳ５３１に移行する。
【０６３３】
他方、ステップＳ５１３で再配置部２１２は、図８ＤのステップＳ６０３で記憶した暫定ジョブ・ＰＣ情報から「再配置対象ＰＣ数」を求める。具体的には、再配置部２１２は、暫定ジョブ・ＰＣ情報において状態が“再配置済”でなくジョブＩＤが選択ジョブＩＤに等しいエントリにおけるＰＣリストに含まれるＰＣＩＤの数を、再配置対象ＰＣ数として求める。そのようなエントリがなければ、再配置対象ＰＣ数は０である。
【０６３４】
例えば、ステップＳ６０３に関して説明したように、暫定ジョブ・ＰＣ情報が図３Ｂの情報Ｄｅに空白の状態を追加したものであるとする。そして、ジョブ選択情報が式（５３）のとおりであり、１つ目のエントリのジョブＩＤである“Ｊａ”が選択ジョブＩＤに設定されたとする。すると、図３Ｂから明らかなように、（Ｐｂ０１，Ｐｂ０２，Ｐｂ０３，Ｐｂ０４）というリストに含まれるＰＣＩＤの数である４が、再配置対象ＰＣ数として得られる。
【０６３５】
また、再配置対象ＰＣ数の意味を説明すれば以下のとおりである。
ここで、暫定ジョブ・ＰＣ情報において状態が“再配置済”となるのは、後のステップＳ５１７（詳細は図８Ｈ）の処理で状態が書き換えられた場合のみである。また、暫定ジョブ・ＰＣ情報は、図８ＡのステップＳ５０１に相当する図８Ｄにおいて、ステップＳ６０３で記憶された情報である。よって、最初にステップＳ５１３が実行されるとき、再配置対象ＰＣ数は、「選択ジョブＩＤで識別されるジョブは、全部で何台のＰＣに割り当てられているのか」（換言すれば、選択ジョブＩＤで識別されるジョブの並列数）を示す。
【０６３６】
また、２回目以降にステップＳ５１３が実行されるとき、暫定ジョブ・ＰＣ情報は、状態が“再配置済”のエントリを有する可能性がある。このとき、再配置部２１２は、状態が“再配置済”のエントリを除いて再配置対象ＰＣ数を求めることで、同じジョブを次々と別のＰＣへと再配置する繰り返しを防ぐ。
【０６３７】
再配置部２１２が、ステップＳ５１０やＳ５２１で求める選択ジョブ割り当て済ＰＣ台数とは別に、改めてステップＳ５１３で再配置対象ＰＣ数を求める理由は、次のとおりである。
【０６３８】
再配置部２１２は、図８Ｆに示すようにエリアに注目してジョブ選択情報を作成したが、複数のエリアにまたがって存在する複数のＰＣに１つの同じジョブが割り当てられている可能性もある（例えば、満足度４の場合など）。ここで、「複数のエリアにまたがって割り当てられているかもしれない１つのジョブを、同一エリア内にあり、かつ同一スイッチに接続されているＰＣに再配置することが可能である」ことは、「評価を下げない再配置が可能である」ことの十分条件である。
【０６３９】
よって、再配置部２１２は、「評価を下げずに、また、再配置を次々と繰り返すことがないように」という制約のもとでの再配置の可能性について検討するため、再配置対象ＰＣ数を求めている。
【０６４０】
続くステップＳ５１４で、再配置部２１２は、再配置対象ＰＣ数が０であるか、それとも０より大きいかを判断する。
再配置対象ＰＣ数が０のとき（つまり、暫定ジョブ・ＰＣ情報においてジョブＩＤが選択ジョブＩＤに等しいエントリの状態が“再配置済”のとき）、ジョブ選択情報の次のエントリの検討のため、処理はステップＳ５２０に移行する。
【０６４１】
逆に、再配置対象ＰＣ数が０より大きいときは、現在再配置部２１２が注目しているジョブ選択情報のエントリに関する再配置についての検討を続けるため、処理はステップＳ５１５に移行する。
【０６４２】
ステップＳ５１５で再配置部２１２は、選択ジョブＩＤが示すジョブの並列数に対応可能なＰＣという制約条件下で、再配置元と再配置先のＰＣの組の対応づけを試みる。具体的には、再配置部２１２は図８Ｇの処理を行う。
【０６４３】
図８ＧのステップＳ９０１〜Ｓ９０６は、初期化のためのステップであり、実行順序は適宜変更することができる。
ステップＳ９０１で再配置部２１２は、「ジョブ再配置ＰＣ数」を０に初期化する。ジョブ再配置ＰＣ数は、現在注目しているジョブ（つまり選択ジョブＩＤにより識別されるジョブ）が割り当てられたＰＣのうち、現在注目している再配置先候補に含まれるＰＣと対応づけが可能なものの数を示す。
【０６４４】
なお、再配置部２１２は、ステップＳ９０８〜Ｓ９２０とともに後述するように、「当該ジョブの並列数に対応可能なＰＣ同士の間での再配置のみが許される」という制約条件下で、対応づけが可能か否かを試みる。そして、再配置部２１２は、対応づけが可能なものの数をジョブ再配置ＰＣ数として数え、記憶する。
【０６４５】
ステップＳ９０２で再配置部２１２は、選択ジョブＩＤをもとに、図８ＤのステップＳ６０３で得た暫定ジョブ・ＰＣ情報から、現在注目しているジョブに対応するキューＩＤを求め、「選択ジョブ実行キューＩＤ」として記憶する。例えば、選択ジョブＩＤが“Ｊａ”の場合、選択ジョブ実行キューＩＤは“Ｑ０８”である（ステップＳ６０３に関する説明と図３Ｂの情報Ｄｅを参照）。
【０６４６】
そして、ステップＳ９０３で再配置部２１２は、暫定ＰＣ情報において、ジョブＩＤが選択ジョブＩＤで、かつ、状態が“再配置先”でないエントリのＰＣＩＤを求める。そして、再配置部２１２は、求めたＰＣＩＤのリストを、「選択ジョブＰＣリスト」として記憶する。
【０６４７】
例えば、選択ジョブＩＤが“Ｊａ”のとき、式（４１）および図３Ｂから理解されるとおり、選択ジョブＰＣリストとして、次の式（５４）のリストが得られる。
（Ｐｂ０１，Ｐｂ０２，Ｐｂ０３，Ｐｂ０４）                        （５４）
なお、ステップＳ９０３ではジョブＩＤと状態のみが条件として用いられるので、再配置前のジョブの割り当て先が、教室、エリア、またはスイッチをまたがっているか否かは無関係である。つまり、図８Ｇの処理では、１つのジョブの割り当て先全体が、１つの再配置元の候補として扱われる。
【０６４８】
したがって、図８ＥのステップＳ７０９で〈エリアＩＤ，スイッチＩＤ，ジョブＩＤ〉の組を単位として再配置部２１２が求めた再配置元の候補よりも、図８Ｇの処理での再配置元の候補の方が粒度が粗い。このように、再配置元のＰＣと再配置先のＰＣを個別具体的に対応づける段になって再配置元の候補の粒度を粗くする目的は、評価値を下げないで再配置を試みるための十分条件を満たすようにするためである。
【０６４９】
また、ステップＳ９０４で再配置部２１２は、暫定ＰＣ情報において、状態が“電源ＯＦＦ”で、かつ、エリアＩＤが空き情報エリアＩＤで、かつ、スイッチＩＤが空き情報スイッチＩＤのエントリのＰＣＩＤを求める。そして、再配置部２１２は、求めたＰＣＩＤのリストを、空きＰＣリストとして得る。
【０６５０】
例えば、式（５０）で表されるソート済スイッチ空きＰＣ台数情報の１件目の〈Ａｃ２，Ｓｃ３，８〉というエントリが、現在再配置先の候補として注目されているとする。このとき、ステップＳ５０４に関して述べたとおり、空き情報エリアＩＤは“Ａｃ２”で、空き情報スイッチＩＤは“Ｓｃ３”である。また、エリアＡｃ２に配置されスイッチＳｃ３に接続されているＰＣ・Ｐｃ１７〜Ｐｃ２４は、図８ＤのステップＳ６０２に関して説明したように、“電源ＯＦＦ”状態である。よって、この場合の空きＰＣリストは次の式（５５）のとおりである。
（Ｐｃ１７，Ｐｃ１８，Ｐｃ１９，Ｐｃ２０，
Ｐｃ２１，Ｐｃ２２，Ｐｃ２３，Ｐｃ２４）                        （５５）
【０６５１】
さらに、ステップＳ９０５で再配置部２１２は、図３Ｃのキュー・ＰＣ定義情報Ｄｈから、キューＩＤがステップＳ９０２で設定した選択ジョブ実行キューＩＤに一致するエントリにおけるＰＣリストを、「実行キュー対応ＰＣリスト」として得る。例えば、上記のようにステップＳ９０２で選択ジョブ実行キューＩＤとして“Ｑ０８”が得られた場合、図３Ｃによれば、実行キュー対応ＰＣリストとして、次の式（５６）のリストが得られる。
（Ｐａ０１，Ｐａ０２，Ｐａ０３，Ｐａ０４，
Ｐａ０５，Ｐａ０６，Ｐａ０７，Ｐａ０８，
Ｐｂ０１，Ｐｂ０２，Ｐｂ０３，Ｐｂ０４，
Ｐｂ０５，Ｐｂ０６，Ｐｂ０７，Ｐｂ０８，
Ｐｃ０１，Ｐｃ０２，Ｐｃ０３，Ｐｃ０４，
Ｐｃ０５，Ｐｃ０６，Ｐｃ０７，Ｐｃ０８，
Ｐｃ０９，Ｐｃ１０，Ｐｃ１１，Ｐｃ１２，
Ｐｃ１３，Ｐｃ１４，Ｐｃ１５，Ｐｃ１６，
Ｐｃ１７，Ｐｃ１８，Ｐｃ１９，Ｐｃ２０，
Ｐｃ２１，Ｐｃ２２，Ｐｃ２３，Ｐｃ２４）                        （５６）
【０６５２】
さて、続くステップＳ９０６で再配置部２１２は、ステップＳ９０３で得た選択ジョブＰＣリスト中のＰＣＩＤの数を求め、「割り当てＰＣ数」として記憶する。例えば、選択ジョブＰＣリストが式（５４）のとおりである場合、割り当てＰＣ数は４である。
以上のステップＳ９０１〜Ｓ９０６による初期化の後、ステップＳ９０７において再配置部２１２は、空きＰＣ台数と、ステップＳ９０６で求めた割り当てＰＣ数を比較する。
【０６５３】
なお、空きＰＣ台数は、図８ＡのステップＳ５０４または後述の図８ＣのステップＳ５３２で求めた値を持ち、現在注目している再配置先の候補に含まれるＰＣの台数を示す。例えば、再配置部２１２が現在再配置先の候補として注目しているのが式（５０）の１件目の〈Ａｃ２，Ｓｃ３，８〉というエントリの場合、空きＰＣ台数は８である。また、空きＰＣ台数を求めるのに用いたソート済スイッチ空きＰＣ台数情報の定義（図８ＥのステップＳ７０１〜Ｓ７０６を参照）より、空きＰＣ台数は、ステップＳ９０４で得た空きＰＣリストの要素数にも一致する。
【０６５４】
空きＰＣ台数が割り当てＰＣ数より小さい場合、再配置元のＰＣと再配置先のＰＣの個別の対応づけは、再配置元のＰＣが足りないので明らかに不可能である。よって、図８Ｇの処理は終了する。
【０６５５】
他方、空きＰＣ台数が割り当てＰＣ数以上ならば、再配置元のＰＣと再配置先のＰＣの個別の対応づけを試みるため、処理はステップＳ９０８に移行する。ステップＳ９０８〜Ｓ９２０の概要を先に説明すると、次のとおりである。
【０６５６】
すなわち、ステップＳ９０８〜Ｓ９２０で再配置部２１２は、選択ジョブＰＣリストの各ＰＣＩＤに順に注目し、注目しているＰＣＩＤが示すＰＣ（つまり再配置元の候補のＰＣ）に再配置先として対応づけが可能なＰＣを探す。ここで、再配置部２１２が選択ジョブＰＣリストのＰＣＩＤに順に注目していく繰り返し処理は、ステップＳ９１１からステップＳ９１６へ進み、ステップＳ９１７〜Ｓ９２０を経由してステップＳ９０９に戻るループに相当する。
【０６５７】
また、ステップＳ９０４で得られた空きＰＣリストは、あくまでも潜在的な再配置先の候補を示すだけである。よって、再配置部２１２は、再配置先として対応づけが可能なＰＣを探す。
【０６５８】
具体的には、再配置部２１２は、再配置先の候補のＰＣが再配置先として実際に利用可能か否か（つまりジョブの並列数に対応しているか否か）ということを、ステップＳ９１０〜Ｓ９１３のループにより判断する。また、ステップＳ９１４とＳ９１５を経由してステップＳ９１０に戻るループは、あるＰＣが実際の再配置先として利用不能と判明した場合に、再配置部２１２が他のＰＣを再配置先として検討するための繰り返し処理である。
【０６５９】
以下に、ステップＳ９０８〜Ｓ９２０の詳細を説明する。
ステップＳ９０８で再配置部２１２は、選択ジョブＰＣリスト中の１つ目のＰＣＩＤを得て、「割り当てＰＣＩＤ」として記憶する。例えば、選択ジョブＰＣリストが式（５４）のとおりである場合、割り当てＰＣＩＤは“Ｐｂ０１”である。
【０６６０】
次のステップＳ９０９で再配置部２１２は、ステップＳ９０４で得た空きＰＣリスト中の１つ目のＰＣＩＤを得て、「空きＰＣＩＤ」として記憶する。例えば、空きＰＣリストが式（５５）のとおりであれば、最初にステップＳ９０９が行われるときの空きＰＣＩＤは“Ｐｃ１７”である。
【０６６１】
なお、空きＰＣリストは、ステップＳ９０４で得られた後、後述のステップＳ９１８において要素の削除が行われ、図８Ｇの処理が進むにつれて短くなる。ステップＳ９０９の実行後、処理はステップＳ９１０に移行する。
【０６６２】
ステップＳ９１０で再配置部２１２は、ステップＳ９０５で得た実行キュー対応ＰＣリスト中の１つ目のＰＣＩＤを得て、「キュー対応ＰＣＩＤ」として記憶する。例えば、実行キュー対応ＰＣリストが式（５６）のとおりである場合、ステップＳ９１０で得られるキュー対応ＰＣＩＤは“Ｐａ０１”である。
【０６６３】
そして、次のステップＳ９１１で再配置部２１２は、ステップＳ９０９または後述のステップＳ９１５で得た空きＰＣＩＤが、ステップＳ９１０または後述のステップＳ９１３で得たキュー対応ＰＣＩＤと等しいか否かを判断する。つまり、再配置部２１２は、潜在的な再配置先であるＰＣが、実際の再配置先となりうるか否かを、当該ＰＣがジョブの並列数に対応しているか否かによって判断する。
【０６６４】
空きＰＣＩＤとキュー対応ＰＣＩＤが等しくなければ、「空きＰＣＩＤにより識別されるＰＣは、処理の現段階では、『現在注目しているジョブの並列数に対応している』とは判明していない」ということなので、処理はステップＳ９１２に移行する。そして、再配置部２１２は、ステップＳ９１２以降で、空きＰＣＩＤにより識別されるＰＣが上記並列数に対応しているか否かの検討を、「対応」または「非対応」と判明するまで続け、「非対応」と判明したら、別の再配置先の候補を探す。
【０６６５】
他方、空きＰＣＩＤとキュー対応ＰＣＩＤが等しければ、空きＰＣＩＤは実際の再配置先として利用可能なＰＣを示している。よって、再配置元と再配置先の対応づけを行うために、処理はステップＳ９１６に移行する。
【０６６６】
さて、ステップＳ９１２で再配置部２１２は、実行キュー対応リストのすべての内容を処理したか否かを判断する。つまり、再配置部２１２は、ステップＳ９０９または後述のステップＳ９１５で設定した、空きＰＣＩＤの現在の値を、実行キュー対応リスト中のすべてのＰＣＩＤの値とステップＳ９１１で比較し終えたか否かを判断する。
【０６６７】
現在の空きＰＣＩＤに対して未処理のＰＣＩＤ（つまりステップＳ９１１の比較を行っていないＰＣＩＤ）がまだ実行キュー対応ＰＣリストに残っていれば、処理はステップＳ９１３に移行する。つまり、現在の空きＰＣＩＤが示すＰＣは、注目しているジョブの並列数に対応している可能性が残っているので、再配置部２１２は引き続きその可能性を調べる。
【０６６８】
逆に、現在の空きＰＣＩＤが、実行キュー対応ＰＣリスト中のすべてのＰＣＩＤと比較済であれば、現在の空きＰＣＩＤが示すＰＣは、注目しているジョブの並列数には非対応である。よって、再配置部２１２は再配置先の別の候補を探そうとし、処理はステップＳ９１４に移行する。
【０６６９】
ステップＳ９１３で再配置部２１２は、実行キュー対応ＰＣリスト中の次のＰＣＩＤを得て、新たなキュー対応ＰＣＩＤとして記憶する。そして、処理はステップＳ９１１に戻る。
【０６７０】
また、ステップＳ９１４で再配置部２１２は、空きＰＣリストのすべての内容を処理したか否かを判断する。つまり、再配置部２１２は、現在の割り当てＰＣＩＤに対して、空きＰＣリスト中のすべてのＰＣＩＤを空きＰＣＩＤとして取り出し終えたか否かを判断する。
【０６７１】
空きＰＣリストのすべての内容が処理済のとき、現在の割り当てＰＣＩＤに対して再配置部２１２が再配置先の候補を調べつくしたということであり、これ以上再配置元と再配置先のＰＣを個別に対応づける試みを続ける余地はない。よって、再配置部２１２は図８Ｇの処理（すなわち図８ＢのステップＳ５１５の処理）を終える。
【０６７２】
他方、まだ空きＰＣＩＤとして取り出して注目していないＰＣＩＤが空きＰＣリスト中に残っているとき、再配置先の別の候補がまだ残っているということである。よって、その候補についての検討を続けるため、処理はステップＳ９１４からステップＳ９１５に移行する。
【０６７３】
ステップＳ９１５で再配置部２１２は、空きＰＣリスト中の次のＰＣＩＤを得て、新たな空きＰＣＩＤとして記憶する。そして、処理はステップＳ９１０に戻る。
さて、ステップＳ９１１で空きＰＣＩＤとキュー対応ＰＣＩＤが一致すると判明した場合、ステップＳ９１６で再配置部２１２は、ジョブ再配置ＰＣ数（ステップＳ９０１で初期化した変数）の値を１だけ増やす。
【０６７４】
そして、次のステップＳ９１７で再配置部２１２は、〈割り当てＰＣＩＤ，空きＰＣＩＤ〉の組を、ジョブ再配置情報に追加出力する。つまり、再配置部２１２は、再配置元のＰＣＩＤとして割り当てＰＣＩＤを設定し、再配置先のＰＣＩＤとして空きＰＣＩＤを設定したエントリをジョブ再配置情報に追加する。なお、ジョブ再配置情報は、図８Ｂの前述のステップＳ５０９または後述のステップＳ５１９でクリアされて初期化されているので、図８Ｇの処理が開始される時点では何もエントリを持たない。
【０６７５】
さらに次のステップＳ９１８で再配置部２１２は、空きＰＣリストから空きＰＣＩＤを削除する。つまり、ある再配置元のＰＣに対してその再配置先として対応づけたＰＣは、他の再配置元のＰＣに対して重複して対応づけることはできないので、今後は再配置先の候補から外される。
【０６７６】
そして、次のステップＳ９１９で再配置部２１２は、ステップＳ９０３で得た選択ジョブＰＣリストのすべての内容を処理したか否かを判断する。つまり、再配置部２１２は、選択ジョブＰＣリスト中のすべてのＰＣＩＤを、割り当てＰＣＩＤとして取り出し終えたか否かを判断する。
【０６７７】
選択ジョブＰＣリストのすべての内容が処理済のとき、再配置部２１２は、図８Ｇの処理において対応づけを試みる対象であるすべての再配置元の候補のＰＣに関して、対応づけを行うことができたということである。よって、再配置部２１２は図８Ｇの処理（すなわち図８ＢのステップＳ５１５の処理）を終える。
【０６７８】
他方、まだ割り当てＰＣＩＤとして取り出して注目していないＰＣＩＤが選択ジョブＰＣリスト中に残っているとき、再配置先との対応づけをまだ試みていない再配置元の候補のＰＣがまだ残っているということである。よって、その候補についての対応づけの試みを続けるため、処理はステップＳ９２０に移行する。
【０６７９】
ステップＳ９２０で再配置部２１２は、選択ジョブＰＣリスト中の次のＰＣＩＤを得て、新たな割り当てＰＣＩＤとして記憶する。そして処理はステップＳ９０９に戻る。
なお、ステップＳ９１８で空きＰＣＩＤリストからの要素の削除をしてから、ステップＳ９１９とＳ９２０を経由してステップＳ９０９に戻る場合、ステップＳ９０９では空きＰＣリストに１つ以上要素が必ず存在する。なぜなら、上記のとおり空きＰＣ台数は空きＰＣリストの要素数に一致し、かつ、選択ジョブＰＣリストの要素数が割り当てＰＣ数として定義されており、かつ、ステップＳ９０７で空きＰＣ台数は割り当てＰＣ数以上であると確認済だからである。
【０６８０】
以上説明した図８Ｇの処理の結果として、例えば、現在ジョブＪａに注目している場合、ジョブ再配置情報のエントリとして、次の式（５７）に示す４つのエントリが得られる（式（５４）〜（５６）を参照）。
〈Ｐｂ０１，Ｐｃ１７〉，
〈Ｐｂ０２，Ｐｃ１８〉，
〈Ｐｂ０３，Ｐｃ１９〉，
〈Ｐｂ０４，Ｐｃ２０〉                                            （５７）
【０６８１】
さて、ここで図８Ｂの説明に戻る。図８Ｇに詳細に示した処理をステップＳ５１５において実行した後、ステップＳ５１６で再配置部２１２は、「現在注目している当該ジョブ全体を、現在注目している当該再配置先候補に再配置可能であるか否か」を判断する。
【０６８２】
具体的には、再配置部２１２は、割り当てＰＣ数とジョブ再配置ＰＣ数が等しいか否かを判断する。
割り当てＰＣ数は、図８ＧのステップＳ９０６で設定したとおり、現在注目しているジョブがもともとは何台のＰＣに割り当てられていたのかを示す。つまり、当該ジョブの並列数でもある。また、ジョブ再配置ＰＣ数は、図８ＧのステップＳ９０１、Ｓ９１６、Ｓ９１７から理解されるとおり、ジョブ再配置情報のエントリの数であり、換言すれば、再配置元のＰＣと再配置先のＰＣの具体的なペアを作ることができた数である。
【０６８３】
割り当てＰＣ数とジョブ再配置ＰＣ数が等しい場合、再配置対象として現在注目している当該ジョブ全体を、エリアＩＤとスイッチＩＤの組を単位として現在注目している当該再配置先候補に再配置可能である。よって、可能と判明した再配置の仕方を記憶するため、処理はステップＳ５１７に移行する。
【０６８４】
他方、割り当てＰＣ数とジョブ再配置ＰＣ数が等しくない場合、「現在注目している当該ジョブ全体を現在注目している当該再配置先候補に再配置することはできない」と判明したということである。よって、ジョブ選択情報の次のエントリの検討に備えるため、処理はステップＳ５１８に移行する。
【０６８５】
ステップＳ５１７で再配置部２１２は、ステップＳ５１６で可能と判明した再配置の仕方を記憶する。具体的には、再配置部２１２は図８Ｈの処理を行う。
図８ＨのステップＳ１００１で、再配置部２１２は、ジョブ再配置情報の全エントリ（例えば式（５７）の４つのエントリ）を再配置情報に追加する。
【０６８６】
また、ステップＳ１００２で再配置部２１２は、ジョブ再配置情報の各エントリについて、当該エントリの再配置元のＰＣＩＤに対応するエリアＩＤとエリアＩＤが一致するエントリをエリア割り当てＰＣ台数情報において検索する。そして、再配置部２１２は、検索の結果ヒットした各エントリの割り当て済ＰＣ台数を１ずつ減らす。なお、エリア割り当てＰＣ台数情報は、図８ＡのステップＳ５０３（より詳しくは図８ＥのステップＳ７０８〜Ｓ７０９）で得られた後、図８ＢのステップＳ５１７（つまり図８Ｈの処理）が実行されるたびに、ステップＳ１００２とＳ１００３で更新される。
【０６８７】
すなわち、ここで説明の便宜上、ジョブ再配置情報がＭ個のエントリ〈ＰＣｆｒｏｍ（１），ＰＣｔｏ（１）〉，……，〈ＰＣｆｒｏｍ（Ｍ），ＰＣｔｏ（Ｍ）〉を有するとすると（Ｍはジョブ再配置ＰＣ数）、ステップＳ１００２で再配置部２１２は、各エントリ〈ＰＣｆｒｏｍ（ｊ），ＰＣｔｏ（ｊ）〉（１≦ｊ≦Ｍ）について次の処理を行う。
【０６８８】
まず、再配置部２１２は、当該エントリ〈ＰＣｆｒｏｍ（ｊ），ＰＣｔｏ（ｊ）〉の再配置元のＰＣＩＤであるＰＣｆｒｏｍ（ｊ）とＰＣＩＤが一致するエントリを暫定ＰＣ情報において検索する。検索の結果、必ず１件のエントリがヒットするので、再配置部２１２はヒットしたエントリのエリアＩＤを「再配置元エリアＩＤ」（説明の便宜上「Ａｊ」と記す）として取り出す。
【０６８９】
そして、再配置部２１２は、エリア割り当てＰＣ台数情報においてエリアＩＤが再配置元エリアＩＤと一致するエントリを検索する。検索の結果、必ず１件のエントリがヒットするので、再配置部２１２はヒットしたエントリ（説明の便宜上、〈Ａｊ，Ｎｊ〉とする）において、割り当て済ＰＣ台数Ｎｊから１を減じ、当該エントリを〈Ａｊ，Ｎｊ−１〉と更新する。なお、１≦ｊ，ｋ≦Ｍとして、ｊ≠ｋならばＰＣｆｒｏｍ（ｊ）≠ＰＣｆｒｏｍ（ｋ）だが、ｊ≠ｋでもＡｊ≠Ａｋとは限らず、Ａｊ＝Ａｋのこともある（つまりいくつかの異なるＰＣが同じ１つのエリアに存在することがある）。
【０６９０】
したがって、以上の処理を再配置部２１２がジョブ再配置情報の各エントリ〈ＰＣｆｒｏｍ（ｊ），ＰＣｔｏ（ｊ）〉（１≦ｊ≦Ｍ）について行うことで、エリア割り当てＰＣ台数情報中の１つ以上のエントリにおいて割り当て済ＰＣ台数の値が減らされることになる。そして、減らされた量の合計は、ジョブ再配置ＰＣ数（すなわちＭ）である。
【０６９１】
例えば、上記の例のようにして図８ＢのステップＳ５１５で式（５７）のジョブ再配置位置情報が得られた直後の、ステップＳ５１７に相当する図８ＨのステップＳ１００２では、式（５１）のエントリ〈Ａｂ１，８〉が更新される。つまり、このエントリ〈Ａｂ１，８〉において、割り当て済ＰＣ台数が８から４に更新される。
【０６９２】
そして、ステップＳ１００３で再配置部２１２は、エリア割り当てＰＣ台数情報において、エリアＩＤが空き情報エリアＩＤに一致するエントリの割り当て済ＰＣ台数にジョブ再配置ＰＣ数を加える。空き情報エリアＩＤは、現在注目している当該再配置先候補に対応して、図８ＡのステップＳ５０４または後述の図８ＣのステップＳ５３２で得られたエリアＩＤである。
【０６９３】
例えば、上記の例のようにして図８ＢのステップＳ５１５で式（５７）のジョブ再配置位置情報が得られた直後の、ステップＳ５１７に相当する図８ＨのステップＳ１００３では、空き情報エリアＩＤが“Ａｃ２”である。また、ジョブ再配置ＰＣ数は、式（５７）のエントリ数に等しいので４である。よって、式（５１）のエリア割り当てＰＣ台数情報のうち、エリアＩＤが“Ａｃ２”であるエントリ〈Ａｃ２，４〉において、割り当て済ＰＣ台数が４から８（＝４＋４）に更新される。
【０６９４】
続いて、ステップＳ１００４で再配置部２１２は、エリア割り当てＰＣ台数情報のエントリを、ステップＳ１００２とＳ１００３で変更された後の割り当て済ＰＣ台数の降順にソートする。
【０６９５】
また、ステップＳ１００５で再配置部２１２は、ジョブ割り当て情報において、ジョブＩＤが選択ジョブＩＤと一致するエントリの状態を“再配置済”に設定する。なお、ジョブ割り当て情報は、再配置元を示す情報として図８ＡのステップＳ５０３（より詳しくは図８ＥのステップＳ７０９）で得られた後、図８ＢのステップＳ５１７（つまり図８Ｈの処理）が実行されるたびに、ステップＳ１００５で更新される。
【０６９６】
さらに、ステップＳ１００６で再配置部２１２は、暫定ジョブ・ＰＣ情報において、ジョブＩＤが選択ジョブＩＤと一致するエントリの状態を“再配置済”に設定する。なお、暫定ジョブ・ＰＣ情報は、図８ＡのステップＳ５０１（より詳しくは図８ＤのステップＳ６０３）で得られた後、図８ＢのステップＳ５１７（つまり図８Ｈの処理）が実行されるたびに、ステップＳ１００６で更新される。また、選択ジョブＩＤは図８ＢのステップＳ５１０またはＳ５２１で設定されており、再配置の対象となったジョブを示す。
【０６９７】
また、ステップＳ１００７で再配置部２１２は、ジョブ再配置情報の各エントリの再配置元のＰＣに関して、暫定ＰＣ情報における状態を“再配置元”に設定する。例えば、ジョブ再配置情報が式（５７）の４つのエントリを持つ場合、再配置部２１２は、暫定ＰＣ情報においてＰＣ・Ｐｂ０１〜Ｐｂ０４に対応する４つのエントリの状態を“再配置元”に設定する。なお、暫定ＰＣ情報は、図８ＡのステップＳ５０１（より詳しくは図８ＤのステップＳ６０２）で得られた後、図８ＢのステップＳ５１７（つまり図８Ｈの処理）が実行されるたびに、ステップＳ１００７とＳ１００８で更新される。
【０６９８】
そして、ステップＳ１００８で再配置部２１２は、ジョブ再配置情報の各エントリの再配置先のＰＣに関して、暫定ＰＣ情報において、ジョブＩＤを選択ジョブＩＤに設定し、状態を“再配置先”に設定する。なお、選択ジョブＩＤは、図８ＢのステップＳ５１０または後述のＳ５２１で、再配置されるジョブを示すＩＤとして設定されている。
【０６９９】
例えば、ジョブＪａに関して式（５７）の４つのエントリを持つジョブ再配置情報が得られた場合、再配置部２１２は、暫定ＰＣ情報においてＰＣ・Ｐｃ１７〜Ｐｃ２０に対応する４つのエントリを、ステップＳ１００８で更新する。
【０７００】
また、ステップＳ１００９で再配置部２１２は、図８ＢのステップＳ５０６で０に初期化されたエリア再配置ＰＣ数に、図８Ｇの処理で得られたジョブ再配置ＰＣ数を足し、加算結果を新たなエリア再配置ＰＣ数として記憶する。
【０７０１】
そして、以上のようにして図８ＢのステップＳ５１７に相当する図８Ｈの処理が終了すると、処理は図８ＢのステップＳ５１９に移行する。
また、ステップＳ５１８では、再配置部２１２は、ジョブ再配置ＰＣ数に０を設定する。その理由は、ステップＳ５１６において「現在注目している当該ジョブ全体を、現在注目している当該再配置先候補に再配置可能ではない」と再配置部２１２が判断した後で、処理がステップＳ５１９、Ｓ５２０、Ｓ５２１と進むことがあるからである。その場合、後述するようにステップＳ５２１で再配置部２１２は、ジョブ再配置ＰＣ数を使った計算を行うが、事前にステップＳ５１８でジョブ再配置ＰＣ数に０を設定することで、ステップＳ５１６の分岐に応じた正しい計算結果が得られる。ステップＳ５１８の実行後、処理はステップＳ５１９に移行する。
【０７０２】
さて、ステップＳ５１７またはＳ５１８の処理を実行した後、再配置部２１２は、続いて図８ＢのステップＳ５１９において、ジョブ再配置情報をクリアする。つまり、再度ステップＳ５１５（図８Ｇの処理）を実行する場合に備えて、再配置部２１２はジョブ再配置情報を初期化しなおす。
【０７０３】
続いて、ステップＳ５２０で再配置部２１２は、ステップＳ５０７で得たジョブ選択情報のすべてのエントリを処理したか否かを判断する。つまり、再配置部２１２は、ジョブ選択情報のすべてのエントリに対してステップＳ５１１〜Ｓ５１９の処理を行ったか否かを判断する。
【０７０４】
未処理のエントリがジョブ選択情報に残っていれば、処理はステップＳ５２１に移行する。逆に、すべてのエントリが処理済であれば、処理は図８ＣのステップＳ５２２に移行する。
【０７０５】
そして、ステップＳ５２１で再配置部２１２は、空きＰＣ台数からジョブ再配置ＰＣ数を引き、減算結果を新たな空きＰＣ台数として記憶する。更新後の空きＰＣ台数は、現在注目している再配置先候補に含まれるＰＣのうち、まだ再配置元と具体的に対応づけられていないＰＣの台数を示す。
【０７０６】
なお、空きＰＣ台数は、もともと、現在注目している再配置先候補に対応して図８ＡのステップＳ５０４または図８Ｃの後述のステップＳ５３２で設定された値を持っている。また、ジョブ再配置ＰＣ数は、ステップＳ５１５（詳細は図８Ｇ）での試みの結果としてステップＳ５１６において「可能」と判明した再配置に関わるＰＣの数を示し、場合によってはステップＳ５１８で適宜０に設定しなおされている。よって、更新後の空きＰＣ台数は、再配置先としての残りのキャパシティを示す。
【０７０７】
また、ステップＳ５２１で再配置部２１２はさらに、ジョブ選択情報から次のエントリを読み込む。そして、ステップＳ５１０と同様に再配置部２１２は各変数の設定を行う。すなわち、再配置部２１２は、読み込んだ当該エントリのエリアＩＤ、スイッチＩＤ、ジョブＩＤ、割り当て済ＰＣ台数を、それぞれ選択ジョブエリアＩＤ、選択ジョブスイッチＩＤ、選択ジョブＩＤ、選択ジョブ割り当て済ＰＣ台数として記憶する。そして、処理はステップＳ５１１に戻る。
【０７０８】
例えば、ステップＳ５２１では式（５３）の２つ目のエントリが読み込まれ、選択ジョブエリアＩＤは“Ａｂ１”、選択ジョブスイッチＩＤは“Ｓｂ１”、選択ジョブＩＤは“Ｊｂ”、選択ジョブ割り当て済ＰＣ台数は４と設定される。そして、ステップＳ５０４で上記の例のように空きＰＣ台数が８と設定されており、ステップＳ５１５により式（５７）のように４つのエントリを持つジョブ再配置情報が得られた場合、ステップＳ５２１では空きＰＣ台数が４（＝８−４）に更新される。
【０７０９】
すると、処理がステップＳ５１１に戻った後、再度ステップＳ５１５に相当する図８Ｇの処理が実行される。すると、図８ＧのステップＳ９０２で得られる選択ジョブ実行キューＩＤは“Ｑ０８”であり、ステップＳ９０３で得られる選択ジョブＰＣリストは式（５８）のとおりであり、ステップＳ９０４で得られる空きＰＣリストは式（５９）のとおりである。
（Ｐｂ０５，Ｐｂ０６，Ｐｂ０７，Ｐｂ０８）                        （５８）
（Ｐｃ２１，Ｐｃ２２，Ｐｃ２３，Ｐｃ２４）                        （５９）
【０７１０】
また、ステップＳ９０５では式（５６）と同じ実行キュー対応ＰＣリストが得られる。その結果、図８Ｇの処理が終了した時点のジョブ再配置情報は、式（６０）の４つのエントリを有する。
〈Ｐｂ０５，Ｐｃ２１〉，
〈Ｐｂ０６，Ｐｃ２２〉，
〈Ｐｂ０７，Ｐｃ２３〉，
〈Ｐｂ０８，Ｐｃ２４〉                                            （６０）
【０７１１】
そして、処理はステップＳ５１６、Ｓ５１７と進む。ここで、１回目のステップＳ５１７の結果として、既にエリア割り当てＰＣ台数情報は式（５１）の状態から以下の式（６１）の状態になっている。
〈Ａａ１，１６〉，
〈Ａｃ１，  ８〉，
〈Ａｃ２，  ８〉，
〈Ａｂ１，  ４〉                                                  （６１）
【０７１２】
よって、２回目のステップＳ５１７の結果として、エリア割り当てＰＣ台数情報は式（６１）の状態から式（６２）の状態となる。
〈Ａａ１，１６〉，
〈Ａｃ２，１２〉，
〈Ａｃ１，  ８〉，
〈Ａｂ１，  ０〉                                                  （６２）
【０７１３】
その後、処理はさらにＳ５１９、Ｓ５２０と順に進む。ここで、式（５３）のジョブ選択情報には２つしかエントリがないので、今度はステップＳ５２０から図８ＣのステップＳ５２２へと処理が移行する。
【０７１４】
さて、ステップＳ５２０でジョブ選択情報のすべてのエントリが処理済と判断すると、再配置部２１２はステップＳ５２２〜Ｓ５３０の処理を行う。ステップＳ５２２〜Ｓ５３０で再配置部２１２は、当該再配置先候補に関してジョブ選択情報の各エントリについての繰り返し処理を行う過程のステップＳ５１７において記憶した内容を有効と認めるか否かを決定する。そして、再配置部２１２は、必要に応じて、ステップＳ５１７で記憶した内容を無効にするためのリストアを行う。具体的な処理は次のとおりである。
【０７１５】
ステップＳ５２２で再配置部２１２は、図８ＢのステップＳ５０７に相当する図８Ｆの処理で作成した再配置元エリアＩＤリストの１つ目の値を読み込み、「再配置元エリアＩＤ」として記憶する。なお、ステップＳ５２２が実行される場合、再配置元エリアＩＤリストは空ではなく、必ず１つ以上の要素を持つ。なぜなら、再配置元エリアＩＤリストが空の場合は、図８Ｆから明らかに再配置フラグが０のままなので、処理はステップＳ５０８からステップＳ５３１へと進み、ステップＳ５２２が実行されることはないからである。
【０７１６】
そして、次のステップＳ５２３で再配置部２１２は、暫定ＰＣ情報で、ステップＳ５２２または後述のステップＳ５２７で記憶した再配置元エリアＩＤに一致するエリアＩＤを持つエントリのうち、状態が“割り当て済”のエントリの件数を求める。そして、再配置部２１２は、求めた件数を「再配置元割り当て台数」として記憶する。
【０７１７】
なお、図８ＢのステップＳ５１６で再配置可能と判断されたジョブに関しては、ステップＳ５１７で状態が“再配置済”に更新されている。よって、ステップＳ５２３で再配置元割り当て台数として数えられるエントリは、まだ、再配置されたことのないＰＣが対象となる。
【０７１８】
次のステップＳ５２４で再配置部２１２は、再配置元割り当て台数が０か否かを判断する。そして、再配置元割り当て台数が０のとき、処理はステップＳ５２８に移行する。他方、再配置元割り当て台数が０ではないとき（つまり正のとき）、処理はステップＳ５２５に移行する。
【０７１９】
ステップＳ５２５で再配置部２１２は、「再配置元割り当てフラグ」を−１に設定する。
そして、次のステップＳ５２６で再配置部２１２は、再配置元エリアＩＤリストのすべての値を処理したか否か（つまり、再配置元エリアＩＤリストのすべての要素を、再配置元エリアＩＤとして注目し終えたか否か）を判断する。未処理の値が再配置元エリアＩＤリストに残っていれば、処理はステップＳ５２７に移行する。他方、再配置元エリアＩＤリストのすべての値が処理済であれば、処理はステップＳ５２９に移行する。
【０７２０】
ステップＳ５２７で再配置部２１２は、再配置元エリアＩＤリストの次の値を読み込み、再配置元エリアＩＤとして記憶する。そして処理はステップＳ５２３に戻る。
他方、ステップＳ５２８では、再配置部２１２は、再配置元割り当てフラグを０に設定する。そして、処理はステップＳ５２９へと移行する。
【０７２１】
ステップＳ５２９で再配置部２１２は、再配置元割り当てフラグが０か否かを判断する。なお、メモリ上のワークエリアの明示的な解放を再配置部２１２が行う実施形態においては、再配置部２１２は、例えばステップＳ５２９で、配置元エリアＩＤリスト用のワークエリアを解放してもよい。
【０７２２】
再配置元割り当てフラグが０の場合、再配置元エリアＩＤリストに含まれる少なくとも１つのエリアＩＤについて、当該エリアＩＤが示すエリア内のＰＣに割り当てられていたジョブはすべて、他のエリア内のＰＣへの再配置が成功している。よって、成功した再配置だけでも活かすため、再配置部２１２は「データのリストアは不要」と判断し、処理はステップＳ５３１へと移行する。
【０７２３】
他方、再配置元割り当てフラグが０ではない場合、「エリア内のＰＣに割り当てられていたジョブはすべて、他のエリア内のＰＣに再配置することができた」という条件を満たすエリアは１つもなかったということである。よって、この場合、再配置部２１２は「データのリストアが必要」と判断し、処理はステップＳ５３０に移行する。
【０７２４】
ステップＳ５３０で再配置部２１２は、当該再配置先候補に関してステップＳ５０６でバックアップしたデータを使って、各種データのリストアを行う。つまり、再配置部２１２は、ステップＳ５０６に関して（ｓ１）〜（ｓ５）として列挙した各情報のリストア（すなわちロールバック）を行う。そして、処理はステップＳ５３１に移行する。
【０７２５】
以上のステップＳ５２２〜Ｓ５３０の処理によれば、ジョブ選択情報が複数のエントリを有しており、複数のエントリ間でエリアＩＤが異なり、一部のエリアに関わるジョブについてだけ再配置が可能と判明した場合に、再配置の検討結果を活かすことが可能となる。ステップＳ５２２〜Ｓ５３０の処理の利点は、図１などに示したのとは別の以下のような環境を想定すると明らかである。
【０７２６】
例えば、４つの教室があり、各教室は１つのエリアだけを含むとする。また、便宜上、４つのエリアを、エリアα、β、γ、δと呼ぶことにする。そして、エリアαにはスイッチα１とα２があり、スイッチα１とα２には４台ずつＰＣが接続されるとし、エリアβには４台のＰＣが接続されるスイッチβ１があるとする。また、エリアγには８台のＰＣが接続されるスイッチγ１があり、エリアδには１６台のＰＣが接続されるスイッチδ１があるとする。
【０７２７】
そして、再配置前の状況を式（５２）と同様の形式でジョブ割り当て情報として示すと、以下の式（５２ｂ）のようになるとする。
〈α，α１，Ｊ１，２，ＮＵＬＬ〉，
〈α，α１，Ｊ２，２，ＮＵＬＬ〉，
〈α，α２，Ｊ３，２，ＮＵＬＬ〉，
〈α，α２，Ｊ４，２，ＮＵＬＬ〉，
〈β，β１，Ｊ５，４，ＮＵＬＬ〉，
〈γ，γ１，Ｊ６，２，ＮＵＬＬ〉，
〈γ，γ１，ＮＵＬＬ，０，ＮＵＬＬ〉，
〈δ，δ１，ＮＵＬＬ，０，ＮＵＬＬ〉                            （５２ｂ）
【０７２８】
この場合、ソート済みスイッチ空きＰＣ台数情報を式（５０）と同様の形式で表現すると、以下の式（５０ｂ）のとおりである。
〈δ，δ１，１６〉，
〈γ，γ１，６〉，
〈α，α１，０〉，
〈α，α２，０〉，
〈β，β１，０〉                                                （５０ｂ）
また、エリア割り当てＰＣ台数情報を式（５１）と同様の形式で表現すると、以下の式（５１ｂ）のとおりである。
〈α，８〉，
〈β，４〉，
〈γ，２〉，
〈δ，０〉                                                      （５１ｂ）
【０７２９】
すると、再配置先候補としてまず式（５０ｂ）の１番目の〈δ，δ１，１６〉というエントリが選択された場合、得られるジョブ選択情報は、式（５３）と同様の形式で表現すれば以下の式（５３ｂ）のとおりである。
〈α，α１，Ｊ１，２，ＮＵＬＬ〉，
〈α，α１，Ｊ２，２，ＮＵＬＬ〉，
〈α，α２，Ｊ３，２，ＮＵＬＬ〉，
〈α，α２，Ｊ４，２，ＮＵＬＬ〉，
〈β，β１，Ｊ５，４，ＮＵＬＬ〉，
〈γ，γ１，Ｊ６，２，ＮＵＬＬ〉                                （５３ｂ）
【０７３０】
ここで、エリアδ内の１６台のＰＣは、並列数２のキュー専用で、並列数４には非対応とする。すると、図８Ｇの処理により、ジョブＪ１〜Ｊ４とＪ６はエリアδに再配置可能と判明するが、ジョブＪ５は再配置することができない。つまり、再配置部２１２が式（５０ｂ）の〈δ，δ１，１６〉というエントリに再配置先候補として注目しているとき、「エリアαとエリアγからエリアδへの再配置は可能だが、エリアβからエリアδへの再配置はできない」ということが判明する。
【０７３１】
以上のような状況下で、式（５３ｂ）のジョブ選択情報の複数のエントリに含まれるエリアＩＤが示す複数のエリアのうち、すべてのエリアからの再配置が可能ではなくても、一部のエリアからの再配置だけでも可能ならば、可能な再配置を行うことが考えられる。つまり、本実施形態の再配置部２１２は、現在注目している再配置先候補に関して、たとえエリアα、β、γという３つすべてのエリアからの再配置が可能ではないとしても、エリアαとγからの再配置だけでも可能ならば、可能と判明した再配置だけでも実行する。
【０７３２】
具体的には、この例の場合、図８ＢのステップＳ５０７（すなわち図８Ｆの処理）の実行後の再配置元エリアＩＤリストは（α，β，γ）となる。よって、式（５３ｂ）のジョブ選択情報の１〜４番目と６番目のエントリに関して再配置部２１２がステップＳ５１７で行った処理の結果から当然に、ステップＳ５２８で再配置元割り当てフラグは０に設定される。
【０７３３】
したがって、ステップＳ５３０のリストアは実行されない。つまり、式（５３ｂ）のジョブ選択情報の１〜４番目と６番目のエントリに関して「可能」と判明し、ステップＳ５１７で記録された再配置の仕方は、無効化されない。このように、ジョブ選択情報の一部のエントリに関する再配置ができなくても、他の一部のエントリに関して可能と判明した再配置によって、あるエリア内でジョブの割り当て先となるＰＣをなくすことができるなら、可能な再配置は活かされる。
【０７３４】
さて、ステップＳ５３１で再配置部２１２は、すべての再配置先候補を処理したか否かを判断する。すなわち、再配置部２１２は、図８ＡのステップＳ５０３（より詳しくは図８ＥのステップＳ７０１〜Ｓ７０６）で得たソート済スイッチ空きＰＣ台数情報のすべてのエントリ（例えば式（５０）の６つのエントリ）に注目し終わったか否かを判断する。
【０７３５】
まだ注目していないエントリがソート済スイッチ空きＰＣ台数情報に残っていれば、未処理の再配置先候補があるということなので、処理はステップＳ５３２に移行する。他方、ソート済スイッチ空きＰＣ台数情報のすべてのエントリ（すなわち、すべての再配置先候補）に注目済であれば、処理はステップＳ５３４に移行する。
【０７３６】
ステップＳ５３２で再配置部２１２は、次の再配置先候補の情報を読み込み、変数の設定を行う。つまり、再配置部２１２は、ソート済スイッチ空きＰＣ台数情報から次のエントリを読み込む。そして、再配置部２１２は、ステップＳ５０４と同様に、読み込んだ当該エントリのエリアＩＤ、スイッチＩＤ、空きＰＣ台数を、空き情報エリアＩＤ、空き情報スイッチＩＤ、空きＰＣ台数として記憶する。そして、処理は図８ＢのステップＳ５３３に移行する。
【０７３７】
すると、ステップＳ５３３で再配置部２１２は、図８ＥのステップＳ７１０と同様にジョブ選択情報を初期化する。そして、処理はステップＳ５０５に戻る。
例えば、ソート済スイッチ空きＰＣ台数情報が式（５０）のとおりである場合、式（５０）の２つ目のエントリは〈Ａｃ２，Ｓｃ２，４〉なので、ステップＳ５０５が２回目に実行されるときの空きＰＣ台数の値は４である。すると、４＞０なので処理はステップＳ５０６からステップＳ５０７へと進む。
【０７３８】
そして、ステップＳ５０７に相当する図８Ｆの処理が２回目に行われるとき、式（６２）の１つ目から３つ目までのエントリに関しては、ステップＳ８０６からステップＳ８１０へと処理が進む。また、式（６２）の４つ目のエントリに関しては、ステップＳ８０５からステップＳ８１２へと処理が進む。その結果、ステップＳ５０７の２回目の実行後の再配置フラグの値は０なので、処理はステップＳ５０８からステップＳ５３１へと移行する。
【０７３９】
さて、ステップＳ５３４は、「再配置を行う余地がない」と再配置部２１２が判断した場合か、すべての再配置先候補について処理が終わった場合に実行される。ステップＳ５３４で再配置部２１２は、再配置情報から最終的な再配置結果を得る。具体的には、再配置部２１２はステップＳ５３４で、まず暫定ＰＣ情報を再配置後ＰＣ情報Ｄｃ４にコピーし、暫定ジョブ・ＰＣ情報を再配置後ジョブ・ＰＣ情報Ｄｅ４にコピーした後、以下の処理を行う。
【０７４０】
すなわち、再配置部２１２は、再配置後ＰＣ情報Ｄｃ４の各エントリに順に注目する。説明の便宜上、再配置部２１２が注目している再配置後ＰＣ情報Ｄｃ４中のエントリのＰＣＩＤを「注目ＰＣＩＤ」ということにする。再配置部２１２は、注目ＰＣＩＤを再配置元のＰＣＩＤとして有するエントリが再配置情報に含まれるか否かを判断する。
【０７４１】
なお、再配置情報の各エントリは、上述のとおり、〈再配置元のＰＣＩＤ，再配置先のＰＣＩＤ〉の組である。また、再配置部２１２が今までに再配置可能と判断した再配置元と再配置先の組み合わせは、もしあれば再配置情報のエントリとして登録されているし、もしなければ再配置情報は何もエントリを持たない初期状態のままである。
【０７４２】
そして、注目ＰＣＩＤを再配置元のＰＣＩＤとして有するエントリが再配置情報に含まれていれば、再配置部２１２は、注目ＰＣＩＤに対応する再配置先のＰＣＩＤを当該エントリから得る。さらに、再配置部２１２は、再配置後ＰＣ情報Ｄｃ４において、注目ＰＣＩＤをＰＣＩＤとして有するエントリと、上記のようにして得た再配置先のＰＣＩＤをＰＣＩＤとして有するエントリの間で、状態、ジョブＩＤ、予約の各フィールドの値を入れ替える。
【０７４３】
また、再配置部２１２は、以上のようにして再配置後ＰＣ情報Ｄｃ４中のすべてのエントリに注目し終わると、続いて、再配置後ジョブ・ＰＣ情報Ｄｅ４の各エントリに順に注目する。説明の便宜上、再配置部２１２が注目している再配置後ジョブ・ＰＣ情報Ｄｅ４中のエントリを「注目エントリ」といい、注目エントリのジョブＩＤを「注目ジョブＩＤ」ということにする。
【０７４４】
再配置部２１２は、再配置後ＰＣ情報Ｄｃ４においてジョブＩＤが注目ジョブＩＤと一致するエントリを検索する。そして、再配置部２１２は、検索の結果ヒットしたエントリにおける教室ＩＤの値の集合を得て、得た集合を表すリストを、再配置後ジョブ・ＰＣ情報Ｄｅ４における注目エントリの教室ＩＤフィールドに設定する。
【０７４５】
また、再配置部２１２は、上記の検索の結果ヒットしたエントリにおけるエリアＩＤの値の集合を得て、得た集合を表すリストを、再配置後ジョブ・ＰＣ情報Ｄｅ４における注目エントリのエリアＩＤフィールドに設定する。さらに、再配置部２１２は、上記の検索の結果ヒットしたエントリにおけるスイッチＩＤの値の集合を得て、得た集合を表すリストを、再配置後ジョブ・ＰＣ情報Ｄｅ４における注目エントリのスイッチＩＤフィールドに設定する。
【０７４６】
例えば、上記の例では、ステップＳ５３４の実行時には、既に式（５７）と（６０）のジョブ再配置情報が再配置情報にコピーされているので、再配置情報は式（６３）のように８つのエントリを有する。
〈Ｐｂ０１，Ｐｃ１７〉，
〈Ｐｂ０２，Ｐｃ１８〉，
〈Ｐｂ０３，Ｐｃ１９〉，
〈Ｐｂ０４，Ｐｃ２０〉，
〈Ｐｂ０５，Ｐｃ２１〉，
〈Ｐｂ０６，Ｐｃ２２〉，
〈Ｐｂ０７，Ｐｃ２３〉，
〈Ｐｂ０８，Ｐｃ２４〉                                            （６３）
【０７４７】
よって、ステップＳ５３４で再配置部２１２は、これら８つのペアについて、それぞれ、暫定ＰＣ情報における状態、ジョブＩＤ、予約の各フィールドの入れ替えを行う。
【０７４８】
また、上記の例では、図８ＤのステップＳ６０３に関して説明したとおり、暫定ジョブ・ＰＣ情報は、最初に得られた段階で図３Ｂの情報Ｄｅに空白の状態を追加したものである。
【０７４９】
したがって、注目ジョブＩＤが“Ｊｃ”のときは、教室ＩＤのリストとして（Ｒａ）が、エリアＩＤのリストとして（Ａａ１）が、スイッチＩＤのリストとして（Ｓａ１，Ｓａ２）が得られる。また、注目ジョブＩＤが“Ｊａ”のときと“Ｊｂ”のときは、教室ＩＤのリストとして（Ｒｃ）が、エリアＩＤのリストとして（Ａｃ２）が、スイッチＩＤのリストとして（Ｓｃ３）が得られる。
【０７５０】
そして、注目ジョブＩＤが“Ｊｄ”のときは、教室ＩＤのリストとして（Ｒｃ）が、エリアＩＤのリストとして（Ａｃ１）が、スイッチＩＤのリストとして（Ｓｃ１）が得られる。また、注目ジョブＩＤが“Ｊｇ”のときは、教室ＩＤのリストとして（Ｒｃ）が、エリアＩＤのリストとして（Ａｃ２）が、スイッチＩＤのリストとして（Ｓｃ２）が得られる。
【０７５１】
さて、続いて図９を参照して、図４のステップＳ１１９で運用モードを引数として実行される予約設定処理について説明する。
ステップＳ１１０１で予約部２１３は、再配置後ジョブ・ＰＣ予測情報Ｄｅ５から１件目のジョブの情報（つまり１件目のエントリ）を読み込む。
【０７５２】
続くステップＳ１１０２〜Ｓ１１０８は、ステップＳ１１０１または後述のステップＳ１１１０で情報を読み込んだジョブに関する処理である。
具体的には、ステップＳ１１０２で予約部２１３は、ステップＳ１１０１（またはステップＳ１１１０）で情報を読み込んだ当該ジョブが使用するＰＣのうち１台目のＰＣのＩＤを得る。つまり、予約部２１３は、ステップＳ１１０１（またはステップＳ１１１０）で読み込んだエントリのＰＣリストの中から、１つ目のＰＣＩＤを取り出す。
【０７５３】
続いて、ステップＳ１１０３で予約部２１３は、運用モードが“ｒｅｓｅａｒｃｈ”と“ｅｄｕｃａｔｅ”のいずれであるかを判定する。なお、図４から明らかなとおり、運用モードが“ｓｔａｒｔ−ＧＲＩＤ”のときに予約設定処理が実行されることはない。
【０７５４】
運用モードが“ｒｅｓｅａｒｃｈ”のとき処理はステップＳ１１０４に移行する。他方、運用モードが“ｅｄｕｃａｔｅ”のとき処理はステップＳ１１０５に移行する。
ステップＳ１１０４で予約部２１３は、ステップＳ１１０２または後述のステップＳ１１０７でＰＣＩＤを得た当該ＰＣのブートＯＳにグリッド用ＯＳ（本実施形態ではＵＮＩＸ）を設定する。設定後、処理はステップＳ１１０５に移行する。
【０７５５】
ステップＳ１１０４での設定は、例えば、当該ＰＣに対応する設定ファイルのシンボリックリンクの上書き更新により実現されてもよい。
例えば、ステップＳ１１０２またはＳ１１０７で得られたＰＣＩＤが「Ｐａ０１」だとする。この場合、予約部２１３は、運用管理装置１００の“／ｔｆｔｐｂｏｏｔ”ディレクトリにおいて“Ｐａ０１．ｃｏｎｆ”という名前で定義されるシンボリックリンクのリンク先を上書きする。つまり、予約部２１３は、グリッド用ＯＳに対応する設定ファイル“／ｔｆｔｐｂｏｏｔ／ｇｒｉｄ．ｃｏｎｆ”（図３Ｃの研究利用向けテンプレートＤｉ１）を指すように、“Ｐａ０１．ｃｏｎｆ”というシンボリックリンクのリンク先を上書き更新する。換言すれば、予約部２１３はＰＣ・Ｐａ０１に関してリンク設定Ｄｉ５を書き換える。
【０７５６】
そして、ステップＳ１１０５で予約部２１３は、ステップＳ１１０２またはＳ１１０７でＰＣＩＤが得られた当該ＰＣについて、ＰＣ管理情報Ｄｃ３とＰＣ予測情報Ｄｃ２における予約を“あり”に設定する。
【０７５７】
そして、次のステップＳ１１０６で予約部２１３は、ステップＳ１１０１またはＳ１１１０で情報を得た当該ジョブが使用するすべてのＰＣについてステップＳ１１０３〜Ｓ１１０５の処理を行ったか否かを判断する。「当該ジョブが使用するすべてのＰＣ」とは、換言すれば、ステップＳ１１０１またはＳ１１１０で得られたエントリの使用ＰＣリストにＰＣＩＤが含まれるすべてのＰＣである。
【０７５８】
判断の結果、未処理のＰＣが残っていれば処理はステップＳ１１０７に移行する。他方、すべてのＰＣについて処理済であれば処理はステップＳ１１０８に移行する。
ステップＳ１１０７で予約部２１３は、ステップＳ１１０１またはＳ１１１０で情報を得た当該ジョブが使用する次のＰＣのＰＣＩＤを得る。つまり、予約部２１３は、ステップＳ１１０１またはＳ１１１０で得られたエントリの使用ＰＣリストの中から、未処理のＰＣＩＤを１つ取り出す。そして処理はステップＳ１１０３に戻る。
【０７５９】
他方、ステップＳ１１０８で予約部２１３は、ステップＳ１１０１またはＳ１１１０で得た当該ジョブの情報をジョブ・ＰＣ予測情報Ｄｅ２に追加する。
なお、ステップＳ１１０１またはＳ１１１０で予約部２１３がエントリを得た再配置後ＰＣ予測情報Ｄｃ５は、追加先のジョブ・ＰＣ予測情報Ｄｅ２と同じデータ形式である。よって、ステップＳ１１０８の処理は、単純に、ステップＳ１１０１またはＳ１１１０で読み込み済のエントリをコピーする処理である。
【０７６０】
そして、次のステップＳ１１０９で予約部２１３は、すべてのジョブを処理したか否かを判断する。つまり、予約部２１３は、再配置後ジョブ・ＰＣ予測情報Ｄｅ５のすべてのエントリについてステップＳ１１０２〜Ｓ１１０８の処理を行ったか否かを判断する。
【０７６１】
まだ読み込んでいないエントリが再配置後ジョブ・ＰＣ予測情報Ｄｅ５に残っていれば、処理はステップＳ１１１０に移行する。他方、すべてのエントリについて処理済であれば処理はステップＳ１１１１に移行する。
【０７６２】
ステップＳ１１１０で予約部２１３は、再配置後ジョブ・ＰＣ予測情報Ｄｅ５から次のジョブの情報（つまり次のエントリ）を読み込む。そして処理はステップＳ１１０２に戻る。
【０７６３】
続くステップＳ１１１１〜Ｓ１１１６は、研究利用モードでのシステム１０１の運用中に、ジョブの実行に使われないＰＣを他の用途での利用に供するための処理である。例えば、システム１０１が大学で運用されている場合、研究利用モードの時間帯に空いているＰＣを学生の自習用に開放することが考えられる。
【０７６４】
ステップＳ１１１１で予約部２１３は、ＰＣ管理情報Ｄｃ３において、下記の（ｔ１）かつ（ｔ２）という条件を満たすＰＣのＰＣＩＤを検索する。
（ｔ１）状態が“電源ＯＦＦ”である。
（ｔ２）予約が“あり”ではない（つまり予約の値がＮＵＬＬである）。
【０７６５】
そして、予約部２１３は、検索結果を「グリッド予定外ＰＣリスト」として記憶する。グリッド予定外ＰＣリストは、空の場合もあるし、１つ以上のＰＣＩＤのリストの場合もある。
【０７６６】
続いて、ステップＳ１１１２で予約部２１３は、グリッド予定外ＰＣリストに含まれるＰＣＩＤの件数が０であるか、それとも１以上であるかを判断する。件数が０であれば、予約部２１３は図９の予約設定処理を終える。他方、件数が１以上であれば、処理はステップＳ１１１３に移行する。
【０７６７】
ステップＳ１１１３で予約部２１３は、グリッド予定外ＰＣの１件目のＰＣＩＤを取り出し、「グリッド予定外ＰＣ」として記憶する。
続いて、ステップＳ１１１４で予約部２１３は、運用モードが“ｒｅｓｅａｒｃｈ”と“ｅｄｕｃａｔｅ”のいずれであるかを判定する。なお、ステップＳ１１０３に関して説明したとおり、運用モードが“ｓｔａｒｔ−ＧＲＩＤ”のときに予約設定処理が実行されることはない。
【０７６８】
運用モードが“ｒｅｓｅａｒｃｈ”のとき、処理はステップＳ１１１５に移行する。他方、運用モードが“ｅｄｕｃａｔｅ”のとき、処理はステップＳ１１１６に移行する。
ステップＳ１１１５で予約部２１３は、ステップＳ１１１３でグリッド予定外ＰＣとしてＰＣＩＤを記憶した当該ＰＣのブートＯＳに教育用ＯＳを設定する。そして処理はステップＳ１１１６に移行する。ステップＳ１１１５の処理は、リンク先が研究利用向けテンプレートＤｉ１ではなく教育用利用向けテンプレートＤｉ２であるという以外は、ステップＳ１１０４と類似なので、詳しい説明は省略する。
【０７６９】
ステップＳ１１１６で予約部２１３は、ステップＳ１１１３でグリッド予定外ＰＣとしてＰＣＩＤを記憶した当該ＰＣについて、ＰＣ管理情報Ｄｃ３とＰＣ予測情報Ｄｃ２における予約を“なし”（つまりＮＵＬＬ）に設定する。
【０７７０】
次のステップＳ１１１７で予約部２１３は、グリッド予定外ＰＣリストに含まれるすべてのＰＣＩＤについてステップＳ１１１３〜Ｓ１１１６の処理を行ったか否かを判断する。すべてのＰＣＩＤについて処理済であれば、図９の予約設定処理は終了する。他方、未処理のＰＣＩＤがグリッド予定外ＰＣリストに残っていれば、処理はステップＳ１１１８に移行する。
【０７７１】
ステップＳ１１１８で予約部２１３は、グリッド予定外ＰＣリストの次のＰＣＩＤを取り出して、グリッド予定外ＰＣの新たな値として記憶する。そして処理はステップＳ１１１４に戻る。
【０７７２】
さて、図１０は、図４のステップＳ１２０で実行されるＰＣ起動処理のフローチャートである。ＰＣ起動処理では、再配置後ジョブ・ＰＣ管理情報Ｄｅ６の各エントリについてステップＳ１２０２〜Ｓ１２０９が実行され、その中で、当該エントリのＰＣリスト中の各々のＰＣについてステップＳ１２０３〜Ｓ１２０５が実行される。
【０７７３】
具体的には、まずステップＳ１２０１でＰＣ管理部２０６が再配置後ジョブ・ＰＣ管理情報Ｄｅ６から１件目のエントリを読み出す。すなわち、ＰＣ管理部２０６は、１件目の実行可能ジョブの情報を読み出す。
【０７７４】
次に、ステップＳ１２０２でＰＣ管理部２０６は、ステップＳ１２０１（または後述のステップＳ１２１１）で読み出した情報から、当該ジョブが使用する１台目のＰＣの情報を読み出す。
【０７７５】
図３Ｂの情報Ｄｅのように、再配置後ジョブ・ＰＣ管理情報Ｄｅ６の各エントリでは、ジョブＩＤにＰＣリストが対応づけられている。よって、ステップＳ１２０２においてＰＣ管理部２０６は、具体的にはステップＳ１２０１（または後述のステップＳ１２１１）で読み出したエントリのＰＣリストから１台目のＰＣのＰＣＩＤを読み出す。以下では説明の便宜上、ＰＣＩＤを読み出したＰＣのことを「当該ＰＣ」という。
【０７７６】
続いて、ステップＳ１２０３でＰＣ管理部２０６は、当該ＰＣのブートＯＳに、グリッド用ＯＳ（本実施形態ではＵＮＩＸ）を設定する。ステップＳ１２０３の詳細は、処理の主体が予約部２１３からＰＣ管理部２０６に変わる以外は図１１のステップＳ１１０４と同様なので、説明を省略する。
【０７７７】
そして、ＰＣ管理部２０６は、ステップＳ１２０４で当該ＰＣの電源を投入し、当該ＰＣのＯＳ起動後、当該ＰＣ上でスケジューラサービスを起動する。なおここで、「スケジューラサービス」とは、ＰＣをシステム１０１の計算サーバとして機能させるためのミドルウェアにより実現されるサービスである。すなわち、ＰＣは、上記ミドルウェアを介して、ジョブスケジューラ２０４からジョブを実行するよう依頼を受け、依頼に基づいてジョブを実行し、実行結果を返す。ジョブを実行することは、すなわちコンピューティングリソースを提供することであり、サービスの提供に当たる。
【０７７８】
次のステップＳ１２０５でＰＣ管理部２０６は、当該ＰＣについて、ＰＣ管理情報Ｄｃ３における状態を“グリッド使用中”に設定する。
そして、次のステップＳ１２０６でＰＣ管理部２０６は、ステップＳ１２０１またはＳ１２１１で情報を得た当該ジョブが使用するすべてのＰＣについてステップＳ１２０３〜Ｓ１２０５の処理を行ったか否かを判断する。「当該ジョブが使用するすべてのＰＣ」とは、換言すれば、ステップＳ１２０１またはＳ１２１１で得られたエントリのＰＣリストにＰＣＩＤが含まれるすべてのＰＣである。
【０７７９】
判断の結果、未処理のＰＣが残っていれば処理はステップＳ１２０７に移行する。他方、すべてのＰＣについて処理済であれば処理はステップＳ１２０８に移行する。
ステップＳ１２０７でＰＣ管理部２０６は、ステップＳ１２０１またはＳ１２１１で情報を得た当該ジョブが使用する次のＰＣのＰＣＩＤを得る。つまり、ＰＣ管理部２０６は、ステップＳ１２０１またはＳ１２１１で得られたエントリのＰＣリストの中から、未処理のＰＣＩＤを１つ取り出す。そして処理はステップＳ１２０３に戻る。
【０７８０】
他方、ステップＳ１２０８でＰＣ管理部２０６は、ステップＳ１２０１またはＳ１２１１で得た当該ジョブの情報をジョブ・ＰＣ管理情報Ｄｅ３に追加する。図１１のステップＳ１１０８と同様に、ステップＳ１２０８の処理は、単純に読み込み済のエントリをコピーする処理である。
【０７８１】
そして、次のステップＳ１２０９でＰＣ管理部２０６は、ステップＳ１２０１またはＳ１２１１で情報を得た当該ジョブをリリースする。すなわち、ＰＣ管理部２０６はジョブスケジューラ２０４に対して、「ステップＳ１２０４でスケジューラサービスを起動したＰＣに当該ジョブを割り当て、当該ＰＣに当該ジョブの実行を開始させよ」と通知する。ジョブスケジューラ２０４はＰＣ管理部２０６からの通知にしたがい、ジョブの割り当てと実行開始を制御する。
【０７８２】
その後、次のステップＳ１２１０でＰＣ管理部２０６は、すべてのジョブを処理したか否かを判断する。つまり、ＰＣ管理部２０６は、再配置後ジョブ・ＰＣ管理情報Ｄｅ６のすべてのエントリについてステップＳ１２０２〜Ｓ１２０９の処理を行ったか否かを判断する。
【０７８３】
まだ読み込んでいないエントリが再配置後ジョブ・ＰＣ管理情報Ｄｅ６に残っていれば、処理はステップＳ１２１１に移行する。他方、すべてのエントリについて処理済であれば、ＰＣ管理部２０６は図１０のＰＣ起動処理を終了する。
【０７８４】
そして、ステップＳ１２１１でＰＣ管理部２０６は、再配置後ジョブ・ＰＣ管理情報Ｄｅ６から次の実行可能ジョブの情報を読み込む（つまり、次のエントリを読み込む）。そして、処理はステップＳ１２０２に戻る。
【０７８５】
なお、本発明は上記実施形態に限られるものではなく、様々に変形可能である。以下にいくつかの観点（ｕ１）〜（ｕ１１）から上記実施形態の変形例について説明する。
【０７８６】
（ｕ１）データ形式に関する変形
図３Ａ〜３Ｃに例示した各種情報のデータ形式は、実施形態に応じて適宜変更可能である。例えば、図３Ａ〜３Ｃでは主にテーブル形式を用いて各種情報の例を図示したが、各種情報のデータ形式は、eXtensible Markup Language（ＸＭＬ）形式などのその他の任意の形式でもよい。また、情報をテーブル形式で表す場合にも、図３Ａ〜３Ｃに示した形式以外の形式が採用可能である。
【０７８７】
例えば、図１のように計算サーバとして利用可能なＰＣが４８台ある環境において、ジョブパターンが１２０通りあるとする。この場合、ジョブパターン別ＰＣ情報Ｄｃｘ１は、それぞれが図３Ａの情報Ｄｃの形式で４８個のエントリを有する１２０個のテーブルの集合体により表現されてもよい。あるいは、ジョブパターン別ＰＣ情報Ｄｃｘ１は、図３Ａの情報Ｄｃの形式にさらにジョブパターンＩＤの列を加えた形式で、５７６０（＝４８×１２０）個のエントリを有する、１つのテーブルにより表現されてもよい。
【０７８８】
また、共通の形式の情報同士は、実装上は別々のファイルに記録されていてもよいし、１つのファイルに記録されていてもよい。例えば、ＰＣ予測情報Ｄｃ２とＰＣ管理情報Ｄｃ３は、別々のファイルに格納されていてもよいし、図３Ａの情報Ｄｃにさらに「フラグ」列を追加した１つの共通のテーブルに格納されていてもよい。テーブル以外のデータ構造に関しても同様に、フラグを追加することで、共通の形式の情報同士を１つのファイルに格納することが可能となる。
【０７８９】
ここで、フラグの値は、予約処理用の情報であることを示す値（説明の便宜上、例えば“０”とする）または割り当て処理用の情報であることを示す値（説明の便宜上、例えば“１”とする）である。つまり、ある１つのテーブルが、４８台のＰＣに対応するＰＣ予測情報Ｄｃ２として、フラグの値が“０”の４８個のエントリと、４８台のＰＣに対応するＰＣ管理情報Ｄｃ３として、フラグの値が“１”の４８個のエントリを持っていてもよい。この場合、フラグの値でエントリを絞り込むことで、ＰＣ予測情報Ｄｃ２とＰＣ管理情報Ｄｃ３のうち所望の情報を得ることができる。
【０７９０】
また、運用管理装置１００は、図３Ａの情報Ｄｃを、ＰＣＩＤと教室ＩＤとエリアＩＤとスイッチＩＤを対応づける静的な情報と、ＰＣＩＤと状態とジョブＩＤと予約を対応づける動的な情報に分割して管理してもよい。静的な情報は、ＰＣ予測情報Ｄｃ２、ＰＣ管理情報Ｄｃ３、再配置後ＰＣ予測情報Ｄｃ５、再配置後ＰＣ管理情報Ｄｃ６、ジョブパターン別ＰＣ予測情報Ｄｃｘ２、ジョブパターン別ＰＣ管理情報Ｄｃｘ３で共通である。よって、このように情報を分割することで記憶領域を削減することも可能である。
【０７９１】
なお、テーブルの参照回数を減らしてパフォーマンスを向上させるには、例えばＰＣ予測情報Ｄｃ２とＰＣ管理情報Ｄｃ３のそれぞれに同じ静的な情報を含めて、それぞれを図３Ａの情報Ｄｃのような形式で表しておくとよい。運用管理装置１００は、その他の情報に関しても、静的な部分と動的な部分を分けて管理してもよい。
【０７９２】
また、各ジョブには、ジョブＩＤのほかにさらにユーザ定義のジョブ名が付けられていてもよいし、ジョブ投入コマンドを入力したユーザのユーザ名が対応づけられていてもよい。例えば実行候補ジョブ情報Ｄｆ１などが、これらのジョブ名やユーザ名の項目をさらに有していてもよい。
【０７９３】
そして、ユーザごとに予め優先度が割り当てられていてもよい。その場合、実行候補ジョブ選択部２０９は、図６ＡのステップＳ３１１のソートキーの１つとして、ジョブ投入コマンドを入力したユーザの優先度を用いることもできる。
【０７９４】
（ｕ２）値に関する変形
上記実施形態では、説明の便宜上、“ｒｅｓｅｒｖｅ”や“ｓｔａｒｔ−ＧＲＩＤ”や“電源ＯＦＦ”などの特定の文字列を定数値として用いているが、これらの文字列の代わりに、任意の数値、文字または文字列を使うこともできる。また、各種ＩＤも、任意の数値、文字または文字列でよく、例えばＰＣＩＤとしてＰＣのＭＡＣアドレスが使われてもよい。
【０７９５】
（ｕ３）処理の実行順序・実行タイミングに関する変形
図４〜１０のフローチャートに示した各処理は、矛盾が生じない限りステップの実行順が適宜入れ替えられていてもよく、いくつかのステップが並行して実行されてもよい。実行順の変更に関するいくつかの例は上述したとおりだが、ほかにも、例えば図９の処理において、予約部２１３は、１つずつ順にジョブに注目する代わりに、複数のジョブについて並行して処理してもよい。
【０７９６】
（ｕ４）ネットワークの構成単位に関する変形
ジョブの割り当てに際して運用管理装置１００が考慮するネットワークの構成単位は、階層化されていてもよいし、単層でもよい。階層化の例は、図１〜１０に示した実施形態である。具体的には、ブロードキャストドメイン（つまりＬＡＮセグメント）を上位層の構成単位として識別するための教室ＩＤと、物理的に同じスイッチに接続されている計算サーバの集合を下位層の構成単位として識別するためのスイッチＩＤが利用されている。実施形態によっては、単層のフラットな構成単位として、例えば物理的に同じスイッチに接続されている計算サーバの集合を、運用管理装置１００がジョブの割り当てに際して考慮してもよい。
【０７９７】
また、計算サーバが空間的に固定されて設置されている場合でも、「配線の煩雑さを避けるため」といった理由から、無線ＬＡＮが採用されている環境がある。そして、計算サーバの空間的配置に応じて適宜アクセスポイントが配置されていれば、計算サーバの接続先のアクセスポイントは安定的に１つに固定されると期待される。
【０７９８】
そのような環境においては、運用管理装置１００は、例えば「接続先のアクセスポイントが同じ計算サーバの集合」を１つの構成単位として扱ってもよい。つまり、運用管理装置１００は、上記実施形態のスイッチＩＤの代わりにアクセスポイントのＩＤを使ってもよい。
【０７９９】
（ｕ５）評価基準に関する変形
また、ジョブの割り当てパターンを評価する評価基準は、実施形態に応じて任意に定めることができる。すなわち、式（１４）の評価点Ｅｖａｌ（Ｐ）は、１つ以上のジョブを複数の計算サーバに割り当てるための潜在的な割り当てパターンを評価するための総合評価値の一例に過ぎない。実施形態に応じてジョブパターンの評価には他の任意の式を用いることができる。
【０８００】
また、総合評価値は、１つ以上のジョブそれぞれについての評価値を総合したものだが、式（１４）により総合される個々の評価値は、上記実施形態においては式（１５）の満足度評価である。そして、式（１５）の満足度評価も、１つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該１つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値の一例に過ぎない。
【０８０１】
実施形態に応じて、個々のジョブの評価に式（１５）以外の他の式を用いることもできる。また、同じ式（１５）を利用するにしても、例えば図３ＢのパラメタファイルＤｄの評価点テーブルにおいて、配点の値を変えたり、並列数の範囲の大きさを変えたりすることで、上記実施形態とは異なる評価を行うことも可能である。
【０８０２】
なお、空調機の運転による消費電力について考慮しない実施形態も可能である。つまり、満足度５と４を区別せず、満足度３と２を区別しないように式（１５）の満足度評価の定義を変えてもよい。その場合でも、ネットワークの構成単位が評価に反映されるので、１つのジョブの割り当て先として、同じ構成単位に属するＰＣが優先的に選ばれるという利点には変わりがない。
また、式（１４）や式（１５）の例は、値が大きいほど評価が高いことを示す例だが、値が小さいほど評価が高いように定義された式を利用する実施形態も、当然可能である。
【０８０３】
（ｕ６）空調機の制御に関する変形
さらに、上記実施形態の空調機管理部２０５は、各空調機に対する制御としてオンオフ制御のみを行っているが、空調機管理部２０５は温度制御をさらに行ってもよい。
例えば、図４のステップＳ１２３で空調機管理部２０５が、空調機Ｃａ１に電源を投入することを決定した場合を例に説明する。
このとき、空調機管理部２０５は、空調機Ｃａ１の空調機ＩＤである“Ｃａ１”を検索キーにして空調機管理情報Ｄｂを検索し、対応するエリアＩＤである“Ａａ１”を取得してもよい。続いて、空調機管理部２０５は、取得した“Ａａ１”を検索キーにしてＰＣ管理情報Ｄｃ３を検索し、検索の結果ヒットしたエントリの中で状態が“電源ＯＦＦ”のものの台数または割合を計算してもよい。
【０８０４】
そして、空調機管理部２０５は、“電源ＯＦＦ”状態のＰＣの台数または割合が低いほど設定温度が高くなるように定義された計算式にしたがって設定温度を計算し、空調機Ｃａ１に電源を投入するとともに、計算した設定温度を空調機Ｃａ１に設定してもよい。もちろん、上記の計算式は、台数と割合の双方に基づいて定義されていてもよい。
【０８０５】
（ｕ７）適用対象に関する変形
上記実施形態は、キャンパスグリッド以外の任意のグリッドコンピューティングシステムに適用可能である。例えば、上記実施形態における研究利用モードに相当するモードで常時運用されているグリッドコンピューティングシステムに対しても、上記実施形態は適用可能である。なお、その場合、運用モードの切り換えに伴う処理は不要となる。
【０８０６】
また、図１に例示した各種装置間の接続関係は一例であり、例えば運用管理装置１００と各空調機は、間接的に接続されていてもよい。さらに、上記実施形態で例示したＯＳ以外のＯＳが利用されてもよいことは無論である。
【０８０７】
また、図１の各ＰＣは、図３Ｃの研究利用向けテンプレートＤｉ１と教育用利用向けテンプレートＤｉ２から理解されるとおり、マルチブート端末である。しかし、計算サーバとして利用されるＰＣ等のコンピュータは、シングルブート端末であってもよいことは無論である。その場合、ブートＯＳの切り替えに関する情報や処理は省略することができる。
【０８０８】
（ｕ８）実行中のジョブの取り扱いに関する変形
研究利用モードでの運用中に、ある１つのジョブの実行が終了したことを契機として、運用管理装置１００が実行待ちの次のジョブの割り当てを行う場合、実行中の他のジョブの取り扱いは、実施形態によって様々であってよい。例えば、実行中の他のジョブは、そのまま現在の割り当て先のＰＣにより実行が続行されてもよいし、改めて運用管理装置１００によりＰＣへの割り当てが行われてもよい。
【０８０９】
図４〜１０に示した実施形態では、実行中のジョブ（または実行中と予測されるジョブ）は、再配置の対象とはならず、そのまま現在の割り当て先のＰＣにより実行が続行される。なぜなら、第１に、図６Ａ〜６Ｂから明らかなように、実行候補ジョブ情報Ｄｆ１は実行待ちのジョブのエントリのみを含み、ジョブパターン群Ｄｇ１は実行候補ジョブ情報Ｄｆ１から作成されるからである。そして第２に、図８Ｅとともに説明したように、再配置元の候補は、実行中のジョブ（または実行中と予測されるジョブ）に対応する“グリッド利用中”状態のエントリではなく、実行待ちのジョブに対応する“割り当て済”状態のエントリから得られるからである。そのため、実行中のジョブ（または実行中と予測されるジョブ）は、図４のステップＳ１１７で再配置の対象とならない。
【０８１０】
実施形態によっては、フロー制御部２０７は、ある１つのジョブの実行終了をジョブスケジューラ２０４から通知されたら、ジョブスケジューラ２０４に対して「他の実行中のすべてのジョブを中断（サスペンド）せよ」と命令してもよい。すると、ジョブスケジューラ２０４は、命令にしたがい実行中のジョブを中断させ、実行中の各ジョブについて直近のチェックポイントまでの実行結果を適宜退避する。
【０８１１】
以上のような変形例において、フロー制御部２０７は、図４のステップＳ１０７を省略し、ステップＳ１０８では空きＰＣ数の代わりに研究用ＰＣ台数を引数として実行候補ジョブ選択部２０９に与えてもよい。
【０８１２】
そして、実行候補ジョブ選択部２０９は、ステップＳ１０８に相当する図６Ａ〜６Ｃの処理において、「実行待ちのジョブ」の代わりに、「サスペンド状態か実行待ちのジョブ」を対象として各ステップを実行してもよい。なお、この場合、ステップＳ３１１のソート結果では、先にサスペンド状態のジョブが並び、その後に実行待ちのジョブが並ぶことになる。
以上の変形例によれば、ある１つのジョブの実行が終了したことを契機として、その時点で実行中だったジョブも含めて、改めてジョブパターンの作成と評価が行われる。
【０８１３】
（ｕ９）処理を追加または省略する変形
運用管理装置１００の各部は、不正な引数が与えられていないか否かをチェックするステップなどをさらに行ってもよい。
【０８１４】
また、運用管理装置１００は、例えばＰＣ予測情報Ｄｃ２やＰＣ管理情報Ｄｃ３やその要約など、システム１０１の状況を示す情報（以下「状況情報」という）を出力するための不図示の出力部をさらに有していてもよい。出力部は、例えば図４のステップＳ１１９またはＳ１２３の直後に、状況情報を出力する処理を行うことができる。
【０８１５】
出力部は、ディスプレイなどの表示装置を用いて実現することもできる。あるいは、運用管理装置１００を実現するコンピュータのＣＰＵが、ネットワークＩ／Ｆ２０２を介して状況情報を端末機１０５などの他のコンピュータに送信するためのプログラムを実行することにより、出力部が実現されてもよい。
【０８１６】
出力部が状況情報を出力すると（つまり状況情報をディスプレイに表示したり他のコンピュータに送信したりすると）、例えば「研究利用モードでの運用中に、教育目的で利用可能なＰＣが何台残っていそうか」といったことが学生等にも明らかになる。よって、出力部は利便性の向上に寄与する。
【０８１７】
また、研究利用モードでの運用中に、研究利用に予約または使用されていないＰＣを教育目的の利用に開放し、教育目的の利用の予約を受け付けるよう、運用管理装置１００が変形されてもよい。そのために、管理情報が適宜追加されてもよく、運用管理装置１００が不図示の受付部をさらに備えていてもよい。
【０８１８】
受付部は、キーボードなどの入力装置を用いて実現することもできる。あるいは、運用管理装置１００を実現するコンピュータのＣＰＵが、ネットワークＩ／Ｆ２０２を介して端末機１０５などの他のコンピュータから予約を受け付けるプログラムを実行することにより、受付部が実現されてもよい。
【０８１９】
例えば、ＰＣ情報Ｄｃ１に情報を適宜追加することで、受付部が教育目的の利用の予約を受け付けたか否かの管理が可能となる。一例として、受付部は、あるＰＣについて教育目的の利用の予約を受け付けた場合、当該ＰＣに対応するエントリにおいて、通常のジョブＩＤとしては使われない特殊な値をダミーのジョブＩＤとして設定し、予約を“あり”に設定してもよい。例えばこのようなダミーのジョブＩＤと予約フィールドを使うことで（あるいは、教育目的の利用の予約を受け付けたか否かを示すフラグのフィールドをＰＣ情報Ｄｃ１に含めることで）、教育目的の利用の予約を受け付けたか否かの管理が可能となる。
【０８２０】
なお、事前に教育目的の利用の予約を運用管理装置１００の受付部が受け付けた場合は、図４のステップＳ１０５においてＰＣ管理部２０６は、教育目的に予約されたＰＣをシャットダウンの対象から除外して全ＰＣ停止処理を行ってもよい。
【０８２１】
また、図４〜１０には、実際の割り当て処理と予約処理の両方を運用管理装置１００が行う実施形態を示したが、予約処理を省略した実施形態も可能である。予約処理を行わなくても、「実際にジョブが計算サーバに割り当てられる際には、上記実施形態と同様に、評価値の優れた割り当て方が選択され、再配置により消費電力の低減が図られる」という利点には何の変わりもない。
【０８２２】
予約処理を省略した実施形態では、処理モードが常に“ａｓｓｉｇｎ”なので、処理モードを引数とする必要もないし、処理モードに関する分岐も不要である。また、例えばＰＣ情報Ｄｃ１のうち予約処理用のＰＣ予測情報Ｄｃ２は不要となり、ＰＣ管理情報Ｄｃ３のみあればよい。他の情報についても同様である。
【０８２３】
ただし、予約処理を行うことには、もちろん利点もある。特に、上述した変形例のように運用管理装置１００が出力部を有する場合には、予約処理によって予測された将来のシステム１０１の状況をユーザに知らせることができるので、予約処理は有益である。
【０８２４】
つまり、ジョブの実行を依頼したいユーザは、予約処理の結果を見て、システム１０１の状況に応じて自分のジョブの実行依頼を行うタイミングを決めることもできる。また、予約処理を行うことで、学生等のユーザに対しては、何台くらいのＰＣが研究利用モードでの運用期間中に教育用途に開放されそうかという情報を提供することが可能となる。したがって、学生等のユーザは、利用可能なＰＣの台数の目安を参考にして、予定を立てることもできる。
【０８２５】
また、図８Ａ〜８Ｈの再配置処理を省略する実施形態も可能である。再配置処理が省略されても、式（１４）と（１５）によれば、１つのジョブがネットワークの構成単位をまたがない割り当て方の方が、１つのジョブがネットワークの構成単位をまたぐ割り当て方よりも高く評価される。よって、再配置処理が省略されても、通信環境の均一性という観点から見て並列コンピューティングに適した組み合わせの計算サーバが、優先的に同じジョブに割り当てられる。
【０８２６】
また、たとえ再配置処理が省略されても、式（１４）と（１５）によれば、１つのジョブがエリアをまたがない割り当て方の方が、１つのジョブがエリアをまたぐ割り当て方よりも高く評価される。よって、空調機の無駄な運転の抑制による消費電力削減という効果も、ある程度は期待することができる。
【０８２７】
もちろん、再配置処理を行うことにより、空調機の無駄な運転をさらに削減し、ひいては消費電力をより削減することが可能となる場合があるので、再配置処理を行う実施形態は、より好ましい実施形態である。
【０８２８】
（ｕ１０）キューとＰＣの対応づけに関する変形
図１〜１０とともに説明した実施形態では、図３Ｃのキュー・ＰＣ定義情報Ｄｈが使われる。しかし、実施形態によっては、キューごとに対応するＰＣが決まっていなくてもよい。
【０８２９】
つまり、「すべてのＰＣがすべてのキューに対応可能である」と定義されていてもよい。この場合は、キュー・ＰＣ定義情報ＤｈにおいてどのキューＩＤに対してもシステム１０１内のすべてのＰＣ（図１の例では４８台）が対応づけられている場合と等価である。よって、図３Ｃに関して説明したとおり、各キューに対応するＰＣの集合同士に重なりがあることによって、実行待ちのジョブの並列数の偏りに応じた、臨機応変かつ効率的な割り当てが可能となる。
【０８３０】
また、すべてのＰＣがすべてのキューに対応可能ならば、キュー・ＰＣ定義情報Ｄｈを省略することができる。この場合、図７ＡのステップＳ４０６は、評価部２１１が、ＰＣ管理情報Ｄｃ３で管理されているすべてのＰＣＩＤのリストを得て、キュー割り当てＰＣ情報として記憶するステップに置き換えられる。また、図８ＧのステップＳ９０５、Ｓ９１０〜Ｓ９１５は省略される。そして、再配置部２１２は、ステップＳ９０９の直後にステップＳ９１６を実行する。
【０８３１】
（ｕ１１）組み合わせ最適化問題という観点からの変形
ところで、上記実施形態では、図４のステップＳ１１０でジョブパターン作成部２１０が網羅的にジョブパターンを作成している。よって、上記実施形態は、ステップＳ１０８で得られた実行候補ジョブ情報Ｄｆ１に含まれるジョブの件数が、組み合わせ爆発を起こさない程度に少ないとき（例えば、特に６以下の場合など）に好適である。
【０８３２】
しかし、実行候補ジョブ情報Ｄｆ１に含まれるジョブの件数がある程度大きい場合（例えば、特に１２以上の場合など）は、網羅的にジョブパターンを作成すると組み合わせ爆発が起こる。よって、運用管理装置１００は実用的な時間内に適切な割り当て方を決めることができないおそれがある。
【０８３３】
つまり、運用管理装置１００が管理する計算サーバの台数（換言すればＰＣ情報Ｄｃ１のエントリ数）や、ジョブの並列数の傾向などによっては、組み合わせ爆発のおそれがあるために、所与の環境に上記実施形態を適用するのが困難かもしれない。
【０８３４】
しかしながら、上記実施形態における図４のステップＳ１１０〜Ｓ１１７は、組み合わせ最適化の一例という側面がある。そのため、ステップＳ１１０〜Ｓ１１７を他の任意の組み合わせ最適化アルゴリズムによる処理に置き換えることができることは明らかである。よって、実行候補ジョブ情報Ｄｆ１に含まれるジョブの件数がある程度大きいとしても、上記実施形態を適宜変更すれば、運用管理装置１００は、実用上満足なレベルの割り当て方を見出すことができる。
【０８３５】
例えば、ジョブパターン作成部２１０は、ステップＳ１１０において、実行候補ジョブ情報Ｄｆ１に含まれるジョブの件数を所定の閾値と比較してもよい。そして、ジョブパターン作成部２１０は、ジョブの件数が閾値以下であれば上記実施形態と同様に網羅的にジョブパターンを作成してもよい。
【０８３６】
他方、ジョブの件数が閾値を超えていれば、ジョブパターン作成部２１０は、網羅的ではない方法で複数のジョブパターンを作成してもよい。例えば、ジョブパターン作成部２１０は、乱数を使って所定の個数のジョブパターンを作成することもできる。また、例えば、上記所定の閾値が１０ならば、上記所定の個数としては１０！以上１１！未満の値を採用することが好ましい。もちろん、上記所定の閾値と所定の個数として適切な値は、この例に限らず、実施形態に応じて適宜定めることができる。
【０８３７】
以上のような変形により、複数の潜在的に可能なジョブの割り当てパターンの中から相対的に評価の高いものを運用管理装置１００が選択することに関して、「実行候補ジョブ情報Ｄｆ１のエントリ数によらず、実用的な時間内に計算が可能」と保証される。
【０８３８】
もちろん、運用管理装置１００は、局所探索法、遺伝的アルゴリズム、貪欲法などの他の任意の最適化アルゴリズムを利用してジョブの割り当て方を決めることもできる。
採用するアルゴリズムによっては、「先にジョブパターン作成部２１０がジョブパターンを作ってから評価部２１１がジョブパターンを評価する」という手順とは異なる手順でジョブの割り当て方が決められてもよい。例えば、貪欲法にしたがって、評価部２１１が、まだ割り当てを決めていないジョブの各々に注目し、注目している当該ジョブについて次の（ｖ１）〜（ｖ３）の処理を行ってもよい。
【０８３９】
（ｖ１）「まだどのジョブに割り当てられいないＰＣの中から当該ジョブの割り当て先を選択するとして、可能な限り高い満足度が得られるのは、当該ジョブをどのＰＣに割り当てたときなのか」を調べる。
【０８４０】
（ｖ２）上記（ｖ１）の結果判明した、当該ジョブについての可能な限り高い満足度から、当該ジョブの満足度評価を計算する。
（ｖ３）上記（ｖ１）で得られた満足度と、当該満足度が得られるときの当該ジョブの割り当て先のＰＣと、（ｖ２）で計算した満足度評価を記憶する。
【０８４１】
そして、評価部２１１は、（ｖ３）で記憶した満足度評価が最も高いジョブを選び、選んだジョブについては（ｖ１）で得られた当該満足度が得られるときの割り当て先のＰＣに割り当てる。そして、評価部２１１は、まだ割り当てを決めていないジョブがなくなるまで、以上の処理を繰り返す。
【０８４２】
以上のような貪欲法によれば、ジョブの割り当て方として最終的に得られるパターンが局所解に陥っている可能性もある。しかしながら、以上のような貪欲法は、組み合わせ爆発を回避して実用的な時間内に、複数の潜在的に可能なジョブの割り当てパターンの中から相対的に評価の高いものを運用管理装置１００が選択することを可能とするので、実用上有効である。
【０８４３】
すなわち、運用管理装置１００は、適宜の組み合わせ最適化アルゴリズムにしたがって動作することにより、真の最適解は得られないかもしれないが実用上は十分に意味のある比較的評価の高い解（すなわち比較的優れた割り当て方）を得ることができる。
【０８４４】
なお、組み合わせ最適化アルゴリズムとして採用するアルゴリズムによっては、割り当てパターン全体を総合的に評価する総合評価値自体は算出せずに、個々のジョブの評価値のみを用いて、総合評価値が比較的高い割り当てパターンを選ぶことも可能である。
【０８４５】
例えば、貪欲法では上記（ｖ１）〜（ｖ３）のように、評価値（具体的には満足度評価）のみが使われ、総合評価値（例えば式（１４）のＥｖａｌ（Ｐ））自体は算出されない。しかし、貪欲法によれば、（局所解である可能性はあるものの）複数の割り当てパターンの中で相対的に総合評価値が大きい（つまり総合評価が高い）ものが選ばれる。
【０８４６】
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
（付記１）
コンピュータに、
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を取得するネットワーク管理情報取得ステップと、
１つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得する並列数取得ステップと、
１つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該１つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記１つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記１つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する決定ステップ
を実行させるプログラム。
（付記２）
前記プログラムは、前記複数の計算サーバがそれぞれ設置された場所と複数の空調設備がそれぞれ設置された場所に応じて前記複数の計算サーバを前記複数の空調設備のいずれかと対応づける空調設備対応づけ情報を取得する空調設備対応づけ情報取得ステップをさらに前記コンピュータに実行させ、
前記評価値は、１つのジョブを異なる空調設備に対応づけられた計算サーバに割り当てるよりも、当該１つのジョブを同じ空調設備に対応づけられた計算サーバに割り当てることを高く評価するものであり、
前記決定ステップでは、前記割り当てパターンの決定にあたり、さらに前記空調設備対応づけ情報も用いられる、
ことを特徴とする付記１に記載のプログラム。
（付記３）
前記複数の計算サーバのうち、前記決定ステップで決定した前記割り当てパターンにおいて前記１つ以上のジョブのいずれかが割り当てられた計算サーバであるジョブ実行計算サーバに対し、第１の設定を表す設定ファイルを送付する第１の送付ステップと、
前記複数の計算サーバのうち、前記ジョブ実行計算サーバ以外の計算サーバであるジョブ非実行計算サーバに対し、前記第１の設定とは異なる第２の設定を表す設定ファイルを送付する第２の送付ステップと、
をさらに前記コンピュータに実行させることを特徴とする付記１または２に記載のプログラム。
（付記４）
前記第１の設定は、ジョブの実行を可能とする設定であり、
前記第２の設定は、計算サーバの起動を禁止する設定またはジョブの実行を不能にする設定である
ことを特徴とする付記３に記載のプログラム。
（付記５）
現在実行待ちのジョブのうちで、指定された将来の時刻になっても実行待ちのジョブを、現在実行中のジョブと前記現在実行待ちのジョブそれぞれの実行予測時間と並列数を用いて予測する予測ステップと、
前記将来の時刻において実行待ちであると予測された前記現在実行待ちのジョブの中から、前記並列数取得ステップにおいて前記並列数を取得する対象である前記１つ以上のジョブを選択する選択ステップ
をさらに前記コンピュータに実行させ、
前記第２の設定は、ジョブの実行を不能にする設定である
ことを特徴とする付記３に記載のプログラム。
（付記６）
前記複数の空調設備のそれぞれについて、前記空調設備対応づけ情報において当該空調設備に対応づけられている計算サーバのうち、前記決定ステップで決定した前記割り当てパターンにおいていずれかのジョブが割り当てられている計算サーバの数に応じて、当該空調設備を制御する空調制御ステップを
さらに前記コンピュータに実行させることを特徴とする付記２に記載のプログラム。
（付記７）
前記ネットワークは、１つのスイッチに接続される１つ以上の計算サーバを１つの構成単位とする
ことを特徴とする付記１から６のいずれか１項に記載のプログラム。
（付記８）
前記決定ステップは、
前記１つ以上のジョブの順列を表すジョブパターンを複数作成するジョブパターン作成ステップ、
前記ジョブパターン作成ステップで作成した前記ジョブパターンの各々についての、
当該ジョブパターン内での並び順にしたがって前記１つ以上のジョブについて順次、前記複数の計算サーバの中で所定の基準による順序が先になる計算サーバを優先して、当該ジョブの前記並列数分の計算サーバに当該ジョブを対応づけることで、当該ジョブパターンにしたがった割り当てパターンを求める対応づけステップおよび
前記対応づけステップで求めた前記割り当てパターンについての前記総合評価値を、前記ネットワーク管理情報を用いて算出する評価ステップ、ならびに
複数の前記ジョブパターンに対応する複数の前記割り当てパターンのうち、前記評価ステップで算出した前記総合評価値が相対的に高い割り当てパターンを選択する選択ステップ
を含むことを特徴とする付記１から７のいずれか１項に記載のプログラム。
（付記９）
前記所定の基準は、同じ構成単位に属する計算サーバ同士が隣り合うように前記順序を定める基準であることを特徴とする付記８に記載のプログラム。
（付記１０）
前記決定ステップがさらに、
前記選択ステップで選択した前記割り当てパターンにおける前記１つ以上のジョブの割り当て先を、前記総合評価値を悪化させないという制約条件下で変更することを試みる再配置ステップ
を含むことを特徴とする付記８または９に記載のプログラム。
（付記１１）
前記コンピュータに、前記並列数取得ステップと前記決定ステップを繰り返し実行させることを特徴とする付記１から１０のいずれか１項に記載のプログラム。
（付記１２）
コンピュータが、
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を取得し、
１つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得し、
１つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該１つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記１つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記１つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する
ことを特徴とする方法。
（付記１３）
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を記憶する記憶手段と、
１つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得する並列数取得手段と、
１つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該１つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記１つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記１つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する決定手段と
を備えることを特徴とする情報処理装置。
【符号の説明】
【０８４７】
Ｒａ〜Ｒｃ  教室
Ａａ１〜Ａｃ２  エリア
Ｓａ１〜Ｓｃ３  スイッチ
Ｃａ１〜Ｃｃ２  空調機
Ｐａ０１〜Ｐｃ２４  ＰＣ
１００  運用管理装置
１０１  システム
１０２  スイッチ
１０３  ルータ
１０４  ネットワーク
１０５  端末機
２００  割り当て・予約処理部
２０１  記憶部
２０２  ネットワークＩ／Ｆ
２０３  空調機Ｉ／Ｆ
２０４  ジョブスケジューラ
２０５  空調機管理部
２０６  ＰＣ管理部
２０７  フロー制御部
２０８  実行中ジョブ予測・確認部
２０９  実行候補ジョブ選択部
２１０  ジョブパターン作成部
２１１  評価・選択部
２１２  再配置部
２１３  予約部
Ｄａ  ジョブ実行予測時間情報
Ｄｂ  空調機管理情報
Ｄｃ  情報
Ｄｃ１  ＰＣ情報
Ｄｃ２  ＰＣ予測情報
Ｄｃ３  ＰＣ管理情報
Ｄｄ  パラメタファイル
Ｄｅ  情報
Ｄｅ１  ジョブ・ＰＣ情報
Ｄｅ２  ジョブ・ＰＣ予測情報
Ｄｅ３  ジョブ・ＰＣ管理情報
Ｄｆ１  実行候補ジョブ情報
Ｄｆ２  実行予測ジョブ情報
Ｄｆ３  実行可能ジョブ情報
Ｄｇ１  ジョブパターン群
Ｄｇ２  予測ジョブパターン群
Ｄｇ３  実行ジョブパターン群
Ｄｈ  キュー・ＰＣ定義情報
Ｄｅｘ１  ジョブパターン別ジョブ・ＰＣ情報
Ｄｅｘ２  ジョブパターン別ジョブ・ＰＣ予測情報
Ｄｅｘ３  ジョブパターン別ジョブ・ＰＣ管理情報
Ｄｃｘ１  ジョブパターン別ＰＣ情報
Ｄｃｘ２  ジョブパターン別ＰＣ予測情報
Ｄｃｘ３  ジョブパターン別ＰＣ管理情報
Ｄｃ４  再配置後ＰＣ情報
Ｄｃ５  再配置後ＰＣ予測情報
Ｄｃ６  再配置後ＰＣ管理情報
Ｄｅ４  再配置後ジョブ・ＰＣ情報
Ｄｅ５  再配置後ジョブ・ＰＣ予測情報
Ｄｅ６  再配置後ジョブ・ＰＣ管理情報
Ｄｉ  ブート設定情報
Ｄｉ１  研究利用向けテンプレート
Ｄｉ２  教育用利用向けテンプレート
Ｄｉ３  ブートシステムなし用テンプレート
Ｄｉ４  ＤＨＣＰ設定ファイル
Ｄｉ５  リンク設定
【図１】
0005392129.tif 000003
【図３Ａ】
0005392129.tif 000004
【図３Ｂ】
0005392129.tif 000005
【図３Ｃ】
0005392129.tif 000006
【図４】
0005392129.tif 000007
【図５Ａ】
0005392129.tif 000008
【図５Ｂ】
0005392129.tif 000009
【図６Ａ】
0005392129.tif 000010
【図６Ｂ】
0005392129.tif 000011
【図６Ｃ】
0005392129.tif 000012
【図７Ａ】
0005392129.tif 000013
【図７Ｂ】
0005392129.tif 000014
【図７Ｃ】
0005392129.tif 000015
【図８Ａ】
0005392129.tif 000016
【図８Ｂ】
0005392129.tif 000017
【図８Ｃ】
0005392129.tif 000018
【図８Ｄ】
0005392129.tif 000019
【図８Ｅ】
0005392129.tif 000020
【図８Ｆ】
0005392129.tif 000021
【図８Ｇ】
0005392129.tif 000022
【図８Ｈ】
0005392129.tif 000023
【図９】
0005392129.tif 000024
【図１０】
0005392129.tif 000025
【図２】
0005392129.tif 000026