(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数のジョブの各々が複数回実行される分析対象期間についてログデータを取得し、
前記分析対象期間を分割した場合における複数の区間の各々について、終了時刻が当該区間のみに含まれるジョブである所属ジョブを、前記ログデータを用いて特定し、
前記複数の区間のうち第１の区間の所属ジョブについて、当該所属ジョブの終了時刻に基づいて、当該所属ジョブの実行順序関係を示す第１のデータを生成し、また、前記複数の区間のうち、前記第１の区間に後続する第２の区間の所属ジョブについて、当該所属ジョブの終了時刻に基づいて、当該所属ジョブの実行順序関係を示す第２のデータを生成し、
前記複数のジョブのうち終了時刻が前記第１の区間及び前記第２の区間の両方に含まれる無所属ジョブと、前記第１の区間の所属ジョブのうち、終了時刻が前記無所属ジョブの終了時刻よりも早い所属ジョブと、前記第２の区間の所属ジョブのうち、終了時刻が前記無所属ジョブの終了時刻よりも遅い所属ジョブとの間の実行順序関係を示す第３のデータを生成し、
前記第１のデータと前記第２のデータと前記第３のデータとを統合し、前記第１の区間の所属ジョブと前記第２の区間の所属ジョブと前記無所属ジョブとの間の実行順序関係を示すデータを生成する、
処理を実行させるためのプログラム。
【請求項２】
複数のジョブの各々が複数回実行される分析対象期間についてログデータを取得するステップと、
前記分析対象期間を分割した場合における複数の区間の各々について、終了時刻が当該区間のみに含まれるジョブである所属ジョブを、前記ログデータを用いて特定するステップと、
前記複数の区間のうち第１の区間の所属ジョブについて、当該所属ジョブの終了時刻に基づいて、当該所属ジョブの実行順序関係を示す第１のデータを生成し、また、前記複数の区間のうち、前記第１の区間に後続する第２の区間の所属ジョブについて、当該所属ジョブの終了時刻に基づいて、当該所属ジョブの実行順序関係を示す第２のデータを生成するステップと、
前記複数のジョブのうち終了時刻が前記第１の区間及び前記第２の区間の両方に含まれる無所属ジョブと、前記第１の区間の所属ジョブのうち、終了時刻が前記無所属ジョブの終了時刻よりも早い所属ジョブと、前記第２の区間の所属ジョブのうち、終了時刻が前記無所属ジョブの終了時刻よりも遅い所属ジョブとの間の実行順序関係を示す第３のデータを生成するステップと、
前記第１のデータと前記第２のデータと前記第３のデータとを統合し、前記第１の区間の所属ジョブと前記第２の区間の所属ジョブと前記無所属ジョブとの間の実行順序関係を示すデータを生成するステップと、
を含み、コンピュータにより実行されるジョブ分析方法。
【請求項３】
複数のジョブの各々が複数回実行される分析対象期間についてログデータを取得する取得部と、
前記分析対象期間を分割した場合における複数の区間の各々について、終了時刻が当該区間のみに含まれるジョブである所属ジョブを、前記ログデータを用いて特定する特定部と、
前記複数の区間のうち第１の区間の所属ジョブについて、当該所属ジョブの終了時刻に基づいて、当該所属ジョブの実行順序関係を示す第１のデータを生成し、また、前記複数の区間のうち、前記第１の区間に後続する第２の区間の所属ジョブについて、当該所属ジョブの終了時刻に基づいて、当該所属ジョブの実行順序関係を示す第２のデータを生成する第１実行順序関係解析部と、
前記複数のジョブのうち終了時刻が前記第１の区間及び前記第２の区間の両方に含まれる無所属ジョブと、前記第１の区間の所属ジョブのうち、終了時刻が前記無所属ジョブの終了時刻よりも早い所属ジョブと、前記第２の区間の所属ジョブのうち、終了時刻が前記無所属ジョブの終了時刻よりも遅い所属ジョブとの間の実行順序関係を示す第３のデータを生成する第２実行順序関係解析部と、
前記第１のデータと前記第２のデータと前記第３のデータとを統合し、前記第１の区間の所属ジョブと前記第２の区間の所属ジョブと前記無所属ジョブとの間の実行順序関係を示すデータを生成する第３実行順序関係解析部と、
を有するジョブ分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のジョブの関係を分析する技術に関する。
【背景技術】
【０００２】
大規模システムにおいては多数のバッチジョブが実行される。バッチジョブは、ある程度まとまってデータを処理することである。例えば１日の売上計算処理のように、所定期間毎にまとめて行うジョブを含む。バッチジョブは、典型的には、プログラムやスクリプトに従って処理される。バッチジョブ同士には様々な形態での順序関係があり、相互に連動することが多い。例えば、発注確定処理が終了してから、売上計算処理を開始するといった場合がある。また、バッチジョブＡがファイルＣを出力すると、待機していたバッチジョブＢが当該ファイルＣの処理を開始するといった場合もある。
【０００３】
しかしながら、バッチジョブの順序関係は、簡単に確認できない場合がある。例えば、バッチジョブＡのためのプログラムの実行により出力されるメッセージに応じてバッチジョブＢを開始している場合には、プログラムを解析しなければその順序関係を特定できない。また、近年企業合併が多く行われているが、その際複数のシステムの統合も行われる。そのような場合に、開発者や運用管理者がばらばらであると、知りたいバッチ順序関係定義情報にアクセスできない場合も出てくる。
【０００４】
プロセスマイニングという技術が知られている。プロセスマイニングは、業務プロセスにおけるタスクの実行順序の結果（例えばログ）の集合から、タスクの接続関係を推定する技術である。具体的には、αアルゴリズムやその改良アルゴリズム、遺伝的アルゴリズム等を用いるものである。しかしながら、多くのプロセスマイニング技術は、人間が実行する業務プロセスを前提としているため、１つのプロセスはたかだか数個乃至十数個のタスクしか含まれないということを前提としている。従って、１プロセスあたりのタスク数が増加すると、計算量が大幅に増えてしまう。例えば、精度の良いアルゴリズム（例えばα++アルゴリズム等）になると、指数的に計算量が増加することが知られている。すなわち、リーズナブルな時間内に結果を得ることは難しい。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−２１４１９５号公報
【特許文献２】特開平７−１７５６６８号公報
【特許文献３】特開２００９−９３６２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、１つの側面では、本発明の目的は、ジョブの実行順序の把握を容易に行うことができるようにすることである。
【課題を解決するための手段】
【０００７】
本ジョブ分析方法は、（Ａ）ログデータに含まれる複数のジョブを、ジョブの終了時刻が複数の時間区間のうちいずれの時間区間に属するかに応じて分類する。（Ｂ）そして、第１の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第１のデータを生成し、また、第１の時間区間に後続する第２の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第２のデータを生成する。（Ｃ）そして、第１の時間区間に含まれるジョブの終了時刻と、第２の時間区間に含まれるジョブとの終了時刻とに基づいて、第１の時間区間に含まれるジョブと第２の時間区間に含まれるジョブとの間の実行順序関係を解析して、第１の時間区間から第２の時間区間に渡ったジョブの実行順序関係を示すデータを生成する。
【発明の効果】
【０００８】
ジョブの実行順序の把握を容易に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施の形態のジョブ分析装置の機能ブロック図である。
【図２】図２は、第１の実施の形態に係る処理フローを示す図である。
【図３】図３は、第２の実施の形態に係るシステム概要図である。
【図４】図４は、第２の実施の形態に係るメインの処理フローを示す図である。
【図５】図５は、ログデータの一例を示す図である。
【図６】図６は、パーティショニング処理の処理フローを示す図である。
【図７】図７は、ジョブの実行時間のぶれ幅を表すデータの一例を示す図である。
【図８】図８は、パーティションとジョブの関係を表す模式図である。
【図９】図９は、パーティションと評価関数の計算例を説明するための模式図である。
【図１０】図１０は、評価関数の評価値の変化例を表す図である。
【図１１】図１１は、分割時刻データの一例を表す図である。
【図１２】図１２は、パーティションとジョブの関係の一例を示す図である。
【図１３】図１３は、分割時刻データの一例を示す図である。
【図１４】図１４は、パーティションとジョブとの関係の一例を表す図である。
【図１５】図１５は、分割時刻データの一例を示す図である。
【図１６】図１６は、パーティションとジョブとの関係の一例を表す図である。
【図１７】図１７は、一部のパーティションとジョブとの関係を表す模式図である。
【図１８】図１８は、第１ジョブ解析処理で用いるログデータの一例を示す図である。
【図１９】図１９は、第１ジョブ解析処理を一部に実施した後の実行順序データの一例を示す図である。
【図２０】図２０は、第１ジョブ解析処理後の実行順序データの一例を示す図である。
【図２１】図２１は、第１ジョブ解析処理後のノードテーブルの一例を示す図である。
【図２２】図２２は、第１ジョブ解析処理後のリンクテーブルの一例を示す図である。
【図２３】図２３は、第２ジョブ解析処理の処理フローを示す図である。
【図２４】図２４は、パーティションとジョブの関係を表す模式図である。
【図２５】図２５は、一部の実行順序データを表す図である。
【図２６】図２６は、実行順序データの一例を示す図である。
【図２７】図２７は、最終的なノードテーブルの一例を示す図である。
【図２８】図２８は、最終的なリンクテーブルの一例を示す図である。
【図２９】図２９は、第３の実施の形態に係るジョブ分析装置の機能ブロック図である。
【図３０】図３０は、第３の実施の形態に係る処理フローを示す図である。
【図３１】図２９は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
第１の実施の形態に係るジョブ分析装置の機能ブロック図を図１に示す。第１の実施の形態に係るジョブ分析装置は、ログデータ格納部１００１と、パーティショニング処理部１００３と、第１ジョブ解析処理部１００５と、第２ジョブ解析処理部１００７と、データ格納部１００９とを有する。パーティショニング処理部１００３は、ログデータ格納部１００１に格納されているログデータを用いて処理を行う。第１ジョブ解析処理部１００５は、パーティショニング処理部１００３の処理結果及びログデータ格納部１００１に格納されているログデータを用いて処理を行い、処理結果をデータ格納部１００９に格納する。第２ジョブ解析処理部１００７は、データ格納部１００９に格納されているデータとパーティショニング処理部１００３の処理結果とを用いて処理を行い、処理結果をデータ格納部１００９に格納する。
【００１１】
次に、図１に示したジョブ分析装置の処理内容を図２を用いて説明する。まず、パーティショニング処理部１００３は、ログデータ格納部１００１に格納されている、複数のジョブのログデータから、各ジョブの実行時間のぶれ幅を表す第１の時刻及び第２の時刻を特定する（ステップＳ１００１）。また、パーティショニング処理部１００３は、分析対象期間の開始時刻から分析対象期間の終了時刻までを複数のパーティションに分割しつつ、各ジョブの第１及び第２の時刻に基づき各パーティションに属するジョブを特定する（ステップＳ１００３）。このようなパーティショニング処理部１００３の処理結果は、第１及び第２ジョブ解析処理部１００５及び１００７に出力される。
【００１２】
次に、第１ジョブ解析処理部１００５は、各パーティションにおいて、当該パーティションに属するジョブの実行時間（例えばログデータ格納部１００１に格納されるログデータから把握されるデータ）に基づきジョブの実行順序を解析し、パーティション内のジョブの実行順序関係を示す実行順序関係データを生成し、データ格納部１００９に格納する（ステップＳ１００５）。このように分析対象期間の開始時刻から終了時刻までの時間を複数のパーティションに分割してパーティション毎にジョブの実行順序関係データを生成すれば、ジョブ解析のための処理時間がジョブ数に対して指数関数的に増加するのを防止することができるようになる。
【００１３】
そして、第２ジョブ解析処理部１００７は、隣接するパーティションについての実行順序関係データ及び当該隣接するパーティション内の各ジョブの第１及び第２の時刻に基づき、隣接するパーティションに属するジョブの実行順序関係を解析して、隣接するパーティション間に渡ったジョブの実行順序を示すデータを生成し、データ格納部１００９に格納する（ステップＳ１００７）。第２ジョブ解析処理部１００７の処理負荷はさほど大きくないので、全体としても処理時間をたかだかジョブ数に比例する程度に抑えることができるようになる。
【００１４】
［実施の形態２］
次に、第２の実施の形態について説明する。なお、本実施の形態では、ジョブの一例としてバッチジョブについて分析する例を説明する。しかしながら、関連付けられた複数の一般ジョブについて複数回ログデータを得ることができれば、本実施の形態を適用可能である。
【００１５】
第２の実施の形態に係るシステムの機能ブロック図を図３に示す。例えば社内ＬＡＮ（Local Area Network）であるネットワーク１には、運用管理者（運用担当者とも呼ぶ）が操作する１又は複数の運用管理者端末３００と、監視対象システム２００と、ジョブ分析装置１００とが接続されている。運用管理者端末３００は、例えばパーソナルコンピュータであり、例えばジョブ分析装置１００と連携する専用のアプリケーション・プログラムが実行されている場合もある。また、運用管理者端末３００は、ウェブ（Ｗｅｂ）ブラウザを実行しており、ジョブ分析装置１００から受信したＷｅｂページ・データを表示し、必要であればデータを入力してジョブ分析装置１００に送信するといった仕組みを採用する場合もある。
【００１６】
バッチジョブ２３０を実行する監視対象システム２００は、バッチジョブ２３０の実行状況を監視する処理などを実施するログ管理部２１０と、ログ管理部２１０によりバッチジョブ２３０の実行状況を表すデータとして出力されるログデータを格納するログデータ格納部２２０とを有する。ログ管理部２１０は、ジョブ分析装置１００からの要求に応じてログデータ格納部２２０に格納されているログデータをジョブ分析装置１００に出力するといった処理も実施する。
【００１７】
また、ジョブ分析装置１００は、（Ａ）運用管理者端末３００とのインタフェースとなる入出力部１１２と、（Ｂ）入出力部１１２が運用管理者端末３００から受信した設定データを格納する設定データ格納部１１３と、（Ｃ）設定データ格納部１１３に格納されている設定データに従って監視対象システム２００からログデータを取得するログ取得部１１０と、（Ｄ）ログ取得部１１０が取得したログデータを格納するログデータ格納部１１１とを有する。
【００１８】
また、ジョブ分析装置１００は、（Ｅ）設定データ格納部１１３に格納されている設定データに従ってログデータ格納部１１１に格納されているログデータを用いて処理を行うパーティショニング処理部１１４と、（Ｆ）パーティショニング処理部１１４の処理結果を格納するパーティショニング結果格納部１１５とをさらに有する。
【００１９】
さらに、ジョブ分析装置１００は、（Ｇ）ログデータ格納部１１１及びパーティショニング結果格納部１１５に格納されているデータを用いて処理を行う第１ジョブ解析処理部１１６と、（Ｈ）第１ジョブ解析処理部１１６の処理結果等を格納する実行順序データ格納部１１８と、（Ｉ）パーティショニング結果格納部１１５及び実行順序データ格納部１１８に格納されているデータを用いて処理を行う第２ジョブ解析処理部１１７とをさらに有する。
【００２０】
実行順序データ格納部１１８には、第２ジョブ解析処理部１１７の処理結果をも格納され、本実行順序データ格納部１１８に格納されているデータは、例えば運用管理者端末３００からの要求に応じて当該運用管理者端末３００に送信される。
【００２１】
次に、図４乃至図２８を用いて図３に示したシステムの処理内容について説明する。まず、入出力部１１２は、運用管理者端末３００から、分析対象期間の分析開始時刻及び分析終了時刻を設定データとして受信し、設定データ格納部１１３に格納する（図４：ステップＳ１）。例えば、分析開始時刻「０：００」及び分析終了時刻「６：００」といったデータを格納する。その他、監視対象システム２００のログデータ格納部２２０に格納されているログデータのうち取得すべきログデータの記録期間についても、入出力部１１２が運用管理者端末３００から受信して、設定データ格納部１１３に格納するようにしてもよい。記録期間については、運用管理者端末３００から受信しない場合には初期値（例えば１週間分など）を用いる場合もある。さらに、パーティショニング処理部１１４がパーティショニングを行う際に参照すべき、１区間に属するジョブ数の上限についても、本ステップにおいて設定、格納される場合もある。このジョブ数の上限についても、初期値を用いる場合もある。
【００２２】
また、ログ取得部１１０が、ログ管理部２１０から、設定データ格納部１１３に設定データとして格納されている記録期間内のログデータを取得して、ログデータ格納部１１１に格納する（ステップＳ３）。なお、ログデータ格納部１１１にログデータを累積的に蓄積してゆくような場合もある。そのような場合には、ログ取得部１１０が、例えば定期的に新規のログデータを監視対象システム２００のログ管理部２１０から取得するので、図４の処理の流れにおいてログデータの取得は行われない。
【００２３】
ログデータ格納部１１１には、例えば図５に示すようなデータを格納している。図５の例では、実行されたバッチジョブ毎に、ジョブ名（又は識別子）と、終了時刻とが登録されるようになっている。図５の例では、終了時刻のみが登録される例を示しているが、開始時刻をも登録するようにしても良い。ここでは、バッチジョブの１つの性質として例えば毎日ほぼ同じ時刻に実行される例を示している。しかしながら、毎日ではなく１２時間毎にジョブを実行したり、何か所定のイベントに応じて一連のジョブが実行されるなどといったケースも考えられる。そのような場合には、例えば最初に実行されるジョブの開始時刻又は終了時刻を基準にして、他の時刻については相対時刻を算出して以下の処理を実施するようにしても良い。なお、相対時刻を用いるような場合には、この分析開始時刻及び分析終了時刻についても相対時刻となる。
【００２４】
次に、パーティショニング処理部１１４は、パーティショニング処理を実施する（ステップＳ５）。パーティショニング処理については、図６乃至図１６を用いて説明する。まず、パーティショニング処理部１１４は、ログデータ格納部１１１から設定データ格納部１１３に格納されている分析開始時刻から分析終了時刻についてのログデータを抽出し、抽出したログデータから、各ジョブについて、判断対象時刻データを生成し、パーティショニング結果格納部１１５に格納する（図６：ステップＳ１１）。
【００２５】
本実施の形態では、判断対象時刻として、ジョブの終了時刻のうち最も早い時刻と最も遅い時刻とを、ログデータから抽出する。図５に示した例の場合、ジョブ名「Ｊ１．ｓｈ」であれば、ジョブの終了時刻のうち最も早い時刻は「００：０５：００」であり、最も遅い時刻は「００：１０：００」となる。同様に、ジョブ名「Ｊ２．ｓｈ」であれば、ジョブの終了時刻のうち最も早い時刻は「００：０８：００」であり、最も遅い時刻は「００：２５：００」となる。ジョブ名「Ｊ３．ｓｈ」であれば、ジョブの終了時刻のうち最も早い時刻は「００：１５：００」であり、最も遅い時刻は「００：３０：００」となる。このように、ジョブの終了時刻のうち最も早い時刻及び最も遅い時刻によりジョブの実行時間のぶれ幅が特定される。なお、開始時刻及び終了時刻がログデータに含まれる場合には、開始時刻のうち最も早い時刻と、終了時刻のうち最も遅い時刻とを特定することにより、実行時間のぶれ幅を特定する。このような処理を実施することによって、例えば図７に示すようなデータが、パーティショニング結果格納部１１５に格納される。図７の例では、ジョブ毎に、ジョブ名と、最早終了時刻と、最遅終了時刻とが登録されるようになっている。なお、以下の説明では、最早終了時刻を「ｍｉｎ」と記し、最遅終了時刻を「ｍａｘ」と記す場合がある。
【００２６】
次に、パーティショニング処理部１１４は、設定データ格納部１１３に格納されている分析開始時刻から分析終了時刻までの時間帯のうち、分割要件を満たす区間を１つ特定する（ステップＳ１３）。分割要件は、設定データ格納部１１３に格納されており且つ上でも述べた「１区間に属するジョブ数の上限」以上のジョブが１区間に属しているという要件である。このジョブ数の上限は、第１ジョブ解析処理部１１６の処理能力に依存する。すなわち、第１ジョブ解析処理部１１６の処理が遅い場合には、ジョブ数の上限を下げる。一方、処理が速い場合には、ジョブ数の上限を上げても良い。さらに、初めてステップＳ１３を実施する場合、区間は分析開始時刻から分析終了時刻までの時間帯の全てとなり、以下述べる処理を繰り返し実施することによって、区間の分割が再帰的に実施されて、複数の区間が生成される。また、区間に属するジョブというのは、区間の開始時刻から終了時刻までに、最早終了時刻ｍｉｎ及び最遅終了時刻ｍａｘの両方が含まれるジョブを意味する。
【００２７】
ここで、模式的にジョブと区間との関係を図８に示しておく。図８においては、分析開始時刻Ｓから分析終了時刻Ｅまでを４つの区間に分割した例を示している。なお、Ｊは、分析開始時刻Ｓから分析終了時刻Ｅまでに実行されるジョブの集合であり、図８の例では、Ｊ１乃至Ｊ１０の１０個のジョブが存在している。なお、ジョブ名はＪ１．ｓｈであるが、簡略化してＪ１と記すこともある。また、Ｐは、パーティションの集合を表す。本実施の形態では、パーティショニング処理が完了した時点で生成されている「区間」をパーティションと呼ぶことにする。図８に示すように、最終的に４つのパーティションに分割された場合には、パーティションｐ１１乃至ｐ２２が集合Ｐに含まれる。さらに、ｂmをパーティションｐmとｐm+1との分割時刻として、集合Ｂは、全ての分割時刻ｂmを含む。なお、以下のような関係が成立する。
∀ｂi：（ｂi＜ｂi+1）∧（Ｓ＜ｂi＜Ｅ）
【００２８】
また、上でも述べたように、区間ｐmに、ｍｉｎ及びｍａｘが両方とも含まれるようなジョブの集合をＣ（ｐm）と記し、Ｊk∈Ｃ（ｐm）の時、ジョブＪkは区間ｐmに「属する」と呼ぶものとする。
【００２９】
図８から分かるように、パーティションｐ１１には、ジョブＪ１及びＪ２が属し、パーティションｐ１２には、ジョブＪ４及びＪ５が属する。しかしながら、ジョブＪ３については、いずれのパーティションにも属さない。同様に、パーティションｐ２１には、ジョブＪ６及びＪ７が属し、パーティションｐ２２には、ジョブＪ９及びＪ１０が属する。しかしながら、ジョブＪ８も、いずれのパーティションにも属さない。これらジョブＪ３及びＪ８を、本実施の形態では無所属ジョブと呼ぶものとする。
【００３０】
無所属ジョブＪｘは、以下のように表される。
【数１】
0005471400.tif 000002
【００３１】
図６の処理の説明に戻って、パーティショニング処理部１１４は、ステップＳ１３で特定された区間を複数の箇所で仮分割して、それぞれについて評価関数の評価値を算出し、例えばメインメモリなどの記憶装置に格納する（ステップＳ１５）。例えば、区間を所定間隔で仮に２分割して、サブ区間毎に、所属するジョブを特定する。
【００３２】
本実施の形態では、無所属ジョブの数が可能な限り少なく且つ分割後の２つの区間に属するジョブの個数の差ができる限り小さくなるように区間を分割するものとする。このような分割を行うことによって、以下で述べる第１ジョブ解析処理において精度良く（より具体的には矛盾なく）、また短い処理時間でジョブの解析が可能となる。
【００３３】
本実施の形態では具体的には以下のような評価関数Ｖを用いて評価値を算出する。
【数２】
0005471400.tif 000003
（１）式では、区間ｐを区間ｐ’と区間ｐ"に分割することを想定しており、｜Ｃ（ｐ）｜は、区間ｐに属するジョブの数を表す。
【００３４】
この評価関数ＶのＡの部分は、分割後の２つの区間に属するジョブがより多いほど大きな値となる。また、Ｂの部分は、分割後の２つの区間に属するジョブの個数の差分が小さいほど大きい値となる。そして、（１）式に示すように、ＡとＢの積が評価関数Ｖとなっている。積となっているのは、Ａの部分だけが大きな値となってもだめで、Ｂの部分だけが大きな値となってもだめで、両方がバランスするようにして全体として大きな評価値が得られるように、区間分割を行うようにすることを表している。
【００３５】
なお、（１）式は一例であって、上で述べたような目的を果たす他の評価関数を採用するようにしても良い。
【００３６】
図９を用いて評価関数Ｖの具体的な計算例について説明する。ここでは、区間ｐを、区間ｐ'及びｐ"に分割する場合に、時刻ｂ１で分割する場合と時刻ｂ２で分割する場合とについて評価関数の評価値を算出する。なお、Ｃ（ｐ）＝｛Ｊ１，Ｊ２，Ｊ３，Ｊ４，Ｊ５｝であり、｜Ｃ（ｐ）｜＝５である。時刻ｂ１で分割する場合には、Ｃ（ｐ'）＝｛Ｊ１，Ｊ２｝であり、Ｃ（ｐ"）＝｛Ｊ４，Ｊ５｝であるから、｜Ｃ（ｐ'）｜＝２及び｜Ｃ（ｐ"）｜＝２である。従って、（１）式のＡの部分が（２＋２）／５＝０．８となり、Ｂの部分が（１−（２−２）／５）＝１となるので、全体としてＶ＝０．８を得ることになる。このケースでは、無所属ジョブが１つだけ（Ｊ３のみ）である。
【００３７】
一方、時刻ｂ２で分割する場合には、Ｃ（ｐ'）＝｛Ｊ１，Ｊ２｝であり、Ｃ（ｐ"）＝｛Ｊ５｝であるから、｜Ｃ（ｐ'）｜＝２及び｜Ｃ（ｐ"）｜＝１である。従って、（１）式のＡの部分が（２＋１）／５＝０．６となり、Ｂの部分が（１−（２−１）／５）＝０．８となるので、全体としてＶ＝０．４８を得ることになる。このケースでは、無所属ジョブが２つ（Ｊ３及びＪ４）になってしまう。
【００３８】
従って、図９で示した２つのケースの中では時刻ｂ１で分割する方が好ましいということが分かる。
【００３９】
例えば、図１０に示すように、区間ｐの開始時刻ｓ１から終了時刻ｅ１まで分割時刻ｂを変化させて、評価関数Ｖの評価値が最も大きくなる分割時刻ｂoptを特定する。
【００４０】
なお、仮分割で生成された各区間に属するジョブについては、評価関数Ｖの評価値を算出する毎に、保持しておくことが好ましい。
【００４１】
また、分割時刻ｂoptを効率的に探索するには、様々な既存の最適化アルゴリズムを適用可能である。しかし、上でも述べたように所定間隔毎に評価関数Ｖの評価値を網羅的に計算して最も大きな評価値を得られる分割時刻ｂoptを見つけ出すようにしても良い。このようにしても、処理量が膨大になることはない。
【００４２】
図６の処理の説明に戻って、パーティショニング処理部１１４は、仮分割の結果として算出される評価関数Ｖの評価値が最大となる分割時刻を特定し、分割時刻のデータを、パーティショニング結果格納部１１５に格納する（ステップＳ１７）。また、パーティショニング処理部１１４は、特定された分割時刻により生成された、分割後の区間毎に、当該区間に属するジョブを特定し、各区間に属するジョブのデータを、パーティショニング結果格納部１１５に格納する（ステップＳ１８）。図９に示したケースでは、分割時刻ｂ１と分割後の区間ｐ'に属するジョブＪ１及びＪ２と、区間ｐ"に属するジョブＪ４及びＪ５とが、パーティショニング結果格納部１１５に格納される。
【００４３】
図８に示すような区間についてパーティショニング処理を実施する場合、１回目の区間分割を実施すると、図１１及び図１２に示すようなデータが、パーティショニング結果格納部１１５に格納される。図１１は分割時刻を登録するテーブルを示しており、分割ＩＤ「ｂ１」に対応付けて分割時刻「０３：００」が登録される。また、図１２は区間に属するジョブを登録するテーブルを示しており、区間ＩＤに対応付けて所属ジョブ名が登録される。すなわち、区間ｐ１に対応付けてジョブＪ１乃至Ｊ５が登録されている。また、区間ｐ２に対応付けてジョブＪ６乃至Ｊ１０が登録されている。
【００４４】
２回目の区間分割を実施すると、図１３及び図１４に示すようなデータが、パーティショニング結果格納部１１５に格納される。２回目の区間分割では、区間ｐ１が区間ｐ１１及びｐ１２に分割される。図１３は図１１の後の状態を表しており、分割ＩＤ「ｂ２」に対応付けて分割時刻「０１：２０」が追加登録されている。また、図１４は図１２の後の状態を表しており、区間ｐ１１にはジョブＪ１及びＪ２が属しており（Ｃ（ｐ１１）＝｛Ｊ１，Ｊ２｝）、区間ｐ１２にはジョブＪ４及びＪ５が属しており（Ｃ（ｐ１２）＝｛Ｊ４，Ｊ５｝）、区間ｐ１には属していたが区間ｐ１１及びｐ１２のいずれにも属していない無所属ジョブＪ３が存在していることを示している。無所属ジョブＪ３についても、どの区間に属しているかについてデータを保持しておくことが好ましい。図８の例では、区間ｐ１１＋ｐ１２に属しているので、Ｃ（ｐ１１＋ｐ１２）＝｛Ｊ１，Ｊ２，Ｊ３，Ｊ４，Ｊ５｝というデータを保持しておくことが好ましい。
【００４５】
３回目の区間分割を実施すると、図１５及び図１６に示すようなデータが、パーティショニング結果格納部１１５に格納される。図１５は図１３の後の状態を表しており、分割ＩＤ「ｂ３」に対応付けて分割時刻「０４：４５」が追加登録されている。また、図１６は図１４の後の状態を表しており、区間ｐ２１にはジョブＪ６及びＪ７が属しており（Ｃ（ｐ２１）＝｛Ｊ６，Ｊ７｝）、区間ｐ２２にはジョブＪ９及びＪ１０が属しており（Ｃ（ｐ２２）＝｛Ｊ９，Ｊ１０｝）、区間ｐ２には属していたが区間ｐ２１及びｐ２２のいずれにも属していない無所属ジョブＪ８が存在していることを示している。無所属ジョブＪ８についても、どの区間に属しているかについてデータを保持しておくことが好ましい。図８の例では、区間ｐ２１＋ｐ２２に属しているので、Ｃ（ｐ２１＋ｐ２２）＝｛Ｊ６，Ｊ７，Ｊ８，Ｊ９，Ｊ１０｝というデータを保持しておくことが好ましい。
【００４６】
図６の処理の説明に戻って、パーティショニング処理部１１４は、全ての区間が分割要件を満たさなくなったか判断する（ステップＳ１９）。全ての区間について属するジョブの数を計数して、分割要件であるジョブ数の上限未満となったか判断する。１つの区間でも計数結果が上限以上となった場合には、ステップＳ１３に戻り、属するジョブの数が上限以上となった区間について再度分割を実施する。上限をｔとすると、式で書くと以下の条件が満たされているかを確認する。
∀ｐi：｜Ｃ（ｐi）｜＜ｔ
【００４７】
属するジョブの数が上限以上となった区間についてのみ再度分割を実施するので、区間ｐ１を分割することによって得られた区間ｐ１１とｐ１２のうち区間ｐ１１のみが上限以上のジョブが属する場合には、区間ｐ１１を区間ｐ１１１とｐ１１２とに分割する。
【００４８】
一方、全ての区間が分割要件を満たさなくなった場合には、元の処理に戻る。最終的に得られた区間をパーティションと呼ぶ。さらに、以下で述べるように、連結した後の区間についてもパーティションと呼ぶことにする。
【００４９】
以上のような処理を実施することによって、各パーティションには、ジョブ数の上限以下のジョブが属し、ほぼ均一のジョブ数が属するようになる。これによって、以下で述べる第１ジョブ解析処理の処理量が多くなりすぎることなく且つ精度良く第１ジョブ解析処理を実施することができるようになる。
【００５０】
図４の処理の説明に戻って、次に、第１ジョブ解析処理部１１６は、パーティショニング結果格納部１１５及びログデータ格納部１１１に格納されているデータを用いて、各パーティションについて、当該パーティションに属するジョブの実行順序を特定する第１ジョブ解析処理を実施し、生成されたデータを、実行順序データ格納部１１８に格納する（ステップＳ７）。図１７に、図８で示したパーティションｐ１１だけを抜き出したものを示す。このようにパーティションｐ１１には、ジョブＪ１及びＪ２のみが属する（すなわちＣ（ｐ１１）＝｛Ｊ１，Ｊ２｝）ことがパーティショニング結果格納部１１５に格納されているデータから特定される。このような場合には、図１８に示すように、ログデータ格納部１１１からジョブＪ１及びＪ２についてのログデータを抽出し、ジョブＪ１及びＪ２の終了時刻の前後関係に基づき、ジョブＪ１が先に実行されているのかジョブＪ２が先に実行されているのかを判断する。図１８の例では、異なる日においても、ジョブＪ１が先に終了していることが分かる。このような解析により、パーティションｐ１１内のジョブの実行順序は、図１９に示したように、ジョブＪ１の後にジョブＪ２が実行されることが特定される。なお、図１９では、ジョブをノードとみなして、先に実行されるジョブから後に実行されるジョブへ矢印が引かれており、これによって実行順序を示している。図１７のケースは非常に簡単なケースではあるが、ジョブ数が３以上でも基本的には同じような処理を実施する。一般的には、プロセスマイニングにおいて採用されているαアルゴリズム及びαアルゴリズムの改良版並びに遺伝子的アルゴリズム、さらにヒューリスティックサーチ（heuristics search）などを適用して、パーティション内の実行順序データを生成する。
【００５１】
なお、図８で示したパーティションｐ１２、ｐ２１及びｐ２２についても、模式的に示せば図２０に示すような実行順序データが得られる。すなわち、ジョブＪ４の後にジョブＪ５が実行され、ジョブＪ６の後にジョブＪ７が実行され、ジョブＪ９の後にジョブＪ１０が実行される。
【００５２】
このような実行順序データは、例えば図２１及び図２２に示すような形で、実行順序データ格納部１１８に格納される。すなわち、図２１はノードテーブルであり、ノード名に対応付けてジョブ名が登録されるようになっている。また、図２２はリンクテーブルであり、第１ジョブ解析処理部１１６により生成されたリンク名毎に、先行ノード名及び後続ノード名が登録されるようになっている。
【００５３】
なお、本実施の形態では、所属するジョブの数に制限が加えられている各パーティション内において実行順序データを生成するので、処理が単純化されて、プロセスマイニングにおいて用いられているアルゴリズムを用いたとしてもリーズナブルな処理時間内の処理が完了する。逆に、リーズナブルな処理時間内で処理が完了するように、所属するジョブの数の上限を決定すればよい。処理時間はアルゴリズムに応じて異なるので、所属するジョブの上限についても、第１ジョブ解析処理に採用するアルゴリズムに応じて決定すればよい。
【００５４】
さらに、このようにパーティション毎に処理するため、並列処理が可能となる。すなわち、パーティションｐ１１を第１のプロセッサでパーティションｐ１２を第２のプロセッサで処理するといったように、複数のプロセッサで複数のパーティションについての第１ジョブ解析処理を分担すれば、それだけ処理時間を短縮することができるようになる。
【００５５】
図２１及び図２２だけでは、パーティション内部の実行順序データが得られただけでパーティション間の実行順序については解析されていない。また、図８の例では、無所属ジョブとしてジョブＪ３及びＪ８が特定されているので、これらの無所属ジョブについても考慮されていない。従って、第２ジョブ解析処理を行う。
【００５６】
図４の処理の説明に戻って、次に、第２ジョブ解析処理部１１７は、パーティショニング結果格納部１１５及び実行順序データ格納部１１８に格納されているデータを用いて、第２ジョブ解析処理を実施する（ステップＳ９）。第２ジョブ解析処理については、図２３乃至図２８を用いて説明する。
【００５７】
まず、第２ジョブ解析処理部１１７は、パーティショニング結果格納部１１５に格納されているデータに基づき、連結すべき隣接パーティションｐi及びｐi+1を選択する（ステップＳ２１）。整合性の取れた実行順序データを生成するためには、例えば、隣接パーティションｐi及びｐi+1を連結した区間に属する無所属ジョブの数を隣接パーティション毎に計数して、最も無所属ジョブの数が多い隣接パーティションを本ステップで選択する。
【００５８】
なお、隣接パーティションの連結区間に無所属ジョブが存在しない場合には、以下のステップＳ２３及びＳ２５をスキップする。すなわち、ステップＳ２１で、無所属ジョブが存在しない隣接パーティションを連結するということを検出すると、処理はステップＳ２７に移行する。
【００５９】
次に、第２ジョブ解析処理部１１７は、選択された隣接パーティションｐi及びｐi+1を連結した区間に属する無所属ジョブより先に実行され且つパーティションｐiに属する先行ジョブを特定する（ステップＳ２３）。この処理には、図７に示した最早終了時刻及び最遅終了時刻のデータを用いる。
【００６０】
本実施の形態では、先行パーティションｐiにおいて、最早終了時刻から最遅終了時刻までの時間帯が無所属ジョブＪｘの最早終了時刻から最遅終了時刻までの時間帯と重なることがなく且つ最遅終了時刻が無所属ジョブＪｘの最早終了時刻に最も近いジョブＪｙを、先に実行される先行ジョブとして特定する。より具体的には、先行パーティションｐiの実行順序データにおいて末端ノード（後続ノードが定義されていないノード）から探索し、探索先ノードについてのジョブの最遅終了時刻と無所属ジョブＪｘの最早終了時刻とを比較し、探索先ノードについてのジョブの最遅終了時刻が無所属ジョブＪｘの最早終了時刻より前であれば、探索先ノードについてのジョブを先行ジョブＪｙとして特定する。末端ノードが複数存在する場合には、最遅終了時刻の遅い順に順番にジョブを処理する。
【００６１】
例えば図２４に示すように、パーティションｐ１１とパーティションｐ１２とを連結する場合を考察する。図２４から分かるように、無所属ジョブＪ３をパーティションｐ１１に属するジョブＪ１及びＪ２のうちいずれが先行ジョブであるかを判断する。この場合、パーティションｐ１１の実行順序データの末端ジョブＪ２から探索を開始し、ジョブＪ２の最遅終了時刻は、無所属ジョブＪ３の最早終了時刻より遅い。従って、ジョブＪ２は先行ジョブＪｙではない。そうすると、ジョブＪ２から実行順序データに従って遡ってジョブＪ１を探索先ジョブとする。ジョブＪ１の最遅終了時刻と、無所属ジョブＪ３の最早終了時刻とを比較すると、ジョブＪ１の最遅終了時刻のほうが、無所属ジョブＪ３の最早終了時刻よりも早い。従って、ジョブＪ１が先行ジョブＪｙである。
【００６２】
なお、処理すべき無所属ジョブが複数存在する場合には、ステップＳ２３を処理すべき全ての無所属ジョブについて実施する。
【００６３】
このようにして特定された実行順序データは、実行順序データ格納部１１８に格納される。
【００６４】
また、第２ジョブ解析処理部１１７は、選択された隣接パーティションｐi及びｐi+1を連結した区間に属する無所属ジョブより後に実行され且つパーティションｐi+1に属する後続ジョブを特定する（ステップＳ２５）。ステップＳ２３と同様に、図７に示した最早終了時刻及び最遅終了時刻のデータを用いる。
【００６５】
本実施の形態では、後続パーティションｐi+1において、最早終了時刻から最遅終了時刻までの時間帯が無所属ジョブＪｘの最早終了時刻から最遅終了時刻までの時間帯と重なることがなく且つ最早終了時刻が無所属ジョブＪｘの最遅終了時刻に最も近いジョブＪｚを、後に実行される後続ジョブとして特定する。より具体的には、後続パーティションｐi+1の実行順序データにおいて、先頭ノード（先行ノードが定義されていないノード）から探索し、探索先ノードについてのジョブの最早終了時刻と無所属ジョブＪｘの最遅終了時刻とを比較し、探索先ノードについてのジョブの最早終了時刻が無所属ジョブＪｘの最遅終了時刻より後であれば、探索先ノードについてのジョブを後続ジョブＪｚとして特定する。先頭ノードが複数ある場合には、最早終了時刻の早い順にジョブを処理する。
【００６６】
例えば図２４の例では、無所属ジョブＪ３をパーティションｐ１２に属するジョブＪ４及びＪ５のうちいずれが後続ジョブであるかを判断する。この場合、パーティションｐ１２の実行順序データの先頭ジョブＪ４から探索を開始し、ジョブＪ４の最早終了時刻は、無所属ジョブＪ３の最遅終了時刻より早い。従って、ジョブＪ４は後続ジョブＪｚではない。そうすると、ジョブＪ４から実行順序データに従って遡ってジョブＪ５を探索先ジョブとする。ジョブＪ５の最早終了時刻と、無所属ジョブＪ３の最遅終了時刻とを比較すると、ジョブＪ５の最早終了時刻のほうが、無所属ジョブＪ３の最遅終了時刻よりも遅い。従って、ジョブＪ５が後続ジョブＪｚである。
【００６７】
なお、処理すべき無所属ジョブが複数存在する場合には、ステップＳ２５の処理も処理すべき全ての無所属ジョブについて実施する。
【００６８】
このようにして特定された実行順序データは、実行順序データ格納部１１８に格納される。
【００６９】
さらに、第２ジョブ解析処理部１１７は、パーティションｐiに属するジョブとパーティションｐi+1に属するジョブとのうち、パーティション間の先行ジョブと後続ジョブとなるジョブを特定する（ステップＳ２７）。簡単な場合には、先行パーティションｐiの実行順序データにおける末端ノードを先行ジョブとして特定し、後続パーティションｐi+1の実行順序データにおける先頭ノードを後続ジョブとして特定する。但し、末端ノードが複数存在する場合や先頭ノードが複数存在する場合もあるので、先行パーティションｐiのなかで最遅終了時刻が最も遅いジョブを先行ジョブとして特定し、後続パーティションｐi+1のなかで最早終了時刻が最も早いジョブを後続ジョブとして特定すればよい。
【００７０】
このような処理を実施すると、図２４に示した隣接パーティションｐ１１及びｐ１２の連結区間に属するジョブＪ１乃至Ｊ５は、図２５に示すような実行順序データに変換される。図２５では、ジョブＪ１とジョブＪ３との間のリンクＸがステップＳ２３で設定され、ジョブＪ３とジョブＪ５との間のリンクＹがステップＳ２５で設定され、ジョブＪ２とジョブＪ４との間のリンクＺが設定される。すなわち、先行ジョブと後続ジョブとが特定されることになる。
【００７１】
そして、第２ジョブ解析処理部１１７は、全てのパーティションが連結されたか判断する（ステップＳ２９）。パーティショニング結果格納部１１５に格納されているパーティションのデータを用いて連結の有無を管理して、全ての隣接パーティションについて処理したか判断する。連結されていないパーティションが存在する場合には、ステップＳ２１に戻る。一方、全てのパーティションが連結された場合には元の処理に戻る。
【００７２】
図８の例では、パーティションｐ１１及びｐ１２を連結し、パーティションｐ２１及びｐ２２を連結し、さらにパーティションｐ１１及びｐ１２の連結区間とパーティションｐ２１及びｐ２２の連結区間とを連結する。最終的には、図２６に示したような実行順序データが完成する。ステップＳ２３によりジョブＪ６とジョブＪ８とが先行ジョブ及び後続ジョブとして特定され、ステップＳ２５によりジョブＪ８とジョブＪ１０とが先行ジョブ及び後続ジョブとして特定され、ステップＳ２７によりジョブＪ７とジョブＪ９とが先行ジョブ及び後続ジョブとして特定され、最後にステップＳ２７によりジョブＪ５とジョブＪ６とが先行ジョブ及び後続ジョブとして特定される。
【００７３】
最終的に、実行順序データ格納部１１８には、図２７及び図２８に示すようなデータが格納される。図２７に示すように、ノードテーブルには、無所属ジョブＪ３及びＪ８が追加登録されている。また、図２８に示すように、リンクテーブルには、リンクＬ５乃至Ｌ１１が追加登録されている。リンクＬ５乃至Ｌ７については、パーティションｐ１１及びｐ１２を連結する際に生成されるリンクであり、リンクＬ８乃至Ｌ１０については、パーティションｐ２１及びｐ２２を連結する際に生成されるリンクであり、リンクＬ１１は、パーティションｐ１１及びｐ１２の連結区間とパーティションｐ２１及びｐ２２の連結区間とを連結した際に生成されるリンクである。
【００７４】
以上の処理を行うことによって、全てのジョブについて実行順序が特定され、それを表すジョブの実行順序データが生成される。
【００７５】
図４の処理の説明に戻って、入出力部１１２は、実行順序データ格納部１１８に格納されている実行順序データを読み出し、運用管理者端末３００に出力する（ステップＳ１０）。運用管理者端末３００は、ジョブ分析装置１００から実行順序データを受信すると、図２６に示したような実行順序データの図を示すようにしてもよいし、図２７及び図２８に示したようなデータを示すようにしてもよい。
【００７６】
このようにすれば、分析開始時刻から分析終了時刻までのジョブの順序関係を把握することができるようになる。この際に用いたデータは、ジョブのログデータで、バッチジョブの実行順序を定義する情報やデータアクセス先などのデータを用いることはないので、運用管理者は容易にジョブの関係を把握することができる。なお、あくまでログデータからの推定であり、その前後に発生する事象とは異なる場合もある。
【００７７】
このような実行順序データは、以下のような用途が考えられる。すなわち、（１）一連のバッチジョブが正常に動作しているか確認する。（２）あるバッチジョブＡの実行に障害（例えば遅延等）が発生した場合には、その前に実行され且つバッチジョブＡに関連するバッチジョブを辿って根本原因を特定する。（３）あるバッチジョブＡに障害が発生した場合、その影響を受ける後続バッチジョブを特定し、それらのバッチジョブを実行するシステムの担当者に通知することにより、障害の被害（遅延の連鎖やデッドライン超過）の拡大を防ぐ。
【００７８】
第２の実施の形態では、処理量の削減により、多数のジョブが実行される監視対象システムについてもジョブの実行順序関係を把握できるようになる。なお、ジョブの数ｎに対して処理時間が指数的（例えばｍn）になるプロセスマイニング技術を採用する場合、パーティションがｄ個であれば処理時間をｄ＊ｍn/dまで削減できる。例えばｍ＝２、ｎ＝３２０、ｄ＝３２の場合、単純にプロセスマイニング技術を適用すればｍn＝２．１×１０96となるが、第２の実施の形態ではｄ＊ｍn/d＝３．３×１０4となる。
【００７９】
［実施の形態３］
第３の実施の形態に係るジョブ分析装置の機能ブロック図を図２９に示す。第３の実施の形態に係るジョブ分析装置は、ログデータ格納部３００１と、分類処理部３００３と、第１ジョブ解析処理部３００５と、第２ジョブ解析処理部３００７と、データ格納部３００９とを有する。分類処理部３００３は、ログデータ格納部３００１に格納されているログデータを用いて処理を行う。第１ジョブ解析処理部３００５は、分類処理部３００３の処理結果及びログデータ格納部３００１に格納されているログデータを用いて処理を行い、処理結果をデータ格納部３００９に格納する。第２ジョブ解析処理部３００７は、分類処理部３００３の処理結果及びログデータ格納部３００１に格納されているログデータを用いて処理を行い、処理結果をデータ格納部３００９に格納する。
【００８０】
次に、図２９に示したジョブ分析装置の処理内容を図３０を用いて説明する。まず、分類処理部３００３は、ログデータ格納部３００１に格納されているログデータに含まれる複数のジョブを、ジョブの終了時刻が複数の時間区間のうちいずれの時間区間に属するかに応じて分類する（ステップＳ３００１）。このような分類処理部３００３の処理結果は、第１及び第２ジョブ解析処理部３００５及び３００７に出力される。
【００８１】
次に、第１ジョブ解析処理部３００５は、複数の時間区間のうち第１の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第１のデータを生成し、また、複数の時間区間のうち、第１の時間区間に後続する第２の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第２のデータを生成して、データ格納部３００９に格納する（ステップＳ３００３）。
【００８２】
そして、第２ジョブ解析処理部３００７は、第１の時間区間に含まれるジョブの終了時刻と、第２の時間区間に含まれるジョブとの終了時刻とに基づいて、第１の時間区間に含まれるジョブと第２の時間区間に含まれるジョブとの間の実行順序関係を解析して、第１の時間区間から第２の時間区間に渡ったジョブの実行順序関係を示すデータを生成して、データ格納部３００９に格納する（ステップＳ３００５）。
【００８３】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、図３に示したジョブ分析装置の機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致するわけではない。さらに、処理フローについても処理結果が変わらない限り、ステップの順番を入れ替えたり、並列実行することも可能である。
【００８４】
また、図３ではクライアントサーバシステムの一例を示しているが、例えばスタンドアロン型のコンピュータで全機能を実施するようにしてもよい。さらに、ジョブ分析装置１００の機能を複数のコンピュータで分担するようにしてもよい。
【００８５】
なお、上で述べたジョブ分析装置は、コンピュータ装置によって実現することもできる。例えば、図３１に示すように、メモリ２５０１とプロセッサ（ＣＰＵ２５０３）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とを備え、これらがバス２５１９を介して接続されたコンピュータを用いてもよい。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５等の記憶部に格納しておき、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出して利用することもできる。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行ってもよい。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納してもよい。実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされてもよい。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。なお、図１のログデータ格納部１００１及びデータ格納部１００９は、図３１におけるメモリ２５０１やＨＤＤ２５０５等として実現してもよい。図２９のログデータ格納部３００１及びデータ格納部３００９についても同様である。図１のパーティショニング処理部１００３、第１ジョブ解析処理部１００５及び第２ジョブ解析処理部１００７は、プロセッサ２５０３及びプログラムの組み合わせ、すなわち、プロセッサ２５０３がプログラムを実行することにより実現してもよい。より具体的には、プロセッサ２５０３は、ＨＤＤ２５０５又はメモリ２５０１に記憶されたプログラムに従った動作を行うことで、上で述べたような処理部として機能してもよい。図２９の分類処理部３００３及び第１及び第２ジョブ解析処理部３００５及び３００７についても同様である。
【００８６】
以上述べた本実施の形態をまとめると、以下のようになる。
【００８７】
（Ａ）ログデータに含まれる複数のジョブを、ジョブの終了時刻が複数の時間区間（第１、第２、…）のうちいずれの時間区間に属するかに応じて分類する。（Ｂ）そして、第１の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第１のデータを生成し、また、第１の時間区間に後続する第２の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第２のデータを生成する。（Ｃ）そして、第１の時間区間に含まれるジョブの終了時刻と、第２の時間区間に含まれるジョブとの終了時刻とに基づいて、第１の時間区間に含まれるジョブと第２の時間区間に含まれるジョブとの間の実行順序関係を解析して、第１の時間区間から第２の時間区間に渡ったジョブの実行順序関係を示すデータを生成する（すなわち、統合処理を行う）。好ましくは、複数の時間区間について最初から最後の時間区間全てにわたって、ジョブの実行関係を示すデータを生成するように、第Ｎの時間区間と第Ｎ＋１（Ｎは１〜Ｍ−１（Ｍは分割数））の時間区間との間について統合処理を行う。
【００８８】
また、他の観点に係るジョブ解析方法は、（Ａ）ログデータ格納部に格納されている、複数のジョブのログデータから、各ジョブの実行時間のぶれ幅を表す第１の時刻及び第２の時刻を特定するステップと、（Ｂ）分析対象期間の開始時刻から分析対象期間の終了時刻までを複数のパーティションに分割しつつ、各ジョブの第１及び第２の時刻に基づき各パーティションに属するジョブを特定する分割ステップと、（Ｃ）各パーティションにおいて、当該パーティションに属するジョブの実行時間に基づきジョブの実行順序関係を解析して、パーティション内のジョブの実行順序関係を示す実行順序関係データを生成し、データ格納部に格納するステップと、（Ｄ）隣接するパーティションについての実行順序関係データ及び当該隣接するパーティション内の各ジョブの第１及び第２の時刻に基づき隣接するパーティションに属するジョブの実行順序関係を解析して、隣接するパーティション間に渡ったジョブの実行順序を示すデータを生成し、データ格納部に格納する連結ステップとを含む。
【００８９】
多数のジョブが実行される監視対象システムの外部から容易に取得可能なデータからリーズナブルな時間内に多数のジョブの実行順序を把握できるようになる。
【００９０】
また、上で述べた分割ステップが、第１の区間の開始時刻から終了時刻までに第１の時刻から第２の時刻までの時間帯が包含される第１ジョブの数と、第２の区間の開始時刻から終了時刻までに第１の時刻から第２の時刻までの時間帯が包含される第２ジョブの数との差が小さいほど出力値が大きくなり、且つ第１及び第２の区間を含む分割前の時間帯の開始時刻から終了時刻までに第１の時刻から第２の時刻までの時間帯が包含されるが第１及び第２の区間には属さないジョブの数が小さいほど出力値が大きくなる評価関数の評価値に従って、分割前の時間帯を第１及び第２の区間に分割するための時刻を決定する詳細分割ステップを含むようにしてもよい。このような評価関数を使用することによって、好ましいパーティショニングが可能となり、後の処理で整合性のとれた実行順序データを生成することができるようになる。
【００９１】
また、上で述べた詳細分割ステップを、所属するジョブの数が閾値未満になるまで、再帰的に実行するようにしてもよい。このようにすれば、各パーティションに属するジョブの数を閾値未満にできるので、パーティション内の実行順序データの生成のための処理時間を短縮することができる。
【００９２】
さらに、上で述べた連結ステップが、第１の時刻から第２の時刻までの時間帯が隣接パーティションに跨って存在する無所属ジョブが存在する場合、（ａ）隣接するパーティションのうち先のパーティションに属するジョブのうち、第１の時刻から第２の時刻までの時間帯と無所属ジョブについて特定された第１の時刻から第２の時刻までの時間帯とが重ならず且つ無所属ジョブについて特定された第１の時刻と最も近い第２の時刻が特定されたジョブを特定し、特定されたジョブを先行するジョブとして且つ無所属ジョブを後続のジョブとして特定するためのデータを生成するステップと、（ｂ）隣接するパーティションのうち後のパーティションに属するジョブのうち、第１の時刻から第２の時刻までの時間帯と無所属ジョブについて特定された第１の時刻から第２の時刻までの時間帯とが重ならず且つ無所属ジョブについて特定された第２の時刻と最も近い第１の時刻が特定されたジョブを特定し、特定されたジョブを後続のジョブとして且つ無所属ジョブを先行するジョブとして特定するためのデータを生成するステップと、（ｃ）隣接するパーティションのうち先のパーティションに属するジョブのうち第２の時刻が最も遅いジョブを先行するジョブとして特定し、隣接パーティションのうち後のパーティションに属するジョブのうち第１の時刻が最も早いジョブを後続のジョブとして特定し、先行するジョブと後続のジョブを特定するためのデータを生成するステップとを含むようにしてもよい。
【００９３】
このようにすれば、無所属ジョブが存在する場合においても、パーティション間に渡る実行順序が特定できるようになる。
【００９４】
さらに、無所属ジョブの数が最も多い隣接パーティションを優先して上記連結ステップを実施するようにしてもよい。これによって、より整合性の高い実行順序データが生成できるようになる。
【００９５】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【００９６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９７】
（付記１）
コンピュータに、
ログデータに含まれる複数のジョブを、ジョブの終了時刻が複数の時間区間のうちいずれの時間区間に属するかに応じて分類し、
前記複数の時間区間のうち第１の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第１のデータを生成し、また、前記複数の時間区間のうち、前記第１の時間区間に後続する第２の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第２のデータを生成し、
前記第１の時間区間に含まれるジョブの終了時刻と、前記第２の時間区間に含まれるジョブとの終了時刻とに基づいて、前記第１の時間区間に含まれるジョブと前記第２の時間区間に含まれるジョブとの間の実行順序関係を解析して、前記第１の時間区間から前記第２の時間区間に渡ったジョブの実行順序関係を示すデータを生成する、
処理を実行させるためのプログラム。（１）
【００９８】
（付記２）
ログデータに含まれる複数のジョブを、ジョブの終了時刻が複数の時間区間のうちいずれの時間区間に属するかに応じて分類するステップと、
前記複数の時間区間のうち第１の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第１のデータを生成し、また、前記複数の時間区間のうち、前記第１の時間区間に後続する第２の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第２のデータを生成するステップと、
前記第１の時間区間に含まれるジョブの終了時刻と、前記第２の時間区間に含まれるジョブとの終了時刻とに基づいて、前記第１の時間区間に含まれるジョブと前記第２の時間区間に含まれるジョブとの間の実行順序関係を解析して、前記第１の時間区間から前記第２の時間区間に渡ったジョブの実行順序関係を示すデータを生成するステップと、
を含み、コンピュータにより実行されるジョブ分析方法。（２）
【００９９】
（付記３）
ログデータに含まれる複数のジョブを、ジョブの終了時刻が複数の時間区間のうちいずれの時間区間に属するかに応じて分類する分類部処理部と、
前記複数の時間区間のうち第１の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第１のデータを生成し、また、前記複数の時間区間のうち、前記第１の時間区間に後続する第２の時間区間に含まれる複数のジョブについて、ジョブの終了時刻に基づいて、ジョブの実行順序関係を示す第２のデータを生成する第１実行順序関係解析部と、
前記第１の時間区間に含まれるジョブの終了時刻と、前記第２の時間区間に含まれるジョブとの終了時刻とに基づいて、前記第１の時間区間に含まれるジョブと前記第２の時間区間に含まれるジョブとの間の実行順序関係を解析して、前記第１の時間区間から前記第２の時間区間に渡ったジョブの実行順序関係を示すデータを生成する第２実行順序関係解析部と、
を有するジョブ分析装置。（３）
【０１００】
（付記４）
ログデータ格納部に格納されている、複数のジョブのログデータから、各前記ジョブの実行時間のぶれ幅を表す第１の時刻及び第２の時刻を特定するステップと、
分析対象期間の開始時刻から分析対象期間の終了時刻までを複数のパーティションに分割しつつ、各前記ジョブの第１及び第２の時刻に基づき各前記パーティションに属するジョブを特定する分割ステップと、
各前記パーティションにおいて、当該パーティションに属する前記ジョブの実行時間に基づきジョブの実行順序関係を解析して、前記パーティション内のジョブの実行順序関係を示す実行順序関係データを生成し、データ格納部に格納するステップと、
隣接するパーティションについての実行順序関係データ及び当該隣接するパーティション内の各ジョブの第１及び第２の時刻に基づき前記隣接するパーティションに属するジョブの実行順序関係を解析して、前記隣接するパーティション間に渡ったジョブの実行順序を示すデータを生成し、前記データ格納部に格納する連結ステップと、
を、コンピュータに実行させるためのジョブ分析プログラム。（４，図２，４，６）
【０１０１】
（付記５）
前記分割ステップが、
第１の区間の開始時刻から終了時刻までに前記第１の時刻から前記第２の時刻までの時間帯が包含される第１ジョブの数と、第２の区間の開始時刻から終了時刻までに前記第１の時刻から前記第２の時刻までの時間帯が包含される第２ジョブの数との差が小さいほど出力値が大きくなり、且つ前記第１及び第２の区間を含む分割前の時間帯の開始時刻から終了時刻までに前記第１の時刻から前記第２の時刻までの時間帯が包含されるが前記第１及び第２の区間には属さないジョブの数が小さいほど出力値が大きくなる評価関数の評価値に従って、前記分割前の時間帯を前記第１及び第２の区間に分割するための時刻を決定する詳細分割ステップ
を含む付記４記載のジョブ分析プログラム。（５）
【０１０２】
（付記６）
前記詳細分割ステップを、所属するジョブの数が閾値未満になるまで、再帰的に実行する
付記５記載のジョブ分析プログラム。（６，図６）
【０１０３】
（付記７）
前記連結ステップが、
前記第１の時刻から前記第２の時刻までの時間帯が前記隣接パーティションに跨って存在する無所属ジョブが存在する場合、
前記隣接するパーティションのうち先のパーティションに属するジョブのうち、前記第１の時刻から前記第２の時刻までの時間帯と前記無所属ジョブについて特定された前記第１の時刻から前記第２の時刻までの時間帯とが重ならず且つ前記無所属ジョブについて特定された前記第１の時刻と最も近い前記第２の時刻が特定されたジョブを特定し、特定されたジョブを先行するジョブとして且つ前記無所属ジョブを後続のジョブとして特定するためのデータを生成するステップと、
前記隣接するパーティションのうち後のパーティションに属するジョブのうち、前記第１の時刻から前記第２の時刻までの時間帯と前記無所属ジョブについて特定された前記第１の時刻から前記第２の時刻までの時間帯とが重ならず且つ前記無所属ジョブについて特定された前記第２の時刻と最も近い前記第１の時刻が特定されたジョブを特定し、特定されたジョブを後続のジョブとして且つ前記無所属ジョブを先行するジョブとして特定するためのデータを生成するステップと、
前記隣接するパーティションのうち先のパーティションに属するジョブのうち前記第２の時刻が最も遅いジョブを先行するジョブとして特定し、前記隣接パーティションのうち後のパーティションに属するジョブのうち前記第１の時刻が最も早いジョブを後続のジョブとして特定し、先行するジョブと後続のジョブを特定するためのデータを生成するステップと、
を含む付記４乃至６のいずれか１つ記載のジョブ分析プログラム。（７，図２３）
【０１０４】
（付記８）
前記無所属ジョブの数が最も多い前記隣接パーティションを優先して前記連結ステップを実施する
付記７記載のジョブ分析プログラム。（８）
【０１０５】
（付記９）
ログデータ格納部に格納されている、複数のジョブのログデータから、各前記ジョブの実行時間のぶれ幅を表す第１の時刻及び第２の時刻を特定するステップと、
分析対象期間の開始時刻から分析対象期間の終了時刻までを複数のパーティションに分割しつつ、各前記ジョブの第１及び第２の時刻に基づき各前記パーティションに属するジョブを特定する分割ステップと、
各前記パーティションにおいて、当該パーティションに属する前記ジョブの実行時間に基づきジョブの実行順序関係を解析して、前記パーティション内のジョブの実行順序関係を示す実行順序関係データを生成し、データ格納部に格納するステップと、
隣接するパーティションについての実行順序関係データ及び当該隣接するパーティション内の各ジョブの第１及び第２の時刻に基づき前記隣接するパーティションに属するジョブの実行順序関係を解析して前記隣接するパーティション間に渡ったジョブの実行順序を示すデータを生成し、前記データ格納部に格納する連結ステップと、
を含み、コンピュータに実行されるジョブ分析方法。（９）
【０１０６】
（付記１０）
複数のジョブのログデータを格納するログデータ格納部と、
前記ログデータ格納部に格納されている、複数のジョブのログデータから、各前記ジョブの実行時間のぶれ幅を表す第１の時刻及び第２の時刻を特定し、分析対象期間の開始時刻から分析対象期間の終了時刻までを複数のパーティションに分割しつつ、各前記ジョブの第１及び第２の時刻に基づき各前記パーティションに属するジョブを特定するパーティショニング処理部と、
データ格納部と、
各前記パーティションにおいて、当該パーティションに属する前記ジョブの実行時間に基づきジョブの実行順序関係を解析して、前記パーティション内のジョブの実行順序関係を示す実行順序関係データを生成し、前記データ格納部に格納する第１ジョブ解析処理部と、
隣接するパーティションについての実行順序関係データ及び当該隣接するパーティション内の各ジョブの第１及び第２の時刻に基づき前記隣接するパーティションに属するジョブの実行順序関係を解析して、前記隣接するパーティション間に渡ったジョブの実行順序を示すデータを生成し、前記データ格納部に格納する第２ジョブ解析処理部と、
を有するジョブ分析装置。（１０，図１，３）
【符号の説明】
【０１０７】
１１０  ログ取得部    １１１  ログデータ格納部
１１２  入出力部    １１３  設定データ格納部
１１４  パーティショニング処理部    １１５  パーティショニング結果格納部
１１６  第１ジョブ解析処理部    １１７  第２ジョブ解析処理部
１１８  実行順序データ格納部
【図１】
0005471400.tif 000004
【図２】
0005471400.tif 000005
【図３】
0005471400.tif 000006
【図４】
0005471400.tif 000007
【図５】
0005471400.tif 000008
【図６】
0005471400.tif 000009
【図７】
0005471400.tif 000010
【図８】
0005471400.tif 000011
【図９】
0005471400.tif 000012
【図１０】
0005471400.tif 000013
【図１１】
0005471400.tif 000014
【図１２】
0005471400.tif 000015
【図１３】
0005471400.tif 000016
【図１４】
0005471400.tif 000017
【図１５】
0005471400.tif 000018
【図１６】
0005471400.tif 000019
【図１７】
0005471400.tif 000020
【図１８】
0005471400.tif 000021
【図１９】
0005471400.tif 000022
【図２０】
0005471400.tif 000023
【図２１】
0005471400.tif 000024
【図２２】
0005471400.tif 000025
【図２３】
0005471400.tif 000026
【図２４】
0005471400.tif 000027
【図２５】
0005471400.tif 000028
【図２６】
0005471400.tif 000029
【図２７】
0005471400.tif 000030
【図２８】
0005471400.tif 000031
【図２９】
0005471400.tif 000032
【図３０】
0005471400.tif 000033
【図３１】
0005471400.tif 000034