(57)【要約】【課題】ジョブで使用されるリソースの制限値を状況に応じて動的に変化させて、最適値とし得る、ジョブ管理装置、ジョブ管理方法、及びプログラムを提供する。【解決手段】ジョブ管理装置１０は、バッチ処理におけるジョブを管理するための装置である。ジョブ管理装置１０は、実行対象となるジョブの入力データ量を確認する、入力データ量確認部１２と、確認された入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となるジョブのリソース使用量を予測する、リソース使用量予測部１４と、予測されたリソース使用量に基づいて、実行対象となるジョブで使用されるリソースの制限値を設定する、ジョブ実行制御部１１と、を備えている。【選択図】図１
2014191360.tif 000002
【特許請求の範囲】
【請求項１】
バッチ処理におけるジョブを管理するためのジョブ管理装置であって、
実行対象となるジョブの入力データ量を確認する、入力データ量確認部と、
確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、リソース使用量予測部と、
予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ジョブ実行制御部と、
を備えている、
ことを特徴とするジョブ管理装置。
【請求項２】
実行対象となる前記ジョブが実行された場合に、前記ジョブの実行中のリソース使用量を確認する、リソース使用量確認部と、
前記入力データ量確認部によって確認された前記ジョブの入力データ量と、前記リソース使用量確認部によって確認された前記リソース使用量とを、格納する格納部と、
を更に備え、
前記リソース使用量予測部が、前記格納部に格納されている、前記入力データ量と前記リソース使用量とを用いて、前記関係を求め、求めた前記関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、
請求項１に記載のジョブ管理装置。
【請求項３】
前記リソース使用量予測部が、リソースの種類毎に、前記リソース使用量を予測し、
前記ジョブ実行制御部が、リソースの種類毎に、実行対象となる前記ジョブの制限値を設定する、
請求項１または２に記載のジョブ管理装置。
【請求項４】
前記ジョブ実行制御部が、予測された前記リソース使用量に安全率を適用して、実行対象となる前記ジョブの制限値を設定する、
請求項１〜３のいずれかに記載のジョブ管理装置。
【請求項５】
実行対象となる前記ジョブ毎に、前記入力データ量を確認するための手段と、前記リソース使用量を確認するための手段とが、予め定義されており、
前記入力データ量確認部が、予め定義された、前記入力データ量を確認するための手段を用いて、前記入力データ量を確認し、
前記リソース使用量確認部が、予め定義された、前記リソース使用量を確認するための手段を用いて、前記リソース使用量を確認する、
請求項２に記載のジョブ管理装置。
【請求項６】
バッチ処理におけるジョブを管理するための方法であって、
（ａ）実行対象となるジョブの入力データ量を確認する、ステップと、
（ｂ）確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、ステップと、
（ｃ）予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ステップと、
を有することを特徴とするジョブ管理方法。
【請求項７】
コンピュータによって、バッチ処理におけるジョブを管理するためのプログラムであって、
前記コンピュータに、
（ａ）実行対象となるジョブの入力データ量を確認する、ステップと、
（ｂ）確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、ステップと、
（ｃ）予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッチ処理におけるジョブの管理を行なうための、ジョブ管理装置、ジョブ管理方法、及びこれらを実現するためのプログラムに関する。
【背景技術】
【０００２】
一般に、バッチ処理を実行するコンピュータシステムにおいては、バッチジョブの管理のため、ジョブ管理製品と呼ばれるプログラム群が導入される。このプログラム群は、各バッチジョブに目的に応じて前後関係を設定して、フロー状のジョブネットワークを定義し、定義したジョブネットワークに沿って、バッチジョブを自動的に処理していく。
【０００３】
また、バッチ処理を実行するコンピュータシステムは、一般に、マネージャと呼ばれる管理サーバと、エージェントと呼ばれるサーバとで構成されている（例えば、特許文献１参照。）。このコンピュータシステムでは、マネージャによって、ジョブの定義情報の管理、ジョブネットワークのフロー制御、エージェントへのジョブの転送等が行なわれ、エージェントによって、実際のジョブの実行が行なわれる。
【０００４】
また、ジョブは、業務等といったある１つの目的のために定義された処理手続きであり、シェルスクリプト（UNIX（登録商標））、又はバッチスクリプト（Windows（登録商標））によって記述される。そして、ジョブが実行される場合、ジョブはコンピュータ上の様々なリソースを使用する。この場合のリソースとしては、ＣＰＵ（Central Processing Unit）使用率、メモリ使用量、ディスク使用量、ネットワーク使用量等、コンピュータ上の共有資源が挙げられる。
【０００５】
ところで、ジョブに対してリソースの使用を無制限に認めることとすると、システムに障害が発生してしまうため、通常、リソースの使用には制限が設けられている。現在、広く一般に行われているジョブのリソースの使用制限の方法としては、事前にそのジョブに対して、利用可能なリソースの制限値を設定しておくという方法が挙げられる（特許文献２）。
【０００６】
例えば、リソースの制限値は、予め、ＣＰＵ使用時間であれば「〜００:０５:００まで」、メモリ使用量であれば「〜３０ＭＢまで」といったように、ジョブ毎に、各ジョブが使用するリソースそれぞれについて設定される。そして、制限値を超過した場合には警告が出力されたり、場合によってはジョブが強制終了されたり、といったことが行なわれる。
【０００７】
但し、実行するジョブの処理量によって必要となるリソースの量は変動する可能性があるので、予め、必要となるリソースの最大値が見積もられ、更に安全率が考慮されて、実際の制限値よりもある程度大きい制限値が設定されるのが一般的である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１-２３３０８６号公報
【特許文献２】特開２００４-５３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、このように余裕を持たせて制限値が設定されると、本来、処理量が少ないにも関わらず大きなリソースを消費しているというような状況を検知することができず、結果として無駄なリソース消費が継続的に許されてしまう可能性がある。例えば、ファイルのバックアップ等、ジョブへの入力データ量に応じて必要となるＣＰＵ処理時間が比例するジョブがあったとする。この場合に、余裕を持たせて制限値が設定されていると、「入力データ量が少ないにも関わらず、ＣＰＵ処理時間が多い」という状況が発生しても、これを検知することは不可能となる。
【００１０】
逆に、対象ジョブの平均的なリソース使用量に少しだけ余裕を持たせた程度に、制限値が設定されているとする。そうすると、たまたま実行した日に限り、入力データ量が多く、それに応じて処理量も多くなって、その制限値を超過してしまった場合であっても、前述の警告及び強制終了が行なわれてしまう。
【００１１】
本発明の目的の一例は、上記問題を解消し、ジョブで使用されるリソースの制限値を状況に応じて動的に変化させて、最適値とし得る、ジョブ管理装置、ジョブ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明の一側面におけるジョブ管理装置は、バッチ処理におけるジョブを管理するためのジョブ管理装置であって、
実行対象となるジョブの入力データ量を確認する、入力データ量確認部と、
確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、リソース使用量予測部と、
予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ジョブ実行制御部と、
を備えている、ことを特徴とする。
【００１３】
また、上記目的を達成するため、本発明の一側面におけるジョブ管理方法は、バッチ処理におけるジョブを管理するための方法であって、
（ａ）実行対象となるジョブの入力データ量を確認する、ステップと、
（ｂ）確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、ステップと、
（ｃ）予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ステップと、
を有することを特徴とする。
【００１４】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって、バッチ処理におけるジョブを管理するためのプログラムであって、
前記コンピュータに、
（ａ）実行対象となるジョブの入力データ量を確認する、ステップと、
（ｂ）確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、ステップと、
（ｃ）予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１５】
以上のように本発明によれば、ジョブで使用されるリソースの制限値を、状況に応じて動的に変化させて最適値とすることができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明の実施の形態におけるジョブ管理装置の全体構成を概略的に示す図である。
【図２】図２は、本発明の実施の形態におけるジョブ管理装置の全体構成を具体的に示すブロック図である。
【図３】図３は、本発明の実施の形態において、ジョブ定義格納データベースに登録されているジョブの定義情報の一例を示す図である。
【図４】図４は、本発明の実施の形態において、ジョブ実行結果データベースに登録されている実績値の一例を示す図である。
【図５】図５は、本発明の実施の形態におけるジョブ管理装置のジョブ起動時における動作を示すフロー図である。
【図６】図６は、本発明の実施の形態におけるジョブ管理装置のジョブ実行中における動作を示すフロー図である。
【図７】図７は、ジョブの定義情報の具体例を示す図である。
【図８】図８は、ジョブ実行結果格納データベースに登録されている実績値の具体例を示す図である。
【図９】図９は、入力データ量とＣＰＵ使用時間との依存関係の一例を示す図である。
【図１０】図１０は、入力データ量とメモリ使用量との依存関係の一例を示す図である。
【図１１】図１１は、本発明の実施の形態におけるジョブ管理装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【００１７】
（発明の概要）
本発明は、上述したリソースの制限を静的に設定したことにより発生する問題を解決するため、ジョブ実行時のリソース制限を動的に変動させる仕組みを提供する。本発明は、以下の特徴を有している。
【００１８】
まず、本発明では、実行対象となるジョブの入力データ量が、ジョブの実行直前に確認される。また、入力データ量の種類は、ジョブの処理内容に応じて異なっている。例えば、ジョブがファイル転送の場合であれば、入力データ量としては「ファイルサイズ」が挙げられる。また、ジョブがバックアップ処理であれば、入力データ量としては「バックアップするファイル及びディスクのサイズ」が挙げられる。更に、ジョブがデータベース（以下「ＤＢ」と表記する。）の更新処理であれば、入力データ量としては、「表又はレコードの件数」が挙げられる。
【００１９】
また、本発明では、今回、実行対象となるジョブの入力データ量が判明すると、過去実績としてのジョブの入力データ量とそのときのリソース使用量とに基づいて、実行前に、実行対象となるジョブのリソース使用量が予測される。
【００２０】
基本的に全く同じ処理が行なわれるのであれば、リソース使用量及び処理時間は変動しないはずである。変動するのは、処理量が違うためであり、即ち、扱うデータ量が異なるため、言い換えると、入力データ量が異なるためである。従って、本発明では、過去実績として蓄積された入力データ量とリソース使用量との依存関係から、今回の入力データ量に基づいて、実行対象となるジョブのリソース使用量が予測される。
【００２１】
また、この依存関係は、リソースの種類ごとに作成されるのが好ましく、この場合、リソースの種類毎に、リソース使用量が予測される。なお、入力データ量に対して、対象リソースに依存性がなく、リソース使用量が変動しない場合であっても良い。この場合は、そのリソースについてのリソース使用量は固定値とされる。
【００２２】
そして、本発明では、実行対象となるジョブで使用されるリソースの制限値は、このリソース使用量の予測値から、ある程度の安全率が考慮されて設定される。更に、制限値は、ジョブの実行ごとに変更されても良く、例えば、対象ジョブのリソース使用量が少なくて済むと推測される場合には、制限値は低く設定されることになる。一方、リソース使用量が多くなると推測される場合には、制限値は高く設定されることになる。
【００２３】
また、本発明におけるジョブ管理装置は、個々のジョブの実行及び制御を直接行なうことができる。このため、ジョブ管理装置は、ジョブの実行状況、データ量、リソース使用量を適切に把握でき、これらの情報を基に、制限値を推測する。この結果、精度の高い制限値設定制御が実行されることになる。
【００２４】
更に、本発明では、ジョブのリソース使用量を監視することもできる。具体的には、ジョブ管理装置は、ジョブの実行時に、各リソースに応じた手段を用いて、実行中のジョブのリソース使用量を監視して、その実績値を蓄積することができる。この場合は、実績値は、最初に述べた入力データ量とセットで記録され、依存関係を求める場合に利用される。
【００２５】
（実施の形態）
以下、本発明の実施の形態における、ジョブ管理装置、ジョブ管理方法、及びプログラムについて、図１〜図１１を参照しながら説明する。
【００２６】
［装置構成］
最初に、本発明の実施の形態におけるジョブ管理装置の全体構成について図１を用いて説明する。図１は、本発明の実施の形態におけるジョブ管理装置の全体構成を概略的に示す図である。
【００２７】
図１に示す、本実施の形態におけるジョブ管理装置１０は、バッチ処理におけるジョブを管理するための装置である。図１に示すように、本実施の形態では、ジョブ管理装置１０は、ネットワーク４０を介して、ジョブを実行するサーバ（以下「ジョブ実行サーバ」と表記する。）３０に接続されている。
【００２８】
また、図１に示すように、ジョブ管理装置１０は、入力データ量確認部１２と、リソース使用量予測部１４と、ジョブ実行制御部１１とを備えている。このうち、入力データ量確認部１２は、実行対象となるジョブの入力データ量を確認する。
【００２９】
また、リソース使用量予測部１４は、入力データ量確認部１２で確認された入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との依存関係を用いて、実行対象となるジョブのリソース使用量を予測する。そして、ジョブ実行制御部１１は、予測されたリソース使用量に基づいて、実行対象となるジョブ毎に、各ジョブで使用されるリソースについて、その制限値を設定する。
【００３０】
このように、本実施の形態では、実行されるジョブ毎に、ジョブで使用されるリソースの制限値が、入力データ量と過去の実績とに基づいて設定されており、リソースの制限値は、状況に応じて動的に変化し、最適値となる。
【００３１】
続いて、図２〜図４を用いて、本実施の形態におけるジョブ管理装置の構成について更に具体的に説明する。図２は、本発明の実施の形態におけるジョブ管理装置の全体構成を具体的に示すブロック図である。
【００３２】
図２に示すように、本実施の形態におけるジョブ管理装置１０は、上述した、ジョブ実行制御部１１、入力データ量確認部１２、及びリソース使用量予測部１４に加えて、リソース使用量確認部１３と、格納部２０とを備えている。格納部２０には、ジョブ定義格納ＤＢ２１と、ジョブ実行結果ＤＢ２２とが構築されている。
【００３３】
ジョブ実行制御部１１は、本実施の形態では、ジョブ定義格納ＤＢ２１からジョブの定義情報を読み出し、ジョブ実行サーバ３０におけるジョブの実行を制御する。具体的には、ジョブ実行制御部１１は、ジョブの定義に応じてジョブ実行サーバ３０のオペレーティングシステム３１に、ジョブプロセスの起動及び停止を命令する。
【００３４】
また、ジョブ実行制御部１１は、入力データ量確認部１２、リソース使用量確認部１３、及びリソース使用量予測部１４それぞれに処理要求を行う。そして、ジョブ実行制御部１１は、これらで得られたデータに基づいて、上述したリソースの制限値の設定、更には、ジョブのリソース制限による制御、例えば、ジョブの保留、ジョブの強制停止等を実施する。
【００３５】
入力データ量確認部１２は、上述したように、ジョブ実行制御部１１から指定された実行対象となるジョブの入力データ量の確認を行い、その結果を、ジョブ実行制御部１１に返却する。また、リソース使用量確認部１３は、ジョブ実行制御部１１から指定されたジョブの実行中のリソース使用量を確認し、その結果を、ジョブ実行制御部１１に返却する。
【００３６】
また、ジョブ実行制御部１１は、入力データ量確認部１２から返却された入力データ量と、リソース使用量確認部１３から返却されたリソース使用量とを、受け取り、これらをジョブ実行結果格納ＤＢ２２に登録する。
【００３７】
リソース使用量予測部１４は、本実施の形態では、ジョブ実行制御部１１から指定された実行対象となるジョブについての、過去の入力データ量とリソース使用量とを、ジョブ実行結果格納ＤＢ２２から参照する。そして、リソース使用量予測部１４は、そのジョブが使用する各リソースの入力データ量に対する依存関係を計算する。その後、リソース使用量予測部１４は、計算した依存関係を用いて、これから実行するジョブの入力データ量に対するリソース使用量（以下「予測リソース使用量」と表記する。）を計算して、その結果を、ジョブ実行制御部１１に返却する。
【００３８】
ジョブ定義格納ＤＢ２１には、ジョブ毎に、定義情報が登録されている。定義情報には、一般的なジョブの情報、例えば、スクリプトデータ、起動時を示すパラメータ等の情報が含まれている。また、本実施の形態では、定義情報には、図３に示す情報も含まれる。図３に示すように、ジョブ定義格納ＤＢ２１には、ジョブ毎に、入力データ量の確認手段とリソース使用量の確認手段とが定義情報として登録されている。
【００３９】
図３は、本発明の実施の形態において、ジョブ定義格納データベースに登録されているジョブの定義情報の一例を示す図である。図３に示すように、ジョブ定義格納ＤＢ２１には、実行対象となるジョブ毎に、入力データの種別と、対象ジョブの入力データ量の確認手段とが定義情報として登録されている。入力データ量の確認手段は、ジョブの用途及び扱うデータによって異なるため、ジョブの定義を作成する際に、ユーザによって入力される。
【００４０】
また、図３に示すように、ジョブ定義格納ＤＢ２１には、実行対象となるジョブ毎に、使用されるリソースの種別と、リソース使用量の確認手段とが登録されている。リソース使用量の確認手段も、ジョブによって異なるため、ジョブの定義を作成する際に、ユーザによって入力される。
【００４１】
また、ジョブ実行結果格納ＤＢ２２には、ジョブの実行結果についての一般的な情報、例えば、実行された時刻、終了ステータス等が登録されている。更に、図４に示すように、ジョブ実行結果格納ＤＢ２２には、ジョブ実行制御部１１によって、入力データ量確認部１２で確認されたジョブの入力データ量と、リソース使用量確認部１３で確認された各種リソース使用量（使用実績値）とが、ジョブの実行の度に実績値として登録される。図４は、本発明の実施の形態において、ジョブ実行結果データベースに登録されている実績値の一例を示す図である。
【００４２】
ところで、図１及び図２に示した例では、実際にジョブが実行される環境は、ジョブ管理装置１０とは別のサーバであるが、本実施の形態は、この態様に限定されない。ジョブ管理装置１０は、ジョブを実行するサーバのオペレーティングシステム上に構築されていても良い。
【００４３】
［装置動作］
次に、本発明の実施の形態におけるジョブ管理装置１０の動作について図５及び図６を用いて説明する。また、以下の説明においては、適宜図１〜図４を参酌する。更に、本実施の形態では、ジョブ管理装置１０を動作させることによって、ジョブ管理方法が実施される。よって、本実施の形態におけるジョブ管理方法の説明は、以下のジョブ管理装置１０装置の動作説明に代える。
【００４４】
また、本実施の形態における特徴は、ジョブの起動時に入力データ量からリソース使用量を見積もってリソースの制限値を動的に決定する点、及び、ジョブの実行中にリソース使用量を監視して値を蓄積する点にある。従って、以下では、これら２つの処理について説明する。
【００４５】
なお、リソース制限値を超えた場合に警告を出力したり、ジョブを強制停止したりすることは、既に公知の技術として行われている仕組みであり、本実施の形態では、説明を省略することとする。また、入力データ量とリソース使用量との依存関係の計算は、十分な量の過去実績としてのデータ量があれば、その依存関係曲線へのフィッティング等により関係式を算出する一般的な技術を用いることで実行できる。従って、依存関係の計算方法の説明についても省略することとする。また、本実施の形態では、前提として、実行対象となるジョブの過去の実績値は、既に十分に蓄積されているものとする。
【００４６】
［装置動作：ジョブ起動時］
図５は、本発明の実施の形態におけるジョブ管理装置のジョブ起動時における動作を示すフロー図である。
【００４７】
まず、ジョブの投入要求が発生すると、図５に示すように、ジョブ実行制御部１１が、ジョブ定義格納ＤＢ２１から、実行対象となるジョブ（以下「対象ジョブ」と表記する。）の定義情報（図３参照）を読み出す（ステップＡ１）。続いて、ジョブ実行制御部１１は、入力データ量確認部１２に対して、登録されている対象ジョブの入力データ量確認手段（定義情報）を通知して、入力データ量の確認依頼を行う（ステップＡ２）。
【００４８】
次に、ステップＡ２が実行されると、入力データ量確認部１２は、通知された入力データ量確認手段を実行し、対象ジョブの入力データ量を確認し（ステップＡ３）、その結果をジョブ実行制御部１１に返却する。
【００４９】
次に、ジョブ実行制御部１１は、ジョブ名とステップＡ３で得られた入力データ量とをリソース使用量予測部１４に通知し、今回実行する際のリソース使用量の予測を依頼する（ステップＡ４）。
【００５０】
なお、ステップＡ４で利用されるジョブ名は、ジョブ実行結果格納ＤＢ２２からデータを参照する際に、一意なデータの取得に用いられる、キーとなる情報である。従って、参照するデータを一意に識別できる情報であれば、ジョブ名以外の情報が用いられても良い。
【００５１】
次に、ステップＡ４が実行されると、リソース使用量予測部１４は、ジョブ実行結果格納ＤＢ２２にアクセスし、ジョブ実行制御部１１から通知されたジョブ名に一致する情報を参照する（ステップＡ５）。
【００５２】
次に、リソース使用量予測部１４は、ジョブ名が一致した、入力データ量と各リソースのリソース使用量との依存関係を計算する（ステップＡ６）。
【００５３】
また、本実施の形態では、対象ジョブの実行直前にジョブ実行制御部１１からの依頼を受けてから、依存関係の計算が実行されなくても良い。つまり、依存関係の計算に必要なデータは、事前に格納部２０に格納されているので、本実施の形態では、ステップＡ６の計算処理は、非同期に別のタイミングで実施されていても良い。この場合は、計算された依存関係は、各ジョブのリソース毎に、ジョブ実行結果格納ＤＢ２２に一緒に登録されているものとする。また、この場合は、ステップＡ６では、既に登録されている依存関係の参照だけが行なわれることとなる。
【００５４】
次に、リソース使用量予測部１４は、ステップＡ６で得られた依存関係に、ステップＡ５で通知された対象ジョブの入力データ量を照合して、今回の対象ジョブについてのリソース使用量の予測値を計算する（ステップＡ７）。そして、リソース使用量予測部１４は、その結果をジョブ実行制御部１１に返却する。
【００５５】
次に、ジョブ実行制御部１１は、返却された対象ジョブの各リソースに対するリソース使用量の予測値を制限値として設定し、ジョブの起動をジョブ実行サーバ３０に指示する(ステップＡ８)。以上のステップＡ１〜Ａ８の実行により、対象ジョブのリソースの制限値が設定され、更に、ジョブ実行サーバ３０において対象ジョブが起動される。
【００５６】
なお、本実施の形態では、ステップＡ８において制限値を設定する際、ステップＡ７で得られた予測値をそのまま利用すると、少しでも外れた場合に制限値を超過してしまうことになる。このため、ジョブ実行制御部１１は、ある程度の安全率を考慮して予測値を設定することもできる。
【００５７】
［装置動作：ジョブ実行中］
図６は、本発明の実施の形態におけるジョブ管理装置のジョブ実行中における動作を示すフロー図である。
【００５８】
図６に示すように、ジョブ実行制御部１１は、ジョブを起動した後、リソース使用量確認部１３に対して、対象ジョブのリソース使用量の確認を依頼する（ステップＢ１）。具体的には、ジョブ実行制御部１１は、リソース使用量確認部１３は、対象ジョブのプロセスを一意に識別可能な値と、ジョブ定義格納ＤＢ２１に登録されている対象ジョブのリソース確認手段とを、リソース使用量確認部１３に通知する。
【００５９】
また、ステップＢ１における対象ジョブのプロセスを一意に識別可能な値としては、プロセスＩＤ等が挙げられ、これはジョブ起動時にジョブ実行サーバ３０から取得される。また、対象ジョブのリソース確認手段は、本実施の形態では、図５に示したステップＡ１で既に読出されている。
【００６０】
次に、リソース使用量確認部１３は、通知された、対象ジョブのプロセスを一意に識別可能な値をキーにして、通知された対象ジョブのリソース確認手段をジョブ実行サーバ３０に対して発行し、対象ジョブの各リソースの使用量を確認する（ステップＢ２）。なお、ステップＢ２におけるリソースの確認は、一定間隔毎に実行される。
【００６１】
次に、リソース使用量確認部１３は、リソース毎に、ステップＢ２で確認されたリソースの使用量の最大値を特定し、特定した最大値を、ジョブ実行結果格納ＤＢ２２に登録する（ステップＢ３）。ステップＢ３で登録された各最大値は、図５に示したステップＡ６での計算に利用される。
【００６２】
なお、リソースについては、大別すると、累積的な使用量（例：ＣＰＵ使用時間）、または、単位時間当たりの使用量（例：ＣＰＵ使用率）の２つが考えられる。しかし、本発明としては、監視時に記録されたその最大値を実績値として記録することでどちらにでも適用可能となる（つまり、ＣＰＵ使用時間であれば、ジョブ終了時点での値となり、ＣＰＵ使用率であれば、最大値を記録したタイミングの値となる）。
【００６３】
［具体例］
ここで、図７〜図１０を用いて、上述したジョブ管理装置１０の動作の具体例について説明する。図７は、ジョブの定義情報の具体例を示す図である。図８は、ジョブ実行結果格納データベースに登録されている実績値の具体例を示す図である。図９は、入力データ量とＣＰＵ使用時間との依存関係の一例を示す図である。図１０は、入力データ量とメモリ使用量との依存関係の一例を示す図である。
【００６４】
本具体例では、説明を簡単にするため、図７で示すような、１つのジョブとそのジョブが使用する２つのリソース（ＣＰＵ使用時間、メモリ使用量）とがジョブ定義格納ＤＢ２１に登録されているとし、このジョブを実行する例を考える。
【００６５】
また、本具体例では、このジョブの過去実績として図８に示す実績値がジョブ実行結果格納ＤＢ２２に登録されているとする。なお、図８の例は、後述する依存関係性を明確にするため、ＪＯＢ１（図７）の情報のみに着目して作成されている。また、このため、図８の表現は、図４の表現と異なっている。
【００６６】
更に、図７に示された例では、各確認手段として、一般的なLinux（登録商標）オペレーティングシステムに用意されている、コマンドによる確認手段が記載されているが、本実施の形態はこれに限定されない。
【００６７】
また、図８においては、値の単位は記載されていないが、これはそれぞれの値の依存関係だけが重要となり単位については、揃っていれば問わないためである。なお、図８の例では、ファイルサイズとメモリ使用量とについてはバイト、ＣＰＵ使用時間については秒が想定されている。
【００６８】
そして、図８に示すデータに基づく、ＪＯＢ１の入力データ量とＣＰＵ使用時間との依存関係は、図９に示す通りとなる。また、図８に示すデータに基づく、ＯＢ１の入力データ量とメモリ使用量との依存関係は、図１０に示す通りとなる。
【００６９】
従って、新しくＪＯＢ１を実行する場合、入力データ量が２,５００,０００であるとすると、リソース使用量予測部１４は、入力データ量の確認手段を用い、予測リソース使用量を、ＣＰＵ使用時間については「１,５１４」、メモリ使用量については「２,４８９,３４９」と計算する。
【００７０】
このように、今まで蓄積してきた過去実績よりも大きい入力データ量があった場合に、静的にリソースの制限値が設定されている場合には、その制限を超過してジョブの強制終了等が発生してしまう可能性がある。しかし、本具体例に示すように、本実施の形態では、上記の予測リソース使用量を利用して動的にリソース制限値が変更されるので、このような事態を防ぐことが可能となる。
【００７１】
また、ほぼ同様の例となるため具体的な数値を挙げて説明することはしないが、今まで蓄積してきた過去実績よりも小さい入力データがあった場合には、はるかに大きなリソース制限値を設定してしまうというデメリットを防ぐことができる。
【００７２】
［実施の形態における効果］
静的にリソース制限値を決定している場合、入力データ量が増加して使用するリソース量が増えた場合にジョブの打ち切りが発生してしまう可能性があるが、本実施の形態によれば、これを防ぐことができる。また、静的制限値にかなり余裕を持たせていた場合、その値が大きすぎてそもそも制限値としての意味を成していない、といったデメリットが発生するが、本実施の形態によれば、これを防止することもできる。
【００７３】
また、本実施の形態によれば、予測値を利用した事前抑止または保留を行なうことができる。つまり、本実施の形態によれば、ジョブを実行する直前にそのジョブの予測リソース使用量がわかるので、対象ジョブを実行したときのシステムへの影響を事前に察知でき、実行可能であれば実行させ、影響があれば保留または阻止を行なうことが可能となる。
【００７４】
また、本実施の形態によれば、最適スケジューリングへの指標を提示することができる。つまり、本実施の形態によれば、各ジョブのリソース使用量の上限値が事前に決定され、かつ、そこから大きくずれるようなことは基本的になくなる。このため、各ジョブをどのタイミングで実行すれば空きリソースを極力なくして、かつ、効率的に実行できるかという最適なジョブスケジューリングを行う上での指標を提示することができる。なお、本実施の形態では、空きがあれば実行可能という判断を行うとし、どの程度実行タイミングをずらせば良いかというような最適ジョブスケジューリングの方法については論じない。
【００７５】
［プログラム］
本実施の形態におけるプログラムは、コンピュータに、図５に示すステップＡ１〜Ａ８、図６に示すステップＢ１〜Ｂ３を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態におけるジョブ管理装置１０とジョブ管理方法とを実現することができる。この場合、コンピュータのＣＰＵは、ジョブ実行制御部１１、入力データ量確認部１２、ソース使用量確認部１３及びリソース使用量予測部１４として機能し、処理を行なう。また、コンピュータに備えられたハードディスク等の記憶装置は、格納部２０として機能する。
【００７６】
ここで、本実施の形態におけるプログラムを実行することによって、ジョブ管理装置１０を実現するコンピュータについて図１１を用いて説明する。図１１は、本発明の実施の形態におけるジョブ管理装置を実現するコンピュータの一例を示すブロック図である。
【００７７】
図１１に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００７８】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【００７９】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００８０】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００８１】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【００８２】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１５）によって表現することができるが、以下の記載に限定されるものではない。
【００８３】
（付記１）
バッチ処理におけるジョブを管理するためのジョブ管理装置であって、
実行対象となるジョブの入力データ量を確認する、入力データ量確認部と、
確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、リソース使用量予測部と、
予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ジョブ実行制御部と、
を備えている、
ことを特徴とするジョブ管理装置。
【００８４】
（付記２）
実行対象となる前記ジョブが実行された場合に、前記ジョブの実行中のリソース使用量を確認する、リソース使用量確認部と、
前記入力データ量確認部によって確認された前記ジョブの入力データ量と、前記リソース使用量確認部によって確認された前記リソース使用量とを、格納する格納部と、
を更に備え、
前記リソース使用量予測部が、前記格納部に格納されている、前記入力データ量と前記リソース使用量とを用いて、前記関係を求め、求めた前記関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、
付記１に記載のジョブ管理装置。
【００８５】
（付記３）
前記リソース使用量予測部が、リソースの種類毎に、前記リソース使用量を予測し、
前記ジョブ実行制御部が、リソースの種類毎に、実行対象となる前記ジョブの制限値を設定する、
付記１または２に記載のジョブ管理装置。
【００８６】
（付記４）
前記ジョブ実行制御部が、予測された前記リソース使用量に安全率を適用して、実行対象となる前記ジョブの制限値を設定する、
付記１〜３のいずれかに記載のジョブ管理装置。
【００８７】
（付記５）
実行対象となる前記ジョブ毎に、前記入力データ量を確認するための手段と、前記リソース使用量を確認するための手段とが、予め定義されており、
前記入力データ量確認部が、予め定義された、前記入力データ量を確認するための手段を用いて、前記入力データ量を確認し、
前記リソース使用量確認部が、予め定義された、前記リソース使用量を確認するための手段を用いて、前記リソース使用量を確認する、
付記２に記載のジョブ管理装置。
【００８８】
（付記６）
バッチ処理におけるジョブを管理するための方法であって、
（ａ）実行対象となるジョブの入力データ量を確認する、ステップと、
（ｂ）確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、ステップと、
（ｃ）予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ステップと、
を有することを特徴とするジョブ管理方法。
【００８９】
（付記７）
（ｄ）実行対象となる前記ジョブが実行された場合に、前記ジョブの実行中のリソース使用量を確認する、ステップと、
（ｅ）前記（ａ）のステップで確認された前記ジョブの入力データ量と、前記（ｄ）のステップで確認された前記リソース使用量とを、格納する、ステップと、
を更に備え、
前記（ｂ）のステップにおいて、前記（ｅ）のステップで格納されている、前記入力データ量と前記リソース使用量とを用いて、前記関係を求め、求めた前記関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、
付記６に記載のジョブ管理方法。
【００９０】
（付記８）
前記（ｂ）のステップで、リソースの種類毎に、前記リソース使用量を予測し、
前記（ｃ）のステップで、リソースの種類毎に、実行対象となる前記ジョブの制限値を設定する、
付記６または７に記載のジョブ管理方法。
【００９１】
（付記９）
前記（ｃ）のステップで、予測された前記リソース使用量に安全率を適用して、実行対象となる前記ジョブの制限値を設定する、
付記６〜８のいずれかに記載のジョブ管理方法。
【００９２】
（付記１０）
実行対象となる前記ジョブ毎に、前記入力データ量を確認するための手段と、前記リソース使用量を確認するための手段とが、予め定義されており、
前記（ａ）のステップで、予め定義された、前記入力データ量を確認するための手段を用いて、前記入力データ量を確認し、
前記（ｄ）のステップで、予め定義された、前記リソース使用量を確認するための手段を用いて、前記リソース使用量を確認する、
付記７に記載のジョブ管理方法。
【００９３】
（付記１１）
コンピュータによって、バッチ処理におけるジョブを管理するためのプログラムであって、
前記コンピュータに、
（ａ）実行対象となるジョブの入力データ量を確認する、ステップと、
（ｂ）確認された前記入力データ量、及び、既に実行されたジョブにおける入力データ量とリソース使用量との関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、ステップと、
（ｃ）予測された前記リソース使用量に基づいて、実行対象となる前記ジョブ毎に、当該ジョブで使用されるリソースの制限値を設定する、ステップと、
を実行させるプログラム。
【００９４】
（付記１２）
（ｄ）実行対象となる前記ジョブが実行された場合に、前記ジョブの実行中のリソース使用量を確認する、ステップと、
（ｅ）前記（ａ）のステップで確認された前記ジョブの入力データ量と、前記（ｄ）のステップで確認された前記リソース使用量とを、格納する、ステップと、
を更に前記コンピュータ実行させ、
前記（ｂ）のステップにおいて、前記（ｅ）のステップで格納されている、前記入力データ量と前記リソース使用量とを用いて、前記関係を求め、求めた前記関係を用いて、実行対象となる前記ジョブのリソース使用量を予測する、
付記１１に記載のプログラム。
【００９５】
（付記１３）
前記（ｂ）のステップで、リソースの種類毎に、前記リソース使用量を予測し、
前記（ｃ）のステップで、リソースの種類毎に、実行対象となる前記ジョブの制限値を設定する、
付記１１または１２に記載のプログラム。
【００９６】
（付記１４）
前記（ｃ）のステップで、予測された前記リソース使用量に安全率を適用して、実行対象となる前記ジョブの制限値を設定する、
付記１１〜１３のいずれかに記載のプログラム。
【００９７】
（付記１５）
実行対象となる前記ジョブ毎に、前記入力データ量を確認するための手段と、前記リソース使用量を確認するための手段とが、予め定義されており、
前記（ａ）のステップで、予め定義された、前記入力データ量を確認するための手段を用いて、前記入力データ量を確認し、
前記（ｄ）のステップで、予め定義された、前記リソース使用量を確認するための手段を用いて、前記リソース使用量を確認する、
付記１２に記載のプログラム。
【産業上の利用可能性】
【００９８】
以上のように本発明によれば、ジョブで使用されるリソースの制限値を、状況に応じて動的に変化させて最適値とすることができる。本発明は、バッチ処理等によってジョブを実行するコンピュータシステムに有用である。
【符号の説明】
【００９９】
１０  ジョブ管理装置
１１  ジョブ実行制御部
１２  入力データ量確認部
１３  リソース使用量確認部
１４  リソース使用量予測部
２０  格納部
３０  ジョブ実行サーバ
３１  オペレーティングシステム
４０  ネットワーク
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
2014191360.tif 000003
【図２】
2014191360.tif 000004
【図３】
2014191360.tif 000005
【図４】
2014191360.tif 000006
【図５】
2014191360.tif 000007
【図６】
2014191360.tif 000008
【図７】
2014191360.tif 000009
【図８】
2014191360.tif 000010
【図９】
2014191360.tif 000011
【図１０】
2014191360.tif 000012
【図１１】
2014191360.tif 000013