(57)【特許請求の範囲】
【請求項１】
コンピュータに、
ジョブが実行された複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定し、
特定した前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する、
処理を実行させることを特徴とする予測プログラム。
【請求項２】
請求項１に記載の予測プログラムであって、前記記憶手段は、期間内にジョブが実行された一定の時間幅の複数の期間ごとに、前記計算機の負荷状態を表す前記負荷情報と、期間内に実行された前記ジョブの処理時間とを記憶することを特徴とする予測プログラム。
【請求項３】
前記期間を特定する処理において、前記複数の期間ごとに、期間内の前記計算機の平均負荷量と、前記ジョブの実行を予定された期間における前記計算機の平均負荷量と、についての差分が閾値以下である場合に、前記所定の類似関係にあると判断する、
ことを特徴とする請求項１または２に記載の予測プログラム。
【請求項４】
前記期間を特定する処理において、前記複数の期間ごとに、期間内の前記計算機の平均負荷量と、前記ジョブの実行を予定された期間における前記計算機の平均負荷量と、についての差分が小さい上位複数個の期間を前記所定の類似関係にあると判断する、
ことを特徴とする請求項１〜３のいずれか一つに記載の予測プログラム。
【請求項５】
前記予測する処理は、
実行を予定された前記ジョブの処理時間を、前記複数個の期間それぞれについての前記計算機の処理時間の平均値とする処理である、
ことを特徴とする請求項４に記載の予測プログラム。
【請求項６】
前記コンピュータに、
予め設定された前記ジョブの開始予定時刻と終了予定時刻とに基づいて、実行を予定された前記ジョブの開始予定時刻から、予測した前記処理時間が経過した終了予測時刻が、実行を予定された前記ジョブの終了予定時刻を超過するか否かを判定し、
前記終了予定時刻を超過する場合、実行を予定された前記ジョブの前記終了予測時刻が前記終了予定時刻を超過することを示す情報を出力する、
処理を実行させることを特徴とする請求項１〜５のいずれか一つに記載の予測プログラム。
【請求項７】
前記コンピュータに、
前記終了予定時刻を超過する場合、実行を予定された前記ジョブの前記終了予測時刻が前記終了予定時刻を超過しないように、実行を予定された前記ジョブの開始予定時刻を変更し、
変更した前記開始予定時刻を出力する、
処理を実行させることを特徴とする請求項６に記載の予測プログラム。
【請求項８】
前記コンピュータに、
実行される前記ジョブの開始時刻と、現在時刻と、実行を予定された前記ジョブの予測した前記処理時間とに基づいて、前記ジョブの進捗度合いを表す進捗値を算出し、
算出した前記ジョブの進捗度を出力する、
処理を実行させることを特徴とする請求項１〜７のいずれか一つに記載の予測プログラム。
【請求項９】
前記計算機の負荷情報は、前記計算機のＣＰＵ使用量または／およびメモリ使用量を含む、ことを特徴とする請求項１〜８のいずれか一つに記載の予測プログラム。
【請求項１０】
前記複数の期間のそれぞれは、所定の周期において同じ時間帯を占める期間である、ことを特徴とする請求項１〜９のいずれか一つに記載の予測プログラム。
【請求項１１】
ジョブが実行された複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段と、
前記記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定する特定部と、
前記特定部によって特定された前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する算出部と、
を備えることを特徴とする予測装置。
【請求項１２】
コンピュータが、
ジョブが実行された複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定し、
特定した前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する、
処理を実行することを特徴とする予測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの処理時間の予測値を算出する予測プログラム、予測装置および予測方法に関する。
【背景技術】
【０００２】
従来、システムの安定稼働および低コスト化を図る技術として、サーバの電源投入／切断、サービスの起動／停止およびジョブのスケジューリング等を自動化するものがある。一方で、一日の業務を時間内に完了させるために、ジョブの実行にかかる処理時間を予測して終了予定時刻を超過しそうなものがある場合には人手による回避を行っている。
【０００３】
関連する先行技術としては、例えば、予め登録されたスケジュールを変更してジョブシナリオを実行させる場合、変更後の時間帯に予定されている他のジョブシナリオの影響を考慮したジョブシナリオの処理予定時間を算出するものがある。また、ジョブ実行状況に則したプログラム入替を行う先行技術がある。また、ジョブの実行時間の実績を構成要素に分けて蓄積しておき、蓄積してあるジョブ処理履歴をもとにジョブの実行時間を予測してジョブのスケジューリングを行う先行技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２３１６９４号公報
【特許文献２】特開２００５−２０８７６７号公報
【特許文献３】特開平０４−３２６４３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ジョブの実行にかかる処理時間を予測することが難しいという問題がある。例えば、ジョブの投入先となる計算機の負荷状況は、日々変動する業務量やデータ量により変化するため、該計算機で実行されるジョブの処理時間を予測することが難しい。
【０００６】
一側面では、本発明は、計算機の負荷状況に応じたジョブの実行にかかる処理時間の予測精度の劣化を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、期間内にジョブが実行された一定の時間幅の複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定し、特定した前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する予測プログラム、予測装置および予測方法が提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、計算負荷状況に応じたジョブの実行にかかる処理時間を予測精度の劣化を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかる予測方法の一実施例を示す説明図である。
【図２】図２は、実施の形態２にかかるスケジューリングシステムのシステム構成例を示す説明図である。
【図３】図３は、実施の形態２にかかるジョブ管理装置のハードウェア構成例を示すブロック図である。
【図４】図４は、スケジュールテーブルの記憶内容の一例を示す説明図である。
【図５】図５は、実施の形態２にかかるジョブ管理装置の機能的構成例を示すブロック図である。
【図６】図６は、処理時間テーブルの記憶内容の一例を示す説明図である。
【図７】図７は、スケジュール情報の具体例を示す説明図である。
【図８】図８は、警告情報の具体例を示す説明図である。
【図９】図９は、スケジュールテーブルの記憶内容の変遷例を示す説明図である。
【図１０】図１０は、進捗状況画面の画面例を示す説明図である。
【図１１】図１１は、設定画面の画面例を示す説明図である。
【図１２】図１２は、ジョブＪの開始予定時刻の変更例を示す説明図（その１）である。
【図１３】図１３は、ジョブＪの開始予定時刻の変更例を示す説明図（その２）である。
【図１４】図１４は、ジョブＪの開始予定時刻の変更例を示す説明図（その３）である。
【図１５】図１５は、実施の形態２にかかるジョブ管理装置のジョブ管理処理手順の一例を示すフローチャートである。
【図１６】図１６は、投入先決定処理の具体的処理手順の一例を示すフローチャートである。
【図１７】図１７は、予測処理時間算出処理の具体的処理手順の一例を示すフローチャートである。
【図１８】図１８は、変更処理の具体的処理手順の一例を示すフローチャートである。
【図１９】図１９は、サイジング処理の具体的処理手順の一例を示すフローチャートである。
【図２０】図２０は、マシンリプレース時の動作例を示す説明図である。
【図２１】図２１は、クラウド移行時の動作例を示す説明図（その１）である。
【図２２】図２２は、クラウド移行時の動作例を示す説明図（その２）である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる予測プログラム、予測装置および予測方法の実施の形態を詳細に説明する。
【００１１】
（実施の形態１）
図１は、実施の形態１にかかる予測方法の一実施例を示す説明図である。図１において、予測装置１００は、負荷情報ＤＢ（データベース）１１０にアクセス可能であり、処理対象となるジョブの処理時間を予測するコンピュータである。
【００１２】
ここで、ジョブとは、コンピュータが処理する仕事の単位である。具体的には、例えば、ジョブは、バッチ業務やオンライン業務を実現する一連のプログラム群のうちの一部または全部のプログラムである。
【００１３】
負荷情報ＤＢ１１０は、一定の時間幅で区切られた期間ごとに、処理対象となるジョブの投入先の計算機の負荷状態を表す負荷情報を記憶するデータベースである。一定の時間幅で区切られた期間とは、時間軸を任意に設定された時間幅で区切った各々の期間である。例えば、期間は、時間軸を日ごとに区切った各々の期間であってもよく、また、時間軸を週ごとに区切った各々の期間であってもよい。
【００１４】
計算機の負荷状態を表す負荷情報とは、例えば、時間の経過に伴って変化する計算機の負荷量を示す情報である。具体的には、例えば、負荷情報は、各期間における所定の時間間隔（例えば、１分、１０分、１時間など）ごとの計算機の負荷量を表す情報である。計算機の負荷量として、例えば、計算機のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）使用量やＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）使用量などを用いることができる。
【００１５】
ここで、計算機の負荷状態は、実行中のプログラム数や各々のプログラムで処理されるデータ量により変化する。また、ジョブの処理時間は、同一の計算機で実行する場合であっても、該計算機の負荷状態に応じて変化する。例えば、投入先となる計算機で、処理対象となるジョブとは異なる他のプログラムを実行中の場合、他のプログラムを実行してない場合に比べてジョブの処理時間が長くなる傾向にある。
【００１６】
そこで、実施の形態１では、例えば、計算機の負荷傾向が、ジョブを実行する当日と似通っている日に実行されたジョブの実績処理時間をもとに、当日のジョブの予測処理時間を求めることで、日々変動する計算機の負荷状態を考慮したジョブの処理時間を予測する。すなわち、予測装置１００が、過去に実行されたジョブの実績処理時間に基づいて、該ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における該実行を予定されたジョブの予測処理時間を算出する。
【００１７】
以下、予測装置１００の予測処理の一例について説明する。ここでは、一定の時間幅で区切られた期間として、時間軸を日ごとに区切った各々の期間を例に挙げて説明する。また、処理対象となるジョブとして、毎週月曜日に実行されるジョブＪを例に挙げて説明する。
【００１８】
図１において、時間を表す横軸と負荷量を表す縦軸とから直交座標系において、時間の経過に伴って変化する計算機の負荷量を表すグラフ１０１〜１０８が示されている。計算機は、処理対象となるジョブＪの投入先となる計算機である。
【００１９】
ここで、グラフ１０１は、４月１１日（月）の９時から１２時までの計算機の負荷量の変動を表している。グラフ１０２は、４月１８日（月）の９時から１２時までの計算機の負荷量の変動を表している。グラフ１０３は、４月２５日（月）の９時から１２時までの計算機の負荷量の変動を表している。グラフ１０４は、５月２日（月）の９時から１２時までの計算機の負荷量の変動を表している。
【００２０】
グラフ１０５は、５月９日（月）の９時から１２時までの計算機の負荷量の変動を表している。グラフ１０６は、５月１６日（月）の９時から１２時までの計算機の負荷量の変動を表している。グラフ１０７は、５月２３日（月）の９時から１２時までの計算機の負荷量の変動を表している。グラフ１０８は、５月３０日（月）の９時から１２時までの計算機の負荷量の変動を表している。
【００２１】
ここでは、５月３０日（月）の１２時以降に、投入先の計算機でジョブＪの実行を開始する場合のジョブＪの予測処理時間を算出する場合を例に挙げて説明する。
【００２２】
（１）予測装置１００は、負荷情報ＤＢ１１０の中から、処理対象となるジョブＪを実行する当日の所定の時間帯における投入先の計算機の負荷情報を取得する。計算機の負荷情報は、例えば、計算機の負荷量の平均値（以下、「平均負荷量」という）である。ここでは、所定の時間帯を「９時〜１２時の時間帯」とする。この場合、予測装置１００は、例えば、負荷情報ＤＢ１１０の中から、５月３０日（月）の９時〜１２時の時間帯における計算機の平均負荷量を表す負荷情報を取得する。
【００２３】
（２）予測装置１００は、計算機でジョブＪが実行された過去の実行日の中から、９時〜１２時の時間帯における計算機の負荷状態が当日の９時〜１２時の時間帯における計算機の負荷状態と近似する実行日を特定する。
【００２４】
すなわち、予測装置１００が、計算機でジョブＪが実行された過去の期間の中から、ジョブＪの実行を予定された期間における計算機の負荷状態と所定の類似関係にある期間を特定する。所定の類似関係にある期間とは、例えば、計算機でジョブＪが実行された過去の期間のうち、計算機の負荷状態が、ジョブＪの実行を予定された期間における計算機の負荷状態と近似する期間である。
【００２５】
具体的には、例えば、所定の類似関係にある期間は、計算機でジョブＪが実行された過去の期間内の計算機の平均負荷量と、ジョブＪの実行を予定された期間における計算機の平均負荷量と、についての差分が閾値以下となる期間であってもよい。また、例えば、所定の類似関係にある期間は、計算機でジョブＪが実行された過去の期間内の計算機の平均負荷量と、ジョブＪの実行を予定された期間における計算機の平均負荷量と、についての差分が小さい上位複数個の期間であってもよい。
【００２６】
図１の例では、計算機でジョブＪが実行された過去の実行日は、４月１１日（月）、４月１８日（月）、４月２５日（月）、５月２日（月）、５月９日（月）、５月１６日（月）および５月２３日（月）である。
【００２７】
具体的には、例えば、予測装置１００は、上記実行日の中から、５月３０日（月）の９時〜１２時の時間帯における計算機の平均負荷量と、過去の実行日の９時〜１２時の時間帯における計算機の平均負荷量との差分が閾値以下となる実行日を特定する。
【００２８】
なお、当日の９時〜１２時の時間帯における計算機の平均負荷量は、例えば、当日の９時〜１２時の時間帯における計算機の負荷情報から特定される。また、過去の実行日の９時〜１２時の時間帯における計算機の平均負荷量は、過去の実行日の９時〜１２時の時間帯における計算機の負荷情報から特定される。
【００２９】
これにより、「９時〜１２時の時間帯」における計算機の負荷状態が当日と近似する過去の実行日を特定することができる。図１の例では、「９時〜１２時の時間帯」における計算機の負荷状態が当日「５月３０日（月）」と近似する実行日として、４月１１（月）と５月２日（月）と５月１６日（月）が特定されている。
【００３０】
（３）予測装置１００は、特定した実行日に実行されたジョブＪの処理時間に基づいて、投入先の計算機で当日に実行されるジョブＪの予測処理時間を算出する。ここで、処理時間とは、例えば、ジョブＪを起動してからジョブＪの実行が完了するまでにかかる実行時間である。
【００３１】
具体的には、例えば、予測装置１００は、特定した実行日に実行されたジョブＪの処理時間の平均値を算出することにより、投入先の計算機で当日の１２時以降に実行されるジョブＪの予測処理時間を算出する。なお、特定した実行日に実行されたジョブＪの処理時間は、例えば、ジョブＪの投入先の計算機から取得される。
【００３２】
一例として、４月１１日（月）に実行されたジョブＪの処理時間を「２０分」、５月２日（月）に実行されたジョブＪの処理時間を「１５分」、５月１６日（月）に実行されたジョブＪの処理時間を「２５分」とする。この場合、ジョブＪの予測処理時間は「２０分」となる。
【００３３】
（４）予測装置１００は、算出したジョブＪの予測処理時間を出力する。ここでは、投入先の計算機において、５月３０日（月）の１２時以降にジョブＪを実行した場合の予測処理時間「２０（分）」が出力される。
【００３４】
以上説明した実施の形態１にかかる予測装置１００によれば、当日当時までの時間帯と同一時間帯における計算機の負荷状態が当日と近似する過去の実行日に実行されたジョブＪの処理時間に基づいて、当日のジョブＪの予測処理時間を算出することができる。これにより、投入先となる計算機の当日の負荷傾向に応じたジョブの予測処理時間を求めることができ、単純に過去のジョブＪの処理時間の平均等を求める場合に比べて、より高精度にジョブの処理時間を予測することができる。
【００３５】
（実施の形態２）
つぎに、実施の形態２にかかるスケジューリングシステム２００について説明する。実施の形態２では、実施の形態１で説明した予測装置１００をスケジューリングシステム２００内のジョブ管理装置２０１に適用した場合について説明する。なお、実施の形態１で説明した箇所と同様の箇所については説明を省略する。
【００３６】
図２は、実施の形態２にかかるスケジューリングシステムのシステム構成例を示す説明図である。図２において、スケジューリングシステム２００は、ジョブ管理装置２０１と、情報収集装置２０２と、マシンＭ１〜Ｍｎ（ｎ：２以上の自然数）と、クラウド環境２０３と、を含む構成である。スケジューリングシステム２００において、ジョブ管理装置２０１、情報収集装置２０２、マシンＭ１〜Ｍｎおよびクラウド環境２０３は、有線または無線のネットワーク２１０を介して接続されている。ネットワーク２１０は、例えば、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などである。
【００３７】
ここで、ジョブ管理装置２０１は、処理対象となるジョブを管理するコンピュータである。具体的には、例えば、ジョブ管理装置２０１は、ジョブのスケジューリング、ジョブの実行状況の監視およびマシンＭ１〜Ｍｎの電源投入／切断などを行う機能を有する。また、ジョブ管理装置２０１は、情報収集装置２０２を介して、負荷情報ＤＢ１１０にアクセス可能である。
【００３８】
情報収集装置２０２は、負荷情報ＤＢ１１０を備え、各マシンＭ１〜Ｍｎの負荷情報を収集する機能を有するコンピュータである。負荷情報は、各マシンＭ１〜Ｍｎの負荷状態を特徴付ける情報であり、例えば、各マシンＭ１〜ＭｎのＣＰＵ使用量やＩ／Ｏ使用量などの負荷量を表す情報である。ＣＰＵ使用量は、例えば、各マシンＭ１〜ＭｎのＣＰＵの使用率である。Ｉ／Ｏ使用量は、例えば、各マシンＭ１〜Ｍｎの物理ディスクの読み取りバイト数と書き込みバイト数とを足し合わせた値である。
【００３９】
具体的には、例えば、情報収集装置２０２は、各マシンＭ１〜Ｍｎに導入された各エージェントにより定期的（例えば、１分間隔）に収集される負荷情報を各マシンＭ１〜Ｍｎから受信する。これにより、各マシンＭ１〜Ｍｎの負荷情報を周期的に収集することができる。
【００４０】
収集された各マシンＭ１〜Ｍｎの負荷情報は、例えば、負荷情報ＤＢ１１０に記憶される。また、処理対象となるジョブの多くは、特定の曜日に毎週繰り返し実行されたり、特定の日にちに毎月繰り返し実行されるという特性を有している。このため、情報収集装置２０２は、各マシンＭ１〜Ｍｎの負荷量の平均値を曜日単位や日にち単位で求めて負荷情報ＤＢ１１０に記憶することにしてもよい。
【００４１】
また、情報収集装置２０２は、特定の時期における特定の計算機の負荷量をジョブ管理装置２０１から要求されると、例えば、特定の時期における特定の計算機の平均負荷量を計算して、ジョブ管理装置２０１に応答することにしてもよい。
【００４２】
マシンＭ１〜Ｍｎは、処理対象となるジョブを実行するコンピュータである。マシンＭ１〜Ｍｎは、例えば、オンプレミス環境のサーバ、ＰＣ（パーソナル・コンピュータ）、サーバ上で動作する仮想計算機などである。各マシンＭ１〜Ｍｎには、各マシンＭ１〜Ｍｎの負荷情報を定期的に収集するエージェント（ソフトウェア）が導入されている。
【００４３】
また、マシンＭ１〜Ｍｎは、エージェントにより収集した負荷情報を情報収集装置２０２に送信する機能を有する。具体的には、例えば、マシンＭ１〜Ｍｎは、エージェントにより負荷情報が収集されると、その都度、該負荷情報を情報収集装置２０２に送信する。この結果、情報収集装置２０２において、各マシンＭ１〜Ｍｎの負荷情報が周期的に収集される。
【００４４】
クラウド環境２０３は、処理対象となるジョブを実行するサーバ群を含むクラウドコンピューティングシステムである。具体的には、例えば、サーバ群は、データセンタのＷｅｂサーバ、アプリケーションサーバ、データベースサーバなどである。情報収集装置２０２は、クラウド環境２０３に含まれるサーバ群の負荷情報を収集することにしてもよい。
【００４５】
なお、上述した説明では、ジョブ管理装置２０１と情報収集装置２０２とを別体に設けることにしたが、これに限らない。例えば、ジョブ管理装置２０１が、負荷情報ＤＢ１１０を備え、情報収集装置２０２の機能を有することにしてもよい。
【００４６】
（ジョブ管理装置２０１のハードウェア構成例）
図３は、実施の形態２にかかるジョブ管理装置のハードウェア構成例を示すブロック図である。図３において、ジョブ管理装置２０１は、ＣＰＵ３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、光ディスクドライブ３０６と、光ディスク３０７と、ディスプレイ３０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０９と、キーボード３１０と、マウス３１１と、スキャナ３１２と、プリンタ３１３と、を備えている。また、各構成部はバス３００によってそれぞれ接続されている。
【００４７】
ここで、ＣＰＵ３０１は、ジョブ管理装置２０１の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００４８】
光ディスクドライブ３０６は、ＣＰＵ３０１の制御にしたがって光ディスク３０７に対するデータのリード／ライトを制御する。光ディスク３０７は、光ディスクドライブ３０６の制御で書き込まれたデータを記憶したり、光ディスク３０７に記憶されたデータをコンピュータに読み取らせたりする。
【００４９】
ディスプレイ３０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ３０８は、例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００５０】
Ｉ／Ｆ３０９は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他の装置に接続される。そして、Ｉ／Ｆ３０９は、ネットワーク２１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０９には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００５１】
キーボード３１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス３１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００５２】
スキャナ３１２は、画像を光学的に読み取り、ジョブ管理装置２０１内に画像データを取り込む。なお、スキャナ３１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ３１３は、画像データや文書データを印刷する。プリンタ３１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【００５３】
なお、ジョブ管理装置２０１は、例えば、上述した構成部のうち光ディスクドライブ３０６、光ディスク３０７、スキャナ３１２およびプリンタ３１３等を備えないことにしてもよい。また、図２に示した情報収集装置２０２、マシンＭ１〜Ｍｎおよびクラウド環境２０３に含まれるサーバ群についても、上述したジョブ管理装置２０１と同様のハードウェア構成により実現することができる。
【００５４】
（スケジュールテーブル４００の記憶内容）
つぎに、ジョブ管理装置２０１が用いるスケジュールテーブル４００の記憶内容について説明する。スケジュールテーブル４００は、例えば、図３に示したＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置により実現される。
【００５５】
図４は、スケジュールテーブルの記憶内容の一例を示す説明図である。図４において、スケジュールテーブル４００は、ジョブ名、開始日、開始予定時刻、終了予定時刻、予測処理時間、終了予測時刻、パラメータ、投入先、ユーザ名およびコメントのフィールドを有する。各フィールドに情報を設定することで、ジョブＪ１〜Ｊｍごとのスケジュール情報４００−１〜４００−ｍがレコードとして記憶されている。
【００５６】
ここで、ジョブ名は、処理対象となるジョブの識別子である。開始日は、ジョブの実行を開始する日である。開始予定時刻は、ジョブの実行を開始する予定時刻（時：分）である。終了予定時刻は、ジョブの実行が完了する予定時刻（時：分）である。予測処理時間は、ジョブの実行にかかる予測処理時間である。
【００５７】
終了予測時刻は、ジョブの実行が完了する予測時刻（時：分）である。パラメータは、ジョブの実行に用いるパラメータに関するファイルである。投入先は、ジョブの投入先のマシンの識別子である。ユーザ名は、ジョブの依頼元であるユーザの識別子である。コメントは、ジョブに関するコメントである。
【００５８】
スケジュール情報４００−１を例に挙げると、ジョブＪ１の開始日「水曜日」、開始予定時刻「１０：００」、終了予定時刻「１０：１５」、予測処理時間「−」および終了予測時刻「−」が設定されている。また、パラメータ「ｆｉｌｅ  ｄａｔａ  １．ｄａｔ」、ユーザ名「ｒｏｏｔ」およびコメント「顧客管理」が設定されている。
【００５９】
開始日「水曜日」は、ジョブＪ１が毎週水曜日に実行されることを表している。コメント「顧客管理」は、ジョブＪ１が顧客管理の業務に関するジョブであることを表している。また、ジョブＪ１の予測処理時間、終了予測時刻および投入先は未設定「−（ｎｕｌｌ）」となっている。
【００６０】
スケジュール情報４００−２を例に挙げると、ジョブＪ２の開始日「２５日」、開始予定時刻「９：００」、終了予定時刻「１３：３０」、予測処理時間「−」および終了予測時刻「−」が設定されている。また、パラメータ「ｆｉｌｅ  ｄａｔａ  ２．ｄａｔ」、ユーザ名「ｒｏｏｔ」およびコメント「顧客管理」が設定されている。
【００６１】
開始日「２５日」は、ジョブＪ２が毎月２５日に実行されることを表している。また、ジョブＪ２の予測処理時間、終了予測時刻および投入先は未設定「−（ｎｕｌｌ）」となっている。なお、開始日として特定の日付を指定する場合は、開始日フィールドに「年月日」が設定される。
【００６２】
また、スケジュール情報４００−１〜４００−ｍは、例えば、処理対象となるジョブに関連する他のジョブを表す関連情報を含むことにしてもよい。この関連情報には、例えば、関連するジョブ群を表す情報や、関連するジョブ群の実行順序を表す情報が含まれている。
【００６３】
（ジョブ管理装置２０１の機能的構成例）
図５は、実施の形態２にかかるジョブ管理装置の機能的構成例を示すブロック図である。図５において、ジョブ管理装置２０１は、選択部５０１と、決定部５０２と、取得部５０３と、特定部５０４と、第１の算出部５０５と、判定部５０６と、変更部５０７と、第２の算出部５０８と、出力部５０９と、を含む構成である。この制御部となる機能（選択部５０１〜出力部５０９）は、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０９により、その機能を実現する。また、各機能部の処理結果は、例えば、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００６４】
選択部５０１は、処理対象となるジョブを選択する機能を有する。具体的には、例えば、選択部５０１が、図４に示したスケジュールテーブル４００を参照して、ジョブＪ１〜Ｊｍの中から、開始日が現在日のいずれかのジョブを選択することにしてもよい。また、選択部５０１が、例えば、図３に示したキーボード３１０やマウス３１１を用いたユーザの操作入力により指定されたジョブを選択することにしてもよい。
【００６５】
決定部５０２は、処理対象となるジョブの投入先の計算機を決定する機能を有する。具体的には、例えば、決定部５０２が、図２に示したマシンＭ１〜Ｍｎおよびクラウド環境２０３の中から、処理対象となるジョブの投入先のマシンを決定する。決定された決定結果は、例えば、スケジュールテーブル４００に記憶される。
【００６６】
例えば、処理対象となるジョブＪ１の投入先のマシンとしてマシンＭ１が決定された場合、スケジュール情報４００−１の投入先フィールドに「Ｍ１」が設定される。この際、スケジュール情報４００−１に、ジョブＪ１を実行するためのプログラム群の格納場所（例えば、ｃ：￥）を合わせて記憶することにしてもよい。なお、投入先となる計算機を決定する決定部５０２の具体的な処理内容については、図１１を用いて後述する。
【００６７】
以下の説明では、処理対象となるジョブを「ジョブＪ」と表記する。また、ジョブＪの投入先となる計算機を「マシンＭ」と表記する。
【００６８】
取得部５０３は、対象期間内の指定期間におけるマシンＭの負荷状態を表す負荷情報を取得する機能を有する。上述したように、期間とは、時間軸を一定の時間幅で区切った各々の期間である。対象期間とは、ジョブＪの実行を開始する予定の期間である。指定期間とは、各期間内のいずれかの期間である。指定期間は、任意に設定可能である。
【００６９】
例えば、時間軸を日ごとに区切った場合、対象期間は、ジョブＪの実行を開始する予定のいずれかの日（例えば、２０１１年５月１８日）である。また、指定期間は、ジョブＪの実行を開始する日のいずれかの時間帯（例えば、９時〜１２時の時間帯）となる。
【００７０】
また、例えば、時間軸を週ごとに区切った場合、対象期間は、ジョブＪの実行を開始する予定のいずれかの週（例えば、２０１１年の第１０週）である。また、指定期間は、ジョブＪの実行を開始する週のいずれかの曜日（例えば、月曜日）または連続する曜日群（例えば、月曜日〜水曜日）となる。
【００７１】
対象期間内の指定期間におけるマシンＭの負荷状態を表す負荷情報は、例えば、対象期間内の指定期間におけるマシンＭの平均負荷量を表す情報である。より具体的には、例えば、マシンＭの負荷状態を表す負荷情報は、マシンＭのＣＰＵ使用量の平均値およびＩ／Ｏ使用量の平均値を含む情報である。
【００７２】
具体的には、例えば、取得部５０３が、情報収集装置２０２を介して、負荷情報ＤＢ１１０の中から、対象期間内の指定期間におけるマシンＭの平均負荷量（例えば、ＣＰＵ使用量の平均値およびＩ／Ｏ使用量の平均値）を表す負荷情報を取得することにしてもよい。
【００７３】
また、取得部５０３は、マシンＭでジョブＪが実行された期間のうち、各々の期間内の指定期間におけるマシンＭの負荷状態を表す負荷情報を取得する機能を有する。具体的には、例えば、取得部５０３が、情報収集装置２０２を介して、負荷情報ＤＢ１１０の中から、特定の時期にマシンＭでジョブＪが実行された各々の期間内の指定期間におけるマシンＭの平均負荷量を表す負荷情報を取得することにしてもよい。
【００７４】
特定の時期は、任意に設定可能である。例えば、特定の時期は、現時点から所定時間（例えば、数日、数ヶ月、数年）遡った時点から現時点までの時期である。特定の時期を示す情報は、例えば、ＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。
【００７５】
以下の説明では、一定の時間幅で区切られた期間として、時間軸を日ごとに区切った各々の期間を例に挙げて説明する。また、各々の期間内の指定期間を、各々の期間内の所定の時間帯とする。
【００７６】
また、取得部５０３は、マシンＭで実行されたジョブＪの処理時間を取得する機能を有する。具体的には、例えば、取得部５０３が、マシンＭでジョブＪが実行されると、その都度、マシンＭからジョブＪの処理時間を取得する。取得されたジョブＪの処理時間は、例えば、後述の図６に示す処理時間テーブル６００に記憶される。
【００７７】
特定部５０４は、マシンＭでジョブＪが実行された期間（以下、「実行日」という）のうち、各々の実行日の所定の時間帯におけるマシンＭの負荷状態が、対象期間（以下、「当日」という）の該時間帯におけるマシンＭの負荷状態と近似する実行日を特定する。ここで、所定の時間帯は、一日のうちの任意の時間帯に設定可能であり、例えば、キーボード３１０やマウス３１１を用いたユーザの操作入力により設定される。
【００７８】
以下の説明では、所定の時間帯として、ジョブＪの実行を開始する当日の現時点までの時間帯（すなわち、当日当時までの時間帯）が設定されている場合を例に挙げて説明する。ここで、特定部５０４の具体的な処理内容の一例（下記特定処理例１〜３）について説明する。
【００７９】
・特定処理例１
特定部５０４が、当日当時までの時間帯におけるマシンＭの平均負荷量と、各実行日の該時間帯と同一時間帯におけるマシンＭの平均負荷量との差分が閾値以下となる実行日を特定する。当日当時までの時間帯におけるマシンＭの平均負荷量は、例えば、取得された当日当時までの時間帯におけるマシンＭの負荷状態を表す負荷情報から特定される。また、各実行日の該時間帯と同一時間帯におけるマシンＭの平均負荷量は、例えば、取得された該時間帯と同一時間帯におけるマシンＭの平均負荷量を表す負荷情報から特定される。
【００８０】
より具体的には、例えば、特定部５０４が、当日当時までの時間帯におけるマシンＭのＣＰＵ使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンＭのＣＰＵ使用量の平均値との差分ｄ１が閾値α以下となる実行日を特定することにしてもよい。
【００８１】
また、例えば、特定部５０４が、当日当時までの時間帯におけるマシンＭのＩ／Ｏ使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンＭのＩ／Ｏ使用量の平均値との差分ｄ２が閾値β以下となる実行日を特定することにしてもよい。
【００８２】
また、例えば、特定部５０４が、上記差分ｄ１が閾値α以下、かつ、上記差分ｄ２が閾値β以下となる実行日を特定することにしてもよい。なお、上記閾値α、βは、予め設定されてＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。
【００８３】
・特定処理例２
特定部５０４が、当日当時までの時間帯におけるマシンＭの平均負荷量と、各実行日の該時間帯と同一時間帯におけるマシンＭの平均負荷量との差分が小さい上位Ｋ個（例えば、Ｋ＝５，１０）の実行日を特定する。
【００８４】
より具体的には、例えば、特定部５０４が、当日当時までの時間帯におけるマシンＭのＣＰＵ使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンＭのＣＰＵ使用量の平均値との差分ｄ１が小さい上位Ｋ個の実行日を特定することにしてもよい。
【００８５】
また、例えば、特定部５０４が、当日当時までの時間帯におけるマシンＭのＩ／Ｏ使用量の平均値と、各実行日の該時間帯と同一時間帯におけるマシンＭのＩ／Ｏ使用量の平均値との差分ｄ２が小さい上位Ｋ個の実行日を特定することにしてもよい。
【００８６】
・特定処理例３
また、特定部５０４が、当日当時までの時間帯におけるマシンＭの平均負荷量と、各実行日の該時間帯と同一時間帯におけるマシンＭの平均負荷量との差分が閾値以内、かつ、該差分が小さい上位Ｋ個の実行日を特定することにしてもよい。
【００８７】
より具体的には、例えば、特定部５０４が、差分ｄ１が閾値α以下、かつ、差分ｄ１が小さい上位Ｋ個の実行日を特定することにしてもよい。また、例えば、特定部５０４が、差分ｄ２が閾値β以下、かつ、差分ｄ２が小さい上位Ｋ個の実行日を特定することにしてもよい。
【００８８】
以下の説明では、特定された実行日を「実行日Ｄ１〜ＤＫ」と表記する（Ｋ：１以上の自然数）。また、実行日Ｄ１〜ＤＫのうち任意の実行日を「実行日Ｄｋ」と表記する（ｋ＝１，２，…，Ｋ）。
【００８９】
第１の算出部５０５は、特定された実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間に基づいて、マシンＭで当日当時以降に実行されるジョブＪの予測処理時間を算出する機能を有する。具体的には、例えば、第１の算出部５０５が、実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間の平均値を、ジョブＪの予測処理時間として算出することにしてもよい。
【００９０】
この際、第１の算出部５０５は、実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間のうち、処理時間が長い上位複数個の処理時間（または／および処理時間が短い上位複数個の処理時間）を除外することにしてもよい。これにより、何らかの障害等によりジョブＪの処理時間が大幅に増えた場合の処理時間を排除することができ、ジョブＪの予測処理時間のバラツキを低減させることができる。
【００９１】
また、第１の算出部５０５は、実行日Ｄ１〜ＤＫの中から、当日当時までの時間帯と同一時間帯にジョブＪが実行されていない実行日を特定することにしてもよい。そして、第１の算出部５０５は、特定した実行日に実行されたジョブＪの処理時間に基づいて、マシンＭで当日当時以降に実行されるジョブＪの予測処理時間を算出することにしてもよい。
【００９２】
これにより、ジョブＪが実行されていない状況下での負荷状態が、当日の負荷状態と近似する実行日に実行されたジョブＪの処理時間をもとにジョブＪの予測処理時間を算出することができ、ジョブＪの処理時間をより高精度に予測することができる。
【００９３】
また、実行日ＤｋにジョブＪが複数回実行された場合、実行日Ｄｋに実行されたジョブＪの処理時間の平均値を、実行日Ｄｋに実行されたジョブＪの処理時間としてもよい。各実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間は、例えば、図６に示す処理時間テーブル６００から特定される。
【００９４】
ここで、マシンＭ１で過去に実行されたジョブＪ１を例に挙げて、処理時間テーブル６００の記憶内容について説明する。なお、処理時間テーブル６００は、例えば、各マシンＭで実行されたジョブＪごとに作成され、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置により実現される。
【００９５】
図６は、処理時間テーブルの記憶内容の一例を示す説明図である。図６において、処理時間テーブル６００は、ジョブ名、投入先、実行日および処理時間のフィールドを有し、各フィールドに情報を設定することで、マシンＭ１で実行されたジョブＪ１の処理時間を記憶している。
【００９６】
ここで、ジョブ名は、処理対象となるジョブＪの識別子である。投入先は、ジョブの投入先のマシンＭの識別子である。実行日は、ジョブＪが実行された年月日である。処理時間は、マシンＭで実行されたジョブＪの過去の処理時間［分］である。例えば、２０１１年３月２３日にマシンＭ１で実行されたジョブＪ１の処理時間は１５［分］である。
【００９７】
一例として、処理対象となるジョブＪを「ジョブＪ１」とし、投入先のマシンＭを「マシンＭ１」とする。また、特定された実行日Ｄ１〜ＤＫを実行日Ｄ１「２０１１／３／２３」、実行日Ｄ２「２０１１／４／６」、実行日Ｄ３「２０１１／４／２０」および実行日Ｄ４「２０１１／５／１１」とする。
【００９８】
この場合、まず、第１の算出部５０５は、処理時間テーブル６００を参照して、実行日Ｄ１〜Ｄ４にマシンＭ１で実行されたジョブＪ１の処理時間「１５［分］，２１［分］，４１［分］，１１［分］」を特定する。そして、第１の算出部５０５が、特定したジョブＪ１の処理時間「１５［分］，２１［分］，４１［分］，１１［分］」の平均値を求めることにより、ジョブＪ１の予測処理時間「２２［分］」を算出する。
【００９９】
また、上記特定部５０４の特定処理において、マシンＭのＣＰＵ使用量をもとに特定された実行日Ｄ１〜ＤＫと、マシンＭのＩ／Ｏ使用量をもとに特定された実行日Ｄ１〜ＤＫとが異なる場合がある。この場合、例えば、以下のようにジョブＪの予測処理時間を算出することにしてもよい。
【０１００】
具体的には、例えば、第１の算出部５０５が、マシンＭのＣＰＵ使用量をもとに特定された実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間に基づいて、マシンＭで当日当時以降に実行されるジョブＪの予測処理時間Ｐ１を算出する。また、第１の算出部５０５が、マシンＭのＩ／Ｏ使用量をもとに特定された実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間に基づいて、マシンＭで当日当時以降に実行されるジョブＪの予測処理時間Ｐ２を算出する。そして、第１の算出部５０５が、算出した予測処理時間Ｐ１，Ｐ２のうち、処理時間の長いほうをジョブＪの予測処理時間とすることにしてもよい。
【０１０１】
算出された算出結果は、例えば、スケジュールテーブル４００に記憶される。例えば、ジョブＪ１の予測処理時間「２２［分］」が算出された場合、スケジュール情報４００−１の予測処理時間フィールドに「２２」が設定される。また、例えば、スケジュール情報４００−１の終了予測時刻フィールドに、ジョブＪ１の開始予定時刻から予測処理時間が経過した時刻を表す「１０：２２」が設定される。
【０１０２】
なお、上述した説明では、各実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間を処理時間テーブル６００から特定することにしたが、これに限らない。例えば、第１の算出部５０５が、マシンＭに直接問い合わせて、各実行日Ｄ１〜ＤＫに実行されたジョブＪの処理時間を特定することにしてもよい。
【０１０３】
また、上述した説明では、ジョブ管理装置２０１において、マシンＭの負荷状態が当日当時までの負荷状態と近似する実行日Ｄ１〜ＤＫを特定することにしたが、これに限らない。例えば、ジョブ管理装置２０１が、情報収集装置２０２に問い合わせることにより、マシンＭの負荷状態が当日当時までの負荷状態と近似する実行日Ｄ１〜ＤＫを特定することにしてもよい。
【０１０４】
図５の説明に戻り、出力部５０９は、算出されたマシンＭで当日当時以降に実行されるジョブＪの予測処理時間を出力する機能を有する。具体的には、例えば、出力部５０９が、スケジュールテーブル４００内の処理対象となるジョブＪに関するスケジュール情報を出力することにしてもよい。ここで、出力されるスケジュール情報の具体例について説明する。
【０１０５】
図７は、スケジュール情報の具体例を示す説明図である。図７において、スケジュール情報７００は、処理対象となるジョブＪ１のジョブ名と、投入先のマシンＭ１のマシン名と、開始日と、開始予定時刻と、終了予定時刻と、予測処理時間とを関連付けて示している。
【０１０６】
スケジュール情報７００によれば、ユーザは、開始日「２０１１年５月１８日」に実行が開始されるジョブＪ１の開始予定時刻「１０時００分」、終了予定時刻「１０時１５分」および予測処理時間「２２分」を判断することができる。また、ユーザは、ジョブＪ１の開始予定時刻から予測処理時間が経過した時刻「１０時２２分」が、ジョブＪ１の終了予定時刻を超過してしまうことを把握することができる。これにより、例えば、ジョブＪ１の開始予定時刻を変更するなどして、ジョブＪ１の実行が終了予定時刻までに完了するような対応を行うことができる。
【０１０７】
なお、出力部５０９の出力形式としては、例えば、ディスプレイ３０８への表示、プリンタ３１３への印刷出力、Ｉ／Ｆ３０９による外部コンピュータへの送信がある。また、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶領域に記憶することとしてもよい。
【０１０８】
図５の説明に戻り、判定部５０６は、ジョブＪの開始予定時刻から、算出されたジョブＪの予測処理時間が経過した終了予測時刻が、ジョブＪの終了予定時刻を超過するか否かを判定する機能を有する。ジョブＪの開始予定時刻および終了予定時刻は、例えば、スケジュールテーブル４００から特定される。
【０１０９】
一例として、処理対象となるジョブＪ１の予測処理時間を「２２分」とする。この場合、ジョブＪ１の開始予定時刻「１０時００分」から予測処理時間「２２分」が経過した終了予測時刻は「１０時２２分」となる。この場合、判定部５０６が、ジョブＪ１の終了予測時刻「１０時２２分」が、ジョブＪ１の終了予定時刻「１０時１５分」を超過すると判定する。
【０１１０】
また、出力部５０９は、判定された判定結果を出力する機能を有する。具体的には、例えば、出力部５０９が、ジョブＪの終了予測時刻が終了予定時刻を超過する場合、ジョブＪの終了予測時刻が終了予定時刻を超過することを示す警告情報を出力することにしてもよい。ここで、警告情報の具体例について説明する。
【０１１１】
図８は、警告情報の具体例を示す説明図である。図８において、警告情報８００は、処理対象となるジョブＪ１の終了予測時刻が終了予定時刻を超過していることを示す情報である。具体的には、例えば、警告情報８００には、ジョブＪ１のジョブ名と、投入先のマシンＭ１のマシン名と、開始日と、開始予定時刻と、終了予定時刻と、予測処理時間とが関連付けて示されている。また、警告情報８００には、ジョブＪ１の終了予測時刻が、設定した終了予定時刻を７分超過していることを表す警告文が示されている。
【０１１２】
警告情報８００によれば、ユーザは、開始日「２０１１年５月１８日」に実行が開始されるジョブＪ１の開始予定時刻「１０時００分」、終了予定時刻「１０時１５分」および予測処理時間「２２分」を判断することができる。また、ユーザは、ジョブＪ１の終了予測時刻が終了予定時刻を７分超過していることを把握することができる。これにより、例えば、ジョブＪ１の開始予定時刻を変更するなどして、ジョブＪ１の実行が終了予定時刻までに完了するような対応を行うことができる。
【０１１３】
図５の説明に戻り、変更部５０７は、ジョブＪの終了予測時刻が終了予定時刻を超過する場合、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、ジョブＪの開始予定時刻を変更する機能を有する。具体的には、例えば、変更部５０７が、ジョブＪの開始予定時刻を、ジョブＪの終了予測時刻が終了予定時刻を超過する時間分早めた時刻に変更する。
【０１１４】
また、変更部５０７が、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、かつ、ジョブＪを実行する時間帯が他のジョブを実行する時間帯と重ならないように、ジョブＪの開始予定時刻を変更することにしてもよい。なお、変更部５０７の具体的な処理内容については、図１２〜図１４を用いて後述する。
【０１１５】
上述したジョブＪ１の例では、ジョブＪ１の終了予測時刻が終了予定時刻を７分超過している。この場合、例えば、変更部５０７が、ジョブＪ１の開始予定時刻を７分早めた時刻「９時５３分」に変更する。変更された変更結果は、例えば、スケジュールテーブル４００に記憶される。
【０１１６】
ここで、ジョブＪ１の開始予定時刻が変更される場合を例に挙げて、スケジュールテーブル４００の記憶内容の変遷例について説明する。
【０１１７】
図９は、スケジュールテーブルの記憶内容の変遷例を示す説明図である。図９の（９−１）において、スケジュールテーブル４００内のスケジュール情報４００−１には、処理対象となるジョブＪ１を投入先のマシンＭ１で実行した場合の予測処理時間「２２分」および終了予測時刻「１０：２２」が示されている。
【０１１８】
この場合、上述したように、ジョブＪ１の終了予測時刻が終了予定時刻を７分超過しているため、変更部５０７が、ジョブＪ１の開始予定時刻を７分早めた時刻「９時５３分」に変更する。この結果、図９の（９−２）において、ジョブＪ１の開始予定時刻が、当初の「１０時００分」から７分早めた「９時５３分」に変更されている。また、ジョブＪ１の終了予測時刻が、当初の「１０時２２分」から７分早めた「１０時１５分」に変更されている。
【０１１９】
図５の説明に戻り、出力部５０９は、変更された変更後のジョブＪの開始予定時刻を出力する機能を有する。具体的には、例えば、出力部５０９が、変更後のジョブＪの開始予定時刻が設定されたスケジュール情報（例えば、図９の（９−２）に示したスケジュール情報４００−１）を出力することにしてもよい。
【０１２０】
これにより、ユーザは、ジョブＪの終了予定時刻を超過しないようなジョブＪの開始予定時刻を把握することができる。また、例えば、変更後のジョブＪの開始予定時刻を既存のスケジューラに与えることにより、ジョブＪの実行が終了予定時刻前に完了するようにスケジューリングすることができる。
【０１２１】
また、変更部５０７は、ジョブＪの終了予測時刻が終了予定時刻を超過する場合、ジョブＪの開始予定時刻を早められるか否かを判断することにしてもよい。具体的には、例えば、変更部５０７が、ジョブＪの開始予定時刻を、ジョブＪの終了予測時刻が終了予定時刻を超過している時間分早めた時刻が、少なくとも現在時刻以降の時刻か否かを判断する。
【０１２２】
ここで、現在時刻以降の場合、変更部５０７が、ジョブＪの開始予定時刻を早められると判断する。そして、変更部５０７が、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、ジョブＪの開始予定時刻を変更する。
【０１２３】
一方、現在時刻よりも前の場合、変更部５０７が、ジョブＪの開始予定時刻を早められないと判断する。この場合、出力部５０９が、ジョブＪの終了予測時刻が終了予定時刻を超過することを示す警告情報（例えば、図８に示した警告情報８００）を出力することにしてもよい。
【０１２４】
第２の算出部５０８は、当日に実行が開始されたジョブＪの開始時刻と、現在時刻と、ジョブＪの予測処理時間とに基づいて、ジョブＪの進捗度合いを表す進捗値を算出する機能を有する。具体的には、例えば、第２の算出部５０８が、下記式（１）を用いて、ジョブＪの進捗度合いを表す進捗率を求めることができる。ただし、Ｆは、ジョブＪの進捗率［％］である。Ｐは、ジョブＪの予測処理時間［分］である。ｐは、ジョブＪの開始時刻から現在時刻までの時間間隔［分］である。
【０１２５】
Ｆ＝（ｐ／Ｐ）×１００      ・・・（１）
【０１２６】
一例として、ジョブＪ１の開始時刻を「９時５３分」とし、現在時刻を「１０時００分」とし、予測処理時間を「Ｐ＝２２［分］」とする。この場合、ジョブＪ１の開始時刻から現在時刻までの時間間隔ｐは「ｐ＝７［分］」となる。このため、ジョブＪ１の進捗率Ｆは、「Ｆ＝３２［％］≒（７／２２）×１００」となる。
【０１２７】
また、出力部５０９は、算出されたジョブＪの進捗度合いを表す進捗度を出力する機能を有する。具体的には、例えば、出力部５０９が、図１０に示すような進捗状況画面１０００をディスプレイ３０８に表示することにしてもよい。ここで、進捗状況画面１０００の画面例について説明する。
【０１２８】
（進捗状況画面の画面例）
図１０は、進捗状況画面の画面例を示す説明図である。図１０において、進捗状況画面１０００は、処理対象となるジョブＪの進捗状況を示す画面である。具体的には、進捗状況画面１０００には、各ジョブＪ１，Ｊ３，Ｊ５，Ｊ８のジョブ名、進捗率、終了予定時刻および進捗状況を表すガントチャートが表示されている。
【０１２９】
例えば、進捗状況画面１０００には、ジョブＪ１の進捗率「３２％」、終了予定時刻「１０：１５」およびジョブＪ１の進捗状況を表すガントチャート１００１が表示されている。これにより、ユーザは、現在時刻「１０時００分」におけるジョブＪ１の進捗率「３２％」を把握することができる。
【０１３０】
また、進捗状況画面１０００には、ジョブＪ３の進捗率「８０％」、終了予定時刻「１１：００」およびジョブＪ３の進捗状況を表すガントチャート１００２が表示されている。これにより、ユーザは、現在時刻「１０時００分」におけるジョブＪ３の進捗率「８０％」を把握することができる。
【０１３１】
また、進捗状況画面１０００には、ジョブＪ５の進捗率「１００％」、終了予定時刻「１０：００」およびジョブＪ５の進捗状況を表すガントチャート１００３が表示されている。これにより、ユーザは、現在時刻「１０時００分」において、ジョブＪ５の実行が予定より早く完了していることを把握することができる。
【０１３２】
また、進捗状況画面１０００には、ジョブＪ８の進捗率「０％」、終了予定時刻「１１：１５」、ジョブＪ８の進捗状況予定を表すガントチャート１００４および警告情報１００５が表示されている。ここで、ジョブＪ８は、現在時刻「１０時００分」において実行が開始されていないジョブである。警告情報１００５は、ジョブＪ８の終了予測時刻が終了予定時刻を超過していることを示す情報である。
【０１３３】
ガントチャート１００４および警告情報１００５によれば、ユーザは、ジョブＪ８の実行が終了予定時刻までに完了しないことを直感的に認識することができる。これにより、ユーザは、ジョブＪ８の開始予定時刻を変更するなどして、ジョブＪ８の実行が終了予定時刻までに完了するような対応を行うことができる。
【０１３４】
（決定部５０２の具体的な処理内容）
つぎに、処理対象となるジョブＪの投入先のマシンＭを決定する決定部５０２の具体的な処理内容の一例について説明する。ここでは、ジョブＪの投入先の候補となるマシン群として、図２に示したマシンＭ１〜Ｍｎおよびクラウド環境２０３を例に挙げて説明する。
【０１３５】
まず、決定部５０２は、マシンＭ１〜Ｍｎおよびクラウド環境２０３の中からいずれかのマシン（以下、「候補マシン」）を選択する。具体的には、例えば、決定部５０２が、各マシンに設定された優先度に従って、マシンＭ１〜Ｍｎおよびクラウド環境２０３の中から優先度の高い候補マシンを選択する。
【０１３６】
ここで、優先度とは、投入先の候補となるマシン群の中から候補マシンを選択する順序を表す値である。各マシンの優先度は、例えば、後述の図１１に示す設定画面１１００において、ユーザの操作入力により任意に設定される。
【０１３７】
つぎに、決定部５０２は、選択した候補マシンの過去の負荷量を取得する。ここで、候補マシンの負荷量とは、例えば、特定の時期（例えば、過去数年、数ヶ月）における候補マシンのＣＰＵ使用量の平均値やＩ／Ｏ使用量の平均値などである。
【０１３８】
例えば、処理対象となるジョブＪが毎週月曜日に実行されるものの場合、決定部５０２が、特定の時期の毎週月曜日の候補マシンの負荷量の平均値を情報収集装置２０２から取得する。また、処理対象となるジョブＪが毎月２５日に実行されるものの場合、決定部５０２が、特定の時期の毎月２５日の候補マシンの負荷量の平均値を情報収集装置２０２から取得する。
【０１３９】
そして、決定部５０２は、取得した候補マシンの負荷量が、候補マシンに設定されている負荷量の閾値以上か否かを判断する。ここで、負荷量の閾値とは、候補マシンを、ジョブＪの投入先のマシンＭとするか否かの判断基準となる値である。候補マシンの負荷量の閾値としては、例えば、各マシンのＣＰＵ使用量の平均値やＩ／Ｏ使用量の平均値などが設定される。
【０１４０】
より具体的には、例えば、負荷量の閾値は、候補マシンの負荷量が閾値以上になると、候補マシンに負荷がかかりすぎてジョブＪの処理時間が長くなるような値に設定される。各マシンの負荷量の閾値は、例えば、後述の図１１に示す設定画面１１００において、ユーザの操作入力により任意に設定される。
【０１４１】
ここで、候補マシンの負荷量が閾値未満の場合、決定部５０２は、選択した候補マシンを、処理対象となるジョブＪの投入先のマシンＭに決定する。一方、候補マシンの負荷量が閾値以上の場合、決定部５０２は、マシンＭ１〜Ｍｎおよびクラウド環境２０３の中から優先度の高い未選択の候補マシンを選択して、上述した一連の処理を繰り返す。
【０１４２】
ここで、各マシンの優先度および負荷量の閾値を設定する際に、ディスプレイ３０８に表示される設定画面１１００の画面例について説明する。ここでは、マシンＭ１〜Ｍ４およびクラウド環境２０３の中からジョブＪ１の投入先となるマシンＭを決定する場合を例に挙げて説明する。
【０１４３】
図１１は、設定画面の画面例を示す説明図である。図１１において、設定画面１１００は、投入先の候補となるマシン群の各々のマシンの優先度および負荷量の閾値と、クラウド環境２０３のクラウドサイジング閾値を設定する画面である。
【０１４４】
設定画面１１００において、マシン名（図１１中、項目１１０１）は、処理対象となるジョブＪ１の投入先の候補となるマシンの識別子である。なお、クラウド環境２０３を表すマシン名として、ここでは「クラウド」が設定されている。
【０１４５】
設定画面１１００において、優先度（図１１中、項目１１０２）は、上述したように、投入先の候補となるマシン群の中から候補マシンを選択する順序を表す値である。ここでは、優先度の値が小さいほど優先度が高いことを示している。また、特定のマシンを選択対象から除外する場合は、該マシンの優先度として「×」が設定される。
【０１４６】
設定画面１１００において、負荷量の閾値（図１１中、項目１１０３）は、上述したように、候補マシンを、ジョブＪの投入先のマシンＭとするか否かの判断基準となる値である。ここでは、負荷量の閾値として、各マシンのＣＰＵ使用量の平均値の上限値を表す値が設定されている。
【０１４７】
クラウドサイジング閾値（図１１中、項目１１０４）は、クラウド環境２０３のサイジングを行うか否かの判断基準となるクラウド環境２０３の負荷量の閾値である。負荷量の閾値としては、例えば、クラウド環境２０３に含まれるサーバ群のＣＰＵ使用量の平均値やＩ／Ｏ使用量の平均値などが設定される。
【０１４８】
ここでは、クラウドサイジング閾値として、クラウド環境２０３に含まれるサーバ群のＣＰＵ使用量の平均値の上限値および下限値が設定されている。例えば、クラウド環境２０３の負荷量が上限値を上回る場合は、クラウド環境２０３の処理能力を増加させることになる。一方、クラウド環境２０３の負荷量が下限値を下回る場合は、クラウド環境２０３の処理能力を減少させることになる。
【０１４９】
設定画面１１００において、ユーザは、キーボード３１０やマウス３１１を用いて、各種値を設定することができる。図１１の例では、マシンＭ１の優先度として「１」が設定され、マシンＭ１の負荷量の閾値として「５０」が設定されている。また、マシンＭ２の優先度として「×」が設定され、マシンＭ２の負荷量の閾値として「×」が設定されている。
【０１５０】
また、マシンＭ３の優先度として「２」が設定され、マシンＭ３の負荷量の閾値として「５０」が設定されている。また、マシンＭ４の優先度として「３」が設定され、マシンＭ４の負荷量の閾値として「５０」が設定されている。
【０１５１】
また、クラウド環境２０３の優先度として「４」が設定され、クラウド環境２０３の負荷量の閾値として「６０」が設定されている。また、クラウドサイジング閾値の上限値として「５０」が設定され、下限値として「２０」が設定されている。
【０１５２】
なお、上述した説明では、各負荷量の閾値としてＣＰＵ使用量の平均値を用いることにしたが、これに限らない。例えば、各負荷量の閾値として、Ｉ／Ｏ使用量の平均値を用いることにしてもよく、また、ＣＰＵ使用量の平均値およびＩ／Ｏ使用量の平均値を用いることにしてもよい。
【０１５３】
図１１の例では、まず、決定部５０２は、マシンＭ１〜Ｍ４およびクラウド環境２０３の中から、優先度が最も高いマシンＭ１を候補マシンとして選択する。つぎに、決定部５０２は、選択したマシンＭ１のＣＰＵ使用量の平均値を取得する。ここで、ジョブＪ１は、毎週水曜日に実行されるジョブである。
【０１５４】
このため、決定部５０２が、特定の時期の毎週水曜日のマシンＭ１のＣＰＵ使用量の平均値を情報収集装置２０２から取得する。そして、決定部５０２は、取得したマシンＭ１のＣＰＵ使用量の平均値が、マシンＭ１に設定されている負荷量の閾値「５０」以上か否かを判断する。
【０１５５】
ここで、マシンＭ１のＣＰＵ使用量の平均値が閾値未満の場合、決定部５０２は、選択したマシンＭ１を、処理対象となるジョブＪの投入先のマシンＭに決定する。一方、マシンＭ１のＣＰＵ使用量の平均値が閾値以上の場合、決定部５０２は、マシンＭ１〜Ｍｎおよびクラウド環境２０３の中から優先度の高い未選択のマシンＭ３を選択して、上述した一連の処理を繰り返す。
【０１５６】
これにより、処理対象となるジョブＪの投入先として、マシンの負荷量が予め設定された負荷量の閾値未満となるマシンＭを選択することができる。このため、投入先のマシンＭにジョブＪを割り当てた結果、マシンＭに負荷がかかりすぎてジョブＪの処理時間が長くなるような状況を回避することができる。
【０１５７】
なお、クラウドサイジング閾値に基づくクラウド環境２０３のサイジングについては、図１９に示すフローチャートを用いて後述する。
【０１５８】
（変更部５０７の具体的な処理内容）
つぎに、図１２〜図１４を用いて、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、マシンＭで実行されるジョブＪの開始予定時刻を変更する変更部５０７の具体的な処理内容の一例について説明する。
【０１５９】
図１２は、ジョブＪの開始予定時刻の変更例を示す説明図（その１）である。図１２において、ガントチャート１２０１は、マシンＭで実行される処理対象となるジョブＪの実行時間帯を表している。また、ガントチャート１２０２は、マシンＭで実行される、処理対象となるジョブＪとは異なる他のジョブの実行時間帯を表している。
【０１６０】
ここで、時刻ｔ１は、他のジョブの開始予定時刻である。時刻ｔ２は、他のジョブの終了予定時刻（または、終了予測時刻）である。また、時刻ｔ３は、処理対象となるジョブＪの開始予定時刻である。時刻ｔ６は、処理対象となるジョブＪの終了予測時刻である。時刻ｔ５は、処理対象となるジョブＪの終了予定時刻である。
【０１６１】
ここでは、ジョブＪの終了予測時刻ｔ６が終了予定時刻ｔ５を超過している。そこで、変更部５０７は、他のジョブとの多重度ができるだけ大きくならないように、かつ、ジョブＪの終了予測時刻が終了予定時刻ｔ５を超過しないように、ジョブＪの開始予定時刻を変更する。
【０１６２】
具体的には、例えば、変更部５０７が、他のジョブとの多重度ができるだけ大きくならないように、ジョブＪの開始予定時刻を少なくともジョブＪの終了予定時刻ｔ５と終了予測時刻ｔ６との時間間隔Ｔ１分早めた時刻に変更する。なお、多重度とは、実行時間帯が重複しているジョブの数を表す値である。
【０１６３】
図１２の例では、ジョブＪの開始予定時刻が時間間隔Ｔ１’（Ｔ１’＞Ｔ１）分早めた時刻ｔ２、すなわち、他のジョブの終了予定時刻に変更されている。この場合、ジョブＪの終了予測時刻ｔ４は、ジョブＪの終了予定時刻ｔ５を超過していない。また、ジョブＪと他のジョブとの実行時間帯が重複していないため多重度は「０」となる。
【０１６４】
このように、他のジョブとの多重度が大きくならないように、かつ、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、ジョブＪの開始予定時刻を変更することで、マシンＭでジョブ群（ジョブＪと他のジョブ）を効率的に実行することができる。
【０１６５】
図１３は、ジョブＪの開始予定時刻の変更例を示す説明図（その２）である。図１３において、ガントチャート１３０１は、マシンＭで実行されるジョブＪａの実行時間帯を表している。ガントチャート１３０２は、マシンＭで実行されるジョブＪｂの実行時間帯を表している。ガントチャート１３０３は、マシンＭで実行されるジョブＪｃの実行時間帯を表している。
【０１６６】
ジョブＪｃは開始予定時刻の変更対象となるジョブＪである。また、ジョブＪａ，Ｊｂ，Ｊｃには、ジョブＪａの実行が完了した後、ジョブＪｂの実行が開始され、ジョブＪｂの実行が完了した後、ジョブＪｃの実行が開始されるという実行順序が規定されている。
【０１６７】
処理対象となるジョブＪｃの開始予定時刻の変更前において（図１３上側参照）、時刻ｔ３はジョブＪａの開始予定時刻であり、時刻ｔ５はジョブＪａの終了予定時刻（または、終了予測時刻）である。また、時刻ｔ５はジョブＪｂの開始予定時刻であり、時刻ｔ６はジョブＪｂの終了予定時刻（または、終了予測時刻）である。また、時刻ｔ６はジョブＪｃの開始予定時刻であり、時刻ｔ８はジョブＪｃの終了予測時刻である。
【０１６８】
ここで、時刻ｔ７はジョブＪｃの終了予定時刻であり、ジョブＪｃの終了予測時刻ｔ８が終了予定時刻ｔ７を超過している。また、ジョブＪｂの終了予定時刻ｔ６がジョブＪｃの開始予定時刻ｔ６となっているため、ジョブＪｃのみの開始予定時刻を早めることができない。
【０１６９】
そこで、変更部５０７は、ジョブＪｃの終了予測時刻が終了予定時刻ｔ７を超過しないように、実行順序が規定されているジョブＪａ，Ｊｂ，Ｊｃの開始予定時刻をそれぞれ変更する。具体的には、例えば、変更部５０７が、ジョブＪａ，Ｊｂ，Ｊｃの開始予定時刻を、少なくともジョブＪｃの終了予定時刻ｔ７と終了予測時刻ｔ８との時間間隔Ｔ２分早めた時刻に変更する。
【０１７０】
図１３の例では（図１３下側参照）、ジョブＪａの開始予定時刻が時間間隔Ｔ２分早めた時刻ｔ１に変更され、ジョブＪｂの開始予定時刻が時間間隔Ｔ２分早めた時刻ｔ２に変更され、ジョブＪｃの開始予定時刻が時間間隔Ｔ２分早めた時刻ｔ４に変更されている。この場合、ジョブＪｃの終了予測時刻は時刻ｔ７となり、ジョブＪｃの終了予定時刻ｔ７を超過しないことになる。
【０１７１】
図１４は、ジョブＪの開始予定時刻の変更例を示す説明図（その３）である。図１４において、ガントチャート１４０１は、マシンＭで実行されるジョブＪｄの実行時間帯を表している。ガントチャート１４０２は、マシンＭで実行されるジョブＪｅの実行時間帯を表している。ジョブＪｄ，Ｊｅの実行順序は規定されていない。ジョブＪｅは開始予定時刻の変更対象となるジョブＪである。
【０１７２】
ジョブＪｅの開始予定時刻の変更前において（図１４上側参照）、時刻ｔ１はジョブＪｄの開始予定時刻であり、時刻ｔ２はジョブＪｄの終了予定時刻（または、終了予測時刻）である。また、時刻ｔ２はジョブＪｅの開始予定時刻であり、時刻ｔ３はジョブＪｅの終了予測時刻である。
【０１７３】
ここで、時刻ｔ２はジョブＪｅの終了予定時刻であり、ジョブＪｅの終了予測時刻ｔ３が終了予定時刻ｔ２を超過している。一方、時刻ｔ４はジョブＪｄの終了予定時刻であり、ジョブＪｄの終了予測時刻ｔ２は終了予定時刻ｔ４を超過していない。
【０１７４】
このような場合、変更部５０７は、例えば、ジョブＪｄ，Ｊｅの終了予測時刻が終了予定時刻を超過しないように、ジョブＪｄ，Ｊｅの開始予定時刻をそれぞれ変更する。具体的には、例えば、変更部５０７が、ジョブＪｄの開始予定時刻をジョブＪｅの開始予定時刻とし、ジョブＪｅの開始予定時刻をジョブＪｄの開始予定時刻にする。
【０１７５】
図１４の例では（図１４下側参照）、ジョブＪｄの開始予定時刻が時刻ｔ２に変更され、ジョブＪｅの開始予定時刻が時刻ｔ１に変更されている。この場合、ジョブＪｅの終了予測時刻は時刻ｔ２となり、ジョブＪｅの終了予定時刻ｔ２を超過しないことになる。また、ジョブＪｄの終了予測時刻は時刻ｔ３となり、ジョブＪｄの終了予定時刻ｔ４を超過しないことになる。
【０１７６】
（ジョブ管理装置２０１のジョブ管理処理手順）
つぎに、実施の形態２にかかるジョブ管理装置２０１のジョブ管理処理手順について説明する。
【０１７７】
図１５は、実施の形態２にかかるジョブ管理装置のジョブ管理処理手順の一例を示すフローチャートである。図１５のフローチャートにおいて、まず、選択部５０１により、処理対象となるジョブＪを選択する（ステップＳ１５０１）。つぎに、ジョブ管理装置２０１により、ジョブＪの投入先の候補となるマシン群の各々のマシンの優先度を設定する（ステップＳ１５０２）。
【０１７８】
また、ジョブ管理装置２０１により、ジョブＪの投入先の候補となるマシン群の各々のマシンの負荷量の閾値を設定する（ステップＳ１５０３）。また、ジョブ管理装置２０１により、クラウド環境２０３のクラウドサイジング閾値として、クラウド環境２０３の負荷量の上限値Ｃｍａｘおよび下限値Ｃｍｉｎを設定する（ステップＳ１５０４）。
【０１７９】
そして、決定部５０２により、処理対象となるジョブＪの投入先のマシンＭを決定する投入先決定処理を実行する（ステップＳ１５０５）。つぎに、第１の算出部５０５により、処理対象となるジョブＪの予測処理時間を算出する予測処理時間算出処理を実行する（ステップＳ１５０６）。
【０１８０】
このあと、変更部５０７により、処理対象となるジョブＪの開始予定時刻を変更する変更処理を実行する（ステップＳ１５０７）。最後に、ジョブ管理装置２０１により、クラウド環境２０３のサイジング処理を実行して（ステップＳ１５０８）、本フローチャートによる一連の処理を終了する。
【０１８１】
これにより、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、ジョブＪの開始予定時刻を変更することができる。
【０１８２】
なお、ステップＳ１５０２〜１５０４における各種値の設定は、例えば、図１１に示した設定画面１１００においてユーザの操作入力により行われてもよく、また、予め設定された内容に従って自動で行われることにしてもよい。
【０１８３】
＜投入先決定処理手順＞
つぎに、図１５に示したステップＳ１５０５の投入先決定処理の具体的な処理手順について説明する。ここでは、ジョブＪの投入先候補となるマシン群を、図２に示したマシンＭ１〜Ｍｎおよびクラウド環境２０３とする。
【０１８４】
図１６は、投入先決定処理の具体的処理手順の一例を示すフローチャートである。図１６のフローチャートにおいて、まず、決定部５０２により、処理対象となるジョブＪの投入先候補となるマシン群を優先度が高い順にソートする（ステップＳ１６０１）。
【０１８５】
以下の説明では、処理対象となるジョブＪの投入先候補となるマシンＭ１〜Ｍｎおよびクラウド環境２０３を優先度が高い順にソートしたものを「マシンＭ［０］〜Ｍ［ｎ］」と表記する。また、マシンＭ［０］〜Ｍ［ｎ］のうち任意のマシンを「マシンＭ［ｉ］」と表記する（ｉ＝０，１，…，ｎ）。
【０１８６】
つぎに、決定部５０２により、マシンＭ［ｉ］の「ｉ」を「ｉ＝０」として（ステップＳ１６０２）、マシンＭ［０］〜Ｍ［ｎ］の中からマシンＭ［ｉ］を選択する（ステップＳ１６０３）。なお、マシンＭ［ｉ］の優先度として「×」が設定されている場合、決定部５０２はマシンＭ［ｉ］を選択することなく、ステップＳ１６０９に移行する（ただし、優先度「×」は最も優先度が低いものとして扱う）。
【０１８７】
そして、決定部５０２により、特定の時期（例えば、過去数年、数ヶ月）におけるマシンＭ［ｉ］の平均負荷量ｗ［ｉ］を情報収集装置２０２から取得する（ステップＳ１６０４）。つぎに、決定部５０２により、取得したマシンＭ［ｉ］の平均負荷量ｗ［ｊ］が、マシンＭ［ｉ］に設定されている負荷量の閾値Ｗ［ｉ］以上か否かを判断する（ステップＳ１６０５）。
【０１８８】
ここで、マシンＭ［ｉ］の平均負荷量ｗ［ｉ］が閾値Ｗ［ｉ］未満の場合（ステップＳ１６０５：Ｎｏ）、決定部５０２により、マシンＭ［ｉ］をジョブＪの投入先に決定して（ステップＳ１６０６）、図１５に示したステップＳ１５０６に移行する。
【０１８９】
一方、マシンＭ［ｉ］の平均負荷量ｗ［ｉ］が閾値Ｗ［ｉ］以上の場合（ステップＳ１６０５：Ｙｅｓ）、決定部５０２により、マシンＭ［ｉ］の「ｉ」をインクリメントする（ステップＳ１６０７）。そして、決定部５０２により、マシンＭ［ｉ］の「ｉ」が「ｎ」より大きいか否かを判断する（ステップＳ１６０８）。
【０１９０】
ここで、マシンＭ［ｉ］の「ｉ」が「ｎ」以下の場合（ステップＳ１６０８：Ｎｏ）、ステップＳ１６０３に戻る。一方、マシンＭ［ｉ］の「ｉ」が「ｎ」より大きい場合（ステップＳ１６０８：Ｙｅｓ）、決定部５０２により、マシンＭ［０］〜Ｍ［ｎ］のうち平均負荷量の超過分が最小のマシンＭ［ｉ］を特定して（ステップＳ１６０９）、ステップＳ１６０６に移行する。
【０１９１】
なお、平均負荷量の超過分とは、マシンＭ［ｉ］の平均負荷量ｗ［ｉ］とマシンＭ［ｉ］の負荷量の閾値Ｗ［ｉ］との差分である。
【０１９２】
これにより、処理対象となるジョブＪの投入先として、特定の時期におけるマシンの平均負荷量が予め設定された負荷量の閾値未満となるマシンＭを選択することができる。
【０１９３】
＜予測処理時間算出処理手順＞
つぎに、図１５に示したステップＳ１５０６の予測処理時間算出処理の具体的な処理手順について説明する。
【０１９４】
図１７は、予測処理時間算出処理の具体的処理手順の一例を示すフローチャートである。図１７のフローチャートにおいて、まず、取得部５０３により、処理対象となるジョブＪの実行を開始する当日当時までの時間帯におけるマシンＭのＣＰＵ使用量の平均値およびＩ／Ｏ使用量の平均値を表す負荷情報を取得する（ステップＳ１７０１）。
【０１９５】
つぎに、取得部５０３により、特定の時期にマシンＭでジョブＪが実行された各々の実行日の当日当時までの時間帯と同一時間帯におけるマシンＭのＣＰＵ使用量の平均値およびＩ／Ｏ使用量の平均値を表す負荷情報を取得する（ステップＳ１７０２）。
【０１９６】
そして、特定部５０４により、ジョブＪの実行日のうち、当日当時までの時間帯と同一時間帯におけるマシンＭのＣＰＵ使用量の平均値が、当日当時までの時間帯におけるマシンＭのＣＰＵ使用量の平均値と近似する実行日を特定する（ステップＳ１７０３）。このステップＳ１７０３の処理は、ステップＳ１７０１およびステップＳ１７０２において取得された負荷情報に基づいて行われる。
【０１９７】
つぎに、第１の算出部５０５により、特定された各実行日にマシンＭで実行されたジョブＪの処理時間を特定する（ステップＳ１７０４）。そして、第１の算出部５０５により、特定した各実行日のジョブＪの処理時間の平均値を求めることにより、ジョブＪの予測処理時間Ｐ１を算出する（ステップＳ１７０５）。
【０１９８】
つぎに、特定部５０４により、ジョブＪの実行日のうち、当日当時までの時間帯と同一時間帯におけるマシンＭのＩ／Ｏ使用量の平均値が、当日当時までの時間帯におけるマシンＭのＩ／Ｏ使用量の平均値と近似する実行日を特定する（ステップＳ１７０６）。このステップＳ１７０６の処理は、ステップＳ１７０１およびステップＳ１７０２において取得された負荷情報に基づいて行われる。
【０１９９】
つぎに、第１の算出部５０５により、特定された実行日にマシンＭで実行されたジョブＪの処理時間を特定する（ステップＳ１７０７）。そして、第１の算出部５０５により、特定した各実行日のジョブＪの処理時間の平均値を求めることにより、ジョブＪの予測処理時間Ｐ２を算出する（ステップＳ１７０８）。
【０２００】
つぎに、第１の算出部５０５により、算出した予測処理時間Ｐ１が予測処理時間Ｐ２以上となっているか否かを判断する（ステップＳ１７０９）。ここで、予測処理時間Ｐ１が予測処理時間Ｐ２以上の場合（ステップＳ１７０９：Ｙｅｓ）、第１の算出部５０５により、予測処理時間Ｐ１をジョブＪの予測処理時間として（ステップＳ１７１０）、図１５に示したステップＳ１５０７に移行する。
【０２０１】
一方、予測処理時間Ｐ１が予測処理時間Ｐ２未満の場合（ステップＳ１７０９：Ｎｏ）、第１の算出部５０５により、予測処理時間Ｐ２をジョブＪの予測処理時間として（ステップＳ１７１１）、図１５に示したステップＳ１５０７に移行する。
【０２０２】
これにより、当日当時までの時間帯におけるマシンＭの負荷状態と近似する負荷状態で実行された過去のジョブＪの処理時間に基づいて、当日のジョブＪの予測処理時間を算出することができる。
【０２０３】
＜変更処理手順＞
つぎに、図１５に示したステップＳ１５０７の変更処理の具体的な処理手順について説明する。
【０２０４】
図１８は、変更処理の具体的処理手順の一例を示すフローチャートである。図１８のフローチャートにおいて、まず、判定部５０６により、ジョブＪの開始予定時刻から、算出されたジョブＪの予測処理時間が経過した終了予測時刻が、ジョブＪの終了予定時刻を超過するか否かを判定する（ステップＳ１８０１）。
【０２０５】
ここで、ジョブＪの終了予測時刻が終了予定時刻を超過しない場合（ステップＳ１８０１：Ｎｏ）、図１５に示したステップＳ１５０８に以降する。一方、ジョブＪの終了予測時刻が終了予定時刻を超過する場合（ステップＳ１８０１：Ｙｅｓ）、変更部５０７により、ジョブＪの開始予定時刻を早められるか否かを判断する（ステップＳ１８０２）。
【０２０６】
ここで、ジョブＪの開始予定時刻を早められる場合（ステップＳ１８０２：Ｙｅｓ）、変更部５０７により、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、ジョブＪの開始予定時刻を変更する（ステップＳ１８０３）。
【０２０７】
このあと、変更部５０７により、ジョブＪの開始予定時刻を変更した結果、ジョブＪが他のジョブと実行時間帯が重複するか否かを判断する（ステップＳ１８０４）。ここで、他のジョブと実行時間帯が重複しない場合（ステップＳ１８０４：Ｎｏ）、図１５に示したステップＳ１５０８に移行する。
【０２０８】
一方、他のジョブと実行時間帯が重複する場合（ステップＳ１８０４：Ｙｅｓ）、変更部５０７により、他のジョブと関連するジョブがあるか否かを判断する（ステップＳ１８０５）。なお、関連するジョブ群を特定する関連情報は、例えば、図４に示したスケジュール情報４００−１〜４００−ｍに含まれている。
【０２０９】
ここで、関連するジョブがある場合（ステップＳ１８０５：Ｙｅｓ）、変更部５０７により、関連するジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないように、各々のジョブの開始予定時刻を変更する（ステップＳ１８０６）。そして、図１５に示したステップＳ１５０８に移行する。
【０２１０】
一方、関連するジョブがない場合（ステップＳ１８０５：Ｎｏ）、変更部５０７により、他のジョブの終了予測時刻が終了予定時刻を超過しないように、他のジョブの開始予定時刻を変更して（ステップＳ１８０７）、図１５に示したステップＳ１５０８に移行する。
【０２１１】
また、ステップＳ１８０２において、ジョブＪの開始予定時刻を早められない場合（ステップＳ１８０２：Ｎｏ）、出力部５０９により、ジョブＪの終了予測時刻が終了予定時刻を超過することを示す警告情報を出力する（ステップＳ１８０８）。そして、図１５に示したステップＳ１５０８に移行する。
【０２１２】
これにより、他のジョブとの多重度が大きくならないように、かつ、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、ジョブＪの開始予定時刻を変更することができる。
【０２１３】
なお、ステップＳ１８０６において、関連するジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないように、各々のジョブの開始予定時刻を変更できない場合は、出力部５０９により、その旨を示す警告情報を出力することにしてもよい。
【０２１４】
同様に、ステップＳ１８０７において、他のジョブの終了予測時刻が終了予定時刻を超過しないように、他のジョブの開始予定時刻を変更できない場合は、出力部５０９により、その旨を示す警告情報を出力することにしてもよい。
【０２１５】
＜サイジング処理手順＞
つぎに、図１５に示したステップＳ１５０８のサイジング処理の具体的な処理手順について説明する。
【０２１６】
図１９は、サイジング処理の具体的処理手順の一例を示すフローチャートである。図１９のフローチャートにおいて、まず、ジョブ管理装置２０１により、クラウド環境２０３に含まれるサーバ群の平均負荷量Ｃ（ここでは、ＣＰＵ使用量の平均値）を情報収集装置２０２から取得する（ステップＳ１９０１）。
【０２１７】
なお、クラウド環境２０３に含まれるサーバ群とは、クラウド環境２０３のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）インスタンスを表している。
【０２１８】
つぎに、ジョブ管理装置２０１により、取得したクラウド環境２０３の平均負荷量Ｃがクラウドサイジング閾値の上限値Ｃｍａｘ以上か否かを判断する（ステップＳ１９０２）。ここで、平均負荷量Ｃが上限値Ｃｍａｘ以上の場合（ステップＳ１９０２：Ｙｅｓ）、ジョブ管理装置２０１により、ＯＳインスタンスのＣＰＵ能力が最大か否かを判断する（ステップＳ１９０３）。
【０２１９】
ここで、ＯＳインスタンスのＣＰＵ能力が最大ではない場合（ステップＳ１９０３：Ｎｏ）、ジョブ管理装置２０１により、ＯＳインスタンスのＣＰＵ能力を増加させて（ステップＳ１９０４）、本フローチャートによる一連の処理を終了する。
【０２２０】
一方、ＯＳインスタンスのＣＰＵ能力が最大の場合（ステップＳ１９０３：Ｙｅｓ）、ジョブ管理装置２０１により、ＯＳインスタンスの数を増加させて（ステップＳ１９０５）、本フローチャートによる一連の処理を終了する。
【０２２１】
また、ステップＳ１９０２において、平均負荷量Ｃが上限値Ｃｍａｘ未満の場合（ステップＳ１９０２：Ｎｏ）、ジョブ管理装置２０１により、取得したクラウド環境２０３の平均負荷量Ｃがクラウドサイジング閾値の下限値Ｃｍｉｎ以下か否かを判断する（ステップＳ１９０６）。
【０２２２】
ここで、平均負荷量Ｃが下限値Ｃｍｉｎ以下の場合（ステップＳ１９０６：Ｙｅｓ）、ジョブ管理装置２０１により、ＯＳインスタンスのＣＰＵ能力が最小か否かを判断する（ステップＳ１９０７）。そして、ＯＳインスタンスのＣＰＵ能力が最小の場合（ステップＳ１９０７：Ｙｅｓ）、ジョブ管理装置２０１により、ＯＳインスタンスの数を減少させて（ステップＳ１９０８）、本フローチャートによる一連の処理を終了する。
【０２２３】
一方、ＯＳインスタンスのＣＰＵ能力が最小ではない場合（ステップＳ１９０７：Ｎｏ）、ジョブ管理装置２０１により、ＯＳインスタンスのＣＰＵ能力を減少させて（ステップＳ１９０９）、本フローチャートによる一連の処理を終了する。
【０２２４】
また、ステップＳ１９０６において、平均負荷量Ｃが下限値Ｃｍｉｎより大きい場合（ステップＳ１９０６：Ｎｏ）、本フローチャートによる一連の処理を終了する。
【０２２５】
これにより、クラウド環境２０３にかかる負荷に応じてＯＳインスタンスの数やＣＰＵ能力を増減させることにより、クラウド環境２０３に割り当てられたジョブにより実現される業務の遅延を回避するとともに、無駄な計算資源の使用を抑制することができる。
【０２２６】
なお、上述した説明では、クラウド環境２０３に含まれるサーバ群の平均負荷量Ｃとして、ＣＰＵ使用量の平均値を用いることにしたが、Ｉ／Ｏ使用量の平均値を用いることにしてもよい。この場合、クラウド環境２０３のサイジング時において、増減対象となるのはメモリとＯＳインスタンスである。
【０２２７】
（マシンリプレース）
つぎに、スケジューリングシステム２００におけるマシンリプレースについて説明する。マシンリプレースとは、古くなったマシンや破損したマシンを新しいマシンに置き換えることである。
【０２２８】
図２０は、マシンリプレース時の動作例を示す説明図である。図２０の（２０−１）において、マシンＭ１〜Ｍ４およびクラウド環境２０３が示されている。ここで、マシンＭ２は、リプレース対象となるマシンである。
【０２２９】
この場合、設定画面１１００において、リプレース対象となるマシンＭ２で実行する予定だったジョブ群について、マシンＭ１〜Ｍ４の優先度として「×」を設定することで、該ジョブ群の投入先の候補からマシンＭ１〜Ｍ４を除外することができる。
【０２３０】
また、設定画面１１００において、リプレース対象となるマシンＭ２で実行する予定だったジョブ群について、クラウド環境２０３の優先度を「１」に設定する。この結果、ジョブ管理装置２０１により、マシンＭ２で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境２０３に割り当てることができる（図２０の（２０−２）参照）。
【０２３１】
このように、運用環境のマシンリプレース時に、リプレース対象となるマシンＭ２で実行する予定だったジョブ群を一時的にクラウド環境２０３で実行させることにより、マシンリプレース時の環境の変化に柔軟に対応することができる。
【０２３２】
（クラウド移行）
つぎに、スケジューリングシステム２００のマシンＭ１〜Ｍ４で実行する予定だったジョブ群をクラウド環境２０３へ移行する場合について説明する。
【０２３３】
図２１および図２２は、クラウド移行時の動作例を示す説明図である。図２１の（２１−１）において、マシンＭ１〜Ｍ４およびクラウド環境２０３が示されている。
【０２３４】
ここで、マシンＭ４を移行対象とする。この場合、設定画面１１００において、移行対象となるマシンＭ４で実行する予定だったジョブ群について、マシンＭ１〜Ｍ４の優先度として「×」を設定し、クラウド環境２０３の優先度を「１」に設定する。
【０２３５】
この結果、ジョブ管理装置２０１により、マシンＭ４で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境２０３に割り当てることができる（図２１の（２１−２）参照）。
【０２３６】
つぎに、マシンＭ３を移行対象とする。この場合、設定画面１１００において、移行対象となるマシンＭ３で実行する予定だったジョブ群について、マシンＭ１〜Ｍ４の優先度として「×」を設定し、クラウド環境２０３の優先度を「１」に設定する。
【０２３７】
この結果、ジョブ管理装置２０１により、マシンＭ３で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境２０３に割り当てることができる（図２１の（２１−３）参照）。
【０２３８】
つぎに、マシンＭ２を移行対象とする。この場合、設定画面１１００において、移行対象となるマシンＭ２で実行する予定だったジョブ群について、マシンＭ１〜Ｍ４の優先度として「×」を設定し、クラウド環境２０３の優先度を「１」に設定する。
【０２３９】
この結果、ジョブ管理装置２０１により、マシンＭ２で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境２０３に割り当てることができる（図２１の（２１−４）参照）。
【０２４０】
つぎに、マシンＭ１を移行対象とする。この場合、設定画面１１００において、移行対象となるマシンＭ１で実行する予定だったジョブ群について、マシンＭ１〜Ｍ４の優先度として「×」を設定し、クラウド環境２０３の優先度を「１」に設定する。
【０２４１】
この結果、ジョブ管理装置２０１により、マシンＭ１で実行する予定だったジョブ群の各々のジョブの終了予測時刻が終了予定時刻を超過しないようにクラウド環境２０３に割り当てることができる（図２１の（２１−５）参照）。
【０２４２】
このように、スケジューリングシステム２００のマシンＭ１〜Ｍ４で実行する予定だった全ジョブをクラウド環境２０３へ移行する際に、クラウド環境２０３で実行するジョブの割合を徐々に増やすことにより、シームレスなクラウド移行が可能となる。
【０２４３】
以上説明した実施の形態２にかかるジョブ管理装置２０１によれば、当日当時までの時間帯と同一時間帯におけるマシンＭの負荷状態が当日と近似する過去の実行日に実行されたジョブＪの処理時間に基づいて、当日のジョブＪの予測処理時間を算出することができる。
【０２４４】
また、ジョブ管理装置２０１によれば、当日当時までの時間帯におけるマシンＭの平均負荷量と、ジョブＪが実行された過去の実行日の同一時間帯におけるマシンＭの平均負荷量との差分が閾値以下となる実行日Ｄ１〜ＤＫを特定することができる。これにより、当日当時までの時間帯におけるマシンＭの負荷状態と近似する負荷状態でジョブＪが実行された過去の実行日を特定することができる。
【０２４５】
また、ジョブ管理装置２０１によれば、当日当時までの時間帯におけるマシンＭの平均負荷量と、ジョブＪが実行された過去の実行日の同一時間帯におけるマシンＭの平均負荷量との差分が小さい上位Ｋ個の実行日Ｄ１〜ＤＫを特定することができる。これにより、当日当時までの時間帯におけるマシンＭの負荷状態と近似する負荷状態でジョブＪが実行された過去の実行日を特定することができる。
【０２４６】
また、ジョブ管理装置２０１によれば、ジョブＪの開始予定時刻から予測処理時間が経過した終了予測時刻が、ジョブＪの終了予定時刻を超過する場合、ジョブＪの終了予測時刻が終了予定時刻を超過することを示す警告情報を出力することができる。これにより、ユーザは、ジョブＪの終了予測時刻が終了予定時刻を超過していることを把握することができ、ジョブＪの開始予定時刻を変更するなどして、ジョブＪの実行が終了予定時刻までに完了するような対応を行うことができる。
【０２４７】
また、ジョブ管理装置２０１によれば、ジョブＪの終了予測時刻が終了予定時刻を超過する場合、ジョブＪの終了予測時刻が終了予定時刻を超過しないように、当時に実行されるジョブＪの開始予定時刻を変更することができる。これにより、ユーザは、ジョブＪの終了予定時刻を超過しないようなジョブＪの開始予定時刻を把握することができる。また、変更後のジョブＪの開始予定時刻を既存のスケジューラに与えることにより、ジョブＪの実行が終了予定時刻前に完了するようにスケジューリングすることができる。
【０２４８】
また、ジョブ管理装置２０１によれば、当日に実行が開始されたジョブＪの開始時刻と、現在時刻と、ジョブＪの予測処理時間とに基づいて、ジョブＪの進捗率を算出して、進捗状況画面１０００に表示することができる。これにより、ユーザは、ジョブＪの進捗率を把握することができる。
【０２４９】
また、ジョブ管理装置２０１によれば、処理対象となるジョブＪの投入先候補となる各々のマシンに設定されている優先度に基づいて、ジョブＪの投入先のマシンＭを選択することができる。これにより、重要度の高いジョブＪは高性能のマシンＭで実行させ、重要度の低いジョブＪは低性能のマシンＭで実行させるなどの運用を行うことができる。
【０２５０】
また、ジョブ管理装置２０１によれば、処理対象となるジョブＪの投入先として、マシンの負荷量が予め設定された負荷量の閾値未満となるマシンＭを選択することができる。これにより、投入先のマシンＭにジョブＪを割り当てた結果、マシンＭに負荷がかかりすぎてジョブＪの処理時間が長くなるような状況を回避することができる。
【０２５１】
また、オンプレミス環境のマシンＭ１〜Ｍｎよりもクラウド環境２０３の優先度を低く設定することで、オンプレミス環境が高負荷の場合に限りジョブＪをクラウド環境２０３で実行させる運用を行うことができる。この結果、クラウド環境２０３の利用料をできるだけ切りつめて課金を最低限に抑えることができる。
【０２５２】
これらのことから、ジョブ管理装置２０１によれば、日々変動する業務量やデータ量により変化するマシンＭの負荷状態に合わせて、ジョブＪの実行が指定した時間内に完了するように、ジョブＪの開始予定時刻を最適化することができる。
【０２５３】
なお、本実施の形態で説明した予測方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本予測プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本予測プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２５４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２５５】
（付記１）コンピュータに、
期間内にジョブが実行された一定の時間幅の複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定し、
特定した前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する、
処理を実行させることを特徴とする予測プログラム。
【０２５６】
（付記２）前記期間を特定する処理において、前記複数の期間ごとに、期間内の前記計算機の平均負荷量と、前記ジョブの実行を予定された期間における前記計算機の平均負荷量と、についての差分が閾値以下である場合に、前記所定の類似関係にあると判断する、
ことを特徴とする付記１に記載の予測プログラム。
【０２５７】
（付記３）前記期間を特定する処理において、前記複数の期間ごとに、期間内の前記計算機の平均負荷量と、前記ジョブの実行を予定された期間における前記計算機の平均負荷量と、についての差分が小さい上位複数個の期間を前記所定の類似関係にあると判断する、
ことを特徴とする付記１または２に記載の予測プログラム。
【０２５８】
（付記４）前記予測する処理は、
実行を予定された前記ジョブの処理時間を、前記複数個の期間それぞれについての前記計算機の平均負荷量の平均値とする処理である、
ことを特徴とする付記３に記載の予測プログラム。
【０２５９】
（付記５）前記コンピュータに、
予め設定された前記ジョブの開始予定時刻と終了予定時刻とに基づいて、実行を予定された前記ジョブの開始予定時刻から、予測した前記処理時間が経過した終了予測時刻が、実行を予定された前記ジョブの終了予定時刻を超過するか否かを判定し、
前記終了予定時刻を超過する場合、実行を予定された前記ジョブの前記終了予測時刻が前記終了予定時刻を超過することを示す情報を出力する、
処理を実行させることを特徴とする付記１〜４のいずれか一つに記載の予測プログラム。
【０２６０】
（付記６）前記コンピュータに、
前記終了予定時刻を超過する場合、実行を予定された前記ジョブの前記終了予測時刻が前記終了予定時刻を超過しないように、実行を予定された前記ジョブの開始予定時刻を変更し、
変更前記開始予定時刻を出力する、
処理を実行させることを特徴とする付記１〜５のいずれか一つに記載の予測プログラム。
【０２６１】
（付記７）前記コンピュータに、
実行される前記ジョブの開始時刻と、現在時刻と、実行を予定された前記ジョブの前記予測処理時間とに基づいて、前記ジョブの進捗度合いを表す進捗値を算出し、
算出した前記ジョブの進捗度を出力する、
処理を実行させることを特徴とする付記１〜６のいずれか一つに記載の予測プログラム。
【０２６２】
（付記８）前記計算機の負荷情報は、前記計算機のＣＰＵ使用量または／およびメモリ使用量を含む、
ことを特徴とする付記１〜７のいずれか一つに記載の予測プログラム。
【０２６３】
（付記９）前記複数の期間のそれぞれは、所定の周期において同じ時間帯を占める期間である、
ことを特徴とする付記１〜８のいずれか一つに記載の予測プログラム。
【０２６４】
（付記１０）期間内にジョブが実行された一定の時間幅の複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段と、
前記記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定する特定部と、
前記特定部によって特定された前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する算出部と、
を備えることを特徴とする予測装置。
【０２６５】
（付記１１）コンピュータが、
期間内にジョブが実行された一定の時間幅の複数の期間ごとに、計算機の負荷状態を表す負荷情報と、期間内に実行された前記ジョブの処理時間と、を記憶する記憶手段の記憶内容に基づいて、前記複数の期間のうち、関連付けられて記憶された負荷情報に示される負荷状態が、実行された前記ジョブと同じ処理内容が規定されたジョブの実行を予定された期間における前記計算機の負荷状態と所定の類似関係にある期間を特定し、
特定した前記期間の負荷情報に関連付けて前記記憶手段に記憶された前記処理時間に基づいて、実行を予定された前記ジョブの処理時間を予測する、
処理を実行することを特徴とする予測方法。
【符号の説明】
【０２６６】
１００  予測装置
２００  スケジューリングシステム
２０１  ジョブ管理装置
２０２  情報収集装置
２０３  クラウド環境
５０１  選択部
５０２  決定部
５０３  取得部
５０４  特定部
５０５  第１の算出部
５０６  判定部
５０７  変更部
５０８  第２の算出部
５０９  出力部
Ｍ，Ｍ１〜Ｍｎ  マシン
【図１】
0005708262.tif 000002
【図２】
0005708262.tif 000003
【図３】
0005708262.tif 000004
【図４】
0005708262.tif 000005
【図５】
0005708262.tif 000006
【図６】
0005708262.tif 000007
【図７】
0005708262.tif 000008
【図８】
0005708262.tif 000009
【図９】
0005708262.tif 000010
【図１０】
0005708262.tif 000011
【図１１】
0005708262.tif 000012
【図１２】
0005708262.tif 000013
【図１３】
0005708262.tif 000014
【図１４】
0005708262.tif 000015
【図１５】
0005708262.tif 000016
【図１６】
0005708262.tif 000017
【図１７】
0005708262.tif 000018
【図１８】
0005708262.tif 000019
【図１９】
0005708262.tif 000020
【図２０】
0005708262.tif 000021
【図２１】
0005708262.tif 000022
【図２２】
0005708262.tif 000023