(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0022】
(実施の形態の概要)
本発明における実施の形態は、クラスタシステムと共に利用されるバックフィルスケジューラに関連し、ジョブに割り当てられる仮想ノードの選択及び管理に特徴がある。また、本実施の形態は、この特徴により、再スケジューリング時のノード構成の柔軟性とクラスタシステムの性能とを向上させる。
【0023】
また、本実施の形態では、キューによって定義された資源(リソース)を備える仮想ノード群(以下「仮想ノードグループ」と表記する。)と、各キューとが、対応付けられており、ジョブに仮想ノードを割り当てる際のマッチング制御が階層的に表現されている。このため、最適なリソース探索と割り当て制御(グループ間の物理リソースの安全な交換)とが達成される。なお、キューは、管理者によって設定されており、ジョブを受付ける窓口である。
【0024】
更に、このマッチング制御は、物理ノードの障害発生時に有用である。また、このマッチング制御は、複数のネットワークインタフェース、ネットワークトポロジといった、複数の構成要件を同時に考慮したマッチング(ジョブへの仮想ノードの割り当て)を可能とする。
【0025】
上述の機構について、
図1を用いて説明する。
図1は、本発明の実施の形態で行なわれるマッチングを説明するための図である。
図1に示すように、本実施の形態では、ジョブに物理ノードを割り当てる際、ジョブと仮想ノードとの間のマッチング、仮想ノードと物理ノードとの間のマッチング、の二つのマッチングが実行される。
【0026】
また、ジョブが投入される各キューには、サービスが対応付けられている。サービスは、ユーザに見えるキューの特徴を表わしており、そのキューを利用することで使えるもの、保障される性能などが、サービスと称される。本実施の形態では、キューとサービスとは、1対1の関係にある。更に、各キューには、それぞれが提供できるリソースが定義されている。つまり、各キューには、キューに投入されたジョブが要求する基本的なリソース要件が設定されている。そして、各キューには、このリソース要件を満たす1又は2以上の仮想ノードグループが対応している。
【0027】
また、各仮想ノードグループは、電源単位、CPU、アーキテクチャ、ネットワークトポロジ、分散ファイルシステムの接続環境などの条件に応じて動的に構成される。そして、ユーザが、希望のサービスに対応するキューにジョブを投入すると、ジョブに対して、動的に構成された仮想ノードグループの中から、ジョブ実行の要件を満たす仮想ノードが割り当てられる。
【0028】
次に、ジョブに仮想ノードが割り当てられると、仮想ノードへの物理ノードの割り当てが行なわれる。物理ノードの割り当ては、仮想ノードが要求するリソースを有する物理ノードを選択することによって行われる。
【0029】
このとき、従来においては、物理ノードが備える資源のみで、物理ノードの割り当てが行なわれている。しかし、本実施の形態では、個々の物理ノードの属性に加えて、物理ノードが接続されているネットワークトポロジの情報、及び物理ノードが利用可能なファイルシステムの情報、といったノード間資源の情報(ノード間の構成要件)も加えられ、これらの情報に基づいて、物理ノードが選択される。結果、物理ノードの選択の幅が拡大するため、再構成可能なノード構成の柔軟性の向上とクラスタシステムの性能向上とが図られる。
【0030】
また、言い換えると、ノード管理の階層を「キュー/仮想ノードグループ/仮想ノード/物理ノード」として、キュー、仮想ノードグループ、及び仮想ノードの層と、物理ノードの層とで切り離すことができるので、スケジューリングの可用性を実現できる。また、仮想ノードと物理ノードとのマッチングによって、サービスの可用性も達成される。そして、キューの定義によって、マルチノード用キュー及びシングルノード用キュー等のサービスを同時に提供でき、且つ、サービスレベルを維持することも可能となる。
【0031】
更に、本実施の形態では、スケジューラマップにアサインされたジョブには、仮想ノードの情報と、対応する物理ノードの情報とを付加することができる。この場合、物理ノードの障害発生時において、障害が起きた物理ノードと同等の交換ノード(物理ノード)を選択しなおし、それと置き換えることで、サービスレベルの低下、スケジューラマップの再スケジューリングを回避することができる。
【0032】
また、ジョブは、現在から未来にわたって管理されているため、物理ノードの交換は、ジョブが実行されていない安全なタイミングで行うことが可能である。更に、障害ノードが増え、同じスイッチの配下にある物理ノード群では、交換可能な物理ノードが無くなった場合等、サービスレベルが維持できなくなった場合は、キューに対応付けられている仮想ノードは、仮想ノードグループごと交換される。この場合は、正常な物理ノードも含めて全物理ノードが交換されることになる。
【0033】
(実施の形態)
以下、本発明の実施の形態における、ジョブ管理装置、ジョブ管理方法、及びプログラムについて、
図2〜
図11を参照しながら説明する。
【0034】
[装置構成]
最初に、
図2を用いて、本発明の実施の形態におけるジョブ管理装置の構成について説明する。
図2は、本発明の実施の形態におけるジョブ管理装置の構成を示すブロック図である。
【0035】
図2に示す本実施の形態におけるジョブ管理装置400は、多数のノードを共有するクラスタシステム(
図2において図示せず)において、バックフィルスケジューラを使用して、当該システムで実行されるジョブを管理する装置である。
図2に示すように、ジョブ管理装置400は、仮想ノード選択部430と、物理ノード選択部440とを備えている。
【0036】
仮想ノード選択部430は、キュー情報432に基づいて、ジョブに対応可能な仮想ノードのグループ(以下「仮想ノードグループ」と表記する。)を特定し、そして、特定した仮想ノードグループの中から、ジョブに割り当てる仮想ノードを選択する。また、キュー情報432は、クラスタシステムのキュー毎に、キューが提供できるリソースと、このリソースを満たす仮想ノードグループとを特定する情報である(
図3参照)。
【0037】
また、物理ノード選択部440は、仮想ノードグループ情報441に基づいて、ジョブが割り当てられた仮想ノードに割り当てる物理ノードを選択する。また、仮想ノードグループ情報441は、仮想ノードグループ毎に、各仮想ノードグループに使用可能な物理ノードについてのノード間の構成要件を特定する情報である(
図4参照)。ノード間の構成要件としては、物理ノードが所属しているネットワークトポロジについての要件、物理ノードが利用可能なファイルシステムについての要件等が挙げられる。
【0038】
このように、ジョブ管理装置400では、仮想ノードに物理ノードを割り当てる際に、物理ノードが備える資源のみではなく、物理ノードのノード間の構成要件が考慮される。よって、選択可能な物理ノードの幅が拡大するため、再構成可能なノード構成の柔軟性が向上し、加えて、クラスタシステムの性能も向上する。
【0039】
ここで、
図2に加えて
図3〜
図5を用いて、本実施の形態におけるジョブ管理装置400の構成について更に具体的に説明する。
図3は、本実施の形態で用いられるキュー情報の一例を示す図である。
図4は、本実施の形態で用いられる仮想ノードグループ情報の一例を示す図である。
図5は、本実施の形態で用いられる実リソース情報の一例を示す図である。
【0040】
まず、図
2に示すように、本実施の形態におけるジョブ管理装置400は、ジョブアサイン部401と、情報管理部402と、情報格納部403とを備えている。このうち、情報格納部403は、スケジューラマップ411と、ジョブ情報460と、キュー情報432と、ポリシー431と、仮想ノードグループ情報441と、実リソース情報473とを格納している。
【0041】
スケジューラマップ411は、
図13(b)に示したスケジューラマップと同様のものであり、ジョブのアサインの状況を示すマップである。ジョブ情報460は、アサインが予定されているジョブについての情報、及びアサインが確定したジョブについての情報を含む。なお、ポリシー431については後述する。
【0042】
図3に示すように、キュー情報432は、キューに設定されたリソースのリストであり、キュー毎に、キューが提供するリソースと、このリソースを満たす仮想ノードグループとを特定する。例えば、キュー1は、リソースとして「マルチノード」及び「システムA」を提供でき、これらを満たす仮想ノードグループは、「グループ1」と「グループ2」とであることが示されている。
【0043】
なお、キュー情報432おける各キューについての情報は、当該キューの作成時に登録される。また、ユーザは、使用するリソースを指定することができる。ユーザによって指定されたリソースは、ジョブ情報460に登録される。そして、ユーザによって指定されたリソースの内容は、仮想ノード選択部430によって、仮想ノードグループの選択時に、参照される。
【0044】
また、キュー情報432においては、1つのキュー(サービス)に対して、1組のリソースが割り当てられているが、これに限定されず、1つのキューに対して、複数組のリソースが割り当てられていても良い。なお、1つのキューに対して、複数組のリソースが割り当てられる場合は、1組のリソース毎に、仮想ノードグループも設定される。また、ここでいう「1組のリソース」とは、
図3中の行「リソースの内容」において一つの欄に記載されている単一又は2以上のリソースを意味する。
【0045】
図4に示すように、仮想ノードグループ情報441は、仮想ノードグループ毎に、各仮想ノードグループに使用可能な物理ノードについてのノード間の構成要件を特定している。また、具体的には、
図4の例では、ノード間の構成要件として、物理ノードが所属しているネットワークトポロジについての要件、物理ノードが利用可能なファイルシステムについての要件、各物理ノードのリソースの要件(CPU、メモリ等)が示されている。
【0046】
更に、
図4の例では、仮想ノードグループ情報441には、各仮想ノードグループに所属する仮想ノードの識別子、ノード数も登録されているが、これ以外の情報、例えば、未だ割り当てられていない仮想ノードの識別子及びその数が登録されていても良い。また、本実施の形態では、仮想ノードグループ情報は、キュー作成時に定義されるリソースの内容(CPU、メモリ、ネットワークトポロジ等)に基づいて、管理者によって作成される。なお、仮想ノードグループ情報は、ジョブ管理装置又は外部のコンピュータ等によって自動生成されていても良い。
【0047】
また、
図5に示すように、実リソース情報473には、物理ノード毎のリソース、例えば、CPUの個数、メモリ容量、ノード間接続の有無、所属しているネットワークトポロジの構成、等が登録されている。実リソース情報473は、後述するように物理ノードに障害が発生した場合、新たな物理ノードが追加された場合等に更新される。
【0048】
また、
図2に示すように、ジョブアサイン部401は、空き情報検索部410と、開始時刻決定部420と、仮想ノード選択部430と、物理ノード選択部440とを備えている。ジョブアサイン部401は、これらによって、キューに投入されたジョブを現在から未来に渡るノード空間にアサインする。
【0049】
空き情報検索部410は、情報格納部403に格納されているスケジューラマップ411にアクセスし、スケジューラマップ411上の、アサイン対象となるジョブを実行可能な未使用空間(時間帯)を検索する。また、空き情報検索部410は、未使用空間を特定する情報(以下「空き情報」と表記する。)を、開始時刻決定部420に出力する。
【0050】
開始時刻決定部420は、ジョブ情報460からアサイン対象となるジョブに関する情報を取得し、更に、検索によって得られた空き情報に基づいて、アサイン対象となるジョブを最も早く実行開始できる時刻を決定する。また、開始時刻決定部420は、開始時刻とアサイン対象となるジョブとを仮想ノード選択部430に通知する。
【0051】
仮想ノード選択部430は、上述したようにキュー情報432に基づいて、ジョブに対応可能な仮想ノードグループを特定する。その後、本実施の形態では、仮想ノード選択部430は、情報格納部403に格納されているポリシー431に基づいて、特定された仮想ノードグループに属する仮想ノードに対して優先順位を付与し、優先順位に基づいて、使用する仮想ノードを決定する。
【0052】
また、本実施の形態で用いられるポリシー431は、例えば、クラスタ内ポリシーと、クラスタ間ポリシーとを含む。このうち、クラスタ内ポリシーは、特定のクラスタ(システム)に所属する仮想ノードをジョブに割り当てる場合に使用する順位付けルールである。また、クラスタ間ポリシーは、複数のクラスタ(システム)間でジョブの割り当てを実行する場合に使用する順位付けルールである。
【0053】
物理ノード選択部440は、上述したように、仮想ノードグループ情報441に基づいて、ジョブが割り当てられた仮想ノードに割り当てる物理ノードを選択する。また、物理ノード選択部440は、選択された物理ノードに障害が発生した場合は、仮想ノードグループ情報441に基づいて、障害が発生した物理ノードが割当てられていた仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する。
【0054】
更に、物理ノード選択部440は、仮想ノードグループ情報441に基づいて、障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定することもできる。そして、物理ノード選択部440は、存在している場合は、仮想ノードに割り当てる物理ノードとして、障害が発生した物理ノードを選択することができる。
【0055】
また、
図1に示すように、情報管理部402は、情報更新部450と、リソース情報管理部470とを備えている。情報管理部402は、これらによって、ジョブ及びクラスタシステムに関する情報を管理している。
【0056】
このうち、情報更新部450は、ジョブについてアサインが確定すると、アサインが確定したジョブの情報を用いて、ジョブ情報460を更新する。また、リソース情報管理部470は、状態管理部471と、状態監視部472とを備え、これらによって実ノードの構成を保持している。
【0057】
状態監視部472は、物理ノードのリソースを監視し、物理ノードに障害が発生すると、状態管理部471に対して、実リソース情報473の更新依頼を通知する。状態管理部471は、状態監視部472から更新依頼の通知を受け取ると、それに応じて実リソース情報473の更新及び管理を行い、物理ノードの再選択を物理ノード選択部440に依頼する。
【0058】
[装置動作]
次に、本発明の実施の形態1におけるジョブ管理装置40の動作について
図6〜
図8を用いて説明する。また、以下の説明においては、適宜
図2〜
図5を参酌する。更に、本実施の形態では、ジョブ管理装置40を動作させることによって、ジョブ管理方法が実施される。よって、本実施の形態におけるジョブ管理方法の説明は、以下のジョブ管理装置40の動作説明に代える。
【0059】
最初に、
図6を用いて、クラスタシステムのキューにジョブを投入した際のジョブアサイン時の処理(仮想ノード及び物理ノードの割り当て処理)について説明する。
図6は、本発明の実施の形態におけるジョブ管理装置のジョブアサイン時の動作を示すフロー図である。
【0060】
まず、前提として、ユーザが、投入するジョブで使用するノード数、メモリ量、ネットワークトポロジ、予定実行時間などを指定して、クラスタシステムのキューにジョブを投入する。
【0061】
図6に示すように、仮想ノード選択部430は、ユーザが指定したリソース要求を元に、キュー情報432から、投入されたジョブに対応可能な仮想ノードグループを1つ選択する(ステップS1)。
【0062】
次に、仮想ノード選択部430は、選択した1つの仮想ノードグループだけで必要ノード数を満たすかどうかを判定する(ステップS2)。ステップS2の判定の結果、選択したグループ1つだけでは必要ノード数が不足する場合は、仮想ノード選択部430は、仮想ノードグループ情報441を参照して、一階層上のレベルを検索対象に設定し(ステップS3)、再度ステップS1を実行する。
【0063】
例えば、仮想ノード選択部430は、
図3に示すグループ2を選択したが、仮想ノード数が足りない場合は、グループ1を再度選択する。また、本実施の形態では、ステップ
S3は、上位の階層のグループが対応するリソースの内容と下位の階層のグループが対応するリソースの内容とが等しくなるように行なわれる(同じスイッチに接続している等)。
【0064】
また、スイッチ接続単位で、仮想ノードグループが設定されているとする。例えば、
図15に示した例における、物理ノード(Node 0〜5)を仮想ノード(L#0〜L#5)と読み替えるとする。この場合、スイッチ2のレベルで接続される仮想ノード群(マルチノードジョブに使用可能なL#0〜L#1)で1つの仮想ノードグループとなる。この場合において、必要ノード数に満たない場合は、仮想ノード群(L#0〜L#1)に加えて、一階層上のスイッチ1のレベルで接続される仮想ノード群(マルチノードジョブに使用可能なL#3〜L#4)も選ばれる。
【0065】
一方、ステップS2の判定の結果、選択したグループ1つだけで必要ノード数が不足しない場合は、ステップS4が実行される。ステップS4では、空き情報検索部410が、投入されたジョブについて、ユーザが指定した予定実行時間以上の空きがあり、且つ、最も早く実行可能な、未使用空間を検索する。そして、開始時刻決定部420は、検索によって得られた空き情報に基づいて、ジョブを最も早く実行開始できる時刻を決定する。
【0066】
なお、ステップS4において、空き情報検索部410が、条件に合う未使用空間を見つけることができない場合は、一旦処理を終了する。この場合、投入されたジョブは、次回の未使用空間検索が行われるまで待ち状態になる。
【0067】
次に、仮想ノード選択部430は、情報格納部403に格納されているポリシー431に基づいて、ステップS1で選択されたグループに属する仮想ノードに優先順位を設定し、優先順位に従って、投入されたジョブに割り当てる仮想ノードを選択する(ステップS5)。
【0068】
ここで、後述する
図8(b)を用いてステップS5について説明する。まず、
図8(b)において、ジョブFは配置されておらず、更に、仮想ノード#L2は、マルチノード用に使用可能であるとする。この場合において、例えば、2ノードを使用するジョブが投入され、実行開始時刻では、仮想ノードL#2、L#3、L#4が最も早い時刻にジョブを開始できる状態にあるとする。また、新しく配置するジョブは、ノード数が同一となるジョブの後ろに配置した方が、先行ジョブの終了後すぐに実行できる点で、好ましい。
【0069】
従って、仮想ノードL#3と仮想ノードL#4とで実行されるジョブの後ろに、未使用空間が存在する場合は、仮想ノード選択部430は、新たに投入されたジョブに対して、仮想ノードL#3と仮想ノードL#4とを選択する。また、この結果、これらの仮想ノードの未使用空間に新たに投入されたジョブが配置される。
【0070】
次に、物理ノード選択部440は、仮想ノードグループ情報441に基づいて、ジョブが割り当てられた仮想ノードに割り当てる物理ノードを選択する(ステップS6)。その後、情報更新部450はアサインしたジョブについて、情報格納部403に格納されているジョブ情報を更新する(ステップS7)。以上のステップS1〜S7の実行により、キューに投入されたジョブがアサインされ、更に、仮想ノード及び物理ノードの割り当てが完了する。
【0071】
次に、
図7及び
図8を用いて、物理ノードに障害が発生した場合の処理について説明する。
図7は、本発明の実施の形態におけるジョブ管理装置の障害発生時の動作を示すフロー図である。
図8(a)は、障害発生時の物理ノードの状態の一例を示す図であり、
図8(b)は、障害発生時の仮想ノードへの物理ノードの再割り当ての状態の一例を示す図である。
【0072】
図7に示すように、状態監視部472は、各物理ノードの状態を監視し(ステップS11)、各物理ノードに障害が発生していないかどうかを判定する(ステップS12)。ステップS2の判定の結果、障害が発生していない場合は、状態監視部472は、監視を継続する。一方、ステップS2の判定の結果、障害が発生している場合は、状態監視部472は、障害が発生した物理ノードを使用しているジョブを異常終了させる(ステップS13)。
【0073】
次に、状態監視部472は、状態管理部471に対して、実リソース情報473の更新を依頼すると共に、物理ノード選択部440に対して、障害が発生した物理ノード(以下「障害ノード」と表記する。)が割り当てられていたジョブの物理ノードの再アサインも依頼する(ステップS14)。
【0074】
次に、ステップS14が実行されると、状態管理471部は、障害ノードの実リソース情報473を更新する(ステップS15)。
【0075】
次に、物理ノード選択部440は、更新された実リソース情報473と仮想ノードグループ情報とに基づいて、障害ノードと同等の要件を満たす物理ノードを選択する(ステップS16)。更に、物理ノード選択部440は、アサイン済ジョブに対して、障害ノードに代えて、新しく選択した物理ノードを割り当てる(ステップS17)。
【0076】
以上のステップS11〜S17の実行により、障害ノードの代わりに新しい物理ノードが選択されるので、ジョブは再度実行される。ここで、具体例を
図8(a)及び(b)を用いて説明する。
【0077】
図8(a)及び(b)に示すように、もともとマルチノードジョブ用として割り当てられていた物理ノードNode1が障害により通信できなくなってしまった場合、ジョブAは異常終了する。そして、状態管理471によって、物理ノードNode1の実リソース情報473が通信不可の状態に更新される。
【0078】
次に、物理ノード選択部440は、状態監視部472から物理ノードの再アサインが依頼されると、更新された実リソース情報473に基づいて、物理ノードNode2(通信可能)を交換ノードに選択する。そして、物理ノード選択部440は、アサイン済みのジョブEの仮想ノードL#1に割り当てる物理ノードを、物理ノードNode1から物理ノードNode2に変更する。なお、障害前において、物理ノードNode1と物理ノードNode2との実リソースは等しいとする。
【0079】
また、このとき、障害によって物理ノードNode1のノード間接続機能のみが故障したとすると、物理ノードNode1はシングルノードジョブの実行には問題がない。よって、物理ノード選択部440が、シングルノードジョブ用の仮想ノードL#2に対して、物理ノードNode1を割り当てることができる。この場合、障害ノードの有効利用が図られる。
【0080】
[実施の形態の第1の効果]
本実施の形態における第1の効果は、障害発生後もサービスレベルを落とすことなく、HPC用クラスタシステムの運用を継続できることである。その理由は、ジョブに割り当てる仮想ノードへの物理ノードの割り当てに、HPC用ジョブの性能にかかわる物理ノード間の構成要件(ネットワークトポロジ、分散ファイルシステム等)を使用するためである。また、本実施の形態では、バックフィルスケジューラが用いられるため、ジョブが走行していない時に、障害ノードを正常ノードに交換(再割り当て)することができる。よって、交換処理の安全性を高めつつ、交換処理を容易なものとできる。
【0081】
[実施の形態の第2の効果]
本実施の形態における第2の効果は、障害が起きた物理ノードを継続的に運用でき、クラスタシステムの使用率を向上させることである。その理由は、ある条件下では利用不可である障害ノードでも、別の条件下では利用可能である場合に、仮想ノードが要求する条件に合致する限り、仮想ノードに動的に割り当てることができるからである。このため、従来では遊休としていた物理ノードを減らす運用が可能となるので、上述したようにクラスタシステムの使用率が向上する。
【0082】
[実施の形態の第3の効果]
本実施の形態における第3の効果を図
9及び図
10を用いて説明する。
図9は、本発明の実施の形態で用いられる物理ノードの一例を示す図である。
図10は、本発明の実施の形態で用いられるスケジューラマップの一例を示す図である。
【0083】
本実施の形態によれば、クラスタシステムを使用状況によって使い分けることが可能となる。まず、
図9に示すサービス1及びサービス2は、使用するノードの条件(「ノード条件」)をSYS1としているが、サービス1では、更に「代替システム」としてSYS2が指定されている。また、
図10に示すように、ジョブAは、処理単位によってジョブA-1とA-2とに分割されており、処理順は、A-1→A-2に設定されているとする。
【0084】
以上の状況下において、ユーザが、ジョブAにサービス1を選択し、ジョブBにサービス2を選択して、これらのジョブを投入するとする。この場合、スケジューラマップへの割り当ての際、ジョブBには、SYS1に所属するノードが割り当てられ、ジョブA-1には、SYS1が使用中のため、代替システムのSYS2に所属する物理ノードが割り当てられる。なお、この割り当てでは、仮想ノードの割り当ての際に、上述したクラスタ間ポリシーが用いられる。
【0085】
また、ジョブBが終了するとSYS1の物理ノードは開放されるので、ジョブA-2が開始されるときには、ジョブA-1には、SYS1が割り当てられる。このとき使用されるクラスタシステムが変更になっているにもかかわらず、ジョブの再投入及びスケジューラマップの変更は発生しない。
【0086】
そして、通常であれば実行待ちとなる時間においては、代替システムによって処理が実行され、更に実行性能の高いシステムが利用可能になった時間においては、システムの切り替えが行なわれる。このため、ジョブのターンアラウンドタイム(TAT)を短縮することが可能となる。
【0087】
[実施の形態の第4の効果]
本実施の形態における第4の効果を以下に説明する。まず、従来のジョブ管理では、ジョブの実行順序が予め設定されている場合、先行ジョブの終了状態は、ワークフロー管理システム、又はユーザの作成するスクリプトによって監視され、終了後に後続ジョブが投入されるという手順がとられている。
【0088】
但し、この従来の方法では、先行ジョブを監視するために、ワークフロー管理システム、又はユーザの作成するスクリプトが必要となり、後者の場合は、更に、システム専用のワークフロー記述言語も必要となる。また、この従来の方法では、前のジョブが終了してから後続ジョブが実行されるまでの待ち時間が必要になるという問題もある。
【0089】
これに対して、本実施の形態においては、スケジューラマップ上で、連続して実行される複数のジョブが存在し、これらに同一の仮想ノードが割り当てられていても、各ジョブの実行時においては、選択したサービスの条件に合致する物理ノードが使用される。このため、本実施の形態では、先行ジョブのすぐ後ろに後続ジョブを配置することが可能となり、ジョブの実行待ち時間を縮減できる。
【0090】
本実施の形態における第4の効果を、
図11(a)及び(b)を用いて具体的に説明する。
図11(a)は、従来方式によって実行順序が設定されたジョブを実行する場合を説明する図であり、
図11(b)は、本実施の形態によって実行順序が設定されたジョブを実行する場合を説明する図である。
【0091】
図11(a)及び(b)の例は、ジョブAには、物理ノードとしてスカラノードを使うサービスが選択され、ジョブBには、物理ノードとしてベクトルノードを使うサービスが選択される。
図11(b)に示すように、本実施の形態によれば、ジョブAの直後にジョブBを配置することができるため、従来方式に比べて、処理の終了時刻を早くすることが可能となる。
【0092】
[プログラム]
本実施の形態におけるプログラムは、コンピュータに、
図6に示すステップS1〜S7、
図7に示すステップS11〜S17を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態におけるジョブ管理装置400とジョブ管理方法とを実現することができる。この場合、コンピュータのCPU(Central Processing Unit)は、ジョブアサイン部401及び情報管理部402として機能し、処理を行なう。また、コンピュータに備えられたハードディスク等の記憶装置は、情報格納部403として機能する。
【0093】
ここで、本実施の形態におけるプログラムを実行することによって、ジョブ管理装置400を実現するコンピュータについて
図11を用いて説明する。
図12は、本発明の実施の形態におけるジョブ管理装置を実現するコンピュータの一例を示すブロック図である。
【0094】
図11に示すように、コンピュータ110は、CPU111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
【0095】
CPU111は、記憶装置113に格納された、本実施の形態におけるプログラム(コード)をメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
【0096】
また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
【0097】
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
【0098】
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記憶媒体、又はCD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体が挙げられる。
【0099】
上述した実施の形態の一部又は全部は、以下に記載する(付記1)〜(付記15)によって表現することができるが、以下の記載に限定されるものではない。
【0100】
(付記1)
クラスタシステムにおいて実行されるジョブを管理するための装置であって、
前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、仮想ノード選択部と、
前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、物理ノード選択部と、
を備えていることを特徴とするジョブ管理装置。
【0101】
(付記2)
前記物理ノード選択部が、選択された前記物理ノードに障害が発生した場合に、
前記仮想ノードグループ情報に基づいて、障害が発生した物理ノードが割当てられていた前記仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する、付記1に記載のジョブ管理装置。
【0102】
(付記3)
前記物理ノード選択部が、前記仮想ノードグループ情報に基づいて、前記障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定し、存在している場合に、当該仮想ノードに割り当てる物理ノードとして、前記障害が発生した物理ノードを選択する、
付記1または2に記載のジョブ管理装置。
【0103】
(付記4)
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、少なくとも、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
付記1〜3のいずれかに記載のジョブ管理装置。
【0104】
(付記5)
前記キューに投入された前記ジョブを実行可能な時間帯を検索する、空き情報検索部と、
検索された時間帯の中から、前記キューに投入された前記ジョブの実行を開始する時刻を決定する、開始時刻決定部と、を備えている、付記1〜4のいずれかに記載のジョブ管理装置。
【0105】
(付記6)
クラスタシステムにおいて実行されるジョブを管理するための方法であって、
(a)前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
(b)前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を有することを特徴とするジョブ管理方法。
【0106】
(付記7)
(c)選択された前記物理ノードに障害が発生した場合に、前記仮想ノードグループ情報に基づいて、障害が発生した物理ノードが割当てられていた前記仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する、ステップを更に有する、付記6に記載のジョブ管理方法。
【0107】
(付記8)
(d)前記仮想ノードグループ情報に基づいて、前記障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定し、存在している場合に、当該仮想ノードに割り当てる物理ノードとして、前記障害が発生した物理ノードを選択する、ステップを更に有する、付記6または7に記載のジョブ管理方法。
【0108】
(付記9)
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
付記6〜8のいずれかに記載のジョブ管理方法。
【0109】
(付記10)
(e)前記キューに投入された前記ジョブを実行可能な時間帯を検索する、ステップと、
(f)検索された時間帯の中から、前記キューに投入された前記ジョブの実行を開始する時刻を決定する、ステップと、
を更に有する、付記6〜9のいずれかに記載のジョブ管理方法。
【0110】
(付記11)
コンピュータによって、クラスタシステムにおいて実行されるジョブを管理するためのプログラムであって、
前記コンピュータに、
(a)前記クラスタシステムのキュー毎に、キューが提供できるリソースと、前記リソースを満たす仮想ノードのグループとを特定するキュー情報に基づいて、前記ジョブに対応可能な仮想ノードのグループを特定し、特定した仮想ノードのグループの中から、前記ジョブに割り当てる前記仮想ノードを選択する、ステップと、
(b)前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件を特定する、仮想ノードグループ情報に基づいて、前記ジョブが割り当てられた前記仮想ノードに割り当てる前記物理ノードを選択する、ステップと、
を実行させるプログラム。
【0111】
(付記12)
(c)選択された前記物理ノードに障害が発生した場合に、前記仮想ノードグループ情報に基づいて、障害が発生した物理ノードが割当てられていた前記仮想ノードに対して、新たに割り当てる新たな物理ノードを選択する、ステップを更に前記コンピュータに実行させる、付記11に記載のプログラム。
【0112】
(付記13)
(d)前記仮想ノードグループ情報に基づいて、前記障害が発生した物理ノードを割り当てることが可能な仮想ノードが存在しているかどうかを判定し、存在している場合に、当該仮想ノードに割り当てる物理ノードとして、前記障害が発生した物理ノードを選択する、ステップを更に前記コンピュータに実行させる、付記11または12に記載のプログラム。
【0113】
(付記14)
前記仮想ノードグループ情報が、前記仮想ノードのグループ毎に、当該グループに使用可能な物理ノードについてのノード間の構成要件として、前記物理ノードが所属しているネットワークトポロジについての要件と、前記物理ノードが利用可能なファイルシステムについての要件とを特定している、
付記11〜13のいずれかに記載のプログラム。
【0114】
(付記15)
(e)前記キューに投入された前記ジョブを実行可能な時間帯を検索する、ステップと、
(f)検索された時間帯の中から、前記キューに投入された前記ジョブの実行を開始する時刻を決定する、ステップと、
を更に前記コンピュータに実行させる、付記11〜14のいずれかに記載のプログラム。