(57)【要約】【課題】複数の計算ノードを持つ計算システムにおいて資源無駄、すなわち計算処理に使わないノードや同期待ちによる遅延のないジョブ分配を実現するジョブ管理装置、ジョブ管理方法およびジョブ管理プログラムを提供すること。【解決手段】ノード１１〜１４の処理能力に関する各種情報を処理能力測定部２１が測定し、ノード処理能力判定部２２がノード１１〜１４の処理能力を判定する。ジョブサイズ決定部２３は、ノード１１〜１４の各々の処理能力に応じて割り当てるジョブのサイズを決定する。ジョブ分割部２４は、ジョブサイズ決定部２３の決定に従ってジョブ全体を分割し、ジョブ分配部２５に分配させる。【選択図】        図１
2010122758.tif 000002
【特許請求の範囲】
【請求項１】
処理すべきジョブを複数の計算装置に分配するジョブ管理装置であって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得部と、
前記情報取得部が取得した情報に基づいて、前記複数の計算装置に割り当てるジョブサイズを決定するジョブサイズ決定部と、
前記処理すべきジョブを前記ジョブサイズ決定部が決定したジョブサイズに基づいて分割するジョブ分割部と、
前記複数の計算装置に対し、前記ジョブ分割部によって分割されたジョブを分配するジョブ分配部と
を備えたことを特徴とするジョブ管理装置。
【請求項２】
前記複数の計算装置は、入出力処理を担当する計算装置と入出力処理を担当しない計算装置とを含み、前記ジョブサイズ決定部は、前記入出力処理を担当する計算装置に対して割り当てるジョブサイズを前記入出力処理を担当しない計算装置に対して割り当てるジョブサイズに比して小さくすることを特徴とする請求項１に記載のジョブ管理装置。
【請求項３】
前記情報取得部は、各計算装置におけるＣＰＵ（Central Processing Unit）使用率、ステージング処理の有無、入出力処理発生率、メモリスワップ発生率のうち少なくともいずれかを動的に取得し、前記ジョブサイズ決定部は、前記情報取得部の取得した情報を用いて複数の計算装置に分配するジョブサイズを動的に変更することを特徴とする請求項１または２に記載のジョブ管理装置。
【請求項４】
前記情報取得部は、前記ジョブの運用予定を示すジョブスクリプトを参照して前記計算装置の負荷の推移を予測し、前記ジョブサイズ決定部は、前記負荷の推移の予測に基づいて前記複数の計算装置に分配するジョブサイズを決定することを特徴とする請求項１〜３のいずれか一つに記載のジョブ管理装置。
【請求項５】
前記情報取得部は、取得した負荷の推移の履歴を保持し、前記ジョブサイズ決定部は、前記負荷の推移の履歴から前記複数の計算装置に分配するジョブサイズを決定することを特徴とする請求項１〜４のいずれか一つに記載のジョブ管理装置。
【請求項６】
前記情報取得部は、前記複数の計算装置が有するＣＰＵごとに情報を取得し、前記ジョブサイズ決定部は前記ＣＰＵに対して割り当てるジョブサイズを決定し、前記ジョブ分割部は前記ＣＰＵに対するジョブサイズに基づいて前記ジョブを分割し、前記ジョブ分割部は、前記ＣＰＵに対してジョブの分配を行なうことを特徴とする請求項１〜５のいずれか一つに記載のジョブ管理装置。
【請求項７】
前記ジョブサイズ決定部は、前記複数の計算装置の処理における同期タイミングが略同一となるように前記複数の計算装置に分配するジョブサイズを決定することを特徴とする請求項１〜６のいずれか一つに記載のジョブ管理装置。
【請求項８】
処理すべきジョブを複数の計算装置に分配するジョブ管理装置であって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得部と、
前記情報取得部が取得した情報に基づいて、前記複数の計算装置を分類し、各分類に対して前記ジョブを分配する第一の分配手段と、
前記分類ごとに独立にジョブを管理する複数のジョブスケジューラと、
前記分類の各々について当該分類に分配されたジョブを当該分類に属する計算装置に対して分配する第二の分配手段と
を備えたことを特徴とするジョブ管理装置。
【請求項９】
処理すべきジョブを複数の計算装置に分配するジョブ管理方法であって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得ステップと、
前記情報取得ステップにおいて取得した情報に基づいて、前記複数の計算装置に割り当てるジョブサイズを決定するジョブサイズ決定ステップと、
前記処理すべきジョブを前記ジョブサイズ決定ステップが決定したジョブサイズに基づいて分割するジョブ分割ステップと、
前記複数の計算装置に対し、前記ジョブ分割ステップによって分割されたジョブを分配するジョブ分配ステップと
を含んだことを特徴とするジョブ管理方法。
【請求項１０】
処理すべきジョブを複数の計算装置に分配するジョブ管理方法をコンピュータに実行させるジョブ管理プログラムであって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得手順と、
前記情報取得手順において取得した情報に基づいて、前記複数の計算装置に割り当てるジョブサイズを決定するジョブサイズ決定手順と、
前記処理すべきジョブを前記ジョブサイズ決定手順が決定したジョブサイズに基づいて分割するジョブ分割手順と、
前記複数の計算装置に対し、前記ジョブ分割手順によって分割されたジョブを分配するジョブ分配手順と
をコンピュータに実行させることを特徴とするジョブ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算装置にジョブを分配するジョブ管理装置、ジョブ管理方法およびジョブ管理プログラムに関する。
【背景技術】
【０００２】
従来、複数の処理装置で負荷を分散して処理する技術が知られている。たとえば、複数の計算装置を接続して構成する計算システムでは、各計算装置に対してジョブを分配して処理させることで各計算装置を計算ノードとして使用する。
【０００３】
通常、複数ノードを有する計算システムでは、ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）のあるＩＯ付計算ノードとＩＯの無い単純計算ノードとを持つものが多い。単純計算ノードとは、ＣＰＵ（Central Processing Unit）とメモリとを持ち、計算処理を行なうことを目的にした計算ノードである。これに対し、ＩＯ付計算ノードとは、ＣＰＵとメモリに加え、ＨＤＤなどの記憶装置やネットワークに対する入出力機構を搭載した計算ノードである。このＩＯ付計算ノードはＩＯ処理に処理能力を費やすので、ジョブを処理する純粋な計算処理能力はＩＯの無い単純計算ノードに比して低くなる。
【０００４】
また、計算ノードが搭載するＣＰＵの種類や数、動作周波数が異なる場合にも、計算ノード間で計算能力に差が生じることとなる。
【０００５】
【特許文献１】特表２００１−５０３１７０号公報
【特許文献２】特開２０００−１５１８７３号公報
【特許文献２】特開２００５−１８２６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、ＩＯ付計算ノードと単純計算ノードの様にジョブに対する処理能力の異なる計算ノードに対してジョブを均等に分配すると、ＩＯ付計算ノードを含む全計算ノードにジョブを分配するので計算資源の無駄がないというメリットがある。しかし、同一量のジョブの処理に要する時間は、ＩＯ付計算ノードの方が単純計算ノードと比較して長くなる。そのため、単純計算ノードにおいて次処理までの待ち時間が発生し、ジョブ全体の完了時間が大きく伸びるデメリットがある。
【０００７】
一方、ＩＯ付計算ノードにジョブの割り付けを行なわず、単純計算ノードのみにジョブの割り付けを行なうこととすると、ＩＯ付計算ノードの処理完了を単純計算ノードが待つことがないため、同期が遅れることによる処理遅延は発生しないというメリットがある。しかし、ＩＯ付計算ノードの計算処理能力を活用しないのでハード資源の無駄となってしまう。
【０００８】
すなわち、従来の技術では、全ての計算ノードを使用すると同期待ちによる処理遅延が発生し、同期待ちを回避すると空き計算ノードが発生するため、ハードウェア資源を有効に利用することができないという問題点があった。
【０００９】
そのため、全計算ノードを使用し、かつ、同期処理待ちを発生させることなく効率的にジョブを処理する技術の実現が重要な課題となっていた。
【００１０】
本発明は、上述した従来技術にかかる問題点を解消し、課題を解決するためになされたものであり、複数の計算ノードを持つ計算システムにおいて資源無駄、すなわち計算処理に使わないノードや同期待ちによる遅延のないジョブ分配を実現するジョブ管理装置、ジョブ管理方法およびジョブ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、開示の装置、方法およびプログラムは、処理すべきジョブを複数の計算装置に分配する際に、複数の計算装置の特性情報および／または負荷情報を取得し、取得した情報に基づいて複数の計算装置に割り当てるジョブサイズを異ならせてジョブ全体を分割して分配する。
【００１２】
また、開示の装置、方法およびプログラムは、処理すべきジョブを複数の計算装置に分配する際に、複数の計算装置の特性情報および／または負荷情報を取得し、取得した情報に基づいて、複数の計算装置を分類し、分類ごとに独立した複数のジョブスケジューラでジョブの管理を行なう。
【発明の効果】
【００１３】
開示の装置、方法、プログラムによれば、複数の計算ノードを持つ計算システムにおいて資源無駄、すなわち計算処理に使わないノードや同期待ちによる遅延のないジョブ分配を実現するジョブ管理装置、ジョブ管理方法およびジョブ管理プログラムを提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に、本実施例にかかるジョブ管理装置、ジョブ管理方法およびジョブ管理プログラムについて、図面を参照して詳細に説明する。
【実施例】
【００１５】
図１は、本実施例にかかるジョブ管理方法の概念について説明する概念図である。図１に示したように、本ジョブ管理方法では、ノード１１〜１４の処理能力に関するノード特性やノード負荷などの各種情報を処理能力測定部２１が測定し、ノード処理能力判定部２２がノード１１〜１４の処理能力を判定する。ジョブサイズ決定部２３は、ノード１１〜１４の各々の処理能力に応じて、各ノードに割り当てるジョブのサイズを決定する。ジョブ分割部２４は、ジョブサイズ決定部２３の決定に従ってジョブ全体を分割し、ジョブ分配部２５に分割したジョブを分配させる。
【００１６】
すなわち、本ジョブ管理方法では、計算ノードの特性や負荷状態に合わせて適切なサイズのジョブを各計算ノードに分配する。
【００１７】
図１に示した例では、計算ノード１２の処理能力が他の計算ノード１１、１３、１４よりも低いものとする。具体的には、図１の例では、処理能力の低い計算ノード１２には、ジョブ全体からサイズの小さいジョブを分配し処理させる。そして、処理能力の高い計算ノード１１，１３，１４には、サイズの大きなジョブを分配し処理させる。このジョブの分割では、たとえばジョブ全体を１０００行とした場合、３５０行，１００行，３００行，２５０行のように分割して、それぞれ計算ノード１１、１２、１３、１４に分配する。
【００１８】
このように計算ノードの処理能力に合わせたサイズのジョブを各計算ノードに分配することで、処理能力の異なる計算ノードが略同一のタイミングで処理を終了するので、同期処理待ちの発生を回避することができる。
【００１９】
図２は、本実施例にかかるジョブ処理システムの概要構成を示す概要構成図である。図２に示したジョブ処理システムでは、複数の計算ノードを有する計算システム１にサーバ２を接続し、サーバ２はネットワークを介してクライアント３に接続している。
【００２０】
計算システム１が有するノード１１〜１４は、各々計算部１１ａ〜１４ａを有する。この計算部は、具体的にはＣＰＵとメモリによって実現される機能部であり、自ノードに分配されたジョブを処理する。
【００２１】
さらに、ノード１２は、計算部１２ａに加えてＩＯ処理部１２ｂを有する。ＩＯ処理部１２ｂは、サーバ２とのジョブの受け渡しなどを行なうインターフェースである。すなわち、計算システム２は、ノードをＩＯ付計算ノードとしてサーバとのデータの受け渡しや、他のノードに対するジョブの分配を集約し、他のノード１１，１３，１４を単純計算ノードとしてジョブの処理を行なわせる。
【００２２】
ＩＯ処理部１２ｂも計算部と同様にＣＰＵとメモリによって実現される機能部であるので、各ノードのＣＰＵとメモリの性能が同一である場合、ノード１２の計算部１２ａは、他の単純計算ノードの計算部１１ａ，１３ａ，１４ａに比して処理能力が低くなる。
【００２３】
サーバ２は、その内部にジョブ管理部２０とクライアント応答部２６を有する。クライアント応答部２６は、クライアント３からの要求をジョブとしてジョブ管理部２０に渡し、ジョブの処理結果をジョブ管理部２０から受け取ってクライアントに返す。
【００２４】
ジョブ管理部２０は、本実施例におけるジョブ管理装置であり、その内部に処理能力測定部２１、ノード処理能力判定部２２、ジョブサイズ決定部２３、ジョブ分割部２４、ジョブ分配部２５を有する。
【００２５】
処理能力測定部２１は、ノード１１〜１４の特性情報や負荷情報をパフォーマンスアナライザなどから取得する情報取得部として機能する。ノード処理能力判定部２２は、処理能力測定部２１が取得した情報に基づいて、各ノードの処理能力を判定する。そして、ジョブサイズ決定部２３は、ノード処理能力判定部２２による判定結果に基づいて、各ノードに割り当てるジョブサイズを決定する。
【００２６】
ジョブ分割部２４は、クライアント応答部２６から渡されたジョブ全体を、ジョブサイズ決定部２３が決定した割り当てに基づいて分割する。ジョブ分配部２５は、ジョブ分割部２４によって分割されたジョブと分配すべきノードを対応付けて計算システムに送る。
【００２７】
計算システム１では、ＩＯ付計算ノードであるノード１２が、分割され、分配先が指定されたジョブ郡をサーバ２から受け取り、各ノードに分配する。
【００２８】
ここで、図３〜図８を参照し、ジョブ管理部２０によるジョブ分配方法と、本実施例によらないジョブ分配方法を比較して説明する。
【００２９】
図３は、全ノードに均等なサイズのジョブを割り振る手法について説明する説明図であり、図４は全ノードに均等なサイズのジョブを割り振る手法における同期タイミングについて説明する説明図である。
【００３０】
図３の例では、全ノードの処理能力は同じであるが、ＩＯ付計算ノードであるノード１２は、カーネル処理のほかにＩＯ処理を実行し、残りの処理能力でジョブを処理する。一方、単純計算ノードであるノード１１，１３，１４は、カーネル処理の残りは全てジョブの処理にあてることができる。この処理内容の違いにより、図３に示したようにジョブ全体を均等に４つに分割してノード１１〜１４に分配すると、単純計算ノードであるノード１１、１３、１４では処理能力に余力が残ることとなる。
【００３１】
従って、各ノードで処理を実行すると、図４に示したように、処理能力に余力のあるノード１１，１３，１４は、ＩＯ付計算ノードであるノード１２よりも早く処理を終了する。しかし、ノード１２が分配されたジョブを完了するまではノード間の同期が取れないため、処理の早いノード１１，１３，１４はノード１２の処理が完了するまでの期間が待ち時間となり、ノード１１，１３，１４はその処理能力を十分に活用できない。
【００３２】
図５は、単純計算ノードのみにジョブを割り振る手法について説明する説明図であり、図６は単純計算ノードのみにジョブを割り振る場合の同期タイミングについて説明する説明図である。
【００３３】
図５の例では、全ノードの処理能力は同じであるが、ＩＯ付計算ノードであるノード１２は、カーネル処理のほかにＩＯ処理を実行し、残りの処理能力でジョブを処理する。一方、単純計算ノードであるノード１１，１３，１４は、カーネル処理の残りは全てジョブの処理にあてることができる。そこで、図５に示したようにジョブ全体を均等に３つに分割してノード１１、１３、１４の３つのノードに分配する。そのため、単純計算ノード１１、１３、１４の処理能力には余力が残らないが、ＩＯ付計算ノード１２には余力が残ることとなる。
【００３４】
従って、各ノードで処理を実行すると、図６に示したように、処理能力の揃ったノード１１，１３，１４で同じサイズのジョブの処理を実行することになるため同期タイミングが揃い、待ち時間は発生しない。そのため、単純計算ノード１１、１３、１４はその処理能力を十分に発揮できるが、ＩＯ付計算ノード１２には余力があるにも関わらずジョブ処理に使用されないことになる。
【００３５】
これらの技術に対し、ジョブ管理部２０によるジョブ分配方法では、図７に示したように、ノードの処理能力の余力に合わせて割り当てるジョブのサイズを異ならせる。したがって、ＩＯ付計算ノードであるノード１２には単純計算ノードであるノード１１、１３、１４に比して小さいサイズのジョブが分配され、いずれのノードにも余力は残らない。
【００３６】
従って、各ノードで処理を実行すると、図８に示したように、処理能力の異なったノードであっても処理能力に合わせたサイズのジョブの処理を実行するので、ノード間の同期タイミングが揃い、待ち時間は発生しない。そのため、全てのノードの処理能力を有効利用し、ジョブ全体を従来の手法に比して高速に処理することができる。
【００３７】
さて、ノードのジョブに対する処理能力は、ＩＯ付計算ノードであるか否かのみならず、他の要因によっても変化する。特にＩＯ付計算ノードでは、ＩＯ処理の処理負荷の変動などで、ジョブの処理に回せる処理能力が変動する。また、単純計算ノードの全てが同じ構成と性能を有しているとは限らない。
【００３８】
そこで、ジョブ管理部２０では、処理能力測定部２１にノードごとの特性情報や負荷情報を取得させ、ノード個別にジョブサイズを設定する。図９は、ノードに配布するジョブサイズを決定する材料となる条件の一例を示している。具体的には、処理能力測定部２１は、図９に示したように、計算ノードの種類、ＣＰＵ使用率、ステージング処理の有無、ＩＯ使用率、メモリスワップ発生率、運用履歴、ジョブスクリプトをノード毎に取得する。ノード処理能力判定部２２は、処理能力測定部２１が取得した情報を総合して各ノードの処理能力を判定する。
【００３９】
具体的には、ノード処理能力判定部２２は、計算ノードの種類に示された、そのノードがＩＯ付計算ノードか単純計算ノードかといった事項や、ノードに搭載されたＣＰＵの種類、数、動作周波数、メモリ構成などを考慮し、ノードの処理能力を判定する。ノード処理能力判定部２２はこのような判定結果に基づいて、たとえばＩＯ付計算ノードに割り当てるジョブサイズを小さく、単純計算ノードに割り当てるジョブサイズを大きくする。
【００４０】
また、ノード処理能力判定部２２は、計算ノードのＣＰＵ使用率を考慮し、ＣＰＵ使用率の高いノードに割り当てるジョブサイズを小さくし、ＣＰＵ使用率の低いノードに割り当てるジョブサイズを大きくする。
【００４１】
さらに、ノード処理能力判定部２２は、ＩＯ付計算ノードにおけるデータの入出力処理の有無、すなわちステージング処理の有無を考慮し、ステージング中の計算ノードについてはジョブを分配しない。
【００４２】
また、ノード処理能力判定部２２は、ＩＯ付計算ノードにおけるＩＯ機器のハンドリング処理の発生率を考慮し、ＩＯ処理率が高い計算ノードに割り当てるジョブサイズを小さくし、ＩＯ処理率の低い計算ノードに割り当てるジョブサイズを大きくする。
【００４３】
さらに、ノード処理能力判定部２２は、作業用のメモリ容量が不足した場合にＨＤＤ（Hard Disk Drive）などの他の記憶装置を仮想的なメモリとして使用するメモリスワップの発生率を考慮し、メモリスワップの発生率が高い計算ノードに割り当てるジョブサイズを小さくし、メモリスワップの発生率の低い計算ノードに割り当てるジョブサイズを大きくする。
【００４４】
また、ノード処理能力判定部２２は、各ノードから取得した負荷状態の履歴をプロファイル情報として保持し、負荷状態の推移を分析することでノードの負荷の変化を予測してジョブサイズを決定する。たとえば、周期的に高負荷状態が発生する場合や、時刻に応じて負荷状態が変化する場合などには、周期や時刻からノードの負荷を予測してジョブサイズを決定する。他にも、現状のアルゴリズムのＩＯ処理およびノードの処理動作のプロファイル情報から、移動平均的に処理の概要をとって計算ノードの処理能力を予測してもよい。具体的には、１分間隔で過去２０分程度までの処理情報の重み付き移動平均をとって近いものほど重みを大きくし、各ノードの負荷を予測する。
【００４５】
さらに、ノード処理能力判定部２２は、ジョブの運用予定を示すジョブスクリプトを参照してノードの負荷の推移を予測してジョブサイズを決定する。
【００４６】
図１０は、ジョブスクリプトについて説明する説明図である。図１０の例では、３つのスクリプトＣ１〜Ｃ３が示されている。それぞれのスクリプトには、処理の手順、すなわち処理対象のデータを取り出すステージイン、実際の計算、計算結果を書き出すステージアウト、が記述されている。
【００４７】
ノード処理能力判定部２２は、このスクリプトを分析することで、ステージインやステージアウトなどのＩＯ処理の計画を自動的に見つけ出し、ＩＯ処理の処理サイズとハード性能からＩＯ処理の込み具合を判断して分配するジョブサイズを決めることができる。
【００４８】
図１１は、スクリプトの分析処理の処理動作について説明するフローチャートである。図１１に示したように、ノード処理能力判定部２２は、まずスクリプト群を読み込み（Ｓ１０１）、スクリプト群の最初のスクリプトについて、現在の処理部分を判定する（Ｓ１０２）。そして、判定の結果、現在の処理部分にステージングがある場合（Ｓ１０３，Ｙｅｓ）には、ジョブサイズ縮小処理（Ｓ１０４）を実行する。
【００４９】
Ｓ１０４におけるジョブサイズ縮小処理の実行後、もしくは現在の処理部分にステージングがない場合（Ｓ１０３，Ｎｏ）、ノード処理能力判定部２２は、全てのスクリプトについて判定が終了したか否かを確認する（Ｓ１０５）。
【００５０】
そして、まだ判定していないスクリプトが残っている場合（Ｓ１０５，Ｎｏ）、ノード処理能力判定部２２は次のスクリプトの現在の処理部分を判定し（Ｓ１０６）、ステップＳ１０３に移行する。一方、ノード処理能力判定部２２は、全てのスクリプトについて判定が終了した場合（Ｓ１０５，Ｙｅｓ）に、ジョブサイズを決定して（Ｓ１０７）、処理を終了する。
【００５１】
図１２は、図１１に示したジョブサイズ縮小処理について説明するフローチャートである。ジョブサイズ縮小処理では、ノード処理能力判定部２２は、まず、ステージングで転送するデータのサイズを転送サイズとして読み込み（Ｓ２０１）、転送サイズを転送性能で除して転送時間を算出する（Ｓ２０２）。
【００５２】
算出した転送時間が同期間隔以上である場合（Ｓ２０３，Ｙｅｓ）、そのノードは転送処理のみで処理能力を使いきり、つぎの同期タイミングまでにジョブを処理する余力はないので、そのノードの余力をゼロとして処理を終了する（Ｓ２０５）。
【００５３】
一方、算出した転送時間が同期間隔未満である場合（Ｓ２０３，Ｎｏ）、同期間隔時間と転送時間の差分を同期間隔時間で除してノードの余力を算出し（Ｓ２０４）、余力に応じてジョブサイズの縮小率を決定して（Ｓ２０６）、処理を終了する。
【００５４】
つぎに、ジョブサイズ決定部２３によるジョブサイズの決定について説明する。ＩＯ付計算ノードか単純計算ノードかでノードに配布するジョブサイズを決定する場合、単純計算ノードのジョブサイズ係数を１、ＩＯ付計算ノードのジョブサイズ係数を１より小さい値αとし、ジョブ全体のサイズをＮとして、
Ｎ＝（基準ジョブサイズ×単純計算ノード数＋α×基準ジョブサイズ×ＩＯ付計算ノード数）
を満足するように基準ジョブサイズを求めればよい。
【００５５】
また、各ノードに対してジョブサイズを最適化するならば、ノード数をｍ、各ノードのジョブサイズ係数をα１・・・αｍとし、
Ｎ＝α１×基準ジョブサイズ
＋α２×基準ジョブサイズ
・・・・
＋αｍ×基準ジョブサイズ
を満足するように基準ジョブサイズを求めればよい。
【００５６】
ジョブサイズ係数αｎ（ｎは１からｍまでの整数）の算出には、たとえば、
αｎ＝(1−ＣＰＵ使用率)×(1−ＩＯ使用率)×（ステージング判定値）×（スワップ判定値）×（ジョブスクリプトによる縮小率）×・・・
などのように、各ジョブサイズ決定要因を積算することで求めることができる。ジョブサイズ決定要因としては、図９を参照して説明した各要因を用いればよい。この式において、０≦ＣＰＵ使用率≦１，０≦ＩＯ使用率≦１とする。ステージング判定値は、そのノードにステージングが発生している場合に０、発生していない場合に１を取る。すなわち、ステージングが発生しているノードについては、他の要因の値に関わらず、ジョブサイズ「０」が割り当てられることとなる。
【００５７】
スワップ判定値もステージング判定値と同様に、スワップが発生している場合に０、発生していない場合に１を取る。なお、ここではスワップの有無で０と１のいずれかの値を与えるジョブサイズ係数算出式を例に説明を行なったが、図９に示したようにスワップに関して発生確率が得られているならば、（１−スワップ発生率）としてジョブサイズの算出に使用することもできる。
【００５８】
また、上述のαｎ算出に用いる項は必ずしも全てを使用する必要は無く、いずれか一つ、もしくは任意に選択した数項目を組み合わせて使用してもよい。たとえは、ＣＰＵのみを使用する場合、
αｎ＝(1−ＣＰＵ使用率)
を用いてジョブサイズ係数を求める。また、ＩＯ使用率とＣＰＵ使用率を使用する場合には、
αｎ＝(1−ＣＰＵ使用率)×(1−ＩＯ使用率)
を用いてジョブサイズ係数を求める。なお、ここでは各ノードに対してジョブサイズを変化させる場合のジョブサイズ係数α１〜αｍの算出について説明したが、単純計算ノードのジョブサイズ係数を１、ＩＯ付計算ノードのジョブサイズ係数αとする場合のジョブサイズ係数αも同様の算出式で求めることができる。
【００５９】
このように、ジョブサイズ決定部２３は、ノード処理能力判定部２２から出力されるノードのジョブ処理能力の差をジョブサイズ係数として用い、ジョブ全体をどのように分割すべきかを算出することができる。また、ステージング中のＩＯ付計算ノードのように余力の無いノードに対してはジョブサイズ係数を０とし、ジョブを割り当てないようにする。
【００６０】
ここまでの説明では、ノード単位でジョブの分配を行なう場合について説明を行なったが、ジョブの分配はＣＰＵ単位で行なうこともできる。図１３はＣＰＵ単位でジョブの分配を行なう場合のジョブ分配方法について説明する説明図である。
【００６１】
図１３に示した例では、ノード４１は単純計算ノードであり、４つのＣＰＵ４１ａ，４１ｂ，４１ｃ，４１ｄを有する。ノード４２はＩＯ付計算ノードであり、４つのＣＰＵ４２ａ，４２ｂ，４２ｃ，４２ｄを有する。そして、ノード４２はＣＰＵ４２ｂを入出力専用に使用する。ノード４３は単純計算ノードであり、２つのＣＰＵ４３ａ，４３ｂを有する。また、ノード４４は、単純計算ノードであり、４つのＣＰＵ４４ａ，４４ｂ，４４ｃ，４４ｄを有する。
【００６２】
処理能力測定部５１は、各ノードから少なくとも各ノードが搭載するＣＰＵの数と各ＣＰＵの用途を取得する。そして、ＣＰＵ処理能力判定部５２は、各ＣＰＵの処理能力を判定する。ジョブサイズ決定部５３は、ＣＰＵ処理能力判定部５２による判定結果を用いて、各ＣＰＵに割り当てるべきジョブのサイズを決定し、この決定に従ってジョブ分割部５４はジョブを分割する。従って、ジョブ分配部５５は各ＣＰＵに対してジョブを分配することとなる。
【００６３】
この時、ＣＰＵのうち、ＩＯ処理専用に用いられるＣＰＵ４２ｂに対してはジョブの分配を行なわないようにすれば、各ノードに対して適切な量のジョブを分配することができる。
【００６４】
特に、ＣＰＵの性能など他の条件が同一であると推定できる場合には、ＣＰＵの数と用途のみに基づいてジョブをＣＰＵに対して均等に分割して分配することで、簡易にジョブの管理を行なうことができる。
【００６５】
たとえば、図１３の構成において、ＣＰＵ４２ｂ以外のＣＰＵに対して同一サイズのジョブを分割すれば、結果としてノード４１〜４４に対して４：３：２：４の割合でジョブを分配することとなる。
【００６６】
さらに、ＣＰＵの性能が個々によって異なる場合は、個々のＣＰＵ特性、たとえば周波数に基づいて与えるジョブサイズを変えることができる。具体的には、処理性能の高いＣＰＵには大きなジョブサイズを与え、処理性能の低いＣＰＵには小さなジョブサイズを与える。
【００６７】
たとえば、図１３の構成において、ＣＰＵ４１ｂ，４１ｃ，４４ａの処理能力が他のＣＰＵの２倍であるならば、ＣＰＵ４１ｂ，４１ｃ，４４ａに与えるジョブサイズを他のＣＰＵに与えるジョブサイズの２倍にする。結果としてノード４１〜４４に対して６：３：２：５の割合でジョブを分配することとなる。
【００６８】
つぎに、ＩＯ付計算ノードのジョブ管理と単純計算ノードのジョブ管理とを独立して行なう構成例について図１４を参照して説明する。
【００６９】
図１４に示したジョブ管理方法では、図１と同様に、ノード１１〜１４に関する情報を処理能力測定部２１が取得し、ノード処理能力判定部２２が各ノードの処理能力を判定する。そして、事前分配部６１は、ジョブをＩＯ付計算ノードに分配するジョブと、単純計算ノードに分配するジョブとに分け、ＩＯ付計算ノードに分配するジョブをＩＯノードスケジューラ６２に渡し、単純計算ノードに分配するジョブを計算ノードスケジューラ６３に渡す。
【００７０】
ＩＯノードスケジューラ６２と計算ノードスケジューラ６３は、それぞれがジョブサイズ決定部６２ａ，６３ａ、ジョブ分割部６２ｂ，６３ｂ、ジョブ分配部６２ｃ，６３ｃを有し、各々がジョブを独立に管理する。
【００７１】
従って、ＩＯノードスケジューラ６２は、ＩＯ付計算ノードであるノード１２のジョブを管理し、計算ノードスケジューラ６３は、単純計算ノードであるノード１１，１３，１４に対するジョブの分配と管理を行なうこととなる。
【００７２】
図１４の例ではＩＯノードスケジューラ６２と計算ノードスケジューラ６３とが各々ジョブを独立に管理しているので、図１５に示したように、ノード１２の同期ポイントとノード１１，１３，１４の同期ポイントが異なってもよい。このため、全てのノードがジョブの処理を実行し、かつ同期待ちの発生を回避することができる。
【００７３】
ここまでの説明では、ジョブ管理部をサーバに持たせる場合を例に説明を行なったが、ジョブ管理部の設置場所は適宜変更することが可能である。
【００７４】
図１６は、ジョブ管理部を計算システム側に持たせた場合の構成例である。図１６に示した構成では、サーバ２ａ内部のクライアント応答部２６ａは、直接計算システム１ａのノード１２に接続している。
【００７５】
そして、ジョブ管理部２０ａは、計算システム１６内部でジョブが送受信される経路とは独立に設けられる。ジョブ管理部２０ａは、ノード１１〜１４から直接、各種情報を取得するとともに、サーバ２ａからジョブを受信するＩＯ付計算ノードであるノード１２からジョブの全体サイズを取得する。その後、ジョブ管理部２０ａは、各ノードに分配するジョブのサイズを算出してノード１２に送り、ノード１２にジョブの分配を行なわせる。
【００７６】
図１７は、ジョブ管理部を計算システム側に持たせた他の構成例である。図１７に示した構成では、サーバ２ｂは、計算システム１ｂ内部に設けたジョブ管理部２０ｂと接続している。
【００７７】
そして、ジョブ管理部２０ｂは、計算システム１６内部でノード１１〜１４から各種情報を取得して、各ノードに分配するジョブサイズの決定、ジョブの分割、ジョブの分配を実行する。計算システム１ｂでは、ノード１２はサーバ２ｂとは接続しておらず、ノード１２のＩＯ処理は、ノード１２に接続されたＨＤＤ７１に対する入出力に使用される。
【００７８】
以上説明してきたように、本実施例にかかるジョブ管理では、ＩＯ付計算ノードと単純計算ノードのように、ジョブ処理能力の異なるノードに対して異なるサイズのジョブを割り当てる。そのため、全計算ノード資源を無駄なく有効に使うことができ、また、ジョブサイズを計算ノードやＣＰＵコアに対して適切な大きさにすることで、同期待ちの待ち時間を削減するので、処理のスループットを向上させることができる。
【００７９】
特に、スーパーコンピュータのような大型で多ノード構成の計算機の処理スループット向上に有用である。また、ジョブの具体例としては、ＬＵ分解問題のアルゴリズムの処理に好適である。ＬＵ分割問題は、行列計算処理を並列に実施することで計算時間の短縮を図るものであり、本効果が顕著な分野の一例である。
【００８０】
なお、本実施例はあくまで一例であり、その構成および動作は適宜変形して実施可能であることはいうまでも無い。特に、本実施例におけるジョブ管理部の各構成要素をソフトウェアによって実現したならば、ジョブ管理プログラムとして実施することができ、任意のコンピュータ装置をジョブ管理装置として動作させることができる。
【００８１】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
【００８２】
（付記１）処理すべきジョブを複数の計算装置に分配するジョブ管理装置であって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得部と、
前記情報取得部が取得した情報に基づいて、前記複数の計算装置に割り当てるジョブサイズを決定するジョブサイズ決定部と、
前記処理すべきジョブを前記ジョブサイズ決定部が決定したジョブサイズに基づいて分割するジョブ分割部と、
前記複数の計算装置に対し、前記ジョブ分割部によって分割されたジョブを分配するジョブ分配部と
を備えたことを特徴とするジョブ管理装置。
【００８３】
（付記２）前記複数の計算装置は、入出力処理を担当する計算装置と入出力処理を担当しない計算装置とを含み、前記ジョブサイズ決定部は、前記入出力処理を担当する計算装置に対して割り当てるジョブサイズを前記入出力処理を担当しない計算装置に対して割り当てるジョブサイズに比して小さくすることを特徴とする付記１に記載のジョブ管理装置。
【００８４】
（付記３）前記複数の計算装置は、一の計算システムを構成し、前記入出力処理担当する計算装置は、前記計算システムにおいて外部装置に対する入出力および／またはシステム内部の記憶装置に対する入出力を担当することを特徴とする付記２に記載のジョブ管理装置。
【００８５】
（付記４）前記情報取得部は、各計算装置におけるＣＰＵ（Central Processing Unit）使用率、ステージング処理の有無、入出力処理発生率、メモリスワップ発生率のうち少なくともいずれかを動的に取得し、前記ジョブサイズ決定部は、前記情報取得部の取得した情報を用いて複数の計算装置に分配するジョブサイズを動的に変更することを特徴とする付記１〜３のいずれか一つに記載のジョブ管理装置。
【００８６】
（付記５）前記情報取得部は、前記ジョブの運用予定を示すジョブスクリプトを参照して前記計算装置の負荷の推移を予測し、前記ジョブサイズ決定部は、前記負荷の推移の予測に基づいて前記複数の計算装置に分配するジョブサイズを決定することを特徴とする付記１〜４のいずれか一つに記載のジョブ管理装置。
【００８７】
（付記６）前記情報取得部は、取得した負荷の推移の履歴を保持し、前記ジョブサイズ決定部は、前記負荷の推移の履歴から前記複数の計算装置に分配するジョブサイズを決定することを特徴とする付記１〜５のいずれか一つに記載のジョブ管理装置。
【００８８】
（付記７）前記情報取得部は、前記複数の計算装置が有するＣＰＵごとに情報を取得し、前記ジョブサイズ決定部は前記ＣＰＵに対して割り当てるジョブサイズを決定し、前記ジョブ分割部は前記ＣＰＵに対するジョブサイズに基づいて前記ジョブを分割し、前記ジョブ分割部は、前記ＣＰＵに対してジョブの分配を行なうことを特徴とする付記１〜６のいずれか一つに記載のジョブ管理装置。
【００８９】
（付記８）前記ジョブサイズ決定部は、入出力処理を担当するＣＰＵに対してジョブの割り当てを行なわないことを特徴とする付記７に記載のジョブ管理装置。
【００９０】
（付記９）前記ジョブサイズ決定部は、前記複数の計算装置の処理における同期タイミングが略同一となるように前記複数の計算装置に分配するジョブサイズを決定することを特徴とする付記１〜８のいずれか一つに記載のジョブ管理装置。
【００９１】
（付記１０）処理すべきジョブを複数の計算装置に分配するジョブ管理装置であって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得部と、
前記情報取得部が取得した情報に基づいて、前記複数の計算装置を分類し、各分類に対して前記ジョブを分配する第一の分配手段と、
前記分類ごとに独立にジョブを管理する複数のジョブスケジューラと、
前記分類の各々について当該分類に分配されたジョブを当該分類に属する計算装置に対して分配する第二の分配手段と
を備えたことを特徴とするジョブ管理装置。
【００９２】
（付記１１）処理すべきジョブを複数の計算装置に分配するジョブ管理方法であって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得ステップと、
前記情報取得ステップにおいて取得した情報に基づいて、前記複数の計算装置に割り当てるジョブサイズを決定するジョブサイズ決定ステップと、
前記処理すべきジョブを前記ジョブサイズ決定ステップが決定したジョブサイズに基づいて分割するジョブ分割ステップと、
前記複数の計算装置に対し、前記ジョブ分割ステップによって分割されたジョブを分配するジョブ分配ステップと
を含んだことを特徴とするジョブ管理方法。
【００９３】
（付記１２）処理すべきジョブを複数の計算装置に分配するジョブ管理方法をコンピュータに実行させるジョブ管理プログラムであって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得手順と、
前記情報取得手順において取得した情報に基づいて、前記複数の計算装置に割り当てるジョブサイズを決定するジョブサイズ決定手順と、
前記処理すべきジョブを前記ジョブサイズ決定手順が決定したジョブサイズに基づいて分割するジョブ分割手順と、
前記複数の計算装置に対し、前記ジョブ分割手順によって分割されたジョブを分配するジョブ分配手順と
をコンピュータに実行させることを特徴とするジョブ管理プログラム。
【００９４】
（付記１３）処理すべきジョブを複数の計算装置に分配するジョブ管理方法であって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得ステップと、
前記情報取得ステップが取得した情報に基づいて、前記複数の計算装置を分類し、各分類に対して前記ジョブを分配する第一の分配ステップと、
前記分類ごとに独立にジョブを管理する複数のジョブスケジュールステップと、
前記分類の各々について当該分類に分配されたジョブを当該分類に属する計算装置に対して分配する第二の分配ステップと
を含んだことを特徴とするジョブ管理方法。
【００９５】
（付記１４）処理すべきジョブを複数の計算装置に分配するジョブ管理方法をコンピュータに実行させるジョブ管理プログラムであって、
前記複数の計算装置の特性情報および／または負荷情報を取得する情報取得手順と、
前記情報取得手順が取得した情報に基づいて、前記複数の計算装置を分類し、各分類に対して前記ジョブを分配する第一の分配手順と、
前記分類ごとに独立にジョブを管理する複数のジョブスケジュール手順と、
前記分類の各々について当該分類に分配されたジョブを当該分類に属する計算装置に対して分配する第二の分配手順と
をコンピュータに実行させることを特徴とするジョブ管理プログラム。
【図面の簡単な説明】
【００９６】
【図１】図１は、本実施例にかかるジョブ管理方法の概念について説明する概念図である。
【図２】図２は、本実施例にかかるジョブ処理システムの概要構成を示す概要構成図である。
【図３】図３は、全ノードに均等なサイズのジョブを割り振る手法について説明する説明図である。
【図４】図４は、全ノードに均等なサイズのジョブを割り振る場合の同期タイミングについて説明する説明図である。
【図５】図５は、単純計算ノードのみにジョブを割り振る手法について説明する説明図である。
【図６】図６は、単純計算ノードのみにジョブを割り振る場合の同期タイミングについて説明する説明図である。
【図７】図７は、本実施例にかかるジョブ分割について説明する説明図である。
【図８】図８は、本実施例にかかるジョブ分割における同期タイミングについて説明する説明図である。
【図９】図９は、ノードの処理能力を決定する要因について説明する説明図である。
【図１０】図１０は、ジョブスクリプトについて説明する説明図である。
【図１１】図１１は、スクリプトの分析処理の処理動作について説明するフローチャートである。
【図１２】図１２は、ジョブサイズ縮小処理について説明するフローチャートである。
【図１３】図１３は、ＣＰＵ単位でジョブの分配を行なう場合のジョブ分配方法について説明する説明図である。
【図１４】図１４は、複数のジョブスケジューラを設ける構成例について説明する説明図である。
【図１５】図１５は、複数のジョブスケジューラを設けた場合の同期タイミングについて説明する説明図である。
【図１６】図１６は、ジョブ管理部を計算システム側に持たせた場合の構成例を示す図である。（その１）
【図１７】図１７は、ジョブ管理部を計算システム側に持たせた場合の構成例を示す図である。（その２）
【符号の説明】
【００９７】
１，１ａ，１ｂ    計算システム
２，２ａ，２ｂ    サーバ
３    クライアント
１１〜１４，４１〜４４  ノード
１１ａ〜１４ａ  計算部
１２ｂ  ＩＯ処理部
２０，２０ａ，２０ｂ  ジョブ管理部
２１，５１    処理能力測定部
２２    ノード処理能力判定部
２３，５３，６２ａ，６３ａ    ジョブサイズ決定部
２４，５４，６２ｂ，６３ｂ    ジョブ分割部
２５，５５，６２ｃ，６３ｃ    ジョブ分配部
２６，２６ａ    クライアント応答部
５２    ＣＰＵ処理能力判定部
６１    事前分配部
６２    ＩＯノードスケジューラ
６３    計算ノードスケジューラ
【図１】
2010122758.tif 000003
【図２】
2010122758.tif 000004
【図３】
2010122758.tif 000005
【図４】
2010122758.tif 000006
【図５】
2010122758.tif 000007
【図６】
2010122758.tif 000008
【図７】
2010122758.tif 000009
【図８】
2010122758.tif 000010
【図９】
2010122758.tif 000011
【図１０】
2010122758.tif 000012
【図１１】
2010122758.tif 000013
【図１２】
2010122758.tif 000014
【図１３】
2010122758.tif 000015
【図１４】
2010122758.tif 000016
【図１５】
2010122758.tif 000017
【図１６】
2010122758.tif 000018
【図１７】
2010122758.tif 000019