以下に添付図面を参照して、この発明にかかる予測プログラム、予測装置および予測方法の実施の形態を詳細に説明する。
(実施の形態1)
図1は、実施の形態1にかかる予測方法の一実施例を示す説明図である。図1において、予測装置100は、負荷情報DB(データベース)110にアクセス可能であり、処理対象となるジョブの処理時間を予測するコンピュータである。
ここで、ジョブとは、コンピュータが処理する仕事の単位である。具体的には、例えば、ジョブは、バッチ業務やオンライン業務を実現する一連のプログラム群のうちの一部または全部のプログラムである。
負荷情報DB110は、一定の時間幅で区切られた期間ごとに、処理対象となるジョブの投入先の計算機の負荷状態を表す負荷情報を記憶するデータベースである。一定の時間幅で区切られた期間とは、時間軸を任意に設定された時間幅で区切った各々の期間である。例えば、期間は、時間軸を日ごとに区切った各々の期間であってもよく、また、時間軸を週ごとに区切った各々の期間であってもよい。
計算機の負荷状態を表す負荷情報とは、例えば、時間の経過に伴って変化する計算機の負荷量を示す情報である。具体的には、例えば、負荷情報は、各期間における所定の時間間隔(例えば、1分、10分、1時間など)ごとの計算機の負荷量を表す情報である。計算機の負荷量として、例えば、計算機のCPU(Central Processing Unit)使用量やI/O(Input/Output)使用量などを用いることができる。
ここで、計算機の負荷状態は、実行中のプログラム数や各々のプログラムで処理されるデータ量により変化する。また、ジョブの処理時間は、同一の計算機で実行する場合であっても、該計算機の負荷状態に応じて変化する。例えば、投入先となる計算機で、処理対象となるジョブとは異なる他のプログラムを実行中の場合、他のプログラムを実行してない場合に比べてジョブの処理時間が長くなる傾向にある。
そこで、実施の形態1では、例えば、計算機の負荷傾向が、ジョブを実行する当日と似通っている日に実行されたジョブの実績処理時間をもとに、当日のジョブの予測処理時間を求めることで、日々変動する計算機の負荷状態を考慮したジョブの処理時間を予測する。すなわち、予測装置100が、過去に実行されたジョブの実績処理時間に基づいて、該ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における該実行を予定されたジョブの予測処理時間を算出する。
以下、予測装置100の予測処理の一例について説明する。ここでは、一定の時間幅で区切られた期間として、時間軸を日ごとに区切った各々の期間を例に挙げて説明する。また、処理対象となるジョブとして、毎週月曜日に実行されるジョブJを例に挙げて説明する。
図1において、時間を表す横軸と負荷量を表す縦軸とから直交座標系において、時間の経過に伴って変化する計算機の負荷量を表すグラフ101〜108が示されている。計算機は、処理対象となるジョブJの投入先となる計算機である。
ここで、グラフ101は、4月11日(月)の9時から12時までの計算機の負荷量の変動を表している。グラフ102は、4月18日(月)の9時から12時までの計算機の負荷量の変動を表している。グラフ103は、4月25日(月)の9時から12時までの計算機の負荷量の変動を表している。グラフ104は、5月2日(月)の9時から12時までの計算機の負荷量の変動を表している。
グラフ105は、5月9日(月)の9時から12時までの計算機の負荷量の変動を表している。グラフ106は、5月16日(月)の9時から12時までの計算機の負荷量の変動を表している。グラフ107は、5月23日(月)の9時から12時までの計算機の負荷量の変動を表している。グラフ108は、5月30日(月)の9時から12時までの計算機の負荷量の変動を表している。
ここでは、5月30日(月)の12時以降に、投入先の計算機でジョブJの実行を開始する場合のジョブJの予測処理時間を算出する場合を例に挙げて説明する。
(1)予測装置100は、負荷情報DB110の中から、処理対象となるジョブJを実行する当日の所定の時間帯における投入先の計算機の負荷情報を取得する。計算機の負荷情報は、例えば、計算機の負荷量の平均値(以下、「平均負荷量」という)である。ここでは、所定の時間帯を「9時〜12時の時間帯」とする。この場合、予測装置100は、例えば、負荷情報DB110の中から、5月30日(月)の9時〜12時の時間帯における計算機の平均負荷量を表す負荷情報を取得する。
(2)予測装置100は、計算機でジョブJが実行された過去の実行日の中から、9時〜12時の時間帯における計算機の負荷状態が当日の9時〜12時の時間帯における計算機の負荷状態と近似する実行日を特定する。
すなわち、予測装置100が、計算機でジョブJが実行された過去の期間の中から、ジョブJの実行を予定された期間における計算機の負荷状態と所定の類似関係にある期間を特定する。所定の類似関係にある期間とは、例えば、計算機でジョブJが実行された過去の期間のうち、計算機の負荷状態が、ジョブJの実行を予定された期間における計算機の負荷状態と近似する期間である。
具体的には、例えば、所定の類似関係にある期間は、計算機でジョブJが実行された過去の期間内の計算機の平均負荷量と、ジョブJの実行を予定された期間における計算機の平均負荷量と、についての差分が閾値以下となる期間であってもよい。また、例えば、所定の類似関係にある期間は、計算機でジョブJが実行された過去の期間内の計算機の平均負荷量と、ジョブJの実行を予定された期間における計算機の平均負荷量と、についての差分が小さい上位複数個の期間であってもよい。
図1の例では、計算機でジョブJが実行された過去の実行日は、4月11日(月)、4月18日(月)、4月25日(月)、5月2日(月)、5月9日(月)、5月16日(月)および5月23日(月)である。
具体的には、例えば、予測装置100は、上記実行日の中から、5月30日(月)の9時〜12時の時間帯における計算機の平均負荷量と、過去の実行日の9時〜12時の時間帯における計算機の平均負荷量との差分が閾値以下となる実行日を特定する。
なお、当日の9時〜12時の時間帯における計算機の平均負荷量は、例えば、当日の9時〜12時の時間帯における計算機の負荷情報から特定される。また、過去の実行日の9時〜12時の時間帯における計算機の平均負荷量は、過去の実行日の9時〜12時の時間帯における計算機の負荷情報から特定される。
これにより、「9時〜12時の時間帯」における計算機の負荷状態が当日と近似する過去の実行日を特定することができる。図1の例では、「9時〜12時の時間帯」における計算機の負荷状態が当日「5月30日(月)」と近似する実行日として、4月11(月)と5月2日(月)と5月16日(月)が特定されている。
(3)予測装置100は、特定した実行日に実行されたジョブJの処理時間に基づいて、投入先の計算機で当日に実行されるジョブJの予測処理時間を算出する。ここで、処理時間とは、例えば、ジョブJを起動してからジョブJの実行が完了するまでにかかる実行時間である。
具体的には、例えば、予測装置100は、特定した実行日に実行されたジョブJの処理時間の平均値を算出することにより、投入先の計算機で当日の12時以降に実行されるジョブJの予測処理時間を算出する。なお、特定した実行日に実行されたジョブJの処理時間は、例えば、ジョブJの投入先の計算機から取得される。
一例として、4月11日(月)に実行されたジョブJの処理時間を「20分」、5月2日(月)に実行されたジョブJの処理時間を「15分」、5月16日(月)に実行されたジョブJの処理時間を「25分」とする。この場合、ジョブJの予測処理時間は「20分」となる。
(4)予測装置100は、算出したジョブJの予測処理時間を出力する。ここでは、投入先の計算機において、5月30日(月)の12時以降にジョブJを実行した場合の予測処理時間「20(分)」が出力される。
以上説明した実施の形態1にかかる予測装置100によれば、当日当時までの時間帯と同一時間帯における計算機の負荷状態が当日と近似する過去の実行日に実行されたジョブJの処理時間に基づいて、当日のジョブJの予測処理時間を算出することができる。これにより、投入先となる計算機の当日の負荷傾向に応じたジョブの予測処理時間を求めることができ、単純に過去のジョブJの処理時間の平均等を求める場合に比べて、より高精度にジョブの処理時間を予測することができる。
(実施の形態2)
つぎに、実施の形態2にかかるスケジューリングシステム200について説明する。実施の形態2では、実施の形態1で説明した予測装置100をスケジューリングシステム200内のジョブ管理装置201に適用した場合について説明する。なお、実施の形態1で説明した箇所と同様の箇所については説明を省略する。
図2は、実施の形態2にかかるスケジューリングシステムのシステム構成例を示す説明図である。図2において、スケジューリングシステム200は、ジョブ管理装置201と、情報収集装置202と、マシンM1〜Mn(n:2以上の自然数)と、クラウド環境203と、を含む構成である。スケジューリングシステム200において、ジョブ管理装置201、情報収集装置202、マシンM1〜Mnおよびクラウド環境203は、有線または無線のネットワーク210を介して接続されている。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
ここで、ジョブ管理装置201は、処理対象となるジョブを管理するコンピュータである。具体的には、例えば、ジョブ管理装置201は、ジョブのスケジューリング、ジョブの実行状況の監視およびマシンM1〜Mnの電源投入/切断などを行う機能を有する。また、ジョブ管理装置201は、情報収集装置202を介して、負荷情報DB110にアクセス可能である。
情報収集装置202は、負荷情報DB110を備え、各マシンM1〜Mnの負荷情報を収集する機能を有するコンピュータである。負荷情報は、各マシンM1〜Mnの負荷状態を特徴付ける情報であり、例えば、各マシンM1〜MnのCPU使用量やI/O使用量などの負荷量を表す情報である。CPU使用量は、例えば、各マシンM1〜MnのCPUの使用率である。I/O使用量は、例えば、各マシンM1〜Mnの物理ディスクの読み取りバイト数と書き込みバイト数とを足し合わせた値である。
具体的には、例えば、情報収集装置202は、各マシンM1〜Mnに導入された各エージェントにより定期的(例えば、1分間隔)に収集される負荷情報を各マシンM1〜Mnから受信する。これにより、各マシンM1〜Mnの負荷情報を周期的に収集することができる。
収集された各マシンM1〜Mnの負荷情報は、例えば、負荷情報DB110に記憶される。また、処理対象となるジョブの多くは、特定の曜日に毎週繰り返し実行されたり、特定の日にちに毎月繰り返し実行されるという特性を有している。このため、情報収集装置202は、各マシンM1〜Mnの負荷量の平均値を曜日単位や日にち単位で求めて負荷情報DB110に記憶することにしてもよい。
また、情報収集装置202は、特定の時期における特定の計算機の負荷量をジョブ管理装置201から要求されると、例えば、特定の時期における特定の計算機の平均負荷量を計算して、ジョブ管理装置201に応答することにしてもよい。
マシンM1〜Mnは、処理対象となるジョブを実行するコンピュータである。マシンM1〜Mnは、例えば、オンプレミス環境のサーバ、PC(パーソナル・コンピュータ)、サーバ上で動作する仮想計算機などである。各マシンM1〜Mnには、各マシンM1〜Mnの負荷情報を定期的に収集するエージェント(ソフトウェア)が導入されている。
また、マシンM1〜Mnは、エージェントにより収集した負荷情報を情報収集装置202に送信する機能を有する。具体的には、例えば、マシンM1〜Mnは、エージェントにより負荷情報が収集されると、その都度、該負荷情報を情報収集装置202に送信する。この結果、情報収集装置202において、各マシンM1〜Mnの負荷情報が周期的に収集される。
クラウド環境203は、処理対象となるジョブを実行するサーバ群を含むクラウドコンピューティングシステムである。具体的には、例えば、サーバ群は、データセンタのWebサーバ、アプリケーションサーバ、データベースサーバなどである。情報収集装置202は、クラウド環境203に含まれるサーバ群の負荷情報を収集することにしてもよい。
なお、上述した説明では、ジョブ管理装置201と情報収集装置202とを別体に設けることにしたが、これに限らない。例えば、ジョブ管理装置201が、負荷情報DB110を備え、情報収集装置202の機能を有することにしてもよい。
(ジョブ管理装置201のハードウェア構成例)
図3は、実施の形態2にかかるジョブ管理装置のハードウェア構成例を示すブロック図である。図3において、ジョブ管理装置201は、CPU301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、ディスプレイ308と、I/F(Interface)309と、キーボード310と、マウス311と、スキャナ312と、プリンタ313と、を備えている。また、各構成部はバス300によってそれぞれ接続されている。
ここで、CPU301は、ジョブ管理装置201の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
光ディスクドライブ306は、CPU301の制御にしたがって光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ308は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F309は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他の装置に接続される。そして、I/F309は、ネットワーク210と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、例えば、モデムやLANアダプタなどを採用することができる。
キーボード310は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ312は、画像を光学的に読み取り、ジョブ管理装置201内に画像データを取り込む。なお、スキャナ312は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ313は、画像データや文書データを印刷する。プリンタ313には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
なお、ジョブ管理装置201は、例えば、上述した構成部のうち光ディスクドライブ306、光ディスク307、スキャナ312およびプリンタ313等を備えないことにしてもよい。また、図2に示した情報収集装置202、マシンM1〜Mnおよびクラウド環境203に含まれるサーバ群についても、上述したジョブ管理装置201と同様のハードウェア構成により実現することができる。
(スケジュールテーブル400の記憶内容)
つぎに、ジョブ管理装置201が用いるスケジュールテーブル400の記憶内容について説明する。スケジュールテーブル400は、例えば、図3に示したRAM303、磁気ディスク305、光ディスク307などの記憶装置により実現される。
図4は、スケジュールテーブルの記憶内容の一例を示す説明図である。図4において、スケジュールテーブル400は、ジョブ名、開始日、開始予定時刻、終了予定時刻、予測処理時間、終了予測時刻、パラメータ、投入先、ユーザ名およびコメントのフィールドを有する。各フィールドに情報を設定することで、ジョブJ1〜Jmごとのスケジュール情報400−1〜400−mがレコードとして記憶されている。
ここで、ジョブ名は、処理対象となるジョブの識別子である。開始日は、ジョブの実行を開始する日である。開始予定時刻は、ジョブの実行を開始する予定時刻(時:分)である。終了予定時刻は、ジョブの実行が完了する予定時刻(時:分)である。予測処理時間は、ジョブの実行にかかる予測処理時間である。
終了予測時刻は、ジョブの実行が完了する予測時刻(時:分)である。パラメータは、ジョブの実行に用いるパラメータに関するファイルである。投入先は、ジョブの投入先のマシンの識別子である。ユーザ名は、ジョブの依頼元であるユーザの識別子である。コメントは、ジョブに関するコメントである。
スケジュール情報400−1を例に挙げると、ジョブJ1の開始日「水曜日」、開始予定時刻「10:00」、終了予定時刻「10:15」、予測処理時間「−」および終了予測時刻「−」が設定されている。また、パラメータ「file data 1.dat」、ユーザ名「root」およびコメント「顧客管理」が設定されている。
開始日「水曜日」は、ジョブJ1が毎週水曜日に実行されることを表している。コメント「顧客管理」は、ジョブJ1が顧客管理の業務に関するジョブであることを表している。また、ジョブJ1の予測処理時間、終了予測時刻および投入先は未設定「−(null)」となっている。
スケジュール情報400−2を例に挙げると、ジョブJ2の開始日「25日」、開始予定時刻「9:00」、終了予定時刻「13:30」、予測処理時間「−」および終了予測時刻「−」が設定されている。また、パラメータ「file data 2.dat」、ユーザ名「root」およびコメント「顧客管理」が設定されている。
開始日「25日」は、ジョブJ2が毎月25日に実行されることを表している。また、ジョブJ2の予測処理時間、終了予測時刻および投入先は未設定「−(null)」となっている。なお、開始日として特定の日付を指定する場合は、開始日フィールドに「年月日」が設定される。
また、スケジュール情報400−1〜400−mは、例えば、処理対象となるジョブに関連する他のジョブを表す関連情報を含むことにしてもよい。この関連情報には、例えば、関連するジョブ群を表す情報や、関連するジョブ群の実行順序を表す情報が含まれている。
(ジョブ管理装置201の機能的構成例)
図5は、実施の形態2にかかるジョブ管理装置の機能的構成例を示すブロック図である。図5において、ジョブ管理装置201は、選択部501と、決定部502と、取得部503と、特定部504と、第1の算出部505と、判定部506と、変更部507と、第2の算出部508と、出力部509と、を含む構成である。この制御部となる機能(選択部501〜出力部509)は、具体的には、例えば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F309により、その機能を実現する。また、各機能部の処理結果は、例えば、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
選択部501は、処理対象となるジョブを選択する機能を有する。具体的には、例えば、選択部501が、図4に示したスケジュールテーブル400を参照して、ジョブJ1〜Jmの中から、開始日が現在日のいずれかのジョブを選択することにしてもよい。また、選択部501が、例えば、図3に示したキーボード310やマウス311を用いたユーザの操作入力により指定されたジョブを選択することにしてもよい。
決定部502は、処理対象となるジョブの投入先の計算機を決定する機能を有する。具体的には、例えば、決定部502が、図2に示したマシンM1〜Mnおよびクラウド環境203の中から、処理対象となるジョブの投入先のマシンを決定する。決定された決定結果は、例えば、スケジュールテーブル400に記憶される。
例えば、処理対象となるジョブJ1の投入先のマシンとしてマシンM1が決定された場合、スケジュール情報400−1の投入先フィールドに「M1」が設定される。この際、スケジュール情報400−1に、ジョブJ1を実行するためのプログラム群の格納場所(例えば、c:¥)を合わせて記憶することにしてもよい。なお、投入先となる計算機を決定する決定部502の具体的な処理内容については、図11を用いて後述する。
以下の説明では、処理対象となるジョブを「ジョブJ」と表記する。また、ジョブJの投入先となる計算機を「マシンM」と表記する。
取得部503は、対象期間内の指定期間におけるマシンMの負荷状態を表す負荷情報を取得する機能を有する。上述したように、期間とは、時間軸を一定の時間幅で区切った各々の期間である。対象期間とは、ジョブJの実行を開始する予定の期間である。指定期間とは、各期間内のいずれかの期間である。指定期間は、任意に設定可能である。
例えば、時間軸を日ごとに区切った場合、対象期間は、ジョブJの実行を開始する予定のいずれかの日(例えば、2011年5月18日)である。また、指定期間は、ジョブJの実行を開始する日のいずれかの時間帯(例えば、9時〜12時の時間帯)となる。
また、例えば、時間軸を週ごとに区切った場合、対象期間は、ジョブJの実行を開始する予定のいずれかの週(例えば、2011年の第10週)である。また、指定期間は、ジョブJの実行を開始する週のいずれかの曜日(例えば、月曜日)または連続する曜日群(例えば、月曜日〜水曜日)となる。
対象期間内の指定期間におけるマシンMの負荷状態を表す負荷情報は、例えば、対象期間内の指定期間におけるマシンMの平均負荷量を表す情報である。より具体的には、例えば、マシンMの負荷状態を表す負荷情報は、マシンMのCPU使用量の平均値およびI/O使用量の平均値を含む情報である。
具体的には、例えば、取得部503が、情報収集装置202を介して、負荷情報DB110の中から、対象期間内の指定期間におけるマシンMの平均負荷量(例えば、CPU使用量の平均値およびI/O使用量の平均値)を表す負荷情報を取得することにしてもよい。
また、取得部503は、マシンMでジョブJが実行された期間のうち、各々の期間内の指定期間におけるマシンMの負荷状態を表す負荷情報を取得する機能を有する。具体的には、例えば、取得部503が、情報収集装置202を介して、負荷情報DB110の中から、特定の時期にマシンMでジョブJが実行された各々の期間内の指定期間におけるマシンMの平均負荷量を表す負荷情報を取得することにしてもよい。
特定の時期は、任意に設定可能である。例えば、特定の時期は、現時点から所定時間(例えば、数日、数ヶ月、数年)遡った時点から現時点までの時期である。特定の時期を示す情報は、例えば、ROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されている。
以下の説明では、一定の時間幅で区切られた期間として、時間軸を日ごとに区切った各々の期間を例に挙げて説明する。また、各々の期間内の指定期間を、各々の期間内の所定の時間帯とする。
また、取得部503は、マシンMで実行されたジョブJの処理時間を取得する機能を有する。具体的には、例えば、取得部503が、マシンMでジョブJが実行されると、その都度、マシンMからジョブJの処理時間を取得する。取得されたジョブJの処理時間は、例えば、後述の図6に示す処理時間テーブル600に記憶される。
特定部504は、マシンMでジョブJが実行された期間(以下、「実行日」という)のうち、各々の実行日の所定の時間帯におけるマシンMの負荷状態が、対象期間(以下、「当日」という)の該時間帯におけるマシンMの負荷状態と近似する実行日を特定する。ここで、所定の時間帯は、一日のうちの任意の時間帯に設定可能であり、例えば、キーボード310やマウス311を用いたユーザの操作入力により設定される。
以下の説明では、所定の時間帯として、ジョブJの実行を開始する当日の現時点までの時間帯(すなわち、当日当時までの時間帯)が設定されている場合を例に挙げて説明する。ここで、特定部504の具体的な処理内容の一例(下記特定処理例1〜3)について説明する。
・特定処理例1
特定部504が、当日当時までの時間帯におけるマシンMの平均負荷量と、各実行日の該時間帯と同一時間帯におけるマシンMの平均負荷量との差分が閾値以下となる実行日を特定する。当日当時までの時間帯におけるマシンMの平均負荷量は、例えば、取得された当日当時までの時間帯におけるマシンMの負荷状態を表す負荷情報から特定される。また、各実行日の該時間帯と同一時間帯におけるマシンMの平均負荷量は、例えば、取得された該時間帯と同一時間帯におけるマシンMの平均負荷量を表す負荷情報から特定される。
より具体的には、例えば、特定部504が、当日当時までの時間帯におけるマシンMのCPU使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンMのCPU使用量の平均値との差分d1が閾値α以下となる実行日を特定することにしてもよい。
また、例えば、特定部504が、当日当時までの時間帯におけるマシンMのI/O使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンMのI/O使用量の平均値との差分d2が閾値β以下となる実行日を特定することにしてもよい。
また、例えば、特定部504が、上記差分d1が閾値α以下、かつ、上記差分d2が閾値β以下となる実行日を特定することにしてもよい。なお、上記閾値α、βは、予め設定されてROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されている。
・特定処理例2
特定部504が、当日当時までの時間帯におけるマシンMの平均負荷量と、各実行日の該時間帯と同一時間帯におけるマシンMの平均負荷量との差分が小さい上位K個(例えば、K=5,10)の実行日を特定する。
より具体的には、例えば、特定部504が、当日当時までの時間帯におけるマシンMのCPU使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンMのCPU使用量の平均値との差分d1が小さい上位K個の実行日を特定することにしてもよい。
また、例えば、特定部504が、当日当時までの時間帯におけるマシンMのI/O使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンMのI/O使用量の平均値との差分d2が小さい上位K個の実行日を特定することにしてもよい。
・特定処理例3
また、特定部504が、当日当時までの時間帯におけるマシンMの平均負荷量と、各実行日の該時間帯と同一時間帯におけるマシンMの平均負荷量との差分が閾値以内、かつ、該差分が小さい上位K個の実行日を特定することにしてもよい。
より具体的には、例えば、特定部504が、差分d1が閾値α以下、かつ、差分d1が小さい上位K個の実行日を特定することにしてもよい。また、例えば、特定部504が、差分d2が閾値β以下、かつ、差分d2が小さい上位K個の実行日を特定することにしてもよい。
以下の説明では、特定された実行日を「実行日D1〜DK」と表記する(K:1以上の自然数)。また、実行日D1〜DKのうち任意の実行日を「実行日Dk」と表記する(k=1,2,…,K)。
第1の算出部505は、特定された実行日D1〜DKに実行されたジョブJの処理時間に基づいて、マシンMで当日当時以降に実行されるジョブJの予測処理時間を算出する機能を有する。具体的には、例えば、第1の算出部505が、実行日D1〜DKに実行されたジョブJの処理時間の平均値を、ジョブJの予測処理時間として算出することにしてもよい。
この際、第1の算出部505は、実行日D1〜DKに実行されたジョブJの処理時間のうち、処理時間が長い上位複数個の処理時間(または/および処理時間が短い上位複数個の処理時間)を除外することにしてもよい。これにより、何らかの障害等によりジョブJの処理時間が大幅に増えた場合の処理時間を排除することができ、ジョブJの予測処理時間のバラツキを低減させることができる。
また、第1の算出部505は、実行日D1〜DKの中から、当日当時までの時間帯と同一時間帯にジョブJが実行されていない実行日を特定することにしてもよい。そして、第1の算出部505は、特定した実行日に実行されたジョブJの処理時間に基づいて、マシンMで当日当時以降に実行されるジョブJの予測処理時間を算出することにしてもよい。
これにより、ジョブJが実行されていない状況下での負荷状態が、当日の負荷状態と近似する実行日に実行されたジョブJの処理時間をもとにジョブJの予測処理時間を算出することができ、ジョブJの処理時間をより高精度に予測することができる。
また、実行日DkにジョブJが複数回実行された場合、実行日Dkに実行されたジョブJの処理時間の平均値を、実行日Dkに実行されたジョブJの処理時間としてもよい。各実行日D1〜DKに実行されたジョブJの処理時間は、例えば、図6に示す処理時間テーブル600から特定される。
ここで、マシンM1で過去に実行されたジョブJ1を例に挙げて、処理時間テーブル600の記憶内容について説明する。なお、処理時間テーブル600は、例えば、各マシンMで実行されたジョブJごとに作成され、RAM303、磁気ディスク305、光ディスク307などの記憶装置により実現される。
図6は、処理時間テーブルの記憶内容の一例を示す説明図である。図6において、処理時間テーブル600は、ジョブ名、投入先、実行日および処理時間のフィールドを有し、各フィールドに情報を設定することで、マシンM1で実行されたジョブJ1の処理時間を記憶している。
ここで、ジョブ名は、処理対象となるジョブJの識別子である。投入先は、ジョブの投入先のマシンMの識別子である。実行日は、ジョブJが実行された年月日である。処理時間は、マシンMで実行されたジョブJの過去の処理時間[分]である。例えば、2011年3月23日にマシンM1で実行されたジョブJ1の処理時間は15[分]である。
一例として、処理対象となるジョブJを「ジョブJ1」とし、投入先のマシンMを「マシンM1」とする。また、特定された実行日D1〜DKを実行日D1「2011/3/23」、実行日D2「2011/4/6」、実行日D3「2011/4/20」および実行日D4「2011/5/11」とする。
この場合、まず、第1の算出部505は、処理時間テーブル600を参照して、実行日D1〜D4にマシンM1で実行されたジョブJ1の処理時間「15[分],21[分],41[分],11[分]」を特定する。そして、第1の算出部505が、特定したジョブJ1の処理時間「15[分],21[分],41[分],11[分]」の平均値を求めることにより、ジョブJ1の予測処理時間「22[分]」を算出する。
また、上記特定部504の特定処理において、マシンMのCPU使用量をもとに特定された実行日D1〜DKと、マシンMのI/O使用量をもとに特定された実行日D1〜DKとが異なる場合がある。この場合、例えば、以下のようにジョブJの予測処理時間を算出することにしてもよい。
具体的には、例えば、第1の算出部505が、マシンMのCPU使用量をもとに特定された実行日D1〜DKに実行されたジョブJの処理時間に基づいて、マシンMで当日当時以降に実行されるジョブJの予測処理時間P1を算出する。また、第1の算出部505が、マシンMのI/O使用量をもとに特定された実行日D1〜DKに実行されたジョブJの処理時間に基づいて、マシンMで当日当時以降に実行されるジョブJの予測処理時間P2を算出する。そして、第1の算出部505が、算出した予測処理時間P1,P2のうち、処理時間の長いほうをジョブJの予測処理時間とすることにしてもよい。
算出された算出結果は、例えば、スケジュールテーブル400に記憶される。例えば、ジョブJ1の予測処理時間「22[分]」が算出された場合、スケジュール情報400−1の予測処理時間フィールドに「22」が設定される。また、例えば、スケジュール情報400−1の終了予測時刻フィールドに、ジョブJ1の開始予定時刻から予測処理時間が経過した時刻を表す「10:22」が設定される。
なお、上述した説明では、各実行日D1〜DKに実行されたジョブJの処理時間を処理時間テーブル600から特定することにしたが、これに限らない。例えば、第1の算出部505が、マシンMに直接問い合わせて、各実行日D1〜DKに実行されたジョブJの処理時間を特定することにしてもよい。
また、上述した説明では、ジョブ管理装置201において、マシンMの負荷状態が当日当時までの負荷状態と近似する実行日D1〜DKを特定することにしたが、これに限らない。例えば、ジョブ管理装置201が、情報収集装置202に問い合わせることにより、マシンMの負荷状態が当日当時までの負荷状態と近似する実行日D1〜DKを特定することにしてもよい。
図5の説明に戻り、出力部509は、算出されたマシンMで当日当時以降に実行されるジョブJの予測処理時間を出力する機能を有する。具体的には、例えば、出力部509が、スケジュールテーブル400内の処理対象となるジョブJに関するスケジュール情報を出力することにしてもよい。ここで、出力されるスケジュール情報の具体例について説明する。
図7は、スケジュール情報の具体例を示す説明図である。図7において、スケジュール情報700は、処理対象となるジョブJ1のジョブ名と、投入先のマシンM1のマシン名と、開始日と、開始予定時刻と、終了予定時刻と、予測処理時間とを関連付けて示している。
スケジュール情報700によれば、ユーザは、開始日「2011年5月18日」に実行が開始されるジョブJ1の開始予定時刻「10時00分」、終了予定時刻「10時15分」および予測処理時間「22分」を判断することができる。また、ユーザは、ジョブJ1の開始予定時刻から予測処理時間が経過した時刻「10時22分」が、ジョブJ1の終了予定時刻を超過してしまうことを把握することができる。これにより、例えば、ジョブJ1の開始予定時刻を変更するなどして、ジョブJ1の実行が終了予定時刻までに完了するような対応を行うことができる。
なお、出力部509の出力形式としては、例えば、ディスプレイ308への表示、プリンタ313への印刷出力、I/F309による外部コンピュータへの送信がある。また、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶することとしてもよい。
図5の説明に戻り、判定部506は、ジョブJの開始予定時刻から、算出されたジョブJの予測処理時間が経過した終了予測時刻が、ジョブJの終了予定時刻を超過するか否かを判定する機能を有する。ジョブJの開始予定時刻および終了予定時刻は、例えば、スケジュールテーブル400から特定される。
一例として、処理対象となるジョブJ1の予測処理時間を「22分」とする。この場合、ジョブJ1の開始予定時刻「10時00分」から予測処理時間「22分」が経過した終了予測時刻は「10時22分」となる。この場合、判定部506が、ジョブJ1の終了予測時刻「10時22分」が、ジョブJ1の終了予定時刻「10時15分」を超過すると判定する。
また、出力部509は、判定された判定結果を出力する機能を有する。具体的には、例えば、出力部509が、ジョブJの終了予測時刻が終了予定時刻を超過する場合、ジョブJの終了予測時刻が終了予定時刻を超過することを示す警告情報を出力することにしてもよい。ここで、警告情報の具体例について説明する。
図8は、警告情報の具体例を示す説明図である。図8において、警告情報800は、処理対象となるジョブJ1の終了予測時刻が終了予定時刻を超過していることを示す情報である。具体的には、例えば、警告情報800には、ジョブJ1のジョブ名と、投入先のマシンM1のマシン名と、開始日と、開始予定時刻と、終了予定時刻と、予測処理時間とが関連付けて示されている。また、警告情報800には、ジョブJ1の終了予測時刻が、設定した終了予定時刻を7分超過していることを表す警告文が示されている。
警告情報800によれば、ユーザは、開始日「2011年5月18日」に実行が開始されるジョブJ1の開始予定時刻「10時00分」、終了予定時刻「10時15分」および予測処理時間「22分」を判断することができる。また、ユーザは、ジョブJ1の終了予測時刻が終了予定時刻を7分超過していることを把握することができる。これにより、例えば、ジョブJ1の開始予定時刻を変更するなどして、ジョブJ1の実行が終了予定時刻までに完了するような対応を行うことができる。
図5の説明に戻り、変更部507は、ジョブJの終了予測時刻が終了予定時刻を超過する場合、ジョブJの終了予測時刻が終了予定時刻を超過しないように、ジョブJの開始予定時刻を変更する機能を有する。具体的には、例えば、変更部507が、ジョブJの開始予定時刻を、ジョブJの終了予測時刻が終了予定時刻を超過する時間分早めた時刻に変更する。
また、変更部507が、ジョブJの終了予測時刻が終了予定時刻を超過しないように、かつ、ジョブJを実行する時間帯が他のジョブを実行する時間帯と重ならないように、ジョブJの開始予定時刻を変更することにしてもよい。なお、変更部507の具体的な処理内容については、図12〜図14を用いて後述する。
上述したジョブJ1の例では、ジョブJ1の終了予測時刻が終了予定時刻を7分超過している。この場合、例えば、変更部507が、ジョブJ1の開始予定時刻を7分早めた時刻「9時53分」に変更する。変更された変更結果は、例えば、スケジュールテーブル400に記憶される。
ここで、ジョブJ1の開始予定時刻が変更される場合を例に挙げて、スケジュールテーブル400の記憶内容の変遷例について説明する。
図9は、スケジュールテーブルの記憶内容の変遷例を示す説明図である。図9の(9−1)において、スケジュールテーブル400内のスケジュール情報400−1には、処理対象となるジョブJ1を投入先のマシンM1で実行した場合の予測処理時間「22分」および終了予測時刻「10:22」が示されている。
この場合、上述したように、ジョブJ1の終了予測時刻が終了予定時刻を7分超過しているため、変更部507が、ジョブJ1の開始予定時刻を7分早めた時刻「9時53分」に変更する。この結果、図9の(9−2)において、ジョブJ1の開始予定時刻が、当初の「10時00分」から7分早めた「9時53分」に変更されている。また、ジョブJ1の終了予測時刻が、当初の「10時22分」から7分早めた「10時15分」に変更されている。
図5の説明に戻り、出力部509は、変更された変更後のジョブJの開始予定時刻を出力する機能を有する。具体的には、例えば、出力部509が、変更後のジョブJの開始予定時刻が設定されたスケジュール情報(例えば、図9の(9−2)に示したスケジュール情報400−1)を出力することにしてもよい。
これにより、ユーザは、ジョブJの終了予定時刻を超過しないようなジョブJの開始予定時刻を把握することができる。また、例えば、変更後のジョブJの開始予定時刻を既存のスケジューラに与えることにより、ジョブJの実行が終了予定時刻前に完了するようにスケジューリングすることができる。
また、変更部507は、ジョブJの終了予測時刻が終了予定時刻を超過する場合、ジョブJの開始予定時刻を早められるか否かを判断することにしてもよい。具体的には、例えば、変更部507が、ジョブJの開始予定時刻を、ジョブJの終了予測時刻が終了予定時刻を超過している時間分早めた時刻が、少なくとも現在時刻以降の時刻か否かを判断する。
ここで、現在時刻以降の場合、変更部507が、ジョブJの開始予定時刻を早められると判断する。そして、変更部507が、ジョブJの終了予測時刻が終了予定時刻を超過しないように、ジョブJの開始予定時刻を変更する。
一方、現在時刻よりも前の場合、変更部507が、ジョブJの開始予定時刻を早められないと判断する。この場合、出力部509が、ジョブJの終了予測時刻が終了予定時刻を超過することを示す警告情報(例えば、図8に示した警告情報800)を出力することにしてもよい。
第2の算出部508は、当日に実行が開始されたジョブJの開始時刻と、現在時刻と、ジョブJの予測処理時間とに基づいて、ジョブJの進捗度合いを表す進捗値を算出する機能を有する。具体的には、例えば、第2の算出部508が、下記式(1)を用いて、ジョブJの進捗度合いを表す進捗率を求めることができる。ただし、Fは、ジョブJの進捗率[%]である。Pは、ジョブJの予測処理時間[分]である。pは、ジョブJの開始時刻から現在時刻までの時間間隔[分]である。
F=(p/P)×100 ・・・(1)
一例として、ジョブJ1の開始時刻を「9時53分」とし、現在時刻を「10時00分」とし、予測処理時間を「P=22[分]」とする。この場合、ジョブJ1の開始時刻から現在時刻までの時間間隔pは「p=7[分]」となる。このため、ジョブJ1の進捗率Fは、「F=32[%]≒(7/22)×100」となる。
また、出力部509は、算出されたジョブJの進捗度合いを表す進捗度を出力する機能を有する。具体的には、例えば、出力部509が、図10に示すような進捗状況画面1000をディスプレイ308に表示することにしてもよい。ここで、進捗状況画面1000の画面例について説明する。
(進捗状況画面の画面例)
図10は、進捗状況画面の画面例を示す説明図である。図10において、進捗状況画面1000は、処理対象となるジョブJの進捗状況を示す画面である。具体的には、進捗状況画面1000には、各ジョブJ1,J3,J5,J8のジョブ名、進捗率、終了予定時刻および進捗状況を表すガントチャートが表示されている。
例えば、進捗状況画面1000には、ジョブJ1の進捗率「32%」、終了予定時刻「10:15」およびジョブJ1の進捗状況を表すガントチャート1001が表示されている。これにより、ユーザは、現在時刻「10時00分」におけるジョブJ1の進捗率「32%」を把握することができる。
また、進捗状況画面1000には、ジョブJ3の進捗率「80%」、終了予定時刻「11:00」およびジョブJ3の進捗状況を表すガントチャート1002が表示されている。これにより、ユーザは、現在時刻「10時00分」におけるジョブJ3の進捗率「80%」を把握することができる。
また、進捗状況画面1000には、ジョブJ5の進捗率「100%」、終了予定時刻「10:00」およびジョブJ5の進捗状況を表すガントチャート1003が表示されている。これにより、ユーザは、現在時刻「10時00分」において、ジョブJ5の実行が予定より早く完了していることを把握することができる。
また、進捗状況画面1000には、ジョブJ8の進捗率「0%」、終了予定時刻「11:15」、ジョブJ8の進捗状況予定を表すガントチャート1004および警告情報1005が表示されている。ここで、ジョブJ8は、現在時刻「10時00分」において実行が開始されていないジョブである。警告情報1005は、ジョブJ8の終了予測時刻が終了予定時刻を超過していることを示す情報である。
ガントチャート1004および警告情報1005によれば、ユーザは、ジョブJ8の実行が終了予定時刻までに完了しないことを直感的に認識することができる。これにより、ユーザは、ジョブJ8の開始予定時刻を変更するなどして、ジョブJ8の実行が終了予定時刻までに完了するような対応を行うことができる。
(決定部502の具体的な処理内容)
つぎに、処理対象となるジョブJの投入先のマシンMを決定する決定部502の具体的な処理内容の一例について説明する。ここでは、ジョブJの投入先の候補となるマシン群として、図2に示したマシンM1〜Mnおよびクラウド環境203を例に挙げて説明する。
まず、決定部502は、マシンM1〜Mnおよびクラウド環境203の中からいずれかのマシン(以下、「候補マシン」)を選択する。具体的には、例えば、決定部502が、各マシンに設定された優先度に従って、マシンM1〜Mnおよびクラウド環境203の中から優先度の高い候補マシンを選択する。
ここで、優先度とは、投入先の候補となるマシン群の中から候補マシンを選択する順序を表す値である。各マシンの優先度は、例えば、後述の図11に示す設定画面1100において、ユーザの操作入力により任意に設定される。
つぎに、決定部502は、選択した候補マシンの過去の負荷量を取得する。ここで、候補マシンの負荷量とは、例えば、特定の時期(例えば、過去数年、数ヶ月)における候補マシンのCPU使用量の平均値やI/O使用量の平均値などである。
例えば、処理対象となるジョブJが毎週月曜日に実行されるものの場合、決定部502が、特定の時期の毎週月曜日の候補マシンの負荷量の平均値を情報収集装置202から取得する。また、処理対象となるジョブJが毎月25日に実行されるものの場合、決定部502が、特定の時期の毎月25日の候補マシンの負荷量の平均値を情報収集装置202から取得する。
そして、決定部502は、取得した候補マシンの負荷量が、候補マシンに設定されている負荷量の閾値以上か否かを判断する。ここで、負荷量の閾値とは、候補マシンを、ジョブJの投入先のマシンMとするか否かの判断基準となる値である。候補マシンの負荷量の閾値としては、例えば、各マシンのCPU使用量の平均値やI/O使用量の平均値などが設定される。
より具体的には、例えば、負荷量の閾値は、候補マシンの負荷量が閾値以上になると、候補マシンに負荷がかかりすぎてジョブJの処理時間が長くなるような値に設定される。各マシンの負荷量の閾値は、例えば、後述の図11に示す設定画面1100において、ユーザの操作入力により任意に設定される。
ここで、候補マシンの負荷量が閾値未満の場合、決定部502は、選択した候補マシンを、処理対象となるジョブJの投入先のマシンMに決定する。一方、候補マシンの負荷量が閾値以上の場合、決定部502は、マシンM1〜Mnおよびクラウド環境203の中から優先度の高い未選択の候補マシンを選択して、上述した一連の処理を繰り返す。
ここで、各マシンの優先度および負荷量の閾値を設定する際に、ディスプレイ308に表示される設定画面1100の画面例について説明する。ここでは、マシンM1〜M4およびクラウド環境203の中からジョブJ1の投入先となるマシンMを決定する場合を例に挙げて説明する。
図11は、設定画面の画面例を示す説明図である。図11において、設定画面1100は、投入先の候補となるマシン群の各々のマシンの優先度および負荷量の閾値と、クラウド環境203のクラウドサイジング閾値を設定する画面である。
設定画面1100において、マシン名(図11中、項目1101)は、処理対象となるジョブJ1の投入先の候補となるマシンの識別子である。なお、クラウド環境203を表すマシン名として、ここでは「クラウド」が設定されている。
設定画面1100において、優先度(図11中、項目1102)は、上述したように、投入先の候補となるマシン群の中から候補マシンを選択する順序を表す値である。ここでは、優先度の値が小さいほど優先度が高いことを示している。また、特定のマシンを選択対象から除外する場合は、該マシンの優先度として「×」が設定される。
設定画面1100において、負荷量の閾値(図11中、項目1103)は、上述したように、候補マシンを、ジョブJの投入先のマシンMとするか否かの判断基準となる値である。ここでは、負荷量の閾値として、各マシンのCPU使用量の平均値の上限値を表す値が設定されている。
クラウドサイジング閾値(図11中、項目1104)は、クラウド環境203のサイジングを行うか否かの判断基準となるクラウド環境203の負荷量の閾値である。負荷量の閾値としては、例えば、クラウド環境203に含まれるサーバ群のCPU使用量の平均値やI/O使用量の平均値などが設定される。
ここでは、クラウドサイジング閾値として、クラウド環境203に含まれるサーバ群のCPU使用量の平均値の上限値および下限値が設定されている。例えば、クラウド環境203の負荷量が上限値を上回る場合は、クラウド環境203の処理能力を増加させることになる。一方、クラウド環境203の負荷量が下限値を下回る場合は、クラウド環境203の処理能力を減少させることになる。
設定画面1100において、ユーザは、キーボード310やマウス311を用いて、各種値を設定することができる。図11の例では、マシンM1の優先度として「1」が設定され、マシンM1の負荷量の閾値として「50」が設定されている。また、マシンM2の優先度として「×」が設定され、マシンM2の負荷量の閾値として「×」が設定されている。
また、マシンM3の優先度として「2」が設定され、マシンM3の負荷量の閾値として「50」が設定されている。また、マシンM4の優先度として「3」が設定され、マシンM4の負荷量の閾値として「50」が設定されている。
また、クラウド環境203の優先度として「4」が設定され、クラウド環境203の負荷量の閾値として「60」が設定されている。また、クラウドサイジング閾値の上限値として「50」が設定され、下限値として「20」が設定されている。
なお、上述した説明では、各負荷量の閾値としてCPU使用量の平均値を用いることにしたが、これに限らない。例えば、各負荷量の閾値として、I/O使用量の平均値を用いることにしてもよく、また、CPU使用量の平均値およびI/O使用量の平均値を用いることにしてもよい。
図11の例では、まず、決定部502は、マシンM1〜M4およびクラウド環境203の中から、優先度が最も高いマシンM1を候補マシンとして選択する。つぎに、決定部502は、選択したマシンM1のCPU使用量の平均値を取得する。ここで、ジョブJ1は、毎週水曜日に実行されるジョブである。
このため、決定部502が、特定の時期の毎週水曜日のマシンM1のCPU使用量の平均値を情報収集装置202から取得する。そして、決定部502は、取得したマシンM1のCPU使用量の平均値が、マシンM1に設定されている負荷量の閾値「50」以上か否かを判断する。
ここで、マシンM1のCPU使用量の平均値が閾値未満の場合、決定部502は、選択したマシンM1を、処理対象となるジョブJの投入先のマシンMに決定する。一方、マシンM1のCPU使用量の平均値が閾値以上の場合、決定部502は、マシンM1〜Mnおよびクラウド環境203の中から優先度の高い未選択のマシンM3を選択して、上述した一連の処理を繰り返す。
これにより、処理対象となるジョブJの投入先として、マシンの負荷量が予め設定された負荷量の閾値未満となるマシンMを選択することができる。このため、投入先のマシンMにジョブJを割り当てた結果、マシンMに負荷がかかりすぎてジョブJの処理時間が長くなるような状況を回避することができる。
なお、クラウドサイジング閾値に基づくクラウド環境203のサイジングについては、図19に示すフローチャートを用いて後述する。
(変更部507の具体的な処理内容)
つぎに、図12〜図14を用いて、ジョブJの終了予測時刻が終了予定時刻を超過しないように、マシンMで実行されるジョブJの開始予定時刻を変更する変更部507の具体的な処理内容の一例について説明する。
図12は、ジョブJの開始予定時刻の変更例を示す説明図(その1)である。図12において、ガントチャート1201は、マシンMで実行される処理対象となるジョブJの実行時間帯を表している。また、ガントチャート1202は、マシンMで実行される、処理対象となるジョブJとは異なる他のジョブの実行時間帯を表している。
ここで、時刻t1は、他のジョブの開始予定時刻である。時刻t2は、他のジョブの終了予定時刻(または、終了予測時刻)である。また、時刻t3は、処理対象となるジョブJの開始予定時刻である。時刻t6は、処理対象となるジョブJの終了予測時刻である。時刻t5は、処理対象となるジョブJの終了予定時刻である。
ここでは、ジョブJの終了予測時刻t6が終了予定時刻t5を超過している。そこで、変更部507は、他のジョブとの多重度ができるだけ大きくならないように、かつ、ジョブJの終了予測時刻が終了予定時刻t5を超過しないように、ジョブJの開始予定時刻を変更する。
具体的には、例えば、変更部507が、他のジョブとの多重度ができるだけ大きくならないように、ジョブJの開始予定時刻を少なくともジョブJの終了予定時刻t5と終了予測時刻t6との時間間隔T1分早めた時刻に変更する。なお、多重度とは、実行時間帯が重複しているジョブの数を表す値である。
図12の例では、ジョブJの開始予定時刻が時間間隔T1’(T1’>T1)分早めた時刻t2、すなわち、他のジョブの終了予定時刻に変更されている。この場合、ジョブJの終了予測時刻t4は、ジョブJの終了予定時刻t5を超過していない。また、ジョブJと他のジョブとの実行時間帯が重複していないため多重度は「0」となる。
このように、他のジョブとの多重度が大きくならないように、かつ、ジョブJの終了予測時刻が終了予定時刻を超過しないように、ジョブJの開始予定時刻を変更することで、マシンMでジョブ群(ジョブJと他のジョブ)を効率的に実行することができる。
図13は、ジョブJの開始予定時刻の変更例を示す説明図(その2)である。図13において、ガントチャート1301は、マシンMで実行されるジョブJaの実行時間帯を表している。ガントチャート1302は、マシンMで実行されるジョブJbの実行時間帯を表している。ガントチャート1303は、マシンMで実行されるジョブJcの実行時間帯を表している。
ジョブJcは開始予定時刻の変更対象となるジョブJである。また、ジョブJa,Jb,Jcには、ジョブJaの実行が完了した後、ジョブJbの実行が開始され、ジョブJbの実行が完了した後、ジョブJcの実行が開始されるという実行順序が規定されている。
処理対象となるジョブJcの開始予定時刻の変更前において(図13上側参照)、時刻t3はジョブJaの開始予定時刻であり、時刻t5はジョブJaの終了予定時刻(または、終了予測時刻)である。また、時刻t5はジョブJbの開始予定時刻であり、時刻t6はジョブJbの終了予定時刻(または、終了予測時刻)である。また、時刻t6はジョブJcの開始予定時刻であり、時刻t8はジョブJcの終了予測時刻である。
ここで、時刻t7はジョブJcの終了予定時刻であり、ジョブJcの終了予測時刻t8が終了予定時刻t7を超過している。また、ジョブJbの終了予定時刻t6がジョブJcの開始予定時刻t6となっているため、ジョブJcのみの開始予定時刻を早めることができない。
そこで、変更部507は、ジョブJcの終了予測時刻が終了予定時刻t7を超過しないように、実行順序が規定されているジョブJa,Jb,Jcの開始予定時刻をそれぞれ変更する。具体的には、例えば、変更部507が、ジョブJa,Jb,Jcの開始予定時刻を、少なくともジョブJcの終了予定時刻t7と終了予測時刻t8との時間間隔T2分早めた時刻に変更する。
図13の例では(図13下側参照)、ジョブJaの開始予定時刻が時間間隔T2分早めた時刻t1に変更され、ジョブJbの開始予定時刻が時間間隔T2分早めた時刻t2に変更され、ジョブJcの開始予定時刻が時間間隔T2分早めた時刻t4に変更されている。この場合、ジョブJcの終了予測時刻は時刻t7となり、ジョブJcの終了予定時刻t7を超過しないことになる。
図14は、ジョブJの開始予定時刻の変更例を示す説明図(その3)である。図14において、ガントチャート1401は、マシンMで実行されるジョブJdの実行時間帯を表している。ガントチャート1402は、マシンMで実行されるジョブJeの実行時間帯を表している。ジョブJd,Jeの実行順序は規定されていない。ジョブJeは開始予定時刻の変更対象となるジョブJである。
ジョブJeの開始予定時刻の変更前において(図14上側参照)、時刻t1はジョブJdの開始予定時刻であり、時刻t2はジョブJdの終了予定時刻(または、終了予測時刻)である。また、時刻t2はジョブJeの開始予定時刻であり、時刻t3はジョブJeの終了予測時刻である。
ここで、時刻t2はジョブJeの終了予定時刻であり、ジョブJeの終了予測時刻t3が終了予定時刻t2を超過している。一方、時刻t4はジョブJdの終了予定時刻であり、ジョブJdの終了予測時刻t2は終了予定時刻t4を超過していない。
このような場合、変更部507は、例えば、ジョブJd,Jeの終了予測時刻が終了予定時刻を超過しないように、ジョブJd,Jeの開始予定時刻をそれぞれ変更する。具体的には、例えば、変更部507が、ジョブJdの開始予定時刻をジョブJeの開始予定時刻とし、ジョブJeの開始予定時刻をジョブJdの開始予定時刻にする。
図14の例では(図14下側参照)、ジョブJdの開始予定時刻が時刻t2に変更され、ジョブJeの開始予定時刻が時刻t1に変更されている。この場合、ジョブJeの終了予測時刻は時刻t2となり、ジョブJeの終了予定時刻t2を超過しないことになる。また、ジョブJdの終了予測時刻は時刻t3となり、ジョブJdの終了予定時刻t4を超過しないことになる。
(ジョブ管理装置201のジョブ管理処理手順)
つぎに、実施の形態2にかかるジョブ管理装置201のジョブ管理処理手順について説明する。
図15は、実施の形態2にかかるジョブ管理装置のジョブ管理処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、選択部501により、処理対象となるジョブJを選択する(ステップS1501)。つぎに、ジョブ管理装置201により、ジョブJの投入先の候補となるマシン群の各々のマシンの優先度を設定する(ステップS1502)。
また、ジョブ管理装置201により、ジョブJの投入先の候補となるマシン群の各々のマシンの負荷量の閾値を設定する(ステップS1503)。また、ジョブ管理装置201により、クラウド環境203のクラウドサイジング閾値として、クラウド環境203の負荷量の上限値Cmaxおよび下限値Cminを設定する(ステップS1504)。
そして、決定部502により、処理対象となるジョブJの投入先のマシンMを決定する投入先決定処理を実行する(ステップS1505)。つぎに、第1の算出部505により、処理対象となるジョブJの予測処理時間を算出する予測処理時間算出処理を実行する(ステップS1506)。
このあと、変更部507により、処理対象となるジョブJの開始予定時刻を変更する変更処理を実行する(ステップS1507)。最後に、ジョブ管理装置201により、クラウド環境203のサイジング処理を実行して(ステップS1508)、本フローチャートによる一連の処理を終了する。
これにより、ジョブJの終了予測時刻が終了予定時刻を超過しないように、ジョブJの開始予定時刻を変更することができる。
なお、ステップS1502〜1504における各種値の設定は、例えば、図11に示した設定画面1100においてユーザの操作入力により行われてもよく、また、予め設定された内容に従って自動で行われることにしてもよい。
<投入先決定処理手順>
つぎに、図15に示したステップS1505の投入先決定処理の具体的な処理手順について説明する。ここでは、ジョブJの投入先候補となるマシン群を、図2に示したマシンM1〜Mnおよびクラウド環境203とする。
図16は、投入先決定処理の具体的処理手順の一例を示すフローチャートである。図16のフローチャートにおいて、まず、決定部502により、処理対象となるジョブJの投入先候補となるマシン群を優先度が高い順にソートする(ステップS1601)。
以下の説明では、処理対象となるジョブJの投入先候補となるマシンM1〜Mnおよびクラウド環境203を優先度が高い順にソートしたものを「マシンM[0]〜M[n]」と表記する。また、マシンM[0]〜M[n]のうち任意のマシンを「マシンM[i]」と表記する(i=0,1,…,n)。
つぎに、決定部502により、マシンM[i]の「i」を「i=0」として(ステップS1602)、マシンM[0]〜M[n]の中からマシンM[i]を選択する(ステップS1603)。なお、マシンM[i]の優先度として「×」が設定されている場合、決定部502はマシンM[i]を選択することなく、ステップS1609に移行する(ただし、優先度「×」は最も優先度が低いものとして扱う)。
そして、決定部502により、特定の時期(例えば、過去数年、数ヶ月)におけるマシンM[i]の平均負荷量w[i]を情報収集装置202から取得する(ステップS1604)。つぎに、決定部502により、取得したマシンM[i]の平均負荷量w[j]が、マシンM[i]に設定されている負荷量の閾値W[i]以上か否かを判断する(ステップS1605)。
ここで、マシンM[i]の平均負荷量w[i]が閾値W[i]未満の場合(ステップS1605:No)、決定部502により、マシンM[i]をジョブJの投入先に決定して(ステップS1606)、図15に示したステップS1506に移行する。
一方、マシンM[i]の平均負荷量w[i]が閾値W[i]以上の場合(ステップS1605:Yes)、決定部502により、マシンM[i]の「i」をインクリメントする(ステップS1607)。そして、決定部502により、マシンM[i]の「i」が「n」より大きいか否かを判断する(ステップS1608)。
ここで、マシンM[i]の「i」が「n」以下の場合(ステップS1608:No)、ステップS1603に戻る。一方、マシンM[i]の「i」が「n」より大きい場合(ステップS1608:Yes)、決定部502により、マシンM[0]〜M[n]のうち平均負荷量の超過分が最小のマシンM[i]を特定して(ステップS1609)、ステップS1606に移行する。
なお、平均負荷量の超過分とは、マシンM[i]の平均負荷量w[i]とマシンM[i]の負荷量の閾値W[i]との差分である。
これにより、処理対象となるジョブJの投入先として、特定の時期におけるマシンの平均負荷量が予め設定された負荷量の閾値未満となるマシンMを選択することができる。
<予測処理時間算出処理手順>
つぎに、図15に示したステップS1506の予測処理時間算出処理の具体的な処理手順について説明する。
図17は、予測処理時間算出処理の具体的処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、取得部503により、処理対象となるジョブJの実行を開始する当日当時までの時間帯におけるマシンMのCPU使用量の平均値およびI/O使用量の平均値を表す負荷情報を取得する(ステップS1701)。
つぎに、取得部503により、特定の時期にマシンMでジョブJが実行された各々の実行日の当日当時までの時間帯と同一時間帯におけるマシンMのCPU使用量の平均値およびI/O使用量の平均値を表す負荷情報を取得する(ステップS1702)。
そして、特定部504により、ジョブJの実行日のうち、当日当時までの時間帯と同一時間帯におけるマシンMのCPU使用量の平均値が、当日当時までの時間帯におけるマシンMのCPU使用量の平均値と近似する実行日を特定する(ステップS1703)。このステップS1703の処理は、ステップS1701およびステップS1702において取得された負荷情報に基づいて行われる。
つぎに、第1の算出部505により、特定された各実行日にマシンMで実行されたジョブJの処理時間を特定する(ステップS1704)。そして、第1の算出部505により、特定した各実行日のジョブJの処理時間の平均値を求めることにより、ジョブJの予測処理時間P1を算出する(ステップS1705)。
つぎに、特定部504により、ジョブJの実行日のうち、当日当時までの時間帯と同一時間帯におけるマシンMのI/O使用量の平均値が、当日当時までの時間帯におけるマシンMのI/O使用量の平均値と近似する実行日を特定する(ステップS1706)。このステップS1706の処理は、ステップS1701およびステップS1702において取得された負荷情報に基づいて行われる。
つぎに、第1の算出部505により、特定された実行日にマシンMで実行されたジョブJの処理時間を特定する(ステップS1707)。そして、第1の算出部505により、特定した各実行日のジョブJの処理時間の平均値を求めることにより、ジョブJの予測処理時間P2を算出する(ステップS1708)。
つぎに、第1の算出部505により、算出した予測処理時間P1が予測処理時間P2以上となっているか否かを判断する(ステップS1709)。ここで、予測処理時間P1が予測処理時間P2以上の場合(ステップS1709:Yes)、第1の算出部505により、予測処理時間P1をジョブJの予測処理時間として(ステップS1710)、図15に示したステップS1507に移行する。
一方、予測処理時間P1が予測処理時間P2未満の場合(ステップS1709:No)、第1の算出部505により、予測処理時間P2をジョブJの予測処理時間として(ステップS1711)、図15に示したステップS1507に移行する。
これにより、当日当時までの時間帯におけるマシンMの負荷状態と近似する負荷状態で実行された過去のジョブJの処理時間に基づいて、当日のジョブJの予測処理時間を算出することができる。
<変更処理手順>
つぎに、図15に示したステップS1507の変更処理の具体的な処理手順について説明する。
図18は、変更処理の具体的処理手順の一例を示すフローチャートである。図18のフローチャートにおいて、まず、判定部506により、ジョブJの開始予定時刻から、算出されたジョブJの予測処理時間が経過した終了予測時刻が、ジョブJの終了予定時刻を超過するか否かを判定する(ステップS1801)。
ここで、ジョブJの終了予測時刻が終了予定時刻を超過しない場合(ステップS1801:No)、図15に示したステップS1508に以降する。一方、ジョブJの終了予測時刻が終了予定時刻を超過する場合(ステップS1801:Yes)、変更部507により、ジョブJの開始予定時刻を早められるか否かを判断する(ステップS1802)。
ここで、ジョブJの開始予定時刻を早められる場合(ステップS1802:Yes)、変更部507により、ジョブJの終了予測時刻が終了予定時刻を超過しないように、ジョブJの開始予定時刻を変更する(ステップS1803)。
このあと、変更部507により、ジョブJの開始予定時刻を変更した結果、ジョブJが他のジョブと実行時間帯が重複するか否かを判断する(ステップS1804)。ここで、他のジョブと実行時間帯が重複しない場合(ステップS1804:No)、図15に示したステップS1508に移行する。
一方、他のジョブと実行時間帯が重複する場合(ステップS1804:Yes)、変更部507により、他のジョブと関連するジョブがあるか否かを判断する(ステップS1805)。なお、関連するジョブ群を特定する関連情報は、例えば、図4に示したスケジュール情報400−1〜400−mに含まれている。
ここで、関連するジョブがある場合(ステップS1805:Yes)、変更部507により、関連するジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないように、各々のジョブの開始予定時刻を変更する(ステップS1806)。そして、図15に示したステップS1508に移行する。
一方、関連するジョブがない場合(ステップS1805:No)、変更部507により、他のジョブの終了予測時刻が終了予定時刻を超過しないように、他のジョブの開始予定時刻を変更して(ステップS1807)、図15に示したステップS1508に移行する。
また、ステップS1802において、ジョブJの開始予定時刻を早められない場合(ステップS1802:No)、出力部509により、ジョブJの終了予測時刻が終了予定時刻を超過することを示す警告情報を出力する(ステップS1808)。そして、図15に示したステップS1508に移行する。
これにより、他のジョブとの多重度が大きくならないように、かつ、ジョブJの終了予測時刻が終了予定時刻を超過しないように、ジョブJの開始予定時刻を変更することができる。
なお、ステップS1806において、関連するジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないように、各々のジョブの開始予定時刻を変更できない場合は、出力部509により、その旨を示す警告情報を出力することにしてもよい。
同様に、ステップS1807において、他のジョブの終了予測時刻が終了予定時刻を超過しないように、他のジョブの開始予定時刻を変更できない場合は、出力部509により、その旨を示す警告情報を出力することにしてもよい。
<サイジング処理手順>
つぎに、図15に示したステップS1508のサイジング処理の具体的な処理手順について説明する。
図19は、サイジング処理の具体的処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、ジョブ管理装置201により、クラウド環境203に含まれるサーバ群の平均負荷量C(ここでは、CPU使用量の平均値)を情報収集装置202から取得する(ステップS1901)。
なお、クラウド環境203に含まれるサーバ群とは、クラウド環境203のOS(Operating System)インスタンスを表している。
つぎに、ジョブ管理装置201により、取得したクラウド環境203の平均負荷量Cがクラウドサイジング閾値の上限値Cmax以上か否かを判断する(ステップS1902)。ここで、平均負荷量Cが上限値Cmax以上の場合(ステップS1902:Yes)、ジョブ管理装置201により、OSインスタンスのCPU能力が最大か否かを判断する(ステップS1903)。
ここで、OSインスタンスのCPU能力が最大ではない場合(ステップS1903:No)、ジョブ管理装置201により、OSインスタンスのCPU能力を増加させて(ステップS1904)、本フローチャートによる一連の処理を終了する。
一方、OSインスタンスのCPU能力が最大の場合(ステップS1903:Yes)、ジョブ管理装置201により、OSインスタンスの数を増加させて(ステップS1905)、本フローチャートによる一連の処理を終了する。
また、ステップS1902において、平均負荷量Cが上限値Cmax未満の場合(ステップS1902:No)、ジョブ管理装置201により、取得したクラウド環境203の平均負荷量Cがクラウドサイジング閾値の下限値Cmin以下か否かを判断する(ステップS1906)。
ここで、平均負荷量Cが下限値Cmin以下の場合(ステップS1906:Yes)、ジョブ管理装置201により、OSインスタンスのCPU能力が最小か否かを判断する(ステップS1907)。そして、OSインスタンスのCPU能力が最小の場合(ステップS1907:Yes)、ジョブ管理装置201により、OSインスタンスの数を減少させて(ステップS1908)、本フローチャートによる一連の処理を終了する。
一方、OSインスタンスのCPU能力が最小ではない場合(ステップS1907:No)、ジョブ管理装置201により、OSインスタンスのCPU能力を減少させて(ステップS1909)、本フローチャートによる一連の処理を終了する。
また、ステップS1906において、平均負荷量Cが下限値Cminより大きい場合(ステップS1906:No)、本フローチャートによる一連の処理を終了する。
これにより、クラウド環境203にかかる負荷に応じてOSインスタンスの数やCPU能力を増減させることにより、クラウド環境203に割り当てられたジョブにより実現される業務の遅延を回避するとともに、無駄な計算資源の使用を抑制することができる。
なお、上述した説明では、クラウド環境203に含まれるサーバ群の平均負荷量Cとして、CPU使用量の平均値を用いることにしたが、I/O使用量の平均値を用いることにしてもよい。この場合、クラウド環境203のサイジング時において、増減対象となるのはメモリとOSインスタンスである。
(マシンリプレース)
つぎに、スケジューリングシステム200におけるマシンリプレースについて説明する。マシンリプレースとは、古くなったマシンや破損したマシンを新しいマシンに置き換えることである。
図20は、マシンリプレース時の動作例を示す説明図である。図20の(20−1)において、マシンM1〜M4およびクラウド環境203が示されている。ここで、マシンM2は、リプレース対象となるマシンである。
この場合、設定画面1100において、リプレース対象となるマシンM2で実行する予定だったジョブ群について、マシンM1〜M4の優先度として「×」を設定することで、該ジョブ群の投入先の候補からマシンM1〜M4を除外することができる。
また、設定画面1100において、リプレース対象となるマシンM2で実行する予定だったジョブ群について、クラウド環境203の優先度を「1」に設定する。この結果、ジョブ管理装置201により、マシンM2で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境203に割り当てることができる(図20の(20−2)参照)。
このように、運用環境のマシンリプレース時に、リプレース対象となるマシンM2で実行する予定だったジョブ群を一時的にクラウド環境203で実行させることにより、マシンリプレース時の環境の変化に柔軟に対応することができる。
(クラウド移行)
つぎに、スケジューリングシステム200のマシンM1〜M4で実行する予定だったジョブ群をクラウド環境203へ移行する場合について説明する。
図21および図22は、クラウド移行時の動作例を示す説明図である。図21の(21−1)において、マシンM1〜M4およびクラウド環境203が示されている。
ここで、マシンM4を移行対象とする。この場合、設定画面1100において、移行対象となるマシンM4で実行する予定だったジョブ群について、マシンM1〜M4の優先度として「×」を設定し、クラウド環境203の優先度を「1」に設定する。
この結果、ジョブ管理装置201により、マシンM4で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境203に割り当てることができる(図21の(21−2)参照)。
つぎに、マシンM3を移行対象とする。この場合、設定画面1100において、移行対象となるマシンM3で実行する予定だったジョブ群について、マシンM1〜M4の優先度として「×」を設定し、クラウド環境203の優先度を「1」に設定する。
この結果、ジョブ管理装置201により、マシンM3で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境203に割り当てることができる(図21の(21−3)参照)。
つぎに、マシンM2を移行対象とする。この場合、設定画面1100において、移行対象となるマシンM2で実行する予定だったジョブ群について、マシンM1〜M4の優先度として「×」を設定し、クラウド環境203の優先度を「1」に設定する。
この結果、ジョブ管理装置201により、マシンM2で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境203に割り当てることができる(図21の(21−4)参照)。
つぎに、マシンM1を移行対象とする。この場合、設定画面1100において、移行対象となるマシンM1で実行する予定だったジョブ群について、マシンM1〜M4の優先度として「×」を設定し、クラウド環境203の優先度を「1」に設定する。
この結果、ジョブ管理装置201により、マシンM1で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境203に割り当てることができる(図21の(21−5)参照)。
このように、スケジューリングシステム200のマシンM1〜M4で実行する予定だった全ジョブをクラウド環境203へ移行する際に、クラウド環境203で実行するジョブの割合を徐々に増やすことにより、シームレスなクラウド移行が可能となる。
以上説明した実施の形態2にかかるジョブ管理装置201によれば、当日当時までの時間帯と同一時間帯におけるマシンMの負荷状態が当日と近似する過去の実行日に実行されたジョブJの処理時間に基づいて、当日のジョブJの予測処理時間を算出することができる。
また、ジョブ管理装置201によれば、当日当時までの時間帯におけるマシンMの平均負荷量と、ジョブJが実行された過去の実行日の同一時間帯におけるマシンMの平均負荷量との差分が閾値以下となる実行日D1〜DKを特定することができる。これにより、当日当時までの時間帯におけるマシンMの負荷状態と近似する負荷状態でジョブJが実行された過去の実行日を特定することができる。
また、ジョブ管理装置201によれば、当日当時までの時間帯におけるマシンMの平均負荷量と、ジョブJが実行された過去の実行日の同一時間帯におけるマシンMの平均負荷量との差分が小さい上位K個の実行日D1〜DKを特定することができる。これにより、当日当時までの時間帯におけるマシンMの負荷状態と近似する負荷状態でジョブJが実行された過去の実行日を特定することができる。
また、ジョブ管理装置201によれば、ジョブJの開始予定時刻から予測処理時間が経過した終了予測時刻が、ジョブJの終了予定時刻を超過する場合、ジョブJの終了予測時刻が終了予定時刻を超過することを示す警告情報を出力することができる。これにより、ユーザは、ジョブJの終了予測時刻が終了予定時刻を超過していることを把握することができ、ジョブJの開始予定時刻を変更するなどして、ジョブJの実行が終了予定時刻までに完了するような対応を行うことができる。
また、ジョブ管理装置201によれば、ジョブJの終了予測時刻が終了予定時刻を超過する場合、ジョブJの終了予測時刻が終了予定時刻を超過しないように、当時に実行されるジョブJの開始予定時刻を変更することができる。これにより、ユーザは、ジョブJの終了予定時刻を超過しないようなジョブJの開始予定時刻を把握することができる。また、変更後のジョブJの開始予定時刻を既存のスケジューラに与えることにより、ジョブJの実行が終了予定時刻前に完了するようにスケジューリングすることができる。
また、ジョブ管理装置201によれば、当日に実行が開始されたジョブJの開始時刻と、現在時刻と、ジョブJの予測処理時間とに基づいて、ジョブJの進捗率を算出して、進捗状況画面1000に表示することができる。これにより、ユーザは、ジョブJの進捗率を把握することができる。
また、ジョブ管理装置201によれば、処理対象となるジョブJの投入先候補となる各々のマシンに設定されている優先度に基づいて、ジョブJの投入先のマシンMを選択することができる。これにより、重要度の高いジョブJは高性能のマシンMで実行させ、重要度の低いジョブJは低性能のマシンMで実行させるなどの運用を行うことができる。
また、ジョブ管理装置201によれば、処理対象となるジョブJの投入先として、マシンの負荷量が予め設定された負荷量の閾値未満となるマシンMを選択することができる。これにより、投入先のマシンMにジョブJを割り当てた結果、マシンMに負荷がかかりすぎてジョブJの処理時間が長くなるような状況を回避することができる。
また、オンプレミス環境のマシンM1〜Mnよりもクラウド環境203の優先度を低く設定することで、オンプレミス環境が高負荷の場合に限りジョブJをクラウド環境203で実行させる運用を行うことができる。この結果、クラウド環境203の利用料をできるだけ切りつめて課金を最低限に抑えることができる。
これらのことから、ジョブ管理装置201によれば、日々変動する業務量やデータ量により変化するマシンMの負荷状態に合わせて、ジョブJの実行が指定した時間内に完了するように、ジョブJの開始予定時刻を最適化することができる。
なお、本実施の形態で説明した予測方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本予測プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本予測プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
期間内にジョブが実行された一定の時間幅の複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定し、
特定した前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する、
処理を実行させることを特徴とする予測プログラム。
(付記2)前記期間を特定する処理において、前記複数の期間ごとに、期間内の前記計算機の平均負荷量と、前記ジョブの実行を予定された期間における前記計算機の平均負荷量と、についての差分が閾値以下である場合に、前記所定の類似関係にあると判断する、
ことを特徴とする付記1に記載の予測プログラム。
(付記3)前記期間を特定する処理において、前記複数の期間ごとに、期間内の前記計算機の平均負荷量と、前記ジョブの実行を予定された期間における前記計算機の平均負荷量と、についての差分が小さい上位複数個の期間を前記所定の類似関係にあると判断する、
ことを特徴とする付記1または2に記載の予測プログラム。
(付記4)前記予測する処理は、
実行を予定された前記ジョブの処理時間を、前記複数個の期間それぞれについての前記計算機の平均負荷量の平均値とする処理である、
ことを特徴とする付記3に記載の予測プログラム。
(付記5)前記コンピュータに、
予め設定された前記ジョブの開始予定時刻と終了予定時刻とに基づいて、実行を予定された前記ジョブの開始予定時刻から、予測した前記処理時間が経過した終了予測時刻が、実行を予定された前記ジョブの終了予定時刻を超過するか否かを判定し、
前記終了予定時刻を超過する場合、実行を予定された前記ジョブの前記終了予測時刻が前記終了予定時刻を超過することを示す情報を出力する、
処理を実行させることを特徴とする付記1〜4のいずれか一つに記載の予測プログラム。
(付記6)前記コンピュータに、
前記終了予定時刻を超過する場合、実行を予定された前記ジョブの前記終了予測時刻が前記終了予定時刻を超過しないように、実行を予定された前記ジョブの開始予定時刻を変更し、
変更前記開始予定時刻を出力する、
処理を実行させることを特徴とする付記1〜5のいずれか一つに記載の予測プログラム。
(付記7)前記コンピュータに、
実行される前記ジョブの開始時刻と、現在時刻と、実行を予定された前記ジョブの前記予測処理時間とに基づいて、前記ジョブの進捗度合いを表す進捗値を算出し、
算出した前記ジョブの進捗度を出力する、
処理を実行させることを特徴とする付記1〜6のいずれか一つに記載の予測プログラム。
(付記8)前記計算機の負荷情報は、前記計算機のCPU使用量または/およびメモリ使用量を含む、
ことを特徴とする付記1〜7のいずれか一つに記載の予測プログラム。
(付記9)前記複数の期間のそれぞれは、所定の周期において同じ時間帯を占める期間である、
ことを特徴とする付記1〜8のいずれか一つに記載の予測プログラム。
(付記10)期間内にジョブが実行された一定の時間幅の複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段と、
前記記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定する特定部と、
前記特定部によって特定された前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する算出部と、
を備えることを特徴とする予測装置。
(付記11)コンピュータが、
期間内にジョブが実行された一定の時間幅の複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定し、
特定した前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する、
処理を実行することを特徴とする予測方法。