(57)【要約】【課題】並列計算機を有効利用するプログラムの作成をユーザに促して、並列計算機の利用効率を向上すること。【解決手段】性能集計部１１０がジョブ課金情報を用いて各プログラムの性能指標を集計してプログラム性能情報としてプログラム性能ＤＢ１１５に格納し、基準値調整部１２０が各プログラムのプログラム性能情報に基づいて優先度を「高」とするプログラムの数が一定になるように基準値の調整を行い、優先度更新部１３０が、プログラム性能情報と基準値に基づいてプログラムの優先度を更新するよう構成する。また、優先度更新部１３０が、優先度が低下したプログラムの情報を優先度低下プログラムＤＢ１３３に格納し、バッチリクエスト受付部１４０がバッチリクエストをユーザから受け付けた際に優先度低下プログラムＤＢ１３３と照合し、照合がとれた場合には、ユーザに優先度の低下を通知する。【選択図】        図１
2006309586.tif 000002
【特許請求の範囲】
【請求項１】
並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリングプログラムであって、
前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定手順と、
前記優先度決定手順により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング手順と、
をコンピュータに実行させることを特徴とするバッチスケジューリングプログラム。
【請求項２】
前記優先度決定手順は、所定の頻度で優先度の決定を行い、
前記優先度決定手順により決定された優先度が前回決定された優先度から低下したか否かを判定する優先度低下判定手順と、
前記優先度低下判定手順により優先度が低下したと判定された並列プログラムをバッチジョブとして投入した利用者に優先度低下を通知する優先度低下通知手順と、
をさらにコンピュータに実行させることを特徴とする請求項１に記載のバッチスケジューリングプログラム。
【請求項３】
前記優先度決定手順は、並列化効率、キャッシュミス率および浮動小数点演算性能を前記指標とすることを特徴とする請求項１または２に記載のバッチスケジューリングプログラム。
【請求項４】
並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリング方法であって、
前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定工程と、
前記優先度決定工程により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング工程と、
を含んだことを特徴とするバッチスケジューリング方法。
【請求項５】
並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリング装置であって、
前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定手段と、
前記優先度決定手段により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング手段と、
を備えたことを特徴とするバッチスケジューリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリングプログラム、バッチスケジューリング方法およびバッチスケジューリング装置に関し、特に、利用者に並列計算機の効率的な利用を考慮した並列プログラムの作成を動機付け、もって並列計算機の利用効率を向上することができるバッチスケジューリングプログラム、バッチスケジューリング方法およびバッチスケジューリング装置に関するものである。なお、並列プログラムとは、並列計算機で並列に実行されるプログラムである。
【背景技術】
【０００２】
従来、複数のＣＰＵを用いてプログラムを並列に実行する並列計算機システムでは、ユーザ（利用者）がバッチジョブ形式で投入した並列プログラム群の中からＣＰＵなどの計算機資源の空き状況や各バッチジョブの計算機資源要求などに基づいてバッチジョブのスケジューリングが行われていた。
【０００３】
図１８は、並列計算機システムのバッチジョブスケジューリングを説明するための説明図である。同図に示すように、ユーザがバッチジョブ形式で投入したバッチリクエストは実行待ち行列に格納され、バッチスケジューラ３００が計算機資源の空き状態および各バッチリクエストが要求する計算機資源に基づいて実行待ち行列からバッチリクエストを選択し、実行権を与えている。
【０００４】
また、特許文献１には、複数のジョブキューにより実行待ちジョブおよび実行中ジョブを管理し、各ジョブの計算機資源要求量、待ち時間等に応じて所属キューおよびキュー内優先度を設定し、所属キューおよびキュー内優先度を動的に見直してジョブをスケジューリングする技術が開示されている。
【０００５】
【特許文献１】特開平０８−０１６４１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、各ジョブの計算機資源要求量、待ち時間等に応じてジョブの優先度を決めても、並列プログラムが並列性を有効に利用するものでなければ並列計算機を効率的に使用することができないという問題がある。すなわち、並列プログラムが並列計算機の効率的な利用を考慮したものでなければ並列計算機の能力を十分に生かすことはできないという問題がある。
【０００７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、利用者に並列計算機の効率的な利用を考慮した並列プログラムの作成を動機付け、もって並列計算機の利用効率を向上することができるバッチスケジューリングプログラム、バッチスケジューリング方法およびバッチスケジューリング装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、請求項１の発明に係るバッチスケジューリングプログラムは、並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリングプログラムであって、前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定手順と、前記優先度決定手順により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング手順と、をコンピュータに実行させることを特徴とする。
【０００９】
この請求項１の発明によれば、並列プログラムの優先度を並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定し、決定した優先度に基づいて並列プログラムのスケジューリングを行うよう構成したので、利用者に並列計算機の効率的な利用を考慮した並列プログラムの作成を動機付けることができる。
【００１０】
また、請求項２の発明に係るバッチスケジューリングプログラムは、請求項１の発明において、前記優先度決定手順は、所定の頻度で優先度の決定を行い、前記優先度決定手順により決定された優先度が前回決定された優先度から低下したか否かを判定する優先度低下判定手順と、前記優先度低下判定手順により優先度が低下したと判定された並列プログラムをバッチジョブとして投入した利用者に優先度低下を通知する優先度低下通知手順と、をさらにコンピュータに実行させることを特徴とする。
【００１１】
この請求項２の発明によれば、所定の頻度で優先度の決定を行い、決定した優先度が前回決定した優先度から低下したか否かを判定し、優先度が低下したと判定した並列プログラムをバッチジョブとして投入した利用者に優先度低下を通知するよう構成したので、利用者に優先度の低下を認識させることができる。
【００１２】
また、請求項３の発明に係るバッチスケジューリングプログラムは、請求項１または２の発明において、前記優先度決定手順は、並列化効率、キャッシュミス率および浮動小数点演算性能を前記指標とすることを特徴とする。
【００１３】
この請求項３の発明によれば、並列化効率、キャッシュミス率および浮動小数点演算性能を指標とするよう構成したので、並列計算機のハードウェア資源の利用効率を総合的に評価することができる。
【００１４】
また、請求項４の発明に係るバッチスケジューリング方法は、並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリング方法であって、前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定工程と、前記優先度決定工程により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング工程と、を含んだことを特徴とする。
【００１５】
この請求項４の発明によれば、並列プログラムの優先度を並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定し、決定した優先度に基づいて並列プログラムのスケジューリングを行うよう構成したので、利用者に並列計算機の効率的な利用を考慮した並列プログラムの作成を動機付けることができる。
【００１６】
また、請求項５の発明に係るバッチスケジューリング装置は、並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリング装置であって、前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定手段と、前記優先度決定手段により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング手段と、を備えたことを特徴とする。
【００１７】
この請求項５の発明によれば、並列プログラムの優先度を並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定し、決定した優先度に基づいて並列プログラムのスケジューリングを行うよう構成したので、利用者に並列計算機の効率的な利用を考慮した並列プログラムの作成を動機付けることができる。
【発明の効果】
【００１８】
請求項１、４および５の発明によれば、利用者に並列計算機の効率的な利用を考慮した並列プログラムの作成を動機付けるので、並列計算機の利用効率を向上することができるという効果を奏する。
【００１９】
また、請求項２の発明によれば、利用者に優先度の低下を認識させるので、利用者に並列計算機の効率的な利用を考慮した並列プログラムの作成を促すことができるという効果を奏する。
【００２０】
また、請求項３の発明によれば、並列計算機のハードウェア資源の利用効率を総合的に評価するので、並列計算機の利用効率を総合的に向上することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明に係るバッチスケジューリングプログラム、バッチスケジューリング方法およびバッチスケジューリング装置の好適な実施例を詳細に説明する。なお、ここでは、並列プログラムを単にプログラムと呼ぶこととする。
【実施例】
【００２２】
まず、本実施例に係るバッチスケジューリング装置の構成について説明する。図１は、本実施例に係るバッチスケジューリング装置の構成を示す機能ブロック図である。同図に示すように、このバッチスケジューリング装置１００は、性能集計部１１０と、プログラム性能ＤＢ１１５と、基準値調整部１２０と、基準達成プログラムＤＢ１２３と、センタ基準値ＤＢ１２６と、優先度更新部１３０と、優先度低下プログラムＤＢ１３３と、プログラム優先度ＤＢ１３６と、バッチリクエスト受付部１４０と、実行待ち行列ＤＢ１４５と、スケジューリング部１５０とを有する。
【００２３】
性能集計部１１０は、ジョブ課金情報ＤＢ１０に記憶されたジョブ課金情報からプログラム毎に並列計算機の効率的な利用度合を示す性能指標を算出してプログラム性能ＤＢ１１５に格納する処理部である。
【００２４】
図２は、ジョブ課金情報ＤＢ１０がジョブ毎に記憶するジョブ課金情報を示す図である。同図に示すように、このジョブ課金情報には、ジョブとして実行されるプログラムのプログラム名、並列に使用されたＣＰＵの数を示す総並列数（Ｎ）、浮動小数点演算性能、キャッシュミス率、Ｎ台のＣＰＵの実行時間Ｃｐｕ１−実行時間〜ＣｐｕＮ−実行時間が含まれる。
【００２５】
ここで、浮動小数点演算性能は、ＣＰＵ単体の浮動小数点演算性能を示す指標であり、
浮動小数点演算性能＝全ＣＰＵの合計浮動小数点演算数÷全ＣＰＵの合計実行時間  [Flop/sec]
で定義され、ＣＰＵあたりの浮動小数点演算性能が高いかどうかを評価する。また、キャッシュミス率は、キャッシュの利用効率を示す指標であり、
キャッシュミス率＝全ＣＰＵの合計キャッシュミス回数÷全ＣＰＵの合計実行命令数×１００  [%]
で定義される。
【００２６】
図３は、性能集計部１１０が性能指標として算出する並列化効率の定義を浮動小数点演算性能およびキャッシュミス率の定義とともに示す図である。同図（ａ）は、並列化効率の定義を示し、同図（ｂ）は、浮動小数点演算性能の定義を示し、同図（ｃ）は、キャッシュミス率の定義を示す。
【００２７】
同図（ａ）に示すように、並列化効率は、並列性能を示す指標であり、
並列化効率＝Ｎ並列の合計実行時間÷Ｎ並列の最大実行時間÷総並列数Ｎ
で定義され、並列数に見合った台数効果が出ているかどうかを評価する。同図（ａ）では、並列化効率が７０％と８９％の二つの場合が示されているが、並列化効率は値が高いほど性能が高い。なお、性能集計部１１０は、並列化効率、浮動小数点演算性能およびキャッシュミス率を性能指標として集計する。
【００２８】
プログラム性能ＤＢ１１５は、性能集計部１１０が算出した性能指標をプログラム毎にプログラム性能情報として記憶する記憶部である。図４は、プログラム性能ＤＢ１１５がプログラム毎に記憶するプログラム性能情報を示す図である。同図に示すように、このプログラム性能ＤＢ１１５は、プログラム毎にプログラム名、登録件数、平均浮動小数点演算性能、平均キャッシュミス率および平均並列化効率をプログラム性能情報として記憶する。
【００２９】
ここで、登録件数は、各プログラムについてジョブ課金情報ＤＢ１０に記憶されていたジョブ課金情報の件数であり、平均浮動小数点演算性能、平均キャッシュミス率および平均並列化効率は、それぞれ登録件数のジョブ課金情報に含まれる浮動小数点演算性能、キャッシュミス率および並列化効率の平均値である。
【００３０】
図５は、性能集計部１１０によるジョブ課金情報からプログラム性能情報の算出処理を説明するための説明図である。同図に示すように、性能集計部１１０は、ジョブ課金情報ＤＢ１０からジョブ課金情報を１件ずつ取り出してプログラム性能情報を更新する。具体的には、性能集計部１１０は、ジョブ課金情報ＤＢ１０から取り出したジョブ課金情報のプログラム名がプログラム性能ＤＢ１１５に登録されていなければ新たにエントリを作成して登録件数を「１」とし、登録されている場合には登録件数に「１」を加える。
【００３１】
また、性能集計部１１０は、プログラム性能情報の平均浮動小数点演算性能および登録件数とジョブ課金情報の浮動小数点演算性能とを用いて浮動小数点演算性能の平均値を再計算して平均浮動小数点演算性能を更新し、プログラム性能情報の平均キャッシュミス率および登録件数とジョブ課金情報のキャッシュミス率とを用いてキャッシュミス率の平均値を再計算して平均キャッシュミス率を更新する。
【００３２】
また、性能集計部１１０は、ジョブ課金情報のＣｐｕ１−実行時間〜ＣｐｕＮ−実行時間を用いて並列化効率を算出し、プログラム性能情報の平均並列化効率および登録件数と算出した並列化効率とを用いて並列化効率の平均値を再計算して平均並列化効率を更新する。
【００３３】
基準値調整部１２０は、プログラム性能ＤＢ１１５を用いて、選定プログラムの数が一定になるように並列計算機のセンタの性能指標の基準値を調整し、センタ基準値ＤＢ１２６に格納する処理部である。ここで、選定プログラムとは、優先度を「高」とするプログラムであり、本実施例に係るバッチスケジューリング装置１００は、基本的にプログラムの優先度を「高」か「低」のいずれかに設定し、性能指標が良い方から一定の数のプログラムの優先度を「高」とするとともに、選定プログラムが満たす性能指標の値を基準値とする。
【００３４】
図６は、基準値調整部１２０による基準値調整処理を説明するための説明図である。同図に示すように、基準値調整部１２０は、プログラム性能ＤＢ１１５にプログラム性能情報が記憶されているプログラムを並列化効率、浮動小数点演算性能およびキャッシュミス率の３種類の性能指標でそれぞれソートしたリストを用意し、先頭のプログラムの性能指標の値を最初の基準値とする。
【００３５】
そして、いずれかの性能指標を１段階下げて、新たにその性能指標の値が基準値となったプログラムが他の性能指標でも基準値を達成していれば、全ての基準値を達成したと見なしてそのプログラムの情報を基準達成プログラムリストに追加する。なお、基準値を動かす性能指標の順序は固定ではなく、センタの運用方針（どの性能指標を重視するか）に応じて重み付けすることもできる。また、ここでは、基準値調整部１２０は、毎日１回基準値を調整することとするが、週に１回など他の頻度で基準値を調整することもできる。
【００３６】
図６は、プログラムＣの並列化効率をセンタの並列化効率の基準値とし、プログラムＡの浮動小数点演算性能およびキャッシュミス率をそれぞれセンタの浮動小数点演算性能およびキャッシュミス率の基準値とした段階で基準達成プログラムリストにはプログラムＡが格納されている場合を示している。
【００３７】
なお、基準達成プログラムリストのプログラムの数が一定の数になると、基準値調整部１２０は基準値調整処理を終了する。また、後述するように、基準達成プログラムリストのプログラムの優先度が「高」となる。
【００３８】
このように、基準値調整部１２０が、基準達成プログラムリストのプログラムの数が一定の数になるように基準値を調整することによって、優先度が「高」となるプログラムの数を一定にすることができる。
【００３９】
基準達成プログラムＤＢ１２３は、基準達成プログラムリストを記憶する記憶部である。図７は、基準達成プログラムＤＢ１２３が基準達成プログラム毎に記憶するプログラム情報を示す図である。
【００４０】
同図に示すように、基準達成プログラムＤＢ１２３は、プログラム名、平均浮動小数点演算性能、平均キャッシュミス率および平均並列化効率を基準を達成したプログラム毎に記憶する。
【００４１】
センタ基準値ＤＢ１２６は、基準値調整部１２０が調整した基準値を記憶する記憶部である。図８は、センタ基準値ＤＢ１２６が日毎に記憶する基準値情報を示す図である。同図に示すように、センタ基準値ＤＢ１２６は、基準値調整処理が行われた年月日を示す処理年月日と、基準値となる平均浮動小数点演算性能、平均キャッシュミス率および平均並列化効率とを基準値情報として日毎に記憶する。
【００４２】
優先度更新部１３０は、プログラム優先度ＤＢ１３６が記憶する各プログラムの優先度をプログラム性能ＤＢ１１５とセンタ基準値ＤＢ１２６を用いて更新する処理部である。すなわち、プログラム性能ＤＢ１１５が記憶する各プログラムの性能指標の値とセンタ基準値ＤＢ１２６が記憶する基準値とを比較し、各プログラムの性能指標の値が全て基準値以上であればそのプログラムの優先度を「高」とし、一つでも基準値に満たないものがあればそのプログラムの優先度を「低」とする。また、この優先度更新部１３０は、優先度が「高」から「低」に更新されたプログラムの情報を優先度低下プログラムＤＢ１３３に格納する。
【００４３】
この優先度更新部１３０が、各プログラムの性能指標の値と基準値とに基づいてプログラムの優先度を更新することによって、並列計算機の有効利用の度合に基づいてプログラムの優先度を決定することができる。
【００４４】
図９は、優先度の更新による基準値の底上げを説明するための説明図である。同図に示すように、各プログラムの性能が改善されると、優先度が「高」であるプログラムの数は一定であるため、全体の基準値が底上げされる。その結果、前回の基準値では優先度が「高」であったプログラムが今回の基準値では優先度が「低」となる場合が発生する。
【００４５】
優先度低下プログラムＤＢ１３３は、優先度が「高」から「低」に変更されたプログラムである優先度低下プログラムの情報を記憶する記憶部である。図１０は、優先度低下プログラムＤＢ１３３が優先度低下プログラム毎に記憶するプログラム情報を示す図である。同図に示すように、優先度低下プログラムＤＢ１３３は、プログラム名、平均浮動小数点演算性能、平均キャッシュミス率および平均並列化効率を優先度低下プログラム毎に記憶する。
【００４６】
プログラム優先度ＤＢ１３６は、プログラムの優先度を優先度情報として記憶する記憶部である。図１１は、プログラム優先度ＤＢ１３６がプログラム毎に記憶する優先度情報を示す図である。同図に示すように、プログラム優先度ＤＢ１３６は、プログラム名、登録年月日、平均浮動小数点演算性能、平均キャッシュミス率、平均並列化効率および実行優先度をプログラム毎に記憶する。ここで、登録年月日は、プログラムがプログラム優先度ＤＢ１３６に登録された年月日であり、実行優先度はプログラムの優先度である。
【００４７】
バッチリクエスト受付部１４０は、並列計算機によるプログラムの実行要求をユーザからバッチリクエストとして受け付ける処理部である。また、このバッチリクエスト受付部１４０は、ユーザからバッチリクエストを受け付ける際に優先度低下プログラムＤＢ１３３を参照し、ユーザが実行を要求するプログラムの優先度が低下した場合には、アラームをユーザに通知する。
【００４８】
このバッチリクエスト受付部１４０が、優先度低下プログラムＤＢ１３３を参照し、ユーザが実行を要求するプログラムの優先度が低下した場合には、アラームをユーザに通知することによって、ユーザにプログラムの性能改善を動機付けることができる。
【００４９】
なお、ここでは、バッチリクエスト受付部１４０が、ユーザからバッチリクエストを受け付けた際に優先度が低下したプログラムについてアラームをユーザに通知することとしたが、優先度更新部１３０が優先度を更新する際に優先度が低下したプログラムについてアラームをユーザに通知するようにすることもできる。
【００５０】
実行待ち行列ＤＢ１４５は、バッチリクエスト受付部１４０がユーザから受け付けたバッチリクエストを格納する待ち行列である。スケジューリング部１５０は、実行待ち行列ＤＢ１４５に格納されたバッチリクエストからプログラム優先度ＤＢ１３６に基づいて優先度の最も高いバッチリクエストを取り出して実行権を付与する処理部である。
【００５１】
次に、本実施例に係るバッチスケジューリング装置１００による優先度決定処理の処理手順について説明する。図１２は、本実施例に係るバッチスケジューリング装置１００による優先度決定処理の処理手順を示すフローチャートである。
【００５２】
同図に示すように、このバッチスケジューリング装置１００は、性能集計部１１０が、ジョブ課金情報ＤＢ１０のジョブ課金情報を用いて各プログラムの性能指標を集計し、プログラム性能ＤＢ１１５に格納する性能集計処理を行う（ステップＳ１０１）。
【００５３】
そして、基準値調整部１２０が、プログラム性能ＤＢ１１５に格納された各プログラムのプログラム性能情報に基づいて優先度が「高」となるプログラムの数が一定になるように基準値の調整を行ってセンタ基準値ＤＢ１２６に格納し、基準値を達成したプログラムを基準達成プログラムＤＢ１２３に格納する基準値調整処理を行う（ステップＳ１０２）。
【００５４】
そして、優先度更新部１３０が、プログラム性能ＤＢ１１５に記憶された各プログラムのプログラム性能情報とセンタ基準値ＤＢ１２６に格納された基準値に基づいてプログラム優先度ＤＢ１３６の各プログラムの優先度を更新し、優先度が低下した優先度低下プログラムの情報を優先度低下プログラムＤＢ１３３に格納する優先度更新処理を行う（ステップＳ１０３）。
【００５５】
このように、性能集計部１１０がジョブ課金情報を用いて各プログラムの性能指標を集計し、基準値調整部１２０が各プログラムの性能指標の値に基づいて基準値の調整を行い、優先度更新部１３０が、各プログラムのプログラム性能情報と基準値に基づいて各プログラムの優先度を更新することによって、並列計算機を有効利用する度合に基づいて各プログラムの優先度を決定することができる。
【００５６】
次に、性能集計部１１０による性能集計処理の処理手順について説明する。図１３は、性能集計部１１０による性能集計処理の処理手順を示すフローチャートである。同図に示すように、この性能集計処理では、性能集計部１１０は、ジョブ課金情報ＤＢ１０のジョブ課金情報を１件ずつ読み込み（ステップＳ２０１）、ジョブ課金情報があるか否かを判定する（ステップＳ２０２）。
【００５７】
その結果、ジョブ課金情報がない場合には処理を終了し、ジョブ課金情報がある場合には性能指標を算出し（ステップＳ２０３）、プログラム性能ＤＢ１１５へ書き込む（ステップＳ２０４）。そして、ステップＳ２０１に戻って次のジョブ課金情報を読み込む。
【００５８】
このように、性能集計部１１０がジョブ課金情報を用いて性能指標を算出することによって、実際のデータに基づいて各プログラムの性能指標を求めることができる。
【００５９】
次に、基準値調整部１２０による基準値調整処理の処理手順について説明する。図１４は、基準値調整部１２０による基準値調整処理の処理手順を示すフローチャートである。同図に示すように、この基準値調整処理では、基準値調整部１２０は、プログラム性能ＤＢ１１５にプログラム性能情報が格納されたプログラムを３種類の性能指標でそれぞれソートする（ステップＳ３０１）。また、各性能指標の基準値を初期化する（ステップＳ３０２）。そして、基準値を動かす性能指標を決定し（ステップＳ３０３）、決定した性能指標の基準値を一段階下げる（ステップＳ３０４）。
【００６０】
そして、全ての性能指標で基準達成したプログラムがあるか否かを判定し（ステップＳ３０５）、ある場合には、基準達成したプログラムを基準達成プログラムＤＢ１２３に追加し（ステップＳ３０６）、基準達成したプログラムの数が規定値に到達したか否かを判定する（ステップＳ３０７）。その結果、基準達成したプログラムの数が規定値に到達した場合には、現在の基準値をセンタ基準値ＤＢ１２６に書き込み（ステップＳ３０９）、処理を終了する。
【００６１】
一方、基準達成したプログラムの数が規定値に到達しない場合、および、全ての性能指標で基準達成したプログラムがない場合には、全ての性能指標を最後まで動かしたか否かを判定し（ステップＳ３０８）、全ての性能指標を最後まで動かしていない場合には、ステップＳ３０３に戻り、全ての性能指標を最後まで動かした場合には、現在の基準値をセンタ基準値ＤＢ１２６に書き込み（ステップＳ３０９）、処理を終了する。
【００６２】
このように、基準値調整部１２０が、性能指標の基準値を調整することにより、プログラムの改善に伴って基準値を底上げしつつ、一定の数のプログラムの優先度を「高」とすることができる。
【００６３】
次に、優先度更新部１３０による優先度更新処理の処理手順について説明する。図１５は、優先度更新部１３０による優先度更新処理の処理手順を示すフローチャートである。同図に示すように、この優先度更新処理では、優先度更新部１３０は、プログラム性能ＤＢ１１５からプログラム性能情報を１件ずつ読み込み（ステップＳ４０１）、プログラム性能情報を読み込んだプログラムがプログラム優先度ＤＢ１３６に登録済であるか否かを判定する（ステップＳ４０２）。
【００６４】
その結果、プログラム優先度ＤＢ１３６に登録済である場合には、プログラム優先度ＤＢ１３６の性能情報、すなわち平均浮動小数点演算性能、平均キャッシュミス率および平均並列化効率を更新し（ステップＳ４０３）、プログラム優先度ＤＢ１３６に登録済でない場合には、そのプログラムの性能情報などを新規にプログラム優先度ＤＢ１３６に登録する（ステップＳ４０４）。
【００６５】
そして、プログラム性能ＤＢ１１５からプログラム性能情報を全部読み込んだか否かを判定し（ステップＳ４０５）、全部を読み込んではいない場合には、ステップＳ４０１に戻って次のプログラム性能情報を読み込む。
【００６６】
一方、プログラム性能情報を全部読み込んだ場合には、センタ基準値ＤＢ１２６から基準値を読み込み（ステップＳ４０６）、プログラム優先度ＤＢ１３６から１件ずつプログラムの優先度情報を読み込む（ステップＳ４０７）。
【００６７】
そして、全ての性能指標でプログラムの優先度情報に含まれる性能指標の値が基準値を満たすか否かを判定し（ステップＳ４０８）、全ての性能指標で基準値を満たす場合には、そのプログラムに高い優先度を設定し（ステップＳ４０９）、いずれかの性能指標で基準値を満たさない場合には、そのプログラムに低い優先度を設定し（ステップＳ４１０）、さらに、前回より優先度が下がったときには、そのプログラムの情報を優先度低下プログラムＤＢ１３３に格納する（ステップＳ４１１〜ステップＳ４１２）。
【００６８】
そして、プログラム優先度ＤＢ１３６から全ての優先度情報を読み込んだか否かを判定し（ステップＳ４１３）、全ての優先度情報を読み込んでいない場合には、ステップＳ４０７に戻って次の優先度情報を読み込み、全ての優先度情報を読み込んだ場合には、処理を終了する。
【００６９】
このように、優先度更新部１３０がプログラムの性能指標の値と性能指標の基準値に基づいてプログラムの優先度を更新することによって、並列計算機の有効利用の度合に基づいてプログラムの優先度を設定することができる。
【００７０】
次に、本実施例に係るバッチスケジューリング装置１００によるバッチリクエストスケジューリング例について説明する。図１６は、本実施例に係るバッチスケジューリング装置１００によるバッチリクエストスケジューリング例を示す図である。
【００７１】
同図に示すように、バッチリクエスト受付部１４０は、ユーザからバッチリクエストを受け付けると、受け付けたバッチリクエストを実行待ち行列ＤＢ１４５に格納するとともに、バッチリクエストのプログラム名を優先度低下プログラムＤＢ１３３と照合し、優先度低下プログラムＤＢ１３３と照合がとれた場合には、優先度低下に関するアラームメッセージをユーザに通知する。
【００７２】
この例では、受け付けたバッチリクエストのプログラム名「Ｕ０１ＰＲ０２」は、優先度低下プログラムＤＢ１３３に登録されているので、バッチリクエスト受付部１４０は、優先度低下に関するアラームメッセージをユーザに通知する。
【００７３】
また、スケジューリング部１５０は、実行待ち行列ＤＢ１４５に格納されたバッチリクエストのプログラムの優先度をプログラム優先度ＤＢ１３６を参照して取得し、取得した優先度に基づいて、計算機資源を割り当てるプログラムを決定する。
【００７４】
この例では、実行待ち行列ＤＢ１４５にバッチリクエストＡ、バッチリクエストＢおよびバッチリクエストＣがあり、それぞれの優先度は「５０」、「５０」、「１００」であるので、バッチリクエストＣを計算機資源を割り当てるプログラムとする。なお、この例では、優先度「５０」が優先度「低」を表し、優先度「１００」が優先度「高」を表す。
【００７５】
上述してきたように、本実施例では、性能集計部１１０がジョブ課金情報を用いて各プログラムの性能指標を集計してプログラム性能情報としてプログラム性能ＤＢ１１５に格納し、基準値調整部１２０が各プログラムのプログラム性能情報に基づいて優先度を「高」とするプログラムの数が一定になるように基準値の調整を行い、優先度更新部１３０が、プログラム性能情報と基準値に基づいてプログラムの優先度を更新することとしたので、並列計算機を有効利用する度合に基づいてプログラムの優先度を決定することができる。
【００７６】
また、本実施例では、優先度更新部１３０が、優先度が低下したプログラムの情報を優先度低下プログラムＤＢ１３３に格納し、バッチリクエスト受付部１４０がバッチリクエストをユーザから受け付けた際に優先度低下プログラムＤＢ１３３と照合し、照合がとれた場合には、ユーザに優先度の低下を通知することとしたので、ユーザに優先度の低下を認識させ、プログラムの改善を促すことができる。
【００７７】
なお、本実施例では、バッチスケジューリング装置について説明したが、バッチスケジューリング装置が有する構成をソフトウェアによって実現することで、同様の機能を有するバッチスケジューリングプログラムを得ることができる。そこで、このバッチスケジューリングプログラムを実行するコンピュータについて説明する。
【００７８】
図１７は、本実施例に係るバッチスケジューリングプログラムを実行するコンピュータの構成を示す機能ブロック図である。同図に示すように、このコンピュータ２００は、ＲＡＭ２１０と、ＣＰＵ２２０と、ＨＤＤ２３０と、ＬＡＮインタフェース２４０と、入出力インタフェース２５０と、ＤＶＤドライブ２６０と、並列計算機インタフェース２７０とを有する。
【００７９】
ＲＡＭ２１０は、バッチスケジューリングプログラム２１１やその実行途中結果などを記憶するメモリであり、ＣＰＵ２２０は、ＲＡＭ２１０からバッチスケジューリングプログラム２１１を読み出して実行する中央処理装置である。
【００８０】
ＨＤＤ２３０は、バッチスケジューリングプログラム２１１やデータを格納するディスク装置であり、ＬＡＮインタフェース２４０は、コンピュータ２００をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。
【００８１】
入出力インタフェース２５０は、マウスやキーボードなどの入力装置および表示装置を接続するためのインタフェースであり、ＤＶＤドライブ２６０は、ＤＶＤの読み書きを行う装置である。並列計算機インタフェース２７０は、並列計算機と通信するためのインタフェースである。
【００８２】
そして、このコンピュータ２００において実行されるバッチスケジューリングプログラム２１１は、ＤＶＤに記憶され、ＤＶＤドライブ２６０によってＤＶＤから読み出されてコンピュータ２００にインストールされる。
【００８３】
あるいは、このバッチスケジューリングプログラム２１１は、ＬＡＮインタフェース２４０を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ２００にインストールされる。
【００８４】
そして、インストールされたバッチスケジューリングプログラム２１１は、ＨＤＤ２３０に記憶され、ＲＡＭ２１０に読み出されてＣＰＵ２２０によってバッチスケジューリングプロセス２２１として実行される。
【００８５】
（付記１）並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリングプログラムであって、
前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定手順と、
前記優先度決定手順により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング手順と、
をコンピュータに実行させることを特徴とするバッチスケジューリングプログラム。
【００８６】
（付記２）前記優先度決定手順は、所定の頻度で優先度の決定を行い、
前記優先度決定手順により決定された優先度が前回決定された優先度から低下したか否かを判定する優先度低下判定手順と、
前記優先度低下判定手順により優先度が低下したと判定された並列プログラムをバッチジョブとして投入した利用者に優先度低下を通知する優先度低下通知手順と、
をさらにコンピュータに実行させることを特徴とする付記１に記載のバッチスケジューリングプログラム。
【００８７】
（付記３）前記優先度低下通知手順は、前記優先度低下判定手順により優先度が低下したと判定された並列プログラムをバッチジョブとして投入した際に、利用者に優先度低下を通知することを特徴とする付記２に記載のバッチスケジューリングプログラム。
【００８８】
（付記４）前記優先度決定手順は、並列化効率、キャッシュミス率および浮動小数点演算性能を前記指標とすることを特徴とする付記１、２または３に記載のバッチスケジューリングプログラム。
【００８９】
（付記５）前記優先度決定手順が優先度の決定に用いる指標の値をジョブ課金情報から算出する指標値算出手順をさらにコンピュータに実行させることを特徴とする付記１〜４のいずれか一つに記載のバッチスケジューリングプログラム。
【００９０】
（付記６）前記優先度決定手順は、所定の数の並列プログラムの優先度を高優先度と決定し、他の並列プログラムの優先度を低優先度と決定することを特徴とする付記１〜５のいずれか一つに記載のバッチスケジューリングプログラム。
【００９１】
（付記７）前記優先度決定手順は、所定の数の並列プログラムが前記並列化効率、キャッシュミス率および浮動小数点演算性能の全てにおいてそれぞれの基準値を達成するように該それぞれの基準値を決定するとともに該所定の数の並列プログラムの優先度を高優先度と決定することを特徴とする付記６に記載のバッチスケジューリングプログラム。
【００９２】
（付記８）並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリング方法であって、
前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定工程と、
前記優先度決定工程により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング工程と、
を含んだことを特徴とするバッチスケジューリング方法。
【００９３】
（付記９）並列計算機でバッチジョブとして実行される並列プログラムのスケジューリングを行うバッチスケジューリング装置であって、
前記並列プログラムの優先度を該並列プログラムが並列計算機を効率的に利用している度合を示す指標に基づいて決定する優先度決定手段と、
前記優先度決定手段により決定された優先度に基づいて前記並列プログラムのスケジューリングを行うスケジューリング手段と、
を備えたことを特徴とするバッチスケジューリング装置。
【産業上の利用可能性】
【００９４】
以上のように、本発明に係るバッチスケジューリングプログラム、バッチスケジューリング方法およびバッチスケジューリング装置は、並列計算機のバッチジョブのスケジューリングに有用であり、特に、並列計算機を有効利用するプログラムの作成を利用者に動機付けることによって並列計算機の利用効率を改善する場合に適している。
【図面の簡単な説明】
【００９５】
【図１】本実施例に係るバッチスケジューリング装置の構成を示す機能ブロック図である。
【図２】ジョブ課金情報ＤＢがジョブ毎に記憶するジョブ課金情報を示す図である。
【図３】性能集計部が性能指標として算出する並列化効率の定義を浮動小数点演算性能およびキャッシュミス率の定義とともに示す図である。
【図４】プログラム性能ＤＢがプログラム毎に記憶するプログラム性能情報を示す図である。
【図５】性能集計部によるジョブ課金情報からプログラム性能情報の算出処理を説明するための説明図である。
【図６】基準値調整部による基準値調整処理を説明するための説明図である。
【図７】基準達成プログラムＤＢが基準達成プログラム毎に記憶するプログラム情報を示す図である。
【図８】センタ基準値ＤＢが日毎に記憶する基準値情報を示す図である。
【図９】優先度の更新による基準値の底上げを説明するための説明図である。
【図１０】優先度低下プログラムＤＢが優先度低下プログラム毎に記憶するプログラム情報を示す図である。
【図１１】プログラム優先度ＤＢがプログラム毎に記憶する優先度情報を示す図である。
【図１２】本実施例に係るバッチスケジューリング装置による優先度決定処理の処理手順を示すフローチャートである。
【図１３】性能集計部による性能集計処理の処理手順を示すフローチャートである。
【図１４】基準値調整部による基準値調整処理の処理手順を示すフローチャートである。
【図１５】優先度更新部による優先度更新処理の処理手順を示すフローチャートである。
【図１６】本実施例に係るバッチスケジューリング装置によるバッチリクエストスケジューリング例を示す図である。
【図１７】本実施例に係るバッチスケジューリングプログラムを実行するコンピュータの構成を示す機能ブロック図である。
【図１８】並列計算機システムのバッチジョブスケジューリングを説明するための説明図である。
【符号の説明】
【００９６】
１０    ジョブ課金情報ＤＢ
１００    バッチスケジューリング装置
１１０    性能集計部
１１５    プログラム性能ＤＢ
１２０    基準値調整部
１２３    基準達成プログラムＤＢ
１２６    センタ基準値ＤＢ
１３０    優先度更新部
１３３    優先度低下プログラムＤＢ
１３６    プログラム優先度ＤＢ
１４０    バッチリクエスト受付部
１４５    実行待ち行列ＤＢ
１５０    スケジューリング部
２００    コンピュータ
２１０    ＲＡＭ
２１１    バッチスケジューリングプログラム
２２０    ＣＰＵ
２２１    バッチスケジューリングプロセス
２３０    ＨＤＤ
２４０    ＬＡＮインタフェース
２５０    入出力インタフェース
２６０    ＤＶＤドライブ
２７０    並列計算機インタフェース
３００    バッチスケジューラ
【図１】
2006309586.tif 000003
【図２】
2006309586.tif 000004
【図３】
2006309586.tif 000005
【図４】
2006309586.tif 000006
【図５】
2006309586.tif 000007
【図６】
2006309586.tif 000008
【図７】
2006309586.tif 000009
【図８】
2006309586.tif 000010
【図９】
2006309586.tif 000011
【図１０】
2006309586.tif 000012
【図１１】
2006309586.tif 000013
【図１２】
2006309586.tif 000014
【図１３】
2006309586.tif 000015
【図１４】
2006309586.tif 000016
【図１５】
2006309586.tif 000017
【図１６】
2006309586.tif 000018
【図１７】
2006309586.tif 000019
【図１８】
2006309586.tif 000020