(57)【要約】【課題】ノードの使用効率を向上させた情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法を提供する。【解決手段】情報処理システムは、複数の計算ノード及びジョブの計算ノード２０への割り当てを管理するジョブ管理ノード１０を有する。ジョブ管理ノード１０は、以下の各部を有する。情報取得部１０１は、所定期間に投入されたジョブに関する情報を取得する。重み計算部１０２は、ジョブに関する情報を基にジョブの形状毎の影響度を求める。対象形状決定部１０３は、影響度が高い順に所定数のジョブの形状を計算対象形状として決定する。事前配置計算部１０４は、計算対象形状及び影響度を基に、計算ノード２０それぞれへのジョブを割り当て方であるジョブの事前配置を決定する。配置決定部１０５は、投入されたジョブが計算対象形状のいずれかに一致する場合、事前配置にしたがい投入されたジョブを計算ノード２０へ割り当てる。【選択図】図２
2015069577.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置及び前記情報処理装置が処理するジョブの前記情報処理装置への割り当てを管理する管理装置を有する情報処理システムであって、
前記管理装置は、
所定期間に投入されたジョブに関する情報を取得する情報取得部と、
前記ジョブに関する情報を基にジョブの形状毎の当該ジョブ形状の出現頻度や占有時間による影響度を求める算出部と、
前記影響度が高い順に所定数のジョブの形状を計算対象形状として決定する形状決定部と、
前記計算対象形状及び前記影響度を基に、前記情報処理装置それぞれへのジョブを割り当て方であるジョブの事前配置を決定する事前配置計算部と、
投入されたジョブが前記計算対象形状のいずれかに一致する場合、前記事前配置にしたがい投入されたジョブを前記情報処理装置へ割り当てるジョブ配置部と
を備えたことを特徴とする情報処理システム。
【請求項２】
前記情報取得部は、ジョブに関する情報として所定期間におけるジョブの形状毎の実行時間及び投入回数を取得し、
前記算出部は、前記所定期間におけるジョブの形状毎の実行時間及び投入回数を基にジョブの形状毎の影響度を求める
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記算出部は、ジョブの実行時間が長いほど当該ジョブの影響度を高くし、ジョブの投入回数が多いほど当該ジョブの影響度を高くすることを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記事前配置計算部は、前記影響度を基に各前記計算対象形状を有するジョブのそれぞれについて同時に配置する個数を求め、求めた前記個数にしたがい各前記計算対象形状を有するジョブの配置を決定することを特徴とする請求項１〜３のいずれか１項に記載の情報処理システム。
【請求項５】
前記ジョブ配置部は、投入されたジョブが前記計算対象形状以外の形状を有する対象外ジョブの場合、又は、投入されたジョブの形状が前記計算対象形状であり且つ前記事前配置における前記投入されたジョブの形状と一致する前記計算対象形状の配置位置に対応する前記情報処理装置に他のジョブが割り当てられている場合、前記計算対象形状のジョブが配置される以外の領域で、且つ前記投入されたジョブを内包可能な領域に投入されたジョブを配置する請求項１〜４のいずれか１項に記載の情報処理システム。
【請求項６】
前記ジョブ配置部は、投入されたジョブが前記計算対象形状以外の形状を有する対象外ジョブの場合、又は、投入されたジョブの形状が前記計算対象形状であり且つ前記事前配置における前記投入されたジョブの形状と一致する前記計算対象形状の配置位置に対応する前記情報処理装置に他のジョブが割り当てられている場合、１つの前記計算対象形状のジョブが配置された領域であり且つ前記投入されたジョブを内包可能な配置済未使用領域に対応する前記情報処理装置に他のジョブが未割り当てである場合、前記投入されたジョブを前記配置済未使用領域に対応する前記情報処理装置へ割り当てることを特徴とする請求項１〜４のいずれか１項に記載の情報処理システム。
【請求項７】
前記ジョブ配置部は、前記配置済未使用領域には、前記投入されたジョブを内包できない場合、前記配置済未使用領域を複数連結して、前記投入されたジョブを内包できる連結領域を作成し、前記連結領域に対応する前記情報処理装置に前記投入されたジョブを割り当てることを特徴とする請求項５に記載の情報処理システム。
【請求項８】
前記事前配置計算部は、所定間隔で前記計算対象形状及び前記影響度を取得し、前回決定したジョブの配置と比較してジョブの出現傾向が変化した場合に、前記事前配置を再度計算することを特徴とする請求項１〜５のいずれか１項に記載の情報処理システム。
【請求項９】
所定期間に投入されたジョブに関する情報を取得し、
前記ジョブに関する情報を基にジョブの形状毎の当該ジョブ形状の出現頻度や占有時間による影響度を求め、
前記影響度が高い順に所定数のジョブの形状を計算対象形状として特定し、
前記計算対象形状及び前記影響度を基に、複数の情報処理装置のそれぞれへのジョブを割り当て方であるジョブの事前配置を決定し、
投入されたジョブが前記計算対象形状に含まれる場合、前記事前配置にしたがい投入されたジョブを前記情報処理装置へ割り当てる
処理をコンピュータに実行させることを特徴とする管理装置制御プログラム。
【請求項１０】
複数の情報処理装置及び前記情報処理装置が処理するジョブの前記情報処理装置への割り当てを管理する管理装置を有する情報処理システムの制御方法であって、
前記管理装置に
所定期間に投入されたジョブに関する情報を取得させ、
前記ジョブに関する情報を基にジョブの形状毎の当該ジョブ形状の出現頻度や占有時間による影響度を求めさせ、
前記影響度が高い順に所定数のジョブの形状を計算対象形状として特定させ、
前記計算対象形状及び前記影響度を基に、複数の情報処理装置のそれぞれへのジョブを割り当て方であるジョブの事前配置を決定させ、
投入されたジョブが前記計算対象形状に含まれる場合、前記事前配置にしたがい投入されたジョブを前記情報処理装置へ割り当てさせる
ことを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
情報処理システムである並列計算機システム、その中でも特にHigh  Performance  Computing（ＨＰＣ）システムでは、高性能化のためにノード数が１０万ノードを超えるシステムが開発されている。ここで、ノードとは、情報処理を実行する処理部の単位であり、例えば、演算処理部であるCentral  Processing  Unit（ＣＰＵ）などである。
【０００３】
ノード数が膨大になると、ノード間通信のインターコネクトとして一般的なクロスバスイッチを経由して通信する間接網ネットワークでは、スイッチの物量が膨大となるため、現実的ではない。そこで、ノード数が膨大になる場合には、インターコネクトとして、隣接するノード間を直接繋ぐ直接網ネットワークを使用することが多い。直接網ネットワークでは、隣接していないノード間の通信は、通信を行う両ノードの間に配置される各ノード上のインターコネクトルータを経由して通信が行われる。直接網ネットワークのネットワークトポロジ、すなわちネットワークの構造には、メッシュ型やトーラス型が用いられることが多い。
【０００４】
直接網ネットワークを用いた並列計算機システムでは、ある並列ジョブ（以下では、単に「ジョブ」という。）を実行するノードの間に、別のジョブを実行するノードが存在すると、両ジョブのノード間通信が影響し合い通信性能の低下を招く。すなわち、このような状態は、最終的には両ジョブの実行時間の長期化を招く。そこで、ジョブ実行性能を向上させるために、１つのジョブは、隣接したノード群に配置される。また、並列アプリケーションは、隣接するノード間への通信がその他のノードへの通信より頻度が高い計算が多く存在するように設計される。
【０００５】
このような並列アプリケーションを直接網ネットワークの並列計算機システムで実行するには、ネットワークトポロジとアプリケーションの通信構造とを一致させた方が、通信効率がよく、ジョブの実行性能も高くなる。例えば、２次元メッシュネットワークの並列計算機システムで、２次元配列の隣接通信の多い並列アプリケーションを実行させるには、２次元に並んだノード群で実行させた方が、１次元に並んだノード群で実行させるよりも性能がよくなる。このため、メッシュやトーラストポロジ構造を有する直接網ネットワークで構成された並列計算機システム（以下では、単に並列計算機システムという。）においては、一般に利用者は、ジョブに適したノードの配置形状を指定した上でジョブを投入する。並列計算機システムにおいて、どのノードでジョブを実行させるかのジョブ配置を管理するジョブスケジューラは、単にノード数に応じてジョブ配置を決定するのではなく、ジョブ形状を考慮したジョブ配置計算を行う。
【０００６】
なお、以下では、ジョブに適したノードの配置形状を「ジョブ形状」と呼ぶ。さらに、サイズが異なるジョブ形状は、異なるジョブ形状として扱う。例えば、ジョブ形状が正方形であっても、３×３と５×５とは別のジョブ形状とする。また、ネットワークの各次元方向の通信性能が同じ場合、ジョブ形状を回転させても同じ実行性能が得られる。このことから、回転させると同じジョブ形状となるものは、同じジョブ形状として扱う。例えば、２×３と３×２のジョブ形状は、同一のジョブ形状とする。
【０００７】
ここで、従来の並列計算機システムにおけるジョブ配置方法としては、あるジョブを配置する際に、将来投入される後続ジョブがなるべく多く配置できるように考慮して配置を決定する方法がある。例えば、ジョブの配置後に隣接する未使用ノード群のノード数が最大になるように配置を決定するジョブ配置方法がある。この場合、例えば、未使用ノード群のノード数が最大になる配置が複数有る場合は、下方向の隣接する未使用ノード数を優先し、次に右方向の隣接する未使用ノード数が多くなる順で配置を決定する。
【０００８】
そして、並列計算機システムに対して多数の様々なジョブ形状のジョブが投入されると、その配置の組合せ状況によって、フラグメンテーションと呼ばれる小規模の未使用ノード群が生じる場合がある。
【０００９】
なお、プログラムの占有時間と実行頻度、コンピュータの稼働率を基にプログラムあたりの利用率を算出して、大きいプログラムから順に複数のコンピュータに割り当てる従来技術がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−２４３１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
単に未使用ノード数が多くなるようにジョブを配置していくと、その後にジョブを配置する場合に、未使用ノードの総数は当該ジョブが要求するノード数に足りていても、ジョブ形状の違いによって配置できない状況が発生することがある。このような場合、配置できないジョブは実行待ち状態となり、ジョブが割り当てられずに残ったノードは未使用のままとなる。これをフラグメンテーションと呼ぶ。
【００１２】
実際のシステムでは、実行待ちキューにジョブが溜まっており、たとえ実行待ちキューの先頭ジョブが上記のような状態のため実行できなくても、実行待ちキューにある後続のジョブ（後から投入されたジョブ）であれば実行できる可能性がある。一般にバックフィルと呼ばれるこの手法を使用してジョブを実行するか否かは、システム管理ポリシーに依存し、当該並列計算機システム毎に異なる。また、たとえ後続のジョブの先行実行を許すポリシーであったとしても、未使用ノード構成と実行可能ジョブのジョブ形状の不一致からさらに小規模のフラグメンテーションが発生し、未使用ノードが発生することは避けられない。このように、フラグメンテーションによりノードの使用効率が低下する。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、ノードの使用効率を向上させた情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法は、１つの態様において、情報処理システムは、複数の情報処理装置及び前記情報処理装置が処理するジョブの前記情報処理装置への割り当てを管理する管理装置を有する。前記管理装置は、所定期間に投入されたジョブに関する情報を取得する情報取得部と、前記ジョブに関する情報を基にジョブの形状毎の当該ジョブ形状の出現頻度や占有時間による影響度を求める算出部と、前記影響度が高い順に所定数のジョブの形状を計算対象形状として決定する形状決定部と、前記計算対象形状及び前記影響度を基に、前記情報処理装置それぞれへのジョブを割り当て方であるジョブの事前配置を決定する事前配置計算部と、投入されたジョブが前記計算対象形状のいずれかに一致する場合、前記事前配置にしたがい投入されたジョブを前記情報処理装置へ割り当てるジョブ配置部とを備える。
【発明の効果】
【００１５】
本願の開示する情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法の１つの態様によれば、ノードの使用効率を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、情報処理システムの全体構成を示す構成図である。
【図２】図２は、実施例１に係るジョブ管理ノードの詳細を表すブロック図である。
【図３】図３は、ジョブ情報テーブルの一例の図である。
【図４】図４は、形状ランキングテーブルの一例の図である。
【図５】図５は、事前配置テーブルの一例の図である。
【図６】図６は、従来の方法によるジョブの配置の一例を説明するための図である。
【図７】図７は、実施例１に係る情報処理システムによるジョブの配置の一例を説明するための図である。
【図８】図８は、ジョブ管理ノードによる事前配置計算処理のフローチャートである。
【図９】図９は、実施例１に係るジョブマネージャによるジョブ起動処理全体のフローチャートである。
【図１０】図１０は、配置決定部によるジョブの配置処理のフローチャートである。
【図１１】図１１は、実施例２に係るジョブ管理ノードによる事前ジョブ配置計算の処理のフローチャートである。
【図１２】図１２は、ジョブ管理ノードのハードウェア構成図である。
【図１３】図１３は、計算ノードのハードウェア構成図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法が限定されるものではない。
【実施例１】
【００１８】
図１は、情報処理システムの全体構成を示す構成図である。本実施例に係る情報処理システム１は、例えば、並列計算機システムである。情報処理システム１は、ジョブ管理ノード１０、ログインノード１１、システム管理ノード１２、ファイルサーバ１３及び複数の計算ノード２０を有する。例えば、本実施例では、計算ノード２０は図１に示すように二次元メッシュネットワークの構造を有するように配置される。
【００１９】
ここで、本実施例では、計算ノード２０は、二次元メッシュネットワーク構造を有するが、それ以外のネットワーク構造を有してもよい。また、図１では、８×８の二次元メッシュネットワークを構成する計算ノード２０を記載したが、台数はこれに限らず、また、全体形状も正方形に限らない。以下では、複数の計算ノード２０をまとめて表す場合、「計算ノード群」という。
【００２０】
ログインノード１１は、情報処理システム１の利用者からジョブの実行条件を記述したジョブドキュメントの入力を受ける。そして、ログインノード１１は、取得したジョブドキュメントをジョブ管理ノード１０へ送信する。ジョブドキュメントには、利用者が実行を指示するアプリケーションのファイルパス及び実行に必要な計算ノード２０の数などが記載される。
【００２１】
システム管理ノード１２は、システムの起動及び停止管理、並びに、エラーログの取得などの計算ノード２０の運用における統括管理を行う。
【００２２】
ファイルサーバ１３は、共有ファイルシステムであり、ジョブ管理ノード１０、ログインノード１１、システム管理ノード１２、計算ノード２０、さらには、本システム外の計算機システムとファイル共有ができる。例えば、計算ノード２０は、計算を行うにあたり、ファイルサーバ１３に格納されたデータを利用して処理を行う。
【００２３】
管理装置であるジョブ管理ノード１０は、ジョブ管理ソフトウェアであるジョブマネージャが動作する。
【００２４】
利用者がアプリケーションをジョブとして実行させることを「ジョブの投入」と呼ぶ。ジョブの投入は一般にログインノード１１から行う。利用者はログインノードにログインし、アプリケーションのファイルパス、入出力データファイルのファイルパス、実行に必要な計算ノードの数、実行に必要な関連ソフトウェアの情報などを記載したジョブドキュメントファイルを用意し、ジョブ管理ノード１０で動作しているジョブマネージャに、当該ジョブドキュメントファイルを指定して、ジョブ実行を依頼する。ジョブマネージャは、ジョブドキュメントをログインノード１１から受信し、ジョブの実行の依頼を受ける。ジョブマネージャが、利用者から入力されたジョブドキュメントの受信によりジョブの実行の依頼を受けることを、「ジョブの投入」と呼ぶ場合が有る。ジョブマネージャは、ジョブが投入されると、ジョブドキュメントを解釈して、ジョブに使用する計算ノード２０の数などのジョブの実行条件を取得する。そして、ジョブマネージャは、ジョブを割り当てる計算ノード２０の決定を含むジョブスケジューリングを行う。ジョブの割り当てについては後で詳細に説明する。なお、システムによっては、ログインノード１１、ジョブ管理ノード１０、システム管理ノード１２を１台のノードに統合することもある。
【００２５】
ここで、計算ノード２０には、ジョブマネージャの指示を受けて処理を実行するプロセスであるジョブ管理デーモンが常時起動している。ジョブマネージャは、使用する計算ノード群の要件が確保されジョブの実行条件が整うと、上記のジョブスケジューリングで決定した使用する計算ノード群のジョブ管理デーモンにジョブドキュメントファイルで指示されたアプリケーションの実行を指示する。
【００２６】
計算ノード２０にて、アプリケーションの実行が終了すると、ジョブ管理デーモンはシステム管理ノード１２上のジョブマネージャに終了を通知する。ジョブマネージャは、当該ジョブのアプリケーションの実行を依頼したすべての計算ノード２０から終了状態の通知を受けると、計算結果の転送などの後始末を行い、情報処理システム１は、ジョブ実行を終了する。
【００２７】
次に、図２を参照して、ジョブ管理ノード１０によるジョブ管理について詳細に説明する。図２は、実施例１に係るジョブ管理ノードの詳細を表すブロック図である。
【００２８】
ジョブ管理ノード１０は、図２に示すように、情報取得部１０１、重み計算部１０２、対象形状決定部１０３、事前配置計算部１０４、配置決定部１０５、ジョブ実行管理部１０６及び記憶部１０７を有する。
【００２９】
記憶部１０７は、ジョブ情報テーブル２０１、形状ランキングテーブル２０２及び事前配置テーブル２０３を保持している。ジョブ情報テーブル２０１、形状ランキングテーブル２０２及び事前配置テーブル２０３については、後で詳細に説明する。
【００３０】
情報取得部１０１は、後述するジョブマネージャ１０６が計算ノード２０に対して割り当てたジョブの形状（以下では、「ジョブ形状」という。）や各ジョブの実行時間を、ジョブマネージャ１０６から取得する。そして、情報取得部１０１は、ジョブ形状毎に所定期間の出現回数を加算して記憶してジョブ形状毎の出現回数の総計を算出する。このジョブ形状毎の出現回数の総計が、「投入回数」の一例にあたる。情報取得部１０１は、記憶部１０７に格納されているジョブ情報テーブル２０１にジョブ形状毎の出現回数の総計を登録する。
【００３１】
また、情報取得部１０１は、ジョブ形状毎に所定期間のジョブの実行時間を加算して記憶し実行時間の総計を算出する。その後、情報取得部１０１は、記憶部１０７に格納されているジョブ情報テーブル２０１にジョブ形状毎の実行時間の総計を登録する（実行時間小計）。ここで、所定期間とは、例えば、後で説明する重み計算部１０２による重み計算が行われた時点から１週間後を起点としてその前１月の間の期間である。
【００３２】
図３は、ジョブ情報テーブルの一例の図である。情報取得部１０１は、例えば、長辺及び短辺の長さをジョブ情報テーブル２０１に登録することでジョブ形状を特定する。ここでは２次元ネットワークの場合のジョブ情報テーブル２０１を記載したが、３次元以上のネットワークの場合も同様に、各辺のサイズの大きさ順に記載することでジョブ形状を表すことができる。
【００３３】
また、図３は、ジョブ形状の出現順にジョブ情報テーブル２０１を作成する場合の例であり、この場合、ジョブの投入状況によりジョブ情報テーブル２０１のサイズは不定である。ただし、各辺のサイズの全ての組合せによりジョブ形状を全て網羅したジョブ情報テーブル２０１を用いることも可能であり、その場合、ジョブ情報テーブル２０１のサイズは固定である。
【００３４】
また、本実施例では、各ジョブ形状の情報がそろった時点から直ちに各ジョブ形状の重みを、情報取得部１０１が計算しジョブ情報テーブル２０１に登録しているが、重みの計算のタイミングはこれに限らない。例えば、後述する重み計算部１０２が、形状ランキングテーブル２０２の作成時に重みを算出してもよい。その場合、ジョブ情報テーブル２０１には、重みの欄は設けなくてもよい。
【００３５】
重み計算部１０２は、一定期間毎にジョブ情報テーブル２０１におけるジョブ形状毎の出現回数及び実行時間小計を取得する。例えば、重み計算部１０２は、１週間毎にジョブ形状毎の出現回数及び実行時間小計を取得する。
【００３６】
そして、重み計算部１０２は、所定期間の間の各ジョブ形状に対応する出現回数を合計して、投入された全ジョブ数を算出する。また、重み計算部１０２は、所定期間の間の各ジョブ形状に対応する実行時間小計を合計して、全ジョブの実行時間の総和を算出する。
【００３７】
次に、重み計算部１０２は、各ジョブの実行時間小計を全ジョブの実行時間の総和で除算して、各ジョブ形状を有するジョブの実行時間が全ジョブの実行時間の総和の中で占める割合を求める。以下では、あるジョブ形状を有するジョブの実行時間の全ジョブの実行時間の総和の中で占める割合を、そのジョブ形状の「実行時間の占有率」という場合がある。
【００３８】
また、重み計算部１０２は、各ジョブ形状の出現回数を全ジョブ数で除算して、全ジョブ数に対する各ジョブ形状の出現の割合を求める。以下では、全ジョブ数に対するあるジョブ形状の出現の割合を、そのジョブ形状の「ジョブ数の割合」という場合がある。
【００３９】
その後、重み計算部１０２は、各ジョブ形状について、ジョブ数の割合にチューニング用係数を乗算した値と、実行時間の占有率とを乗算した値を、各ジョブ形状の重みとして求める。この重みが、「影響度」の一例である。
【００４０】
例えば、あるジョブの実行時間の占有率の値が高い程、そのジョブは実行される可能性が高いといえる。ただし、実行時間の占有率が高い場合でも、ジョブ数の割合が低い、すなわち出現頻度が低ければ、そのジョブについての配置情報を決定しておく意義が低い、すなわち影響度が低いと考えられる。そのため、重み計算部１０２は、実行時間の占有率にジョブ数の割合を乗算して重みを求めている。
【００４１】
例えば、ジョブ形状Ｓについて、ｔｓをジョブ形状Ｓの実行時間小計とし、ｔａｌｌを全ジョブの実行時間の総和とし、ｊｓをジョブ形状Ｓの出現回数とし、ｊａｌｌを全ジョブ数とし、αをチューニング用係数とする。この場合、重み計算部１０２は、ｗｓ＝（ｔｓ／ｔａｌｌ）×α（ｊｓ／ｊａｌｌ）によりジョブ形状Ｓの重みｗｓを求める。ここで、ｔｓ／ｔａｌｌは、ジョブ形状Ｓの実行時間の占有率である。また、ｊｓ／ｊａｌｌは、ジョブ形状Ｓのジョブ数の割合である。
【００４２】
ここで、チューニング用係数αは、情報処理システム１に対するジョブの投入傾向によりチューニングを行うための係数であり、全ジョブ形状で共通の値を有する。例えば、チューニング用係数αは、情報処理システム１の利用者が実際に情報処理システム１にジョブを投入し実行させた結果を基に統計的に算出する。チューニング用係数αは、季節性や時間に依存してジョブの投入傾向が異なる場合に、そのジョブの投入傾向の変化に合わせて求められることが好ましい。また、季節性や時間的な依存がジョブの投入傾向に少なく、ジョブの投入傾向が平均化されるような場合には、チューニング用係数αは、一定量のジョブの実行結果を用いて自動的に求めることもできる。
【００４３】
なお、ここで説明したジョブ形状の重みの算出は一例であり、他の様々なジョブ情報を基に重みを求めることもできる。例えば、毎日定時に投入する可能性の高いジョブなどの優先度の高いジョブのジョブ形状を他のジョブ形状より重みを高くするように、優先度に応じた値を乗算して重みの高いジョブ形状としてもよい。
【００４４】
重み計算部１０２は、算出した各ジョブ形状の重みを各ジョブ形状に対応させてジョブ情報テーブル２０１に登録する。この重み計算部１０２が、「計算部」の一例にあたる。
【００４５】
対象形状決定部１０３は、ジョブ形状及び対応する重みの情報をジョブ情報テーブル２０１から取得する。そして、対象形状決定部１０３は、重みの降順にソートしてジョブ形状を並び替え、図４に示す形状ランキングテーブル２０２を作成する。
【００４６】
図４は、形状ランキングテーブルの一例の図である。形状ランキングテーブル２０２には、図４に示すように、重みが降順にソートされた状態で並んで登録されている。すなわち、図４の形状ランキングテーブル２０２では、上に行くにしたがい重みが大きくなり、下に行くにしたがい重みが小さくなる。そして、形状ランキングテーブル２０２には、降順に並べた重みに対応するジョブ形状が登録されている。具体的には、形状ランキングテーブル２０２では、長辺及び短辺の長さによりジョブ形状が表されている。以下では、重みの大きい順にジョブ形状の形状ランキングテーブル２０２における順位を用いて表す。例えば、図４にしめす最も重みの大きいジョブ形状２２１を第１位のジョブ形状とする。また、次に重みの大きいジョブ形状２２２を第２位のジョブ形状とする。続いて、ジョブ形状２２３を第３位のジョブ形状とし、ジョブ形状２２４を第４位のジョブ形状とする。
【００４７】
ここでは２次元ネットワークの場合の形状ランキングテーブル２０２を記載したが、３次元以上のネットワークの場合も同様に、各辺のサイズの大きさ順に記載することでジョブ形状を表すことができる。
【００４８】
次に、対象形状決定部１０３は、形状ランキングテーブル２０２の重みの大きい順にいくつのジョブ形状を事前ジョブ配置計算の対象とするかを決定する。ここで、対象形状決定部１０３によるジョブへ位置計算の対象とするジョブ形状の数の算出について詳細に説明する。
【００４９】
例えば、対象形状決定部１０３は、第１位のジョブ形状と第２位のジョブ形状の重みの比を計算する。続いて、対象形状決定部１０３は、第１位のジョブ形状が使用するノード数（以下、「使用ノード数」という。）に求めた比を乗算する。さらに、対象形状決定部１０３は、乗算結果に第２位のジョブ形状の使用ノード数を加算したものを第２位までの全使用ノード数とする。次に、対象形状決定部１０３は、第２位のジョブ形状と第３位のジョブ形状の重みの比を計算する。続いて、対象形状決定部１０３は、第２位までの全使用ノード数に求めた比を乗算する。さらに、対象形状決定部１０３は、乗算結果に第３位のジョブ形状の使用ノード数を加算したものを第３位までの全使用ノード数とする。対象形状決定部１０３は、以上の計算を繰り返す。そして、対象形状決定部１０３は、有る順位までの全使用ノード数が情報処理システム１の全体の計算ノード２０の数、又は、予め設定した値を超えない順位まで実行し、その順位までのジョブ形状をジョブは事前ジョブ配置計算の対象とする。
【００５０】
以上のジョブへ位置計算の対象とするジョブ形状の数を求める計算式は、Ｎｉ＝（Ｎｉ−１＋ｎｉ）［ｗｉ／ｗｉ＋１＋０．５］と表される。ここで、ｗｉはジョブ形状の重みを降順でソートした重みの列であり、ｉは自然数である。また、ｎｉは、第ｉ位のジョブ形状の使用ノード数である。また、Ｎｉは、第ｉ位までの全使用ノード数である。さらに、［ｗｉ／ｗｉ＋１＋０．５］の括弧は、ガウス記号であり、以下の最大の整数を表す。すなわち、［ｗｉ／ｗｉ＋１＋０．５］は、ｗｉ／ｗｉ＋１を四捨五入した値となる。
【００５１】
対象形状決定部１０３は、上記式で表される計算をＮａｌｌ≧ＮｋかつＮａｌｌ≦Ｎｋ＋１が成り立つ第ｋ位まで繰り返す。そして、対象形状決定部１０３は、第ｋ位のジョブ形状までのジョブ形状を事前ジョブ配置計算の対象とする。
【００５２】
対象形状決定部１０３は、事前ジョブ配置計算の対象とするジョブ形状の順位のうち最も低い順位を事前配置計算部１０４へ通知する。ここで、対象形状決定部１０３は、順位の代わりに、事前ジョブ配置計算の対象とするジョブ形状の重みのうち最も小さい重みの情報を事前配置計算部１０４へ通知してもよい。この対象形状決定部１０３が、「決定部」の一例にあたる。
【００５３】
事前配置計算部１０４は、定期的に事前ジョブ配置計算の対象とするジョブ形状の最低の順位を対象形状決定部１０３から受信する。例えば、事前配置計算部１０４は、重み計算部１０２による重みの計算タイミングに合わせて動作する。次に、事前配置計算部１０４は、受信した順位以上の順位の各ジョブ形状の重みを形状ランキングテーブル２０２から取得する。
【００５４】
次に、事前配置計算部１０４は、取得したジョブ形状が現在使用中の事前ジョブ配置で用いているジョブ形状と異なるか否かを判定する。さらに、事前配置計算部１０４は、取得したジョブ形状が現在使用中の事前ジョブ配置で用いているジョブ形状と同じ場合、取得したジョブ形状と使用中のジョブ形状との重みの差が予め設定された閾値以上か否かを判定する。ジョブ形状が同じ場合又はジョブ形状が異なっても重みの差が閾値以下の場合、事前配置計算部１０４は、現在使用中の事前ジョブ配置の使用を継続する。これにより、事前配置計算部１０４は、事前ジョブ配置を計算した場合の計算結果と現在使用している事前ジョブ配置とがほとんど変わらず事前ジョブ配置の計算の効果が低い場合に、事前ジョブ配置の計算を回避して、処理負荷を軽減することができる。
【００５５】
これに対して、ジョブ形状が異なる場合又は重みの差が閾値以上の場合、事前配置計算部１０４は、事前ジョブ配置計算を実行し、対象としたジョブ形状を有するジョブの配置を予め決定しておく事前ジョブ配置位置を決定する。ここで、事前配置計算部１０４は、事前ジョブ配置位置の計算方法として、箱詰め問題の解法などを用いる。なお、この計算では、事前配置計算部１０４は、計算ノード２０のうち未使用のノードが最小となる配置を採用する。
【００５６】
そして、事前配置計算部１０４は、各ジョブ形状を有するジョブの事前ジョブ配置位置を示す情報が登録された事前配置テーブル２０３を作成する。事前配置テーブル２０３は、例えば、図５で表される。図５は、事前配置テーブルの一例の図である。
【００５７】
例えば、事前配置計算部１０４は、事前ジョブ配置計算の対象としたジョブ形状を特定するための長辺及び短辺の情報を登録する。ここでは２次元ネットワークの場合の事前配置テーブル２０３を記載したが、３次元以上のネットワークの場合も同様に、各辺のサイズの大きさ順に記載することでジョブ形状を表すことができる。
【００５８】
さらに、事前配置計算部１０４は、各ジョブ形状に対応させて、配置座標を登録する。本実施例では、事前配置計算部１０４は、各ジョブ形状の左上の角のＸ座標及びＹ座標を示し、さらに長辺の軸を示すことで、各ジョブ形状を有するジョブの配置座標を表す。この時のＸ座標及びＹ座標は、例えば、図１に示す二次元ネットワークとして配列された計算ノード２０の左上端の計算ノード２０を原点としている。ここで、本実施例では、左上の角の座標と長手方向の方向を用いてジョブの配置を示したが、これに限らず、例えば、左上及び右下の角の座標を示すことでジョブの配置を示しても良い。
【００５９】
ジョブマネージャ１０６は、利用者により投入されたジョブの情報をログインノード１１から受信する。そして、ジョブマネージャ１０６は、ジョブキューに受信したジョブを蓄積していく。ジョブキューは、実行を待つジョブが順番に蓄積される列であり、ジョブ実行待ちキューとも呼ばれる。
【００６０】
ジョブマネージャ１０６は、ジョブキューに未実行のジョブがあるか否かを判定する。未実行のジョブがある場合、ジョブキューの先頭のジョブの情報を配置対象のジョブとする。そして、ジョブマネージャ１０６は、当該ジョブの配置を配置決定部１０５に依頼する。
【００６１】
配置決定部１０５は、ジョブマネージャ１０６から依頼されたジョブのジョブ形状が事前ジョブ配置計算の対象となったジョブ形状と一致するか否かを判定する。
【００６２】
そこで、先ず特定したジョブ形状が事前ジョブ配置計算の対象となったジョブ形状と一致する場合について説明する。ジョブ形状が一致する場合、配置決定部１０５は、事前配置テーブル２０３を参照し、当該ジョブ形状を有するジョブの事前ジョブ配置位置を特定する。そして、配置決定部１０５は、当該ジョブ形状を有するジョブの事前ジョブ配置位置で既に別のジョブが実行されているか否かを判定する。このとき、配置対象のジョブのジョブ形状が事前ジョブ配置計算において複数存在する場合、配置決定部１０５は、各事前ジョブ配置位置について既に別のジョブが実行されているか否かの判定を行う。
【００６３】
配置対象のジョブのジョブ形状に対応するジョブが実行されていない事前ジョブ配置位置がある場合、配置決定部１０５は、その事前ジョブ配置位置への配置対象のジョブの配置をジョブ実行管理部１０６へ通知する。配置決定部１０５は、ジョブ実行管理部１０６へ通知した配置対象のジョブの配置位置でジョブが実行中であるとの情報を保持する。
【００６４】
これに対して、配置対象のジョブのジョブ形状を有する事前ジョブ配置位置全てでジョブが実行されている場合、配置決定部１０５は、配置対象のジョブのジョブ形状が事前ジョブ配置計算の対象となったジョブ形状と一致しない場合と同様の処理により配置を決定する。
【００６５】
そこで次に、特定したジョブ形状が事前ジョブ配置計算の対象となったジョブ形状と一致しない場合について説明する。この場合、配置決定部１０５は、例えば、バックフィルと呼ばれるジョブの配置及び実行を行う。以下に詳細を説明する。
【００６６】
配置決定部１０５は、事前ジョブ配置でジョブの配置が行われていない領域を特定する。そして、配置決定部１０５は、特定した領域でジョブが実行されていない領域があるか否かを判定する。
【００６７】
ジョブが実行されていない領域がある場合、配置決定部１０５は、その領域に配置対象のジョブが内包可能か否か、すなわち配置できるか否かを判定する。配置できる場合、配置決定部１０５は、配置後の未使用ノードが最大になるなどの配置条件を満たすように配置対象のジョブの配置を決定し、ジョブマネージャ１０６へ通知する。配置決定部１０５は、ジョブマネージャ１０６へ通知した配置対象のジョブの配置位置でジョブが実行中であるとの情報を保持する。
【００６８】
これに対して、事前ジョブ配置でジョブの配置が行われていない領域に配置対象のジョブが配置できない場合、配置決定部１０５は、以下の処理を行う。配置決定部１０５は、事前ジョブ配置で１つのジョブが配置された領域で、且つ、別のジョブを実行していない領域のうち、配置対象のジョブを内包可能な領域の有無を判定する。そのような領域が有る場合、配置決定部１０５は、その領域に含まれる計算ノード２０の数と配置対象のジョブが使用する計算ノード２０の数との差が最小になる領域を特定する。そして、配置決定部１０５は、配置後の未使用ノードが最大になるなどの配置条件を満たすように特定した領域における配置対象のジョブの配置を決定し、ジョブマネージャ１０６へ通知する。配置決定部１０５は、ジョブマネージャ１０６へ通知した配置対象のジョブの配置位置でジョブが実行中であるとの情報を保持する。
【００６９】
これに対して、そのような領域がない場合、配置決定部１０５は、事前ジョブ配置で１つのジョブが配置された領域、且つ別のジョブを実行していない隣接した領域を連結した連結領域を生成する。そして、配置決定部１０５は、連結領域で、配置対象のジョブを内包可能な領域の有無を判定する。そのような連結領域が存在する場合、配置決定部１０５は、その連結領域に含まれる計算ノード２０の数と配置対象のジョブが使用する計算ノード２０の数との差が最小になる連結領域を特定する。そして、配置決定部１０５は、配置後の未使用ノードが最大になるなどの配置条件を満たすように特定した連結領域における配置対象のジョブの配置を決定し、ジョブマネージャ１０６へ通知する。配置決定部１０５は、ジョブマネージャ１０６へ通知した配置対象のジョブの配置位置でジョブが実行中であるとの情報を保持する。
【００７０】
ここで、連結領域の生成の一例について説明する。例えば、配置決定部１０５は、他のジョブが実行されていない事前ジョブ配置で１つのジョブが配置された領域のうち、連結可能な隣接する領域を特定する。そして、配置決定部１０５は、特定した領域を連結して配置対象のジョブを内包可能な領域とした場合に、事前ジョブ配置で１つのジョブが配置された領域の連結数が少ない組合せの連結方法を選択する。その上で、配置決定部１０５は、連結数が同じ組合せの場合、配置対象のジョブを配置した場合に、その連結領域の余りがより少なくなる組合せを選択する。
【００７１】
一方、配置対象のジョブが以上の配置条件のいずれも満足しない場合、配置決定部１０５は、配置対象のジョブの配置が困難と判定する。そして、ジョブマネージャ１０６に配置不可の情報を通知する。
【００７２】
そして、配置不可の情報を受信したジョブマネージャ１０６は、スケジューリングポリシーにしたがい後続や低優先度のジョブを先行して実行させるか否かを決める。他ジョブを先行実行させないスケジューリングポリシーの場合、実行中の別ジョブが終了するまで待ち、別ジョブが終了した時点で、再び配置決定部１０５にジョブキューの先頭ジョブの配置を依頼し、配置されるまでこの作業を繰り返す。
【００７３】
また、配置決定部１０５は、実行が完了したジョブの情報をジョブマネージャ１０６から取得する。そして、配置決定部１０５は、実行が完了したジョブを配置した位置が、ジョブが未実行の状態に遷移したと判定する。
【００７４】
これに対して、他の実行待ちジョブを先行して実行させるスケジューリングポリシーの場合、そのスケジューリングポリシーに従って、ジョブマネージャ１０６はバックフィルなどの従来方式により先行実行するジョブの候補を決定し、配置決定部１０５に当該候補ジョブの配置を依頼する。当該候補ジョブも配置できなかった場合、スケジューリングポリシーにしたがって、別の候補の配置を試みたり、現在実行中の別ジョブの終了まで待機したりする。この配置決定部１０５が、「ジョブ配置部」の一例にあたる。
【００７５】
ジョブマネージャ１０６は、配置するジョブ及び当該ジョブの配置位置の情報を配置決定部１０５から受信する。そして、ジョブマネージャ１０６は、指定された配置位置に対応する計算ノード２０にジョブを割り当て、ジョブを実行させる。この時、ジョブマネージャ１０６は、実行させたジョブを情報取得部１０１へ通知する。
【００７６】
その後、ジョブマネージャ１０６は、実行させたジョブの完了の通知を計算ノード２０から受信する。ジョブマネージャ１０６は、完了したジョブの情報を配置決定部１０５へ通知する。さらに、ジョブマネージャ１０６は、ジョブの割り当てから完了までの時間を計算してジョブの実行時間を算出する。その後、ジョブマネージャ１０６は、算出したジョブの実行時間をジョブの識別情報と共に情報取得部１０１へ通知する。
【００７７】
以上に説明した、情報取得部１０１、重み計算部１０２、対象形状決定部１０３、事前配置計算部１０４及び配置決定部１０５は、ジョブ管理ノード１０の演算処理部が実行するジョブマネージャのジョブ配置機能として実現されることができる。
【００７８】
次に、図６及び図７を参照して、本実施例に係る情報処理システムによるジョブの配置の一例について説明する。図６は、従来の方法によるジョブの配置の一例を説明するための図である。図７は、実施例１に係る情報処理システムによるジョブの配置の一例を説明するための図である。
【００７９】
先ず、図６を参照して、従来の方法を用いてジョブを配置した場合について説明する。ここでは、８×８の計算ノード群４００に対して、ジョブ形状３０１〜３０７のジョブが番号順に投入された場合で説明する。ここでは、従来の方法として、１つの連結する未使用領域の大きさがなるべく大きくなるようにジョブを配置し、且つ、下方向の隣接する未使用の計算ノード２０の数がなるべく多くなるようにジョブを配置する方法を用いる。
【００８０】
先ず、ジョブ形状３０１のジョブは、計算ノード群４００の左上の領域３１１に配置される。次に、ジョブ形状３０２のジョブは、下方向の計算ノード２０の使用を避けて計算ノード群４００上の領域３１２に配置される。次に、ジョブ形状３０３のジョブは、９０度回転させて領域３１２の右に配置する。次に、ジョブ形状３０４のジョブは、上記配置ルールにしたがって領域３１１の下の３１４に配置される。
【００８１】
この後、長辺、短辺とも５であるジョブ形状３０５のジョブが投入される。しかし、計算ノード群４００上には非矩形の未使用領域４０１しかない。ここには長辺、短辺とも５の形状のジョブを配置することができない。したがって、ジョブ形状３０５のジョブは待機することになり、処理が遅延してしまう。さらに、後続のジョブの先行実行を許さないスケジューリングポリシーの場合、ジョブ３０６〜３０７はジョブ形状要件を満たす未使用ノードはあるのに当該スケジューリングポリシーにより配置ならびに実行できず、ジョブ３０５の実行が開始されるまで処理が遅延する。
【００８２】
次に、図７を参照して本実施例に係る情報処理システム１によるジョブの配置の一例を説明する。この場合も、図６と同様に、８×８の計算ノード群４００に対して、ジョブ形状３０１〜３０７のジョブが番号順に投入された場合で説明する。
【００８３】
この場合、ジョブ形状３０１〜３０７の重みの順位が上位であり、事前配置計算部１０４は、事前ジョブ配置計算によって、ジョブ形状３０１〜３０７のジョブの事前ジョブ配置位置を決定するものとする。具体的には、事前配置計算部１０４は、ジョブ形状３０１〜３０７のジョブを、それぞれ計算ノード群４００上の領域３２１〜３２７に配置するように事前ジョブ配置位置を決定する。
【００８４】
先ず、配置決定部１０５は、事前ジョブ配置にしたがいジョブ形状３０１のジョブを計算ノード群４００の左上の領域３２１に配置する。次に、配置決定部１０５は、事前ジョブ配置にしたがいジョブ形状３０２のジョブを計算ノード群４００上の領域３２２に配置する。次に、配置決定部１０５は、事前ジョブ配置にしたがいジョブ形状３０３のジョブを領域３２３に配置する。次に、配置決定部１０５は、事前ジョブ配置にしたがいジョブ形状３０４のジョブを計算ノード群４００上の領域３２４に配置する。次に、配置決定部１０５は、事前ジョブ配置にしたがいジョブ形状３０５のジョブを計算ノード群４００上の領域３２５に配置する。次に、配置決定部１０５は、事前ジョブ配置にしたがいジョブ形状３０６のジョブを計算ノード群４００上の領域３２６に配置する。次に、配置決定部１０５は、事前ジョブ配置にしたがいジョブ形状３０７のジョブを計算ノード群４００上の領域３２７に配置する。
【００８５】
このように、本実施例に係る情報処理システムでは、従来のジョブの配置方法ではフラグメントが発生しジョブが待機する状態となる場合でも、予め決めておいた配置にしたがいジョブを配置することで、ジョブを無駄なく計算ノードに配置することができる。
【００８６】
次に、図８を参照して、本実施例に係るジョブ管理ノード１０による事前ジョブ配置処理について説明する。図８は、ジョブ管理ノードによる事前配置計算処理のフローチャートである。
【００８７】
情報取得部１０１は、ジョブ形状及びジョブの実行時間を含むジョブ情報をジョブ実行管理部１０６から取得する（ステップＳ１０１）。そして、情報取得部１０１は、取得したジョブ情報でジョブ情報テーブル２０１を更新する。
【００８８】
重み計算部１０２は、各ジョブ形状の出現回数及び実行時間をジョブ情報テーブル２０１から取得する。そして、重み計算部１０２は、各ジョブ形状の重みを計算する（ステップＳ１０２）。その後、重み計算部１０２は、各ジョブ形状の重みをジョブ情報テーブル２０１へ登録する。
【００８９】
対象形状決定部１０３は、重みの降順にジョブ形状をソートする(ステップＳ１０３)。そして、対象形状決定部１０３は、ソート結果を形状ランキングテーブル２０２に登録する。
【００９０】
対象形状決定部１０３は、事前ジョブ配置計算の対象とするジョブ形状の最低順位を特定する。そして、対象形状決定部１０３は、特定した最低順位以上の順位のジョブ形状を事前ジョブ配置計算の対象とするジョブ形状として選択する（ステップＳ１０４）。対象形状決定部１０３は、選択したジョブ形状を事前配置計算部１０４へ通知する。
【００９１】
事前配置計算部１０４は、事前ジョブ配置計算の対象とするジョブ形状のジョブを、重みの比率にしたがい同時に実行する場合の配置を算出することで事前ジョブ配置計算を実行する（ステップＳ１０５）。
【００９２】
事前配置計算部１０４は、事前ジョブ配置計算によって求めた事前ジョブ配置位置を事前配置テーブル２０３に格納する。これにより、事前配置計算部１０４は、事前ジョブ配置計算結果を記憶部１０７に記憶させる（ステップＳ１０６）。
【００９３】
次に、図９及び１０を参照して、本実施例に係るジョブ管理ノード１０によるジョブの配置処理について説明する。図９は、実施例１に係るジョブマネージャによるジョブの起動処理全体のフローチャートである。図１０は、配置決定部によるジョブの配置処理のフローチャートである。
【００９４】
ジョブマネージャ１０６は、未使用の計算ノード２０があるか否かを判定する（ステップＳ２０１）。未使用の計算ノード２０が無い場合（ステップＳ２０１；否定）、ジョブマネージャ１０６は、未使用の計算ノードが発生するまで待機する。
【００９５】
これに対して、未使用の計算ノード２０がある場合（ステップＳ２０１；肯定）、ジョブマネージャ１０６は、ジョブキューにジョブがあるか否かを判定する（ステップＳ２０２）。ジョブキューにジョブが無ければ（ステップＳ２０２：否定）、ジョブマネージャ１０６は、ジョブの起動処理を終了する。
【００９６】
これに対して、ジョブキューにジョブが存在する場合（ステップＳ２０２：肯定）、ジョブマネージャ１０６は、ポインタをジョブキューの先頭にセットする（ステップＳ２０３）。
【００９７】
次に、ジョブマネージャ１０６は、ポインタが示すジョブである配置対象のジョブの実行時の配置計算を配置決定部１０５に依頼する（ステップＳ２０４）。
【００９８】
そして、配置決定部１０５は、配置できたらその配置情報を、配置できなかったら配置不可であったことをジョブマネージャ１０６に報告する。ジョブマネージャ１０６は、配置決定部１０５からの報告を受けて、配置対象ジョブの配置が可能か否かを判定する（ステップＳ２０５）。配置が可能な場合（ステップＳ２０５：肯定）、ジョブマネージャ１０６は、配置決定部１０５が戻した配置情報にしたがい配置対象のジョブを計算ノード２０のジョブ管理マネージャにアプリケーションの実行を依頼する（ステップＳ２０６）。その後、ジョブ管理マネージャ１０６は、ステップＳ２０１へ戻る。
【００９９】
これに対して、配置が困難な場合（ステップＳ２０５：否定）、ジョブマネージャ１０６は、スケジューリングポリシーに従い、ジョブキュー上の別のジョブが起動できるか否かを判定する（ステップＳ２０７）。別のジョブが起動不可の場合（ステップＳ２０７：否定）、ジョブマネージャ１０６は、ステップＳ２０１へ戻る。
【０１００】
これに対して、別のジョブが起動できるポリシーの場合(ステップＳ２０７：肯定)、ジョブマネージャ１０６は、ポインタを起動候補のジョブにセットする（ステップＳ２０８）。その後、ジョブマネージャ１０６は、ステップＳ２０４へ戻る。
【０１０１】
次に、図１０を参照して、配置決定部１０５によるジョブの配置処理の詳細について説明する。図１０は、配置決定部によるジョブの配置処理のフローチャートである。具体的には、図１０に示すフローは、図９におけるステップＳ２０４における依頼をジョブマネージャ１０６から受けた場合の配置決定部１０５が実行する処理の一例である。
【０１０２】
配置決定部１０５は、配置対象のジョブのジョブ形状が事前ジョブ配置されたジョブ形状であるか否を判定する（ステップＳ３０１）。事前ジョブ配置されたジョブ形状でない場合（ステップＳ３０１：否定）、配置決定部１０５は、ステップＳ３０４へ進む。
【０１０３】
これに対して、事前ジョブ配置されたジョブ形状である場合（ステップＳ３０１：肯定）、配置決定部１０５は、配置対象のジョブと同じジョブ形状のジョブが配置された事前ジョブ配置位置で別ジョブが実行されているか否かを判定する（ステップＳ３０２）。別ジョブが実行されていない場合（ステップＳ３０２：否定）、配置決定部１０５は、別ジョブが実行されていない事前ジョブ配置位置に配置対象のジョブを配置することを決定する（ステップＳ３０３）。その後、配置決定部１０５は、ステップＳ３０８へ進む。
【０１０４】
一方、別のジョブが実行中の場合（ステップＳ３０２：肯定）、配置決定部１０５は、事前ジョブ配置において未使用の計算ノード群に配置対象のジョブが内包可能か否かを判定する（ステップＳ３０４）。ただし、この事前ジョブ配置において未使用の計算ノード群は別ジョブが実行されていないものとする。内包可能の場合（ステップＳ３０４：肯定）、配置決定部１０５は、事前ジョブ配置において未使用の計算ノード群で且つ配置対象のジョブを内包可能な計算ノード群に、配置対象のジョブを配置することを決定する(ステップＳ３０７)。
【０１０５】
これに対して、内包困難な場合（ステップＳ３０４：否定）、事前ジョブ配置に用いられた他のジョブ形状に配置対象のジョブが内包可能か否かを判定する（ステップＳ３０５）。ただし、事前ジョブ配置に用いられた他のジョブ形状の配置位置において別ジョブが実行されていないものとする。内包可能の場合（ステップＳ３０５：肯定）、配置決定部１０５は、事前ジョブ配置に用いられた他のジョブ形状で且つ配置対象のジョブを内包可能な配置位置に、配置対象のジョブを配置することを決定する(ステップＳ３０７)。
【０１０６】
これに対して、内包困難な場合（ステップＳ３０５：否定）、事前ジョブ配置に用いられた隣接する他のジョブ形状を連結して生成した連結形状に配置対象のジョブが内包可能か否かを判定する（ステップＳ３０６）。ただし、連結形状の配置位置において別ジョブが実行されていないものとする。内包可能の場合（ステップＳ３０６：肯定）、配置決定部１０５は、連結形状で且つ配置対象のジョブを内包可能な配置位置に、配置対象のジョブを配置することを決定する(ステップＳ３０７)。
【０１０７】
その後、配置決定部１０５は、配置完了情報として決定した配置位置をジョブマネージャ１０６に戻り値として通知する（ステップＳ３０８）。
【０１０８】
一方、連結形状に配置対象のジョブが内包困難な場合（ステップＳ３０６：否定）、配置決定部１０５は、配置不可であったことを示す戻り値をジョブマネージャ１０６に戻り値として通知する（ステップＳ３０９）。
【０１０９】
以上に説明したように、本実施例に係る管理装置であるジョブ管理ノードは、統計情報にしたがい出現頻度が高く且つ事前配置の意義が高いジョブ形状を決定し、その決定したジョブ形状の最適な配置位置を事前に決定しておく。ジョブが投入されたときに、事前にあらかじめ配置計算の対象としたジョブ形状と同じであれば、事前に計算した配置位置にジョブを配置することにより、未使用の計算ノードの数を抑えてジョブを配置することができ、計算ノードの使用効率を向上させることができる。また、事前に配置位置が決定されたジョブ形状については、配置計算が不要になる場合があり、ジョブ投入のスループットを向上させることができる。
【実施例２】
【０１１０】
次に実施例２に係るジョブ管理ノードについて説明する。本実施例に係るジョブ管理ノードは、投入されるジョブの傾向の変化を検出して事前ジョブ配置の再計算を行うことが実施例１と異なるものである。本実施例に係るジョブ管理ノード１０も、図２のブロック図で表される。以下の説明では、実施例１と同様の機能を有する各部については説明を省略する。
【０１１１】
重み計算部１０２は、前回の重み計算の対象としたジョブ数の一定の割合のジョブ数がジョブマネージャ１０６により実行されると、重み計算を行う。例えば、重み計算部１０２は、前回の重み計算の対象としたジョブ数の１０％の数のジョブがジョブマネージャ１０６により実行された場合に重み計算を行う。
【０１１２】
例えば、重み計算部１０２は、実行されたジョブの数を数えるための再計算契機カウンタを有する。重み計算部１０２は、ジョブマネージャ１０６からのジョブ実行の通知を受ける。続いて、重み計算部１０２は、再計算契機カウンタをインクリメントする。そして、重み計算部１０２は、再計算契機カウンタの値が前回の重み計算の対象としたジョブ数の１０％に達したか否かを判定する。１０％に達した場合、重み計算部１０２は、重み計算を実行する。これに対して、１０％に達していない場合、重み計算部１０２は、ジョブマネージャ１０６からの次のジョブ実行の通知まで待機する。
【０１１３】
対象形状決定部１０３は、重み計算部１０２より重み計算が実行されると、ジョブ形状のソート及び事前ジョブ配置に用いるジョブ形状の選択を行う。
【０１１４】
ここで、本実施例では、実行されたジョブ数を基準として重みの計算及びジョブ形状の選択を実行した。これは、重み計算部１０２及び対象形状決定部１０３は、ある程度実行されたジョブ数が多くないと正確な投入されるジョブの傾向の変化を把握できないからである。つまり、本実施例では、重み計算部１０２及び対象形状決定部１０３は、投入されるジョブの傾向の変化をより正確に把握するために、実行されたジョブ数を基準として重みの計算及びジョブ形状の選択を実行する。ただし、基準とする情報は他の情報を用いてもよい。例えば、重み計算部１０２及び対象形状決定部１０３は、実施例１と同様に一定期間経過する毎に重みの計算及びジョブ形状の選択を実行してもよい。
【０１１５】
事前配置計算部１０４は、事前ジョブ配置計算の対象とするジョブ形状、各ジョブ形状の順位及び各ジョブ形状の重みを定期的に形状ランキングテーブル２０２から取得する。事前配置計算部１０４は、取得した情報を少なくとも次の情報取得タイミングまで記憶しておく。
【０１１６】
また、事前配置計算部１０４は、ジョブ形状の種類の差により再計算を実行するか否かを判定するための種類閾値を記憶する。また、事前配置計算部１０４は、各ジョブ形状の重み差により再計算を実行するか否かを判定するための重み閾値を記憶する。
【０１１７】
事前配置計算部１０４は、前回取得した情報と今回取得した情報とを比較する。そして、順位が上位のジョブ形状において前回と今回で異なるジョブ形状の数が形状相違閾値以上の場合、事前配置計算部１０４は、ジョブ傾向の変化を検出する。
【０１１８】
また、異なるジョブ形状の数が形状相違閾値より小さい場合、事前配置計算部１０４は、各ジョブ形状の重みの差が重み閾値以上の場合、事前配置計算部１０４は、ジョブ傾向の変化を検出する。
【０１１９】
事前配置計算部１０４は、ジョブ傾向の変化を検出した場合、事前ジョブ配置計算を再実行する。事前配置計算部１０４は、実施例１と同様に箱詰め問題の解法などを用いて事前ジョブ配置計算の再実行を行う。
【０１２０】
次に、図１１を参照して、本実施例に係るジョブ管理ノード１０による事前ジョブ配置計算の処理について説明する。図１１は、実施例２に係るジョブ管理ノードによる事前ジョブ配置計算の処理のフローチャートである。
【０１２１】
重み計算部１０２は、ジョブマネージャ１０６からのジョブ実行の通知を受けて、再計算契機カウンタをインクリメントする（ステップＳ４０１）。
【０１２２】
そして、重み計算部１０２は、再計算契機カウンタが規定のジョブ数に達したか否かを判定する（ステップＳ４０２）。規定のジョブ数に達していない場合（ステップＳ４０２：否定）、ジョブ管理ノード１０は、事前ジョブ配置計算の処理を終了する。
【０１２３】
これに対して、規定のジョブ数に達した場合（ステップＳ４０２：肯定）、重み計算部１０２は、再計算契機カウンタをリセットする（ステップＳ４０３）。
【０１２４】
そして、重み計算部１０２は、ジョブ情報テーブル２０１から各ジョブ形状の出現回数及び実行時間の合計を含むジョブ情報を取得する（ステップＳ４０４）。
【０１２５】
次に、重み計算部１０２は、各ジョブ形状の重みを計算する（ステップＳ４０５）。その後、重み計算部１０２は、各ジョブ形状の重みをジョブ情報テーブル２０１へ登録する。
【０１２６】
対象形状決定部１０３は、重み計算部１０２による重みの計算の実施を受けて、各ジョブ形状の重みをジョブ情報テーブル２０１から取得する。そして、対象形状決定部１０３は、重みの降順にジョブ形状をソートする（ステップＳ４０６）。そして、対象形状決定部１０３は、ソート結果を形状ランキングテーブル２０２に登録する。
【０１２７】
対象形状決定部１０３は、事前ジョブ配置計算の対象とするジョブ形状の最低順位を特定する。そして、対象形状決定部１０３は、特定した最低順位以上の順位のジョブ形状を今回の事前ジョブ配置計算の対象とするジョブ形状として選択する（ステップＳ４０７）。さらに、対象形状決定部１０３は、今回選択したジョブ形状及び各ジョブ形状の重みを記憶しておく。
【０１２８】
次に、対象形状決定部１０３は、記憶している前回選択したジョブ形状の種類と今回選択したジョブ形状の種類とを比較する。そして、対象形状決定部１０３は、異なる種類のジョブ形状の数が形状相違閾値を超えているか否かにより、選択したジョブ形状が前回と異なるか否かを判定する（ステップＳ４０８）。選択したジョブ形状が前回と異なる場合（ステップＳ４０８：肯定）、対象形状決定部１０３は、投入されるジョブの傾向の変化を検出し、ステップＳ４１０へ進む。
【０１２９】
これに対して、選択したジョブ形状が前回と異ならない場合（ステップＳ４０８：否定）、対象形状決定部１０３は、記憶している前回選択した各ジョブ形状の重みと今回選択した各ジョブ形状の重みとを比較する。そして、対象形状決定部１０３は、重みの差が重み閾値を超えるジョブ形状であるか否かにより、重みが前回と異なるか否かを判定する（ステップＳ４０９）。選択したジョブ形状が前回と同じである場合（ステップＳ４０９：否定）、対象形状決定部１０３は、事前ジョブ配置計算の処理を終了する。
【０１３０】
これに対して、選択したジョブ形状が前回と異なる場合（ステップＳ４０９：肯定）、対象形状決定部１０３は、投入されるジョブの傾向の変化を検出したと判定し、ステップＳ４１０へ進む。
【０１３１】
事前配置計算部１０４は、事前ジョブ配置計算の対象とするジョブ形状のジョブを、重みの比率にしたがい同時に実行する場合の配置を算出することで事前ジョブ配置計算を実行する（ステップＳ４１０）。
【０１３２】
事前配置計算部１０４は、事前ジョブ配置計算によって求めた事前ジョブ配置位置を事前配置テーブル２０３に格納する。これにより、事前配置計算部１０４は、事前ジョブ配置計算結果を記憶部１０７に記憶させる（ステップＳ４１１）。
【０１３３】
以上に説明したように本実施例に係る管理装置であるジョブ管理ノードは、投入されるジョブの傾向が変化したことを受けて、事前ジョブ配置を再計算する。例えば、定期的に再計算を行う場合、ジョブ傾向の変化が少ないシステムでは事前ジョブ配置の計算を繰り返すことは計算の無駄になるおそれがある。また、変化の激しいシステムでは、再計算の間の変化が大きく資源利用効率の低下が改善されないおそれがある。これに対して、本実施例に係るジョブ管理ノードは、投入されるジョブの傾向に応じて事前ジョブ配置を行うことにより、計算による処理負荷の軽減及び資源利用効率の向上を実現することができる。
【０１３４】
（ハードウェア構成）
次に、図１２を参照して、各実施例に係るジョブ管理ノード１０のハードウェア構成について説明する。図１２は、ジョブ管理ノードのハードウェア構成図である。
【０１３５】
ジョブ管理ノード１０は、ＣＰＵ９０１、メモリ９０２、Input/Output（Ｉ／Ｏ）バスアダプタ９０３、ネットワークアダプタ９０４及び９０５、ディスクアダプタ９０６、並びに、ディスク９０７を有する。
【０１３６】
メモリ９０２及びＩ／Ｏバスアダプタ９０３は、システムバス９０８によりＣＰＵ９０１に接続される。
【０１３７】
Ｉ／Ｏバスアダプタ９０３は、Ｉ／Ｏバス９０９を介して、ネットワークアダプタ９０４及び９０５、並びに、ディスクアダプタ９０６と接続する。
【０１３８】
ネットワークアダプタ９０４は、情報処理システム１の外部のネットワークへ接続する。また、ネットワークアダプタ９０５は、情報処理システム１の内部のネットワークへ接続する。すなわち、ジョブ管理ノード１０は、ネットワークアダプタ９０５を介して計算ノード２０と通信を行う。ＣＰＵ９０１は、Ｉ／Ｏバスアダプタ９０３を介してネットワークアダプタ９０４及び９０５に接続するネットワークに対してデータの送受信を行う。
【０１３９】
ディスクアダプタ９０６には、ディスク９０７が接続される。ディスク９０７は、ハードディスク等の記憶装置であり、図２に例示した記憶部１０７の機能を実現する。ＣＰＵ９０１は、Ｉ／Ｏバスアダプタ９０３及びディスクアダプタ９０６を経由してディスク９０７に対するデータの読み書きを行う。また、ディスク９０７には、図２に例示した情報取得部１０１、重み計算部１０２、対象形状決定部１０３、事前配置計算部１０４、配置決定部１０５及びジョブ実行管理部１０６が実行する処理を実現するための各種プログラムを記憶する。
【０１４０】
ＣＰＵ９０１及びメモリ９０２は、例えば、図２に例示した情報取得部１０１、重み計算部１０２、対象形状決定部１０３、事前配置計算部１０４、配置決定部１０５及びジョブ実行管理部１０６などの機能を実現する。例えば、ＣＰＵ９０１は、ディスク９０７が記憶する各種プログラムを読み出し、メモリ９０２上に展開して上述した機能を実現するプロセスを生成する。そして、ＣＰＵ９０１は、メモリ９０２上に生成したプロセスを実行させることで各部の機能を実現する。
【０１４１】
次に、図１３を参照して、各実施例に係る計算ノード２０のハードウェア構成について説明する。図１３は、計算ノードのハードウェア構成図である。
【０１４２】
計算ノード２０は、ＣＰＵ９１１、メモリ９１２、インタコネクトアダプタ９１３、インターコネクトルーラ９１８、Ｉ／Ｏバスアダプタ９１４、ネットワークアダプタ９１５、ディスクアダプタ９１６及びディスク９１７を有する。ただし、図１３は、計算ノード２０のハードウェア構成の一例であり、例えば、点線で表される領域９２０の内部の各部を有さない計算ノード２０も存在する。
【０１４３】
メモリ９１２、インタコネクトアダプタ９１３及びＩ／Ｏバスアダプタ９１４は、システムバス９１８によりＣＰＵ９１１に接続する。
【０１４４】
Ｉ／Ｏバスアダプタ９１４は、Ｉ／Ｏバス９１９を介して、ネットワークアダプタ９１５及びディスクアダプタ９１６と接続する。
【０１４５】
インターコネクトルータ９１８は、隣接する計算ノード２０間のインターコネクトルータ９１８へ接続する。ＣＰＵ９１１は、Ｉ／Ｏバスアダプタ９１４及びインタコネクトアダプタ９１３、インターコネクトルータ９１８を介して他の計算ノード２０と通信を行う。
【０１４６】
また、ネットワークアダプタ９１５は、情報処理システム１の内部のネットワークへ接続する。ＣＰＵ９１１は、ネットワークアダプタ９１５に接続するネットワークに対してデータの送受信を行う。
【０１４７】
ディスクアダプタ９１６には、ディスク９１７が接続する。ディスク９１７は、ハードディスク等の記憶装置である。ＣＰＵ９１１は、Ｉ／Ｏバスアダプタ９１４及びディスクアダプタ９１６を経由してディスク９１７に対するデータの読み書きを行う。
【０１４８】
ＣＰＵ９１１及びメモリ９１２は、例えば、ジョブの実行などの機能を実現する。
【符号の説明】
【０１４９】
１  情報処理システム
１０  ジョブ管理ノード
１１  ログインノード
１２  システム管理ノード
１３  ファイルサーバ
２０  計算ノード
１０１  情報取得部
１０２  重み計算部
１０３  対象形状決定部
１０４  事前配置計算部
１０５  配置決定部
１０６  ジョブマネージャ
１０７  記憶部
２０１  ジョブ情報テーブル
２０２  形状ランキングテーブル
２０３  事前配置テーブル
【図１】
2015069577.tif 000003
【図２】
2015069577.tif 000004
【図３】
2015069577.tif 000005
【図４】
2015069577.tif 000006
【図５】
2015069577.tif 000007
【図６】
2015069577.tif 000008
【図７】
2015069577.tif 000009
【図８】
2015069577.tif 000010
【図９】
2015069577.tif 000011
【図１０】
2015069577.tif 000012
【図１１】
2015069577.tif 000013
【図１２】
2015069577.tif 000014
【図１３】
2015069577.tif 000015