(57)【要約】【課題】実行プログラムの特性と、データの特性と、計算システムの特性と、を基にジョブに最適なプロセス数を決定する。【解決手段】本発明の並列計算機システムにおいて、ジョブ管理ノードは、利用者端末から投入されたジョブを計算システムで処理させるとともに、ジョブの基となった実行プログラムの特性、ジョブが用いたデータの特性、およびジョブを処理させた計算システムの特性の識別情報と、ジョブの分割数であるプロセス数およびジョブの処理時間の情報と、をジョブ処理時間表に記録するジョブ実行部と、ジョブ処理時間表の情報を基に、実行プログラムの特性と、データの特性と、計算システムの特性と、をジョブの処理条件としたときのプロセス数を更新し、最適プロセス数表に記録する最適プロセス数更新部と、投入されたジョブの処理条件を基に最適プロセス数表を参照し、ジョブのプロセス数を決定する実行プロセス数決定部と、を有する。【選択図】図２
2009104373.tif 000002
【特許請求の範囲】
【請求項１】
利用者端末と、計算システムと、前記利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを前記計算システムで並列に実行させるジョブ管理ノードと、を有してなる並列計算機システムであって、
前記ジョブ管理ノードは、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理するとともに、当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録するジョブ実行部と、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録する最適プロセス数更新部と、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定する実行プロセス数決定部と、を有することを特徴とする並列計算機システム。
【請求項２】
前記計算システムは、前記プロセスを実行可能な複数の計算ノードと、前記複数の計算ノードを相互に接続する計算ノード間通信ネットワークと、から構成される請求項１に記載の並列計算機システム。
【請求項３】
利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを計算システムで並列に実行させる情報処理装置であって、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理するとともに、当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録するジョブ実行部と、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録する最適プロセス数更新部と、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定する実行プロセス数決定部と、を有することを特徴とする情報処理装置。
【請求項４】
前記計算システムは、前記プロセスを実行可能な複数の計算ノードと、前記複数の計算ノードを相互に接続する計算ノード間通信ネットワークと、から構成されるものである請求項３に記載の情報処理装置。
【請求項５】
利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを計算システムで並列に実行させる情報処理装置が行うジョブ管理方法であって、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理するステップと、
当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録するステップと、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録するステップと、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定するステップと、を有することを特徴とするジョブ管理方法。
【請求項６】
前記計算システムは、前記プロセスを実行可能な複数の計算ノードと、前記複数の計算ノードを相互に接続する計算ノード間通信ネットワークと、から構成されるものである請求項５に記載のジョブ管理方法。
【請求項７】
利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを計算システムで並列に実行させる情報処理装置に、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理する手順と、
当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録する手順と、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録する手順と、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定する手順と、を実行させるためのジョブ管理プログラム。
【請求項８】
前記計算システムは、前記プロセスを実行可能な複数の計算ノードと、前記複数の計算ノードを相互に接続する計算ノード間通信ネットワークと、から構成されるものである請求項７に記載のジョブ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブのプロセス数を最適化することで効率の良いジョブ管理を行う並列計算機システム、情報処理装置、ジョブ管理方法、およびジョブ管理プログラムに関する。
【背景技術】
【０００２】
近年、計算機システムとして、汎用プロセッサの性能向上と高性能な通信ネットワークの普及により、計算ノードである複数のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）サーバを通信ネットワークで接続したＰＣクラスタシステムが普及してきている。
【０００３】
特に、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）分野では、シミュレーションなどの膨大な計算量を必要とするため、計算機システムの中でも、実行プログラムを並列して処理する並列計算機システムの利用が進んでいる。
【０００４】
並列計算機システム上では、実行プログラムはジョブを単位として処理される。並列計算機システムは、ジョブを複数のプロセスに分割し、プロセスを各計算ノードに振り分ける。各計算ノードは、自ノードに振り分けられたプロセスを、そのプロセスの計算に必要なデータを用いて、実行する。
【０００５】
このように、並列計算機システムでは、ジョブを複数の計算ノードで分割して処理するため、ジョブの処理時間の短縮化を図ることができる。また、ハードウェア的制約から単一計算ノードではメモリ量が不足する場合にも有効である。なお、本明細書では、ジョブの分割数をプロセス数と呼ぶ。
【０００６】
並列計算機システムは、基本的には、ジョブを２並列(プロセス数２)で処理すれば２倍の処理速度、Ｎ並列(プロセス数Ｎ)ではＮ倍の処理速度というように、プロセス数を増やすにつれて処理速度の向上を狙うものである。
【０００７】
しかし、並列計算機システムでは、実際には単純にプロセス数が多ければ多い程、ジョブを効率良く処理できるという訳ではない。
【０００８】
以下に、並列計算機システムにおけるプロセス数と計算性能の関係について図９〜図１１を用いて説明する。
【０００９】
図９に示すように、計算性能は、実際にはプロセス数Ｘで理想直線から外れ、プロセス数Ｙ以降は上がらないという特性を示すのが一般的である。
【００１０】
図９の結果は、ジョブを最も効率良く処理するには、単純にプロセス数を多くすればよい訳ではなく、最適なプロセス数が存在することを意味している。
【００１１】
一般的な並列計算機システムでは、プロセス数は、特許文献１に記載されているように利用者によって任意に指定されるか、あらかじめ並列計算機システムに規定されているため、必ずしも最適なプロセス数でジョブを処理しているとは言えない。
【００１２】
また、図９において、ジョブが用いるデータの規模（データの量）と実行プログラムの特性（実行プログラムの処理内容やプログラムコードの記述内容）によっては、プロセス数が多すぎると逆に計算性能が低下する場合もある。
【００１３】
図１０に示すように、データの規模によって計算性能が飽和するプロセス数が異なる。データの規模が大きいものではプロセス数Ｑに至るまで性能飽和はしないが、データの規模が小さくなるにつれ、計算性能が飽和するプロセス数はＰ、Ｏと少なくなっているのがわかる。これより、データの規模などのデータの特性によって最適なプロセス数が変化することがわかる。
【００１４】
また、実行プログラムの特性によって最適なプロセス数が変化することを考慮し、例えば、特許文献２に記載の技術では、ジョブの基となる実行プログラムの特性を解析して、プロセス数を決定している。
【００１５】
図１１に示すように、各計算ノードを接続する通信ネットワークの性能によって性能曲線が異なる。これより、並列計算機システムに含まれる通信ネットワークのネットワーク性能によっても、最適なプロセス数が変化することがわかる。
【００１６】
その他にも、最適なプロセス数は、計算ノードの計算性能によっても決まる。例えば、特許文献３に記載の技術では、各計算ノードの計算性能と余剰能力を基にプロセス数を決定し、各計算ノードで独立に実行されたプロセスの実行結果を、センターシステムが取りまとめてジョブの処理結果としている。
【００１７】
このように、並列計算機システムにおいては、最も効率良くジョブを処理することのできるプロセス数は、実行プログラムの特性と、データの特性と、計算ノードの計算性能や通信ネットワークのネットワーク性能などの計算システムの特性と、によって決まる。
【特許文献１】特開平８−１６４１０号公報
【特許文献２】特開平１０−２１４１９５号公報
【特許文献３】特開２００１−３２５０４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、上述した並列計算機システムにおいては、実行プログラムの特性と、データの特性と、計算システムの特性と、を全て勘案してプロセス数を決定していないため、最適なプロセス数でジョブを処理していないという課題がある。
【００１９】
本発明の目的は、上述した課題を解決する、並列計算機システム、情報処理装置、ジョブ管理方法、およびジョブ管理プログラムを提供することにある。
【課題を解決するための手段】
【００２０】
上記目的を達成するために本発明の並列計算機システムは、
利用者端末と、計算システムと、前記利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを前記計算システムで並列に実行させるジョブ管理ノードと、を有してなる並列計算機システムであって、
前記ジョブ管理ノードは、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理するとともに、当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録するジョブ実行部と、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録する最適プロセス数更新部と、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定する実行プロセス数決定部と、を有することを特徴とする。
【００２１】
上記目的を達成するために本発明の情報処理装置は、
利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを計算システムで並列に実行させる情報処理装置であって、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理するとともに、当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録するジョブ実行部と、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録する最適プロセス数更新部と、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定する実行プロセス数決定部と、を有することを特徴とする。
【００２２】
上記目的を達成するために本発明のジョブ管理方法は、
利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを計算システムで並列に実行させる情報処理装置が行うジョブ管理方法であって、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理するステップと、
当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録するステップと、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録するステップと、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定するステップと、を有することを特徴とする
上記目的を達成するために本発明のジョブ管理プログラムは、
利用者端末から実行プログラムの処理単位であるジョブが投入されると、当該ジョブを分割したプロセスを計算システムで並列に実行させる情報処理装置に、
前記ジョブを分割したプロセスを前記計算システムで並列に実行させることで当該ジョブを処理する手順と、
当該ジョブの基となった実行プログラムの特性、当該ジョブが用いたデータの特性、および当該ジョブを処理させた前記計算システムの特性の識別情報と、当該ジョブを分割した分割数であるプロセス数および当該ジョブの処理時間の情報と、をジョブ処理時間表に記録する手順と、
前記ジョブ処理時間表に記録された前記プロセス数と前記処理時間の関係を基に、前記実行プログラムの特性と、前記データの特性と、前記計算システムの特性と、を当該ジョブの処理条件としたときに一意に決まる当該ジョブのプロセス数を更新し、最適プロセス数表に記録する手順と、
前記利用者端末から前記ジョブが投入されると、当該ジョブの基となる前記実行プログラムの特性、当該ジョブが用いる前記データの特性、および当該ジョブを処理させる前記計算システムの特性の識別情報を基に前記最適プロセス数表を参照し、当該ジョブのプロセス数を決定する手順と、を実行させることを特徴とする。
【発明の効果】
【００２３】
上述のように、本発明によれば、実行プログラムの特性と、データの特性と、計算システムの特性と、を全て勘案してプロセス数を決定しているため、最適なプロセス数でジョブを処理することができるという効果が得られる。
【発明を実施するための最良の形態】
【００２４】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００２５】
（第１の実施形態）
図１に、本発明の第１の実施形態の並列計算機システムの構成を示す。
【００２６】
図１に示すように、本実施形態の並列計算機システムは、ジョブ管理ノード１００と、複数の計算ノード２００，２０１および計算ノード間通信ネットワーク４００〜４０２からなる計算ノード群２１０と、管理用ネットワーク３００と、複数の利用者端末５００と、運用管理者用端末６００と、を有している。
【００２７】
管理用ネットワーク３００は、ジョブ管理ノード１００と、各計算ノード２００，２０１と、各利用者端末５００と、運用管理者端末６００と、を相互に接続する通信ネットワークである。
【００２８】
利用者端末５００は、利用者が本システムを使用するための情報処理装置である。本実施形態においては、複数の利用者端末５００が接続されており、各利用者端末５００から種々のジョブが投入されるものとする。
【００２９】
ジョブ管理ノード１００は、利用者端末５００から投入されたジョブに最適なプロセス数を決定し、決定したプロセス数分の計算ノード２００，２０１を確保し、確保した計算ノード２００，２０１のそれぞれに、ジョブを分割したプロセスを振り分け、実行させる情報処理装置である。また、ジョブ管理ノード１００は、複数の計算ノード２００，２０１の利用状況を管理する。
【００３０】
本実施形態では、計算ノード群２１０は、計算システムである計算クラスタ２１１〜２１３を有している。
【００３１】
計算クラスタ２１１は、複数の計算ノード２００と、これら複数の計算ノード２００間を相互に接続する計算ノード間通信ネットワーク４００と、からなる。また、計算クラスタ２１２は、複数の計算ノード２００と、これら複数の計算ノード２００間を相互に接続する計算ノード間通信ネットワーク４０１と、からなる。また、計算クラスタ２１３は、複数の計算ノード２０１と、これら複数の計算ノード２０１間を相互に接続する計算ノード間通信ネットワーク４０２と、からなる。
【００３２】
計算ノード２００，２０１は、ジョブ管理ノード１００から自ノードに振り分けられたプロセスを実行する情報処理装置である。
【００３３】
計算ノード間通信ネットワーク４００〜４０２は、ジョブを処理する際に各計算ノード２００または２０１間の情報のやり取りに使用される。
【００３４】
運用管理者端末６００は、本システム全体の管理や状態監視などに用いられる情報処理装置である。
【００３５】
図２に、ジョブ管理ノード１００の構成を示す。
【００３６】
図２に示すように、ジョブ管理ノード１００は、スケジューリング管理部１１０と、最適プロセス数更新部１２０と、最適プロセス数データベース１３０と、を有している。
【００３７】
また、スケジューリング管理部１１０は、ジョブ蓄積部１１１と、ノード状態管理部１１２と、実行ジョブ選択部１１３と、実行プロセス数決定部１１４と、ジョブ実行部１１５と、を有している。
【００３８】
ジョブ蓄積部１１１は、利用者端末５００から投入されたジョブを受け付け、そのジョブを処理待ちジョブとし、そのジョブの情報をキューに蓄積する。
【００３９】
なお、本実施形態においては、ジョブ蓄積部１１１に蓄積されるジョブの情報には、“ジョブ番号”と、“実行プログラム名”と、“データの種類”と、“データの規模”と、“利用者指定プロセス数”と、“優先度”と、“プロセス数変更フラグ”と、が含まれるものとするものとする。
【００４０】
“ジョブ番号”は、各ジョブを識別するための番号である。
【００４１】
“実行プログラム名”は、ジョブの基となっている実行プログラムの名前である。実行プログラムの特性は実行プログラムごとに異なるため、実行プログラムごとに最適なプロセス数は異なる。そのため、ジョブの情報には、実行プログラムの特性の識別情報として、“実行プログラム名”を含めておく。
【００４２】
“データの種類”は、ジョブで用いるデータの種類である。ジョブの基となる実行プログラムの特性によっては、用いるデータの種類により、ジョブの処理内容が異なり、最適なプロセス数が変わってくる場合がある。例えば、車の衝突シミュレーションの場合、正面衝突のデータなのか、側面衝突のデータなのか、により処理内容が変わってくるため、最適なプロセス数も異なってくる。そのため、ジョブの情報には、そのジョブで用いるデータの特性の識別情報として、“データの種類”を含めておく。
【００４３】
“データの規模”は、ジョブで用いるデータの量であり、データの特性の識別情報としてジョブの情報に含まれている。なお、“データの規模”は、予め定められた閾値を基にグループ分け（例えば、大，中，小）されるものとする。
【００４４】
“利用者指定プロセス数”は、利用者が指定したプロセス数である。
【００４５】
“優先度”は、ジョブの処理を行う優先度である。
【００４６】
“プロセス数変更フラグ”は、“利用者指定プロセス数”からジョブに最適なプロセス数への変更の可否を表すフラグである。
【００４７】
ノード状態管理部１１２は、各計算ノード２００，２０１の利用状況を管理する。
【００４８】
実行ジョブ選択部１１３は、ジョブ蓄積部１１１とノード状態管理部１１２を監視し、新たなジョブが投入されるか、空き状態の計算ノード２００，２０１ができるたびに、ジョブ蓄積部１１１のキューに蓄積された処理待ちジョブ群から、ジョブの“優先度”などに基づいて、次に処理するジョブを選択する。
【００４９】
実行プロセス数決定部１１４は、後述する最適プロセス数表１３２を参照し、ジョブの、“実行プログラム名”、“データの種類”、および“データの規模”と、ジョブを処理させる計算クラスタ２１１〜２１３の“計算クラスタ名”と、を基に、ジョブを処理するのに最適なプロセス数を決定する。
【００５０】
“計算クラスタ名”は、計算クラスタの名前である。ジョブを処理する計算クラスタの計算システムの特性（計算ノードおよび計算ノード間通信ネットワークの性能）により、ジョブに最適なプロセス数は異なる。そのため、ジョブを処理する計算クラスタの計算システムの特性を“計算クラスタ名”により識別する。
【００５１】
本実施形態では、３種の計算クラスタ２１１〜２１３が存在する。よって、実行プロセス数決定部１１４は、３種の計算クラスタ２１１〜２１３の各計算クラスタ名をそれぞれ用い、各計算クラスタ２１１〜２１３でジョブを処理させる場合の最適なプロセス数を決定することになる。
【００５２】
なお、“実行プログラム名”、“データの種類”、および“データの規模”の内容は上述したものと同様である。
【００５３】
ジョブ実行部１１５は、ノード状態管理部１１２が管理している各計算ノード２００，２０１の利用状況を基に、各計算クラスタ２１１〜２１３に実行プロセス数決定部１１４で決定されたプロセス数分の空き状態の計算ノード２００または２０１があるかを確認する。プロセス数分の空き状態の計算ノード２００または２０１を持つ計算クラスタがある場合、ジョブ実行部１１５は、その計算クラスタからプロセス数分の計算ノード２００または２０１を確保し、確保した計算ノード２００または２０１のそれぞれにプロセスを振り分け、実行させることにより、ジョブを処理する。また、ジョブ実行部１１５は、ジョブ終了時には、ノード状態管理部１１２が管理している各計算ノード２００，２０１の利用状況を更新し、ジョブの処理状況を後述するジョブ処理時間表１３１に記録する。
【００５４】
最適プロセス数データベース１３０は、ジョブ処理時間表１３１と最適プロセス数表１３２を記録しているデータベースである。
【００５５】
ジョブ処理時間表１３１は、図３に示すように、ジョブの処理状況を記録したテーブルである。ジョブ実行部１１５は、ジョブの処理が終了するたびに、そのジョブの処理状況をジョブ処理時間表１３１に記録する。
【００５６】
ジョブ処理時間表１３１には、各ジョブの処理状況として、ジョブごとに、“ジョブ番号”と、“実行プログラム名”と、“データの種類”と、“データの規模”と、“プロセス数”と、“計算クラスタ名”と、“処理時間”と、を含む情報が記録されている。
【００５７】
“プロセス数”は、実行したプロセス数である。
【００５８】
“処理時間”は、ジョブの処理時間である。
【００５９】
なお、“ジョブ番号”、“実行プログラム名”、“データの種類”、“データの規模”、および“計算クラスタ名”の内容は上述したものと同様である。
【００６０】
最適プロセス数表１３２は、図４に示すように、実行プログラムの特性として“実行プログラム名”を、データの特性として“データの種類”および“データの規模”を、計算システムの特性として“計算クラスタ名”を、ジョブの処理条件としたときに一意に決定する最適なプロセス数を記録したテーブルである。また、最適プロセス数表１３２は、最適なプロセス数でジョブを処理したときの“処理時間”も記録しているものとする。
【００６１】
最適プロセス数更新部１２０は、ジョブ処理時間表１３１が更新されるたびに、ジョブ処理時間表１３１に記録されている“プロセス数”と“処理時間”の関係を基に、最適プロセス数表１３２を更新する。運用管理者用端末６００は、この最適プロセス数更新部１２０を介して、ジョブ処理時間表１３１および最適プロセス数表１３２を参照および変更することができるものとする。
【００６２】
以下に、本実施形態の並列計算機システムにおけるジョブ処理動作について、図５のフローチャートを参照して説明する。
【００６３】
利用者端末５００から投入されたジョブの情報は、ジョブ蓄積部１１１のキューに処理待ちジョブの情報として蓄積される。実行ジョブ選択部１１３は、ジョブ蓄積部１１１とノード状態管理部１１２を監視し、新たなジョブが投入されるか、空き状態の計算ノード２００，２０１が発生すると、キューに処理待ちジョブが有るかを確認する（ステップＡ１）。
【００６４】
実行ジョブ選択部１１３は、キューに処理待ちジョブが無い場合、何もせずに処理を終了する。
【００６５】
実行ジョブ選択部１１３は、キューに処理待ちジョブが有る場合、キューから次に処理するジョブを選択する（ステップＡ２）。ジョブの選択方法は、一般的な並列計算機システムに準じ、ジョブの“優先度”などを勘案して選択を行う。
【００６６】
次に、実行プロセス数決定部１１４は、ジョブの“プロセス数変更フラグ”を確認する（ステップＡ３）。“利用者指定プロセス数”は、ジョブの処理効率の観点からは必ずしも最適なプロセス数では無い場合があるが、プロセス数を変化させた場合の計算精度の確認や、最適なプロセス数を探索するなど、意図的にプロセス数を固定してジョブを処理する場合を考慮し、“プロセス数変更フラグ”を設けている。
【００６７】
実行プロセス数決定部１１４は、“プロセス数変更フラグ”が変更不可の場合、“利用者指定プロセス数”を実行するプロセス数に決定する（ステップＡ８）。
【００６８】
実行プロセス数決定部１１４は、“プロセス数変更フラグ”が変更可の場合、最適プロセス数表１３２を参照し、ジョブの、“実行プログラム名”、“データの種類”、および“データの規模”と、ジョブを処理する計算クラスタの“計算クラスタ名”と、をパラメータとして、ジョブに最適なプロセス数が記録されているかの確認を行う（ステップＡ４）。
【００６９】
実行プロセス数決定部１１４は、最適プロセス数表１３２にジョブに最適なプロセス数が記録されていない場合、“利用者指定プロセス数”を実行するプロセス数に決定する（ステップＡ８）。
【００７０】
実行プロセス数決定部１１４は、最適プロセス数表１３２にジョブに最適なプロセス数が記録されている場合、各計算クラスタ２１１〜２１３でジョブを処理するのに最適なプロセス数を決定する（ステップＡ５）。
【００７１】
次に、ジョブ実行部１１５は、ノード状態管理部１１２が管理している各計算ノード２００，２０１の利用状況を参照し、各計算クラスタ２１１〜２１３に実行プロセス数決定部１１４で決定したプロセス数分の空き状態の計算ノード２００または２０１があるかの確認を行う（ステップＡ６）。
【００７２】
ジョブ実行部１１５は、全ての計算クラスタ２１１〜２１３でプロセス数分の空き状態の計算ノード２００または２０１がない場合、処理を終了する。処理されずに終了したジョブは、ジョブ蓄積部１１１に戻される。
【００７３】
ジョブ実行部１１５は、プロセス数分の空き状態の計算ノード２００または２０１を持つ計算クラスタ２１１〜２１３がある場合、その計算クラスタから、実行プロセス数決定部１１４で決定したその計算クラスタでジョブを処理するのに最適なプロセス数分の計算ノード２００または２０１を確保する。なお、空き状態の計算ノード２００または２０１を持つ計算クラスタが複数ある場合、“処理時間”のフィールドを比較し、“処理時間”が短い計算クラスタから優先的に使用する。
【００７４】
その後、ジョブ実行部１１５は、確保した各計算ノード２００または２０１のそれぞれに、ジョブを分割したプロセスを振り分け、実行させることで、ジョブを処理する（ステップＡ７）。
【００７５】
次に、本実施形態の並列計算機システムにおける最適プロセス数表１３２の更新（学習機能）動作について、図２および図６を参照して説明する。
【００７６】
ジョブ実行部１１５は、ジョブ終了時に、ノード状態管理部１１２が管理している各計算ノード２００，２０１の利用状況を更新するとともに、ジョブの処理状況をジョブ処理時間表１３１に記録する（図２および図６のステップＳ４）。
【００７７】
最適プロセス数更新部１２０は、ジョブ処理時間表１３１が更新されるたび、ジョブの処理条件である、“実行プログラム名”、“データの種類”、“データの規模”、および“計算クラスタ名”ごとに、“プロセス数”と“処理時間”の関係を基に整理し（図２および図６のステップＳ５）、最適プロセス数表１３２の更新を行う（図２および図６のステップＳ６）。
【００７８】
そのため、本実施形態では、ジョブを異なった処理条件で処理することで、そのジョブに最適なプロセス数を最適プロセス数表１３２に学習させることができる。
【００７９】
本システムの運用を開始した時点では、最適プロセス数表１３２は有効な情報を持たないため、運用管理者は直接最適プロセス表１３２を初期化する必要がある（図６のステップＳ１）。初期化時の最適プロセス表１３２は適当なものでよく、本番運用に先立って、運用管理者は、利用頻度が高いと思われる実行プログラムを用い、“プロセス数変更フラグ”を変更不可とし、“データの種類”、“データの規模”、“計算クラスタ名”、ごとにプロセス数を変えてジョブを投入することで（図６のステップＳ２）、最適プロセス数表１３２にその実行プログラムから発生するジョブに最適なプロセス数を学習させることができる（図６の左側のループ）。この手順を各実行プログラムで行うことで、有効な最適プロセス数表１３２を得ることができる。
【００８０】
また、本システムは、本番運用中であっても、ジョブの“優先度”を低く設定するなどして本システムの空き時間に“プロセス数変更フラグ”を変更不可にし、処理条件を変えてジョブを処理させることで、最適プロセス数表１３２に記録されている最適なプロセス数を、より適切な値に更新させることができる。
【００８１】
本システムでは、利用者が投入した（図６のステップＳ７）ジョブの処理状況（図６のステップＳ３）もジョブ処理時間表１３１に記録される（図６のステップＳ４）。そのため、運用管理者が最適プロセス表１３２に学習させていない実行プログラムであっても、利用者がその実行プログラムを用い、“プロセス数変更フラグ”を変更不可にし、処理条件を変えてジョブを処理させることで（図６の右側のループ）、その実行プログラムから発生するジョブに最適なプロセス数を最適プロセス数表１３２に学習させることができる。
【００８２】
上述したように本実施形態においては、ジョブ管理ノード１００において、ジョブの基となる実行プログラムの特性として“実行プログラム名”を、ジョブが用いるデータの特性として“データの種類”および“データの規模”を、ジョブを処理させる計算クラスタの計算システムの特性として“計算クラスタ名”を、基に最適なプロセス数を決定するため、利用者が指定したプロセス数でジョブを処理するのに比べ、ジョブを効率良く処理することができるという効果が得られる。
【００８３】
また、本実施形態においては、“計算クラスタ名”により、計算システムの特性（計算ノードおよび通信ネットワークの性能）が異なる計算クラスタを識別しているため、性能の異なる計算ノードや通信ネットワークを有する複雑なシステム構成の場合でも、ジョブに最適なプロセス数を決定し、ジョブを効率良く処理できるという効果が得られる。
【００８４】
また、本実施形態においては、上述したように最適なプロセス数でジョブを処理するため、ジョブの処理時間を最小化することができ、必要以上に多くの計算ノードを使用することが無くなる。そのため、並列計算機システム全体の使用効率を高くすることができるという効果が得られる。
【００８５】
さらに、本実施形態においては、ジョブ管理ノード１００において、自動的に、ジョブの処理状況をジョブ処理時間表１３１に記録し、ジョブ処理時間表１３１に記録した情報を基にジョブに最適なプロセス数を更新し、最適プロセス数表１３２に記録することで、最適プロセス数表１３２にジョブに最適なプロセス数を学習させることができるという効果が得られる。
【００８６】
（第２の実施形態）
図７に本発明の第２の実施形態の並列計算機システムの構成を示す。
【００８７】
図７に示すように、本実施形態の並列計算機システムは、計算ノード群２１０が単一の計算クラスタ２１４からなる点で、計算ノード群２１０が３種の計算クラスタ２１１〜２１３からなる第１の実施形態とは異なる。なお、計算クラスタ２１４は、複数の計算ノード２００と、これら複数の計算ノード２００間を相互に接続する計算ノード間通信ネットワーク４０３と、からなるものとする。また、ジョブ管理ノード１００の構成については、第１の実施形態と同様とする。
【００８８】
上述したように、本実施形態では、計算ノード群２１０が単一の計算クラスタ２１４からなる。そのため、計算クラスタ２１４の計算システムの特性が、計算ノード群２１０全体での計算システムの特性となり、実行プロセス数決定部１１４は、計算クラスタ２１４でジョブを処理するのに最適なプロセス数を求めることになる。
【００８９】
以下に、本実施形態の並列計算機システムにおけるジョブ処理動作について、図８のフローチャートを参照して説明する。なお、図８において、図５と同様の部分については、同一の符号を付す。
【００９０】
図８に示すように、本実施形態におけるジョブ処理動作は、第１の実施形態と比較して、図５のステップＡ５，Ａ６を、ステップＢ５，Ｂ６に変更した点のみが異なり、それ以外は共通である。
【００９１】
すなわち、第１の実施形態では、図５のステップＡ５で、各計算クラスタ２１１〜２１３でジョブを処理する場合のプロセス数を決定し、図５のステップＡ６で、決定したプロセス数分の空き状態の計算ノード２００または２０１を持つ各計算クラスタ２１１〜２１３によるジョブの“処理時間”を判断した上で、実行するプロセス数が確定する。
【００９２】
これに対して、本実施形態では、ステップＢ５で、単一の計算クラスタ２１４でジョブを処理する場合のプロセス数を決定し、ステップＢ６で、決定したプロセス数分の空き状態の計算ノード２００が計算クラスタ２１４に有れば、決定したプロセス数がそのまま実行するプロセス数として確定する。
【００９３】
なお、最適プロセス数表１３２の更新（学習機能）動作に関しては、第１の実施形態と同様である。
【００９４】
上述した第１および第２の実施形態の並列計算機システムは、一例であり、その構成及び動作は、発明の主旨を逸脱しない範囲で、適宜に変更可能である。例えば、第１および第２の実施形態では、プロセス数を変更可の場合、最適なプロセス数に置き換えてジョブを処理するが、自動的には変更せず利用者に対して最適なプロセス数を教示するだけに留めてもよい。もしくは、最適なプロセス数の根拠となるジョブ処理時間表１３１のエントリ数などから最適プロセス数表１３２の確からしさを定義し、確からしさの閾値を設定することで、閾値を超えた場合にはプロセス数を自動的に変更し、閾値以下の場合は利用者に教示するに留めるというようにしてもよい。
【００９５】
なお、本発明のジョブ管理ノード１００は、上述のように専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、ジョブ管理ノード１００で読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをジョブ管理ノード１００に読み込ませ、実行するものであってもよい。ジョブ管理ノード１００で読み取り可能な記録媒体とは、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記録媒体、ジョブ管理ノード１００に内蔵されるハードディスク装置等の記憶装置を指す。さらに、ジョブ管理ノード１００で読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間の間、動的にジョブ管理ノード１００内部の揮発性メモリのように一定時間プログラムを保持しているものを含む。
【産業上の利用可能性】
【００９６】
本発明は、多数のＰＣを連結したＰＣクラスタシステムなどの並列計算機システムに利用可能である。
【図面の簡単な説明】
【００９７】
【図１】本発明の第１の実施形態の並列計算機システムの構成を示すブロック図である。
【図２】図１に示したジョブ管理ノードの構成を示すブロック図である。
【図３】図２に示したジョブ処理時間表の具体例を示す図である。
【図４】図２に示した最適プロセス数表の具体例を示す図である。
【図５】図１に示した並列計算機システムにおけるジョブ処理動作を説明するフローチャートである。
【図６】図１に示した並列計算機システムにおける最適プロセス数表の更新（学習機能）動作を説明するフローチャートである。
【図７】本発明の第２の実施形態の並列計算機システムの構成を示すブロック図である。
【図８】図７に示した並列計算機システムにおけるジョブ処理動作を説明するフローチャートである。
【図９】一般的な並列計算機システムでの、プロセス数に対する理想および実際の性能向上曲線を示すグラフである。
【図１０】一般的な並列計算機システムでの、データの規模ごとのプロセス数に対する性能向上曲線を示すグラフである。
【図１１】一般的な並列計算機システムでの、ネットワーク性能ごとのプロセス数に対する性能向上曲線を示すグラフである。
【符号の説明】
【００９８】
１００    ジョブ管理ノード
１１０    スケジューリング管理部
１１１    ジョブ蓄積部
１１２    ノード状態管理部
１１３    実行ジョブ選択部
１１４    実行プロセス数決定部
１１５    ジョブ実行部
１２０    最適プロセス数更新部
１３０    最適プロセス数データベース
１３１    ジョブ処理時間表
１３２    最適プロセス数表
２００，２０１    計算ノード
２１０    計算ノード群
２１１〜２１４    計算クラスタ
３００    管理用ネットワーク
４００〜４０３    計算ノード間通信ネットワーク
５００    利用者端末
６００    運用管理者端末
【図１】
2009104373.tif 000003
【図２】
2009104373.tif 000004
【図３】
2009104373.tif 000005
【図４】
2009104373.tif 000006
【図５】
2009104373.tif 000007
【図６】
2009104373.tif 000008
【図７】
2009104373.tif 000009
【図８】
2009104373.tif 000010
【図９】
2009104373.tif 000011
【図１０】
2009104373.tif 000012
【図１１】
2009104373.tif 000013