(57)【要約】【課題】ジョブ実行がほぼ確実に完了すると予測される時間を求める。【解決手段】ジョブ管理装置は、ｔ分布の累積分布関数の逆関数の値であるｔ値が格納された関数値テーブルを備える。ジョブ管理装置は、まず、実行の実績のあるジョブの実行時間の平均値と不偏標準偏差を求める（Ｓ７０２、Ｓ７０３）。次に、ジョブ管理装置は、所定の数の選択肢の中から選択された上側確率と実行の実績のあるジョブの総実行回数から求められる自由度とを関数値テーブルに入力し、関数値テーブルからｔ値を取得する。そして、ジョブ管理装置は、実行の実績のあるジョブの実行時間の平均値および不偏標準偏差と、関数値テーブルから取得したｔ値とに基づいて、ｔ分布の相対度数が選択された上側確率によって定まる値である実行時間を計算し、計算された実行時間をジョブの実行時間の上限値とする（Ｓ７０４）。【選択図】図７
2015170085.tif 000002
【特許請求の範囲】
【請求項１】
ｔ分布の累積分布関数の逆関数の値であるｔ値が格納された関数値テーブルを備えるジョブ管理装置におけるジョブ実行時間予測方法であって、
実行の実績のあるジョブの実行時間の平均値を求める平均値算出ステップと、
前記実行の実績のあるジョブの実行時間の不偏標準偏差を求める不偏標準偏差算出ステップと、
所定の数の選択肢の中から選択された上側確率と前記実行の実績のあるジョブの総実行回数から求められる自由度とを前記関数値テーブルに入力し、前記関数値テーブルからｔ値を取得するｔ値取得ステップと、
前記実行の実績のあるジョブの実行時間の平均値および不偏標準偏差と、前記関数値テーブルから取得したｔ値とに基づいて、ｔ分布の相対度数が選択された前記上側確率によって定まる値である実行時間を計算し、計算された当該実行時間を当該ジョブの実行時間の上限値とする実行時間上限値算出ステップと、
を備えることを特徴とするジョブ実行時間予測方法。
【請求項２】
前記関数値テーブルは、前記自由度を所定の上限値まで入力可能であり、
前記ｔ値取得ステップにおいて、入力された前記自由度が前記所定の上限値を超えている場合には、選択された前記上側確率と前記所定の上限値の自由度とに対応するｔ値を前記関数値テーブルから取得する、
ことを特徴とする請求項１に記載のジョブ実行時間予測方法。
【請求項３】
ｔ分布の累積分布関数の逆関数の値であるｔ値が格納された関数値テーブルと、
実行の実績のあるジョブの実行時間の平均値を求める平均値算出手段と、
前記実行の実績のあるジョブの実行時間の不偏標準偏差を求める不偏標準偏差算出手段と、
所定の数の選択肢の中から選択された上側確率と前記実行の実績のあるジョブの総実行回数から求められる自由度とを前記関数値テーブルに入力し、前記関数値テーブルからｔ値を取得するｔ値取得手段と、
前記実行の実績のあるジョブの実行時間の平均値および不偏標準偏差と、前記関数値テーブルから取得したｔ値とに基づいて、ｔ分布の相対度数が選択された前記上側確率によって定まる値である実行時間を計算し、計算された当該実行時間を当該ジョブの実行時間の上限値とする実行時間上限値算出手段と、
を備えることを特徴とするジョブ管理装置。
【請求項４】
前記ジョブの実行が開始してから、前記実行時間上限値算出手段によって求められた実行時間の上限値以上の時間が経過しても、前記ジョブの実行が完了しない場合に、異常が発生しているとみなして前記ジョブの実行を停止させるジョブ停止手段を備えることを特徴とする請求項３に記載のジョブ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種業務を遂行するコンピューターシステムにおいて、ジョブ実行にかかる時間を予測するジョブ実行時間予測方法およびジョブ管理装置に関する。
【背景技術】
【０００２】
各種業務を遂行するコンピューターシステムにおいて、日々の業務を計画的にスケジューリングし、自動運用を行うために、ジョブ管理システムが利用されている。ジョブ管理システムは、ジョブ毎に運用日や休業日を設定したカレンダーを指定することや、ジョブの実行スケジュールとして日次、月次などの各種処理サイクルを指定することによって、さまざまな業務サイクルにあわせてジョブをスケジューリングすることができる。
そして、ユーザは、コンピューターシステムでのジョブ実行のスケジューリングを行う際に、各ジョブの実行に必要な時間を予測し、ジョブ管理システムにおいてそれぞれのジョブの時間を割り当てる必要がある。また、コンピューターシステムで実行しているジョブに何らかの異常があってジョブの実行が終わらないことがあるため、ジョブ管理システムは、実行開始から長時間経過しても実行が終わらないジョブは、異常が発生しているものと判断して、対処する必要がある。
【０００３】
そこで、ジョブ実行にかかる時間を実績の平均値から予測することが行われている。例えば、特許文献１は、ジョブ実行にかかった時間の実績の平均値の分だけ待機するダミープログラムを使用して、ジョブ実行のシミュレーションを行い、スケジューリング内容を検証するジョブシュミレーション方法を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特願２０１１―２００８６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ジョブが正常に実行されていても、実行にかかる時間が平均値を上回ることがある。そのため、ジョブ実行のためにコンピューターシステムを確保する時間や、ジョブ実行が終わらないため異常であると判断する経過時間の閾値を、平均値より大きくする必要があるが、どれだけ大きくするべきかが明確になっていない。
【０００６】
本発明の目的は、ジョブ実行のためにコンピューターシステムを確保する時間や、ジョブ実行が終わらないため異常であると判断する経過時間の閾値として使用する値を得るために、ジョブ実行がほぼ確実に完了すると予測される時間を求めるジョブ実行時間予測方法およびジョブ管理装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明のジョブ実行時間予測方法は、
ｔ分布の累積分布関数の逆関数の値であるｔ値が格納された関数値テーブルを備えるジョブ管理装置におけるジョブ実行時間予測方法であって、
実行の実績のあるジョブの実行時間の平均値を求める平均値算出ステップと、
前記実行の実績のあるジョブの実行時間の不偏標準偏差を求める不偏標準偏差算出ステップと、
所定の数の選択肢の中から選択された上側確率と前記実行の実績のあるジョブの総実行回数から求められる自由度とを前記関数値テーブルに入力し、前記関数値テーブルからｔ値を取得するｔ値取得ステップと、
前記実行の実績のあるジョブの実行時間の平均値および不偏標準偏差と、前記関数値テーブルから取得したｔ値とに基づいて、ｔ分布の相対度数が選択された前記上側確率によって定まる値である実行時間を計算し、計算された当該実行時間を当該ジョブの実行時間の上限値とする実行時間上限値算出ステップと、
を備えることを特徴とする。
【０００８】
好ましくは、本発明のジョブ実行時間予測方法は、
前記関数値テーブルは、前記自由度を所定の上限値まで入力可能であり、
前記ｔ値取得ステップにおいて、入力された前記自由度が前記所定の上限値を超えている場合には、選択された前記上側確率と前記所定の上限値の自由度とに対応するｔ値を前記関数値テーブルから取得する、
ことを特徴とする。
【０００９】
また、本発明のジョブ管理装置は、
ｔ分布の累積分布関数の逆関数の値であるｔ値が格納された関数値テーブルと、
実行の実績のあるジョブの実行時間の平均値を求める平均値算出手段と、
前記実行の実績のあるジョブの実行時間の不偏標準偏差を求める不偏標準偏差算出手段と、
所定の数の選択肢の中から選択された上側確率と前記実行の実績のあるジョブの総実行回数から求められる自由度とを前記関数値テーブルに入力し、前記関数値テーブルからｔ値を取得するｔ値取得手段と、
前記実行の実績のあるジョブの実行時間の平均値および不偏標準偏差と、前記関数値テーブルから取得したｔ値とに基づいて、ｔ分布の相対度数が選択された前記上側確率によって定まる値である実行時間を計算し、計算された当該実行時間を当該ジョブの実行時間の上限値とする実行時間上限値算出手段と、
を備えることを特徴とする。
【００１０】
好ましくは、本発明のジョブ管理装置は、
前記ジョブの実行が開始してから、前記実行時間上限値算出手段によって求められた実行時間の上限値以上の時間が経過しても、前記ジョブの実行が完了しない場合に、異常が発生しているとみなして前記ジョブの実行を停止させるジョブ停止手段を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ジョブ実行がほぼ確実に完了すると予測される時間を求めることができる。そして、この時間に基づいて、ジョブ実行のためにコンピューターシステムを確保する時間や、ジョブ実行が終わらないため異常であると判断する経過時間の閾値を決定することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係るジョブ実行時間予測方法を使用するジョブ実行システムの構成の一例を示す図である。
【図２】ジョブ管理マネージャーの構成の一例を示す図である。
【図３】ジョブ実行エージェントの構成の一例を示す図である。
【図４】ジョブ定義ＤＢに格納されるジョブ定義テーブルのデータ構成の一例を示す図である。
【図５】関数値テーブルのデータ構成の一例を示す図である。
【図６】実行結果情報ＤＢに格納される実行結果テーブルとジョブ統計情報テーブルのデータ構成の一例を示す図である。図６（Ａ）は実行結果テーブルのデータ構成の一例を示す。図６（Ｂ）はジョブ統計情報テーブルのデータ構成の一例を示す。
【図７】ジョブ統計情報テーブルのレコードの内容を更新するジョブ統計情報テーブル更新処理の流れの一例を示すフローチャートである。
【図８】ジョブの実行時間の平均値μを計算する平均実行時間算出処理（Ｓ７０２）の流れの一例を示すフローチャートである。
【図９】ジョブの実行時間の不偏標準偏差σを計算する不偏標準偏差算出処理（Ｓ７０３）の流れの一例を示すフローチャートである。
【図１０】ジョブの実行時間の上限値uを計算する実行時間上限値算出処理（Ｓ７０４）の流れの一例を示すフローチャートである。
【図１１】ジョブ実行を開始するたびに障害判定オブジェクトを障害判定オブジェクト用キューに格納する障害判定オブジェクト格納処理の流れの一例を示すフローチャートである。
【図１２】図１１の障害判定オブジェクト格納処理により障害判定オブジェクトが障害判定オブジェクト用キューに格納されたときに障害判定スレッドを起動する障害判定オブジェクト格納時障害判定スレッド起動処理の流れの一例を示すフローチャートである。
【図１３】障害判定スレッドの処理の流れの一例を示すフローチャートである。
【図１４】図１３のステップＳ１３０３で障害判定オブジェクトが取り除かれたときに実行される障害判定時障害判定スレッド起動処理の流れの一例を示すフローチャートである。
【図１５】ジョブ管理部がジョブ実行部からジョブ実行終了通知を受信したときに後続のジョブを実行するジョブ実行終了時処理の流れの一例を示すフローチャートである。
【図１６】図１５のステップＳ１５０１において、ジョブ実行終了時に障害判定オブジェクト用キューから障害判定オブジェクトが取り除かれたときに障害判定スレッドを起動するジョブ実行終了時障害判定スレッド起動処理の流れの一例を示すフローチャートである。
【図１７】ジョブ実行部が障害判定通知を受信したときにジョブの実行を停止するジョブ実行エージェントのジョブ実行停止処理の流れの一例を示すフローチャートである。
【図１８】ジョブ管理部が障害判定停止通知を受信したときに行うジョブ管理マネージャーのジョブ実行停止処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態に係るジョブ実行時間予測方法およびジョブ管理装置について図面を参照しながら説明する。なお、実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。
ここで、本明細書および特許請求の範囲で使用するジョブとは、コンピューターが処理する仕事の単位を意味し、各種業務に対応した外部プログラムを定義できるものである。また、ジョブネットとは、複数のジョブおよび／またはジョブネットをまとめてそれぞれのジョブおよび／またはジョブネットの実行順序を定義したものである。
【００１４】
図１は、本発明の実施形態に係るジョブ実行時間予測方法を用いるジョブ実行システム１００の構成の一例を示す。
ジョブ実行システム１００は、ジョブ管理マネージャー１０１と、ジョブ実行エージェント１０２Ａ、１０２Ｂ、１０２Ｃと、端末１０３とを有する。これらはネットワーク１０４に接続されており、相互に通信することができる。
【００１５】
図２は、ジョブ管理マネージャー１０１の構成の一例を示す。
ジョブ管理マネージャー１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成される主メモリと、ハードディスク等で構成される記憶装置２１０とを有する。
ジョブ管理マネージャー１０１の記憶装置２１０には、ジョブ定義データベース（ＤＢ）２１１と、実行結果情報ＤＢ２１２と、関数値テーブル２１３と、ジョブ管理プログラム２１４とが格納されている。ジョブ管理マネージャー１０１のＣＰＵが記憶装置２１０からジョブ管理プログラム２１４を主メモリに読み出して実行することで、ジョブ管理部２０１と入出力部２０２との各部の機能が実現される。
ジョブ定義ＤＢ２１１は、ジョブネットとジョブの定義情報を格納する。
実行結果情報ＤＢ２１２は、ジョブ実行エージェント１０２Ａ、１０２Ｂ、１０２Ｃで実行されるジョブの状態や開始時刻、終了時刻、統計情報などを格納する。
関数値テーブル５０１は、ｔ分布の累積分布関数の逆関数の値（t値）を格納する。
ジョブ管理部２０１は、実際の業務をジョブとして管理する。その際、ジョブ管理部２０１は、ユーザが設定したスケジュールに従って、各ジョブの実行をジョブ実行エージェント１０２Ａ、１０２Ｂ、１０２Ｃに要求してその結果を受け取る。
入出力部２０２は、端末１０３からの要求に応じて、ジョブ定義ＤＢ２１１に格納されているジョブネットとジョブの定義情報の変更や取得、実行結果情報ＤＢ２１２に格納されているジョブの状態や開始時刻、終了時刻、統計情報などの取得を行う。
なお、ジョブ管理マネージャー１０１は本発明のジョブ管理装置の例である。
【００１６】
図３は、ジョブ実行エージェント１０２Ａ、１０２Ｂ、１０２Ｃの構成の一例を示す。
ジョブ実行エージェント１０２Ａ、１０２Ｂ、１０２Ｃは、ＣＰＵと、ＲＡＭ等で構成される主メモリと、ハードディスク等で構成される記憶装置とを有する。
ジョブ実行エージェント１０２Ａ、１０２Ｂ、１０２Ｃの記憶装置には、ジョブ実行プログラムが格納されている。ジョブ実行エージェント１０２Ａ、１０２Ｂ、１０２ＣのＣＰＵが記憶装置からジョブ実行プログラムを主メモリに読み出して実行することで、ジョブ実行部３０１の機能が実現される。
ジョブ実行部３０１は、ジョブ管理マネージャー１０１からジョブ実行の要求を受信すると、受信した要求に応じてジョブを実行する。そして、ジョブ実行部３０１は、実行が終了したら、実行結果の情報を含むジョブ実行終了通知をジョブ管理マネージャー１０１に送信する。
【００１７】
端末１０３は、ＣＰＵと、ＲＡＭ等で構成される主メモリと、ハードディスク等で構成される記憶装置と、入力部と、ディスプレイ等で構成される出力部とを有する。
ジョブ実行システム１００のユーザは、ジョブ実行システム１００を用いて、ジョブ管理マネージャー１０１が管理するジョブネットとジョブの定義やスケジューリングを行い、ジョブの実行実績を参照することができる。
【００１８】
図４は、ジョブ定義ＤＢ２１１に格納されるジョブ定義テーブル４０１のデータ構成の一例を示す。
ジョブ定義テーブル４０１のレコードは、ジョブネット名／ジョブ名４０２と、上位ジョブネット名４０３と、先行ジョブネット名／先行ジョブ名４０４と、実行先エージェント名４０５と、実行プログラム４０６と、異常判定上側確率４０７とで構成される。
ジョブネット名／ジョブ名４０２は、ジョブネットまたはジョブの名称であり、ジョブネットまたはジョブを一意に特定する。以下、ジョブネットの名称についてはジョブネット名４０２といい、ジョブの名称についてはジョブ名４０２という。
上位ジョブネット名４０３とは、ジョブネット名／ジョブ名４０２で特定されるジョブネットまたはジョブを含む上位のジョブネットの名称を示す。
先行ジョブネット名／先行ジョブ名４０４は、ジョブネット名／ジョブ名４０２で特定されるジョブネットまたはジョブに先行して実行するように定義されているジョブネットまたはジョブの名称を示す。
実行先エージェント名４０５は、ジョブ名４０２で特定されるジョブを実行するジョブ実行エージェントの名称を示す。
実行プログラム４０６は、ジョブ名４０２で特定されるジョブが実行する外部プログラムを示す。
異常判定上側確率４０７は、ジョブ管理部２０１により、ジョブ名４０２で特定されるジョブの実行が終わらないため異常であると判断する経過時間の閾値の計算に使用される上側確率を示す。
ユーザは、端末１０３上でジョブ定義テーブル４０１の各項目を含むジョブネットとジョブの定義を入力することができる。そのとき、異常判定上側確率４０７は、端末１０３で、０、１０−２、１０−３のように０または０に近いいくつかの値の選択肢の中から選択される。端末１０３はジョブネットとジョブの定義をジョブ管理マネージャー１０１に送信する。ジョブ管理マネージャー１０１がジョブネットとジョブの定義を受信すると、入出力部２０２は、ジョブネットとジョブの定義に基づいてジョブ定義テーブル４０１の各項目を登録する。
【００１９】
図５は、関数値テーブル２１３のデータ構成の一例を示す。
関数値テーブル５０１には、t分布の累積分布関数の逆関数の値（t値）が格納される。関数値テーブル５０１は、横軸が上側確率５０２であり、縦軸が自由度５０３であり、上側確率５０２と自由度５０３に対応するt値を格納する。なお、あるジョブの総実行回数がｎ回であるとき、そのジョブの実行時間の自由度はｎ−１である。
t値は、ジョブ管理部２０１により、例えば、ジョブの実行が終わらないため異常であると判断する経過時間の閾値の計算に使用される。１から上側確率ｐを引いた値（１−ｐ）は相対度数と等しい。t分布の累積分布関数の逆関数をＦ(自由度,相対度数)とすると、図５の関数値テーブル２１３において、自由度５０３がdの行、上側確率５０２がｐの列のｔ値は、Ｆ（ｄ，１−ｐ）の値である。
ユーザは端末１０３で０または０に近いいくつかの値の中から異常判定上側確率４０７を選択することができるが、関数値テーブル５０１は、上側確率５０２として、異常判定上側確率４０７を端末１０３で指定する際の選択肢のうち、０以外のすべての値に対応したものを含む。
また、関数値テーブル５０１は、自由度５０３として、正の整数で、1から特定の整数d_maxまでのすべての値を含む。（ジョブ統計情報テーブル６０７の計算対象のレコードの総実行回数６０９の値−１）がd_maxより大きい場合は、自由度５０３をd_maxとしてt値を求める。
【００２０】
図６は、実行結果情報ＤＢ２１２に格納される実行結果テーブル６０１とジョブ統計情報テーブル６０７のデータ構成の一例を示す。図６（Ａ）は実行結果テーブルのデータ構成の一例を示し、図６（Ｂ）はジョブ統計情報テーブルのデータ構成の一例を示す。
実行結果テーブル６０１は、ジョブネットまたはジョブの一回の実行に対して、一つのレコードを持つ。実行結果テーブル６０１のレコードは、実行ＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）６０２と、ジョブネット名／ジョブ名６０３と、状態６０４と、開始時刻６０５と、終了時刻６０６とで構成される。
実行ＩＤ６０２は、あるジョブネットとそのジョブネットで実行順序が定義されるジョブネットおよび／またはジョブの一連の実行を一意に特定する識別符号である。図６（Ａ）の例では、ＪｏｂＮｅｔＡはＪｏｂＡ−１とＪｏｂＡ−２の実行順序を定義しているので、ＪｏｂＮｅｔＡとＪｏｂＡ−１とＪｏｂＡ−２とに同一の実行ＩＤ６０２が付与されている。
ジョブネット名／ジョブ名６０３は、ジョブネットまたはジョブを一意に特定する名称である。以下、ジョブネットの名称についてはジョブネット名６０３といい、ジョブの名称についてはジョブ名６０３という。
状態６０４は、実行ＩＤ６０２とジョブネット名／ジョブ名６０３とで特定されるジョブネットまたはジョブの実行状態を示す。
開始時刻６０５と終了時刻６０６は、それぞれ実行ＩＤ６０２とジョブネット名／ジョブ名６０３とで特定されるジョブネットまたはジョブの実行を開始した時刻と実行を終了した時刻とを示す。
【００２１】
ジョブ統計情報テーブル６０７は、一つのジョブに対して、一つのレコードを持つ。ジョブ統計情報テーブル６０７のレコードは、ジョブ名６０８と、総実行回数６０９と、平均実行時間６１０と、実行時間の不偏標準偏差６１１と、実行時間の上限値６１２とで構成される。
ジョブ名６０８は、ジョブを一意に特定する名称である。
総実行回数６０９は、ジョブ名６０８で特定されるジョブが実行された回数を示す。
平均実行時間６１０は、ジョブ名６０８で特定されるジョブの実行時間の平均値を示す。
実行時間の不偏標準偏差６１１は、ジョブ名６０８で特定されるジョブの実行時間の不偏標準偏差を示す。
実行時間の上限値６１２は、ジョブ管理部２０１によってジョブ名６０８で特定されるジョブの実行がほぼ確実に完了する時間として予測された値である。実行時間の上限値６１２は、ジョブ実行のためにコンピューターシステムを確保する時間や、ジョブ実行が終わらないため異常であると判断する経過時間の閾値として使用することができる。
なお、総実行回数６０９が０または１のとき、実行時間の不偏標準偏差６１１を求めることはできないが、図６（Ｂ）において、ＪｏｂＡ−３の総実行回数６０９は１である。このため、ＪｏｂＡ−３の実行時間の不偏標準偏差６１１と実行時間の上限値６１２は計算不能となっている。
【００２２】
図７は、ジョブ統計情報テーブル６０７のレコードの内容を更新するジョブ統計情報テーブル更新処理の流れの一例を示す。
ジョブ統計情報テーブル６０７のレコードに対応するジョブの実行が正常終了したとき、ジョブ管理エージェントのジョブ実行部３０１はジョブ実行終了通知をジョブ管理マネージャー１０１に送信する。ジョブ管理マネージャー１０１がジョブ実行終了通知を受信すると、ジョブ管理部２０１は、ジョブ実行終了通知に含まれる実行結果の情報で実行結果テーブル６０１を更新する。続いて、ジョブ管理部２０１は、正常終了したジョブに対応するジョブ統計情報テーブル６０７のレコードの内容を更新するジョブ統計情報テーブル更新処理を行う。
ジョブ管理部２０１は、まず、総実行回数６０９の値を1大きくする（Ｓ７０１）。続いて、ジョブ管理部２０１は、実行結果テーブル６０１の内容と、総実行回数６０９を使用して、ジョブの実行時間の平均値μを計算する（Ｓ７０２）。続いて、ジョブ管理部２０１は、実行結果テーブル６０１の内容と、総実行回数６０９と、ステップＳ７０２で計算したジョブの実行時間の平均値μを使用して、ジョブの実行時間の不偏標準偏差σを計算する（Ｓ７０３）。続いて、ジョブ管理部２０１は、ジョブ定義テーブル４０１内の対応するジョブのレコードの異常判定上側確率４０７と、ステップＳ７０２で計算したジョブの実行時間の平均値μと、ステップＳ７０３で計算したジョブの実行時間の不偏標準偏差σを使用して、ｔ分布の相対度数が異常判定上側確率４０７によって定まる値（すなわち、１−上側確率）である実行時間を計算し、計算された実行時間をジョブの実行時間の上限値uとする（Ｓ７０４）。そして、ジョブ管理部２０１は、計算した実行時間の平均値μ、実行時間の不偏標準偏差σ、および実行時間の上限値uの値でジョブ統計情報テーブル６０７のレコードの内容を更新する（Ｓ７０５）。ジョブ管理部２０１は、ジョブ統計情報テーブル６０７の平均実行時間６１０にはジョブの実行時間の平均値μを、実行時間の不偏標準偏差６１１にはジョブの実行時間の不偏標準偏差σを、実行時間の上限値６１２にはジョブの実行時間の上限値uを、それぞれ代入する。
なお、ステップＳ７０２は本発明の平均値算出ステップの例であり、ステップＳ７０３は本発明の不偏標準偏差算出ステップの例であり、ステップＳ７０４は本発明のｔ値取得ステップと実行時間上限値算出ステップの例である。
以下、ステップＳ７０２の平均実行時間算出処理、ステップＳ７０３の不偏標準偏差算出処理、およびステップＳ７０４の実行時間上限値算出処理について詳細に説明する。
【００２３】
図８は、ジョブの実行時間の平均値μを計算する平均実行時間算出処理（Ｓ７０２）の流れの一例を示す。
ジョブ管理部２０１は、まず、ジョブの実行時間の合計を格納する変数（レジスタ等の記憶領域）を０で初期化する（Ｓ８０１）。次に、ジョブ管理部２０１は、実行結果テーブル６０１のすべてのレコードのうち、ジョブ名６０３が計算の対象としているジョブの名称で（Ｓ８０２：Ｙｅｓ）、かつ、状態６０４が正常終了のレコードだけ（Ｓ８０３：Ｙｅｓ）を対象に、終了時刻６０６から開始時刻６０５を引いた値をジョブの実行時間とし、ジョブの実行時間の合計に加算する（Ｓ８０４）。ジョブ管理部２０１は、ジョブの実行時間の合計の値を、ジョブ統計情報テーブル６０７における計算対象のジョブのレコードの総実行回数６０９の値で割った値をジョブの実行時間の平均値μとする（Ｓ８０５）。
【００２４】
図９は、ジョブの実行時間の不偏標準偏差σを計算する不偏標準偏差算出処理（Ｓ７０３）の流れの一例を示す。
ジョブの実行時間の不偏標準偏差σを計算できるのは、ジョブ統計情報テーブル６０７の計算対象のレコードの総実行回数６０９の値が２以上の場合のみである。このため、ジョブ管理部２０１は、それ以外の場合（Ｓ９０１：Ｎｏ）、ジョブの実行時間の不偏標準偏差σの値は計算不能として、処理を終了する（Ｓ９０２）。ジョブ統計情報テーブル６０７の計算対象のレコードの総実行回数６０９の値が２以上の場合（Ｓ９０１：Ｙｅｓ）、ジョブ管理部２０１は、まず、ジョブの実行時間の偏差平方和を格納する変数（レジスタ等の記憶領域）を０で初期化する（Ｓ９０３）。
次に、ジョブ管理部２０１は、実行結果テーブル６０１のすべてのレコードのうち、ジョブ名６０３が計算の対象としているジョブの名称で（Ｓ９０４：Ｙｅｓ）、かつ、状態６０４が正常終了のレコード（Ｓ９０５：Ｙｅｓ）だけを対象に、終了時刻６０６から開始時刻６０５を引いた値をジョブの実行時間とし、ジョブの実行時間からジョブの実行時間の平均値μを引いた値をジョブの実行時間の偏差とし、ジョブの実行時間の偏差の２乗をジョブの実行時間の偏差平方和を格納する変数（レジスタ等の記憶領域）に加算する（Ｓ９０６）。
そして、ジョブ管理部２０１は、ジョブの実行時間の偏差平方和の値を（ジョブ統計情報テーブル６０７の計算対象のレコードの総実行回数６０９の値−１）で割った値をジョブの実行時間の不偏分散とする（Ｓ９０７）。次に、ジョブ管理部２０１は、ジョブの実行時間の不偏分散の正の平方根の値をジョブの実行時間の不偏標準偏差の値σとする（Ｓ９０８）。
【００２５】
図１０は、ジョブの実行時間の上限値uを計算する実行時間上限値算出処理（Ｓ７０４）の流れの一例を示す。
ジョブの実行時間の上限値uを計算できるのは、ジョブの実行時間の不偏標準偏差σの値が計算不能以外（Ｓ１００１：Ｙｅｓ）で、かつ、ジョブ定義テーブル４０１のジョブ名４０２が計算の対象としているジョブの名称のレコードの異常判定上側確率４０７の値が０以外（Ｓ１００２：Ｙｅｓ）である場合のみである。このため、それ以外の場合（Ｓ１００１：Ｎｏ、Ｓ１００２：Ｎｏ）、ジョブ管理部２０１は、ジョブの実行時間の上限値uは計算不能として、処理を終了する（Ｓ１００３）。
ジョブの実行時間の上限値uを計算できる条件が満たされている場合（Ｓ１００１：Ｙｅｓ、Ｓ１００２：Ｙｅｓ）、ジョブ管理部２０１は、まず、計算の対象としているジョブの名称と同一のジョブ名４０２を有するジョブ定義テーブル４０１のレコードの異常判定上側確率４０７の値を上側確率５０２、(ジョブ統計情報テーブル６０７の対応するレコードの総実行回数６０９の値−１)を自由度５０３として、関数値テーブル５０１からt値tを取得する（Ｓ１００４）。ただし、ジョブ管理部２０１は、(ジョブ統計情報テーブル６０７の対応するレコードの総実行回数６０９の値−１)がd_maxより大きい場合は、自由度５０３をd_maxとしてt値tを取得する。
続いて、ジョブ管理部２０１は、ジョブの実行時間の上限値uを、ジョブの実行時間の平均値μ、ジョブの実行時間の不偏標準偏差σ、ステップＳ１００４で取得したt値tより、ｕ=μ＋σｔとして計算する（Ｓ１００５）。
なお、ステップＳ１００４は本発明のｔ値取得ステップの例であり、ステップＳ１００５は本発明の実行時間上限値算出ステップの例である。
【００２６】
次に、ジョブの実行時間の上限値以上の時間が経過しても実行が終わらない場合に、そのジョブの実行を異常が発生しているとみなして停止する処理について説明する。
図１１は、ジョブ実行を開始するたびに障害判定オブジェクトを障害判定オブジェクト用キューに格納する障害判定オブジェクト格納処理の流れの一例を示す。
まず、ジョブ管理部２０１は、障害判定オブジェクトを格納する優先度つきキューを生成する（Ｓ１１０１）。このキューを障害判定オブジェクト用キューと呼ぶ。
続いて、ジョブ管理部２０１は、ジョブ実行を開始するたびに、以降で説明する処理を行う。まず、ジョブ管理部２０１は、ジョブ統計情報テーブル６０７から、ジョブ名６０８が実行を開始したジョブの名称であるレコードの実行時間の上限値６１２の値を取得し、取得した値をジョブの実行時間の上限値tとする。そして、ジョブ管理部２０１は、ジョブの実行時間の上限値tが計算不能以外の場合（Ｓ１１０２：Ｙｅｓ）のみ、以降の処理を行う。ジョブ管理部２０１は、実行結果テーブル６０１から、実行ＩＤ６０２およびジョブ名６０３が実行を開始したジョブの実行ＩＤおよび名称と一致するレコードの開始時刻６０５の値を取得し、取得した値にジョブの実行時間の上限値tを加えた時刻を障害判定時刻とする（Ｓ１１０３）。続いて、ジョブ管理部２０１は、実行を開始したジョブの実行ＩＤと名称（ジョブ名）とステップＳ１１０３で計算した障害判定時刻を属性とする障害判定オブジェクトを、障害判定オブジェクト用キューに格納する（Ｓ１１０４）。
【００２７】
図１２は、図１１の障害判定オブジェクト格納処理により障害判定オブジェクトが障害判定オブジェクト用キューに格納されたときに障害判定スレッドを起動する障害判定オブジェクト格納時障害判定スレッド起動処理の流れの一例を示す。
障害判定オブジェクト用キューは優先度つきキューである。ジョブ管理部２０１は、まず、受け取った障害判定オブジェクトを、障害判定時刻が早いものが前になるように配置する（Ｓ１２０１）。ステップＳ１２０１の処理の結果、先頭の障害判定オブジェクトが入れ替わった場合（Ｓ１２０２：Ｙｅｓ）のみ、その時点で起動している障害判定スレッドがあれば、ジョブ管理部２０１は、そのスレッドを停止して（Ｓ１２０３）、先頭の障害判定オブジェクトを新たな障害判定スレッドに渡して、新たな障害判定スレッドを起動する（Ｓ１２０４）。
【００２８】
図１３は、障害判定スレッドの処理の流れの一例を示す。
障害判定スレッドは、まず、起動時に渡された障害判定オブジェクトの障害判定時刻までスリープする（Ｓ１３０１）。障害判定スレッドは、スリープが終了したら、ジョブ定義テーブル４０１のジョブ名４０２が障害判定オブジェクトのジョブ名と一致するレコードの実行先エージェント名４０５が示すジョブ実行エージェントに、障害判定オブジェクトの実行ＩＤとジョブ名を含む障害判定通知を送る（Ｓ１３０２）。続いて、障害判定スレッドは、障害判定オブジェクト用キューから、この障害判定スレッドが保持している障害判定オブジェクトを取り除く（Ｓ１３０３）。
【００２９】
図１４は、図１３のステップＳ１３０３で障害判定オブジェクトが取り除かれたときに実行される障害判定時障害判定スレッド起動処理の流れの一例を示す。
ジョブ管理部２０１は、取り除かれた障害判定オブジェクトが先頭に格納されていたものであり、先頭の障害判定オブジェクトが入れ替わった場合（Ｓ１４０１：Ｙｅｓ）のみ、先頭の障害判定オブジェクトを新たな障害判定スレッドに渡して、新たな障害判定スレッドを起動する（Ｓ１４０２）。
【００３０】
図１５は、ジョブ管理部２０１がジョブ実行部３０１からジョブ実行終了通知を受信したときに後続のジョブを実行するジョブ実行終了時処理の流れの一例を示す。
ジョブ管理部２０１は、まず、実行ＩＤとジョブ名が受信したジョブ実行終了通知に含まれるものと一致する障害判定オブジェクトを、障害判定オブジェクト用キューから取り除く（Ｓ１５０１）。続いて、ジョブ管理部２０１は、実行結果テーブル６０１の、実行ＩＤ６０２とジョブ名６０３が受信したジョブ実行終了通知に含まれる実行ＩＤとジョブ名と一致するレコードの、状態６０４と終了時刻６０６を、ジョブ実行終了通知に含まれる内容で更新する（Ｓ１５０２）。続いて、ジョブ管理部２０１は、後続のジョブネット／ジョブがあれば、ジョブ実行エージェント１０２Ａ〜Ｃに実行を要求する（Ｓ１５０３）。なお、後続のジョブネット／ジョブとは、ジョブ定義テーブル４０１の先行ジョブネット名／先行ジョブ名４０４が実行終了通知から実行終了したと判断されるジョブネット／ジョブを指しているレコードのジョブネット名／ジョブ名４０２が示すジョブネット／ジョブをいう。
【００３１】
図１６は、図１５のステップＳ１５０１において、ジョブ実行終了時に障害判定オブジェクト用キューから障害判定オブジェクトが取り除かれたときに障害判定スレッドを起動するジョブ実行終了時障害判定スレッド起動処理の流れの一例を示す。
取り除かれた障害判定オブジェクトが先頭に格納されていたものであり、先頭の障害判定オブジェクトが入れ替わった場合（Ｓ１６０１）のみ、その時点で起動している障害判定スレッドがあれば、そのスレッドを停止して（Ｓ１６０２）、先頭の障害判定オブジェクトを新たな障害判定スレッドに渡して、新たな障害判定スレッドを起動する（Ｓ１６０３）。
【００３２】
図１７は、ジョブ実行部３０１が障害判定通知を受信したときにジョブの実行を停止するジョブ実行エージェントのジョブ実行停止処理の流れの一例を示す。
ジョブ実行部３０１は、まず、障害判定通知に含まれる実行ＩＤとジョブ名のジョブの実行を停止する（Ｓ１７０１）。続いて、ジョブ実行部３０１は、ジョブ管理マネージャー１０１に、障害判定にしたがって停止したジョブの実行ＩＤとジョブ名を含む障害判定停止通知を送る（Ｓ１７０２）。
【００３３】
図１８は、ジョブ管理部２０１が障害判定停止通知を受信したときに行うジョブ管理マネージャー１０１のジョブ実行停止処理の流れの一例を示す。
ジョブ管理部２０１は、実行結果テーブル６０１の、実行ＩＤ６０２およびジョブ名６０３が受信した障害判定停止通知に含まれる実行ＩＤおよびジョブ名と一致するレコードの、状態６０４を「障害判定停止」にする（Ｓ１８０１）。
続いて、ジョブ管理部２０１は、ジョブ定義テーブル４０１のジョブ名４０２が受信した障害判定停止通知に含まれるジョブ名と一致するレコードの上位ジョブネット名４０３を上位ジョブネット名とし、実行結果テーブル６０１の、実行ＩＤ６０２が受信した障害判定停止通知に含まれる実行ＩＤと一致し、ジョブネット名６０３が上位ジョブネット名と一致するレコードの状態６０４を「障害判定停止」にする（Ｓ１８０２）。その際、状態変更の対象としたジョブネットのさらに上位のジョブネットも、再帰的に状態を「障害判定停止」にする。なお、ステップＳ１８０２は、実行時間の上限値を超える時間を経過してもジョブ実行が終了しなかったため、障害が発生していると判定した場合の対処方法の一例である。この例の他に、例えば、障害が発生していると判定した場合の後続ジョブを定義できるようにすることが考えられる。
【００３４】
また、上述した実施形態では、ジョブの実行時間の実績の平均と不偏標準偏差の計算に使用する標本集団を、同一のジョブの実行の実績すべてにしているが、実行時間が実行した時期で変化するジョブ、例えば、扱う業務量が経過日数とともに増加するため、実行時間が実行時期に応じて徐々に増加するジョブなどで適切な値を求めるために、任意に指定された期間の条件（例えば、実行終了から一カ月経過していないもの）を付加して標本集団を定めることとしてもよい。
【００３５】
また、上述した実施形態では、ステップＳ１００５でジョブの実行時間の上限値を求め、開始してからジョブの実行時間の上限値以上の時間が経過しても完了しないジョブの実行を、異常が発生しているとみなして停止しているが、ジョブを停止せずに警告を通知することとしてもよい。
【００３６】
以上説明したように、本発明によれば、ジョブ実行がほぼ確実に完了すると予測される時間を求めることができる。そして、この時間に基づいて、ジョブ実行のためにコンピューターシステムを確保する時間や、ジョブ実行が終わらないため異常であると判断する経過時間の閾値を決定することができる。
【符号の説明】
【００３７】
１００…ジョブ実行システム、１０１…ジョブ管理マネージャー、１０２Ａ、１０２Ｂ、１０３Ｃ…ジョブ実行エージェント、１０３…端末、１０４…ネットワーク、２０１…ジョブ管理部、２０２…入出力部、２１０…ジョブ管理マネージャーの記憶装置、２１１…ジョブ定義ＤＢ、２１２…実行結果情報ＤＢ、２１３…関数値テーブル、２１４…ジョブ管理プログラム、３０１…ジョブ実行部
【図１】
2015170085.tif 000003
【図２】
2015170085.tif 000004
【図３】
2015170085.tif 000005
【図４】
2015170085.tif 000006
【図５】
2015170085.tif 000007
【図６】
2015170085.tif 000008
【図７】
2015170085.tif 000009
【図８】
2015170085.tif 000010
【図９】
2015170085.tif 000011
【図１０】
2015170085.tif 000012
【図１１】
2015170085.tif 000013
【図１２】
2015170085.tif 000014
【図１３】
2015170085.tif 000015
【図１４】
2015170085.tif 000016
【図１５】
2015170085.tif 000017
【図１６】
2015170085.tif 000018
【図１７】
2015170085.tif 000019
【図１８】
2015170085.tif 000020