以下、実施形態について、図面を参照しながら次の順序で詳細に説明する。すなわち、まず本明細書で使ういくつかの用語について説明し、続いて、図1を参照して、実施形態が適用される環境の具体例を説明する。その後、図1の環境への適用を具体例として挙げながら、実施形態の詳細について図2〜10を参照しつつ説明し、最後に他の実施形態についても説明する。
さて、まずここで、本明細書で使う「計算サーバ」、「グリッド」および「割り当て」という用語について説明する。
広義の並列コンピューティングにおいて、並列に処理を実行する複数の主体の各々は、1つのプロセッサ内の個々のコア、個々のプロセッサ、1つ以上のプロセッサを備える個々のコンピュータなどである。これらの主体は「ノード」とも呼ばれるが、以下、本明細書では「計算サーバ」と呼ぶことにする。
なお、「計算サーバ」は「サーバ」という語を含むが、業務用の高性能コンピュータを含意するわけではない。「計算サーバ」は任意のコンピュータでよく、例えばPCでもよい。
「計算サーバ」という名称における「サーバ」という語は、ジョブの実行を要求するクライアントに対して、サービスを提供することを意味する。換言すれば、「計算サーバ」は、クライアントに対して計算資源(コンピューティングリソース)を提供し、クライアントから要求された処理を行う。
なお、以下では主に1つのPCが1つの計算サーバの単位として使われる場合を例にして説明するが、実施形態によっては、コンピュータ内の個々のプロセッサまたは個々のコアを1つの計算サーバとして扱って管理してもよい。
また、グリッドコンピューティングは、インターネットなどの広域ネットワーク上のコンピュータを使って行われることも多い。しかし、本明細書における「グリッド」という語は、必ずしも「広域」を含意するわけではなく、計算サーバが配置されているネットワークの広さは任意である。
例えば、後述の図1に例示する環境では、グリッドコンピューティングシステムの計算サーバとして使われる複数のPCは、すべて同じ1つのイントラネットに含まれる。つまり、図1のグリッドコンピューティングシステムは、1つのイントラネットに閉じた分散コンピューティングシステムである。
また、1つまたは複数のジョブと複数の計算サーバがあるとき、ジョブと計算サーバの対応づけに関して、本明細書では、「ジョブを計算サーバに割り当てる」のように表現することもあるし、「計算サーバをジョブに割り当てる」のように表現することもある。すなわち、ジョブと計算サーバを対応づけることは、ある1つのジョブに注目すれば「当該ジョブを1つ以上の計算サーバに割り当てる」と表現可能であり、ある1つの計算サーバに注目すれば「当該計算サーバをあるジョブに割り当てる」とも表現可能である。
特に混乱のおそれはないので、以下、本明細書では「ジョブを計算サーバに割り当てる」のような言い方と「計算サーバをジョブに割り当てる」のような言い方を混在させて説明する。また、より簡便に「ジョブの割り当て先の計算サーバ」のような表現を用いることもある。
また、以下では、ジョブの割り当てに関して表現の煩雑さを避けるために、文脈から明らかな場合は、実際の割り当てと、割り当ての予約と、試行錯誤中の暫定的な割り当てについて、単に「割り当てる」とだけ表現することがある。
続いて、図1を参照して、本実施形態が適用される環境の例について説明する。本実施形態による運用管理装置100は、グリッドコンピューティングシステム(以下単に「システム」という)101の運用を管理する装置であり、汎用的なコンピュータ(つまり情報処理装置)により実現することができる。
詳しくは後述するが、システム101は大学等の教育研究機関で運用される。システム101は、具体的には、図1に示すように、教室Ra、RbおよびRcの3つの部屋にまたがって分散配置された48台のPCを計算サーバとして含む。運用管理装置100は、ネットワークを介して管理対象の各PCと接続されている。
具体的には、図1の例では、運用管理装置100はスイッチ102に接続され、スイッチ102はルータ103に接続されている。また、ルータ103には、ネットワーク104を介して端末機105が接続されている。
ネットワーク104は、例えば、Local Area Network(LAN)、Wide Area Network(WAN)、インターネット、計算サーバ用インターコネクトなどの任意のネットワークであってよい。端末機105は、ワークステーションやPCなどの任意のコンピュータである。端末機105には、システム101にジョブを実行させるための要求がユーザから入力される。
また、ルータ103にはさらに、教室Ra内のスイッチSa1と、教室Rb内のスイッチSb1と、教室Rc内のスイッチSc1が接続されている。そして、スイッチSa1は同じ教室Ra内のスイッチSa2に接続されている。また、スイッチSc1は同じ教室Rc内のスイッチSc2に接続されており、スイッチSc2にはさらに、同じ教室Rc内のスイッチSc3も接続されている。
なお、スイッチ102、Sa1、Sa2、Sb1、Sc1、Sc2およびSc3の各々は、本実施形態ではレイヤ2(L2)スイッチである。実施形態によってはレイヤ3(L3)スイッチが使われてもよい。
以下では説明の便宜上、ジョブを実行させるために端末機105に入力される要求が、所定のパラメタを引数として持つ所定のコマンド(以下「ジョブ投入コマンド」という)の形であるとする。ジョブ投入コマンドは、引数とともに、ネットワーク104、ルータ103およびスイッチ102を介して、端末機105から運用管理装置100へと送信される。運用管理装置100は、受け付けたジョブ投入コマンドに基づいて、ジョブの割り当てなどの処理を行う。
また、スイッチSa1には、教室Ra内に設置された8台のPC・Pa01〜Pa08が接続されており、スイッチSa2には、教室Ra内に設置されたもう8台のPC・Pa09〜Pa16が接続されている。また、スイッチSb1には、教室Rb内に設置された8台のPC・Pb01〜Pb08が接続されている。
さらに、スイッチSc1には、教室Rc内に設置された8台のPC・Pc01〜Pc08が接続されている。同様に、スイッチSc2には、教室Rc内に設置された他の8台のPC・Pc09〜Pc16が接続され、スイッチSc3には、教室Rc内に設置された残りの8台のPC・Pc17〜Pc24が接続されている。
したがって、運用管理装置100は、システム101に含まれる48台のPCの各々とネットワークを介して接続されており、これら48台のPCの各々に対するリモート管理を行うことができる。すなわち、これら48台のPCがシステム101内の計算サーバとして利用可能である。
具体的には、図1の48台のPCは、運用管理装置100からネットワークブートが可能なように設定されている。また、計算サーバとして機能することができるように、図1の48台のPCにはグリッドコンピューティング用のミドルウェアがインストールされている。
さらに、図1に示すように、教室Raには空調機Ca1が設置され、教室Rbには空調機Cb1が設置され、教室Rcには空調機Cc1とCc2が設置されている。そして、これら4台の空調機Ca1〜Cc2は、いずれも運用管理装置100と接続されている。よって、運用管理装置100は空調機Ca1〜Cc2に対するリモート管理を行うこともできる。なお、これらの空調機は、少なくとも冷却機能を有する空調設備であれば、どのようなものでもよい。
なお、以下では、空調機Ca1によって温度が調整される範囲を「エリアAa1」と呼び、空調機Cb1によって温度が調整される範囲を「エリアAb1」と呼ぶ。同様に、空調機Cc1によって温度が調整される範囲を「エリアAc1」と呼び、空調機Cc2によって温度が調整される範囲を「エリアAc2」と呼ぶ。以下、特に断らない限り、「エリア」という語は、1つの空調機によって温度が調整される範囲を意味する。
図1の例では、教室Ra内の16台のPC・Pa01〜Pa16のすべてがエリアAa1内に設置され、教室Rb内の8台のPC・Pb01〜Pb08のすべてがエリアAb1内に設置されている。また、教室Rc内では、8台のPC・Pc01〜Pc08がエリアAc1内に設置されており、残りの16台のPC・Pc09〜Pc24がエリアAc2内に設置されている。
なお、本実施形態におけるシステム101は、「キャンパスグリッド」と呼ばれるシステムの一例である。キャンパスグリッドは、大学等の教育研究機関において、教育目的で教室に設置されたPCを、夜間や休日などの課外時間にグリッドコンピューティングの計算サーバとして利用するシステムである。大学等の研究者は、キャンパスグリッドを利用することで、教育用の既存の資産(つまり教育目的のPC)を活用してグリッドコンピューティングにより研究用の計算を行うことができる。
本実施形態のキャンパスグリッドは、「教育利用モード」と「研究利用モード」の2つの運用モードで運用される。教育利用モードは、図1の各PCを教育用の設定で運用するモードであり、教育利用モードではグリッドコンピューティングによるジョブの実行は行われない。
本実施形態は、キャンパスグリッドとして示してあるが、ジョブの割り当て方については、エリアをラックと読み替えることで、PCクラスタシステムを実施例とすることもできる。また、エリアをノードと読み替えることで、大規模スーパコンピュータシステムを実施例とすることもできる。
また、研究利用モードは、グリッドコンピューティングによるジョブの実行を主たる用途としてシステム101を運用するモードである。本実施形態では、研究利用モードでのシステム101の運用中に、ジョブが割り当てられていないPCの一部または全部を教育用に学生等に開放してもよい。それにより、「使われていないPCを利用したい」というユーザの希望に柔軟に対応することができ、リソースを有効に利用することもできる。
本実施形態の運用管理装置100は、具体的には、運用モードの切り換えと、ジョブのPCへの割り当てと、割り当ての予約を行う。そこで、以下では運用管理装置100が行うこれらの処理について、引き続き図1を参照してまず概要を説明し、その後、図2〜10を参照して詳細を説明する。
本実施形態では、例えば「平日の8時から20時は教育利用モードの時間帯で、平日の20時から翌日の8時までと休日の8時から翌日の8時までは研究利用モードの時間帯」のような運用規則が予め決められている。この運用規則は、「平日の8時になったら教育利用モードに切り換え、平日の20時になったら研究利用モードに切り換える」のように言い換えることもできる。
運用管理装置100は、例えば上記のような運用規則にしたがって、次の(a1)〜(a5)の処理を行う。
(a1)教育利用モードでの運用中に、ジョブのPCへの割り当ての予約を定期的に行う処理。
(a2)研究利用モードでの運用中に、ジョブのPCへの割り当ての予約を定期的に行う処理。
(a3)運用規則にしたがって所定の時刻に教育利用モードから研究利用モードに切り換え、ジョブをPCに割り当てる処理。
(a4)研究利用モードでの運用中に、ジョブのPCへの割り当てを不定期に行う処理。
(a5)運用規則にしたがって所定の時刻に研究利用モードから教育利用モードに切り換える処理。
なお、詳しくは後述するように、(a1)や(a2)における予約処理と、(a3)や(a4)における実際の割り当て処理は、どのジョブをどのPCに割り当てるのが好ましいかを判断する点で共通しており、互いに類似する。そこで、「どのジョブをどのPCに割り当てるのが好ましいか」についての運用管理装置100による判断の概略を、まず説明する。
例えば図1のように、一般的に、グリッドコンピューティングシステムに含まれる複数の計算サーバ(本実施形態では48台のPC)は、複数の部屋にまたがって配置されている可能性もある。また、複数の計算サーバのすべてが1つの同じスイッチに接続されているとも限らない。
さらに、例えば部屋が広い場合などには、図1の教室Rcのように1つの部屋の温度が複数の空調機により調整されるかもしれない。したがって、複数の計算サーバは、たとえ1つの部屋に集中しており1つの同じスイッチに接続されているとしても複数のエリアにまたがっている場合もある。
そこで、運用管理装置100は、各PCがネットワークの構成単位のうちのいずれに属するのかという点と、各PCがどのエリアに属するのかと点を考慮して、どのジョブをどのPCに割り当てるのが好ましいのかを判断する。
なお、ネットワークの構成単位としては、例えば、同じスイッチに物理的に接続されている機器の集合が1つの構成単位となりうる。また、同じブロードキャストドメインに属する機器の集合も構成単位となりうる。
そして、構成単位は階層化されていてもよい。つまり、上層の構成単位が下層の1つ以上の構成単位を含んでいてもよい。例えば、1つのブロードキャストドメインに複数のスイッチが含まれる場合、同じスイッチに物理的に接続されている機器の集合が下層の構成単位であり、同じブロードキャストドメイン(つまり同じLANセグメント)に属する機器の集合が上層の構成単位であってもよい。
本実施形態の運用管理装置100は、1つのジョブをなるべく同じスイッチに接続されたPCに割り当てようとする。その理由は、同じスイッチに接続されたPC間での通信環境は均一(換言すれば対称的)だからである。
例えば、第1のPCと第2のPCが同じ第1のスイッチに接続され、ルータを介して第1のスイッチに接続された第2のスイッチに第3のPCが接続されている場合、第1〜第3のPC間での通信環境は均一でなく、非対称的である。具体的には、第1と第2のPC間での通信は、第1と第3のPC間(あるいは第2と第3のPC間)での通信よりも短時間で完了する。
それに対し、第1〜第3のPCがいずれも第1のスイッチに接続されている場合は、どの2つのPC間の通信もほぼ同じ時間で完了する。つまり、第1〜第3のPC間での通信環境は均一であり、対称的である。
グリッドコンピューティングにおいては、1つのジョブを実行する計算サーバ間の通信環境が均一で対称的であることが好ましい。そのため、運用管理装置100は、1つのジョブをなるべく同じスイッチに接続されたPCに割り当てようとする。
また、本実施形態の運用管理装置100は、たとえ1つのジョブを同じスイッチに接続されたPCに割り当てられないとしても、1つのジョブをなるべく同じブロードキャストドメインに属するPCに割り当てようとする。その理由は、複数の計算サーバが複数のブロードキャストドメインにまたがっており互いにルータを介して通信を行う場合と比べれば、複数の計算サーバ間の通信が1つのブロードキャストドメイン内に閉じている場合の方が通信環境が均一だからである。なお、図1の環境では、各教室が1つのブロードキャストドメインに対応する。
さらに、本実施形態において、運用管理装置100は、できれば1つのジョブをなるべく同じエリアに位置するPCに割り当てようとする。その理由は、無駄な空調機の運転を避け、消費電力を節約するためである。
さて、以上のような運用管理装置100の判断方針について、ジョブのPCへの割り当ての具体例を挙げながら説明すると、以下のとおりである。
なお、以下の説明において、教室、エリア、スイッチおよびPCには、図1中の参照符号が識別子(identifier、ID)として割り当てられているものとする。例えば、教室RaのIDは「Ra」である。同様に、システム101が実行する各ジョブにもIDが割り当てられているものとし、例えば「J」というIDのジョブを「ジョブJ」のように参照する。各種IDの形式は実施形態に応じて任意である。
ここで説明の便宜上、各ジョブには「何台のPCを使って当該ジョブを実行するのか」を示す「並列数」が予め指定されているものとし、ジョブJの並列数を「Para(J)」と表記する。また、割り当てに関するある方針PにしたがってジョブJが割り当てられたPCの集合を「Alloc(J,P)」と表記する。方針Pは、具体的には後述のジョブパターンIDで表される。
具体例として、4つのジョブJa〜Jdの割り当てについて取り上げる。例えば、ジョブJa〜Jdの並列数が式(1)〜(4)のとおりであり、ジョブJa〜Jdの割り当て先が、ある方針Pαによれば式(5)〜(8)のようになるとする。
Para(Ja)=8 (1)
Para(Jb)=16 (2)
Para(Jc)=8 (3)
Para(Jd)=4 (4)
Alloc(Ja,Pα)
={Pa01,Pa02,Pa03,Pa04,
Pa05,Pa06,Pa07,Pa08} (5)
Alloc(Jb,Pα)
={Pa09,Pa10,Pa11,Pa12,
Pa13,Pa14,Pa15,Pa16,
Pb01,Pb02,Pb03,Pb04,
Pb05,Pb06,Pb07,Pb08} (6)
Alloc(Jc,Pα)
={Pc01,Pc02,Pc03,Pc04,
Pc05,Pc06,Pc07,Pc08} (7)
Alloc(Jd,Pα)
={Pc09,Pc10,Pc11,Pc12} (8)
式(5)〜(8)に示す上記の割り当ては、次の2つの点で改善の余地がある。
第1に、式(6)に示すとおり、ジョブJbが、複数のLANセグメント(つまり複数のブロードキャストドメイン)にまたがって存在するPCに割り当てられている。そのため、例えばPC・Pa09とPa10の間の通信にかかる時間と、PC・Pa09とPC・Pb01の間の通信にかかる時間が異なる。すなわち、1つのジョブJbが割り当てられた16台のPC間での通信環境が不均一であり、好ましくない。
第2に、空調機の運転に無駄が生じている。その理由は、本実施形態では、「あるエリアに属するPCのうち1台でも稼働していれば、当該エリアの温度を調整する空調機を運転する」という方針が採用されているためである。
一般に、コンピュータが稼働すると熱を生じるが、コンピュータの過熱は故障の原因になるので好ましくない。そこで、本実施形態では、各PCを保護するため、空調機の運転に関して上記の方針が採用されている。
この方針のもとでは、式(5)〜(8)に示す割り当ての場合、図1の4台の空調機すべてを稼働させることになる。しかし、エリアAc2に属する16台のPCのうち12台のPCは何のジョブも割り当てられていないので、もし式(7)の代わりに次の式(9)のようにジョブJcの割り当てを行えば、空調機Cc1を稼働させなくてもよくなる。つまり、方針Pαとは別の方針Pβにしたがって、ジョブJcの割り当てを式(7)から式(9)のように変更することで、消費電力を節約することが可能となる。
Alloc(Jc,Pβ)
={Pc17,Pc18,Pc19,Pc20,
Pc21,Pc22,Pc23,Pc24} (9)
詳しくは後述するが、本実施形態の運用管理装置100は、例えば上記の式(5)〜(8)の割り当てよりも、式(9)〜(12)の割り当ての方を好ましいと判断する。
Alloc(Ja,Pβ)
={Pc01,Pc02,Pc03,Pc04,
Pc05,Pc06,Pc07,Pc08} (10)
Alloc(Jb,Pβ)
={Pa01,Pa02,Pa03,Pa04,
Pa05,Pa06,Pa07,Pa08,
Pa09,Pa10,Pa11,Pa12,
Pa13,Pa14,Pa15,Pa16} (11)
Alloc(Jd,Pβ)
=Alloc(Jd,Pα)
={Pc09,Pc10,Pc11,Pc12} (12)
以上説明したような判断に基づいて、運用管理装置100は、ジョブのPCへの割り当ての予約および実際の割り当てを行う。
なお、1つ以上のジョブそれぞれの割り当て先について、全体的にまとめて「割り当てパターン」または「割り当て方」ということもある。例えば、上記の例は、全体として「ジョブJaに式(10)の集合を割り当て、ジョブJbに式(11)の集合を割り当て、ジョブJcに式(9)の集合を割り当て、ジョブJdに式(12)の集合を割り当てる」という割り当てパターン(割り当て方)を示す。
続いて、図2〜10を参照して、運用管理装置100の構成と動作についてさらに詳しく説明する。具体的には、まず図2を参照して運用管理装置100の構成を説明し、次に図3A〜3Cを参照して各種情報の例を説明する。そして、図4を参照して、運用管理装置が行う上記(a1)〜(a4)の処理の全体的な流れを説明する。その後、上記(a5)の処理について説明し、図4の処理から呼ばれる各種処理について図5A〜10を参照して説明する。
さて、図2は、運用管理装置100の構成を各種情報とともに示す図である。
運用管理装置100は各種情報を記憶する記憶部201を備える。図示の便宜上、図2では、記憶部201を網点パターンで示し、記憶部201に格納される各種情報を網点パターンの背景に重ねて図示してある。
運用管理装置100は、例えば、CPUと、Random Access Memory(RAM)などのメモリと、ハードディスク装置などの外部記憶装置を備えたコンピュータにより実現される。この場合、記憶部201は、上記ハードディスク装置によって実現されてもよいし、RAMとハードディスク装置の組み合わせによって実現されてもよい。各種情報の詳細は後述するが、記憶部201は以下の(b1)〜(b14)の情報を格納する。
(b1)ジョブの実行にかかると予測される時間として端末機105から与えられる「実行予測時間」を記憶するためのジョブ実行予測時間情報Da。
(b2)各空調機に関する空調機管理情報Db。
(b3)各PCに関するPC情報Dc1。なお、以下の説明において「PC情報」という名称は、互いに同じ形式で表されるPC予測情報Dc2とPC管理情報Dc3の総称である。そのため、図2においてPC情報Dc1を示す矩形は、PC予測情報Dc2を示す矩形とPC管理情報Dc3を示す矩形を含む。図2には同様に、いくつかの情報に関して、総称を示す矩形が具体的な情報を示す2つの矩形を含むように図示してある。
(b4)再配置後PC情報Dc4。なお、「再配置後PC情報」という名称は、互いに同じ形式で表される再配置後PC予測情報Dc5と再配置後PC管理情報Dc6の総称である。また、再配置後PC情報Dc4はPC情報Dc1と同じ形式である。
(b5)ジョブパターン別PC情報Dcx1。なお、「ジョブパターン別PC情報」という名称は、互いに同じ形式で表されるジョブパターン別PC予測情報Dcx2とジョブパターン別PC管理情報Dcx3の総称である。また、ジョブパターン別PC情報Dcx1は、PC情報Dc1と同じ形式の情報を複数集積した情報である。
(b6)運用管理装置100の動作を規定する各種パラメタを含むパラメタファイルDd。
(b7)ジョブとPCとの対応づけ(すなわちジョブの割り当て方)に関するジョブ・PC情報De1。なお、「ジョブ・PC情報」という名称は、互いに同じ形式で表されるジョブ・PC予測情報De2とジョブ・PC管理情報De3の総称である。
(b8)再配置後ジョブ・PC情報De4。なお、「再配置後ジョブ・PC情報」という名称は、互いに同じ形式で表される再配置後ジョブ・PC予測情報De5と再配置後ジョブ・PC管理情報De6の総称である。また、再配置後ジョブ・PC情報De4はジョブ・PC情報De1と同じ形式である。
(b9)ジョブパターン別ジョブ・PC情報Dex1。なお、「ジョブパターン別ジョブ・PC情報」という名称は、互いに同じ形式で表されるジョブパターン別ジョブ・PC予測情報Dex2とジョブパターン別ジョブ・PC管理情報Dex3の総称である。また、ジョブパターン別ジョブ・PC情報Dex1は、ジョブ・PC情報De1と同じ形式の情報を複数集積した情報である。
(b10)実行しようとするジョブに関する実行候補ジョブ情報Df1。なお、「実行候補ジョブ情報」という名称は、互いに同じ形式で表される実行予測ジョブ情報Df2と実行可能ジョブ情報Df3の総称である。
(b11)ジョブの並べ方の様々なパターンを示すジョブパターン群Dg1。なお、「ジョブパターン群」という名称は、互いに同じ形式で表される予測ジョブパターン群Dg2と実行ジョブパターン群Dg3の総称である。
(b12)並列数に応じたジョブスケジューラ204の各キューに、どのPCが対応しているかを示すキュー・PC定義情報Dh。
(b13)各PCのブート設定に関するブート設定情報Di。
(b14)上記(a2)の予約処理のためのPC経過情報Dj。具体的には、PC経過情報Djは、運用管理装置100が予約処理を行う時刻から予約の対象となる時刻までの間に、何台のPCがどれくらいの時間、現在は未実行の新たなジョブの割り当て先として利用可能な状態になりそうかを示す。
以上のように記憶部201は、(b1)〜(b14)の各種情報を格納する。また、運用管理装置100は、下記(c1)〜(c7)の各部を備える。
(c1)図1のスイッチ102を介した通信のためのネットワークインタフェース(I/F)202。
(c2)図1の空調機Ca1〜Cc2との通信のための空調機I/F203。
(c3)ネットワークI/F202を介した入力に応じて、随時、処理を行うジョブスケジューラ204。
(c4)空調機I/F203を介した通信を含む処理を行う空調機管理部205。
(c5)ネットワークI/F202を介した通信を含む処理を行うPC管理部206。
(c6)所定の日時または所定の状況の変化に応じて、図4とともに後述する割り当て・予約処理を開始し、他の各部を呼び出して割り当て・予約処理の流れを制御するフロー制御部207。
(c7)フロー制御部207の制御のもとで協働して割り当て・予約処理を行う、実行中ジョブ確認・予測部208、実行候補ジョブ選択部209、ジョブパターン作成部210、評価部211、再配置部212および予約部213。本実施形態においては、好ましいジョブの割り当てパターンを決定する決定手段が、具体的にはフロー制御部207とこれら(c7)の各部により実現される。なお、図2では、記憶部201と(c7)の各部をまとめて「割り当て・予約処理部200」として示してある。また、線の錯綜を避けるため、図2では、割り当て・予約処理部200内の各部をフロー制御部207と直接結ぶ線の代わりに、割り当て・予約処理部200とフロー制御部207とを線で結んで示してある。
上記(c1)のネットワークI/F202は、例えば一般的なLAN・I/Fにより実現され、(c2)の空調機I/F203は、例えば拡張カードにより実現される。また、(c3)〜(c7)の各部は、ハードディスク装置などに格納されたプログラムを、CPUがRAMにロードし、RAMをワークエリアとして使いながら実行することにより、実現される。
上記プログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、運用管理装置100にインストールされてもよく、ネットワークからダウンロードされてもよい。記憶媒体としてはCompact Disc(CD)やDigital Versatile Disk(DVD)などの光ディスク、光磁気ディスク、磁気ディスク、フラッシュメモリなどの不揮発性の半導体メモリなどが利用可能である。なお、実施形態によっては、(c3)〜(c7)の各部の一部が、専用のハードウェア回路により実現されてもよい。
続いて、(c3)〜(c7)の各部について詳しく説明する。
上記(c3)のジョブスケジューラ204は、ネットワークI/F202を介して外部から入力されるジョブ投入コマンドを受け付ける。具体的には、ジョブ投入コマンドは、図1の端末機105から、ネットワーク104とルータ103とスイッチ102を介して随時入力され、ジョブスケジューラ204に受け付けられる。すると、ジョブスケジューラ204は、受け付けたジョブ投入コマンドで指定されているジョブに対し、一意なID(以下「ジョブID」という)を発行して割り当てる。なお、本実施形態では、ジョブ受付後、ジョブはホールド状態として扱われ、リリース操作によってジョブが開始されることを前提としている。
ジョブ投入コマンドの形式は実施形態に応じて任意だが、本実施形態では、ジョブ投入コマンドの引数として、ジョブ自体を指定する情報のほかに、ジョブの並列数と実行予測時間と優先度が指定されるものとする。実行予測時間は、例えばユーザが端末機105を介して任意に指定した時間でもよい。
また、ジョブスケジューラ204は、並列数に応じた複数のFirst In First Out(FIFO)キューを備えており、ジョブ投入コマンドの引数として指定された並列数に基づいて、ジョブを適宜のキューにエンキューする。なお、各キューには識別子として予め一意なキューIDが割り当てられているものとする。
ジョブスケジューラ204はさらに、ジョブ投入コマンドの引数で指定された実行予測時間と、発行したジョブIDとを対応づけ、ジョブ実行予測時間情報Daのエントリとして記憶部201に格納する。
また、図1の各PCは、割り当てられたジョブの実行を完了すると、完了通知をジョブスケジューラ204に送信する。ジョブスケジューラ204は、ネットワークI/F202を介して各PCからの完了通知を受信することにより、ジョブの状態が「実行中」から「完了」へ変化したことを認識することができる。
また、上記(c4)の空調機管理部205は、フロー制御部207からの命令に応じて、空調機I/F203を介して図1の各空調機と通信し、各空調機の状態をチェックしたり、場合に応じて各空調機の電源を投入または切断したりする。そして、空調機管理部205は、チェックした結果や、電源の投入または切断を行った結果を、空調機管理情報Dbに反映させる。
また、上記(c5)のPC管理部206は、フロー制御部207からの命令に応じて、ネットワークI/F202を介して図1の各PCと通信し、各PCの状態をチェックしたり、場合に応じて各PCを起動または停止させたりする。そして、PC管理部206は、チェックした結果や、起動または停止を行った結果を、PC情報Dc1に反映させる。
詳しくは後述するが、PC管理部206は、再配置後PC情報Dc4と再配置後ジョブ・PC情報De4を用いて各PCの起動や停止を制御する。また、PC管理部206が各PCに転送するブートイメージの所在が、ブート設定情報Diで指定される。
また、上記(c6)のフロー制御部207は、図4に示す割り当て・予約処理の流れを制御する。フロー制御部207は、ジョブスケジューラ204からの通知を契機として割り当て・予約処処理を開始する場合もあるし、パラメタファイルDdに規定されたスケジュールにしたがって処理を開始する場合もある。また、フロー制御部207はその他の契機により図4の処理を開始してもよい。
例えば、ジョブスケジューラ204は、あるジョブの完了を認識したり、新たなジョブの投入の要求を受け付けたりしたときに、ジョブの実行状況が変化した旨をフロー制御部207に通知してもよい。すると、フロー制御部207は、この通知を契機として、実行待ちのジョブの割り当ての処理を開始することができる。
また、例えば「平日の20時からは研究利用モード」といったスケジュールがパラメタファイルDdで規定されている。よって、フロー制御部207は、パラメタファイルDdで規定されたパラメタにしたがって、平日の20時になると上記(a3)のようにモードを切り換えてジョブを割り当てる処理を行う。
さらに、フロー制御部207は、パラメタファイルDdに規定される所定のスケジュールにしたがって一定間隔で上記(a1)または(a2)の処理を開始してもよい。もちろん、運用管理装置100がキーボードなどの不図示の入力部をさらに備えていてもよく、フロー制御部207は入力部から入力される指示を契機として不定期に(a1)または(a2)の処理を行うこともできる。
なお、CPUがプログラムを実行することで(c3)〜(c7)の各部が実現される場合、(c6)のフロー制御部207を実現するためのプログラムは、後述の図4の処理のためのプログラムのメインルーチンと、それを呼び出すスケジューラプログラムを含む。そして、メインルーチンから呼び出される各サブルーチンをCPUが実行することにより、上記(c4)、(c5)および(c7)の各部が実現される。また、(c3)のジョブスケジューラ204も、フロー制御部207と連携して動作する。
さて、上記(c7)の実行中ジョブ確認・予測部208は、フロー制御部207からの命令に応じて、図5A〜5Bの実行中ジョブの確認・予測処理を行い、結果をPC情報Dc1とジョブ・PC情報De1に反映する。また、上記(a2)の予約のために実行中ジョブの確認・予測処理を行う場合は、実行中ジョブ確認・予測部208は、PC経過情報Djの作成も行う。なお、実行中ジョブ確認・予測部208への入力は、PC情報Dc1と、パラメタファイルDdに規定されているパラメタと、ジョブスケジューラ204からの出力を含む。
また、上記(c7)の実行候補ジョブ選択部209は、フロー制御部207からの命令に応じて、図6A〜6Cの実行候補ジョブ選択処理を行い、処理結果を実行候補ジョブ情報Df1として記憶部201に格納する。なお、実行候補ジョブ選択部209は、ジョブ実行予測時間情報Daと、パラメタファイルDdに規定されているパラメタと、ジョブスケジューラ204からの出力を利用して処理を行う。また、上記(a2)の予約のために実行候補ジョブ選択処理を行う場合は、実行候補ジョブ選択部209は、PC経過情報Djをさらに利用する。
そして、上記(c7)のジョブパターン作成部210は、フロー制御部207からの命令に応じて、実行候補ジョブ情報Df1からジョブパターン群Dg1を作成する。
また、上記(c7)の評価部211は、フロー制御部207からの命令に応じて、図7A〜7CのPC決定処理を行うことで、ジョブパターン別PC情報Dcx1とジョブパターン別ジョブ・PC情報Dex1を作成する。また、評価部211は図7A〜7CのPC決定処理の返り値として、ジョブパターンに対応する評価点をフロー制御部207に返す。なお、評価部211は、PC情報Dc1と、パラメタファイルDdに規定されているパラメタと、ジョブ・PC情報De1と、ジョブパターン群Dg1と、キュー・PC定義情報Dhを利用して処理を行う。
また、上記(c7)の再配置部212は、フロー制御部207からの命令に応じて、図8A〜8Hの再配置処理を行うことで、再配置後PC情報Dc4と再配置後ジョブ・PC情報De4を作成する。なお、再配置部212は、ジョブパターン別PC情報Dcx1と、ジョブパターン別ジョブ・PC情報Dex1と、キュー・PC定義情報Dhを利用して処理を行う。
上記(c7)の予約部213は、フロー制御部207からの命令に応じて、図9の予約設定処理を行い、ブート設定情報Di、PC情報Dc1およびジョブ・PC情報De1を適宜更新する。なお、予約部213は、再配置後ジョブ・PC情報De4を利用して処理を行う。
以上説明した運用管理装置100内の各部の動作のさらなる詳細は、図4〜10とともに後述する。
さて、図3A〜3Cは、本実施形態で用いる各種情報の例を示す図である。図2に関する説明で(b1)〜(b14)として列挙したように、いくつかの情報は形式が共通である。そこで、以下では共通の形式を持つ各種情報については、1つの図によりまとめて説明する。
上記(b1)に挙げた図3Aのジョブ実行予測時間情報Daは、実行中または実行待ちの各ジョブに対応するエントリを有する。各エントリは、対応するジョブのジョブIDと当該ジョブの実行予測時間とを対応づける、〈ジョブID,実行予測時間〉というタプル(tuple)である。
例えば、図3Aに例示したジョブ実行予測時間情報Daは、5つのエントリを含み、ジョブJa、Jb、Jc、JdおよびJeの実行予測時間が各々9時間、8時間、4時間、4時間および10時間であることを示している。なお、実行予測時間は、上記のとおり、ジョブの投入を要求するユーザから端末機105を介して与えられる。
また、上記(b2)に挙げた図3Aの空調機管理情報Dbは、図1の4台の空調機にそれぞれ対応する4つのエントリを有する。各エントリは、対応する空調機の空調機IDと、当該空調機が設置されている教室の教室IDと、当該空調機が温度調節を担当するエリアのエリアIDと、当該空調機の状態を対応づける、〈空調機ID,教室ID,エリアID,状態〉というタプルである。
なお、空調機の状態は、“電源ON”または“電源OFF”という値により示される。“電源ON”状態は、電源が入っており室温調整のために稼働中であることを示し、“電源OFF”状態は、電源が切断されて空調機が稼働していないことを示す。
また、空調機ID、教室IDおよびエリアIDの3つのID間の対応づけは静的であり、状態だけが動的に変化する。図3Aには、4台の空調機が図1に示したように配置され、かつ4台とも稼動中である場合の空調機管理情報Dbが例示してある。
なお、本実施形態では、空調機管理部205が空調機I/F203に通信先の空調機の空調機IDを通知し、空調機I/F203は空調機IDにより通信先の空調機を特定して通信するものとする。
しかし、実施形態によっては、各空調機にMedia Access Controller(MAC)アドレスやInternet Protocol(IP)アドレスなどのネットワークアドレスが割り当てられていてもよい。この場合、空調機I/F203はネットワークアドレスにより通信先の空調機を特定することができる。
なお、空調機のネットワークアドレスが空調機IDとして用いられてもよいし、空調機管理情報Dbの各エントリがさらにネットワークアドレスのフィールドを有していてもよい。後者の場合、空調機管理部205は、通信先の空調機の空調機IDからネットワークアドレスを求めて当該ネットワークアドレスを空調機I/F203に通知すればよい。
また、図3Aの情報Dcは、上記(b3)〜(b4)に挙げた図2のPC予測情報Dc2、PC管理情報Dc3、再配置後PC予測情報Dc5および再配置後PC管理情報Dc6に共通の形式を説明するための例である。
また、情報Dcと同形式の情報は、上記(b5)に挙げたジョブパターン別PC予測情報Dcx2に複数集積され、ジョブパターン別PC管理情報Dcx3にも複数集積される。例えば図3Aに例示するように情報Dcがテーブル形式で表現される場合、ジョブパターン別PC予測情報Dcx2とジョブパターン別PC管理情報Dcx3は、それぞれ情報Dcの形式のテーブルを複数含む。
情報Dcは、具体的には、図1のシステム101の計算サーバとして利用可能な48台のPCそれぞれに対応する48個のエントリを含む。そして、各エントリは、下記(d1)〜(d7)を対応づける、〈PCID,教室ID,エリアID,スイッチID,状態,ジョブID,予約〉というタプルである。
(d1)当該エントリに対応するPCのPCID。
(d2)当該PCが設置されている教室の教室ID。
(d3)当該PCが設置されているエリアのエリアID。
(d4)当該PCが接続されているスイッチのスイッチID。
(d5)当該PCの状態。本実施形態では、状態の値として、“教育利用中”、“グリッド利用中”、“電源OFF”、“割り当て済”および“再配置先”が使われる。具体的には、“教育利用中”状態は、教育利用向けのオペレーティングシステム(OS)が指定された状態でPCが起動していることを示す。そして、“グリッド利用中”状態は、システム101の計算サーバとしてPCを利用するためのOSが指定された状態でPCが起動していることを示す。また、“電源OFF”状態は、電源が切断されていることを示す。“割り当て済”状態と“再配置先”状態は、ジョブの割り当てまたは割り当ての予約を行うための処理の途中で一時的に設定される値であり、詳細は後述する。
(d6)当該PCに割り当てられるジョブのジョブID。何もジョブが割り当てられない場合の値は空(すなわちNULL)である。なおここで「割り当てられる」とは、実際の割り当て、割り当ての予約、または実際の割り当てもしくは予約を行う過程での暫定的な割り当てのいずれかがなされていることを意味する。
(d7)当該PCへのジョブの割り当ての予約の有無。当該PCに対して予約されたジョブがあるときは、“あり”という値が設定される。他方、当該PCに対して予約されたジョブがないときは何も設定されず、予約フィールドの値は空(すなわちNULL)である。
なお、上記(d1)〜(d4)の項目間の対応づけは静的であり、(d5)〜(d7)が動的に変化する項目である。また、図3Aの情報Dcは、図1の48台のPCのいずれもが、“教育利用中”状態であり、かつ何のジョブも割り当てられていない場合を示している。
また、上記説明から明らかなように、PC管理情報Dc3は、図1のように複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、複数の構成単位のいずれに属するのかを表すネットワーク管理情報を含む。つまり、PC管理情報Dc3におけるPCIDと教室IDとスイッチIDの対応づけが、ネットワーク管理情報に相当する。
また、PC管理情報Dc3は、複数の計算サーバがそれぞれ設置された場所と複数の空調設備がそれぞれ設置された場所に応じて複数の計算サーバを複数の空調設備のいずれかと対応づける空調設備対応づけ情報も含む。つまり、空調機管理情報Dbにおいて空調機IDと対応づけられているエリアIDが、PC管理情報Dc3ではPCIDと対応づけられている。したがって、PCIDはエリアIDを介して空調機IDと1対1に対応づけられている。PC管理情報Dc3におけるPCIDとエリアIDの対応づけが、空調設備対応づけ情報に相当する。
さて、上記(b6)に挙げた図3BのパラメタファイルDdは、教育利用モードから研究利用モードへ移行するタイミングを示す「グリッド運用開始時刻」というパラメタと、研究利用モードから教育利用モードへ移行するタイミングを示す「グリッド運用終了時刻」というパラメタを含む。図3Bの例では、グリッド運用開始時刻は平日20時であり、グリッド運用終了時刻は平日8時である。
パラメタファイルDdはさらに「予測用経過時間」というパラメタを含む。予測用経過時間は、ジョブの割り当てを予約するために運用管理装置100が未来を予測するときに用いるパラメタであり、予測を実行する時点から予測対象の時点までの時間の長さを示す。図3Bの例では、予測用経過時間は3600秒である。
また、パラメタファイルDdは、運用管理装置100が定期的に行う処理の実行間隔に関する「予約処理実行間隔」と「教育利用PC監視実行間隔」という2つのパラメタを含む。
予約処理実行間隔は、図3Bの例では300秒であり、教育利用モードでの運用中に上記(a1)の予約処理を300秒ごとに実行することと、研究利用モードでの運用中に上記(a2)の予約処理を300秒ごとに実行することを規定している。もちろん、実施形態によっては、(a1)と(a2)の予約処理それぞれに対して個別に実行間隔のパラメタが規定されていてもよい。
また、教育利用PC監視実行間隔は、研究利用モードでのシステム101の運用中に教育用途に開放されて実際に利用されているPCを確認する処理(以下「教育利用PC監視処理」という)を行う間隔を示す。教育利用PC監視処理については、図3Cについての説明の後で説明する。
さらに、パラメタファイルDdは、ジョブの割り当て方を評価するために評価部211が用いる評価テーブルを含む。評価テーブルは複数のエントリを含み、各エントリは、ジョブの並列数の範囲と、後述する満足度と、当該範囲に含まれる並列数のジョブに関して当該満足度が得られたときの配点とを対応づける〈並列数,満足度,配点〉というタプルである。
例えば、図3Bには、並列数の範囲として「9〜16」、「5〜8」、「1〜4」の3通りが例示されており、それぞれの範囲に対して満足度として1から5が対応づけられ、それぞれの配点が規定されている。例えば、4番目の〈9〜16,2,2〉というエントリは、「並列数の範囲が9以上16以下で満足度が2のときの配点が2である」と示している。
もちろん、実施形態によっては、並列数の範囲の代わりに個々の並列数の値を満足度および配点と対応づける形式で評価テーブルが実現されてもよい。つまり、実施形態に応じて、並列数に関して任意の粒度で配点を規定することができる。また、テーブル形式以外のデータ形式により評価テーブルと同等の情報が表現されてもよい。
なお、パラメタファイルDdは、複数のファイルに分割されていてもよい。例えば、グリッド運用開始時刻とグリッド運用終了時刻と予約処理実行間隔と教育利用PC監視実行間隔は、運用管理装置100を実現するコンピュータにおけるスケジューリング機能用のパラメタ定義ファイルに定義されていてもよい。そして、予測用経過時間が別のファイルに定義され、評価テーブルが別のデータベースファイル内に定義されていてもよい。
また、図3Bの情報Deは、上記(b7)〜(b8)に挙げた図2のジョブ・PC予測情報De2、ジョブ・PC管理情報De3、再配置後ジョブ・PC予測情報De5および再配置後ジョブ・PC管理情報De6に共通の形式を説明するための例である。
また、情報Deと同形式の情報は、上記(b9)に挙げたジョブパターン別ジョブ・PC予測情報Dex2に複数集積され、ジョブパターン別ジョブ・PC管理情報Dex3にも複数集積される。例えば図3Bに例示するように情報Deがテーブル形式で表現される場合、ジョブパターン別ジョブ・PC予測情報Dex2とジョブパターン別ジョブ・PC管理情報Dex3は、それぞれ情報Deの形式のテーブルを複数含む。
情報Deは、割り当てまたはその予約の対象となる各ジョブに対応するエントリを有する。図3Bの例では、情報Deは、ジョブJc、Ja、Jb、JdおよびJgに対応する5つのエントリを含む。そして、各エントリは、下記(e1)〜(e7)を対応づける、〈ジョブID,キューID,並列数,PCリスト,教室ID,エリアID,スイッチID〉というタプルである。
(e1)当該エントリに対応するジョブのジョブID。
(e2)当該ジョブがエンキューされた、ジョブスケジューラ204内のキューのキューID。
(e3)当該ジョブの並列数。
(e4)当該ジョブの割り当て先のPCのPCIDのリスト。なお、割り当て先のPCの数は、上記(e3)の並列数に一致する。また、図3Bと図3Cでは紙幅の都合上、「〜」を用いてリストを簡略化して表記している。
(e5)当該ジョブの割り当て先のPCが配置されている教室の教室IDのリスト。割り当て先のPCが複数の教室にわたって分散していれば、複数の教室の教室IDが含まれる。
(e6)当該ジョブの割り当て先のPCが配置されているエリアのエリアIDのリスト。割り当て先のPCが複数のエリアにわたって分散していれば、複数のエリアIDが含まれる。
(e7)当該ジョブの割り当て先のPCが接続されているスイッチのスイッチIDのリスト。割り当て先のPCが1つの同じスイッチに接続されているのでなければ、複数のスイッチIDが含まれる。
例えば、図3Bの例では、情報Deの1つ目のエントリは、ジョブJcについて、キューQ16にエンキューされており、並列数は16であり、割り当て先のPCがPC・Pa01〜Pa16であることを示している。この1つ目のエントリはさらに、ジョブJcの割り当て先であるPC・Pa01〜Pa16について、いずれも教室RaのエリアAa1に配置されていることと、接続先のスイッチがスイッチSa1とSa2にまたがっていることを示している。
そして、上記(b10)に挙げた図3Bの実行候補ジョブ情報Df1は、各ジョブの詳細を示す。具体的には、実行候補ジョブ情報Df1は、割り当てまたはその予約の対象となる各ジョブに対応するエントリを有する。各エントリは、対応するジョブのジョブIDと、当該ジョブがエンキューされたジョブスケジューラ204中のキューのキューIDと、当該ジョブの並列数を対応づける〈ジョブID,キューID,並列数〉というタプルである。
ここで、紙幅の都合上、上記(b11)〜(b13)の情報の例を説明する前に、(b14)に挙げたPC経過情報Djの例を先に図3Bに示す。PC経過情報Djは、運用管理装置100が予約処理を行う時刻から予約の対象となる時刻までの間に、現在は未実行の新たなジョブの割り当て先として利用可能になりそうな計算リソースの量を示す。
なお、運用管理装置100が予約処理を行う時刻から予約の対象となる時刻までの時間の長さは、上記のとおり、パラメタファイルDdにおいて予測用経過時間として定義されている。また、計算リソースの量は、計算サーバとして利用可能なPCの台数と、利用可能な時間の積で表すことができる。
現在ジョブを実行中のあるPCは、予約の対象となる時刻までの間に、現在実行中のジョブを終了するかもしれない。また、そもそも現在は何のジョブも行っていないアイドル状態のPCもあるかもしれない。
そこで、図3Bに例示するように、PC経過情報Djは、新たなジョブの実行のために利用可能な時間である空き時間を、当該空き時間が発生すると予測されるPCの台数と対応づける〈PC数,空き時間〉というタプルをエントリとして有する。なお、以下では説明の便宜上、PC経過情報Djにおける空き時間を分単位で示すが、もちろん秒単位で空き時間が表されていてもよい。
図3Bの例では、PC経過情報Djが〈12,30〉というエントリを含み、このエントリが示す予測内容は次のとおりである。すなわち、「運用管理装置100が上記(a2)の予約処理を行う時点からパラメタファイルDdの予測用経過時間で定義される60分(=3600秒)が経過するまでの間に、12台のPCが現在実行中のジョブを終えるだろう」と予測される。そして、「これら12台のPCは、60分のうちの最後の30分は、新たなジョブの実行のために利用可能となるだろう」と予測される。
同様に、図3Bに例示の〈8,20〉というエントリは、「8台のPCは、60分が経過するまでの間に現在実行中のジョブを終え、60分のうちの最後の20分間、新たなジョブの実行のために利用可能となるだろう」という予測を示す。また、図3Bに例示の〈4,60〉というエントリは、そもそも4台のPCが現在ジョブを実行していないことを示し、「当該4台のPCは60分間ずっと、新たなジョブの実行のために利用可能な状態だろう」という予測を示す。
また、上記(b11)に挙げた図3Cのジョブパターン群Dg1は、複数の「ジョブパターン」を含み、各ジョブパターンにはジョブパターンIDが割り当てられている。個々のジョブパターンは、実行候補ジョブ情報Df1に含まれる全ジョブの情報を順序づけて並べるパターンである。
例えば、図3Bの実行候補ジョブ情報Df1は、5つのジョブJa、Jb、Jc、JdおよびJgに対応する5つのエントリを含む。5つのジョブの順列は120(=5!)通りなので、図3Cのジョブパターン群Dg1は120個のジョブパターンを含む。
本実施形態では、各ジョブパターン内の各ジョブの情報として、ジョブIDとキューIDと並列数が使われる。ただし、キューIDと並列数はジョブIDから一意に定まるものなので、以下では説明の便宜と表記の簡略化のため、各ジョブパターンを、〈Ja,Jb,Jc,Jd,Jg〉のようにジョブIDを並べたタプルにより表記する。
図3Cには、120個のジョブパターンのうち、“P001”、“P049”および“P120”というジョブパターンIDが割り当てられた3つのジョブパターンについてのみ詳細を示してある。これら3つのジョブパターンは、それぞれ、〈Ja,Jb,Jc,Jd,Jg〉と〈Jc,Ja,Jb,Jd,Jg〉と〈Jg,Jd,Jc,Jb,Ja〉というタプルにより表すことができる。
また、上記(b12)に挙げた図3Cのキュー・PC定義情報Dhは、ジョブスケジューラ204の各キューに対応するエントリを含む。各エントリは、キューのキューIDと、当該キュー用に利用可能な(つまり当該キューに対応している)PCのPCIDのリストとを対応づける、〈キューID,PCリスト〉というタプルである。なお、キュー・PC定義情報Dhは静的な情報であり、例えばシステム101の管理者などにより予め設定されていてもよい。
例えば、図3Cの例では、ジョブスケジューラ204が3つのキューを持つことに対応して、キュー・PC定義情報Dhが3つのエントリを有する。3つのキューとは、具体的には、並列数が9から16のジョブのためのキューQ16と、並列数が2から8のジョブのためのキューQ08と、並列数が1のジョブ(すなわち並列実行型ではなく逐次実行型のジョブ)のためのキューQ01である。
そして、図3Cの例では、キューQ16には、PC・Pa01〜Pa16、Pb01〜Pb08、Pc09〜Pc24の40台のPCが対応づけられている。また、キューQ08には、PC・Pa01〜Pa08、Pb01〜Pb08、Pc01〜Pc24の40台のPCが対応づけられている。また、キューQ01には、PC・Pc01〜Pc24の24台のPCが対応づけられている。
このように本実施形態では、各キューに対して図1の48台のうちの一部のPCのみが対応づけられており、かつ、各キューに対応するPCの集合同士には重なりがある。しかし、実施形態によっては、48台すべてのPCが対応づけられているキューがあってもよいし、逆に、各キューに対応するPCの集合同士に重なりがなくてもよい。また、ジョブスケジューラ204が備えるキューの本数は、当然ながら実施形態によって任意である。
例えば、図3Cの例では、PC・Pa01〜Pa08は、キューQ16とQ08の両方に対応づけられている。よって、例えば、キューQ16に実行待ちのジョブが多いときには、それらのジョブにPC・Pa01〜Pa08を割り当て、逆にキューQ08に実行待ちのジョブが多いときには、それらのジョブにPC・Pa01〜Pa08を割り当てることも可能である。つまり、各キューに対応するPCの集合同士に重なりがあると、実行待ちのジョブの並列数の偏りに応じた、臨機応変かつ効率的な割り当てが可能となる。
他方、一部のPCを特定のキューにのみ対応づけることで、当該キューにエンキューされているジョブの割り当てを円滑化することもできる。例えば、図3Cの例では、PC・Pa09〜Pa16は、キューQ16のみに対応づけられている。このように一部のPCを排他的にキューQ16のみと対応づけることで、「キューQ16の実行待ちのジョブのためにPCが確保できない」といった事態を避け、キューQ16の実行待ちのジョブの割り当てを円滑化することができる。
例えば、図3Cの例では、キューQ16に対応しているPCのうちPC・Pa09〜Pa16以外の32台は、他のキューにも対応している。よって、これら32台のPCは、先に、他のキューでの実行待ちのジョブに割り当てられる可能性がある。しかし、PC・Pa09〜Pa16の8台はキューQ16専用に確保されているのだから、例えば並列数12のジョブに対しては、上記32台のうち少なくとも4台さえ残っていれば、全体で12台のPCを確保して当該ジョブに割り当てることができる。
よって、各キューに対応づけられたPCの集合同士にどの程度の重なりを持たせるかということは、臨機応変かつ効率的な割り当てを可能とする効果と、割り当てを円滑化する効果との間のトレードオフを考慮して、実施形態に応じて適宜定めることが好ましい。
また、図3Cには、上記(b13)に挙げた図2のブート設定情報Diに含まれる各種情報Di1〜Di5の具体例を示してある。
具体的には、ブート設定情報Diは、ブートローダの設定ファイル(コンフィグレーションファイル)として記述された3つのテンプレートファイルを含む。これら3つのファイルは、本実施形態では、運用管理装置100のルートディレクトリ直下の“tftpboot”ディレクトリに保存されている。本実施形態では、ブートローダとしてPreboot eXecution Environment GRand Unified Bootloader(PXEGRUB)が採用されている。
図3Cの例では、研究利用向けテンプレートDi1は、“grid.conf”という名前で保存されている。研究利用向けテンプレートDi1には、“GRID−Unix”というタイトルの下に、研究利用モードにおいてシステム101の計算サーバとしてPCを用いるときのOSをPCにロードするための設定が記述されている。設定ファイルの文法等は公知なので説明を割愛するが、本実施形態では、「研究利用モード用に各種設定がなされたUNIX(登録商標)を2番のパーティションからロードする」という設定が、研究利用向けテンプレートDi1に記述されている。
また、教育用利用向けテンプレートDi2は、“edu.conf”という名前で保存されている。教育用利用向けテンプレートDi2には、Windows(登録商標)と、教育利用モード用に各種設定がなされたUNIX(登録商標)の2つのOSの中から、学生等のユーザが起動OSを自由に選べるようにするための設定が記述されている。
そして、ブートシステムなし用テンプレートDi3は、“nouse.conf”という名前で保存されており、「電源を切断する」という設定が記述されている。
また、本実施形態では、ネットワークブートの実現のために、PC管理部206が、PXEサーバ、Trivial File Transfer Protocol(TFTP)サーバおよびDynamic Host Configuration Protocol(DHCP)サーバとしての機能も備える。ブート設定情報Diに含まれるDHCP設定ファイルDi4は、DHCPサーバが利用する設定ファイルである。
DHCP設定ファイルDi4は、図3Cの例では、運用管理装置100において“/etc/dhcpd.conf”というパスで参照されるファイルである。
DHCP設定ファイルDi4は、PXE対応の任意のPCに対して、所定のブートローダをダウンロードして使うように教えるための設定を含む。図3Cの例では、所定のブートローダとは、運用管理装置100において“/tftpboot/pxegrub”というパスで参照される実行可能ファイルである。
また、DHCP設定ファイルDi4には、48台のPCそれぞれに対して、ブート設定ファイルとしてダウンロードして読み込むべきファイルが設定されている。
例えば、図3Cの例では、図1のPC・Pa01に関して、「アクセスしてきたPCのMACアドレスが“00:0c:29:da:46:fc”であれば、当該PCがPC・Pa01である」と定義されている。そして、DHCP設定ファイルDi4は、運用管理装置100において“/tftpboot/Pa01.conf”というパスで参照されるファイルをダウンロードするよう、PC・Pa01に教えるための設定を含んでいる。他の47台のPCに関しても同様である。
そして、図3Cにリンク設定Di5として示すように、本実施形態では運用管理装置100の“/tftpboot”ディレクトリには、上記3つのテンプレートファイルが保存されている。さらに、この“/tftpboot”ディレクトリには、図1の48台のPCそれぞれに対応するシンボリックリンクが設定されている。
例えば、PC・Pa01に対応して“Pa01.conf”という名前で設定されたシンボリックリンクのリンク先は、“grid.conf”という名前のファイル(すなわち研究利用向けテンプレートDi1)である。他の47台についても同様に、適宜リンク先が、研究利用向けテンプレートDi1、教育用利用向けテンプレートDi2またはブートシステムなし用テンプレートDi3に設定されている。後述するように、リンク先は動的に書き換えられる。
なお、シンボリックリンクのリンク先を示す情報は運用管理装置100のファイルシステム上に記憶されるので、リンク設定Di5も、記憶部201に格納されているブート設定情報Diの一部であると言える。
そして、以上のような各種情報Di1〜Di5を含むブート設定情報Diにより、次のような手順でのネットワークブートが可能となる。
本実施形態において図1の48台のPCの各々は、PXE対応のNetwork Interface Card(NIC)を備えており、起動時にDHCPサーバにアクセスする。DHCPサーバは、アクセスしてきたPCにIPアドレスを割り当てるとともに、DHCP設定ファイルDi4にしたがって、ブートローダと設定ファイルのパスも通知する。
すると、PCは、割り当てられたIPアドレスを使ってTFTPサーバにアクセスし、DHCPサーバから通知されたパスにあるブートローダと設定ファイルをダウンロードする。続いて、PCは、設定ファイルにしたがってブートローダを実行することでOSをロードする。
例えば、PC・Pa01は、電源が投入されると、DHCPサーバにアクセスしてIPアドレスを割り当ててもらう。そして、PC・Pa01は、運用管理装置100の“/tftpboot/pxegrub”というパスで参照されるブートローダと、“/tftpboot/Pa01.conf”というパスで設定される設定ファイルを、TFTPによりダウンロードする。なお、PCの側から見て設定ファイルをダウンロードする動作は、運用管理装置100の側から見れば、個々のPCに応じた適宜の設定ファイルをPCに送付する動作である。
図3Cの例では、リンク設定Di5に示すように、“/tftpboot/Pa01.conf”というパスで設定される設定ファイルの実体は、“grid.conf”という名前で保存されている研究利用向けテンプレートDi1である。よって、PC・Pa01は、研究利用向けテンプレートDi1をダウンロードし、研究利用向けテンプレートDi1にしたがって、研究利用モード用に各種設定のなされたUNIX(登録商標)をロードする。
以上のように、本実施形態では、運用モードに応じて異なる設定ファイルが自動的にPCに送付されるので、運用モードに応じて異なる設定でPCが動作する。したがって、例えば「計算サーバとして機能するためのプログラム(つまりグリッドコンピューティング用のプログラム)が、教育利用モードでの運用中に、ユーザの誤操作によりPC上で誤って起動されてしまう」といった事態を未然に防げる。
例えば、PCがジョブを実行するためのミドルウェアは、研究利用向けテンプレートDi1によりロードされるOS上では実行可能であり、教育用利用向けテンプレートDi2によりロードされるOS上では実行不能なものでもよい。あるいは、OSにおいて設定される各種パラメタにより、ジョブの実行を可能とする設定を研究利用向けテンプレートDi1により実現し、ジョブの実行を不能にする設定を教育用利用向けテンプレートDi2により実現することもできる。
PC管理部206は、ジョブが割り当てられた計算サーバであるPCに対し、ジョブの実行を可能とする第1の設定を表す設定ファイルである研究利用向けテンプレートDi1を送付する。換言すれば、PC管理部206は、後述の図9のステップS1104または図10のステップS1203においてブートOSの設定を行ったPCに対し、研究利用向けテンプレートDi1を送付する。
また、PC管理部206は、ジョブが割り当てられた計算サーバ以外の計算サーバであるPCに対し、第1の設定とは異なる第2の設定を表す設定ファイルを送付する。第2の設定は、場合に応じて、計算サーバの起動を禁止する設定でもよいし、ジョブの実行を不能にする設定でもよい。
すなわち、PC管理部206は、ジョブが割り当てられていないPCに対しては、ブートシステムなし用テンプレートDi3を送付してもよいし、教育用利用向けテンプレートDi2を送付してもよい。具体的には、本実施形態のPC管理部206は、後述の図4のステップS122においてブートOSの設定を行ったPCに対しては、計算サーバの起動を禁止する設定を表す設定ファイルであるブートシステムなし用テンプレートDi3を送付する。そして、PC管理部206は、後述の図9のステップS1115においてブートOSの設定を行ったPCに対しては、ジョブの実行を不能にする設定を表す設定ファイルである教育用利用向けテンプレートDi2を送付する。
もちろん、実施形態によっては上記に例示した以外のプロトコルによるネットワークブートも可能であり、ブート設定情報Diの形式の詳細は実施形態に応じて適宜変更可能である。
なお、上記のように本実施形態では、DHCPサーバとしても機能するPC管理部206が各PCにIPアドレスを割り当てており、MACアドレスとIPアドレスの対応づけを記憶している。そして、DHCP設定ファイルDi4に示すようにPCIDとMACアドレスの対応づけは予め決められている。
そのため、PC管理部206は、PCIDとMACアドレスとIPアドレスを対応づけて管理することができる。つまり、PC管理部206は、PCとの通信においては、通信先のPCのPCIDからMACアドレスあるいはIPアドレスを求め、所望のPCとネットワークI/F202を介して通信することができる。
ところで、パラメタファイルDdに関して説明した教育利用PC監視処理について、ここで説明する。フロー制御部207はパラメタファイルDdを参照し、研究利用モードでの運用中に教育利用PC監視実行間隔が経過するたびに、PC管理部206に教育利用PC監視を行うよう命令する。
すると、PC管理部206はリンク設定Di5を参照して、設定ファイルのリンク先が教育用利用向けテンプレートDi2になっているPCを特定する。そして、PC管理部206は、特定したPCの各々について、当該PCがシャットダウンされているか否かを、ネットワークI/F202を介して調べる。調べた結果、当該PCがシャットダウンされていれば、PC管理部206は、PC管理情報Dc3で当該PCに対応するエントリにおいて、状態に“電源OFF”を設定する。
続いて、図1の環境を例として参照しつつ、図2の運用管理装置100が図3A〜3Cの各種情報を利用して行う処理について、図4〜10とともに詳しく説明する。
図4は、ジョブのPCへの割り当ておよびその予約について総括的に示すフローチャートである。以下、図4の処理を便宜的に「割り当て・予約処理」と呼ぶが、その理由は、下記のとおり、図4の処理は引数に応じて割り当て処理にもなり予約処理にもなるからである。以下では、まず割り当て・予約処理の概要について説明してから、各ステップの詳細について説明してゆく。
運用管理装置100は、上記(a1)と(a2)のとおり、教育利用モードおよび研究利用モードでのシステム101の運用中に、それぞれ定期的に割り当て・予約処理を実行することで予約を行う。また、運用管理装置100は、上記(a3)のとおり、教育利用モードから研究利用モードに切り換える時刻になると、割り当て・予約処理を実行し、それによりジョブをPCに割り当てる。
さらに、運用管理装置100は、研究利用モードでの運用中に、状況の変化を契機として不定期に割り当て・予約処理を実行し、それにより上記(a4)のとおりジョブのPCへの割り当てを行う。なお、割り当て・予約を実行する契機となる「状況の変化」とは、本実施形態では「ジョブの実行が完了した」というイベントである。実施形態によっては、「新たなジョブの要求をジョブスケジューラ204が受け付けた」などのイベントをさらに契機として利用することも可能である。
図4のフローチャートは、このように(a1)〜(a4)を総括的に表している。したがって、図4の割り当て・予約処理は、(a1)〜(a4)の違いを示すための2つの引数をとる。割り当て・予約処理は、具体的には、引数の値によって割り当て処理となるか、または予約処理となる。
割り当て・予約処理の第1引数は、運用モードを示し、以下の(f1)〜(f3)に示す3つの値のいずれかをとる。
(f1)現在の運用モードが教育利用モードであることを示し、上記(a1)のときに指定される、“educate”という値。
(f2)現在の運用モードが研究利用モードであることを示し、上記(a2)と(a4)のときに指定される、“research”という値。
(f3)教育利用モードから研究利用モードに切り換えるタイミングであることを示し、上記(a3)のときに指定される、“start−GRID”という値。
また、割り当て・予約処理の第2引数は、割り当て処理を行うのか予約処理を行うのかを示し、以下ではこの第2引数を「処理モード」という。処理モードの値は、具体的には以下の(g1)〜(g2)に示す2つの値のいずれかである。
(g1)予約処理を行うことを示し、上記(a1)と(a2)のときに指定される、“reserve”という値。
(g2)割り当て処理を行うことを示し、上記(a3)と(a4)のときに指定される、“assign”という値。
図2のフロー制御部207は、図4の割り当て・予約処理を開始するトリガの発生を監視し、トリガの発生を検出すると、上記の2つの引数の値を定め、割り当て・予約処理を開始する。トリガにはいくつか種類があり、トリガの種類に応じて、フロー制御部207は引数の値を定めることができる。
具体的には、フロー制御部207は、パラメタファイルDdで規定されている予約処理実行間隔(図3Bでは300秒)の経過を、第1のトリガとして検出する。この第1のトリガを検出すると、フロー制御部207は、処理モードの値を“reserve”に定める。
第1のトリガを検出した場合、フロー制御部207は、現在時刻ならびにパラメタファイルDdで規定されているグリッド運用開始時刻およびグリッド運用終了時刻に基づいて、現在時刻が教育利用モードと研究利用モードのいずれの運用期間に含まれるのかを判断する。そして、フロー制御部207は、判断結果にしたがって運用モードの値を“educate”または“research”に定め、割り当て・予約処理を開始する。以上により、具体的には(a1)または(a2)の処理が開始される。
あるいは、フロー制御部207は、現在時刻がパラメタファイルDdで規定されているグリッド運用開始時刻になると、それを第2のトリガとして検出する。この第2のトリガを検出すると、フロー制御部207は、処理モードの値を“assign”に定め、運用モードの値を“start−GRID”に定め、割り当て・予約処理を開始する。以上により、具体的には(a3)の処理が開始される。
あるいは、フロー制御部207は、あるジョブの実行が終了したという通知をジョブスケジューラ204から受け取ると、その通知を第3のトリガとして検出する。なお、この第3のトリガが検出されるのは、研究利用モードの運用期間中に限られる。フロー制御部207は、第3のトリガを検出すると、処理モードの値を“assign”に定め、運用モードの値を“research”に定め、割り当て・予約処理を開始する。以上により、具体的には(a4)の処理が開始される。
さて、以上のようにしてトリガに応じて引数が定められて開始される図4の処理は、概要を示せば、次のとおりである。
図4において、ステップS101〜S110は前処理に相当し、ステップS111〜S116では、複数の割り当て方がそれぞれ評価され、そのうち1つの割り当て方が選ばれる。そして、選ばれた割り当て方についての微調整がステップS117で行われ、ステップS118以降で、実際の割り当てまたは予約が行われる。各ステップの詳細は以下のとおりである。
ステップS101でフロー制御部207は、空調機状態チェック処理を行うよう空調機管理部205に命令する。すると、空調機管理部205は、空調機管理情報Dbにより管理される各空調機と空調機I/F203を介して通信し、各空調機の状態をチェックし、チェック結果を空調機管理情報Dbに反映する。
本実施形態では、図1の空調機Ca1、Cb1、Cc1およびCc2の各々について、“電源ON”と“電源OFF”のいずれの状態であるかを、空調機管理部205がチェックする。そして、空調機管理部205は、チェック結果を図3Aに示した空調機管理情報Dbのテーブルの状態の列に書き込む。なお、空調機には待機電力が常時供給されているので、空調機は、室温調整を行っていない“電源OFF”状態のときであっても、運用管理装置100と通信を行うことができる。
次のステップS102でフロー制御部207は、処理モードの値が“reserve”と“assign”のいずれであるのかを判断する。処理モードの値が“reserve”のとき(つまり予約処理を行おうとする場合)、処理はステップS103に移行する。逆に、処理モードの値が“assign”のとき(つまり割り当て処理を行おうとする場合)、処理はステップS104に移行する。
ステップS103でフロー制御部207は、PC管理部206に対して引数として運用モードの値を与え、PC状態チェック処理を行うよう命令する。すると、PC管理部206は、PC管理情報Dc3により管理されているすべてのPC(本実施形態では図1の48台のPC)の状態をチェックし、チェック結果をPC管理情報Dc3に反映する。
ステップS103の結果としてPC管理情報Dc3に書き込まれる状態には、PCの電源が切断されていることを示す“電源OFF”状態か、PCに電源が入っており教育用に利用されていることを示す“教育利用中”状態がありうる。また、運用モードが“research”である場合は、PCが現在何らかのジョブを実行中であることを示す“グリッド利用中”状態もありうる。
なお、本実施形態のPC状態チェック処理は、引数として与えられた運用モードに応じた条件を満たすPCの台数を数える処理も含む。PC管理部206は、数えた結果を返り値としてフロー制御部207に返す。
具体的には、運用モードの値が“educate”のとき、PC管理部206は、PC管理情報Dc3により管理されているPCの総数(図1の例の場合は48)を数える。
逆に、運用モードの値が“research”のとき、PC管理部206は、“教育利用中”状態以外の状態(つまり“電源OFF”状態または“グリッド利用中”状態)のPCの数を数える。なぜなら、本実施形態では、研究利用モードでのシステム101の運用期間中に、一部のPCをグリッドコンピューティングに従事させずに教育目的で学生等に開放することができるからである。
以上のようにしてステップS103のPC状態チェック処理をPC管理部206が行うと、フロー制御部207は、PC管理部206からの返り値を「研究用PC台数」として記憶する。上記の説明から明らかなように、研究用PC台数は、グリッドコンピューティング用に利用可能なPCの台数を示す。
ステップS103の実行後、処理はステップS106に移行する。なお、運用モードの値が“start−GRID”のときにステップS103が実行されることはない。
他方、ステップS102で処理モードが“assign”であると判断された場合、ステップS104でフロー制御部207は、運用モードが“research”と“start−GRID”のいずれであるかを判断する。なお、ステップS104が実行されるのは処理モードが“assign”のときのみなので、運用モードの値が“educate”となることはない。
運用モードが“start−GRID”の場合は、運用管理装置100が上記(a3)のように教育利用モードから研究利用モードへの切り換えを行おうとしている場合であり、処理はステップS105に移行する。他方、運用モードが“research”の場合は、上記(a4)の場合に相当し、処理はステップS103に移行する。
ステップS105でフロー制御部207は、全PC停止処理を行うようPC管理部206に命令する。すると、PC管理部206は、PC管理情報Dc3により管理されているすべてのPC(本実施形態では図1の48台のPC)を強制的にシャットダウンさせ、PC管理情報Dc3において、すべてのPCの状態を“電源OFF”状態に設定する。この段階で、PC管理部206は、当該PCのブートOSに、「電源を切断する」設定を行う。
そして、PC管理部206は、全PC停止処理の返り値として、PC管理情報Dc3により管理されているPCの総数を返す。フロー制御部207は、PC管理部206からの返り値を「研究用PC台数」として記憶する。ステップS105の実行後、処理はステップS106に移行する。
ステップS106でフロー制御部207は、ジョブ・PC管理情報De3とジョブ・PC予測情報De2を初期化する。なお、ステップS106における「初期化」とは、すべてのエントリを削除することを意味する。
そして、続くステップS107においてフロー制御部207は、実行中ジョブ確認・予測部208に対し、研究用PC台数と処理モードの値を引数として与え、図5A〜5Bとともに後述する「実行中ジョブの確認・予測処理」を行うよう命令する。そして、フロー制御部207は、実行中ジョブ確認・予測部208から処理結果を受け取り、「空きPC数」として記憶する。
ステップS107で引数として与えられる研究用PC台数は、ステップS103またはステップS105で記憶された値であり、ジョブを実行する計算サーバとして利用可能であると想定されるPCの台数を示す。原則的には、システム101に含まれるすべてのPCは計算サーバとして利用可能である。しかし、本実施形態においては、研究利用モードでの運用期間中に、例外的に一部のPCが教育目的で学生等に開放され、ジョブの割り当て対象から除外されることがある。
ステップS103で引数として“educate”が与えられて研究用PC台数に値が設定される場合と、ステップS105で研究用PC台数の値が設定される場合は、原則どおり、システム101内のPCの総数が研究用PC台数として得られる。他方、ステップS103で引数として“research”が与えられて研究用PC台数に値が設定される場合は、例外的に教育目的で開放されたPCをジョブの割り当て対象から除外した、残りのPCの総数が、研究用PC台数として得られる。
また、ステップS107で得られる空きPC数は、これから運用管理装置100が行おうとする割り当てまたは予約において、新たなジョブの実行のために最大限利用可能なPCの台数を示す。つまり、空きPC数は、割り当てまたは予約の対象時点においてジョブを実行していない(あるいは実行していないと予測される)PCの台数を示す。
ステップS107の実行後、処理はステップS108に進む。ステップS108でフロー制御部207は、実行候補ジョブ選択部209に対し、図6A〜6Cとともに後述する「実行候補ジョブ選択処理」を行うよう命令する。その際、フロー制御部207は実行候補ジョブ選択部209に対し、引数として、空きPC数と運用モードと処理モードの値を与える。
実行候補ジョブ選択処理は、「ジョブの優先度と投入時刻順に、利用可能なPCの範囲内で、ジョブのPCへの割り当て(またはその予約)を行うとしたら、どのジョブまでが割り当て(またはその予約)の対象となるのか」を決定する処理である。
例えば、ジョブスケジューラ204のキューに、実行待ちのジョブが大量にある場合、すべてのジョブをシステム101が同時に処理することができるとは限らない。よって、実行候補ジョブ選択部209は、ステップS108において、空きPC数が示すシステム101の余力の範囲で処理可能な量の分だけ、新たなジョブを選択する。
選択の結果は、実行候補ジョブ情報Df1として記憶部201に記憶される。また、選択されたジョブの数は、フロー制御部207に返り値として返され、フロー制御部207は返り値を「ジョブ数」として記憶する。
そして、フロー制御部207は、続くステップS109において、記憶したジョブ数が0であるか否かを判断する。
ジョブ数が0のとき、新たに割り当てまたはその予約を行う対象のジョブが見つからなかったということである。つまり、ジョブ数が0になるのは、実行待ちのジョブがそもそも存在しない場合か、最も優先度の高いジョブがシステム101の余力の範囲内では実行不能なために今回はどのジョブも割り当てまたはその予約の対象として選択されなかった場合である。そこで、ジョブ数が0のとき、フロー制御部207は図4の処理を終える。
他方、ジョブ数が1以上であれば、処理はステップS109からステップS110へと移行する。そして、ステップS110でフロー制御部207は、ジョブパターンを生成するようジョブパターン作成部210に命令する。ジョブパターンは、ステップS108で選択された全ジョブの情報を順序づけて並べるパターンである。
本実施形態のジョブパターン作成部210は、具体的には、可能なすべてのジョブパターンを網羅的に生成する。例えば、ステップS108で5つのジョブJa、Jb、Jc、Jd,Jgが選択された場合、ジョブパターン作成部210は、120(=5!)通りのジョブパターンを生成する。
以下に示す一群の式(まとめて式(13)という)は、こうして生成される120個のジョブパターンを示す。なお、式の左辺の“P001”等の記号は、以下の説明において各ジョブパターンを識別するジョブパターンIDとしても使うことにする。
P001=〈Ja,Jb,Jc,Jd,Jg〉
P002=〈Ja,Jb,Jc,Jg,Jd〉
P003=〈Ja,Jb,Jd,Jc,Jg〉
P004=〈Ja,Jb,Jd,Jg,Jc〉
P005=〈Ja,Jb,Jg,Jc,Jd〉
(中略)
P049=〈Jc,Ja,Jb,Jd,Jg〉
(中略)
P120=〈Jg,Jd,Jc,Jb,Ja〉 (13)
ジョブパターン作成部210は、ジョブパターンごとに上記のように一意なジョブパターンIDも生成し、ジョブパターンとジョブパターンIDを対応づけてジョブパターン群Dg1として記憶部201に格納する。具体的には、処理モードが“reserve”のとき、ジョブパターン群Dg1は予測ジョブパターン群Dg2であり、処理モードが“assign”のとき、ジョブパターン群Dg1は実行ジョブパターン群Dg3である。
続くステップS111〜S116の処理は、各ジョブパターンを評価して最良のジョブパターンを選択する処理である。具体的には、ステップS111において、フロー制御部207は、ジョブパターン群Dg1からジョブパターンを1件読み込む。
そして、ステップS112でフロー制御部207は、図7A〜7Cとともに後述する「PC決定処理」を評価部211に行わせる。その際に、フロー制御部207は、ステップS111(または後述のステップS115)で読み込んだジョブパターンのジョブパターンIDと処理モードの値を引数として評価部211に与える。
PC決定処理は、「ジョブパターン中の先頭のジョブから順にPCへの割り当てを行っていくと、各ジョブはどのPCに割り当てられるのか」を決定するとともに、そのように決定した割り当てパターンを評価する処理である。評価部211は、PC決定処理による評価結果をフロー制御部207に返し、フロー制御部207は返り値を「ジョブパターン評価」として得る。
すると、ステップS113においてフロー制御部207は、ステップS112で得たジョブパターン評価を、評価対象のジョブパターンのジョブパターンIDと対応づけて記憶する。
次のステップS114でフロー制御部207は、すべてのジョブパターンを処理したか否かを判定する。未処理のジョブパターンが残っていれば、処理はステップS115に移行する。他方、すべてのジョブパターンについてステップS112とS113の処理が完了していれば、処理はステップS116に移行する。
ステップS115で評価部211は、未処理のジョブパターンの中から次のジョブパターンを1件読み込む。そして処理はステップS112に戻る。
また、ステップS116でフロー制御部207は、ステップS113で記憶したジョブパターン評価の中で最良の値を持つジョブパターンを選択する。なお、本実施形態では、ジョブパターン評価が最良の値のジョブパターンが複数ある場合は、フロー制御部207がその中から任意の1つを選択するものとする。以下、ステップS116で選択されたジョブパターンのジョブパターンIDを、「選択ジョブパターンID」という。
すると、続くステップS117でフロー制御部207は、再配置部212に対し、図8A〜8Hとともに後述する「再配置処理」を行うよう命令し、引数として選択ジョブパターンIDと処理モードの値を与える。
なお、再配置処理は、選択ジョブパターンIDで識別されるジョブパターンに対応してステップS112で決定した各ジョブのPCへの割り当て方を、微調整する処理である。具体的には、再配置処理は、「評価を下げない範囲で各ジョブのPCへの割り当て方を変えてみることによって、空調機の無駄な稼働をなくせないかを試し、可能ならば空調機の無駄な稼働をなくすように各ジョブのPCへの割り当て方を変える」という処理である。
ステップS117の実行後、再配置部212はフロー制御部207に再配置処理の完了を通知する。すると、続くステップS118でフロー制御部207は、処理モードの値が“reserve”と“assign”のいずれであるのかを判断する。
処理モードの値が“reserve”のとき、処理はステップS119に移行する。逆に、処理モードの値が“assign”のとき、処理はステップS120に移行する。
ステップS119が実行されるのは、予約のために図4の処理が行われる場合である。よって、ステップS119でフロー制御部207は、予約部213に対して、図9とともに後述する「予約設定処理」を行うよう命令し、引数として運用モードの値を与える。
予約設定処理は、「ステップS117の再配置処理の結果にしたがって各ジョブのPCへの割り当てを予約し、予約の内容をPC予測情報Dc2とPC管理情報Dc3とブート設定情報Diに反映させる」という処理である。予約設定処理の実行が完了すると、図4の割り当て・予約処理も終了する。
他方、ステップS120でフロー制御部207は、図10とともに後述する「PC起動処理」をPC管理部206に行わせる。PC起動処理は、「再配置後ジョブ・PC情報De4にしたがって、必要ならPCを新たに起動し、割り当てられたジョブを各PCに実行させるための制御を行う」という処理である。
PC起動処理が完了すると、続いてステップS121において、フロー制御部207は、運用モードの値が“start−GRID”と“research”のいずれであるのかを判断する。運用モードの値が“research”のとき、処理はステップS122に移行する。逆に、運用モードの値が“start−GRID”のときには、グリッド運用開始処理として、ステップS105で、既にすべてのPCの電源が切断されているので、処理はステップS123に移行する。
ステップS122でフロー制御部207は、PC管理部206に「PC停止処理」を行うよう命令し、PC管理部206がPC停止処理を終えると、処理はステップS123に移行する。なお、PC停止処理は、不測のエラーを予防するためにPC管理部206がPC管理情報Dc3を参照して行う処理である。
具体的には、PC管理部206は、PC管理情報Dc3で管理されている各PCについて、当該PCが“グリッド利用中”状態でも“教育利用中”状態でも“電源OFF”状態でもないときに、当該PCをシャットダウンさせる。そして、PC管理部206は、PC管理情報Dc3を書き換えて、シャットダウンさせた当該PCの状態の値を“電源OFF”に更新する。この段階で、PC管理部206は、当該PCのブートOSに、「電源を切断する」設定を行う。
また、ステップS123でフロー制御部207は、空調機管理部205に「空調機制御処理」を行うよう命令する。空調機管理部205が空調機制御処理を終了すると、図4の割り当て・予約処理も終了する。
なお、空調機制御処理として、空調機管理部205は、空調機管理情報Dbにより管理される空調機(本実施形態では図1の4台)の各々について、稼働させる必要性を判断し、判断の結果にしたがって当該空調機を制御する。
つまり、空調機管理部205は、判断対象の空調機に対応するエリアのIDを検索キーにしてPC管理情報Dc3を検索し、当該エリアに設置されているPCのうちで“電源OFF”状態以外のものの台数を求める。得られた台数が0台であれば、空調機管理部205は、判断対象の空調機を稼働させる必要がないと判断する。他方、得られた台数が1台以上ならば、空調機管理部205は、判断対象の空調機を稼働させる必要があると判断する。
そして、空調機管理部205は、判断対象の空調機を稼働させる必要がないと判断した場合に、当該空調機の現在の状態が空調機管理情報Dbにおいて“電源OFF”と設定されていれば、当該空調機については現状維持と決定する。そして、空調機管理部205は当該空調機についての処理を終える。
同様に、空調機管理部205は、判断対象の空調機を稼働させる必要があると判断した場合に、当該空調機の現在の状態が空調機管理情報Dbにおいて“電源ON”と設定されているときも、当該空調機については現状維持と決定する。そして、空調機管理部205は当該空調機についての処理を終える。
また、空調機管理部205は、判断対象の空調機を稼働させる必要がないと判断した場合に、当該空調機の現在の状態が空調機管理情報Dbにおいて“電源ON”と設定されていれば、当該空調機の稼働を停止させる。つまり、空調機管理部205は、空調機I/F203を介して当該空調機をリモート制御により停止させる。そして、空調機管理部205は、空調機管理情報Db上の当該空調機の状態を“電源OFF”に設定する。
また、空調機管理部205は、判断対象の空調機を稼働させる必要があると判断した場合に、当該空調機の状態が空調機管理情報Dbにおいて“電源OFF”と設定されていれば、当該空調機を稼働させる。つまり、空調機管理部205は、空調機I/F203を介して当該空調機をリモート制御により稼働させる。そして、空調機管理部205は、空調機管理情報Db上の当該空調機の状態を“電源ON”に設定する。
以上のようにしてステップS123で空調機管理部205が空調機制御処理を終えると、図4の割り当て・予約処理も終了する。
さて、以上説明した図4の割り当て・予約処理は、上記(a1)〜(a4)の処理に相当する。次に、上記(a5)の研究利用モードから教育利用モードに切り換える処理について説明する。
図3Bに示すようにグリッド運用終了時刻を規定するパラメタファイルDdの設定にしたがい、フロー制御部207は、グリッド運用終了時刻になると、(a5)の処理を開始する。具体的には、フロー制御部207は、ジョブスケジューラ204に対して実行中のジョブの中断のための「ジョブ中断処理」を行うよう、命令する。
ジョブ中断処理の具体的詳細は実施形態に応じて任意であるが、例えば、ジョブスケジューラ204は、実行中の各ジョブについて、直近のチェックポイントにおけるデータを退避してもよい。データの退避先は、例えば運用管理装置100が備えるハードディスク装置でもよい。また、ジョブ中断処理においてジョブスケジューラ204は、ジョブを実行中の各PCに対して、ジョブの実行中断を命じる。
ジョブスケジューラ204は、例えば上記のようにしてジョブ中断処理を完了すると、フロー制御部207に完了を通知する。すると、通知を受けたフロー制御部207は、PC管理部206に対し、「教育利用モード移行処理」を行うよう命令する。そして、PC管理部206は、教育利用モード移行処理として、次の一連の処理を行う。
すなわち、PC管理部206は、すべてのPCを強制的にシャットダウンさせ、PC管理情報Dc3においてすべてのPCの状態の値を“電源OFF”に設定する。さらに、PC管理部206は、すべてのPCの起動OSが教育利用モード用のOSとなるように、図3Cのリンク設定Di5を設定しなおす(つまり、48個のリンクすべてについて、リンク先を教育用利用向けテンプレートDi2に設定する)。
なお、実施形態によっては、すでに教育用に開放中のPCについては、シャットダウンの対象から外すようにしてもよい。また、その場合に、すでに教育用に開放中のPCに関しては、リンク設定Di5におけるリンク先が教育用利用向けテンプレートDi2に設定されているので、リンク設定Di5のリンク先の再設定は、してもしなくても結果は変わらない。
以上のようにして、研究利用モードから教育利用モードに切り換える上記(a5)の処理を運用管理装置100が終えると、すべてのPCは、電源さえ入れられれば教育利用モードの設定での利用が可能な状態となる。よって、学生等は、教育利用モードでの運用時間帯では、使いたい任意のPCを選んで電源を投入すれば当該PCを利用することができる。
また、本実施形態では研究利用向けテンプレートDi1と教育用利用向けテンプレートDi2が別々に設けられている。よって、教育利用モードでの運用中に学生等が誤ってグリッドコンピューティング用の設定でPCを起動してしまうことを未然に防ぐことができる。
以上、運用管理装置100が行う(a1)〜(a5)の各処理について概要の説明を終えたので、続いて、(a1)〜(a4)の処理に相当する図4の割り当て・予約処理から呼び出される各種処理の詳細について、図5A〜10を参照して説明する。
図5A〜5Bは、図4のステップS107で実行される実行中ジョブの確認・予測処理のフローチャートである。
ステップS201で実行中ジョブ確認・予測部208は、処理モードの値が“reserve”と“assign”のいずれであるかを判断する。処理モードの値が“reserve”であるとき、処理はステップS202に移行し、処理モードの値が“assign”であるとき、処理はステップS203に移行する。
ステップS202で実行中ジョブ確認・予測部208は、図3BのパラメタファイルDdから、予測用経過時間を得る。図3Bの例では、予測用経過時間の値は3600秒なので、実行中ジョブ確認・予測部208は「予約のために状況を予測する対象となる時点は現在から3600秒後である」と認識する。ステップS202の実行後、処理はステップS203に移行する。
ステップS203で実行中ジョブ確認・予測部208は、「起動済PC数」を0に初期化する。処理モードが“reserve”のとき、起動済PC数は、予測用経過時間により示される予測対象の時刻において、ジョブを実行中であると予測されるPCの数を示す。他方、処理モードが“assign”のとき、起動済PC数は、現在ジョブを実際に実行中のPCの数を示す。
また、ステップS203で実行中ジョブ確認・予測部208は、続いて、「経過中空きPC数集計」を0に初期化する。経過中空きPC数集計は、運用モードが“research”で、かつ処理モードが“reserve”の場合に利用される。経過中空きPC数集計が示すのは、研究用PC台数のうちで、現在はジョブを実行中だが、予測用経過時間により示される予測対象の時刻までにはジョブを終えると予測されるPCの台数である。
そして、次のステップS204で実行中ジョブ確認・予測部208は、PC経過情報Djを、何もエントリを持たない状態に初期化する。
続くステップS205で実行中ジョブ確認・予測部208は、ジョブスケジューラ204に、現在実行中のジョブの件数を問い合わせる。問い合わせに対するジョブスケジューラ204からの回答を、以下では「実行中ジョブ件数」という。
そして、次のステップS206で実行中ジョブ確認・予測部208は、ステップS205で得た実行中ジョブ件数が0であるか、それとも1以上であるかを判断する。実行中ジョブ件数が0のとき、処理はステップS207に移行し、実行中ジョブ件数が1以上のとき、処理はステップS208に移行する。
ステップS207で実行中ジョブ確認・予測部208は、引数として与えられた研究用PC台数を戻り値としてフロー制御部207に返す。つまり、実行中ジョブ確認・予測部208は、「現在まだ実行を開始していない新たなジョブを割り当てること(または、割り当ての予約を受け入れること)が可能な状態のPCの台数は、研究用PC台数である」ということをフロー制御部207に通知する。そして、実行中ジョブの確認・予測処理は終了する。
なお、運用モードが“start−GRID”または“educate”の場合は常に、実行中のジョブが存在しないので、処理がステップS206からS207へと進む。もちろん、運用モードが“research”の場合でも、実行中のジョブが0件ということはありうる。そのときも、処理がステップS206からS207へと進む。
さて、ここでステップS206の分岐の説明に戻ると、実行中ジョブ確認・予測部208は、ステップS206で実行中ジョブ件数が1以上であると判断した場合、ステップS208以下の処理を行う。つまり、運用モードが“research”であり、かつ実際に1件以上のジョブが現在実行中のときのみ、ステップS208以下の処理が行われる。
ステップS208で実行中ジョブ確認・予測部208は、ジョブスケジューラ204に現在実行中のジョブの情報を問い合わせ、それに対する回答を「実行中ジョブ情報」として記憶する。本実施形態の実行中ジョブ情報は、具体的には、各ジョブを、〈ジョブID,実行予測時間,実行開始からの経過時間,キューID,並列数,使用PCリスト〉の組(タプル)により表現したエントリを含む。なお、ここでの使用PCリストとは、当該ジョブを実行中のPCのPCIDのリストである。
続くステップS209〜S217は、実行中ジョブ情報の各エントリに関する繰り返し処理である。
ステップS209で実行中ジョブ確認・予測部208は、ステップS208で記憶した実行中ジョブ情報の1件目のエントリを読み込む(つまり、実行中のジョブのうち1件目に注目する)。
続くステップS210で実行中ジョブ確認・予測部208は、処理モードの値が“reserve”と“assign”のいずれであるかを判断する。処理モードの値が“reserve”のとき、処理はステップS211に移行し、処理モードの値が“assign”のとき、処理はステップS212に移行する。
ステップS211で実行中ジョブ確認・予測部208は、注目している当該ジョブの実行予測時間と実行開始からの経過時間を、ステップS209または後述のステップS217で読み出したエントリから取得する。そして、実行中ジョブ確認・予測部208は、当該ジョブの実行予測時間を、当該ジョブの経過時間とステップS202で得た予測用経過時間の和と比較する。
当該ジョブの実行予測時間が、当該ジョブの経過時間と予測用経過時間の和よりも長い場合、実行中ジョブ確認・予測部208は、「予測対象時刻になっても当該ジョブは終了しない」と予測する。換言すれば、実行中ジョブ確認・予測部208は、「現在当該ジョブを実行中のPCには、予測対象時刻において他の新たなジョブの割り当てを予約することはできない」と判断する。そのため、この場合には処理がステップS212に移行する。
例えば、現在注目しているジョブに関して、実行予測時間が5時間で、経過時間が2時間であり、予測用経過時間は図3Bに示すように3600秒(=1時間)であるとする。この場合、「5時間>2時間+1時間=3時間」である。よって、実行中ジョブ確認・予測部208は、「当該ジョブを実行中のPCは、予測対象時刻においてもまだ当該ジョブを実行中であろうから、それらのPCに対して、新たに他のジョブの割り当てを予約することはできない」と判断する。
他方で、当該ジョブの実行予測時間が、当該ジョブの経過時間と予測用経過時間の和以下の場合、実行中ジョブ確認・予測部208は、「予測対象時刻以前に当該ジョブが終了する」と予測する。換言すれば、実行中ジョブ確認・予測部208は、「現在当該ジョブを実行中のPCには、予測対象時刻において他の新たなジョブの割り当てを予約することができる」と判断する。そのため、この場合には処理がステップS213に移行する。
ステップS212で実行中ジョブ確認・予測部208は、ステップS208で得た実行中ジョブ情報の中で現在注目している当該ジョブの情報を、「実行ジョブ予測情報」として出力する。つまり、実行中ジョブ確認・予測部208は、当該ジョブのエントリを実行ジョブ予測情報に追加する。その後、処理はステップS216に移行する。
なお、実行ジョブ予測情報は、図2に示す実行予測ジョブ情報Df2と似た名称だが、実行予測ジョブ情報Df2とは別の情報であり、実行中ジョブ確認・予測部208が内部処理用に記憶する情報である。また、図5Aの処理の開始時における実行ジョブ予測情報は、何もエントリを持たない空の状態であるものとする。
また、ステップS213で実行中ジョブ確認・予測部208は、当該ジョブの並列数を「経過中空きPC数」として記憶する。当該ジョブの並列数分のPCは、予測対象時刻においては当該ジョブを終了していると予測されるため、他の新たなジョブの割り当てを予約することができる。よって、実行中ジョブ確認・予測部208は、他の新たなジョブの割り当てを予約することができるPCの台数として、経過中空きPC数を記憶する。
続くステップS214で実行中ジョブ確認・予測部208は、「PC経過情報出力処理」を行う。具体的には、実行中ジョブ確認・予測部208は、当該ジョブの終了から予測対象時刻までの長さを「経過中空き時間」として計算し、ステップS213で記憶した経過中空きPC数と、計算した経過中空き時間を対応づけたエントリをPC経過情報Djに追加する。
なお、実行中ジョブ確認・予測部208は、当該ジョブの開始から現在までの経過時間と予測用経過時間の和から、当該ジョブの実行予測時間を減じることで、経過中空き時間を算出することができる。
例えば、当該ジョブの開始時刻が20時10分であり、当該ジョブの実行予測時間が90分であり、このステップS214を実行中ジョブ確認・予測部208が実行している現在時刻が21時00分であるとする。また、ステップS202で得られた予測用経過時間は60分(=3600秒)であり、22時00分のジョブ実行を実行中ジョブ確認・予測部208が予測するものとする。
この場合、当該ジョブの開始から現在(21時00分)までの経過時間は、50分(=21時00分−20時10分)である。また、予測用経過時間は60分(=3600秒)であることから、実行中ジョブ確認・予測部208は、経過中空き時間として20分(=50分+60分−90分)を得る。
なお、本実施形態では以上のように、実行中ジョブ確認・予測部208が予測用経過時間のうちの空き時間を使ってPC経過情報Djを作成し、実行候補ジョブ選択部209がPC経過情報Djを用いた処理を行う。しかし、実施形態によっては、予測用経過時間のうちでジョブの実行によって占有される「使用時間」が、空き時間の代わりにPC経過情報Djにおいて管理されてもよい。そして、PC経過情報Djの変形にともなって、各種処理が適宜変形されてもよい。
使用時間と空き時間の和は定数の予測用経過時間に等しいので、使用時間は空き時間と表裏一体の関係にある。したがって、使用時間の観点からPC経過情報Djが管理される実施形態におけるいくつかのステップにおける処理も、当業者が適宜変形することができる。例えば、最長の空き時間は最短の使用時間に対応するので、使用時間の観点から表現するようにPC経過情報Djが変形された実施形態においては、最長の空き時間を求める処理は、最短の使用時間を求める処理に置き換えられる。
なお、使用時間の観点からPC経過情報Djが管理される場合、使用時間は、厳密には、ジョブの実行によってPCが占有される時間だけでなく、待機時間も含む。つまり、同じジョブを実行するための他のPCが、実行中の他のジョブの実行を終えて空いた状態になるまで待機する間の、アイドル状態の時間も、使用時間には含まれる。このことは、後述の図6A〜6Cに関する説明から明らかである。
さて、ここで図5Aの説明に戻る。上記のようにステップS214でPC経過情報出力処理を行うと、実行中ジョブ確認・予測部208は、続くステップS215で、経過中空きPC数集計の値を経過中空きPC数の分だけ増やす。その後、処理はステップS216に移行する。
そして、ステップS216で実行中ジョブ確認・予測部208は、すべての実行中ジョブを処理したか否かを判断する。すなわち、実行中ジョブ確認・予測部208は、ステップS208で得た実行中ジョブ情報のすべてのエントリについて処理したか否かを判断する。
未処理の実行中ジョブが残っていれば処理はステップS217に移行する。他方、すべての実行中ジョブが処理済ならば処理はステップS218に移行する。
ステップS217で実行中ジョブ確認・予測部208は、ステップS208で得た実行中ジョブ情報の中で次のジョブに注目する。そして、処理はステップS210に戻る。
以上のステップS209〜S217の処理により、研究利用モードで運用中の現時点において運用管理装置100が実際の割り当てを行おうとしている場合は、現時点で実際に実行中のすべてのジョブに関する情報が、実行ジョブ予測情報として記録される。また、研究利用モードでの運用中に運用管理装置100が予約を行おうとしている場合は、予約のための予測対象時刻になってもまだ実行継続中と予測されるジョブに関する情報が、実行ジョブ予測情報として記録される。
よって、実行中ジョブ確認・予測部208は、実行ジョブ予測情報を用いて、新たなジョブの割り当て(またはその予約)のために割くことができないPCを特定することが可能となる。
さて、ステップS218で実行中ジョブ確認・予測部208は、処理モードの値が“reserve”と“assign”のいずれであるかを判断する。処理モードの値が“reserve”のとき、処理はステップS219に移行し、処理モードの値が“assign”のとき、処理は図5BのステップS221に移行する。
すなわち、ステップS219は、研究利用モードにおいて1件以上のジョブを実行中のときに、運用管理装置100が将来の予約を行おうとしている場合に実行される。そして、ステップS219で実行中ジョブ確認・予測部208は、PC管理情報Dc3の全エントリにおける「予約」フィールドをクリアする(値をNULLとする)。つまり、PC管理情報Dc3に前回の予約内容が残っているかもしれないので、実行中ジョブ確認・予測部208は、前回の予約内容を今回の予約内容で上書きする準備として、PC管理情報Dc3の全エントリにおける「予約」フィールドをクリアする。
続いて、ステップS220で実行中ジョブ確認・予測部208は、PC管理情報Dc3の内容をPC予測情報Dc2にコピーする。ただし、「状態」フィールドに関しては、実行中ジョブ確認・予測部208は以下のように動作する。
すなわち、コピー元のPC管理情報Dc3のエントリにおいて、状態の値が“教育利用中”のとき、実行中ジョブ確認・予測部208は、コピー先のPC予測情報Dc2のエントリにおいても状態の値は“教育利用中”と設定する。しかし、コピー元のPC管理情報Dc3のエントリにおいて、状態の値が“教育利用中”以外のとき、実行中ジョブ確認・予測部208は、コピー先のPC予測情報Dc2のエントリにおいて状態の値を“電源OFF”に設定する。
以上の設定により、研究利用モードでの運用中に一部のPCが教育用途に開放されて利用されている場合に、当該一部のPCが引き続き教育用途に利用されることを前提とした予約処理が可能となる。つまり、運用管理装置100は、教育用途に利用されているPCをジョブの割り当て先の候補から除外して、ジョブの割り当ての予約処理を行うことができる。
ステップS220の実行後、処理は図5BのステップS221に移行する。ステップS221〜S231は、ステップS209〜S217の処理により得られた実行ジョブ予測情報の各エントリに関する繰り返し処理である。
まず、ステップS221で実行中ジョブ確認・予測部208は、実行ジョブ予測情報中の1件目のエントリから、ジョブID、キューID、並列数および使用PCリストを得る。
続くステップS222で実行中ジョブ確認・予測部208は、処理モードの値が“assign”と“reserve”のいずれであるかを判断する。処理モードの値が“assign”のとき、処理はステップS223に移行し、処理モードの値が“reserve”のとき、処理はステップS226に移行する。
ステップS223で実行中ジョブ確認・予測部208は、ステップS221または後述のステップS231で得た使用PCリストにPCIDが含まれる各PCについて、PC管理情報Dc3における当該PCのエントリの状態を、“グリッド使用中”に設定する。
次に、ステップS224で実行中ジョブ確認・予測部208は、ステップS221または後述のステップS231で得た使用PCリストにPCIDが含まれるPCに対応する、教室ID、エリアID、スイッチIDそれぞれの集合をPC管理情報Dc3から求める。
例えば、使用PCリストが(Pa15,Pa16,Pb01,Pb02)であるとする。この場合、実行中ジョブ確認・予測部208は、PCIDがこの使用PCリスト内のいずれかの要素と一致するエントリをPC管理情報Dc3内で検索し、4つのエントリを得る。
そして、実行中ジョブ確認・予測部208は、得た4つのエントリから、重複を除いて教室IDを取り出す。すると、{Ra,Rb}という教室IDの集合が得られる。同様にして、実行中ジョブ確認・予測部208は、{Aa1,Ab1}というエリアIDの集合と{Sa2,Sb1}というスイッチIDの集合を得る。
すると、次のステップS225で実行中ジョブ確認・予測部208は、ステップS221または後述のステップS231で得たジョブID、キューID、並列数、使用PCリストと、ステップS224で求めた各IDの集合を対応づけるエントリを作成する。なお、ステップS224で求めた各IDの集合はリストで表されるものとする。つまり、ステップS225で作成されるエントリは、図3Bの情報Deのエントリと同じ形式である。
実行中ジョブ確認・予測部208は、こうして作成したエントリをジョブ・PC管理情報De3に追加する。そして、処理はステップS229に移行する。
他方、ステップS226で実行中ジョブ確認・予測部208は、ステップS221または後述のステップS231で得た使用PCリストにPCIDが含まれる各PCについて、PC管理情報Dc3とPC予測情報Dc2における当該PCのエントリを更新する。具体的には、実行中ジョブ確認・予測部208は、当該PCのエントリにおける「予約」フィールドの値を“あり”に設定する。
次に、ステップS227で実行中ジョブ確認・予測部208は、ステップS221または後述のステップS231で得た使用PCリストにPCIDが含まれるPCに対応する、教室ID、エリアID、スイッチIDそれぞれの集合をPC管理情報Dc3から求める。ステップS227の詳細はステップS224と同様である。
すると、次のステップS228で実行中ジョブ確認・予測部208は、ステップS221または後述のステップS231で得たジョブID、キューID、並列数、使用PCリストと、ステップS227で求めた各IDの集合を対応づけるエントリを作成する。なお、ステップS227で求めた各IDの集合はリストで表されるものとする。つまり、ステップS228で作成されるエントリも、図3Bの情報Deのエントリと同じ形式である。
実行中ジョブ確認・予測部208は、こうして作成したエントリをジョブ・PC予測情報De2に追加する。そして、処理はステップS229に移行する。
ステップS229において実行中ジョブ確認・予測部208は、ステップS221または後述のステップS231で得た使用PCリストに含まれるPCIDの数を、起動済PC数に足し、加算結果を新たな起動済PC数として記憶する。
すると、次のステップS230で実行中ジョブ確認・予測部208は、ステップS209〜S217で作成した実行ジョブ予測情報中のすべてのジョブ(つまりすべてのエントリ)についてステップS222〜S229の処理を行ったか否かを判断する。未処理のジョブが残っていれば、処理はステップS231に移行し、すべてのジョブが処理済ならば、処理はステップS232に移行する。
ステップS231で実行中ジョブ確認・予測部208は、実行ジョブ予測情報中の次のエントリから、ジョブID、キューID、並列数、使用PCリストを得る。そして、処理はステップS222に戻る。
また、ステップS232で実行中ジョブ確認・予測部208は、引数として与えられた研究用PC台数から起動済PC数を減じ、その減算結果を「空きPC数」として記憶する。
そして、次のステップS233で実行中ジョブ確認・予測部208は、処理モードの値が“assign”と“reserve”のいずれであるかを判断する。処理モードの値が“assign”のとき、処理はステップS235に移行し、処理モードの値が“reserve”のとき、処理はステップS234に移行する。
ステップS234で実行中ジョブ確認・予測部208は、「未使用PC経過情報出力処理」を行う。具体的には、実行中ジョブ確認・予測部208は、ジョブの割り当てを受け入れることができるPCのうちで、現時点でジョブを実行していないPCの台数を「未使用PC数」として計算する。そして、実行中ジョブ確認・予測部208は、未使用PC数とステップS202で得た予測用経過時間を対応づけたエントリをPC経過情報Djに追加する。
なお、実行中ジョブ確認・予測部208は、空きPC数から経過中空きPC数集計を減じることで未使用PC数を算出することができる。その理由は次のとおりである。
ジョブを実行する計算サーバとしてシステム101内で利用可能なPC(換言すれば、教育用途に開放されていないPC)の数は、図5A〜5Bの処理に引数として与えられる研究用PC台数である。そして、研究用PC台数のPCのうち、現在ジョブを実行中であり、かつ実行中のジョブを予測対象時刻までに終えられないと予測されるPCの数が、起動済みPC数である。
したがって、研究用PC台数から起動済みPC数を引いて得られる空きPC数は、ジョブを実行する計算サーバとして利用可能なPCのうち、予測対象時刻ではジョブを実行していないと予測されるPCの台数である。具体的には、空きPC数は、現在ジョブを実行中で、かつ実行中のジョブを予測対象時刻までに終えられると予測されるPCの数と、計算サーバとして利用可能だが現在はジョブを実行していないPCの数の和である。
そして、経過中空きPC数集計は、現在はジョブを実行中だが、予測対象時刻までにはジョブを終えると予測されるPCの台数である。よって、空きPC数から経過中空きPC数集計を減じることで、未使用PC数が得られる。換言すれば、未使用PC数は、現在から予測対象時刻まで、予測用経過時間が経過する間ずっと、新たなジョブの割り当て先として利用可能な状態にあるPCの数を示す。
例えば、図3Bに例示のPC経過情報Djのうち、空き時間が予測用経過時間の60分と設定されている3番目の〈4,60〉というエントリは、以上のようにしてステップS234で追加される。そして、以上のようにして実行中ジョブ確認・予測部208が未使用PC経過情報出力処理を行うと、続いて処理はステップS235へと移行する。
ステップS235で実行中ジョブ確認・予測部208は空きPC数を戻り値として返す。そして、実行中ジョブの確認・予約処理が終了する。
なお、こうして戻り値として返される空きPC数は、前述のとおり、ジョブの実行用に利用可能なPCのうち、予測対象時刻ではジョブを実行していないと予測されるPCの台数を示す。したがって、空きPC数は、PC経過情報Djの全エントリのPC数の合計と等しい。
さて、図6A〜6Bは、図4のステップS108で実行される実行候補ジョブ選択処理のフローチャートである。また、図6Cは、実行候補ジョブ選択処理において行われる経過中確保可能空きPC時間算出処理のフローチャートである。
図6AのステップS301で実行候補ジョブ選択部209は、処理モードの値が“assign”と“reserve”のいずれであるかを判定する。処理モードの値が“assign”のとき、処理はステップS302に移行し、処理モードの値が“reserve”のとき、処理はステップS303に移行する。
ステップS302で実行候補ジョブ選択部209は、実行可能ジョブ情報Df3を実行候補ジョブ情報Df1とする(つまり、これ以降は実行候補ジョブ情報Df1として具体的には実行可能ジョブ情報Df3を使うことに決定する)。そして、処理はステップS305に移行する。
また、ステップS303で実行候補ジョブ選択部209は、図3BのパラメタファイルDdから予測用経過時間を得る。図3Bの例では、予測用経過時間は3600秒である。
続くステップS304で実行候補ジョブ選択部209は、実行予測ジョブ情報Df2を実行候補ジョブ情報Df1とする。そして、処理はステップS305に移行する。
ステップS305で実行候補ジョブ選択部209は、「必要PC数」を0に初期化する。必要PC数は、割り当てまたは予約の対象となる個々のジョブの並列数の総和を表すための変数である。必要PC数は、引数として与えられる空きPC数とともに、割り当てまたは予約の対象として新たなジョブをさらに選択する余地があるか否かの判断に使われる。
そして、次のステップS306で実行候補ジョブ選択部209は、「候補ジョブ数」を0に初期化する。候補ジョブ数は、引数として与えられる空きPC数が示すシステム101の余力の範囲内で実行可能なジョブの数を表すための変数である。
続いて、ステップS307で実行候補ジョブ選択部209は、実行候補ジョブ情報Df1を初期化する。すなわち、処理モードが“reserve”のときは実行予測ジョブ情報Df2を、処理モードが“assign”のときは実行可能ジョブ情報Df3を、実行候補ジョブ選択部209は初期化する。なおステップS307での初期化とは、全エントリの削除のことである。
続いてステップS308で実行候補ジョブ選択部209は、ジョブスケジューラ204に問い合わせることにより、実行待ちジョブ件数を得る。
そして、ステップS309で実行候補ジョブ選択部209は、実行待ちジョブ件数が0であるか、それとも1以上であるかを判断する。実行待ちジョブ件数が0のとき、処理はステップS310に移行し、実行待ちジョブ件数が1以上のとき、処理はステップS311に移行する。
ステップS310で実行候補ジョブ選択部209は、戻り値として0を返し、実行候補ジョブ選択処理を終える。すなわち、実行待ちのジョブが存在しなければ、そもそも新たに割り当てや割り当ての予約を行う対象が存在しないので、実行候補ジョブ選択部209は0を返す。
他方、実行待ちのジョブが存在する場合、実行候補ジョブ選択部209はステップS311で、実行待ちの各ジョブについてのエントリを含む情報をジョブスケジューラ204から得る。具体的には、各エントリは、ジョブの優先度と、ジョブIDと、キューIDと、並列数と、ジョブスケジューラ204への投入時刻(つまりジョブ投入コマンドの受付時刻)を対応づけたものである。
実行候補ジョブ選択部209は、ジョブスケジューラ204から得た情報を、優先度を第1ソートキーとし、ジョブスケジューラ204への投入時刻を第2ソートキーとしてソートする。なお、ソート順は、優先度が高いものから低いものへ、投入時刻が古いものから新しいものへ、という順である。
そして、次のステップS312で実行候補ジョブ選択部209は、ソート後の1件目の実行待ちジョブの情報を得る。
続くステップS313で実行候補ジョブ選択部209は、「処理モードが“reserve”でありかつ運用モードが“research”である」という条件が成立するか否かを判断する。そして、この条件が成立するとき、処理はステップS314に移行する。他方、処理モードが“assign”であるか、または運用モードが“educate”のとき、処理はステップS325に移行する。ステップS313の分岐の意味については、後述する。
ステップS314で実行候補ジョブ選択部209は、空きPC数が、ステップS312または後述のステップS327で情報を得たジョブ(以下「当該ジョブ」という)の並列数以上であるか否かを判断する。そして、空きPC数が当該ジョブの並列数以上ならば処理はステップS315に移行する。逆に空きPC数が当該ジョブの並列数未満ならば、予測対象時刻における割り当ての予約を行う対象となりうる実行待ちのジョブはこれ以上存在しないので、処理はステップS328に移行する。
ステップS315で実行候補ジョブ選択部209は、当該ジョブのジョブIDをもとに、当該ジョブの実行予測時間をジョブ実行予測時間情報Daから得る。
そして、次のステップS316で実行候補ジョブ選択部209は、ステップS315で得た当該ジョブの実行予測時間を当該ジョブの並列数に乗じ、得られた積を「ジョブ総予測時間」として記憶する。
すると、次のステップS317で実行候補ジョブ選択部209は、図6Cに示す「経過中確保可能空きPC時間算出処理」を行う。
詳細は図6Cとともに後述するが、経過中確保可能空きPC時間算出処理は、PC経過情報Djに基づいて、「予測対象時刻までの期間中に、何台のPCが、予測対象時刻から遡ってどれだけの時間の間、当該ジョブに割り当て可能なのか」を調べる処理を含む。実行候補ジョブ選択部209は、調べた結果を反映するように、PC経過情報Djのエントリを並べ替える。また、経過中確保可能空きPC時間算出処理の中で、実行候補ジョブ選択部209は、予測対象時刻までの期間中に当該ジョブの実行にかけることが可能な延べ時間を「経過中確保可能空きPC時間」として求め、記憶する。
例えば、PC経過情報Djが図3Bに示したとおりであるとする。そして、実行候補ジョブ選択部209は実行待ちのジョブのうち1件目のジョブに注目しており、当該ジョブは、並列数が14であり実行予測時間が10分であるとする。
すると、実行候補ジョブ選択部209は、ステップS317において「予測対象時刻までの期間中に、14台のPCが、予測対象時刻から遡って最大で30分間、当該ジョブに割り当て可能である」と認識する。また、実行候補ジョブ選択部209は、経過中確保可能空きPC時間として420分(=30分×14並列)と記憶する。
なぜなら、まず、図3BのPC経過情報Djの1つ目の〈12,30〉というエントリが示すように、12台のPCが、予測対象時刻の直前の30分間は利用可能だからである。そして、3つ目の〈4,60〉というエントリが示すように、さらに4台のPCが60分間ずっと利用可能なので、この4台のうちの2台を、60分間のうちの後半30分間、当該ジョブに利用することも当然可能だからである。
そして、当該ジョブの並列数をまかなうには、以上の14台(=12台+2台)で十分であり、図3BのPC経過情報Djの2番目の〈8,20〉というエントリに相当する8台は、当該ジョブの割り当て先として考慮しなくてよい。
実行候補ジョブ選択部209は、以上の認識に基づいて、PC経過情報Djのエントリの順序を並べ替える。具体的に、実行候補ジョブ選択部209は、12台すべてのPCが当該ジョブの割り当て先として考慮の対象になる〈12,30〉というエントリを1番目に並べる。また、実行候補ジョブ選択部209は、4台のうち一部のPCが当該ジョブの割り当て先として考慮の対象になる〈4,60〉というエントリを2番目に並べる。そして、実行候補ジョブ選択部209は、8台のうちどのPCも当該ジョブの割り当て先として考慮の対象にならない〈8,20〉というエントリを最後に並べる。
そして、以上のようなステップS317における経過中確保可能空きPC時間算出処理の実行後、処理はステップS318に移行する。
続くステップS318で実行候補ジョブ選択部209は、ステップS316で記憶したジョブ総予測時間が、ステップS317で記憶した経過中確保可能空きPC時間より長いか否かを判断する。
ジョブ総予測時間が経過中確保可能空きPC時間より長い場合、実行候補ジョブ選択部209は「予測対象時刻までに当該ジョブが終了してしまうことはないだろう」と判断する。この場合、当該ジョブの実行が可能な状況なのか否かを確かめるため、処理はステップS319に移行する。
他方、ジョブ総予測時間が経過中確保可能空きPC時間以下である場合、実行候補ジョブ選択部209は「仮に、当該ジョブが実行されるとしても、予測対象時刻までに当該ジョブは終了するだろう」と予測する。そして、この予測に基づき、実行候補ジョブ選択部209は「当該ジョブは予測対象時刻における予約の対象から外してよい」と判断する。そこで、予測対象時刻における予約の対象として別のジョブを検討する前に、「空きPC数に数えられるPCの予測対象時刻までの状況が当該ジョブの実行によりどう変化するか」ということをPC経過情報Djに反映するため、処理はステップS324に移行する。
さて、ステップS319で実行候補ジョブ選択部209は、引数として与えられた空きPC数を、必要PC数と当該ジョブの並列数の和と比較する。
空きPC数が、必要PC数と当該ジョブの並列数の和以上であれば、当該ジョブを実行する余力がシステム101にあり、当該ジョブは、予測対象時刻における予約の対象となる可能性がある。そこで、「空きPC数に数えられるPCの予測対象時刻までの状況が当該ジョブの実行によりどう変化するか」ということをPC経過情報Djに反映するため、処理はステップS320に移行する。
他方、空きPC数が、必要PC数と当該ジョブの並列数の和未満であれば、当該ジョブを実行する余力がシステム101にはないため、処理はステップS328に移行する。
さて、ここで、説明の便宜上、ステップS320とS324について具体例を挙げてまとめて説明し、その後でステップS321〜S323の説明に移ることにする。
ここでは、具体的に以下の状況を例としてステップS320とS324について説明する。すなわち、実行待ちの1件目のジョブは、ステップS317に関して例示したように、並列数が14で実行予測時間が10分とする。また、実行待ちの2件目のジョブは、並列数が8で実行予測時間が15分、実行待ちの3件目のジョブは、並列数が4で実行予測時間が60分であるとする。
この3つの実行待ちジョブを処理する例を用いて、ステップS320の「ジョブ継続実行用更新処理」と、ステップS324の「ジョブ終了用更新処理」の動作について以下に説明する。なお、実行待ちジョブの順序に応じて説明する関係上、「ジョブ終了用更新処理」、「ジョブ継続実行用更新処理」の順に説明する。
当該ジョブが1件目の実行待ちジョブである場合、ステップS324で実行候補ジョブ選択部209は、ジョブ終了用更新処理を行う。ジョブ終了用更新処理は、「予測対象時刻までに実行が完了する」と予測された当該ジョブに関してPC経過情報Djを更新する処理である。つまり、ジョブ終了用更新処理は、「当該ジョブを実行したとすると、空きPC数に数えられるPCの予測対象時刻までの状況は、どのように変わるか」ということをPC経過情報Djに反映する処理である。
具体的には、実行候補ジョブ選択部209は、エントリ中の空き時間を更新する処理を1番目のエントリから順に行い、空き時間を減じたエントリにおけるPC数の和が当該ジョブの並列数に達したところで処理を止める。また、必要に応じて、実行候補ジョブ選択部209は、PC経過情報Djにエントリを追加する。
例えば、ステップS317に関する上記の例の場合、PC経過情報Djが3つのエントリを有する。そして、ステップS317での並べ替えの結果、1番目のエントリは〈12,30〉、2番目のエントリは〈4,60〉、3番目のエントリは〈8,20〉である。そして、実行候補ジョブ選択部209が当該ジョブとして注目している1件目の実行待ちジョブは、並列数が14であり実行予測時間が10分である。
この場合、12<14<12+4なので、PC経過情報DjのエントリにおけるPC数の和が当該ジョブの並列数である14に達するのは、2番目のエントリにおいてである。そして、2番目のエントリまでの範囲で、空き時間の最小値は30分である。
よって、上記の並び順は、「1番目と2番目のエントリに対応するPCは、予測対象時刻の直前の最大30分間は、当該ジョブのために利用可能である」ということを示している。例えば、予測対象時刻が22時であれば、1番目と2番目のエントリに対応するPCは、21時30分から当該ジョブのために利用可能である。そして、当該ジョブの実行予測時間は前記のとおり10分である。
よって、上記の利用可能な30分から当該ジョブの実行予測時間である10分を減じた残りの20分が、14台のPCに当該ジョブを割り当てたときの、それら14台のPCにとっての新たな空き時間となる。つまり、14台のPCが、21時30分からの10分間、当該ジョブの実行のために利用されると、14台のPCの空き時間は、21時40分から予測対象時刻である22時までの20分間になる。
なお、以上の説明から明らかなとおり、2番目の〈4,60〉というエントリに対応する4台のPCのうち当該ジョブの割り当て先として予測される2台に関しては、最初の30分間はどのジョブも実行しないという仮定のもとに、以後の処理が行われることになる。つまり、「21時から、1番目の〈12,30〉というエントリに対応する12台が空く21時30分までの30分間は、この2台のPCは、どのジョブも実行しないアイドル状態とする」という前提のもと、以後の処理が行われる。したがって、この2台に関しては、21時30分からの10分間で当該ジョブを実行した後、22時までの残りの20分が、他のジョブの割り当てが可能な空き時間として残されるのであり、50分(=60分−10分)が新たな空き時間となるわけではない。
実行候補ジョブ選択部209は、上記のような空き時間の変化をPC経過情報Djに反映するため、具体的には次のような処理を行う。
実行候補ジョブ選択部209は、まず、当該ジョブの割り当てによって減少した後の空き時間を計算する。すなわち、実行候補ジョブ選択部209は、ステップS317で計算した経過中確保可能空きPC時間を当該ジョブの並列数で割り、得られた商から当該ジョブの実行予測時間を減じる。その結果、例えば上記の例であれば、20分(=420分÷14並列−10分)という新たな空き時間が得られる。
そして、実行候補ジョブ選択部209は、1番目の〈12,30〉というエントリの空き時間を上記のようにして計算した新たな空き時間に設定しなおす。つまり、実行候補ジョブ選択部209は1番目のエントリを〈12,20〉と更新する。
また、実行候補ジョブ選択部209は、2番目の〈4,60〉というエントリに関しては、このエントリ自身を〈2,20〉と更新するとともに、新たな〈2,60〉というエントリをPC経過情報Djに追加する。なお、3番目のエントリは〈8,20〉に関しては、実行候補ジョブ選択部209は何も行わない。
すなわち、実行候補ジョブ選択部209は、エントリの空き時間を、上記のようにして計算した新たな空き時間に上書き更新する処理を、上書き更新したエントリのPC数が当該ジョブの並列数に達するまで行う。
正確には、あるエントリ(上記の例では2番目のエントリ)までのPC数の和が当該ジョブの並列数を超える場合は、実行候補ジョブ選択部209は、PC数の和が当該ジョブの並列数を超える当該エントリを更新し、さらに、エントリの追加も行う。すなわち、実行候補ジョブ選択部209は、当該エントリ(上記の例では2番目のエントリ)を、当該ジョブへの割り当ての対象となる台数(上記の例では14台−12台=2台)と計算した新たな空き時間(上記の例では20分)とを対応づけるよう、更新する。そして、実行候補ジョブ選択部209は、残りの台数(上記の例では4台−2台=2台)を当該エントリの元の空き時間(上記の例では60分)と対応づける新たなエントリを、PC経過情報Djに追加する。
以上のジョブ終了用更新処理により、PC経過情報Djは、例えば上記の例の場合は、〈12,20〉、〈2,20〉、〈2,60〉、〈8,20〉という4つのエントリを有することになる。そして、以上のようにステップS324で実行候補ジョブ選択部209がジョブ終了用更新処理を行うと、処理はステップS326に移行する。
さて、以上説明したステップS324のジョブ終了用更新処理は、ステップS318において、ジョブ総予測時間が経過中確保可能空きPC時間以下であると判明した場合に実行される処理である。他方、ジョブ総予測時間が経過中確保可能空きPC時間より長いとステップS318で判明した場合、ステップS319の条件判定を経て、もし空きPC数が必要PC数と当該ジョブの並列数の和以上であれば、S320のジョブ継続実行用更新処理が実行される。つまり、実行候補ジョブ選択部209がステップS320のジョブ継続実行用更新処理を実行するのは、ステップS318において、「予測対象時刻までに当該ジョブが終了してしまうことはないだろう」と判断した場合のみである。
以下、ステップS320のジョブ継続実行用更新処理について、ステップS324についての上記の例を引き続き参照して説明する。なお、具体的には、実行待ちジョブの処理が進み、実行候補ジョブ選択部209が3件目の実行待ちジョブを当該ジョブとして処理する例を用いてジョブ継続実行用更新処理について説明する。
当該ジョブが3件目の実行待ちのジョブである場合は、ステップS320で実行候補ジョブ選択部209は、ジョブ継続実行用更新処理を行う。ジョブ継続実行用更新処理は、「予測対象時刻までには実行が完了しない」と予測された当該ジョブに関してPC経過情報Djを更新する処理である。つまり、ジョブ継続実行用更新処理は、「当該ジョブを実行したとすると、空きPC数に数えられるPCの予測対象時刻までの状況は、どのように変わるか」ということをPC経過情報Djに反映する処理である。
ジョブ継続実行用更新処理において、実行候補ジョブ選択部209は、ステップS317の経過中確保可能空きPC時間算出処理によってエントリの順序を並べ替えたPC経過情報Djを、1番目のエントリから順に処理してゆく。具体的には、実行候補ジョブ選択部209は、エントリ中のPC数を減じる処理を1番目のエントリから順に行い、減じたPC数の和が当該ジョブの並列数に達したところで処理を止める。
PC経過情報Djは、実行候補ジョブ選択部209が2件目の実行待ちのジョブについての処理を終えた時点で、〈8,5〉と〈8,20〉と〈4,20〉と〈2,20〉と〈2,60〉という5つのエントリを有している。一方、3件目の実行待ちのジョブでは、ステップS316で240分(=60分×4並列)がジョブ総予測時間として得られている。
なお、この5つのエントリの中で最も長い空き時間は、〈2,60〉というエントリの60分であり、当該ジョブの実行予測時間である60分以上である。しかし、〈2,60〉というエントリに対応する2台のPCだけでは、当該ジョブの並列数の4に満たない。ステップS317では、当該ジョブの並列数に相当する4台のPCを確保することが可能な最長の時間が、結局は20分のみであることが判明する。
つまり、ステップS317では、経過中確保可能空きPC時間として80分(=20分×4並列)が得られる。実際に、例えば、〈8,20〉というエントリで示される8台のPCのうちの4台が、当該ジョブのために20分間利用可能である。
そして、実行候補ジョブ選択部209は、ステップS317でさらに、この〈8,20〉というエントリが先頭に来るように、PC経過情報Djのエントリを並べ替える。
以下では説明の便宜上、例えば、〈8,20〉、〈4,20〉、〈8,5〉、〈2,60〉、〈2,20〉という順序にPC経過情報Djのエントリが並べ替えられたとする。
そして、この場合、240分は80分より長い。また、図5BのステップS235に関して説明したように、図6Aの処理の開始時点で、空きPC数は、PC経過情報Djの全エントリのPC数の合計と等しいので、現在注目している例の場合、空きPC数は24(=12+8+4)である。よって、当該ジョブが3件目の実行待ちのジョブである場合、ステップS318とS319の条件判定を経て、ステップS320が実行される。
具体的には、ステップS320で実行候補ジョブ選択部209は、PC経過情報Djのエントリ中のPC数を減じる処理を、減じたPC数の和が当該ジョブの並列数に達するまで行う。
この場合、4<8なので、PC経過情報DjのエントリにおけるPC数の和が当該ジョブの並列数である4に達するのは、1番目のエントリにおいてである。よって、実行候補ジョブ選択部209は1番目のエントリを〈4,20〉と更新し、2〜5番目のエントリに対しては何も行わない。この更新により減じられるPC数は、全体として4である。
なお、別の例として、当該ジョブの並列数が10である場合についても説明しておく。この場合、実行候補ジョブ選択部209は、1番目のエントリはPC数を8減じて〈0,20〉と更新し、2番目のエントリはPC数を2(=10−8)減じて〈2,20〉と更新する。
つまり、実行候補ジョブ選択部209は、減じたPC数の和が並列数と等しくなるように、1番目のエントリから順に、エントリ中のPC数を減じる処理を行う。そして、減じたPC数の和が当該ジョブの並列数に達したら、残りのエントリについては、実行候補ジョブ選択部209はステップS320では何も行わない。
以上のようにステップS320で実行候補ジョブ選択部209がジョブ継続実行用更新処理を行うと、処理はステップS321に移行する。
ステップS321で実行候補ジョブ選択部209は、必要PC数に当該ジョブの並列数を足し、加算結果を新たな必要PC数として記憶する。
そして、次のステップS322で実行候補ジョブ選択部209は、当該ジョブの情報を実行候補ジョブ情報Df1に追加する。具体的には、実行候補ジョブ選択部209は、当該ジョブのジョブIDとキューIDと並列数を対応づけたエントリを、実行候補ジョブ情報Df1に追加する。
さらに、次のステップS323で実行候補ジョブ選択部209は、候補ジョブ数を1だけ増やす。そして、処理はステップS326に移行する。
ここで、ステップS313の分岐の説明に戻る。ステップS313において、処理モードが“assign”であるか、または運用モードが“educate”であると判明した場合、上記のようにステップS325の処理が行われる。
具体的には、ステップS325で実行候補ジョブ選択部209は、引数として与えられた空きPC数を、必要PC数と当該ジョブの並列数の和と比較する。ステップS325の比較はステップS319の比較と同様である。
空きPC数が、必要PC数と当該ジョブの並列数の和以上であれば、当該ジョブを実行する余力がシステム101にあり、当該ジョブは、実行の対象となる可能性がある。そこで、必要PC数を更新し、当該ジョブの情報を実行候補ジョブ情報Df1に追加し、候補ジョブ数を数えるため、処理はステップS321に移行する。
逆に、空きPC数が、必要PC数と当該ジョブの並列数の和未満であれば、当該ジョブを実行する余力がシステム101はないため、処理はステップS328に移行する。
ところで、ステップS326の処理は、上記のとおり、ステップS324の実行後か、ステップS319とS320を経てのステップS321〜S323の実行後か、またはステップS325を経てのステップS321〜S323の実行後に行われる。そのステップS326で実行候補ジョブ選択部209は、ステップS311で情報を得たすべての実行待ちジョブについて、ステップS313以降の処理が済んだか否かを判断する。未処理の実行待ちジョブが残っていれば、処理はステップS327に移行し、すべての実行待ちジョブについて処理済であれば、処理はステップS328に移行する。
ステップS327で実行候補ジョブ選択部209は、ステップS311でソートした情報から、現在注目しているジョブのエントリの次のエントリ(つまり次の実行待ちジョブの情報)を得る。そして、処理はステップS313に戻る。
また、ステップS328で実行候補ジョブ選択部209は、候補ジョブ数を戻り値として返し、実行候補ジョブ選択処理を終える。
以上の実行候補ジョブ選択処理によれば、ステップS311でソートされた順位が高いものから、空きPC数が示す余力の範囲内で最大限のジョブが選択される。
例えば、上記のステップS320などの例とは異なる例として、現在ジョブスケジューラ204において7つのジョブが実行待ちであり、ステップS311でソートされた順にそれぞれの並列数を挙げると4、4、16、8、4、16、8であるとする。また、説明の簡単化のため、処理モードが“assign”であるか、またはどのジョブの実行予測時間も予測用経過時間より長いものとし、空きPC数が48であるとする。
この場合、ソート順が5位までの5つのジョブの並列数の和は36であり48以下だが、ソート順が6位のジョブの並列数を36に足すと52となり48を超えてしまう。よって、ソート順が5位までの5つのジョブが割り当てまたは予約の対象として実行候補ジョブ情報Df1に追加される。なお、ソート順が7位のジョブの並列数を36に足しても48以下ではあるが、6位のジョブが対象から外されるため7位以下のジョブは自動的に対象から外される。
また、ステップS313の場合分けについて意味を補足説明すると、次のとおりである。
処理モードが“assign”の場合は、実行待ちのジョブは、割り当て可能なPCさえあれば、すべて割り当ての対象となる。
他方、処理モードが“reserve”の場合は、もし運用モードが“research”であれば、実行待ちのジョブのすべてが予約の対象となるとは限らない。よって、実行候補ジョブ選択部209は、予測対象時刻までに終了してしまいそうなジョブを、割り当ての予約を行う対象から除外する。換言すれば、実行候補ジョブ選択部209は、現在は実行待ちだが予測対象時刻には実行待ちではなくなっていそうなジョブを予約の対象から除外する。
しかし、処理モードが“reserve”の場合であっても、もし運用モードが“educate”であれば、実行待ちのジョブは、割り当て可能なPCさえあれば、すべて予約の対象となる。なぜなら、運用モードが“educate”ならば、予測対象時刻は常に図3BのパラメタファイルDdに規定されているグリッド運用開始時刻であり、現在から予測対象時刻までの間にジョブが実行されることはないからである。つまり、「現在は実行待ちだが、予測対象時刻には実行待ちではなくなっている」と予測可能なジョブは、運用モードが“educate”の場合には存在しないからである。よって、予約の対象から除外するジョブは存在しない。
もちろん、実際には、教育利用モードでの運用期間中に、実行待ちのジョブが端末機105からキャンセルされることはありうる。しかし、特定のジョブがグリッド運用開始時刻までにキャンセルされるか否かは、予測不能である。よって、ステップS313の判断基準は、上記のように「処理モードが“reserve”で、かつ運用モードが“research”であるか否か」なのである。
続いて、図6Cを参照して、図6AのステップS317で実行される経過中確保可能空きPC時間算出処理の詳細を説明する。なお、図6A〜6Bでの説明と同様に、以下の図6Cの説明においても、図6AのステップS317で実行候補ジョブ選択部209が注目しているジョブのことを「当該ジョブ」という。
ステップS331で実行候補ジョブ選択部209は、「経過中確保可能空きPC時間リスト」を空に初期化する。
そして、次のステップS332で実行候補ジョブ選択部209は、PC経過情報Djのエントリの並び順のすべてのパターンを作成する。なお、以下では説明の便宜上、ステップS332で作成されたn番目のパターンを「第nパターンPC経過情報」という。
例えば、図3Bの例のようにPC経過情報Djが3つのエントリを有する場合、エントリの並び順は6(=3!)通りある。よって、ステップS332で実行候補ジョブ選択部209は、6通りのパターンを作成する。
続くステップS333で実行候補ジョブ選択部209は、ステップS332で作成したパターンを順に数えるための変数nの値を1に初期化する。そして、処理はステップS334に移行する。
ステップS334で実行候補ジョブ選択部209は、第nパターンPC経過情報にしたがって「第n経過中確保可能空きPC時間」を算出する。
具体的には、実行候補ジョブ選択部209は、第nパターンPC経過情報におけるエントリの並び順にしたがって、1番目のエントリから順に注目する。そして、実行候補ジョブ選択部209は、1番目のエントリから、PC数の合計が当該ジョブの並列数以上になるエントリまでの範囲で、空き時間の最小値を求め、求めた最小値と当該ジョブの並列数の積を、第n経過中確保可能空きPC時間として算出する。なお、すべてのエントリのPC数の合計が当該ジョブの並列数に満たない場合は、実行候補ジョブ選択部209は、第n経過中確保可能空きPC時間を0に設定する。
例えば、第nパターンPC経過情報が、〈8,20〉、〈12,30〉、〈4,60〉という順に並んだ3つのエントリを有するとし、当該ジョブの並列数を14とする。すると、8<14<8+12なので、PC数の合計が当該ジョブの並列数以上になるエントリは2番目のエントリである。そして、1番目のエントリから2番目のエントリまでの範囲で空き時間の最小値は、1番目のエントリにおける20分である。よって、実行候補ジョブ選択部209は、420分(=20分×14並列)を第n経過中確保可能空きPC時間として算出する。
この例は、次のことを示す。すなわち、1番目のエントリに対応する8台のPCと2番目のエントリに対応するPCのうちの6台との合計14台のPCに当該ジョブを割り当て、なるべく早く当該ジョブの実行を開始することにすると、当該ジョブの開始時刻は、予測対象時刻の20分前となる。
以上のようにしてステップS334で実行候補ジョブ選択部209が第n経過中確保可能空きPC時間を算出すると、処理はステップS335に移行する。そして、ステップS335において、実行候補ジョブ選択部209は、経過中確保可能空きPC時間リストに、ステップS334で算出した第n経過中確保可能空きPC時間を加える。
そして、次のステップS336で実行候補ジョブ選択部209は、ステップS332で作成したPC経過情報Djのすべてのパターンについて処理したか否かを判断する。
すなわち、変数nの値がPC経過情報Djのエントリ数の階乗に達していれば、すべてのPC経過情報Djのパターンについて処理済みなので、処理はステップS338に移行する。逆に、変数nの値がPC経過情報Djのエントリ数の階乗未満ならば、未処理のパターンが残っているので、処理はステップS337に移行する。
ステップS337で実行候補ジョブ選択部209は変数nの値を1増やす。そして、処理はステップS334に戻る。
また、ステップS338で実行候補ジョブ選択部209は、経過中確保可能空きPC時間リストから最大値を求め、求めた最大値を「経過中確保可能空きPC時間」として記憶する。
例えば、PC経過情報Djが図3Bに示した3つのエントリを含む場合、経過中確保可能空きPC時間リストは、6(=3!)通りのパターンに対応する6つの値を要素として含む、(280,420,280,280,420,280)というリストである。よって、この例での経過中確保可能空きPC時間は、420分である。
そして、ステップS338の後、処理はステップS339に移行する。ステップS339で実行候補ジョブ選択部209は、経過中確保可能空きPC時間リストの中で、ステップS338で経過中確保可能空きPC時間として記憶した最大値が何番目の要素にあたるかという位置を求め、求めた位置を変数mとして記憶する。
そして、次のステップS340で実行候補ジョブ選択部209は、PC経過情報Djに第mパターンPC経過情報の内容をコピーする。
すなわち、ステップS339によれば、PC経過情報Djのすべてのパターンのうちの第mパターンPC経過情報にしたがって算出した第m経過中確保可能空きPC時間が、予測対象時刻までの期間の中で当該ジョブの実行に費やせる最長の時間を表す。換言すれば、第mパターンPC経過情報は、最も早く当該ジョブの実行を開始することができる場合に対応し、第m経過中確保可能空きPC時間は、最も早く当該ジョブの実行を開始するとしたら開始時刻が予測対象時刻のどれだけ前になるかを示す。
よって、ステップS340で実行候補ジョブ選択部209は、第mパターンPC経過情報でPC経過情報Djを置き換える。その結果、PC経過情報Djは、最長の時間(つまり経過中確保可能空きPC時間として記憶している時間)を当該ジョブに割り当てるのに適した順序でエントリが並んだ状態となる。
以上のようにして、図6Cの経過中確保可能空きPC時間算出処理により、経過中確保可能空きPC時間が計算され、PC経過情報Djのエントリが並べ替えられる。
続いて、図7A〜7Cを参照して、図4のステップS112で実行されるPC決定処理について説明する。なお、図7A〜7Cのフローチャートを参照して処理の流れをひととおり先に説明してから、具体例を挙げて説明する。
図7AのステップS401で評価部211は、引数として与えられた処理モードに応じて、以降のステップで使用する情報を設定する。具体的には、処理モードの値が“assign”の場合、評価部211は、以降のステップで使用する情報を次の(h1)〜(h5)のように決める。
(h1)PC情報Dc1としてPC管理情報Dc3を用いること。
(h2)ジョブ・PC情報De1としてジョブ・PC管理情報De3を用いること。
(h3)ジョブパターン群Dg1として実行ジョブパターン群Dg3を用いること。
(h4)ジョブパターン別ジョブ・PC情報Dex1としてジョブパターン別ジョブ・PC管理情報Dex3を用いること。
(h5)ジョブパターン別PC情報Dcx1としてジョブパターン別PC管理情報Dcx3を用いること。
他方、処理モードの値が“reserve”の場合、評価部211は、以降のステップで使用する情報を次の(i1)〜(i5)のように決める。
(i1)PC情報Dc1としてPC予測情報Dc2を用いること。
(i2)ジョブ・PC情報De1としてジョブ・PC予測情報De2を用いること。
(i3)ジョブパターン群Dg1として予測ジョブパターン群Dg2を用いること。
(i4)ジョブパターン別ジョブ・PC情報Dex1としてジョブパターン別ジョブ・PC予測情報Dex2を用いること。
(i5)ジョブパターン別PC情報Dcx1としてジョブパターン別PC予測情報Dcx2を用いること。
そして、次のステップS402で評価部211は、引数として与えられたジョブパターンIDが示すジョブパターンの評価点を0に初期化する。より正確には、式(1)に関して説明したようにジョブパターンIDは割り当てパターンを決定するための方針を表し、評価点は割り当てパターンに対する評価を示すが、以下では表記の簡便のため「ジョブパターンの評価点」のようにいう。
なお、ジョブパターンP=〈J1,J2,…,Jn〉の評価点を「Eval(P)」と記すことにすると(n≧1)、本実施形態における評価点Eval(P)は式(14)で定義される。
なお、式(1)〜(8)に関連して説明したように、Para(Jh)はジョブJhの並列数であり、Alloc(Jh,P)はジョブパターンPにしたがって割り当てを行う場合のジョブJhの割り当て先のPCの集合である。本実施形態のPC決定処理によれば、同じジョブでもジョブパターンに応じて割り当て先が異なることがあるので、ジョブの割り当て先のPCの集合を表すのに、Alloc(Jh,P)のようにジョブパターンIDも引数に含めている。
また、式(14)内で使われているSat(Alloc(Jh,P))は、ジョブJhの割り当て先のPCの集合Alloc(Jh,P)に対して定義される「満足度」である。
本実施形態の満足度は、1から5の値をとり、最も満足な状態が満足度5であり、最も不満な状態が満足度1である。具体的には、PCの集合Aに対して満足度Sat(A)は次の(j1)〜(j5)のように定義される。
(j1)集合Aに含まれるすべてのPCが、同じ教室に設置されており、かつ、同じスイッチに接続されており、かつ、同じエリアに設置されているとき、満足度Sat(A)は5である。
(j2)集合Aに含まれるすべてのPCが、同じ教室に設置されており、かつ、同じスイッチに接続されているが、集合Aの中の中には互いに異なるエリアに設置されているPCが存在するとき、満足度Sat(A)は4である。
(j3)集合Aに含まれるすべてのPCが、同じ教室に設置されており、かつ、同じエリアに設置されているが、集合Aの中の中には互いに異なるスイッチに接続されているPCが存在するとき、満足度Sat(A)は3である。
(j4)集合Aに含まれるすべてのPCが同じ教室に設置されているが、集合Aの中の中には、互いに異なるエリアに設置されているPCが存在し、かつ、互いに異なるスイッチに接続されているPCも存在するとき、満足度Sat(A)は2である。
(j5)集合Aに含まれるPCの中に、互いに異なる教室に設置されているPCが存在するとき、満足度Sat(A)は1である。
また、式(14)における関数fは、次の式(15)のように、ジョブの並列数pと満足度sを引数として当該ジョブに関する「満足度評価」を示す関数である。
f(p,s)=Pt(p,s)・p (15)
すなわち、本実施形態の満足度評価は、並列数pと満足度sの組み合わせに応じて定義される配点Pt(p,s)と、並列数pとの積で表される。なお、本実施形態では、評価点Eval(P)は、値が大きいほど評価が高いことを示すので、関数f(p,s)としては、並列数pに対して単調増加であり、かつ満足度sに対しても単調増加であるような、任意の関数を用いることができる。
また、本実施形態の配点Pt(p,s)は、図3BのパラメタファイルDd内の評価テーブルに定義されている。例えば、並列数p=12かつ満足度s=3の場合、並列数が9〜16で満足度が3のエントリの配点フィールドには5という値が定義されているので、Pa(12,3)=5である。
図7AのステップS402で0に初期化された評価点は、PC決定処理の進行につれて評価部211により更新されてゆき、PC決定処理の終了時には式(14)で定義される値が設定された状態となる。
さて、次のステップS403で評価部211は、PC情報Dc1(具体的にはステップS401で使うことに決めたPC予測情報Dc2またはPC管理情報Dc3)をジョブパターン別PC情報Dcx1にコピーする。より詳しくは、評価部211は、ジョブパターン別PC情報Dcx1のうちの、引数として与えられたジョブパターンIDに対応する部分として、PC情報Dc1をコピーする。
例えば、引数として与えられたジョブパターンIDの値が“P049”の場合、ステップS403では、PC情報Dc1のコピーが“P049”と対応づけられて、ジョブパターン別PC情報Dcx1の一部として記憶される。
続くステップS404で評価部211は、ジョブパターン別ジョブ・PC情報Dex1を初期化する。より正確には、評価部211は、ジョブパターン別ジョブ・PC情報Dex1のうち、ジョブパターンIDに対応する部分を、何もエントリを持たない状態に初期化する。
続くステップS405から図7CのステップS439までは、ジョブパターンIDで識別されるジョブパターンに含まれる各ジョブについての繰り返し処理である。なお、PC決定処理における「割り当て」は、言うまでもないが、「最終的な割り当てパターンとして決定する」という意味ではなく、「あるジョブパターンに対応する割り当てパターンを、割り当てパターンの候補の一つとして、決定する」という意味である。また、ステップS405〜S439の繰り返し処理の概要は、次のとおりである。
すなわち、ステップS406〜S416は、ジョブパターンの中で注目しているジョブ(以下「当該ジョブ」という)の割り当て先のPCを順々に決めていくにあたり、どのPCを先頭とするのが良さそうかを判断する処理である。また、ステップS417は、ある順序にしたがって先頭のPCから順々に、当該ジョブの並列数の分のPCに当該ジョブを割り当てる処理である。
そして、ステップS418は例外処理のためのステップである。その後のステップS419〜S431は、割り当てた結果の当該ジョブの満足度評価を求める処理であり、ステップS432〜S437は割り当て方を記録する処理である。ステップS438とS439は繰り返し制御のためのステップである。
概ね以上のようにして各ジョブについての繰り返し処理を行うことで、評価部211は、最終的な評価点を得る。以下にその詳細を説明する。
評価部211はステップS405で、ジョブパターンIDにより識別されるジョブパターンの情報(つまり、ジョブパターン群Dg1のうちジョブパターンIDに対応する部分)から1件目のジョブの情報を読み込む。具体的には、評価部211はジョブの情報として、ジョブIDとキューIDと並列数を取得する。
例えば、ジョブパターンIDの値が“P049”のとき、図3Cの例では1件目のジョブはジョブJcである。よって、ステップS405では、ジョブIDとして“Jc”が取得され、キューIDとして“Q16”が取得され、並列数として16が取得される。
続いてステップS406で評価部211は、図3Cのキュー・PC定義情報Dhにおいて、ステップS405または後述のステップS439で読み込んで取得したキューIDと対応づけられているPCリストを、「キュー割り当てPC情報」として記憶する。
例えば、上記の例のようにキューIDの値が“Q16”のとき、評価部211は、図3Cのキュー・PC定義情報Dhの1番目のエントリから、式(16)に示す40個のPCIDを含むPCリストを得て、キュー割り当てPC情報として記憶する。
(Pa01,Pa02,Pa03,Pa04,
Pa05,Pa06,Pa07,Pa08,
Pa09,Pa10,Pa11,Pa12,
Pa13,Pa14,Pa15,Pa16,
Pb01,Pb02,Pb03,Pb04,
Pb05,Pb06,Pb07,Pb08,
Pc09,Pc10,Pc11,Pc12,
Pc13,Pc14,Pc15,Pc16,
Pc17,Pc18,Pc19,Pc20,
Pc21,Pc22,Pc23,Pc24) (16)
そして、次のステップS407で評価部211は、ジョブパターン別PC情報Dcx1のうち、引数として与えられたジョブパターンIDに対応する部分から、キュー割り当てPC情報にPCIDが含まれるPCのエントリを読み出す。例えば、キューIDの値が“Q16”の場合は、式(16)に対応する40個のエントリが読み出される。
そして、評価部211は、読み出したエントリを所定の基準でソートし、ソート結果を「キュー対応PC情報」として記憶する。
なお、ステップS407におけるソートの目的は、システム101内の計算サーバ間を接続するネットワークにおいて同じ構成単位に属するPCのエントリ同士が隣り合うように、キュー対応PC情報のエントリを並べるためである。そのようにエントリを並べることで、式(14)の評価点がある程度の水準以上の割り当て方のみを評価の対象とすることが可能になる。
つまり、1つのジョブの割り当て先として、潜在的にはランダムに複数のPCを選ぶことも可能ではあるが、ランダムな選択をした場合の式(14)の評価点は、上記(j1)〜(j5)の満足度の定義から理解されるように、一般的には低い。そこで、評価部211は、同じ構成単位に属するPCのエントリ同士が隣り合うようにソートすることで、同じ構成単位に属するPCが1つのジョブの割り当て先として選ばれやすいようにし、ひいては式(14)の評価点がある程度の水準を保つようにしている。
具体的に、本実施形態では上記の所定の基準として、「第1ソートキーは教室ID、第2ソートキーはエリアID、第3ソートキーはスイッチID、第4ソートキーはPCIDであり、各ソートキーによって昇順にソートする」という基準が使われる。もちろん、実施形態に応じて、ソートキーごとに昇順と降順を適宜定めることもできるが、本実施形態では以下の理由から、このような基準を用いている。
本実施形態では、システム101内の計算サーバ間を接続するネットワークの構成単位が、2層に階層化されている。つまり、1つの教室は、1つのブロードキャストドメインという上位層の構成単位に相当する。そして、下位層の構成単位は、同じスイッチに接続されているPCの集合であり、したがって、図1に示すように上位層の構成単位の各々は下位層の構成単位を1つ以上含んでいる。
ネットワークの構成単位がこのような階層化されている本実施形態においては、上位層の構成単位を識別する教室IDが、下位層の構成単位を識別するスイッチIDよりも優位のソートキーとして使われる。また、個々の計算サーバを識別するIDとしてのPCIDは、ソートキーに含める必要はないが、本実施形態ではデータの具体例をより分かりやすく説明するために、PCIDもソートキーとして用いるものとする。なお、PCIDは、ソートキーとして用いる場合は常に最劣位のソートキーとする。
また、空調機と1対1に対応するエリアを識別するエリアIDは、ネットワークの構成単位とは独立した、空調という観点からの構成単位を識別するIDである。そして、上記の基準では、エリアIDが第2ソートキーとして使われるが、その理由は、図1の配置では「同じスイッチに接続されているPCは同じエリアに属する」という包含関係と「各教室は1つ以上のエリアを含む」という包含関係が成立するからである。
このような包含関係が成立する実施形態においては、包含する側の構成単位に対応するIDを、包含される側の構成単位に対応するIDよりも優位のソートキーとして用いるとよい。実施形態によっては、例えばネットワークに関する構成単位と空調に関する構成単位との間で必ずしも包含関係が成立しないこともあり、その場合は、ソートキーの順序は任意である。
なお、各種のIDの名前付けの体系によっては、ステップS407において異なるソートキーを利用しても、意味的に差のないソート結果を得ることができる場合がある。例えば、図1の例ではPCIDが各種の包含関係を反映した値である。よって、PCIDのみをソートキーとして用いても、上記の例のように3つのソートキーを用いた場合と意味的に差のないソート結果が得られる。
さて、続くステップS408からS416の処理は、ステップS405または後述のステップS439で情報を読み込んだ当該ジョブの割り当て先のPCのうち先頭のものを決定する処理である。
本実施形態では、システム101内のPCは決められた順序で順序づけられており、後述のステップS417において評価部211は、その順序にしたがって先頭のPCから順に当該ジョブの並列数の分のPCを当該ジョブに割り当てようとする。その準備のため、ステップS408からS416で評価部211は、なるべく適切なPCを先頭のPCとして選ぶ。なお、ここでの「決められた順序」とは、ステップS407でのソートの基準と同じ基準によってシステム101内のすべてのPCをソートしたと仮定したときの順序である。
ステップS408で評価部211は、ステップS407で記憶したキュー対応PC情報から〈教室ID,エリアID,スイッチID〉のすべての組み合わせを得て、ステップS407と同様の所定の基準でソートする。評価部211は、ソートした結果を「PCグループ情報」として記憶する。なお、ここで「ステップS407と同様」と述べたが、正確には、〈教室ID,エリアID,スイッチID〉の組み合わせはPCIDと無関係なので、ステップS407での第4ソートキーであるPCIDはステップS408では使われない。
例えば、ステップS406でキューIDが“Q16”のとき、ステップS407では式(16)の40台のPCに関するエントリがキュー対応PC情報にコピーされる。よって、評価部211は、ステップS408でPCグループ情報として次の式(17)に示す5つのエントリを得る(図1を参照)。
〈Ra,Aa1,Sa1〉,
〈Ra,Aa1,Sa2〉,
〈Rb,Ab1,Sb1〉,
〈Rc,Ac2,Sc2〉,
〈Rc,Ac2,Sc3〉 (17)
そして、次のステップS409で評価部211は、PCグループ情報の1件目のエントリの内容を、「PCグループ教室ID」、「PCグループエリアID」および「PCグループスイッチID」という3つの変数に設定する。
例えば、PCグループ情報が式(17)の5つのエントリを持つ場合、1件目のエントリは〈Ra,Aa1,Sa1〉である。よって、PCグループ教室IDの値は“Ra”、PCグループエリアIDの値は“Aa1”、PCグループスイッチIDの値は“Sa1”となる。なお、PCグループ教室ID、PCグループエリアIDおよびPCグループスイッチIDの値は、後述のステップS415またはS416で上書きされる可能性がある。
さて、ステップS409に続くステップS410で、評価部211は、ステップS407で記憶したキュー対応PC情報において以下の(k1)〜(k4)の条件をすべて満たすエントリの数を求める。
(k1)教室IDの値が、ステップS409または後述のステップS415で設定された最新のPCグループ教室IDの値と一致する。
(k2)エリアIDの値が、ステップS409またはS415で設定された最新のPCグループエリアIDの値と一致する。
(k3)スイッチIDの値が、ステップS409またはS415で設定された最新のPCグループスイッチIDの値と一致する。
(k4)状態の値が“割り当て済”である。
つまり、評価部211は、(k1)〜(k4)の条件をすべて満たすPCの台数を求める。そして、評価部211は、求めた台数を「割り当て済PC台数」として記憶する。
また、次のステップS411で評価部211は、ステップS407で記憶したキュー対応PC情報において以下の(l1)〜(l4)の条件をすべて満たすエントリの数を求める。なお、条件(l1)〜(l3)は上記(k1)〜(k3)と同じである。
(l1)教室IDの値が、ステップS409またはS415で設定された最新のPCグループ教室IDの値と一致する。
(l2)エリアIDの値が、ステップS409またはS415で設定された最新のPCグループエリアIDの値と一致する。
(l3)スイッチIDの値が、ステップS409またはS415で設定された最新のPCグループスイッチIDの値と一致する。
(l4)状態の値が“電源OFF”である。
つまり、評価部211は、(l1)〜(l4)の条件をすべて満たすPCの台数を求める。そして、評価部211は求めた台数を「空きPC台数」として記憶する。
続くステップS412で評価部211は、ステップS410で記憶した割り当て済PC台数が0より大きいか否かを判断する。割り当て済PC台数が0より大きい場合、処理はステップS413に移行する。他方、割り当て済PC台数が0の場合、処理は図7BのステップS417に移行する。
ここで、ステップS412の分岐の意味を明らかにするため、ステップS408からS412にいたる各ステップについて振り返って意味を補足説明すれば、次のとおりである。
ステップS408で得られたPCグループ情報の各エントリは、キュー割り当てPC情報にPCIDが含まれるPCを、教室とエリアと接続先のスイッチが互いに等しいPC同士を1つのグループにまとめたときの、各グループに相当する。よって、各グループは、ステップS409(または後述のステップS415もしくはS416)で設定される3つの変数の組み合わせにより特定することができる。
すると、ステップS410より割り当て済PC台数の意味は、「3つの変数の組み合わせで特定される、現在の注目対象のグループにおいて、他のジョブに既に割り当てられているPCの台数」である。同様に、ステップS411より空きPC台数の意味は、「現在の注目対象のグループにおいて、新たなジョブに割り当て可能なPCの台数」である。
割り当て済PC台数が0ならば、「まだ他のジョブが割り当てられていないグループが見つかった」ということである。よって、評価部211は、「PCに関して決められた上記の所定の順序が当該グループ内で1番のPCは、割り当ての先頭として適切である」と判断する。そして、評価部211は、先頭のPCを探す処理を打ち切り、図7BのステップS417へと処理を進める。
他方、割り当て済PC台数が0より大きければ、「現在注目しているグループには既に他のジョブが割り当てられている」ということである。しかし、もしかすると当該グループには、十分な数のPCがあり、現在注目しているジョブを丸ごと引き受ける余力が残っているかもしれない。そこで、割り当て済PC台数が0より大きいとき、「現在注目しているジョブは、現在注目しているグループのPCから順に割り当てていったとき、当該グループ内のPC内だけに収まりきるか」を検討するため、処理はステップS413に移行する。
そして、ステップS413で評価部211は、空きPC台数を、現在注目している当該ジョブの並列数(つまり、ステップS405または後述のステップS439で読み込んだ値)と比較する。
空きPC台数が並列数未満のとき、仮に現在注目している当該グループのPCへ当該ジョブを割り当てるとしても、明らかに当該グループのPCだけでは不足である。つまり、当該ジョブの割り当て先のPCは他のグループにまたがらざるを得ず、上記(j1)の定義から、満足度が最高の5にならないことも明らかである。
よって、この場合、評価部211は「先頭のPCとしてより適切なPCが他のグループにあるかもしれない」と判断する。そして、評価部211は他のグループについて検討するため、処理をステップS414に進める。
他方、空きPC台数が並列数以上ならば、当該ジョブの割り当て先のPCは、現在注目している当該グループ内だけでまかないきれる。よって、当該ジョブに関しては、最高の満足度5が得られることが、上記(j1)の定義から明らかである。したがって、この場合、評価部211は「先頭として適切なPCが見つかった」と判断し、先頭のPCを探す処理を打ち切り、図7BのステップS417へと処理を進める。
さて、ステップS414で評価部211は、ステップS408で記憶したPCグループ情報のすべてのエントリについてステップS410〜S413の処理を行ったか否か(つまり、すべてのグループについて検討し終えたか否か)を判断する。
未処理のエントリが残っていれば、評価部211は、他のグループについての検討を続けるため、ステップS415へと処理を進める。他方、すべてのエントリが処理済であれば、「すべてのグループについて検討してみたが、取り立てて有望なグループがなかった」ということなので、評価部211はデフォルトの先頭位置を設定するために処理をステップS416に進める。
ステップS415で評価部211は、ステップS408で得たPCグループ情報の中から、未処理の次のエントリを読み出す。そして、評価部211は当該エントリの内容を3つの変数(すなわちPCグループ教室ID、PCグループエリアIDおよびPCグループスイッチID)に設定する。その後、処理はステップS410に戻る。
また、ステップS416で評価部211は、デフォルトの先頭位置を設定するために、PCグループ情報の1件目のエントリの内容を上記の3つの変数(つまり、PCグループ教室ID、PCグループエリアIDおよびPCグループスイッチID)に設定する。ステップS416の後、処理は図7BのステップS417に移行する。
ステップS417で評価部211は、ステップS407でソートして記憶したキュー対応PC情報において、まず次の(m1)〜(m3)の条件をすべて満たすエントリのうちで先頭のものを探す。そして、評価部211は、見つけた先頭のエントリから順に、状態が“電源OFF”のエントリだけを、ステップS405または後述のステップS439で読み込んだ並列数の分だけ取り出して、「選択PC情報」として記憶する。
(m1)キュー対応PC情報のエントリ中の教室IDの値が、ステップS409、S415またはS416で設定された最新のPCグループ教室IDの値と一致する。
(m2)キュー対応PC情報のエントリ中のエリアIDの値が、ステップS409、S415またはS416で設定された最新のPCグループエリアIDの値と一致する。
(m3)キュー対応PC情報のエントリ中のスイッチIDの値が、ステップS409、S415またはS416で設定された最新のPCグループスイッチIDの値と一致する。
なお、ステップS406〜S416より、ステップS417では(m1)〜(m3)の条件をすべて満たすエントリの存在が保証されるので、必ず先頭のエントリが見つかる。ただし、見つかった先頭のエントリは必ずしも状態が“電源OFF”であるとは限らない。
そこで評価部211は、ステップS417において具体的には、まず選択PC情報をクリアして初期化する。その後、評価部211は、キュー対応PC情報の各エントリについて、見つけた先頭のエントリから1つずつ順に、状態の値を調べていき、調べた状態が“電源OFF”であれば当該エントリを選択PC情報に追加する。
選択PC情報のエントリ数が並列数に達したら、処理はステップS417からステップS418へ移行する。また、選択PC情報のエントリ数が並列数に達する前に、キュー対応PC情報のエントリが尽きてしまった場合も、処理はステップS417からステップS418へ移行する。
ステップS418で評価部211は、ステップS417で並列数分のエントリを取り出すことができたか否か(つまり選択PC情報のエントリ数が並列数に達しているか否か)を判断する。
並列数分のエントリを取り出すことができた場合は、当該ジョブに関する評価を行うため、処理がステップS419へと移行する。
他方、並列数分のエントリを取り出すことができなかった場合は、「引数として指定されたジョブパターンIDが表すジョブパターンにしたがった割り当てを試してみたら、当該ジョブが割り当て不能だった」ということである。よって、当該ジョブについては評価不能であるから、当該ジョブに関する評価のためのステップS419〜S437を飛ばして、処理は図7CのステップS438へと移行する。ステップS418からS438へのジャンプは、当該ジョブを暗黙的に0点と評価することを意味する。
なお、ステップS407とS417から明らかなように、選択PC情報の各エントリは、図3Aの情報Dcと同様の〈PCID,教室ID,エリアID,スイッチID,状態,ジョブID,予約〉という形式である。
ステップS419で評価部211は、ステップS417で得た選択PC情報の内容を、〈教室ID,スイッチID,エリアID〉の組ごとに数え、何組あったかを「パターン5PCグループ数」として記憶する。
次にステップS420で評価部211は、パターン5PCグループ数が1か否かを判断する。なお、パターン5PCグループ数はその定義から明らかに1以上の整数であり、0以下にはならない。同様に、後述の「パターン4PCグループ数」から「パターン2PCグループ数」も1以上の整数である。
パターン5PCグループ数が1のとき、現在注目している当該ジョブに関して、上記(j1)に定義した満足度5の配置ができたということである。よって、処理はステップS421に移行する。
逆に、パターン5PCグループ数が2以上のとき、当該ジョブに関して満足度は4以下ということである。よって、満足度の具体的な値を調べるため、処理はステップS422に移行する。
ステップS421で評価部211は、当該ジョブの並列数と、満足度を示す5という値を引数として、式(15)の満足度評価を計算する。なお、満足度評価の計算のため、評価部211はパラメタファイルDdの評価テーブルを参照し、式(15)の配点Pt(p.s)を取得する。
そして、評価部211は、計算した満足度評価を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップS432に移行する。
また、ステップS422で評価部211は、ステップS417で得た選択PC情報の内容を、〈教室ID,スイッチID〉の組ごとに数え、何組あったかを「パターン4PCグループ数」として記憶する。
そして、次のステップS423で評価部211は、パターン4PCグループ数が1か否かを判断する。
パターン4PCグループ数が1のとき、現在注目している当該ジョブに関して、上記(j2)に定義した満足度4の配置ができたということである。よって、処理はステップS424に移行する。
逆に、パターン4PCグループ数が2以上のとき、当該ジョブに関して満足度は3以下ということである。よって、満足度の具体的な値を調べるため、処理はステップS425に移行する。
ステップS424で評価部211は、当該ジョブの並列数と、満足度を示す4という値を引数として、式(15)の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップS432に移行する。
また、ステップS425で評価部211は、ステップS417で得た選択PC情報の内容を、〈教室ID,エリアID〉の組ごとに数え、何組あったかを「パターン3PCグループ数」として記憶する。
そして、次のステップS426で評価部211は、パターン3PCグループ数が1か否かを判断する。
パターン3PCグループ数が1のとき、現在注目している当該ジョブに関して、上記(j3)に定義した満足度3の配置ができたということである。よって、処理はステップS427に移行する。
逆に、パターン3PCグループ数が2以上のとき、当該ジョブに関して満足度は2以下ということである。よって、満足度の具体的な値を調べるため、処理はステップS428に移行する。
ステップS427で評価部211は、当該ジョブの並列数と、満足度を示す3という値を引数として、式(15)の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップS432に移行する。
また、ステップS428で評価部211は、ステップS417で得た選択PC情報の内容を教室IDごとに数え、何組あったかを「パターン2PCグループ数」として記憶する。
そして、次のステップS429で評価部211は、パターン2PCグループ数が1か否かを判断する。
パターン2PCグループ数が1のとき、現在注目している当該ジョブに関して、上記(j4)に定義した満足度2の配置ができたということである。よって、処理はステップS430に移行する。
逆に、パターン2PCグループ数が2以上のとき、当該ジョブに関して満足度は最低の1ということである。よって、処理はステップS431に移行する。
ステップS430で評価部211は、当該ジョブの並列数と、満足度を示す2という値を引数として、式(15)の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして、処理はステップS432に移行する。
また、ステップS431で評価部211は、当該ジョブの並列数と、満足度を示す1という値を引数として、式(15)の満足度評価を計算し、計算結果を評価点に足し、加算結果を新たな評価点として記憶する。そして処理はステップS432に移行する。
評価部211は、以上のように満足度に応じてステップS421、S424、S427、S430またはS431のいずれかで評価点を更新した後、ステップS432で以下の処理を行う。すなわち、評価部211は、ステップS417で得た選択PC情報に含まれる各PCに関して、ジョブパターン別PC情報Dcx1のうちPC決定処理の引数として与えられたジョブパターンIDに対応する部分での当該PCの状態を、“割り当て済”に設定する。そして処理は図7CのステップS433に移行する。
すると、図7CのステップS433で評価部211は、ステップS417で得た選択PC情報に含まれるPCIDの集合をリスト化し、「PCIDリスト」として記憶する。
さらに、ステップS434で評価部211は、選択PC情報に含まれる教室IDの集合をリスト化し、「教室IDリスト」として記憶する。
また、ステップS435で評価部211は、選択PC情報に含まれるエリアIDの集合をリスト化し、「エリアIDリスト」として記憶する。
そして、ステップS436で評価部211は、選択PC情報に含まれるスイッチIDの集合をリスト化し、「スイッチIDリスト」として記憶する。なお、ステップS433〜S436の実行順序は任意である。
続いて、ステップS437で評価部211は、〈ジョブID,キューID,並列数,PCIDリスト,教室IDリスト,エリアIDリスト,スイッチIDリスト〉を対応づけたエントリを、ジョブパターン別ジョブ・PC情報Dex1に追加する。
ここで、ジョブIDとキューIDと並列数は、ステップS405または後述のステップS439で読み込まれたものである。また、PCIDリストと教室IDリストとエリアIDリストとスイッチIDリストは、ステップS433〜S436で記憶されたものである。ステップS437で追加されるエントリは、図3Bの情報Deの形式である。
そして、続くステップS438で評価部211は、PC決定処理の引数として与えられたジョブパターンIDにより識別されるジョブパターン中のすべてのジョブを処理したか否かを判断する。ステップS406〜S437の処理をまだ行っていないジョブが当該ジョブパターン中に残っていれば、処理はステップS439に移行する。他方、当該ジョブパターン中のすべてのジョブが処理済であれば、処理はステップS440に移行する。
ステップS439で評価部211は、ジョブパターンIDで識別されるジョブパターンから、ステップS406〜S437の処理をまだ行っていない次のジョブのジョブIDとキューIDと並列数を読み込んで取得する。そして処理は図7AのステップS406に戻る。
また、ステップS440で評価部211は戻り値として評価点をフロー制御部207に返す。そして図7A〜7CのPC決定処理は終了する。
続いて、PC決定処理についての理解を助けるため、以下の(n1)〜(n3)の仮定のもとで、具体例を説明する。
(n1)教育利用モードから研究利用モードヘ移行するために図4の割り当て・予約処理が実行されるとする。よって、処理モードは“assign”であり、図4のステップS107で得られる空きPC数は48である。
(n2)図4のステップS108で得られる実行可能ジョブ情報Df3が、図3Bの実行候補ジョブ情報Df1のとおりであるとする。よって、ステップS108での返り値であるジョブ数は5であり、ステップS110で得られる実行ジョブパターン群Dg3は、図3Cのジョブパターン群Dg1のとおりである。
(n3)図4のステップS112(つまり図7A)で引数として与えられるジョブパターンIDが“P001”であるとする。
以上の(n1)〜(n3)の仮定によれば、ジョブパターンP001の1つ目のジョブJaに関して、ステップS405で以下の式(18)の並列数が得られる。そして、ステップS417の1回目の実行時に以下の式(19)に示す各PCの情報が選択PC情報として得られる。
Para(Ja)=4 (18)
Alloc(Ja,P001)
={Pa01,Pa02,Pa03,Pa04} (19)
すると、以下の式(20)のとおり満足度が5であるから、ステップS421で以下の式(21)のとおり満足度評価が20と計算され、評価値が0から20に更新される。
Sat(Alloc(Ja,P001))=5 (20)
f(4,5)=Pt(4,5)・4=5・4=20 (21)
同様にして、2つ目のジョブJbに関して、ステップS439の1回目の実行時に以下の式(22)の並列数が得られる。そして、ステップS417の2回目の実行時に以下の式(23)に示す各PCの情報が選択PC情報として得られる。
Para(Jb)=4 (22)
Alloc(Jb,P001)
={Pa05,Pa06,Pa07,Pa08} (23)
すると、以下の式(24)のとおり満足度が5であるから、ステップS421で以下の式(25)のとおり満足度評価が20と計算され、評価値が20から40に更新される。
Sat(Alloc(Jb,P001))=5 (24)
f(4,5)=Pt(4,5)・4=5・4=20 (25)
同様にして、3つ目のジョブJcに関して、ステップS439の2回目の実行時に以下の式(26)の並列数が得られる。そして、ステップS417の3回目の実行時に以下の式(27)に示す各PCの情報が選択PC情報として得られる。
Para(Jc)=16 (26)
Alloc(Jc,P001)
={Pa09,Pa10,Pa11,Pa12,
Pa13,Pa14,Pa15,Pa16,
Pb01,Pb02,Pb03,Pb04,
Pb05,Pb06,Pb07,Pb08} (27)
すると、以下の式(28)のとおり満足度が1であるから、ステップS430で以下の式(29)のとおり満足度評価が16と計算され、評価値が40から56に更新される。
Sat(Alloc(Jc,P001))=1 (28)
f(16,1)=Pt(16,1)・16=1・16=16 (29)
同様にして、4つ目のジョブJdに関して、ステップS439の3回目の実行時に以下の式(30)の並列数が得られる。そして、ステップS417の4回目の実行時に以下の式(31)に示す各PCの情報が選択PC情報として得られる。
Para(Jd)=8 (30)
Alloc(Jd,P001)
={Pc01,Pc02,Pc03,Pc04,
Pc05,Pc06,Pc07,Pc08} (31)
すると、以下の式(32)のとおり満足度が5であるから、ステップS421で以下の式(33)のとおり満足度評価が40と計算され、評価値が56から96に更新される。
Sat(Alloc(Jd,P001))=5 (32)
f(8,5)=Pt(8,5)・8=5・8=40 (33)
同様にして、5つ目のジョブJgに関して、ステップS439の4回目の実行時に以下の式(34)の並列数が得られる。そして、ステップS417の5回目の実行時に以下の式(35)に示す各PCの情報が選択PC情報として得られる。
Para(Jg)=4 (34)
Alloc(Jg,P001)
={Pc09,Pc10,Pc11,Pc12} (35)
すると、以下の式(36)のとおり満足度が5であるから、ステップS421で以下の式(37)のとおり満足度評価が20と計算され、評価値が96から116に更新される。
Sat(Alloc(Jg,P001))=5 (36)
f(4,5)=Pt(4,5)・4=5・4=20 (37)
その後、処理はステップS421からステップS432へと進み、ステップS433〜S437を経て、ステップS438からステップS440へと進んで終了する。以上のようにして、上記(n1)〜(n3)の仮定のもとでは、ジョブパターンP001に対して、最終的に以下の式(38)の116点という評価点が得られる。
Eval(P001)=20+20+16+40+20=116 (38)
同様に、上記(n1)〜(n3)の仮定のもとでは、図3Cに示すジョブパターンP049に対して、後述の式(40)〜(44)のような割り当てとなるため、最終的に以下の式(39)の180点という評価点が得られる。
Eval(P049)
=f(16,3)+f(4,5)+f(4,5)+f(8,5)+f(4,5)
=80+20+20+40+20
=180 (39)
続いて、図4のステップS117で実行される再配置処理について説明する。前述のとおり再配置処理は、「評価を下げない範囲で各ジョブのPCへの割り当て方を変えてみることによって、空調機の無駄な稼働をなくせないかを試し、可能ならば空調機の無駄な稼働をなくすように各ジョブのPCへの割り当て方を変える」という処理である。
ここで、ジョブパターンに含まれる各ジョブについての式(15)の満足度評価を下げないことは、式(14)によるジョブパターン全体の評価を下げないための十分条件である。本実施形態の再配置部212は、再配置の仕方を探る探索空間を狭めて処理を簡略化するため、この十分条件が満たされる場合のみを探索範囲に含めて再配置を試みる。
つまり、再配置部212は、「あるジョブについての満足度評価の低下を、他のジョブについての満足度評価の上昇が補うことにより、ジョブパターン全体の評価としては低下していない」というような再配置は考慮しない。したがって、再配置部212が再配置の仕方を探る際の制約条件は、具体的には下記(o1)〜(o5)のように表現することができる。
(o1)あるジョブの割り当て先が、教室IDとスイッチIDとエリアIDが共通のx台のPCである場合、評価を下げずに当該ジョブを再配置するには、教室IDとスイッチIDとエリアIDが共通の他のx台のPCを再配置先とすればよい。つまり、再配置前の満足度が5のジョブについては、満足度が5となる再配置先が見つかれば、ジョブパターンの評価は下がらない。
(o2)あるジョブの割り当て先が、教室IDとスイッチIDは共通だが複数のエリアにまたがっているx台のPCである場合、評価を下げずに当該ジョブを再配置するには、教室IDとスイッチIDが共通の他のx台のPCを再配置先とすればよい。つまり、再配置前の満足度が4のジョブについては、満足度が4以上となる再配置先が見つかれば、ジョブパターンの評価は下がらない。
(o3)あるジョブの割り当て先が、教室IDとエリアIDは共通だが複数のスイッチにまたがっているx台のPCである場合、評価を下げずに当該ジョブを再配置するには、教室IDとエリアIDが共通の他のx台のPCを再配置先とすればよい。つまり、再配置前の満足度が3のジョブについては、満足度が3以上となる再配置先が見つかれば、ジョブパターンの評価は下がらない。なお、本実施形態では、1つのエリアが複数の教室にまたがることはなく、1つのスイッチに接続されたPCが複数のエリアにまたがることもないので、再配置先のx台のPCが同じエリアに属してさえいれば、満足度が3のジョブに関してジョブパターンの評価が下がることはない。
(o4)あるジョブの割り当て先が、教室IDは共通だが複数のエリアおよび複数のスイッチにまたがったx台のPCである場合、評価を下げずに当該ジョブを再配置するには、教室IDが共通の他のx台のPCを再配置先とすればよい。つまり、再配置前の満足度が2のジョブについては、満足度が2以上となる再配置先が見つかれば、ジョブパターンの評価は下がらない。換言すれば、再配置先の上記の「他のx台のPC」が、同じエリアに属しているか否か、そして同じ1台のスイッチに接続されているか否か、ということは問題ではない。
(o5)あるジョブの割り当て先が、複数の教室に分散しているx台のPCである場合、他のどのようなx台のPCを再配置先としても、ジョブパターンの評価は下がらない。つまり、再配置前の満足度が最低の1であるジョブについては、いかなる再配置を行おうとも評価は下がらない。
以上説明した制約条件下で、再配置部212は各ジョブのPCへの割り当て方を変えることを試みる。その再配置部212の動作の詳細を、図8A〜8Hを参照しながら以下に説明する。
図8A〜8Hは、再配置処理のフローチャートである。なお、図示の便宜上、図8A〜8Cに再配置処理全体の流れを示し、図8A〜8C中に示したステップで行われるいくつかの処理の詳細を図8D〜8Hに分けて示してある。図8A〜8Hに分けて示したのはあくまでも図示の便宜上であり、再配置部212は、例えば図8Dの処理で得た情報を図8Eの処理で利用することもある。
さて、図8Aに示すように、再配置処理は、ジョブパターンIDと処理モードを引数としてフロー制御部207から呼び出される。以下では説明の便宜上、「図4のステップS107で空きPC数が48であり、ステップS117で評価部211が式(13)のジョブパターンP049を選択した」という場合を具体例として適宜参照する。また、処理モードの値は、“reserve”または“assign”である。
ステップS501で再配置部212は、図8Dに示す前処理を行い、再配置の余地がありそうか否かを大まかに調べる。すなわち、あるエリア内のPCに割り当てられているジョブを別のエリア内のPCに割り当てなおすことで、当該「あるエリア」のすべてのPCを、何のジョブにも割り当てられていない状態とすることができそうか否かを再配置部212は大まかに検討する。
具体的には、図8DのステップS601で再配置部212は、再配置処理の引数として与えられた処理モードに応じて、使用する情報を決定する。すなわち、処理モードの値が“reserve”である(つまり、予約のために再配置処理が行われる)場合、再配置部212は、使用する情報を以下の(p1)〜(p4)のように決定する。
(p1)ジョブパターン別PC情報Dcx1として参照する先は、具体的にはジョブパターン別PC予測情報Dcx2であること。
(p2)ジョブパターン別ジョブ・PC情報Dex1として参照する先は、具体的にはジョブパターン別ジョブ・PC予測情報Dex2であること。
(p3)再配置後PC情報Dc4として、具体的には再配置後PC予測情報Dc5を生成すること。
(p4)再配置後ジョブ・PC情報De4として、具体的には再配置後ジョブ・PC予測情報De5を生成すること。
逆に、処理モードの値が“assign”である(つまり、実際の割り当てのために再配置処理が行われる)場合、再配置部212は、使用する情報を以下の(q1)〜(q4)のように決定する。
(q1)ジョブパターン別PC情報Dcx1として参照する先は、具体的にはジョブパターン別PC管理情報Dcx3であること。
(q2)ジョブパターン別ジョブ・PC情報Dex1として参照する先は、具体的にはジョブパターン別ジョブ・PC管理情報Dex3であること。
(q3)再配置後PC情報Dc4として、具体的には再配置後PC管理情報Dc6を生成すること。
(q4)再配置後ジョブ・PC情報De4として、具体的には再配置後ジョブ・PC管理情報De6を生成すること。
再配置部212は、以上のようにして、ステップS601で使用する情報を決定する。そして、次のステップS602において再配置部212は、ジョブパターン別PC情報Dcx1から、再配置処理の引数として指定されたジョブパターンIDに対応する内容をコピーし、「暫定PC情報」として記憶する。よって、暫定PC情報は、図3Aに示すPC情報Dcと同じく、それぞれが〈PCID,教室ID,エリアID,スイッチID,状態,ジョブID,予約〉の組(タプル)により表される複数のエントリを含む。
例えば、上記具体例において再配置部212は、図3Cのジョブパターン群Dg1に示す120通りのジョブパターンに対応する内容を含むジョブパターン別PC情報Dcx1の中から、ジョブパターンP049に対応する内容を暫定PC情報としてコピーする。
例えば図1のようにシステム101内にPCが48台ある場合、ジョブパターン別PC情報Dcx1は、120通りのジョブパターンそれぞれに対して48個のエントリを持つ情報である。再配置部212は、この48×120個のエントリの中から、ジョブパターンP049に対応する48個のエントリを、暫定PC情報としてコピーする。
上記具体例においては、式(13)に示したとおりP049=〈Jc,Ja,Jb,Jd,Jg〉である。そして、ジョブパターンP049に対応する各ジョブの再配置前の割り当て方は、図7A〜7CのPC決定処理によれば、以下の式(40)〜(44)のとおりである(つまり、上記具体例ではジョブ・PC情報De1は図3Bの情報Deのとおりである)。
Alloc(Jc,P049)
={Pa01,Pa02,Pa03,Pa04,
Pa05,Pa06,Pa07,Pa08,
Pa09,Pa10,Pa11,Pa12,
Pa13,Pa14,Pa15,Pa16} (40)
Alloc(Ja,P049)
={Pb01,Pb02,Pb03,Pb04} (41)
Alloc(Jb,P049)
={Pb05,Pb06,Pb07,Pb08} (42)
Alloc(Jd,P049)
={Pc01,Pc02,Pc03,Pc04,
Pc05,Pc06,Pc07,Pc08} (43)
Alloc(Jg,P049)
={Pc09,Pc10,Pc11,Pc12} (44)
したがって、上記具体例の場合、暫定PC情報において、PCIDがPa01〜Pa16、Pb01〜Pb08、Pc01〜Pc12のエントリの状態は“割り当て済”であり、PCIDがPc13〜Pc24のエントリの状態は“電源OFF”である。
再配置部212は、以上のようにして暫定PC情報を得ると、続くステップS603において、ジョブパターン別ジョブ・PC情報Dex1から、再配置処理の引数として指定されたジョブパターンIDに対応する内容をコピーする。また、再配置部212は、コピーした各エントリに、状態として空白(NULL)を設定し、結果を「暫定ジョブ・PC情報」として記憶する。
つまり、暫定ジョブ・PC情報は、それぞれが〈ジョブID,キューID,並列数,PCリスト,教室ID,エリアID,スイッチID,状態〉の組(タプル)により表される複数のエントリを含む情報である。例えば、ジョブパターンP049が選択された場合、各ジョブの割り当て先は上記の式(40)〜(44)のとおりであり、各PCは図1のように配置されているので、暫定ジョブ・PC情報は、図3Bの情報Deに空白の状態を追加したものとなる。
そして、続くステップS604で再配置部212は、ステップS602で記憶した暫定PC情報において、エリアIDごとにPCの台数(すなわちエントリの数)を「管理PC台数」として数える。再配置部212は、数えた管理PC台数をエリアIDと対応づけて、〈エリアID,管理PC台数〉の組(タプル)を「エリア管理PC台数情報」の各エントリとして記憶する。
本実施形態の場合、図1に示すようにエリアAa1、Ab1、Ac1、Ac2にはそれぞれ16台、8台、8台、16台のPCが配置されているので、次の式(45)に示す4つのエントリを含むエリア管理PC台数情報がステップS604で得られる。
〈Aa1,16〉,
〈Ab1, 8〉,
〈Ac1, 8〉,
〈Ac2,16〉 (45)
また、ステップS605で再配置部212は、ステップS602で記憶した暫定PC情報において、〈エリアID,スイッチID〉の組ごとにPCの台数(すなわちエントリの数)を「管理PC台数」として数える。そして、再配置部212には、〈エリアID,スイッチID,管理PC台数〉の組(タプル)を「スイッチ管理PC台数情報」の各エントリとして記憶する。
本実施形態の場合、図1に示すとおり、エリアをまたいで分散している複数のPCが同じ1つのスイッチに接続されることはない。また、スイッチSa1、Sa2、Sb1,Sc1、Sc2、Sc3には、いずれも8台のPCが接続されている。よって、次の式(46)に示す6つのエントリがステップS605で得られる。
〈Aa1,Sa1,8〉,
〈Aa1,Sa2,8〉,
〈Ab1,Sb1,8〉,
〈Ac1,Sc1,8〉,
〈Ac2,Sc2,8〉,
〈Ac2,Sc3,8〉 (46)
さらに、ステップS606で再配置部212は、ステップS602で記憶した暫定PC情報において、状態が“電源OFF”のPCの台数(すなわちエントリの数)をエリアIDごとに「空きPC台数」として数える。そして、再配置部212は、〈エリアID,空きPC台数〉の組(タプル)を、空きPC台数の降順にソートし、ソートされた順に並んだ各組を「エリア空きPC台数情報」の各エントリとして記憶する。
例えば、上記具体例では、ステップS602に関して説明したとおり、暫定PC情報において、状態が“電源OFF”のエントリは、PCIDがPc13〜Pc24の12個のエントリのみである。そして、図1に示すとおり、PC・Pc13〜Pc24は、12台ともすべてエリアAc2にある。
したがって、この場合ステップS606では、次の式(47)に示す順にソートされた4つのエントリを含むエリア空きPC台数情報が得られる。なお、エリア空き台数情報は、後述のステップS608のためと、図8Eの処理におけるソートの基準を与えるために、ステップS606で用意される情報である。
〈Ac2,12〉,
〈Aa1, 0〉,
〈Ab1, 0〉,
〈Ac1, 0〉 (47)
続いて、ステップS607で再配置部212は、後で利用する「再配置情報」をクリアして初期化する。再配置情報は、〈再配置元のPCID,再配置先のPCID〉の組(タプル)を記憶するためのものである。
続くステップS608で再配置部212は、ステップS606で求めたエリア空きPC台数情報の空きPC台数の合計を「合計空きPC台数」として求める。式(47)の例の場合、合計空きPC台数は、12(=12+0+0+0)である。
そして、ステップS609で再配置部212は、ステップS604で求めたエリア管理PC台数情報における管理PC台数の最小値を「最小管理PC台数」として求める。式(45)の例の場合、最小管理PC台数は8(=min(16,8,8,16))である。
なお、図8Dの各ステップの実行順序は、実施形態により適宜変えることができる。例えば、ステップS607は任意の順番で実行可能であり、ステップS604〜S606の実行順序はステップS602の後でさえあれば任意である。
そして、以上の図8DのステップS601〜S609の実行後、処理は図8AのステップS502に進む。ステップS502で再配置部212は、ステップS608で求めた合計空きPC台数がステップS609で求めた最小管理PC台数以上であるか否かを判断する。
合計空きPC台数が最小管理PC台数以上の場合、再配置の余地があるかもしれないので、処理はステップS503に移行する。逆に、合計空きPC台数が最小管理PC台数未満の場合、再配置部212は、評価を落とさずに再配置を行う余地がないと判断し、処理は図8CのステップS534に移行する。
例えば、上記のように合計空きPC台数が12で最小管理PC台数が8であるとする。すると、12≧8なので、「最小管理PC台数に対応するエリアの8台のPCに割り当てられているジョブがもしあれば、当該ジョブを、互いに同じエリアに属しており“電源OFF”状態の12台のPCに割り当てなおす」という再配置が可能性として考えられる。
つまり、その再配置によって、最小管理PC台数に対応するエリア内のすべてのPCを“電源OFF”状態にすることができるかもしれない。したがって、当該エリアの空調機を稼働させる必要性をなくすことができるかもしれない。
なお、ステップS502の段階では、上記8台のPCのすべてにジョブが割り当てられているか否かを調べてはいない。よって、実際には8台のうち一部にのみジョブが割り当てられており、残りは“電源OFF”状態かもしれない。
しかし、仮に8台すべてのジョブが割り当てられているとしても、どこかのエリアに12台の“電源OFF”状態のPCがまとまって存在していれば、その12台のうちの8台にジョブを割り当てなおすという再配置が、可能性としてはありうる。そのため、ステップS502で再配置部212は、合計空きPC台数と最小管理PC台数とを比較して、再配置の余地について大まかな判断を下している。
また、ステップS502の段階では、空いている12台のPCがどこのエリアにあるかを再配置部212は特に認識してはいない。よって、再配置によってあるエリア内の全PCを“電源OFF”状態とすることが実際に可能となるのか否かは、ステップS502の段階では不明である。しかし、潜在的な可能性はある。
他方、例えば合計空きPC台数が4で最小管理PC台数が8であれば、4<8なので、再配置部212は「再配置の余地がない」と判断する。
なお、実際には最小管理PC台数に対応するエリア内の8台のPC中の4台以下にしかジョブが割り当てられていないかもしれない。しかし、仮に8台すべてにジョブが割り当てられていれば、どのように再配置を行っても、最小管理PC台数に対応するエリア内に、何らかのジョブに割り当てられたPCが残ってしまう。したがって、最小管理PC台数に対応するエリアを担当する空調機を稼働させることになる。
つまり、最小管理PC台数に対応するエリアにおいて全PCにジョブが割り当てられているならば、再配置によっても電力の節約は見込めない。そこで、本実施形態の再配置部212は、単純に合計空きPC台数と最小管理PC台数を比較し、合計空きPC台数が最小管理PC台数未満のとき、「再配置を検討する余地がない」と判断する。そして、再配置部212は、再配置元と再配置先を対応づけるための各ステップを省略して、すぐに図8CのステップS534を実行する。
このように、最小管理PC台数に対応するエリア内で実際にジョブが割り当てられているPCの台数を厳密に判断しない理由は、処理の簡略化のためである。つまり、潜在的に可能な再配置の仕方を網羅的に考慮すると処理量が厖大になってしまうので、本実施形態の再配置部212は、「ある程度計算量を抑えた範囲内で、明らかにより良い割り当ての仕方が見つかるようなら、再配置をする」という方針にしたがっている。
さて、合計空きPC台数が最小管理PC台数以上のとき、再配置部212はステップS503で図8Eの処理を行い、再配置先と再配置元それぞれの候補の情報を求める。
具体的には、図8EのステップS701で再配置部212は、図8DのステップS602で得た暫定PC情報において、〈エリアID,スイッチID〉の組ごとに、状態が“電源OFF”のPCの台数(すなわちエントリの数)を「空きPC台数」として数える。数えた結果にしたがって、再配置部212は、〈エリアID,スイッチID,空きPC台数〉の組(タプル)を「スイッチ空きPC台数情報」の各エントリとして記憶する。
例えば、上記具体例の場合、ステップS602に関して説明したように、状態が“電源OFF”のPCは、PC・Pc13〜Pc24のみである。そして、図1に示すように、これら12台のPCはいずれもエリアAc2にある。また、PC・Pc13〜Pc16の4台はスイッチSc2に、PC・Pc17〜Pc24の8台はスイッチSc3に接続されている。よって、この場合、次の式(48)に示す6つのエントリを含むスイッチ空きPC台数情報が得られる。
〈Aa1,Sa1,0〉,
〈Aa1,Sa2,0〉,
〈Ab1,Sb1,0〉,
〈Ac1,Sc1,0〉,
〈Ac2,Sc2,4〉,
〈Ac2,Sc3,8〉 (48)
以上のようにして得たスイッチ空きPC台数情報において、空きPC台数が0でない各エントリは、〈エリアID,スイッチID〉の組を単位とした再配置先の候補を表す。
続くステップS702〜S706で再配置部212は、ステップS701で得たスイッチ空きPC台数情報のエントリをソートした「ソート済スイッチ空きPC台数情報」を生成する。第1ソートキーは、エリア内で“電源OFF”状態のPCの台数であり、スイッチ空きPC台数情報の個々のエントリ自体に直接含まれている値ではない。第2ソートキーは、同一スイッチに接続されているPCのうちで“電源OFF”状態のPCの台数である。再配置部212は、第1ソートキーと第2ソートキーのいずれに関しても、降順のソートを行う。
再配置部212は、具体的にはまずステップS702において、ソート済スイッチ空きPC台数情報を、1つもエントリを持たない状態に初期化する。
そして、ステップS703で再配置部212は、図8DのステップS606で空きPC台数の降順に既にソートしてあるエリア空きPC台数情報の1件目のエントリのエリアIDを「空き情報エリアID」として取得する。つまり、再配置部212は、第1ソートキーによるソート順が先頭となるエリアIDを空き情報エリアIDとして取得する。
例えば、エリア空きPC台数情報が式(47)のとおりである場合、1件目のエントリは〈Ac2,12〉なので、ステップS703で得られる空き情報エリアIDは“Ac2”である。
そして、ステップS704で再配置部212は、ステップS701で得たスイッチ空きPC台数情報内で、エリアIDが空き情報エリアIDに一致するエントリを検索する。定義から明らかに、検索の結果として少なくとも1件のエントリがヒットする。再配置部212は、ステップS704においてさらに、検索の結果ヒットしたエントリを空きPC台数の降順にソートし、ソートした結果を、ソート済スイッチ空きPC台数情報の末尾に追加出力する。
例えば、スイッチ空きPC台数情報が式(48)のとおりであり、上記のようにステップS703で空き情報エリアIDが“Ac2”に設定された場合、検索の結果、〈Ac2,Sc2,4〉と〈Ac2,Sc3,8〉という2つのエントリがヒットする。再配置部212は、この2つのエントリを空きPC台数の降順にソートし、ステップS702で空に初期化されているソート済スイッチ空きPC台数情報の末尾に追加する。その結果、ソート済スイッチ空きPC台数情報は、次の式(49)に示す順で2つのエントリを持つ状態となる。
〈Ac2,Sc3,8〉,
〈Ac2,Sc2,4〉 (49)
そして、ステップS705で再配置部212は、エリア空きPC台数情報のすべてのエントリを処理したか否かを判断する。空き情報エリアIDへの代入とステップS704の処理をまだ行っていないエントリがある場合、処理はステップS706に移行し、すべてのエントリが処理済の場合、処理はステップS707に移行する。
ステップS706で再配置部212は、エリア空きPC台数情報の次のエントリのエリアIDで、空き情報エリアIDを上書きする。そして、処理はステップS704に戻る。
例えば、図8DのステップS606で得られたエリア空きPC台数情報が式(47)のとおりで、ステップS701で得られた元のスイッチ空きPC台数情報が式(48)のとおりであるとする。この場合、ステップS704〜S706の繰り返しにより最終的に得られるソート済スイッチ空きPC台数情報は、具体的には、式(49)の2つのエントリに続いてさらに4つのエントリが追加された、以下の式(50)のとおりである。
〈Ac2,Sc3,8〉,
〈Ac2,Sc2,4〉,
〈Aa1,Sa1,0〉,
〈Aa1,Sa2,0〉,
〈Ab1,Sb1,0〉,
〈Ac1,Sc1,0〉 (50)
式(50)のソート済スイッチ空きPC台数情報は、エントリの並び順によって、例えば次の(r1)と(r2)のことを表している。
(r1)“電源OFF”状態のPCが最も多く存在するのはエリアAc2なので、エリア単位での再配置先の候補として最も優先的に考慮の対象となるのは、エリアAc2内のPCである。
(r2)エリアAc2内でスイッチ単位に検討すると、再配置先の候補としての優先順位は、スイッチSc3に接続されている8台のPCが第1位であり、スイッチSc2に接続されている4台のPCが第2位である。
つまり、空いているPC(ジョブに割り当てられていないPC)がより多く存在し、そのため再配置が成功しそうな候補ほど、優先的に再配置先として考慮されるように、再配置部212はソート済スイッチ空きPC台数情報を作成する。
また、ステップS707で再配置部212は、図8DのステップS602で記憶した暫定PC情報において、エリアIDごとに、状態が“割り当て済”のPCの台数(すなわちエントリの数)を「割り当て済PC台数」として数える。数えた結果にしたがって、再配置部212は、〈エリアID,割り当て済PC台数〉の組(タプル)を「エリア割り当てPC台数情報」の各エントリとして記憶する。
そして、次のステップS708で再配置部212は、ステップS707で得たエリア割り当てPC台数情報を、割り当て済PC台数の降順にソートする。
例えば、上記具体例の場合、ステップS602に関して説明したように、状態が“割り当て済”のPCは、PC・Pa01〜Pa16、Pb01〜Pb08、Pc01〜Pc12の36台である(式(40)~(44)も参照)。そして、図1に示すように、PC・Pa01〜Pa16はエリアAa1にあり、PC・Pb01〜Pb08はエリアAb1にあり、PC・Pc01〜Pc08はエリアAc1にあり、PC・Pc09〜Pc12はエリアAc2にある。
したがって、この場合、ステップS707とS708の結果として得られるエリア割り当てPC台数情報は、次の式(51)に示す順にソートされた4つのエントリを含む。
〈Aa1,16〉,
〈Ab1, 8〉,
〈Ac1, 8〉,
〈Ac2, 4〉 (51)
なお、状態が“割り当て済”のPCが存在しないエリアがもしあれば、割り当て済PC台数が0のエントリがエリア割り当てPC台数情報の末尾に含まれることになる。
また、ステップS709で再配置部212は、暫定PC情報において、今度は〈エリアID,スイッチID,ジョブID〉の組ごとに、状態が“割り当て済”のPCの台数(すなわちエントリの数)を「割り当て済PC台数」として数える。数えた結果にしたがって、再配置部212は、〈エリアID,スイッチID,ジョブID,割り当て済PC台数,状態〉の組(タプル)を「ジョブ割り当て情報」の各エントリとして記憶する。ただし、再配置部212は、ジョブ割り当て情報のエントリにおける「状態」を初期化して空白(つまりNULL)とする。
例えば、上記具体例の場合、各ジョブの再配置前の割り当て方は式(40)〜(44)のとおりなので、ジョブ割り当て情報は次の式(52)の7つのエントリを含む。
〈Aa1,Sa1, Jc,8,NULL〉,
〈Aa1,Sa2, Jc,8,NULL〉,
〈Ab1,Sb1, Ja,4,NULL〉,
〈Ab1,Sb1, Jb,4,NULL〉,
〈Ac1,Sc1, Jd,8,NULL〉,
〈Ac2,Sc2, Jg,4,NULL〉,
〈Ac2,Sc3,NULL,0,NULL〉 (52)
なお、ジョブ割り当て情報は、〈エリアID,スイッチID,ジョブID〉の組を単位として再配置元の候補を表す情報である。ジョブ割り当て情報の各エントリの状態は、再配置元の候補が再配置されると“再配置済”に変更される。
続いて、ステップS710で再配置部212は、後の処理で使う「ジョブ選択情報」をクリアして初期化する。なお、ジョブ選択情報は、〈エリアID,スイッチID,ジョブID,割り当て済PC台数〉の組(タプル)をエントリとして有する情報である。
以上のようにして、再配置部212は、ステップS701〜S706で再配置先の候補を求め、ステップS707〜S709で再配置元の候補を求め、ステップS710で後の図8Fの処理のための初期化を行う。実施形態によって、ステップの実行順序は適宜変更することもでき、例えば、再配置部212は再配置元の候補を再配置先の候補よりも先に求めてもよい。
さて、再配置部212は、図8AのステップS503に相当する図8Eの処理を上記のように行うと、続く図8A〜8CのステップS504〜S533で、再配置先の各候補についての処理を繰り返す。
具体的には、再配置部212は、まずステップS504で、図8EのステップS702〜S706で再配置先の候補を示す情報として得られたソート済スイッチ空きPC台数情報から、1件目のエントリを読み込む。そして、再配置部212は、読み込んだ当該エントリのエリアID、スイッチID、空きPC台数を、「空き情報エリアID」、「空き情報スイッチID」、「空きPC台数」として記憶する。
例えば、ソート済スイッチ空きPC台数情報が式(50)で表される場合、1件目のエントリは〈Ac2,Sc3,8〉である。よって、空き情報エリアIDは“Ac2”、空き情報スイッチIDは“Sc3”、空きPC台数は8である。
なお、空き情報エリアID、空き情報スイッチID、空きPC台数には、後のステップS532で新たな値が代入される。以下では、ステップS504またはS532で再配置部212が読み込んだエントリの表す再配置先の候補を「当該再配置先候補」または「現在注目している再配置先候補」ということもある。
続いて、図8BのステップS505で再配置部212は、ステップS504または後述のステップS532で設定された空きPC台数が、0より大きいか否かを判断する。空きPC台数が0のとき、現在注目している当該再配置先候補への再配置の余地はない。そこで、他の再配置先候補への再配置を試みるため、処理は、ステップS506〜S530を飛ばして図8CのステップS531に移行する。他方、空きPC台数が0より大きいとき、当該再配置先候補への再配置を試みるため、処理はステップS506に移行する。
なお、再配置先候補としてのソート済スイッチ空きPC台数情報のソートの基準は図8Eとともに説明したとおりであり、単純な空きPC台数順のソートではない。そのため、空きPC台数が0のエントリよりも後に、空きPC台数が1以上のエントリが存在することもある。よって、空きPC台数が0のときのジャンプ先は、後述のステップS534ではなくステップS531なのである。
さて、ステップS506で再配置部212は、当該再配置先候補(つまり注目しているソート済スイッチ空きPC台数のエントリ)に関する初期化とバックアップを行う。
具体的には、再配置部212は「再配置フラグ」と「エリア再配置PC数」をともに0に初期化する。なお、再配置フラグは、0のとき、当該再配置先候補への再配置が可能そうな再配置元の候補がまだ見つかっていないことを示し、1のとき、当該再配置先候補への再配置が可能そうな再配置元の候補が見つかったことを示す。また、エリア再配置PC数は、エリアIDとスイッチIDの組を単位とする当該再配置先候補(に含まれるPC)へのジョブの再配置が可能と判明した、再配置元のPCの台数を示す。
また、再配置部212は、以下の(s1)〜(s5)の各情報のバックアップも行う。バックアップされた情報は、後述のステップS512でリストアを行う場合に使われる。
(s1)図8AのステップS501(より詳しくは図8DのステップS602)で得られ、後述のステップS517(より詳しくは図8HのステップS1007とS1008)で更新される、暫定PC情報。
(s2)図8AのステップS501(より詳しくは図8DのステップS603)で得られ、後述のステップS517(より詳しくは図8HのステップS1006)で更新される、暫定ジョブ・PC情報。
(s3)図8AのステップS503(より詳しくは図8EのステップS707〜S708)で得られ、後述のステップS517(より詳しくは図8HのステップS1002〜S1004)で更新される、エリア割り当てPC台数情報。
(s4)図8AのステップS503(より詳しくは図8EのステップS709)で得られ、後述のステップS517(より詳しくは図8HのステップS1005)で更新される、ジョブ割り当て情報。
(s5)図8AのステップS501(より詳しくは図8DのステップS607)で初期化され、後述のステップS517(より詳しくは図8HのステップS1001)で更新される再配置PC情報。
次に、ステップS507で再配置部212は、当該再配置先候補への再配置が可能そうなジョブの候補をジョブ選択情報として記憶する。具体的には、再配置部212は図8Fの処理を行う。
すなわち、図8FのステップS801で再配置部212は、図8EのステップS708で再配置元候補として得たエリア割り当てPC台数情報の1件目のエントリを読み込む。そして、再配置部212は、読み込んだ当該エントリのエリアIDと割り当て済PC台数を、「割り当て情報エリアID」と「割り当て済PC台数」として記憶する。
例えば、再配置部212が最初に図8Fの処理を行う場合、現在注目している再配置先候補は、図8AのステップS504で読み込んだエントリ(式(50)の1つ目のエントリ)に相当する。つまり、当該再配置先候補は、エリアAc2のスイッチSc3に接続された8台のPCである。
そして、ステップS707とS708により得られたエリア割り当てPC台数情報は、式(51)の4つのエントリを有し、1つ目のエントリは〈Aa1,16〉である。よって、割り当て情報エリアIDは“Aa1”となり、割り当て済PC台数は16となる。これは、エリアAa1にあり、かつ何らかのジョブが割り当てられている16台のPCに、再配置部212が再配置元候補として今注目していることを示す。
さて、ステップS801の実行後、処理はステップS802に移行し、再配置部212は、図8AのステップS504または図8CのステップS532で得た空きPC台数の値を「残り空きPC台数」としてコピーする。残り空きPC台数は、このように初期値として空きPC台数の値が設定され、その後のステップS804〜S811の繰り返しにより値が減らされていく。
また、続くステップS803で再配置部212は、「再配置元エリアIDリスト」を空に初期化する。再配置元エリアIDリストへの要素の追加は図8Fの処理において行われ、作成された再配置元エリアIDリストは、後述の図8CのステップS522とS527で参照される。
そして、ステップS803(または後述のステップS811)に続くステップS804において、再配置部212は、空き情報エリアIDと割り当て情報エリアIDが等しいか否かを判断する。空き情報エリアIDは、図8AのステップS504または図8CのステップS532で設定され、現在注目している再配置先候補がどのエリアにあるかを示し、例えば上記の例では“Ac2”である。また、割り当て情報エリアIDは、ステップS801または後述のステップS811で設定され、現在注目している再配置元候補がどのエリアにあるかを示す。
もし、空き情報エリアIDと割り当て情報エリアIDが等しければ、再配置先候補と再配置元候補が同じエリア内にあるということなので、再配置を行っても空調機の稼働状況に影響がない。つまり、再配置を検討する必要がない。よって、別の再配置元候補を探すために、処理はステップS810に移行する。
他方、空き情報エリアIDと割り当て情報エリアIDが異なれば、再配置先候補と再配置元候補が別のエリア内にあるということなので、再配置によって空調機の無駄な運転を防げるかもしれない。つまり、現在注目している再配置先候補と再配置元候補の組による再配置を検討する余地がある。よって、処理はステップS805に移行する。
ステップS805で再配置部212は、割り当て済PC台数が0かそれとも1以上かを判断する。
ここで、図8EのステップS708のとおり、エリア割り当てPC台数情報は割り当て済PC台数の降順にソートされている。また、図8Fの処理において再配置部212は、エリア割り当てPC台数情報のエントリを、1件目から順に注目している。
したがって、現在の割り当て済PC台数の値が0のとき、割り当て済PC台数が1以上のエントリがエリア割り当てPC台数情報の中に残っていない。つまり、エリアを単位とした再配置元の候補がもう残っておらず、換言すれば、ジョブ選択情報に追加するエントリが残っていない。そこで、処理はステップS812へと移行する。
他方、割り当て済PC台数が1以上のとき、ジョブ選択情報に追加するエントリがまだ残っている可能性がある。そこで、処理はステップS806に移行する。
ステップS806で再配置部212は、残り空きPC台数と割り当て済PC台数を比較する。
残り空きPC台数は、ステップS802で設定された初期値か、または、過去のステップS804〜S811のループ内においてステップS807で設定された値を持つ。そして、残り空きPC台数は、エリアIDとスイッチIDの組を単位として現在注目している再配置先候補の中に、再配置先として利用するための仮の対応づけがまだなされていないPCが、あと何台残っているかを示す。例えば、図8AのステップS504に例示したように空きPC台数が8のとき、ステップS802で残り空きPC台数は8に設定される。
また、割り当て済PC台数は、図8FのステップS801またはS811で設定され、現在注目している再配置元候補(具体的にはエリアを単位とした候補)が何台のPCを含むのかを示し、例えば上記のステップS801で設定された例では16である。
残り空きPC台数が割り当て済PC台数よりも少ない場合、「現在注目している再配置先候補と再配置元候補の組による再配置を検討しなくてよい」と再配置部212は判断し、処理はステップS810に移行する。なぜなら、この場合、現在注目している再配置元候補のエリア内のPCに割り当てられたジョブのすべてを、現在注目している再配置先候補のPCに再配置しようとしても、空いているPCが足りないからである。
例えば、再配置先候補が式(50)の1つ目のエントリ〈Ac2,Sc3,8〉で再配置元候補が式(51)の1つ目のエントリ〈Aa1,16〉のとき、ステップS801で割り当て済PC台数が16に設定される。また、残り空きPC台数はステップS802で8に初期化される。すると、8<16なので、処理はステップS806からS810へと移行する。
逆に、残り空きPC台数が割り当て済PC台数以上の場合、「現在注目している再配置先候補と再配置元候補の組による再配置は検討の対象となる」と再配置部212は判断し、処理はステップS807に移行する。なぜなら、この場合、現在注目している再配置元候補のエリア内のPCに割り当てられた分のジョブは、すべて、他のある1つのエリア内の同じスイッチに接続されたPCに再配置することが可能だからである。
なお、実際には、ジョブはエリアをまたいで配置されているかもしれない。つまり、現在注目している再配置元候補のエリア内のPCに割り当てられたジョブの中には、他のエリアのPCにも割り当てられているものがあるかもしれない。すると、ジョブ全体をまとめて再配置しようとすると、残り空きPC台数では足りなくなる可能性もある。
しかし、図8Fの処理の段階では、まだ、「再配置元候補のエリア内のPCに割り当てられたジョブの中に、他のエリアのPCにも割り当てられているものがあるか否か」という厳密な判断までは、再配置部212は行っていない。厳密な判断は後に図8GのステップS907で行われる。よって、ステップS806の段階で再配置部212は、上記のように単純に「残り空きPC台数が割り当て済PC台数以上の場合、現在注目している再配置先候補と再配置元候補の組による再配置は検討の対象となる」と判断する。
さて、ステップS807で再配置部212は、残り空きPC台数から割り当て済PC台数を引き、その減算結果を新たな残り空きPC台数として記憶する。
また、次のステップS808で再配置部212は、再配置元エリアIDリストに、割り当て情報エリアIDを追加する。つまり、再配置元エリアIDリストには、再配置元の候補として再配置部212が注目しているジョブが割り当てられているPCが存在するエリアのエリアIDが追加される。
そして、続くステップS809で再配置部212は、図8EのステップS709で記憶したジョブ割り当て情報において、エリアIDが割り当て情報エリアIDに一致するエントリを検索する。そして、再配置部212はステップS809でさらに、検索した結果ヒットしたエントリをコピーして、ジョブ選択情報の末尾に追加出力する。
図8EのステップS709に関して説明したように、ジョブ割り当て情報の各エントリは、〈エリアID,スイッチID,ジョブID,割り当て済PC台数,状態〉の組である。つまり、ステップS809で再配置部212は、現在注目している再配置元候補のエリア内で、具体的にはどのスイッチに接続された何台のPCにどのジョブが割り当てられているのかを調べ、調べた結果をまとめてジョブ選択情報にコピーする。
そして、次のステップS810で再配置部212は、エリア割り当てPC台数情報のすべてのエントリを処理したか否か(すなわち、エリアを単位とするすべての再配置元候補について注目し終わったか否か)を判断する。未処理のエントリが残っていれば、処理はステップS811に移行し、すべてのエントリが処理済であれば、処理はステップS812に移行する。
ステップS811で再配置部212は、エリア割り当てPC台数情報の次のエントリを読み込み、当該エントリのエリアIDと割り当て済PC台数を、割り当て情報エリアIDと割り当て済PC台数として記憶する。そして処理はステップS804に戻る。
また、ステップS812で再配置部212は、ジョブ選択情報のエントリの件数が0であるか、それとも1以上であるかを判断する。
なお、ジョブ選択情報は、図8BのステップS507に相当する図8Fの処理の開始時には、空である。なぜなら、ステップS507の実行前に、図8AのステップS503(より正確には図8EのステップS710)か図8BのステップS533で初期化されているからである。
よって、ステップS812でジョブ選択情報のエントリの件数が0のとき、ステップS809でのエントリの追加が行われなかったということである。換言すれば、再配置部212が現在注目している当該再配置先候補への再配置が可能そうな再配置元の候補は、見つからなかった。よって、ここで図8Fの処理も終了し、再配置フラグの値は初期値の0のままである。
逆に、ステップS812においてジョブ選択情報のエントリの件数が1以上のとき、処理はステップS813に移行し、ステップS813で再配置部212は、再配置フラグの値を1に設定する。すなわち、再配置部212は、現在注目している再配置先候補への再配置が可能そうな再配置元候補が見つかったことを記憶する。そして、図8Fの処理は終了する。
例えば、現在注目している再配置先候補が式(50)の1件目のエントリ〈Ac2,Sc3,8〉に対応する場合、以上の図8Fの処理の結果、ジョブ選択情報には、式(52)のジョブ割り当て情報から次の式(53)の2つのエントリがコピーされる。
〈Ab1,Sb1,Ja,4,NULL〉,
〈Ab1,Sb1,Jb,4,NULL〉 (53)
つまり、式(51)のエリア割り当てPC台数情報のうち、1件目の〈Aa1,16〉というエントリに関しては、8<16なのでステップS806からステップS810へ処理が進む。よって、エリアIDが“Aa1”のエントリはジョブ選択情報に追加されない。その後、式(51)の2件目の〈Ab1,8〉というエントリに関して、ステップS807で残り空きPC台数が8から0に更新され、ステップS809で式(53)の2つのエントリが追加される。
その後、式(51)の3件目の〈Ac1,8〉というエントリに関しては、やはりステップS806からステップS810へ処理が進むため、ジョブ選択情報へのエントリの追加は行われない。また、式(51)の4件目の〈Ac2,4〉というエントリに関しては、ステップS804からS810へ処理が進むので、やはりジョブ選択情報へのエントリの追加は行われない。以上から、最終的にジョブ選択情報は式(53)の2つのエントリを有することになる。
さて、再配置部212は、以上のようにして図8BのステップS507において図8Fの処理を行ってジョブ選択情報を取得すると、続いて図8BのステップS508において、現在注目している再配置先候補に関する再配置の可能性を判断する。具体的には、再配置部212は、再配置フラグを参照し、再配置フラグが1ならば「現在注目している再配置先候補に関して再配置の可能性がある」と判断し、再配置フラグが0ならば「現在注目している再配置先候補に関して再配置の可能性がない」と判断する。
換言すれば、再配置部212は、図8FのステップS809でのジョブ選択情報へのエントリ追加の結果として、ステップS813で再配置フラグを1に上書きしたときは、「再配置の可能性がある」と判断する。
逆に、ジョブ選択情報が図8EのステップS710または後述の図8BのステップS533でクリアされた初期状態のままであれば、再配置フラグも0である。よって、この場合に再配置部212は、「現在注目している再配置先候補に関しては再配置の可能性がない」と判断する。
そして、再配置フラグが1の場合、処理はステップS509に移行する。再配置フラグが0の場合、他の再配置先候補への再配置を検討するために、処理は図8CのステップS531に移行する。
さて、ステップS509で再配置部212は「ジョブ再配置情報」をクリアして初期化する。ジョブ再配置情報は、再配置情報(図8DのステップS607で初期化され、後述のステップS517に相当する図8HのステップS1001でエントリが追加される情報)を得るための一時的な情報であり、形式は再配置情報と同じである。つまり、ジョブ再配置情報は、〈再配置元のPCID,再配置先のPCID〉の組を個々のエントリとして有する。
また、ここでクリアされたジョブ再配置情報には、後述のステップS515(より詳しくは図8GのステップS917)でエントリが追加される。さらに、その後のステップS519でジョブ再配置情報は再度クリアされる。
続くステップS510〜S521の処理は、再配置元の候補を示す情報としてステップS507で得たジョブ選択情報の各エントリに関する繰り返し処理である。
まず、ステップS510で再配置部212は、ジョブ選択情報から1件目のエントリを読み込む。そして、再配置部212は、当該エントリのエリアID、スイッチID、ジョブID、割り当て済PC台数を、それぞれ「選択ジョブエリアID」、「選択ジョブスイッチID」、「選択ジョブID」、「選択ジョブ割り当て済PC台数」として記憶する。
例えば、ジョブ選択情報が式(53)の2つのエントリを含む場合、1件目のエントリから、ステップS510では、選択ジョブエリアIDが“Ab1”に設定され、選択ジョブスイッチIDが“Sb1”に設定される。そして、選択ジョブIDが“Ja”に設定され、選択ジョブ割り当て済PC台数が4に設定される。
次のステップS511で再配置部212は、ステップS510または後述のステップS521で設定された選択ジョブ割り当て済PC台数と、空きPC台数を比較する。なお、空きPC台数の値は、図8AのステップS504または後述の図8CのステップS532において現在注目している再配置先候補に関して設定され、ステップS510〜S521の実行につれて減少する。
選択ジョブ割り当て済PC台数が空きPC台数以下の場合、再配置の検討を続けるために処理はステップS513へ移行する。
逆に、選択ジョブ割り当て済PC台数が空きPC台数より多いとき、再配置部212は「現在注目している再配置先候補への再配置はうまくいかない」と判断する。この場合、再配置部212は次の再配置先候補について検討しようとするが、再配置失敗と再配置部212が判断した現在の再配置先候補に関して、既にデータが更新されている場合もある。つまり、後述のステップS517でのデータの更新の後、処理がステップS521からステップS511へと戻ってきた場合もある。そこで、ステップS511において選択ジョブ割り当て済PC台数が空きPC台数より多いときには、データのロールバックのために、まず処理はステップS512へと移行する。
ステップS512で再配置部212は、当該再配置先候補に関してステップS506でバックアップしたデータを使って、各種データのリストアを行う。つまり、再配置部212は、ステップS506に関して(s1)〜(s5)として列挙した各情報のリストア(すなわちロールバック)を行う。そして、次の再配置先候補についての検討のため、処理は図8CのステップS531に移行する。
他方、ステップS513で再配置部212は、図8DのステップS603で記憶した暫定ジョブ・PC情報から「再配置対象PC数」を求める。具体的には、再配置部212は、暫定ジョブ・PC情報において状態が“再配置済”でなくジョブIDが選択ジョブIDに等しいエントリにおけるPCリストに含まれるPCIDの数を、再配置対象PC数として求める。そのようなエントリがなければ、再配置対象PC数は0である。
例えば、ステップS603に関して説明したように、暫定ジョブ・PC情報が図3Bの情報Deに空白の状態を追加したものであるとする。そして、ジョブ選択情報が式(53)のとおりであり、1つ目のエントリのジョブIDである“Ja”が選択ジョブIDに設定されたとする。すると、図3Bから明らかなように、(Pb01,Pb02,Pb03,Pb04)というリストに含まれるPCIDの数である4が、再配置対象PC数として得られる。
また、再配置対象PC数の意味を説明すれば以下のとおりである。
ここで、暫定ジョブ・PC情報において状態が“再配置済”となるのは、後のステップS517(詳細は図8H)の処理で状態が書き換えられた場合のみである。また、暫定ジョブ・PC情報は、図8AのステップS501に相当する図8Dにおいて、ステップS603で記憶された情報である。よって、最初にステップS513が実行されるとき、再配置対象PC数は、「選択ジョブIDで識別されるジョブは、全部で何台のPCに割り当てられているのか」(換言すれば、選択ジョブIDで識別されるジョブの並列数)を示す。
また、2回目以降にステップS513が実行されるとき、暫定ジョブ・PC情報は、状態が“再配置済”のエントリを有する可能性がある。このとき、再配置部212は、状態が“再配置済”のエントリを除いて再配置対象PC数を求めることで、同じジョブを次々と別のPCへと再配置する繰り返しを防ぐ。
再配置部212が、ステップS510やS521で求める選択ジョブ割り当て済PC台数とは別に、改めてステップS513で再配置対象PC数を求める理由は、次のとおりである。
再配置部212は、図8Fに示すようにエリアに注目してジョブ選択情報を作成したが、複数のエリアにまたがって存在する複数のPCに1つの同じジョブが割り当てられている可能性もある(例えば、満足度4の場合など)。ここで、「複数のエリアにまたがって割り当てられているかもしれない1つのジョブを、同一エリア内にあり、かつ同一スイッチに接続されているPCに再配置することが可能である」ことは、「評価を下げない再配置が可能である」ことの十分条件である。
よって、再配置部212は、「評価を下げずに、また、再配置を次々と繰り返すことがないように」という制約のもとでの再配置の可能性について検討するため、再配置対象PC数を求めている。
続くステップS514で、再配置部212は、再配置対象PC数が0であるか、それとも0より大きいかを判断する。
再配置対象PC数が0のとき(つまり、暫定ジョブ・PC情報においてジョブIDが選択ジョブIDに等しいエントリの状態が“再配置済”のとき)、ジョブ選択情報の次のエントリの検討のため、処理はステップS520に移行する。
逆に、再配置対象PC数が0より大きいときは、現在再配置部212が注目しているジョブ選択情報のエントリに関する再配置についての検討を続けるため、処理はステップS515に移行する。
ステップS515で再配置部212は、選択ジョブIDが示すジョブの並列数に対応可能なPCという制約条件下で、再配置元と再配置先のPCの組の対応づけを試みる。具体的には、再配置部212は図8Gの処理を行う。
図8GのステップS901〜S906は、初期化のためのステップであり、実行順序は適宜変更することができる。
ステップS901で再配置部212は、「ジョブ再配置PC数」を0に初期化する。ジョブ再配置PC数は、現在注目しているジョブ(つまり選択ジョブIDにより識別されるジョブ)が割り当てられたPCのうち、現在注目している再配置先候補に含まれるPCと対応づけが可能なものの数を示す。
なお、再配置部212は、ステップS908〜S920とともに後述するように、「当該ジョブの並列数に対応可能なPC同士の間での再配置のみが許される」という制約条件下で、対応づけが可能か否かを試みる。そして、再配置部212は、対応づけが可能なものの数をジョブ再配置PC数として数え、記憶する。
ステップS902で再配置部212は、選択ジョブIDをもとに、図8DのステップS603で得た暫定ジョブ・PC情報から、現在注目しているジョブに対応するキューIDを求め、「選択ジョブ実行キューID」として記憶する。例えば、選択ジョブIDが“Ja”の場合、選択ジョブ実行キューIDは“Q08”である(ステップS603に関する説明と図3Bの情報Deを参照)。
そして、ステップS903で再配置部212は、暫定PC情報において、ジョブIDが選択ジョブIDで、かつ、状態が“再配置先”でないエントリのPCIDを求める。そして、再配置部212は、求めたPCIDのリストを、「選択ジョブPCリスト」として記憶する。
例えば、選択ジョブIDが“Ja”のとき、式(41)および図3Bから理解されるとおり、選択ジョブPCリストとして、次の式(54)のリストが得られる。
(Pb01,Pb02,Pb03,Pb04) (54)
なお、ステップS903ではジョブIDと状態のみが条件として用いられるので、再配置前のジョブの割り当て先が、教室、エリア、またはスイッチをまたがっているか否かは無関係である。つまり、図8Gの処理では、1つのジョブの割り当て先全体が、1つの再配置元の候補として扱われる。
したがって、図8EのステップS709で〈エリアID,スイッチID,ジョブID〉の組を単位として再配置部212が求めた再配置元の候補よりも、図8Gの処理での再配置元の候補の方が粒度が粗い。このように、再配置元のPCと再配置先のPCを個別具体的に対応づける段になって再配置元の候補の粒度を粗くする目的は、評価値を下げないで再配置を試みるための十分条件を満たすようにするためである。
また、ステップS904で再配置部212は、暫定PC情報において、状態が“電源OFF”で、かつ、エリアIDが空き情報エリアIDで、かつ、スイッチIDが空き情報スイッチIDのエントリのPCIDを求める。そして、再配置部212は、求めたPCIDのリストを、空きPCリストとして得る。
例えば、式(50)で表されるソート済スイッチ空きPC台数情報の1件目の〈Ac2,Sc3,8〉というエントリが、現在再配置先の候補として注目されているとする。このとき、ステップS504に関して述べたとおり、空き情報エリアIDは“Ac2”で、空き情報スイッチIDは“Sc3”である。また、エリアAc2に配置されスイッチSc3に接続されているPC・Pc17〜Pc24は、図8DのステップS602に関して説明したように、“電源OFF”状態である。よって、この場合の空きPCリストは次の式(55)のとおりである。
(Pc17,Pc18,Pc19,Pc20,
Pc21,Pc22,Pc23,Pc24) (55)
さらに、ステップS905で再配置部212は、図3Cのキュー・PC定義情報Dhから、キューIDがステップS902で設定した選択ジョブ実行キューIDに一致するエントリにおけるPCリストを、「実行キュー対応PCリスト」として得る。例えば、上記のようにステップS902で選択ジョブ実行キューIDとして“Q08”が得られた場合、図3Cによれば、実行キュー対応PCリストとして、次の式(56)のリストが得られる。
(Pa01,Pa02,Pa03,Pa04,
Pa05,Pa06,Pa07,Pa08,
Pb01,Pb02,Pb03,Pb04,
Pb05,Pb06,Pb07,Pb08,
Pc01,Pc02,Pc03,Pc04,
Pc05,Pc06,Pc07,Pc08,
Pc09,Pc10,Pc11,Pc12,
Pc13,Pc14,Pc15,Pc16,
Pc17,Pc18,Pc19,Pc20,
Pc21,Pc22,Pc23,Pc24) (56)
さて、続くステップS906で再配置部212は、ステップS903で得た選択ジョブPCリスト中のPCIDの数を求め、「割り当てPC数」として記憶する。例えば、選択ジョブPCリストが式(54)のとおりである場合、割り当てPC数は4である。
以上のステップS901〜S906による初期化の後、ステップS907において再配置部212は、空きPC台数と、ステップS906で求めた割り当てPC数を比較する。
なお、空きPC台数は、図8AのステップS504または後述の図8CのステップS532で求めた値を持ち、現在注目している再配置先の候補に含まれるPCの台数を示す。例えば、再配置部212が現在再配置先の候補として注目しているのが式(50)の1件目の〈Ac2,Sc3,8〉というエントリの場合、空きPC台数は8である。また、空きPC台数を求めるのに用いたソート済スイッチ空きPC台数情報の定義(図8EのステップS701〜S706を参照)より、空きPC台数は、ステップS904で得た空きPCリストの要素数にも一致する。
空きPC台数が割り当てPC数より小さい場合、再配置元のPCと再配置先のPCの個別の対応づけは、再配置元のPCが足りないので明らかに不可能である。よって、図8Gの処理は終了する。
他方、空きPC台数が割り当てPC数以上ならば、再配置元のPCと再配置先のPCの個別の対応づけを試みるため、処理はステップS908に移行する。ステップS908〜S920の概要を先に説明すると、次のとおりである。
すなわち、ステップS908〜S920で再配置部212は、選択ジョブPCリストの各PCIDに順に注目し、注目しているPCIDが示すPC(つまり再配置元の候補のPC)に再配置先として対応づけが可能なPCを探す。ここで、再配置部212が選択ジョブPCリストのPCIDに順に注目していく繰り返し処理は、ステップS911からステップS916へ進み、ステップS917〜S920を経由してステップS909に戻るループに相当する。
また、ステップS904で得られた空きPCリストは、あくまでも潜在的な再配置先の候補を示すだけである。よって、再配置部212は、再配置先として対応づけが可能なPCを探す。
具体的には、再配置部212は、再配置先の候補のPCが再配置先として実際に利用可能か否か(つまりジョブの並列数に対応しているか否か)ということを、ステップS910〜S913のループにより判断する。また、ステップS914とS915を経由してステップS910に戻るループは、あるPCが実際の再配置先として利用不能と判明した場合に、再配置部212が他のPCを再配置先として検討するための繰り返し処理である。
以下に、ステップS908〜S920の詳細を説明する。
ステップS908で再配置部212は、選択ジョブPCリスト中の1つ目のPCIDを得て、「割り当てPCID」として記憶する。例えば、選択ジョブPCリストが式(54)のとおりである場合、割り当てPCIDは“Pb01”である。
次のステップS909で再配置部212は、ステップS904で得た空きPCリスト中の1つ目のPCIDを得て、「空きPCID」として記憶する。例えば、空きPCリストが式(55)のとおりであれば、最初にステップS909が行われるときの空きPCIDは“Pc17”である。
なお、空きPCリストは、ステップS904で得られた後、後述のステップS918において要素の削除が行われ、図8Gの処理が進むにつれて短くなる。ステップS909の実行後、処理はステップS910に移行する。
ステップS910で再配置部212は、ステップS905で得た実行キュー対応PCリスト中の1つ目のPCIDを得て、「キュー対応PCID」として記憶する。例えば、実行キュー対応PCリストが式(56)のとおりである場合、ステップS910で得られるキュー対応PCIDは“Pa01”である。
そして、次のステップS911で再配置部212は、ステップS909または後述のステップS915で得た空きPCIDが、ステップS910または後述のステップS913で得たキュー対応PCIDと等しいか否かを判断する。つまり、再配置部212は、潜在的な再配置先であるPCが、実際の再配置先となりうるか否かを、当該PCがジョブの並列数に対応しているか否かによって判断する。
空きPCIDとキュー対応PCIDが等しくなければ、「空きPCIDにより識別されるPCは、処理の現段階では、『現在注目しているジョブの並列数に対応している』とは判明していない」ということなので、処理はステップS912に移行する。そして、再配置部212は、ステップS912以降で、空きPCIDにより識別されるPCが上記並列数に対応しているか否かの検討を、「対応」または「非対応」と判明するまで続け、「非対応」と判明したら、別の再配置先の候補を探す。
他方、空きPCIDとキュー対応PCIDが等しければ、空きPCIDは実際の再配置先として利用可能なPCを示している。よって、再配置元と再配置先の対応づけを行うために、処理はステップS916に移行する。
さて、ステップS912で再配置部212は、実行キュー対応リストのすべての内容を処理したか否かを判断する。つまり、再配置部212は、ステップS909または後述のステップS915で設定した、空きPCIDの現在の値を、実行キュー対応リスト中のすべてのPCIDの値とステップS911で比較し終えたか否かを判断する。
現在の空きPCIDに対して未処理のPCID(つまりステップS911の比較を行っていないPCID)がまだ実行キュー対応PCリストに残っていれば、処理はステップS913に移行する。つまり、現在の空きPCIDが示すPCは、注目しているジョブの並列数に対応している可能性が残っているので、再配置部212は引き続きその可能性を調べる。
逆に、現在の空きPCIDが、実行キュー対応PCリスト中のすべてのPCIDと比較済であれば、現在の空きPCIDが示すPCは、注目しているジョブの並列数には非対応である。よって、再配置部212は再配置先の別の候補を探そうとし、処理はステップS914に移行する。
ステップS913で再配置部212は、実行キュー対応PCリスト中の次のPCIDを得て、新たなキュー対応PCIDとして記憶する。そして、処理はステップS911に戻る。
また、ステップS914で再配置部212は、空きPCリストのすべての内容を処理したか否かを判断する。つまり、再配置部212は、現在の割り当てPCIDに対して、空きPCリスト中のすべてのPCIDを空きPCIDとして取り出し終えたか否かを判断する。
空きPCリストのすべての内容が処理済のとき、現在の割り当てPCIDに対して再配置部212が再配置先の候補を調べつくしたということであり、これ以上再配置元と再配置先のPCを個別に対応づける試みを続ける余地はない。よって、再配置部212は図8Gの処理(すなわち図8BのステップS515の処理)を終える。
他方、まだ空きPCIDとして取り出して注目していないPCIDが空きPCリスト中に残っているとき、再配置先の別の候補がまだ残っているということである。よって、その候補についての検討を続けるため、処理はステップS914からステップS915に移行する。
ステップS915で再配置部212は、空きPCリスト中の次のPCIDを得て、新たな空きPCIDとして記憶する。そして、処理はステップS910に戻る。
さて、ステップS911で空きPCIDとキュー対応PCIDが一致すると判明した場合、ステップS916で再配置部212は、ジョブ再配置PC数(ステップS901で初期化した変数)の値を1だけ増やす。
そして、次のステップS917で再配置部212は、〈割り当てPCID,空きPCID〉の組を、ジョブ再配置情報に追加出力する。つまり、再配置部212は、再配置元のPCIDとして割り当てPCIDを設定し、再配置先のPCIDとして空きPCIDを設定したエントリをジョブ再配置情報に追加する。なお、ジョブ再配置情報は、図8Bの前述のステップS509または後述のステップS519でクリアされて初期化されているので、図8Gの処理が開始される時点では何もエントリを持たない。
さらに次のステップS918で再配置部212は、空きPCリストから空きPCIDを削除する。つまり、ある再配置元のPCに対してその再配置先として対応づけたPCは、他の再配置元のPCに対して重複して対応づけることはできないので、今後は再配置先の候補から外される。
そして、次のステップS919で再配置部212は、ステップS903で得た選択ジョブPCリストのすべての内容を処理したか否かを判断する。つまり、再配置部212は、選択ジョブPCリスト中のすべてのPCIDを、割り当てPCIDとして取り出し終えたか否かを判断する。
選択ジョブPCリストのすべての内容が処理済のとき、再配置部212は、図8Gの処理において対応づけを試みる対象であるすべての再配置元の候補のPCに関して、対応づけを行うことができたということである。よって、再配置部212は図8Gの処理(すなわち図8BのステップS515の処理)を終える。
他方、まだ割り当てPCIDとして取り出して注目していないPCIDが選択ジョブPCリスト中に残っているとき、再配置先との対応づけをまだ試みていない再配置元の候補のPCがまだ残っているということである。よって、その候補についての対応づけの試みを続けるため、処理はステップS920に移行する。
ステップS920で再配置部212は、選択ジョブPCリスト中の次のPCIDを得て、新たな割り当てPCIDとして記憶する。そして処理はステップS909に戻る。
なお、ステップS918で空きPCIDリストからの要素の削除をしてから、ステップS919とS920を経由してステップS909に戻る場合、ステップS909では空きPCリストに1つ以上要素が必ず存在する。なぜなら、上記のとおり空きPC台数は空きPCリストの要素数に一致し、かつ、選択ジョブPCリストの要素数が割り当てPC数として定義されており、かつ、ステップS907で空きPC台数は割り当てPC数以上であると確認済だからである。
以上説明した図8Gの処理の結果として、例えば、現在ジョブJaに注目している場合、ジョブ再配置情報のエントリとして、次の式(57)に示す4つのエントリが得られる(式(54)〜(56)を参照)。
〈Pb01,Pc17〉,
〈Pb02,Pc18〉,
〈Pb03,Pc19〉,
〈Pb04,Pc20〉 (57)
さて、ここで図8Bの説明に戻る。図8Gに詳細に示した処理をステップS515において実行した後、ステップS516で再配置部212は、「現在注目している当該ジョブ全体を、現在注目している当該再配置先候補に再配置可能であるか否か」を判断する。
具体的には、再配置部212は、割り当てPC数とジョブ再配置PC数が等しいか否かを判断する。
割り当てPC数は、図8GのステップS906で設定したとおり、現在注目しているジョブがもともとは何台のPCに割り当てられていたのかを示す。つまり、当該ジョブの並列数でもある。また、ジョブ再配置PC数は、図8GのステップS901、S916、S917から理解されるとおり、ジョブ再配置情報のエントリの数であり、換言すれば、再配置元のPCと再配置先のPCの具体的なペアを作ることができた数である。
割り当てPC数とジョブ再配置PC数が等しい場合、再配置対象として現在注目している当該ジョブ全体を、エリアIDとスイッチIDの組を単位として現在注目している当該再配置先候補に再配置可能である。よって、可能と判明した再配置の仕方を記憶するため、処理はステップS517に移行する。
他方、割り当てPC数とジョブ再配置PC数が等しくない場合、「現在注目している当該ジョブ全体を現在注目している当該再配置先候補に再配置することはできない」と判明したということである。よって、ジョブ選択情報の次のエントリの検討に備えるため、処理はステップS518に移行する。
ステップS517で再配置部212は、ステップS516で可能と判明した再配置の仕方を記憶する。具体的には、再配置部212は図8Hの処理を行う。
図8HのステップS1001で、再配置部212は、ジョブ再配置情報の全エントリ(例えば式(57)の4つのエントリ)を再配置情報に追加する。
また、ステップS1002で再配置部212は、ジョブ再配置情報の各エントリについて、当該エントリの再配置元のPCIDに対応するエリアIDとエリアIDが一致するエントリをエリア割り当てPC台数情報において検索する。そして、再配置部212は、検索の結果ヒットした各エントリの割り当て済PC台数を1ずつ減らす。なお、エリア割り当てPC台数情報は、図8AのステップS503(より詳しくは図8EのステップS708〜S709)で得られた後、図8BのステップS517(つまり図8Hの処理)が実行されるたびに、ステップS1002とS1003で更新される。
すなわち、ここで説明の便宜上、ジョブ再配置情報がM個のエントリ〈PCfrom(1),PCto(1)〉,……,〈PCfrom(M),PCto(M)〉を有するとすると(Mはジョブ再配置PC数)、ステップS1002で再配置部212は、各エントリ〈PCfrom(j),PCto(j)〉(1≦j≦M)について次の処理を行う。
まず、再配置部212は、当該エントリ〈PCfrom(j),PCto(j)〉の再配置元のPCIDであるPCfrom(j)とPCIDが一致するエントリを暫定PC情報において検索する。検索の結果、必ず1件のエントリがヒットするので、再配置部212はヒットしたエントリのエリアIDを「再配置元エリアID」(説明の便宜上「Aj」と記す)として取り出す。
そして、再配置部212は、エリア割り当てPC台数情報においてエリアIDが再配置元エリアIDと一致するエントリを検索する。検索の結果、必ず1件のエントリがヒットするので、再配置部212はヒットしたエントリ(説明の便宜上、〈Aj,Nj〉とする)において、割り当て済PC台数Njから1を減じ、当該エントリを〈Aj,Nj−1〉と更新する。なお、1≦j,k≦Mとして、j≠kならばPCfrom(j)≠PCfrom(k)だが、j≠kでもAj≠Akとは限らず、Aj=Akのこともある(つまりいくつかの異なるPCが同じ1つのエリアに存在することがある)。
したがって、以上の処理を再配置部212がジョブ再配置情報の各エントリ〈PCfrom(j),PCto(j)〉(1≦j≦M)について行うことで、エリア割り当てPC台数情報中の1つ以上のエントリにおいて割り当て済PC台数の値が減らされることになる。そして、減らされた量の合計は、ジョブ再配置PC数(すなわちM)である。
例えば、上記の例のようにして図8BのステップS515で式(57)のジョブ再配置位置情報が得られた直後の、ステップS517に相当する図8HのステップS1002では、式(51)のエントリ〈Ab1,8〉が更新される。つまり、このエントリ〈Ab1,8〉において、割り当て済PC台数が8から4に更新される。
そして、ステップS1003で再配置部212は、エリア割り当てPC台数情報において、エリアIDが空き情報エリアIDに一致するエントリの割り当て済PC台数にジョブ再配置PC数を加える。空き情報エリアIDは、現在注目している当該再配置先候補に対応して、図8AのステップS504または後述の図8CのステップS532で得られたエリアIDである。
例えば、上記の例のようにして図8BのステップS515で式(57)のジョブ再配置位置情報が得られた直後の、ステップS517に相当する図8HのステップS1003では、空き情報エリアIDが“Ac2”である。また、ジョブ再配置PC数は、式(57)のエントリ数に等しいので4である。よって、式(51)のエリア割り当てPC台数情報のうち、エリアIDが“Ac2”であるエントリ〈Ac2,4〉において、割り当て済PC台数が4から8(=4+4)に更新される。
続いて、ステップS1004で再配置部212は、エリア割り当てPC台数情報のエントリを、ステップS1002とS1003で変更された後の割り当て済PC台数の降順にソートする。
また、ステップS1005で再配置部212は、ジョブ割り当て情報において、ジョブIDが選択ジョブIDと一致するエントリの状態を“再配置済”に設定する。なお、ジョブ割り当て情報は、再配置元を示す情報として図8AのステップS503(より詳しくは図8EのステップS709)で得られた後、図8BのステップS517(つまり図8Hの処理)が実行されるたびに、ステップS1005で更新される。
さらに、ステップS1006で再配置部212は、暫定ジョブ・PC情報において、ジョブIDが選択ジョブIDと一致するエントリの状態を“再配置済”に設定する。なお、暫定ジョブ・PC情報は、図8AのステップS501(より詳しくは図8DのステップS603)で得られた後、図8BのステップS517(つまり図8Hの処理)が実行されるたびに、ステップS1006で更新される。また、選択ジョブIDは図8BのステップS510またはS521で設定されており、再配置の対象となったジョブを示す。
また、ステップS1007で再配置部212は、ジョブ再配置情報の各エントリの再配置元のPCに関して、暫定PC情報における状態を“再配置元”に設定する。例えば、ジョブ再配置情報が式(57)の4つのエントリを持つ場合、再配置部212は、暫定PC情報においてPC・Pb01〜Pb04に対応する4つのエントリの状態を“再配置元”に設定する。なお、暫定PC情報は、図8AのステップS501(より詳しくは図8DのステップS602)で得られた後、図8BのステップS517(つまり図8Hの処理)が実行されるたびに、ステップS1007とS1008で更新される。
そして、ステップS1008で再配置部212は、ジョブ再配置情報の各エントリの再配置先のPCに関して、暫定PC情報において、ジョブIDを選択ジョブIDに設定し、状態を“再配置先”に設定する。なお、選択ジョブIDは、図8BのステップS510または後述のS521で、再配置されるジョブを示すIDとして設定されている。
例えば、ジョブJaに関して式(57)の4つのエントリを持つジョブ再配置情報が得られた場合、再配置部212は、暫定PC情報においてPC・Pc17〜Pc20に対応する4つのエントリを、ステップS1008で更新する。
また、ステップS1009で再配置部212は、図8BのステップS506で0に初期化されたエリア再配置PC数に、図8Gの処理で得られたジョブ再配置PC数を足し、加算結果を新たなエリア再配置PC数として記憶する。
そして、以上のようにして図8BのステップS517に相当する図8Hの処理が終了すると、処理は図8BのステップS519に移行する。
また、ステップS518では、再配置部212は、ジョブ再配置PC数に0を設定する。その理由は、ステップS516において「現在注目している当該ジョブ全体を、現在注目している当該再配置先候補に再配置可能ではない」と再配置部212が判断した後で、処理がステップS519、S520、S521と進むことがあるからである。その場合、後述するようにステップS521で再配置部212は、ジョブ再配置PC数を使った計算を行うが、事前にステップS518でジョブ再配置PC数に0を設定することで、ステップS516の分岐に応じた正しい計算結果が得られる。ステップS518の実行後、処理はステップS519に移行する。
さて、ステップS517またはS518の処理を実行した後、再配置部212は、続いて図8BのステップS519において、ジョブ再配置情報をクリアする。つまり、再度ステップS515(図8Gの処理)を実行する場合に備えて、再配置部212はジョブ再配置情報を初期化しなおす。
続いて、ステップS520で再配置部212は、ステップS507で得たジョブ選択情報のすべてのエントリを処理したか否かを判断する。つまり、再配置部212は、ジョブ選択情報のすべてのエントリに対してステップS511〜S519の処理を行ったか否かを判断する。
未処理のエントリがジョブ選択情報に残っていれば、処理はステップS521に移行する。逆に、すべてのエントリが処理済であれば、処理は図8CのステップS522に移行する。
そして、ステップS521で再配置部212は、空きPC台数からジョブ再配置PC数を引き、減算結果を新たな空きPC台数として記憶する。更新後の空きPC台数は、現在注目している再配置先候補に含まれるPCのうち、まだ再配置元と具体的に対応づけられていないPCの台数を示す。
なお、空きPC台数は、もともと、現在注目している再配置先候補に対応して図8AのステップS504または図8Cの後述のステップS532で設定された値を持っている。また、ジョブ再配置PC数は、ステップS515(詳細は図8G)での試みの結果としてステップS516において「可能」と判明した再配置に関わるPCの数を示し、場合によってはステップS518で適宜0に設定しなおされている。よって、更新後の空きPC台数は、再配置先としての残りのキャパシティを示す。
また、ステップS521で再配置部212はさらに、ジョブ選択情報から次のエントリを読み込む。そして、ステップS510と同様に再配置部212は各変数の設定を行う。すなわち、再配置部212は、読み込んだ当該エントリのエリアID、スイッチID、ジョブID、割り当て済PC台数を、それぞれ選択ジョブエリアID、選択ジョブスイッチID、選択ジョブID、選択ジョブ割り当て済PC台数として記憶する。そして、処理はステップS511に戻る。
例えば、ステップS521では式(53)の2つ目のエントリが読み込まれ、選択ジョブエリアIDは“Ab1”、選択ジョブスイッチIDは“Sb1”、選択ジョブIDは“Jb”、選択ジョブ割り当て済PC台数は4と設定される。そして、ステップS504で上記の例のように空きPC台数が8と設定されており、ステップS515により式(57)のように4つのエントリを持つジョブ再配置情報が得られた場合、ステップS521では空きPC台数が4(=8−4)に更新される。
すると、処理がステップS511に戻った後、再度ステップS515に相当する図8Gの処理が実行される。すると、図8GのステップS902で得られる選択ジョブ実行キューIDは“Q08”であり、ステップS903で得られる選択ジョブPCリストは式(58)のとおりであり、ステップS904で得られる空きPCリストは式(59)のとおりである。
(Pb05,Pb06,Pb07,Pb08) (58)
(Pc21,Pc22,Pc23,Pc24) (59)
また、ステップS905では式(56)と同じ実行キュー対応PCリストが得られる。その結果、図8Gの処理が終了した時点のジョブ再配置情報は、式(60)の4つのエントリを有する。
〈Pb05,Pc21〉,
〈Pb06,Pc22〉,
〈Pb07,Pc23〉,
〈Pb08,Pc24〉 (60)
そして、処理はステップS516、S517と進む。ここで、1回目のステップS517の結果として、既にエリア割り当てPC台数情報は式(51)の状態から以下の式(61)の状態になっている。
〈Aa1,16〉,
〈Ac1, 8〉,
〈Ac2, 8〉,
〈Ab1, 4〉 (61)
よって、2回目のステップS517の結果として、エリア割り当てPC台数情報は式(61)の状態から式(62)の状態となる。
〈Aa1,16〉,
〈Ac2,12〉,
〈Ac1, 8〉,
〈Ab1, 0〉 (62)
その後、処理はさらにS519、S520と順に進む。ここで、式(53)のジョブ選択情報には2つしかエントリがないので、今度はステップS520から図8CのステップS522へと処理が移行する。
さて、ステップS520でジョブ選択情報のすべてのエントリが処理済と判断すると、再配置部212はステップS522〜S530の処理を行う。ステップS522〜S530で再配置部212は、当該再配置先候補に関してジョブ選択情報の各エントリについての繰り返し処理を行う過程のステップS517において記憶した内容を有効と認めるか否かを決定する。そして、再配置部212は、必要に応じて、ステップS517で記憶した内容を無効にするためのリストアを行う。具体的な処理は次のとおりである。
ステップS522で再配置部212は、図8BのステップS507に相当する図8Fの処理で作成した再配置元エリアIDリストの1つ目の値を読み込み、「再配置元エリアID」として記憶する。なお、ステップS522が実行される場合、再配置元エリアIDリストは空ではなく、必ず1つ以上の要素を持つ。なぜなら、再配置元エリアIDリストが空の場合は、図8Fから明らかに再配置フラグが0のままなので、処理はステップS508からステップS531へと進み、ステップS522が実行されることはないからである。
そして、次のステップS523で再配置部212は、暫定PC情報で、ステップS522または後述のステップS527で記憶した再配置元エリアIDに一致するエリアIDを持つエントリのうち、状態が“割り当て済”のエントリの件数を求める。そして、再配置部212は、求めた件数を「再配置元割り当て台数」として記憶する。
なお、図8BのステップS516で再配置可能と判断されたジョブに関しては、ステップS517で状態が“再配置済”に更新されている。よって、ステップS523で再配置元割り当て台数として数えられるエントリは、まだ、再配置されたことのないPCが対象となる。
次のステップS524で再配置部212は、再配置元割り当て台数が0か否かを判断する。そして、再配置元割り当て台数が0のとき、処理はステップS528に移行する。他方、再配置元割り当て台数が0ではないとき(つまり正のとき)、処理はステップS525に移行する。
ステップS525で再配置部212は、「再配置元割り当てフラグ」を−1に設定する。
そして、次のステップS526で再配置部212は、再配置元エリアIDリストのすべての値を処理したか否か(つまり、再配置元エリアIDリストのすべての要素を、再配置元エリアIDとして注目し終えたか否か)を判断する。未処理の値が再配置元エリアIDリストに残っていれば、処理はステップS527に移行する。他方、再配置元エリアIDリストのすべての値が処理済であれば、処理はステップS529に移行する。
ステップS527で再配置部212は、再配置元エリアIDリストの次の値を読み込み、再配置元エリアIDとして記憶する。そして処理はステップS523に戻る。
他方、ステップS528では、再配置部212は、再配置元割り当てフラグを0に設定する。そして、処理はステップS529へと移行する。
ステップS529で再配置部212は、再配置元割り当てフラグが0か否かを判断する。なお、メモリ上のワークエリアの明示的な解放を再配置部212が行う実施形態においては、再配置部212は、例えばステップS529で、配置元エリアIDリスト用のワークエリアを解放してもよい。
再配置元割り当てフラグが0の場合、再配置元エリアIDリストに含まれる少なくとも1つのエリアIDについて、当該エリアIDが示すエリア内のPCに割り当てられていたジョブはすべて、他のエリア内のPCへの再配置が成功している。よって、成功した再配置だけでも活かすため、再配置部212は「データのリストアは不要」と判断し、処理はステップS531へと移行する。
他方、再配置元割り当てフラグが0ではない場合、「エリア内のPCに割り当てられていたジョブはすべて、他のエリア内のPCに再配置することができた」という条件を満たすエリアは1つもなかったということである。よって、この場合、再配置部212は「データのリストアが必要」と判断し、処理はステップS530に移行する。
ステップS530で再配置部212は、当該再配置先候補に関してステップS506でバックアップしたデータを使って、各種データのリストアを行う。つまり、再配置部212は、ステップS506に関して(s1)〜(s5)として列挙した各情報のリストア(すなわちロールバック)を行う。そして、処理はステップS531に移行する。
以上のステップS522〜S530の処理によれば、ジョブ選択情報が複数のエントリを有しており、複数のエントリ間でエリアIDが異なり、一部のエリアに関わるジョブについてだけ再配置が可能と判明した場合に、再配置の検討結果を活かすことが可能となる。ステップS522〜S530の処理の利点は、図1などに示したのとは別の以下のような環境を想定すると明らかである。
例えば、4つの教室があり、各教室は1つのエリアだけを含むとする。また、便宜上、4つのエリアを、エリアα、β、γ、δと呼ぶことにする。そして、エリアαにはスイッチα1とα2があり、スイッチα1とα2には4台ずつPCが接続されるとし、エリアβには4台のPCが接続されるスイッチβ1があるとする。また、エリアγには8台のPCが接続されるスイッチγ1があり、エリアδには16台のPCが接続されるスイッチδ1があるとする。
そして、再配置前の状況を式(52)と同様の形式でジョブ割り当て情報として示すと、以下の式(52b)のようになるとする。
〈α,α1,J1,2,NULL〉,
〈α,α1,J2,2,NULL〉,
〈α,α2,J3,2,NULL〉,
〈α,α2,J4,2,NULL〉,
〈β,β1,J5,4,NULL〉,
〈γ,γ1,J6,2,NULL〉,
〈γ,γ1,NULL,0,NULL〉,
〈δ,δ1,NULL,0,NULL〉 (52b)
この場合、ソート済みスイッチ空きPC台数情報を式(50)と同様の形式で表現すると、以下の式(50b)のとおりである。
〈δ,δ1,16〉,
〈γ,γ1,6〉,
〈α,α1,0〉,
〈α,α2,0〉,
〈β,β1,0〉 (50b)
また、エリア割り当てPC台数情報を式(51)と同様の形式で表現すると、以下の式(51b)のとおりである。
〈α,8〉,
〈β,4〉,
〈γ,2〉,
〈δ,0〉 (51b)
すると、再配置先候補としてまず式(50b)の1番目の〈δ,δ1,16〉というエントリが選択された場合、得られるジョブ選択情報は、式(53)と同様の形式で表現すれば以下の式(53b)のとおりである。
〈α,α1,J1,2,NULL〉,
〈α,α1,J2,2,NULL〉,
〈α,α2,J3,2,NULL〉,
〈α,α2,J4,2,NULL〉,
〈β,β1,J5,4,NULL〉,
〈γ,γ1,J6,2,NULL〉 (53b)
ここで、エリアδ内の16台のPCは、並列数2のキュー専用で、並列数4には非対応とする。すると、図8Gの処理により、ジョブJ1〜J4とJ6はエリアδに再配置可能と判明するが、ジョブJ5は再配置することができない。つまり、再配置部212が式(50b)の〈δ,δ1,16〉というエントリに再配置先候補として注目しているとき、「エリアαとエリアγからエリアδへの再配置は可能だが、エリアβからエリアδへの再配置はできない」ということが判明する。
以上のような状況下で、式(53b)のジョブ選択情報の複数のエントリに含まれるエリアIDが示す複数のエリアのうち、すべてのエリアからの再配置が可能ではなくても、一部のエリアからの再配置だけでも可能ならば、可能な再配置を行うことが考えられる。つまり、本実施形態の再配置部212は、現在注目している再配置先候補に関して、たとえエリアα、β、γという3つすべてのエリアからの再配置が可能ではないとしても、エリアαとγからの再配置だけでも可能ならば、可能と判明した再配置だけでも実行する。
具体的には、この例の場合、図8BのステップS507(すなわち図8Fの処理)の実行後の再配置元エリアIDリストは(α,β,γ)となる。よって、式(53b)のジョブ選択情報の1〜4番目と6番目のエントリに関して再配置部212がステップS517で行った処理の結果から当然に、ステップS528で再配置元割り当てフラグは0に設定される。
したがって、ステップS530のリストアは実行されない。つまり、式(53b)のジョブ選択情報の1〜4番目と6番目のエントリに関して「可能」と判明し、ステップS517で記録された再配置の仕方は、無効化されない。このように、ジョブ選択情報の一部のエントリに関する再配置ができなくても、他の一部のエントリに関して可能と判明した再配置によって、あるエリア内でジョブの割り当て先となるPCをなくすことができるなら、可能な再配置は活かされる。
さて、ステップS531で再配置部212は、すべての再配置先候補を処理したか否かを判断する。すなわち、再配置部212は、図8AのステップS503(より詳しくは図8EのステップS701〜S706)で得たソート済スイッチ空きPC台数情報のすべてのエントリ(例えば式(50)の6つのエントリ)に注目し終わったか否かを判断する。
まだ注目していないエントリがソート済スイッチ空きPC台数情報に残っていれば、未処理の再配置先候補があるということなので、処理はステップS532に移行する。他方、ソート済スイッチ空きPC台数情報のすべてのエントリ(すなわち、すべての再配置先候補)に注目済であれば、処理はステップS534に移行する。
ステップS532で再配置部212は、次の再配置先候補の情報を読み込み、変数の設定を行う。つまり、再配置部212は、ソート済スイッチ空きPC台数情報から次のエントリを読み込む。そして、再配置部212は、ステップS504と同様に、読み込んだ当該エントリのエリアID、スイッチID、空きPC台数を、空き情報エリアID、空き情報スイッチID、空きPC台数として記憶する。そして、処理は図8BのステップS533に移行する。
すると、ステップS533で再配置部212は、図8EのステップS710と同様にジョブ選択情報を初期化する。そして、処理はステップS505に戻る。
例えば、ソート済スイッチ空きPC台数情報が式(50)のとおりである場合、式(50)の2つ目のエントリは〈Ac2,Sc2,4〉なので、ステップS505が2回目に実行されるときの空きPC台数の値は4である。すると、4>0なので処理はステップS506からステップS507へと進む。
そして、ステップS507に相当する図8Fの処理が2回目に行われるとき、式(62)の1つ目から3つ目までのエントリに関しては、ステップS806からステップS810へと処理が進む。また、式(62)の4つ目のエントリに関しては、ステップS805からステップS812へと処理が進む。その結果、ステップS507の2回目の実行後の再配置フラグの値は0なので、処理はステップS508からステップS531へと移行する。
さて、ステップS534は、「再配置を行う余地がない」と再配置部212が判断した場合か、すべての再配置先候補について処理が終わった場合に実行される。ステップS534で再配置部212は、再配置情報から最終的な再配置結果を得る。具体的には、再配置部212はステップS534で、まず暫定PC情報を再配置後PC情報Dc4にコピーし、暫定ジョブ・PC情報を再配置後ジョブ・PC情報De4にコピーした後、以下の処理を行う。
すなわち、再配置部212は、再配置後PC情報Dc4の各エントリに順に注目する。説明の便宜上、再配置部212が注目している再配置後PC情報Dc4中のエントリのPCIDを「注目PCID」ということにする。再配置部212は、注目PCIDを再配置元のPCIDとして有するエントリが再配置情報に含まれるか否かを判断する。
なお、再配置情報の各エントリは、上述のとおり、〈再配置元のPCID,再配置先のPCID〉の組である。また、再配置部212が今までに再配置可能と判断した再配置元と再配置先の組み合わせは、もしあれば再配置情報のエントリとして登録されているし、もしなければ再配置情報は何もエントリを持たない初期状態のままである。
そして、注目PCIDを再配置元のPCIDとして有するエントリが再配置情報に含まれていれば、再配置部212は、注目PCIDに対応する再配置先のPCIDを当該エントリから得る。さらに、再配置部212は、再配置後PC情報Dc4において、注目PCIDをPCIDとして有するエントリと、上記のようにして得た再配置先のPCIDをPCIDとして有するエントリの間で、状態、ジョブID、予約の各フィールドの値を入れ替える。
また、再配置部212は、以上のようにして再配置後PC情報Dc4中のすべてのエントリに注目し終わると、続いて、再配置後ジョブ・PC情報De4の各エントリに順に注目する。説明の便宜上、再配置部212が注目している再配置後ジョブ・PC情報De4中のエントリを「注目エントリ」といい、注目エントリのジョブIDを「注目ジョブID」ということにする。
再配置部212は、再配置後PC情報Dc4においてジョブIDが注目ジョブIDと一致するエントリを検索する。そして、再配置部212は、検索の結果ヒットしたエントリにおける教室IDの値の集合を得て、得た集合を表すリストを、再配置後ジョブ・PC情報De4における注目エントリの教室IDフィールドに設定する。
また、再配置部212は、上記の検索の結果ヒットしたエントリにおけるエリアIDの値の集合を得て、得た集合を表すリストを、再配置後ジョブ・PC情報De4における注目エントリのエリアIDフィールドに設定する。さらに、再配置部212は、上記の検索の結果ヒットしたエントリにおけるスイッチIDの値の集合を得て、得た集合を表すリストを、再配置後ジョブ・PC情報De4における注目エントリのスイッチIDフィールドに設定する。
例えば、上記の例では、ステップS534の実行時には、既に式(57)と(60)のジョブ再配置情報が再配置情報にコピーされているので、再配置情報は式(63)のように8つのエントリを有する。
〈Pb01,Pc17〉,
〈Pb02,Pc18〉,
〈Pb03,Pc19〉,
〈Pb04,Pc20〉,
〈Pb05,Pc21〉,
〈Pb06,Pc22〉,
〈Pb07,Pc23〉,
〈Pb08,Pc24〉 (63)
よって、ステップS534で再配置部212は、これら8つのペアについて、それぞれ、暫定PC情報における状態、ジョブID、予約の各フィールドの入れ替えを行う。
また、上記の例では、図8DのステップS603に関して説明したとおり、暫定ジョブ・PC情報は、最初に得られた段階で図3Bの情報Deに空白の状態を追加したものである。
したがって、注目ジョブIDが“Jc”のときは、教室IDのリストとして(Ra)が、エリアIDのリストとして(Aa1)が、スイッチIDのリストとして(Sa1,Sa2)が得られる。また、注目ジョブIDが“Ja”のときと“Jb”のときは、教室IDのリストとして(Rc)が、エリアIDのリストとして(Ac2)が、スイッチIDのリストとして(Sc3)が得られる。
そして、注目ジョブIDが“Jd”のときは、教室IDのリストとして(Rc)が、エリアIDのリストとして(Ac1)が、スイッチIDのリストとして(Sc1)が得られる。また、注目ジョブIDが“Jg”のときは、教室IDのリストとして(Rc)が、エリアIDのリストとして(Ac2)が、スイッチIDのリストとして(Sc2)が得られる。
さて、続いて図9を参照して、図4のステップS119で運用モードを引数として実行される予約設定処理について説明する。
ステップS1101で予約部213は、再配置後ジョブ・PC予測情報De5から1件目のジョブの情報(つまり1件目のエントリ)を読み込む。
続くステップS1102〜S1108は、ステップS1101または後述のステップS1110で情報を読み込んだジョブに関する処理である。
具体的には、ステップS1102で予約部213は、ステップS1101(またはステップS1110)で情報を読み込んだ当該ジョブが使用するPCのうち1台目のPCのIDを得る。つまり、予約部213は、ステップS1101(またはステップS1110)で読み込んだエントリのPCリストの中から、1つ目のPCIDを取り出す。
続いて、ステップS1103で予約部213は、運用モードが“research”と“educate”のいずれであるかを判定する。なお、図4から明らかなとおり、運用モードが“start−GRID”のときに予約設定処理が実行されることはない。
運用モードが“research”のとき処理はステップS1104に移行する。他方、運用モードが“educate”のとき処理はステップS1105に移行する。
ステップS1104で予約部213は、ステップS1102または後述のステップS1107でPCIDを得た当該PCのブートOSにグリッド用OS(本実施形態ではUNIX)を設定する。設定後、処理はステップS1105に移行する。
ステップS1104での設定は、例えば、当該PCに対応する設定ファイルのシンボリックリンクの上書き更新により実現されてもよい。
例えば、ステップS1102またはS1107で得られたPCIDが「Pa01」だとする。この場合、予約部213は、運用管理装置100の“/tftpboot”ディレクトリにおいて“Pa01.conf”という名前で定義されるシンボリックリンクのリンク先を上書きする。つまり、予約部213は、グリッド用OSに対応する設定ファイル“/tftpboot/grid.conf”(図3Cの研究利用向けテンプレートDi1)を指すように、“Pa01.conf”というシンボリックリンクのリンク先を上書き更新する。換言すれば、予約部213はPC・Pa01に関してリンク設定Di5を書き換える。
そして、ステップS1105で予約部213は、ステップS1102またはS1107でPCIDが得られた当該PCについて、PC管理情報Dc3とPC予測情報Dc2における予約を“あり”に設定する。
そして、次のステップS1106で予約部213は、ステップS1101またはS1110で情報を得た当該ジョブが使用するすべてのPCについてステップS1103〜S1105の処理を行ったか否かを判断する。「当該ジョブが使用するすべてのPC」とは、換言すれば、ステップS1101またはS1110で得られたエントリの使用PCリストにPCIDが含まれるすべてのPCである。
判断の結果、未処理のPCが残っていれば処理はステップS1107に移行する。他方、すべてのPCについて処理済であれば処理はステップS1108に移行する。
ステップS1107で予約部213は、ステップS1101またはS1110で情報を得た当該ジョブが使用する次のPCのPCIDを得る。つまり、予約部213は、ステップS1101またはS1110で得られたエントリの使用PCリストの中から、未処理のPCIDを1つ取り出す。そして処理はステップS1103に戻る。
他方、ステップS1108で予約部213は、ステップS1101またはS1110で得た当該ジョブの情報をジョブ・PC予測情報De2に追加する。
なお、ステップS1101またはS1110で予約部213がエントリを得た再配置後PC予測情報Dc5は、追加先のジョブ・PC予測情報De2と同じデータ形式である。よって、ステップS1108の処理は、単純に、ステップS1101またはS1110で読み込み済のエントリをコピーする処理である。
そして、次のステップS1109で予約部213は、すべてのジョブを処理したか否かを判断する。つまり、予約部213は、再配置後ジョブ・PC予測情報De5のすべてのエントリについてステップS1102〜S1108の処理を行ったか否かを判断する。
まだ読み込んでいないエントリが再配置後ジョブ・PC予測情報De5に残っていれば、処理はステップS1110に移行する。他方、すべてのエントリについて処理済であれば処理はステップS1111に移行する。
ステップS1110で予約部213は、再配置後ジョブ・PC予測情報De5から次のジョブの情報(つまり次のエントリ)を読み込む。そして処理はステップS1102に戻る。
続くステップS1111〜S1116は、研究利用モードでのシステム101の運用中に、ジョブの実行に使われないPCを他の用途での利用に供するための処理である。例えば、システム101が大学で運用されている場合、研究利用モードの時間帯に空いているPCを学生の自習用に開放することが考えられる。
ステップS1111で予約部213は、PC管理情報Dc3において、下記の(t1)かつ(t2)という条件を満たすPCのPCIDを検索する。
(t1)状態が“電源OFF”である。
(t2)予約が“あり”ではない(つまり予約の値がNULLである)。
そして、予約部213は、検索結果を「グリッド予定外PCリスト」として記憶する。グリッド予定外PCリストは、空の場合もあるし、1つ以上のPCIDのリストの場合もある。
続いて、ステップS1112で予約部213は、グリッド予定外PCリストに含まれるPCIDの件数が0であるか、それとも1以上であるかを判断する。件数が0であれば、予約部213は図9の予約設定処理を終える。他方、件数が1以上であれば、処理はステップS1113に移行する。
ステップS1113で予約部213は、グリッド予定外PCの1件目のPCIDを取り出し、「グリッド予定外PC」として記憶する。
続いて、ステップS1114で予約部213は、運用モードが“research”と“educate”のいずれであるかを判定する。なお、ステップS1103に関して説明したとおり、運用モードが“start−GRID”のときに予約設定処理が実行されることはない。
運用モードが“research”のとき、処理はステップS1115に移行する。他方、運用モードが“educate”のとき、処理はステップS1116に移行する。
ステップS1115で予約部213は、ステップS1113でグリッド予定外PCとしてPCIDを記憶した当該PCのブートOSに教育用OSを設定する。そして処理はステップS1116に移行する。ステップS1115の処理は、リンク先が研究利用向けテンプレートDi1ではなく教育用利用向けテンプレートDi2であるという以外は、ステップS1104と類似なので、詳しい説明は省略する。
ステップS1116で予約部213は、ステップS1113でグリッド予定外PCとしてPCIDを記憶した当該PCについて、PC管理情報Dc3とPC予測情報Dc2における予約を“なし”(つまりNULL)に設定する。
次のステップS1117で予約部213は、グリッド予定外PCリストに含まれるすべてのPCIDについてステップS1113〜S1116の処理を行ったか否かを判断する。すべてのPCIDについて処理済であれば、図9の予約設定処理は終了する。他方、未処理のPCIDがグリッド予定外PCリストに残っていれば、処理はステップS1118に移行する。
ステップS1118で予約部213は、グリッド予定外PCリストの次のPCIDを取り出して、グリッド予定外PCの新たな値として記憶する。そして処理はステップS1114に戻る。
さて、図10は、図4のステップS120で実行されるPC起動処理のフローチャートである。PC起動処理では、再配置後ジョブ・PC管理情報De6の各エントリについてステップS1202〜S1209が実行され、その中で、当該エントリのPCリスト中の各々のPCについてステップS1203〜S1205が実行される。
具体的には、まずステップS1201でPC管理部206が再配置後ジョブ・PC管理情報De6から1件目のエントリを読み出す。すなわち、PC管理部206は、1件目の実行可能ジョブの情報を読み出す。
次に、ステップS1202でPC管理部206は、ステップS1201(または後述のステップS1211)で読み出した情報から、当該ジョブが使用する1台目のPCの情報を読み出す。
図3Bの情報Deのように、再配置後ジョブ・PC管理情報De6の各エントリでは、ジョブIDにPCリストが対応づけられている。よって、ステップS1202においてPC管理部206は、具体的にはステップS1201(または後述のステップS1211)で読み出したエントリのPCリストから1台目のPCのPCIDを読み出す。以下では説明の便宜上、PCIDを読み出したPCのことを「当該PC」という。
続いて、ステップS1203でPC管理部206は、当該PCのブートOSに、グリッド用OS(本実施形態ではUNIX)を設定する。ステップS1203の詳細は、処理の主体が予約部213からPC管理部206に変わる以外は図11のステップS1104と同様なので、説明を省略する。
そして、PC管理部206は、ステップS1204で当該PCの電源を投入し、当該PCのOS起動後、当該PC上でスケジューラサービスを起動する。なおここで、「スケジューラサービス」とは、PCをシステム101の計算サーバとして機能させるためのミドルウェアにより実現されるサービスである。すなわち、PCは、上記ミドルウェアを介して、ジョブスケジューラ204からジョブを実行するよう依頼を受け、依頼に基づいてジョブを実行し、実行結果を返す。ジョブを実行することは、すなわちコンピューティングリソースを提供することであり、サービスの提供に当たる。
次のステップS1205でPC管理部206は、当該PCについて、PC管理情報Dc3における状態を“グリッド使用中”に設定する。
そして、次のステップS1206でPC管理部206は、ステップS1201またはS1211で情報を得た当該ジョブが使用するすべてのPCについてステップS1203〜S1205の処理を行ったか否かを判断する。「当該ジョブが使用するすべてのPC」とは、換言すれば、ステップS1201またはS1211で得られたエントリのPCリストにPCIDが含まれるすべてのPCである。
判断の結果、未処理のPCが残っていれば処理はステップS1207に移行する。他方、すべてのPCについて処理済であれば処理はステップS1208に移行する。
ステップS1207でPC管理部206は、ステップS1201またはS1211で情報を得た当該ジョブが使用する次のPCのPCIDを得る。つまり、PC管理部206は、ステップS1201またはS1211で得られたエントリのPCリストの中から、未処理のPCIDを1つ取り出す。そして処理はステップS1203に戻る。
他方、ステップS1208でPC管理部206は、ステップS1201またはS1211で得た当該ジョブの情報をジョブ・PC管理情報De3に追加する。図11のステップS1108と同様に、ステップS1208の処理は、単純に読み込み済のエントリをコピーする処理である。
そして、次のステップS1209でPC管理部206は、ステップS1201またはS1211で情報を得た当該ジョブをリリースする。すなわち、PC管理部206はジョブスケジューラ204に対して、「ステップS1204でスケジューラサービスを起動したPCに当該ジョブを割り当て、当該PCに当該ジョブの実行を開始させよ」と通知する。ジョブスケジューラ204はPC管理部206からの通知にしたがい、ジョブの割り当てと実行開始を制御する。
その後、次のステップS1210でPC管理部206は、すべてのジョブを処理したか否かを判断する。つまり、PC管理部206は、再配置後ジョブ・PC管理情報De6のすべてのエントリについてステップS1202〜S1209の処理を行ったか否かを判断する。
まだ読み込んでいないエントリが再配置後ジョブ・PC管理情報De6に残っていれば、処理はステップS1211に移行する。他方、すべてのエントリについて処理済であれば、PC管理部206は図10のPC起動処理を終了する。
そして、ステップS1211でPC管理部206は、再配置後ジョブ・PC管理情報De6から次の実行可能ジョブの情報を読み込む(つまり、次のエントリを読み込む)。そして、処理はステップS1202に戻る。
なお、本発明は上記実施形態に限られるものではなく、様々に変形可能である。以下にいくつかの観点(u1)〜(u11)から上記実施形態の変形例について説明する。
(u1)データ形式に関する変形
図3A〜3Cに例示した各種情報のデータ形式は、実施形態に応じて適宜変更可能である。例えば、図3A〜3Cでは主にテーブル形式を用いて各種情報の例を図示したが、各種情報のデータ形式は、eXtensible Markup Language(XML)形式などのその他の任意の形式でもよい。また、情報をテーブル形式で表す場合にも、図3A〜3Cに示した形式以外の形式が採用可能である。
例えば、図1のように計算サーバとして利用可能なPCが48台ある環境において、ジョブパターンが120通りあるとする。この場合、ジョブパターン別PC情報Dcx1は、それぞれが図3Aの情報Dcの形式で48個のエントリを有する120個のテーブルの集合体により表現されてもよい。あるいは、ジョブパターン別PC情報Dcx1は、図3Aの情報Dcの形式にさらにジョブパターンIDの列を加えた形式で、5760(=48×120)個のエントリを有する、1つのテーブルにより表現されてもよい。
また、共通の形式の情報同士は、実装上は別々のファイルに記録されていてもよいし、1つのファイルに記録されていてもよい。例えば、PC予測情報Dc2とPC管理情報Dc3は、別々のファイルに格納されていてもよいし、図3Aの情報Dcにさらに「フラグ」列を追加した1つの共通のテーブルに格納されていてもよい。テーブル以外のデータ構造に関しても同様に、フラグを追加することで、共通の形式の情報同士を1つのファイルに格納することが可能となる。
ここで、フラグの値は、予約処理用の情報であることを示す値(説明の便宜上、例えば“0”とする)または割り当て処理用の情報であることを示す値(説明の便宜上、例えば“1”とする)である。つまり、ある1つのテーブルが、48台のPCに対応するPC予測情報Dc2として、フラグの値が“0”の48個のエントリと、48台のPCに対応するPC管理情報Dc3として、フラグの値が“1”の48個のエントリを持っていてもよい。この場合、フラグの値でエントリを絞り込むことで、PC予測情報Dc2とPC管理情報Dc3のうち所望の情報を得ることができる。
また、運用管理装置100は、図3Aの情報Dcを、PCIDと教室IDとエリアIDとスイッチIDを対応づける静的な情報と、PCIDと状態とジョブIDと予約を対応づける動的な情報に分割して管理してもよい。静的な情報は、PC予測情報Dc2、PC管理情報Dc3、再配置後PC予測情報Dc5、再配置後PC管理情報Dc6、ジョブパターン別PC予測情報Dcx2、ジョブパターン別PC管理情報Dcx3で共通である。よって、このように情報を分割することで記憶領域を削減することも可能である。
なお、テーブルの参照回数を減らしてパフォーマンスを向上させるには、例えばPC予測情報Dc2とPC管理情報Dc3のそれぞれに同じ静的な情報を含めて、それぞれを図3Aの情報Dcのような形式で表しておくとよい。運用管理装置100は、その他の情報に関しても、静的な部分と動的な部分を分けて管理してもよい。
また、各ジョブには、ジョブIDのほかにさらにユーザ定義のジョブ名が付けられていてもよいし、ジョブ投入コマンドを入力したユーザのユーザ名が対応づけられていてもよい。例えば実行候補ジョブ情報Df1などが、これらのジョブ名やユーザ名の項目をさらに有していてもよい。
そして、ユーザごとに予め優先度が割り当てられていてもよい。その場合、実行候補ジョブ選択部209は、図6AのステップS311のソートキーの1つとして、ジョブ投入コマンドを入力したユーザの優先度を用いることもできる。
(u2)値に関する変形
上記実施形態では、説明の便宜上、“reserve”や“start−GRID”や“電源OFF”などの特定の文字列を定数値として用いているが、これらの文字列の代わりに、任意の数値、文字または文字列を使うこともできる。また、各種IDも、任意の数値、文字または文字列でよく、例えばPCIDとしてPCのMACアドレスが使われてもよい。
(u3)処理の実行順序・実行タイミングに関する変形
図4〜10のフローチャートに示した各処理は、矛盾が生じない限りステップの実行順が適宜入れ替えられていてもよく、いくつかのステップが並行して実行されてもよい。実行順の変更に関するいくつかの例は上述したとおりだが、ほかにも、例えば図9の処理において、予約部213は、1つずつ順にジョブに注目する代わりに、複数のジョブについて並行して処理してもよい。
(u4)ネットワークの構成単位に関する変形
ジョブの割り当てに際して運用管理装置100が考慮するネットワークの構成単位は、階層化されていてもよいし、単層でもよい。階層化の例は、図1〜10に示した実施形態である。具体的には、ブロードキャストドメイン(つまりLANセグメント)を上位層の構成単位として識別するための教室IDと、物理的に同じスイッチに接続されている計算サーバの集合を下位層の構成単位として識別するためのスイッチIDが利用されている。実施形態によっては、単層のフラットな構成単位として、例えば物理的に同じスイッチに接続されている計算サーバの集合を、運用管理装置100がジョブの割り当てに際して考慮してもよい。
また、計算サーバが空間的に固定されて設置されている場合でも、「配線の煩雑さを避けるため」といった理由から、無線LANが採用されている環境がある。そして、計算サーバの空間的配置に応じて適宜アクセスポイントが配置されていれば、計算サーバの接続先のアクセスポイントは安定的に1つに固定されると期待される。
そのような環境においては、運用管理装置100は、例えば「接続先のアクセスポイントが同じ計算サーバの集合」を1つの構成単位として扱ってもよい。つまり、運用管理装置100は、上記実施形態のスイッチIDの代わりにアクセスポイントのIDを使ってもよい。
(u5)評価基準に関する変形
また、ジョブの割り当てパターンを評価する評価基準は、実施形態に応じて任意に定めることができる。すなわち、式(14)の評価点Eval(P)は、1つ以上のジョブを複数の計算サーバに割り当てるための潜在的な割り当てパターンを評価するための総合評価値の一例に過ぎない。実施形態に応じてジョブパターンの評価には他の任意の式を用いることができる。
また、総合評価値は、1つ以上のジョブそれぞれについての評価値を総合したものだが、式(14)により総合される個々の評価値は、上記実施形態においては式(15)の満足度評価である。そして、式(15)の満足度評価も、1つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該1つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値の一例に過ぎない。
実施形態に応じて、個々のジョブの評価に式(15)以外の他の式を用いることもできる。また、同じ式(15)を利用するにしても、例えば図3BのパラメタファイルDdの評価点テーブルにおいて、配点の値を変えたり、並列数の範囲の大きさを変えたりすることで、上記実施形態とは異なる評価を行うことも可能である。
なお、空調機の運転による消費電力について考慮しない実施形態も可能である。つまり、満足度5と4を区別せず、満足度3と2を区別しないように式(15)の満足度評価の定義を変えてもよい。その場合でも、ネットワークの構成単位が評価に反映されるので、1つのジョブの割り当て先として、同じ構成単位に属するPCが優先的に選ばれるという利点には変わりがない。
また、式(14)や式(15)の例は、値が大きいほど評価が高いことを示す例だが、値が小さいほど評価が高いように定義された式を利用する実施形態も、当然可能である。
(u6)空調機の制御に関する変形
さらに、上記実施形態の空調機管理部205は、各空調機に対する制御としてオンオフ制御のみを行っているが、空調機管理部205は温度制御をさらに行ってもよい。
例えば、図4のステップS123で空調機管理部205が、空調機Ca1に電源を投入することを決定した場合を例に説明する。
このとき、空調機管理部205は、空調機Ca1の空調機IDである“Ca1”を検索キーにして空調機管理情報Dbを検索し、対応するエリアIDである“Aa1”を取得してもよい。続いて、空調機管理部205は、取得した“Aa1”を検索キーにしてPC管理情報Dc3を検索し、検索の結果ヒットしたエントリの中で状態が“電源OFF”のものの台数または割合を計算してもよい。
そして、空調機管理部205は、“電源OFF”状態のPCの台数または割合が低いほど設定温度が高くなるように定義された計算式にしたがって設定温度を計算し、空調機Ca1に電源を投入するとともに、計算した設定温度を空調機Ca1に設定してもよい。もちろん、上記の計算式は、台数と割合の双方に基づいて定義されていてもよい。
(u7)適用対象に関する変形
上記実施形態は、キャンパスグリッド以外の任意のグリッドコンピューティングシステムに適用可能である。例えば、上記実施形態における研究利用モードに相当するモードで常時運用されているグリッドコンピューティングシステムに対しても、上記実施形態は適用可能である。なお、その場合、運用モードの切り換えに伴う処理は不要となる。
また、図1に例示した各種装置間の接続関係は一例であり、例えば運用管理装置100と各空調機は、間接的に接続されていてもよい。さらに、上記実施形態で例示したOS以外のOSが利用されてもよいことは無論である。
また、図1の各PCは、図3Cの研究利用向けテンプレートDi1と教育用利用向けテンプレートDi2から理解されるとおり、マルチブート端末である。しかし、計算サーバとして利用されるPC等のコンピュータは、シングルブート端末であってもよいことは無論である。その場合、ブートOSの切り替えに関する情報や処理は省略することができる。
(u8)実行中のジョブの取り扱いに関する変形
研究利用モードでの運用中に、ある1つのジョブの実行が終了したことを契機として、運用管理装置100が実行待ちの次のジョブの割り当てを行う場合、実行中の他のジョブの取り扱いは、実施形態によって様々であってよい。例えば、実行中の他のジョブは、そのまま現在の割り当て先のPCにより実行が続行されてもよいし、改めて運用管理装置100によりPCへの割り当てが行われてもよい。
図4〜10に示した実施形態では、実行中のジョブ(または実行中と予測されるジョブ)は、再配置の対象とはならず、そのまま現在の割り当て先のPCにより実行が続行される。なぜなら、第1に、図6A〜6Bから明らかなように、実行候補ジョブ情報Df1は実行待ちのジョブのエントリのみを含み、ジョブパターン群Dg1は実行候補ジョブ情報Df1から作成されるからである。そして第2に、図8Eとともに説明したように、再配置元の候補は、実行中のジョブ(または実行中と予測されるジョブ)に対応する“グリッド利用中”状態のエントリではなく、実行待ちのジョブに対応する“割り当て済”状態のエントリから得られるからである。そのため、実行中のジョブ(または実行中と予測されるジョブ)は、図4のステップS117で再配置の対象とならない。
実施形態によっては、フロー制御部207は、ある1つのジョブの実行終了をジョブスケジューラ204から通知されたら、ジョブスケジューラ204に対して「他の実行中のすべてのジョブを中断(サスペンド)せよ」と命令してもよい。すると、ジョブスケジューラ204は、命令にしたがい実行中のジョブを中断させ、実行中の各ジョブについて直近のチェックポイントまでの実行結果を適宜退避する。
以上のような変形例において、フロー制御部207は、図4のステップS107を省略し、ステップS108では空きPC数の代わりに研究用PC台数を引数として実行候補ジョブ選択部209に与えてもよい。
そして、実行候補ジョブ選択部209は、ステップS108に相当する図6A〜6Cの処理において、「実行待ちのジョブ」の代わりに、「サスペンド状態か実行待ちのジョブ」を対象として各ステップを実行してもよい。なお、この場合、ステップS311のソート結果では、先にサスペンド状態のジョブが並び、その後に実行待ちのジョブが並ぶことになる。
以上の変形例によれば、ある1つのジョブの実行が終了したことを契機として、その時点で実行中だったジョブも含めて、改めてジョブパターンの作成と評価が行われる。
(u9)処理を追加または省略する変形
運用管理装置100の各部は、不正な引数が与えられていないか否かをチェックするステップなどをさらに行ってもよい。
また、運用管理装置100は、例えばPC予測情報Dc2やPC管理情報Dc3やその要約など、システム101の状況を示す情報(以下「状況情報」という)を出力するための不図示の出力部をさらに有していてもよい。出力部は、例えば図4のステップS119またはS123の直後に、状況情報を出力する処理を行うことができる。
出力部は、ディスプレイなどの表示装置を用いて実現することもできる。あるいは、運用管理装置100を実現するコンピュータのCPUが、ネットワークI/F202を介して状況情報を端末機105などの他のコンピュータに送信するためのプログラムを実行することにより、出力部が実現されてもよい。
出力部が状況情報を出力すると(つまり状況情報をディスプレイに表示したり他のコンピュータに送信したりすると)、例えば「研究利用モードでの運用中に、教育目的で利用可能なPCが何台残っていそうか」といったことが学生等にも明らかになる。よって、出力部は利便性の向上に寄与する。
また、研究利用モードでの運用中に、研究利用に予約または使用されていないPCを教育目的の利用に開放し、教育目的の利用の予約を受け付けるよう、運用管理装置100が変形されてもよい。そのために、管理情報が適宜追加されてもよく、運用管理装置100が不図示の受付部をさらに備えていてもよい。
受付部は、キーボードなどの入力装置を用いて実現することもできる。あるいは、運用管理装置100を実現するコンピュータのCPUが、ネットワークI/F202を介して端末機105などの他のコンピュータから予約を受け付けるプログラムを実行することにより、受付部が実現されてもよい。
例えば、PC情報Dc1に情報を適宜追加することで、受付部が教育目的の利用の予約を受け付けたか否かの管理が可能となる。一例として、受付部は、あるPCについて教育目的の利用の予約を受け付けた場合、当該PCに対応するエントリにおいて、通常のジョブIDとしては使われない特殊な値をダミーのジョブIDとして設定し、予約を“あり”に設定してもよい。例えばこのようなダミーのジョブIDと予約フィールドを使うことで(あるいは、教育目的の利用の予約を受け付けたか否かを示すフラグのフィールドをPC情報Dc1に含めることで)、教育目的の利用の予約を受け付けたか否かの管理が可能となる。
なお、事前に教育目的の利用の予約を運用管理装置100の受付部が受け付けた場合は、図4のステップS105においてPC管理部206は、教育目的に予約されたPCをシャットダウンの対象から除外して全PC停止処理を行ってもよい。
また、図4〜10には、実際の割り当て処理と予約処理の両方を運用管理装置100が行う実施形態を示したが、予約処理を省略した実施形態も可能である。予約処理を行わなくても、「実際にジョブが計算サーバに割り当てられる際には、上記実施形態と同様に、評価値の優れた割り当て方が選択され、再配置により消費電力の低減が図られる」という利点には何の変わりもない。
予約処理を省略した実施形態では、処理モードが常に“assign”なので、処理モードを引数とする必要もないし、処理モードに関する分岐も不要である。また、例えばPC情報Dc1のうち予約処理用のPC予測情報Dc2は不要となり、PC管理情報Dc3のみあればよい。他の情報についても同様である。
ただし、予約処理を行うことには、もちろん利点もある。特に、上述した変形例のように運用管理装置100が出力部を有する場合には、予約処理によって予測された将来のシステム101の状況をユーザに知らせることができるので、予約処理は有益である。
つまり、ジョブの実行を依頼したいユーザは、予約処理の結果を見て、システム101の状況に応じて自分のジョブの実行依頼を行うタイミングを決めることもできる。また、予約処理を行うことで、学生等のユーザに対しては、何台くらいのPCが研究利用モードでの運用期間中に教育用途に開放されそうかという情報を提供することが可能となる。したがって、学生等のユーザは、利用可能なPCの台数の目安を参考にして、予定を立てることもできる。
また、図8A〜8Hの再配置処理を省略する実施形態も可能である。再配置処理が省略されても、式(14)と(15)によれば、1つのジョブがネットワークの構成単位をまたがない割り当て方の方が、1つのジョブがネットワークの構成単位をまたぐ割り当て方よりも高く評価される。よって、再配置処理が省略されても、通信環境の均一性という観点から見て並列コンピューティングに適した組み合わせの計算サーバが、優先的に同じジョブに割り当てられる。
また、たとえ再配置処理が省略されても、式(14)と(15)によれば、1つのジョブがエリアをまたがない割り当て方の方が、1つのジョブがエリアをまたぐ割り当て方よりも高く評価される。よって、空調機の無駄な運転の抑制による消費電力削減という効果も、ある程度は期待することができる。
もちろん、再配置処理を行うことにより、空調機の無駄な運転をさらに削減し、ひいては消費電力をより削減することが可能となる場合があるので、再配置処理を行う実施形態は、より好ましい実施形態である。
(u10)キューとPCの対応づけに関する変形
図1〜10とともに説明した実施形態では、図3Cのキュー・PC定義情報Dhが使われる。しかし、実施形態によっては、キューごとに対応するPCが決まっていなくてもよい。
つまり、「すべてのPCがすべてのキューに対応可能である」と定義されていてもよい。この場合は、キュー・PC定義情報DhにおいてどのキューIDに対してもシステム101内のすべてのPC(図1の例では48台)が対応づけられている場合と等価である。よって、図3Cに関して説明したとおり、各キューに対応するPCの集合同士に重なりがあることによって、実行待ちのジョブの並列数の偏りに応じた、臨機応変かつ効率的な割り当てが可能となる。
また、すべてのPCがすべてのキューに対応可能ならば、キュー・PC定義情報Dhを省略することができる。この場合、図7AのステップS406は、評価部211が、PC管理情報Dc3で管理されているすべてのPCIDのリストを得て、キュー割り当てPC情報として記憶するステップに置き換えられる。また、図8GのステップS905、S910〜S915は省略される。そして、再配置部212は、ステップS909の直後にステップS916を実行する。
(u11)組み合わせ最適化問題という観点からの変形
ところで、上記実施形態では、図4のステップS110でジョブパターン作成部210が網羅的にジョブパターンを作成している。よって、上記実施形態は、ステップS108で得られた実行候補ジョブ情報Df1に含まれるジョブの件数が、組み合わせ爆発を起こさない程度に少ないとき(例えば、特に6以下の場合など)に好適である。
しかし、実行候補ジョブ情報Df1に含まれるジョブの件数がある程度大きい場合(例えば、特に12以上の場合など)は、網羅的にジョブパターンを作成すると組み合わせ爆発が起こる。よって、運用管理装置100は実用的な時間内に適切な割り当て方を決めることができないおそれがある。
つまり、運用管理装置100が管理する計算サーバの台数(換言すればPC情報Dc1のエントリ数)や、ジョブの並列数の傾向などによっては、組み合わせ爆発のおそれがあるために、所与の環境に上記実施形態を適用するのが困難かもしれない。
しかしながら、上記実施形態における図4のステップS110〜S117は、組み合わせ最適化の一例という側面がある。そのため、ステップS110〜S117を他の任意の組み合わせ最適化アルゴリズムによる処理に置き換えることができることは明らかである。よって、実行候補ジョブ情報Df1に含まれるジョブの件数がある程度大きいとしても、上記実施形態を適宜変更すれば、運用管理装置100は、実用上満足なレベルの割り当て方を見出すことができる。
例えば、ジョブパターン作成部210は、ステップS110において、実行候補ジョブ情報Df1に含まれるジョブの件数を所定の閾値と比較してもよい。そして、ジョブパターン作成部210は、ジョブの件数が閾値以下であれば上記実施形態と同様に網羅的にジョブパターンを作成してもよい。
他方、ジョブの件数が閾値を超えていれば、ジョブパターン作成部210は、網羅的ではない方法で複数のジョブパターンを作成してもよい。例えば、ジョブパターン作成部210は、乱数を使って所定の個数のジョブパターンを作成することもできる。また、例えば、上記所定の閾値が10ならば、上記所定の個数としては10!以上11!未満の値を採用することが好ましい。もちろん、上記所定の閾値と所定の個数として適切な値は、この例に限らず、実施形態に応じて適宜定めることができる。
以上のような変形により、複数の潜在的に可能なジョブの割り当てパターンの中から相対的に評価の高いものを運用管理装置100が選択することに関して、「実行候補ジョブ情報Df1のエントリ数によらず、実用的な時間内に計算が可能」と保証される。
もちろん、運用管理装置100は、局所探索法、遺伝的アルゴリズム、貪欲法などの他の任意の最適化アルゴリズムを利用してジョブの割り当て方を決めることもできる。
採用するアルゴリズムによっては、「先にジョブパターン作成部210がジョブパターンを作ってから評価部211がジョブパターンを評価する」という手順とは異なる手順でジョブの割り当て方が決められてもよい。例えば、貪欲法にしたがって、評価部211が、まだ割り当てを決めていないジョブの各々に注目し、注目している当該ジョブについて次の(v1)〜(v3)の処理を行ってもよい。
(v1)「まだどのジョブに割り当てられいないPCの中から当該ジョブの割り当て先を選択するとして、可能な限り高い満足度が得られるのは、当該ジョブをどのPCに割り当てたときなのか」を調べる。
(v2)上記(v1)の結果判明した、当該ジョブについての可能な限り高い満足度から、当該ジョブの満足度評価を計算する。
(v3)上記(v1)で得られた満足度と、当該満足度が得られるときの当該ジョブの割り当て先のPCと、(v2)で計算した満足度評価を記憶する。
そして、評価部211は、(v3)で記憶した満足度評価が最も高いジョブを選び、選んだジョブについては(v1)で得られた当該満足度が得られるときの割り当て先のPCに割り当てる。そして、評価部211は、まだ割り当てを決めていないジョブがなくなるまで、以上の処理を繰り返す。
以上のような貪欲法によれば、ジョブの割り当て方として最終的に得られるパターンが局所解に陥っている可能性もある。しかしながら、以上のような貪欲法は、組み合わせ爆発を回避して実用的な時間内に、複数の潜在的に可能なジョブの割り当てパターンの中から相対的に評価の高いものを運用管理装置100が選択することを可能とするので、実用上有効である。
すなわち、運用管理装置100は、適宜の組み合わせ最適化アルゴリズムにしたがって動作することにより、真の最適解は得られないかもしれないが実用上は十分に意味のある比較的評価の高い解(すなわち比較的優れた割り当て方)を得ることができる。
なお、組み合わせ最適化アルゴリズムとして採用するアルゴリズムによっては、割り当てパターン全体を総合的に評価する総合評価値自体は算出せずに、個々のジョブの評価値のみを用いて、総合評価値が比較的高い割り当てパターンを選ぶことも可能である。
例えば、貪欲法では上記(v1)〜(v3)のように、評価値(具体的には満足度評価)のみが使われ、総合評価値(例えば式(14)のEval(P))自体は算出されない。しかし、貪欲法によれば、(局所解である可能性はあるものの)複数の割り当てパターンの中で相対的に総合評価値が大きい(つまり総合評価が高い)ものが選ばれる。
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
(付記1)
コンピュータに、
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を取得するネットワーク管理情報取得ステップと、
1つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得する並列数取得ステップと、
1つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該1つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記1つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記1つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する決定ステップ
を実行させるプログラム。
(付記2)
前記プログラムは、前記複数の計算サーバがそれぞれ設置された場所と複数の空調設備がそれぞれ設置された場所に応じて前記複数の計算サーバを前記複数の空調設備のいずれかと対応づける空調設備対応づけ情報を取得する空調設備対応づけ情報取得ステップをさらに前記コンピュータに実行させ、
前記評価値は、1つのジョブを異なる空調設備に対応づけられた計算サーバに割り当てるよりも、当該1つのジョブを同じ空調設備に対応づけられた計算サーバに割り当てることを高く評価するものであり、
前記決定ステップでは、前記割り当てパターンの決定にあたり、さらに前記空調設備対応づけ情報も用いられる、
ことを特徴とする付記1に記載のプログラム。
(付記3)
前記複数の計算サーバのうち、前記決定ステップで決定した前記割り当てパターンにおいて前記1つ以上のジョブのいずれかが割り当てられた計算サーバであるジョブ実行計算サーバに対し、第1の設定を表す設定ファイルを送付する第1の送付ステップと、
前記複数の計算サーバのうち、前記ジョブ実行計算サーバ以外の計算サーバであるジョブ非実行計算サーバに対し、前記第1の設定とは異なる第2の設定を表す設定ファイルを送付する第2の送付ステップと、
をさらに前記コンピュータに実行させることを特徴とする付記1または2に記載のプログラム。
(付記4)
前記第1の設定は、ジョブの実行を可能とする設定であり、
前記第2の設定は、計算サーバの起動を禁止する設定またはジョブの実行を不能にする設定である
ことを特徴とする付記3に記載のプログラム。
(付記5)
現在実行待ちのジョブのうちで、指定された将来の時刻になっても実行待ちのジョブを、現在実行中のジョブと前記現在実行待ちのジョブそれぞれの実行予測時間と並列数を用いて予測する予測ステップと、
前記将来の時刻において実行待ちであると予測された前記現在実行待ちのジョブの中から、前記並列数取得ステップにおいて前記並列数を取得する対象である前記1つ以上のジョブを選択する選択ステップ
をさらに前記コンピュータに実行させ、
前記第2の設定は、ジョブの実行を不能にする設定である
ことを特徴とする付記3に記載のプログラム。
(付記6)
前記複数の空調設備のそれぞれについて、前記空調設備対応づけ情報において当該空調設備に対応づけられている計算サーバのうち、前記決定ステップで決定した前記割り当てパターンにおいていずれかのジョブが割り当てられている計算サーバの数に応じて、当該空調設備を制御する空調制御ステップを
さらに前記コンピュータに実行させることを特徴とする付記2に記載のプログラム。
(付記7)
前記ネットワークは、1つのスイッチに接続される1つ以上の計算サーバを1つの構成単位とする
ことを特徴とする付記1から6のいずれか1項に記載のプログラム。
(付記8)
前記決定ステップは、
前記1つ以上のジョブの順列を表すジョブパターンを複数作成するジョブパターン作成ステップ、
前記ジョブパターン作成ステップで作成した前記ジョブパターンの各々についての、
当該ジョブパターン内での並び順にしたがって前記1つ以上のジョブについて順次、前記複数の計算サーバの中で所定の基準による順序が先になる計算サーバを優先して、当該ジョブの前記並列数分の計算サーバに当該ジョブを対応づけることで、当該ジョブパターンにしたがった割り当てパターンを求める対応づけステップおよび
前記対応づけステップで求めた前記割り当てパターンについての前記総合評価値を、前記ネットワーク管理情報を用いて算出する評価ステップ、ならびに
複数の前記ジョブパターンに対応する複数の前記割り当てパターンのうち、前記評価ステップで算出した前記総合評価値が相対的に高い割り当てパターンを選択する選択ステップ
を含むことを特徴とする付記1から7のいずれか1項に記載のプログラム。
(付記9)
前記所定の基準は、同じ構成単位に属する計算サーバ同士が隣り合うように前記順序を定める基準であることを特徴とする付記8に記載のプログラム。
(付記10)
前記決定ステップがさらに、
前記選択ステップで選択した前記割り当てパターンにおける前記1つ以上のジョブの割り当て先を、前記総合評価値を悪化させないという制約条件下で変更することを試みる再配置ステップ
を含むことを特徴とする付記8または9に記載のプログラム。
(付記11)
前記コンピュータに、前記並列数取得ステップと前記決定ステップを繰り返し実行させることを特徴とする付記1から10のいずれか1項に記載のプログラム。
(付記12)
コンピュータが、
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を取得し、
1つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得し、
1つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該1つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記1つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記1つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する
ことを特徴とする方法。
(付記13)
複数の構成単位を含むネットワーク内の複数の計算サーバの各々が、前記複数の構成単位のいずれに属するのかを表すネットワーク管理情報を記憶する記憶手段と、
1つ以上のジョブの各々について、当該ジョブが要求する計算サーバの数である並列数を取得する並列数取得手段と、
1つのジョブを異なる構成単位に属する計算サーバに割り当てるよりも、当該1つのジョブを同じ構成単位に属する計算サーバに割り当てることを高く評価する評価値を用いて、前記1つ以上のジョブを前記複数の計算サーバに割り当てるための複数の潜在的な割り当てパターンの中で、前記1つ以上のジョブそれぞれについての前記評価値を総合した総合評価値が相対的に高い評価を示す割り当てパターンを、前記ネットワーク管理情報と前記並列数を用いて決定する決定手段と
を備えることを特徴とする情報処理装置。