(57)【要約】【課題】各バッチジョブが依存する計算機リソースに対応する排他制御を的確に行う。【解決手段】ジョブ振分装置１は、実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出部１０と、算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定部１１と、特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分部１２とを備える。【選択図】図１
2011123817.tif 000002
【特許請求の範囲】
【請求項１】
実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出部と、
前記相関関係算出部によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定部と、
前記リソース特定部によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分部と
を有することを特徴とするジョブ振分装置。
【請求項２】
前記相関関係算出部は、前記プログラムにおいて計算機リソースに依存した処理に要した実行時間として、互いに異なる計算機リソースに依存した処理毎に要した実行時間を用いることを特徴とする請求項１に記載のジョブ振分装置。
【請求項３】
前記相関関係算出部は、前記実行要求ジョブが所定回数動作した後に、所定回数分の前記プログラム及び前記実行要求ジョブに関わる実行時間を用いて、前記相関関係を算出することを特徴とする請求項１又は請求項２に記載のジョブ振分装置。
【請求項４】
前記ジョブ振分部は、
前記実行要求ジョブを実行させる実行サーバの選択順位を、各実行サーバが実行しているジョブの多重度に基づいて決定する選択順位決定部と、
前記選択順位決定部によって決定された選択順位に応じて選択された実行サーバのうち、前記実行要求ジョブが依存する計算機リソースと同一の計算機リソースに依存するジョブが実行されていない実行サーバを探索するサーバ探索部と、
前記サーバ探索部によって前記実行要求ジョブが依存する計算機リソースと同一の計算機リソースに依存するジョブが実行されていない実行サーバが探索された場合には、当該実行サーバの選択順位までの全ての実行サーバの待ち行列に前記実行要求ジョブを投入するジョブ投入部と、
前記ジョブ投入部によって前記実行要求ジョブが投入された実行サーバのうち、前記実行要求ジョブが最初に実行可能となった実行サーバ以外の実行サーバから前記実行要求ジョブを削除するジョブ削除部と
を有することを特徴とする請求項１から請求項３のいずれか１つに記載のジョブ振分装置。
【請求項５】
前記相関関係算出部は、前記実行要求ジョブの起動時に動作するプログラムとして、前記実行要求ジョブを起動するプログラムを用いることを特徴とする請求項１から請求項４のいずれか１つに記載のジョブ振分装置。
【請求項６】
実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出手順と、
前記相関関係算出手順によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定手順と、
前記リソース特定手順によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分手順と
をコンピュータに実行させることを特徴とするジョブ振分プログラム。
【請求項７】
実行サーバにジョブを振り分けるジョブ振分装置のジョブ振分方法であって、
実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出工程と、
前記相関関係算出工程によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定工程と、
前記リソース特定工程によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分工程と
を含むことを特徴とするジョブ振分方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法に関する。
【背景技術】
【０００２】
従来から、バッチジョブを実行する計算機システムでは、例えばＣＰＵ（Central Processing Unit）リソースなどの同一の計算機リソースに依存する複数のバッチジョブを実行しようとする場合、これらバッチジョブの同時実行を排除する排他制御が行われている。かかる排他制御が行われないと、複数のバッチジョブが同一の計算機リソースを同時に使用しようとするので、当該計算機リソースの割り当て待ちが発生する。その結果、バッチジョブの実行遅延が発生してしまう。さらに、そのバッチジョブの実行遅延によってタイムアウトが発生してしまうことから、バッチジョブが異常終了してしまうといった事態も考えられる。
【０００３】
そこで、このような事態を回避するために、バッチジョブ毎に依存する計算機リソースを識別する任意の文字列を設定し、同一の文字列が設定されたバッチジョブ同士の同時実行を抑止する排他制御技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５４−１１８７４４号公報
【特許文献２】特開２００６−４００８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、バッチジョブ毎に文字列が設定されなければ、各バッチジョブが依存する計算機リソースを識別できない。このため、各バッチジョブが依存する計算機リソースを特定できない場合には、バッチジョブ毎に文字列を設定できず、各バッチジョブが依存する計算機リソースに対応する排他制御を的確に行うことができないという問題があった。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、各バッチジョブが依存する計算機リソースに対応する排他制御を的確に行うことができるジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願の開示するジョブ振分装置は、一つの態様において、実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出部と、前記相関関係算出部によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定部と、前記リソース特定部によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分部とを備える。
【発明の効果】
【０００８】
本願の開示するジョブ振分装置の一つの態様によれば、当該実行要求ジョブが依存する計算機リソースに対応する排他制御を的確に行うことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１に係るジョブ振分装置の構成を示す機能ブロック図である。
【図２】図２は、実施例２に係るジョブ振分装置の構成を示す機能ブロック図である。
【図３】図３は、実行時間管理テーブルのデータ構造の一例を示す図である。
【図４】図４は、実行時間とデータ量との関係を説明する図である。
【図５】図５は、実行時間情報蓄積テーブルのデータ構造の一例を示す図である。
【図６】図６は、制御プログラム及びジョブの実行時間の関係を示す説明図である。
【図７】図７は、相関関係管理テーブルのデータ構造の一例を示す図である。
【図８】図８は、排他制御管理テーブルのデータ構造の一例を示す図である。
【図９】図９は、ジョブ特性特定処理に関するジョブ振分装置の処理動作を示すフローチャートである。
【図１０】図１０は、ジョブ振分処理に関するジョブ振分装置の処理動作を示すフローチャートである。
【図１１】図１１は、排他制御管理テーブルのデータ構造の別の例を示す図である。
【図１２】図１２は、ジョブ振分プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示するジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法の実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。
【実施例１】
【００１１】
図１は、本実施例１に係るジョブ振分装置の構成を示す機能ブロック図である。図１に示すように、ジョブ振分装置１は、相関関係算出部１０、リソース特定部１１及びジョブ振分部１２を有する。
【００１２】
相関関係算出部１０は、実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間を算出する。ここで、ジョブとは、纏まった量のデータを処理するプログラムのことをいい、例えばバッチジョブがある。計算機リソースとは、例えば、ＣＰＵリソース、Ｉ／Ｏ（Input／Output）リソース、メモリリソースやネットワークリソースなどがある。また、相関関係算出部１０は、実行要求ジョブの起動時に動作するプログラムの動作完了直後に動作する実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間を算出する。
【００１３】
さらに、相関関係算出部１０は、プログラムにおいて計算機リソースに依存した処理に要した実行時間と、実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する。
【００１４】
リソース特定部１１は、相関関係算出部１０によって算出された相関関係に基づいて、実行要求ジョブが依存する計算機リソースを特定する。ジョブ振分部１２は、リソース特定部１１によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに実行要求ジョブを振り分ける。
【００１５】
このようにして、ジョブ振分装置１は、実行要求ジョブの起動時に連動して動作した、計算機リソースに依存した処理及び実行要求ジョブに関するそれぞれの実行時間を算出するので、動作環境を同一とした双方の実行時間の相関関係を算出できる。すなわち、ジョブ振分装置１は、仮に実行要求ジョブの所定データ量当たりの処理に要した実行時間の変動に応じて、計算機リソースに依存した処理に要した実行時間が変動をしていれば、双方の実行時間の相関が強いという相関関係を算出できる。その結果、ジョブ振分装置１は、算出した相関関係に基づいて、実行要求ジョブが計算機リソースに依存しているか否かを容易に識別できる。その識別結果に基づいて、ジョブ振分装置１は、実行要求ジョブと同一の計算機リソースに依存するジョブと、実行要求ジョブとの同時実行を排除すべく、実行要求ジョブを実行サーバに振り分けるので、同一の計算機リソースに依存するジョブ間の排他制御を的確に行うことができる。
【実施例２】
【００１６】
［実施例２に係るジョブ振分装置の構成］
図２は、本実施例２に係るジョブ振分装置２の構成を示す機能ブロック図である。ジョブ振分装置２は、制御部２０及び記憶部３０を有する。
【００１７】
また、ジョブ振分装置２は、ネットワークを介してジョブ実行サーバ（以降、「実行サーバ」という。）Ｓ（Ｓ１〜Ｓｎ）（ｎ＞１）と接続する。実行サーバＳは、ジョブ振分装置２からバッチジョブの起動要求がされると、ジョブ実行制御プログラム（以降、「制御プログラム」という。）ｐを実行後、バッチジョブを起動する。
【００１８】
ここで、制御プログラムｐとは、バッチジョブの起動時に動作し、バッチジョブを起動するプログラムであり、ＣＰＵリソースに依存した処理、Ｉ／Ｏリソースに依存した処理及びメモリリソースに依存した処理を各処理毎に纏めて作りこまれたプログラムである。例えば、制御プログラムｐは、バッチジョブの起動時に、起動するバッチジョブの属性を管理するファイルを作成するＩ／Ｏ処理や、当該バッチジョブの処理順序を判断するＣＰＵ処理などを行う。
【００１９】
また、制御部２０は、実行が要求されたバッチジョブの特性を特定するジョブ特性特定部２１と、特性が特定されたバッチジョブを実行サーバＳに振り分けるジョブ振分部２２とを有する。なお、バッチジョブの特性とは、バッチジョブが依存している計算機リソースを指す。すなわち、ジョブ特性特定部２１は、実行が要求されたバッチジョブが依存している計算機リソースを特定する。また、計算機リソースには、例えば、ＣＰＵリソース、Ｉ／Ｏ（Input／Output）リソース、メモリリソースやネットワークリソースなどが含まれるが、本実施例では、ＣＰＵリソース、Ｉ／Ｏリソース及びメモリリソースを例として説明する。
【００２０】
また、ジョブ特性特定部２１は、リソース依存処理実行時間算出部２１ａと、ジョブ実行時間算出部２１ｂと、相関関係算出部２１ｃと、リソース特定部２１ｄとを有する。ジョブ振分部２２は、サーバ選択順位決定部２２ａと、排他制御対象ジョブ確認部２２ｂと、ジョブ投入部２２ｃと、ジョブ実行監視部２２ｄと、ジョブ削除部２２ｅとを有する。なお、制御部２０は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの集積回路又はＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）などの電子回路である。
【００２１】
記憶部３０は、実行時間履歴テーブル３１と、実行時間管理テーブル３２と、実行時間情報蓄積テーブル３３と、相関関係管理テーブル３４と、排他制御管理テーブル３５と、複数のバッチジョブを示すジョブｊ（ｊ１〜ｊｍ）（ｍ＞１）とを有する。なお、記憶部３０は、例えば、ＲＡＭ（Random Access Memory）、フラッシュメモリ（flash memory）などの半導体メモリ素子、又は、ハードディスク、光ディスクなどの記憶装置である。
【００２２】
リソース依存処理実行時間算出部２１ａは、実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間を算出する。具体的には、リソース依存処理実行時間算出部２１ａは、実行要求ジョブの起動時に動作する制御プログラムｐにおいて互いに異なる計算機リソースに依存した処理毎に要した実行時間を算出する。例えば、リソース依存処理実行時間算出部２１ａは、実行要求ジョブの起動時に動作した制御プログラムｐにおいてＣＰＵリソースに依存した処理の実行時間、Ｉ／Ｏリソースに依存した処理の実行時間及びメモリリソースに依存した処理の実行時間を算出する。
【００２３】
より具体的には、リソース依存処理実行時間算出部２１ａは、制御プログラムｐが作成する実行時間履歴テーブル３１を用いて、実行要求ジョブの起動時に動作する制御プログラムｐにおいて互いに異なる計算機リソースに依存した処理毎の実行時間を算出する。この実行時間履歴テーブル３１は、制御プログラムｐ及び実行要求ジョブによって処理時間情報を記憶する。以下、実行時間履歴テーブル３１を用いた実行時間の算出について説明する。
【００２４】
制御プログラムｐでは、実行要求ジョブの起動時に、システム時刻取得関数（例えば、timeGetSystemTimeやtimeGetTime）を用いて、各リソースに依存した処理の開始時刻及び終了時刻を取得する。また、制御プログラムｐでは、各リソースに依存した処理の開始時刻、終了時刻、実行要求ジョブ名及び実行要求ジョブの実行回数を実行サーバＳの実行時間履歴テーブル３１に格納する。
【００２５】
さらに、実行要求ジョブでは、システム時刻取得関数（例えば、timeGetSystemTimeやtimeGetTime）を用いて、実行される処理の開始時刻及び終了時刻を取得する。また、実行要求ジョブでは、実行される処理の開始時刻、終了時刻、実行要求ジョブ名、実行回数及び処理データのデータ量を実行サーバＳの実行時間履歴テーブル３１に格納する。なお、実行要求ジョブは、処理データのデータ量を、ファイルサイズ取得関数（例えば、GetFileSize）を用いて取得する。なお、実行サーバＳは、実行時間履歴テーブル３１に記憶された処理時間情報を、定期的に又は不定期的に、ジョブ振分装置２に転送する。
【００２６】
この実行時間履歴テーブル３１を用いて、リソース依存処理実行時間算出部２１ａは、リソースに依存した処理毎の終了時刻から開始時刻を引いた差値を各リソースに依存した処理の実行時間として算出する。また、リソース依存処理実行時間算出部２１ａは、算出した各リソースに依存した処理の実行時間を、実行要求ジョブ名及び実行回数とともに、後述する実行時間情報蓄積テーブル３３に格納する。
【００２７】
図２に戻って、ジョブ実行時間算出部２１ｂは、制御プログラムｐの動作完了直後に動作する実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間を算出する。なお、所定データ量単位とは、１ギガバイト（ＧＢ）や２ＧＢなどであるが、本実施例では、１ＧＢを例として説明する。
【００２８】
具体的には、ジョブ実行時間算出部２１ｂは、実行時間履歴テーブル３１を用いて、実行要求ジョブの処理に要した総実行時間を算出する。より具体的には、ジョブ実行時間算出部２１ｂは、実行時間履歴テーブル３１を用いて、実行要求ジョブが実行する処理の終了時刻から開始時刻を引いた差値を実行要求ジョブの「総実行時間」として算出する。
【００２９】
また、ジョブ実行時間算出部２１ｂは、算出した「総実行時間」、処理データの「データ量」及び後述する実行時間管理テーブル３２を用いて、所定データ量当たりの実行要求ジョブの実行時間を算出する。ここで、処理データの「データ量」とは、実行要求ジョブによって処理されたデータの量を示し、上述した実行時間履歴テーブル３１に記憶される。
【００３０】
ここで、実行時間管理テーブル３２について図３を参照しながら説明する。図３は、実行時間管理テーブルのデータ構造の一例を示す図である。図３に示すように、実行時間管理テーブル３２は、複数のジョブ毎に、バッチジョブのジョブ名３２ａ、「実行時間とデータ量との関係」３２ｂ及び「所定データ量当たりの実行時間の実測値」３２ｃを対応付けて記憶する。なお、実行時間管理テーブル３２は、ジョブ特性特定部２１によるジョブ特性特定処理前にあらかじめ作成される。
【００３１】
「実行時間とデータ量との関係」３２ｂとは、バッチジョブが処理した際の実行時間と、バッチジョブが処理した際のデータのデータ量との関係を示す計算式を指す。例えば、ジョブ名３２ａ「Ｊ００１」の「実行時間とデータ量との関係」３２ｂは、「ｔ＝２ｄ×Ｔ」の計算式で表される。「ｄ」は、バッチジョブが処理したデータ量（単位：ＧＢ）（以降、「処理データ量」という。）を示す。「Ｔ」は、バッチジョブが所定データ量（１ＧＢ）を処理した際の実行時間（単位：秒）（以降、「単位処理時間」という。）を示す。「ｔ」は、バッチジョブがデータ量「ｄ」を処理した際の実行時間（単位：秒）（以降、「処理実行時間」という。）を示す。すなわち、ジョブ名３２ａ「Ｊ００１」の処理実行時間「ｔ」は、処理データ量「ｄ」と単位処理時間「Ｔ」とから「２ｄ×Ｔ」式によって求められる。また、「所定データ量当たりの実行時間の実測値」３２ｃとは、バッチジョブが所定データ量を処理した際の実行時間の実測値であり、単位処理時間「Ｔ」を示す。
【００３２】
ここで、実行時間管理テーブル３２に含まれる「実行時間とデータ量との関係」３２ｂを示す関係式について、図４を参照しながら説明する。図４は、実行時間とデータ量との関係を説明する図である。図４に示すように、「実行時間とデータ量との関係」３２ｂを示す関係式は、ジョブ名３２ａにて示されるバッチジョブがデータ量３２ｄにて示されるデータ量のデータを処理した際の実行時間３２ｔによって求められる。
【００３３】
まず、ジョブ特性特定部２１によるジョブ特性特定処理前に、図示しない事前処理部が、所定の実行サーバＳで、処理されるデータ量３２ｄを複数回にわたって変えながらバッチジョブを実行し、データ量３２ｄに応じた実行時間３２ｔをログに格納する。なお、実行時間管理テーブル３２の「実行時間とデータ量との関係」３２ｂは、ジョブ実行時間算出部２１ｂ以降で相関関係を算出する際に用いられる重要な情報である。そのため、「実行時間とデータ量との関係」３２ｂを導出する情報を取得する実行サーバＳは、計算機リソースの圧迫のない状態、すなわち実行中又は実行待ちのジョブが全くない状態で処理されることが望ましい。
【００３４】
また、事前処理部は、処理されるデータのデータ量３２ｄに対する実行時間３２ｔの平均値を算出する。そして、事前処理部は、データ量３２ｄが１ＧＢ当たりの実行時間の平均値を単位処理時間「Ｔ」として算出する。さらに、事前処理部は、データ量３２ｄに対する実行時間３２ｔ及び単位処理時間「Ｔ」から「実行時間とデータ量との関係」３２ｂを示す関係式を求める。
【００３５】
例えば、ジョブ名３２「Ｊ００１」のバッチジョブでは、データ量３２ｄ「１」ＧＢを処理する実行時間３２ｔの平均値は「３」であり、「３」が単位処理時間「Ｔ」となる。また、ジョブ名３２「Ｊ００１」のバッチジョブでは、データ量３２ｄ「２」ＧＢを処理する実行時間３２ｔの平均値が「１２」である。したがって、データ量３２ｄ「２」ＧＢを処理する実行時間３２ｔの平均値「１２」及び単位処理時間「Ｔ」（Ｔ＝３）からデータ量「ｄ」に対応する実行時間「ｔ」は、「ｔ＝２ｄ×Ｔ」３２ｂ１と求められる。この式が、ジョブ名３２ａ「Ｊ００１」のバッチジョブの「実行時間とデータ量との関係」３２ｂを示す関係式となる。同様に、ジョブ名３２ａ「Ｊ００２」のバッチジョブの「実行時間とデータ量との関係」３２ｂを示す関係式は、「ｔ＝ｄ×Ｔ」３２ｂ２と求められる。
【００３６】
この「実行時間とデータ量との関係」３２ｂを用いて、ジョブ実行時間算出部２１ｂは、所定データ量当たりの処理に要した実行時間を算出する。すなわち、ジョブ実行時間算出部２１ｂは、実行要求ジョブに対する「実行時間とデータ量との関係」３２ｂを示す計算式を実行時間管理テーブル３２から抽出する。そして、ジョブ実行時間算出部２１ｂは、抽出した計算式に実行要求ジョブの「総実行時間」及び処理データの「データ量」を代入することで所定データ量当たりの処理に要した実行時間を算出する。
【００３７】
例えば、実行要求ジョブの「実行時間とデータ量との関係」３２ｂを示す計算式が「ｔ＝２ｄ×Ｔ」である場合について説明する。計算式「ｔ＝２ｄ×Ｔ」から単位処理時間「Ｔ」は、「Ｔ＝ｔ／２ｄ」で表される。ジョブ実行時間算出部２１ｂは、「Ｔ＝ｔ／２ｄ」の処理実行時間「ｔ」に実行要求ジョブの「総実行時間」を代入し、処理データ量「ｄ」に処理データの「データ量」を代入して、単位処理時間「Ｔ」を算出する。
【００３８】
また、ジョブ実行時間算出部２１ｂは、算出した単位処理時間「Ｔ」を、実行要求ジョブ名と実行要求ジョブが何回目に実行されたものかがわかる実行回数とともに、実行時間情報蓄積テーブル３３に格納する。
【００３９】
ここで、実行時間情報蓄積テーブル３３について図５を参照しながら説明する。図５は、実行時間情報蓄積テーブル３３のデータ構造の一例を示す図である。図５に示すように、実行時間情報蓄積テーブル３３は、複数のジョブ毎に、ジョブ名３３ａと、実行回数３３ｂと、「所定データ量当たりのジョブの実行時間」３３ｃと、リソースＡ、リソースＢ及びリソースＣに依存した処理の実行時間３３ｄ〜ｆとを対応付けて記憶する。なお、例えば、リソースＡとはＣＰＵリソースであり、リソースＢとはＩ／Ｏリソースであり、リソースＣとはメモリリソースである。
【００４０】
ジョブ名３３ａは、バッチジョブの名称であり、実行要求ジョブ名が記憶される。実行回数３３ｂは、ジョブ名３３ａが示すバッチジョブが実行された回数であり、１から連続した番号となる。「所定データ量当たりのジョブの実行時間」３３ｃは、バッチジョブが所定データ量（１ＧＢ）を処理した際の処理時間であり、ジョブ実行時間算出部２１ｂにて算出された単位処理時間「Ｔ」である。
【００４１】
「リソースＡに依存した処理の実行時間」３３ｄは、バッチジョブの起動時に動作する制御プログラムｐにおいてリソースＡに依存した処理に要した処理時間であり、リソース依存処理実行時間算出部２１ａにて算出された実行時間である。「リソースＢに依存した処理の実行時間」３３ｅは、バッチジョブの起動時に動作する制御プログラムｐにおいてリソースＢに依存した処理に要した処理時間であり、リソース依存処理実行時間算出部２１ａにて算出された実行時間である。「リソースＣに依存した処理の実行時間」３３ｆは、バッチジョブの起動時に動作する制御プログラムｐにおいてリソースＣに依存した処理に要した処理時間であり、リソース依存処理実行時間算出部２１ａにて算出された実行時間である。
【００４２】
例えば、符号ｒ１では、ジョブ名３３ａ「Ｊ００１」の２回目の実行時において、所定データ量当たりの実行時間として算出された「３．２」秒が記憶され、リソースＡに依存した処理の実行時間として算出された「０．０１２」秒が記憶される。また、リソースＢに依存した処理の実行時間として算出された「０．０８２」秒が記憶され、リソースＣに依存した処理の実行時間として算出された「０．０２２」秒が記憶される。
【００４３】
ここで、制御プログラムｐの計算機リソースに依存した処理に要した実行時間と、バッチジョブの実行時間とについて、図６を参照しながら説明する。図６は、制御プログラムｐ及びジョブの実行時間の関係を示す説明図である。図６に示すように、例えば実行サーバＳに対して、実行が要求された実行要求ジョブの起動要求がされると、実行サーバＳでは、制御プログラムｐが動作する。そして、実行サーバＳでは、制御プログラムｐのリソースＡに依存した処理が実行時間「ｔ１」で行われ、続いて、リソースＢに依存した処理及びリソースＣに依存した処理がそれぞれ実行時間「ｔ２」、「ｔ３」で行われる。その後、実行サーバＳでは、制御プログラムｐによって起動された実行要求ジョブが実行を開始して、実行時間「ｔ４」で実行を終了する。
【００４４】
かかる実行時間「ｔ１」、「ｔ２」及び「ｔ３」が、実行時間情報蓄積テーブル３３の「リソースＡに依存した処理の実行時間」３３ｄ、「リソースＢに依存した処理の実行時間」３３ｅ及び「リソースＣに依存した処理の実行時間」３３ｆにそれぞれ格納される。また、実行時間「ｔ４」に基づいて、実行時間管理テーブル３２の「実行時間とデータ量との関係」３２ｂを用いて求められた値が、実行時間情報蓄積テーブル３３の「所定データ量当たりのジョブの実行時間」３３ｃに格納される。
【００４５】
図２に戻って、相関関係算出部２１ｃは、実行要求ジョブの起動時に動作する制御プログラムｐにおいて計算機リソースに依存した処理に要した実行時間と、当該実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する。なお、計算機リソースに依存した処理に要した実行時間を「リソース実行時間」といい、所定データ量当たりの処理に要した実行時間を「単位処理時間」というものとする。
【００４６】
具体的には、相関関係算出部２１ｃは、実行時間情報蓄積テーブル３３に実行要求ジョブに関する情報が所定実行回数分記憶されている場合には、制御プログラムｐの「リソース実行時間」について所定実行回数分の平均及び標準偏差を算出する。また、相関関係算出部２１ｃは、実行要求ジョブの「単位処理時間」について所定実行回数分の平均及び標準偏差を算出する。また、相関関係算出部２１ｃは、「リソース実行時間」の平均及び「単位処理時間」の平均を用いて、所定実行回数毎の「リソース実行時間」と「単位処理時間」との偏差積を算出し、算出した所定実行回数毎の偏差積から偏差積の平均を算出する。また、相関関係算出部２１ｃは、算出した偏差積の平均を「リソース実行時間」の標準偏差と「単位処理時間」の標準偏差との積で割った値を相関係数として算出する。なお、所定実行回数とは、例えば１００回であるが、これに限定されるものではない。
【００４７】
例えば、相関関係算出部２１ｃは、制御プログラムｐのＣＰＵリソースに依存した処理、Ｉ／Ｏリソースに依存した処理及びメモリリソースに依存した処理の各「リソース実行時間」に関して、実行要求ジョブの「単位処理時間」との相関係数を算出する。
【００４８】
リソース特定部２１ｄは、相関関係算出部２１ｃによって算出された相関関係に基づいて、実行要求ジョブが依存する計算機リソースを特定する。具体的には、リソース特定部２１ｄは、実行要求ジョブと制御プログラムｐの計算機リソースに依存した処理との相関係数から相関の強弱を判定し、判定した相関の強弱に基づいて、計算機リソースに依存した処理との関係で実行要求ジョブを分類する。そして、リソース特定部２１ｄは、分類した実行要求ジョブと分類結果（識別記号）とを相関関係管理テーブル３４に格納する。
【００４９】
例えば、相関係数が±０．７〜±１．０の場合に、強い相関があるものとして識別記号を「Ｓ」（Ｓｔｒｏｎｇ）とする。相関係数が±０．４〜±０．７の場合に、中程度の相関があるものとして識別記号を「Ｍ」（Ｍｅｄｉｕｍ）とする。相関係数が±０．２〜±０．４の場合に、弱い相関があるものとして識別記号を「Ｗ」（Ｗｅａｋ）とする。相関係数が±０．０〜±０．２の場合に、ほとんど相関がないものとして識別記号を「Ｎ」（Ｎｏｎｅ）とする。リソース特定部２１ｄは、制御プログラムｐのＣＰＵリソースと実行要求ジョブとの相関係数が仮に「＋０．８」であると、相関係数から相関の強弱を「Ｓ」と判定し、実行要求ジョブをＣＰＵリソースとの関係で「Ｓ」に分類する。
【００５０】
また、リソース特定部２１ｄは、分類結果（識別記号）に基づいて、実行要求ジョブが依存する計算機リソースを特定する。例えば、リソース特定部２１ｄは、実行要求ジョブに対して識別記号が「Ｓ」又は「Ｍ」であるリソースを、実行要求ジョブが依存する計算機リソースとして特定する。
【００５１】
ここで、相関関係管理テーブル３４について図７を参照しながら説明する。図７は、相関関係管理テーブル３４のデータ構造の一例を示す図である。図７に示すように、相関関係管理テーブル３４は、複数のジョブ毎に、バッチジョブのジョブ名３４ａ、リソースＡとの相関３４ｂ、リソースＢとの相関３４ｃ及びリソースＣとの相関３４ｄを対応付けて記憶する。なお、例えば、リソースＡとはＣＰＵリソースであり、リソースＢとはＩ／Ｏリソースであり、リソースＣとはメモリリソースである。
【００５２】
「リソースＡとの相関」３４ｂは、ジョブ名３４ａによって示されるバッチジョブのリソースＡとの相関の強弱を示し、上述した相関係数に基づいた識別記号によって表される。「リソースＢとの相関」３４ｃは、ジョブ名３４ａによって示されるバッチジョブのリソースＢとの相関の強弱を示し、「リソースＡとの相関」３４ｂと同様に相関係数に基づいた識別記号によって表される。「リソースＣとの相関」３４ｄは、ジョブ名３４ａによって示されるバッチジョブのリソースＣとの相関の強弱を示し、「リソースＡとの相関」３４ｂと同様に相関係数に基づいた識別記号によって表される。
【００５３】
例えば、ジョブ名３４ａ「Ｊ００１」のバッチジョブは、リソースＡとの相関３４ｂが「Ｓ」であるのでリソースＡと強い相関がある。一方、ジョブ名３４ａ「Ｊ００１」のバッチジョブは、リソースＢ及びリソースＣとの相関３４ｃ、３４ｄがそれぞれ「Ｎ」であるのでこれらとはほとんど相関がない。その結果、ジョブ名３４ａ「Ｊ００１」が依存する計算機リソースは、リソースＡとなる。
【００５４】
また、リソース特定部２１ｄは、依存する計算機リソースが特定された実行要求ジョブを、排他制御の対象となるジョブとして決定する。具体的には、リソース特定部２１ｄは、相関関係管理テーブル３４に基づいて、実行要求ジョブと相関がある計算機リソースがあると判断される場合には、実行要求ジョブを排他制御の対象となるジョブとして決定する。例えば、実行要求ジョブと相関がある計算機リソースとは、相関関係管理テーブル３４に記憶された実行要求ジョブに対する識別記号が「Ｓ」又は「Ｍ」である計算機リソースとする。
【００５５】
また、リソース特定部２１ｄは、排他制御の対象となる実行要求ジョブを、依存する計算機リソースと対応付けて排他制御管理テーブル３５に格納し、実行要求ジョブの起動要求をジョブ振分部２２に出力する。ここで、排他制御管理テーブル３５について図８を参照しながら説明する。図８は、排他制御管理テーブル３５のデータ構造の一例を示す図である。図８に示すように、排他制御管理テーブル３５は、複数のジョブ毎に、バッチジョブのジョブ名３５ａ、リソースＡへの依存３５ｂ、リソースＢへの依存３５ｃ及びリソースＣへの依存３５ｄを対応付けて記憶する。
【００５６】
「リソースＡへの依存」３５ｂは、ジョブ名３５ａによって示されるバッチジョブのリソースＡへの依存を示し、依存がある場合には「○」によって表される。すなわち、リソースＡへの依存３５ｂが「○」である場合には、ジョブ名３５ａによって示されるバッチジョブは、リソースＡと同一の計算機リソースに依存するジョブと排他制御される対象となる。例えば、ジョブ名３５ａ「Ｊ００１」のバッチジョブは、リソースＡへの依存があるので、リソースＡと同一の計算機リソースに依存するジョブ「Ｊ６５９」と排他制御される。
【００５７】
「リソースＢへの依存」３５ｃは、ジョブ名３５ａによって示されるバッチジョブのリソースＢへの依存を示し、依存がある場合には「○」によって表される。「リソースＣへの依存」３５ｄは、ジョブ名３５ａによって示されるバッチジョブのリソースＣへの依存を示し、依存がある場合には「○」によって表される。
【００５８】
図２に戻って、サーバ選択順位決定部２２ａは、実行要求ジョブを実行させる実行サーバＳの選択順位を、実行サーバＳの多重度に基づいて決定する。なお、実行サーバＳの多重度とは、実行サーバＳにて実行中のジョブ数を実行可能な最大ジョブ数で割った割合を指す。具体的には、サーバ選択順位決定部２２ａは、自装置と接続された実行サーバＳのうち多重度の低い実行サーバＳから昇順に、実行サーバＳの選択順位を決定する。つまり、実行サーバＳの多重度が低いほど、実行サーバＳの選択順位は上位となる。
【００５９】
排他制御対象ジョブ確認部２２ｂは、選択順位に応じて選択される実行サーバＳのうち、実行要求ジョブが依存する計算機リソースと同一の計算機リソースに依存するジョブが実行されていない実行サーバＳを探索する。
【００６０】
具体的には、排他制御対象ジョブ確認部２２ｂは、サーバ選択順位決定部２２ａによって決定された選択順位が上位の実行サーバＳから順次実行サーバＳを選択する。また、排他制御対象ジョブ確認部２２ｂは、排他制御管理テーブル３５から実行要求ジョブが依存する計算機リソースを抽出する。そして、排他制御対象ジョブ確認部２２ｂは、選択した実行サーバＳで、抽出した計算機リソースと同じ計算機リソースに依存するバッチジョブであって実行中又は実行待ちであるバッチジョブが存在するか否かを判定する。
【００６１】
そして、排他制御対象ジョブ確認部２２ｂは、実行要求ジョブと同じ計算機リソースに依存するバッチジョブであって実行中又は実行待ちであるバッチジョブが存在する場合には、次の選択順位の実行サーバＳを選択する。一方、排他制御対象ジョブ確認部２２ｂは、実行要求ジョブと同じ計算機リソースに依存するバッチジョブであって実行中又は実行待ちであるバッチジョブが存在しない場合には、実行サーバＳの探索を終了する。
【００６２】
ジョブ投入部２２ｃは、実行要求ジョブが依存する計算機リソースと同一の計算機リソースに依存するジョブが実行されていない実行サーバＳが探索された場合には、探索された全ての実行サーバＳの待ち行列に実行要求ジョブを投入する。そして、ジョブ投入部２２ｃは、実行要求ジョブが投入された全ての実行サーバＳの実行要求ジョブを実行保留状態にする。
【００６３】
例えば、選択順位が最上位から数えて第３位に該当する実行サーバＳで、実行要求ジョブと同じ計算機リソースに依存するバッチジョブが実行されていないものとする。この場合には、ジョブ投入部２２ｃは、選択順位の最上位である第１位から第３位までの実行サーバＳに、実行要求ジョブを投入する。
【００６４】
ジョブ実行監視部２２ｄは、実行要求ジョブが投入された全実行サーバＳを監視し、これら全実行サーバＳのうち当該実行要求ジョブと同一の計算機リソース依存のバッチジョブが完全に不存在となった最初の実行サーバＳを検知する。そして、ジョブ実行監視部２２ｄは、検知された実行サーバＳの実行要求ジョブを実行保留状態から実行可能状態（実行待ち）に状態を遷移させる。
【００６５】
ジョブ削除部２２ｅは、ジョブ実行監視部２２ｄによって実行要求ジョブが最初に実行可能状態（実行待ち）となった実行サーバＳ以外の実行サーバＳから実行要求ジョブを削除する。その結果、その後、実行要求ジョブは、最初に実行可能状態（実行待ち）となった実行サーバＳの制御プログラムｐによって起動され、実行可能状態（実行待ち）から実行中に状態を遷移する。
【００６６】
例えば、ジョブ投入部２２ｃが、選択順位の上位から第３位までの実行サーバＳに実行要求ジョブを投入したとする。この場合には、上位の実行サーバＳで実行要求ジョブと同一の計算機リソース依存のジョブが実行されていても、選択順位が第３位の実行サーバＳが最初に実行可能状態になると、第３位の実行サーバＳで実行要求ジョブが実行される。一方、上位の実行サーバＳで実行要求ジョブと同一の計算機リソース依存のジョブが実行されていても、実行されていたジョブが早期に終了し最初に実行可能状態になれば第１位又は第２位の上位の実行サーバＳで実行要求ジョブが実行される。
【００６７】
［実施例２に係るジョブ特性特定処理の処理手順］
次に、実施例２に係るジョブ特性特定処理の処理手順を、図９を参照して説明する。図９は、ジョブ特性特定処理に関するジョブ振分装置の処理動作を示すフローチャートである。なお、実行時間履歴テーブル３１は、バッチジョブ（実行要求ジョブ）の起動時に動作する制御プログラムｐ及び実行要求ジョブによってあらかじめ作成されているものとする。
【００６８】
まず、リソース依存処理実行時間算出部２１ａは、バッチジョブの実行要求がされたか否かを判定する（ステップＳ１１）。そして、リソース依存処理実行時間算出部２１ａは、バッチジョブの実行要求がされていない場合には（ステップＳ１１Ｎｏ）、バッチジョブの実行要求を待ち合わせる。
【００６９】
一方、リソース依存処理実行時間算出部２１ａは、バッチジョブの実行要求がされた場合には（ステップＳ１１Ｙｅｓ）、バッチジョブ（実行要求ジョブ）の起動時に動作する制御プログラムｐにおいて計算機リソースに依存した処理に要した実行時間を算出する（ステップＳ１２）。具体的には、リソース依存処理実行算出部２１ａは、実行時間履歴テーブル３１を用いて、制御プログラムｐにおいて互いに異なる計算機リソースに依存した処理毎の実行時間を算出する。例えば、リソース依存処理実行時間算出部２１ａは、制御プログラムｐのＣＰＵリソースに依存した処理、Ｉ／Ｏリソースに依存した処理及びメモリリソースに依存した処理の各実行時間を算出する。
【００７０】
そして、リソース依存処理実行算出部２１ａは、算出した各計算機リソースに依存した処理の実行時間を、実行要求ジョブ名及び実行回数とともに、実行時間情報蓄積テーブル３３に格納する（ステップＳ１３）。
【００７１】
また、ジョブ実行時間算出部２１ｂは、制御プログラムｐの動作完了直後に動作する実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間（単位処理時間）を算出する（ステップＳ１４）。具体的には、ジョブ実行時間算出部２１ｂは、実行時間履歴テーブル３１を用いて実行要求ジョブの処理に要した総実行時間を算出する。そして、ジョブ実行時間算出部２１ｂは、算出した実行要求ジョブの処理に要した総実行時間、処理データのデータ量及び実行時間管理テーブル３２を用いて、所定データ量当たりの実行時間（単位処理時間）を算出する。
【００７２】
そして、ジョブ実行時間算出部２１ｂは、算出した所定データ量当たりの実行時間（単位処理時間）を、実行要求ジョブ名及び実行回数とともに、実行時間情報蓄積テーブル３３に格納する（ステップＳ１５）。
【００７３】
続いて、相関関係算出部２１ｃは、実行要求ジョブに関する情報が実行時間情報蓄積テーブル３３に所定実行回数分記憶されているか否かを判定する（ステップＳ１６）。なお、所定実行回数とは、例えば１００回であるが、これに限定されるものではない。
【００７４】
そして、相関関係算出部２１ｃは、実行要求ジョブに関する情報が所定実行回数分記憶されていない場合には（ステップＳ１６Ｎｏ）、実行要求ジョブが依存する計算機リソースを特定するには情報量が不足していると判断して、ステップＳ２１に遷移する。
【００７５】
一方、相関関係算出部２１ｃは、実行要求ジョブに関する情報が所定実行回数分記憶されている場合には（ステップＳ１６Ｙｅｓ）、以下の処理を行う。相関関係算出部２１ｃは、制御プログラムｐにおいて計算機リソースに依存した処理に要した実行時間と実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間（単位処理時間）との相関係数を算出する（ステップＳ１７）。例えば、相関関係算出部２１ｃは、制御プログラムｐのＣＰＵリソースに依存した処理、Ｉ／Ｏリソースに依存した処理及びメモリリソースに依存した処理の各リソース実行時間に関して、実行要求ジョブの「単位処理時間」との相関係数を算出する。
【００７６】
そして、リソース特定部２１ｄは、相関関係算出部２１ｃによって算出された相関係数から相関の強弱を判定し、判定した相関の強弱に基づいて、計算機リソースに依存した処理との関係で実行要求ジョブを分類する（ステップＳ１８）。
【００７７】
そして、リソース特定部２１ｄは、分類結果（識別記号）に基づいて、実行要求ジョブが依存する計算機リソースを特定する（ステップＳ１９）。
【００７８】
さらに、リソース特定部２１ｄは、依存する計算機リソースが特定された実行要求ジョブを、排他制御の対象となるジョブとして決定し、決定した実行要求ジョブを依存する計算機リソースと対応付けて排他制御管理テーブル３５に格納する（ステップＳ２０）。
【００７９】
そして、リソース特定部２１ｄは、実行要求ジョブの起動要求をジョブ振分部２２に出力する（ステップＳ２１）。
【００８０】
なお、上述したジョブ特性特定処理では、リソース依存処理実行時間算出部２１ａにて行われる実行時間の算出処理（ステップＳ１２〜Ｓ１３）の後に、ジョブ実行時間算出部２１ｂにて行われる実行時間の算出処理（ステップＳ１４〜Ｓ１５）を行った。しかし、リソース依存処理実行時間算出部２１ａにて行われる実行時間の算出処理及びジョブ実行時間算出部２１ｂにて行われる実行時間の算出処理の順序を逆にしても良いし、並列して行なうようにしても良い。
【００８１】
［実施例２に係るジョブ振分処理の処理手順］
次に、実施例２に係るジョブ振分処理の処理手順を、図１０を参照して説明する。図１０は、ジョブ振分処理に関するジョブ振分装置の処理動作を示すフローチャートである。
【００８２】
まず、サーバ選択順位決定部２２ａは、バッチジョブの起動要求がされたか否かを判定する（ステップＳ３１）。そして、サーバ選択順位決定部２２ａは、バッチジョブの起動要求がされていない場合には（ステップＳ３１Ｎｏ）、バッチジョブの起動要求を待ち合わせる。
【００８３】
一方、サーバ選択順位決定部２２ａは、バッチジョブの起動要求がされた場合には（ステップＳ３１Ｙｅｓ）、自装置と接続された実行サーバＳのうち多重度の低い実行サーバＳから昇順に、実行サーバＳの選択順位を決定する（ステップＳ３２）。つまり、実行サーバＳの多重度が低いほど、実行サーバＳの選択順位は上位となる。
【００８４】
そして、排他制御対象ジョブ確認部２２ｂは、選択順位が最上位である第１位の実行サーバＳを選択する（ステップＳ３３）。また、排他制御対象ジョブ確認部２２ｂは、排他制御管理テーブル３５から実行要求ジョブが依存する計算機リソースを抽出する。
【００８５】
そして、排他制御対象ジョブ確認部２２ｂは、選択した実行サーバＳで、抽出した計算機リソースと同じ計算機リソースに依存するバッチジョブであって実行中又は実行待ちであるバッチジョブが存在するか否かを判定する（ステップＳ３４）。
【００８６】
そして、排他制御対象ジョブ確認部２２ｂは、抽出した計算機リソースと同じ計算機リソースに依存するバッチジョブであって実行中又は実行待ちであるバッチジョブが存在する場合には（ステップＳ３４Ｙｅｓ）、現順位が最下位を示す最大順位であるか否かを判定する（ステップＳ３５）。そして、排他制御対象ジョブ確認部２２ｂは、現順位が最下位を示す最大順位でない場合には（ステップＳ３５Ｎｏ）、次の順位の実行サーバＳを選択して（ステップＳ３６）、ステップＳ３４に遷移する。
【００８７】
一方、排他制御対象ジョブ確認部２２ｂは、実行要求ジョブが依存する計算機リソースと同じ計算機リソースに依存するバッチジョブであって実行中又は実行待ちであるバッチジョブが存在しない場合には（ステップＳ３４Ｎｏ）には、以下の処理を行う。ジョブ投入部２２ｃは、選択順位が第１位から現順位までの全ての実行サーバＳの待ち行列に実行要求ジョブを投入し（ステップＳ３７）、実行要求ジョブを実行保留状態にする（ステップＳ３８）。また、排他制御対象ジョブ確認部２２ｂは、現順位が最下位を示す最大順位である場合（ステップＳ３５Ｙｅｓ）にも、選択順位が第１位から最大順位までの全ての実行サーバＳに対して、同様の処理を行う。
【００８８】
続いて、ジョブ実行監視部２２ｄは、実行要求ジョブが投入された全実行サーバＳを監視し、これら全実行サーバＳのうち当該実行要求ジョブと同一の計算機リソース依存のバッチジョブが完全に不存在となった最初の実行サーバＳを検知する（ステップＳ３９）。そして、ジョブ実行監視部２２ｄは、実行要求ジョブが投入された全実行サーバＳのうち当該実行要求ジョブと同一の計算機リソース依存のバッチジョブが完全に不存在となった最初の実行サーバＳが無い場合には（ステップＳ３９Ｎｏ）、待ち合わせる。
【００８９】
一方、ジョブ実行監視部２２ｄは、実行要求ジョブが投入された全実行サーバＳのうち当該実行要求ジョブと同一の計算機リソース依存のバッチジョブが完全に不存在となった最初の実行サーバＳが有る場合には（ステップＳ３９Ｙｅｓ）、以下の処理を行う。ジョブ実行監視部２２ｄは、実行要求ジョブと同一の計算機リソース依存のバッチジョブが最初に完全に不存在となった実行サーバＳの実行要求ジョブを実行保留状態から実行可能状態に状態を遷移させる（ステップＳ４０）。
【００９０】
そして、ジョブ削除部２２ｅは、ジョブ実行監視部２２ｄによって実行要求ジョブが最初に実行可能状態（実行待ち）となった実行サーバＳ以外の実行サーバＳから実行要求ジョブを削除する（ステップＳ４１）。
【００９１】
その後、実行要求ジョブは、最初に実行可能状態（実行待ち）となった実行サーバＳの制御プログラムｐによって起動され、実行可能状態（実行待ち）から実行中に状態を遷移する（ステップＳ４２）。
【００９２】
［実施例２の効果］
上記実施例２によれば、ジョブ振分装置２は、実行が要求された実行要求ジョブの起動時に動作する制御プログラムｐにおいて計算機リソースに依存した処理に要した実行時間と、制御プログラムｐの動作完了直後に動作する実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間を算出する。また、ジョブ振分装置２は、算出した計算機リソースに依存した処理に要した実行時間と、算出した実行要求ジョブの所定処理に要した実行時間との相関関係を算出する。そして、ジョブ振分装置２は、算出した相関関係に基づいて、実行要求ジョブが依存する計算機リソースを特定する。さらに、ジョブ振分装置２は、特定した計算機リソースと同一の計算機リソースに依存するジョブと、実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバＳに実行要求ジョブを振り分ける。かかる構成によれば、ジョブ振分装置２は、実行要求ジョブの起動時に連動して動作した、計算機リソースに依存した処理及び実行要求ジョブに関するそれぞれの実行時間を算出するので、動作環境を同一とした双方の実行時間の相関関係を算出できる。すなわち、ジョブ振分装置２は、仮に、実行要求ジョブの所定データ量当たりの処理に要した実行時間の変動に応じて、計算機リソースに依存した処理に要した実行時間が変動をしていれば、双方の実行時間の相関が強いという相関関係を算出できる。その結果、ジョブ振分装置２は、算出した相関関係に基づいて、実行要求ジョブが計算機リソースに依存しているか否かを容易に識別できる。
【００９３】
その識別結果に基づいて、ジョブ振分装置２は、実行要求ジョブと同一の計算機リソースに依存するジョブと、実行要求ジョブとの同時実行を排除すべく、実行要求ジョブを実行サーバＳに振り分ける。これにより、ジョブ振分装置２は、同一の計算機リソースに依存するジョブ間の排他制御を的確に行うことができる。さらに、ジョブ振分装置２は、同一の計算機リソースが競合することによる実行要求ジョブの実行遅延を回避できる。
【００９４】
また、実施例２によれば、相関関係算出部２１ｃは、制御プログラムｐにおいて計算機リソースに依存した処理に要した実行時間として、互いに異なる計算機リソースに依存した処理毎に要した実行時間を用いることとした。これにより、相関関係算出部２１ｃは、実行要求ジョブと複数の計算機リソースとの関係で相関関係を算出することになるので、実行要求ジョブがどの計算機リソースに依存するのかを正確に識別できる。
【００９５】
また、実施例２によれば、相関関係算出部２１ｃは、実行要求ジョブが所定回数動作した後に、所定回数分の制御プログラムｐ及び実行要求ジョブに関わる実行時間を用いて、相関関係を算出するものとした。これにより、相関関係算出部２１ｃは、実行要求ジョブの所定回数の動作に応じた実行時間に基づいて相関関係を算出できるので、所定回数が多くなれば信頼性の高い相関関係を算出できる。
【００９６】
また、実施例２によれば、相関関係算出部２１ｃが、ＣＰＵ、Ｉ／Ｏ及びメモリを計算機リソースとする。これにより、相関関係算出部２１ｃは、実行要求ジョブを実行する実行サーバＳのハードウェア資源から実行要求ジョブがどの計算機リソースに依存するのかを総合的に評価できる。
【００９７】
また、実施例２によれば、サーバ選択順位決定部２２ａが、実行要求ジョブを実行させる実行サーバＳの選択順位を、実行サーバＳが実行しているジョブの多重度に基づいて決定する。そして、排他制御対象ジョブ確認部２２ｂが、決定された選択順位に応じて選択された実行サーバＳのうち、実行要求ジョブが依存する計算機リソースと同一の計算機リソースに依存するジョブが実行されていない実行サーバＳを探索する。そして、ジョブ投入部２２ｃが、実行要求ジョブと同一の計算機リソースに依存するジョブが実行されていない実行サーバＳが探索された場合には、当該実行サーバＳの選択順位までの全ての実行サーバＳの待ち行列に実行要求ジョブを投入する。そして、ジョブ削除部２２ｅが、ジョブ投入部２２ｃによって実行要求ジョブが投入された実行サーバＳのうち、実行要求ジョブが最初に実行可能となった実行サーバＳ以外の実行サーバＳから実行要求ジョブを削除する。これにより、仮に実行要求ジョブと同一の計算機リソースに依存するジョブが、多重度の小さい上位の実行サーバＳで長期間実行されていても、多重度の大きい下位の実行サーバＳで先行して終了すれば、先行して終了した実行サーバＳで実行要求ジョブを確実に実行できる。
【００９８】
また、実施例２によれば、実行要求ジョブの起動時に動作した制御プログラムｐは、実行要求ジョブを起動するプログラムである。これにより、制御プログラムｐは、実行要求ジョブを起動するプログラムであり、実行要求ジョブを実行させる必要不可欠なプログラムであるので、実行サーバＳの全体的な利用効率を下げないで、実行要求ジョブの実行タイミングを自己のプログラムとほぼ同時期にできる。その結果、実行要求ジョブは、実行要求ジョブと制御プログラムｐとの相関関係を正確に求めることができる。
【００９９】
［排他制御管理テーブルの別の例］
ここで、排他制御管理テーブル３５の別の例について図１１を参照しながら説明する。図１１は、排他制御管理テーブル３５のデータ構造の別の例を示す図である。なお、図８に示す排他制御管理テーブル３５と同一の構成については同一符号を付すことで、その重複する構成の説明については省略する。
【０１００】
図１１に示す排他制御管理テーブル３５が図８の排他制御管理テーブル３５と異なるところは、符号ｒ２に示すように、リソース（計算機リソース）への依存３５ｂ〜ｄ毎に異なる排他用文字列が記憶されている点にある。この排他用文字列は、同一計算機リソースに依存するバッチジョブ同士を同じくした文字列であり、例えば乱数発生関数で発生させた値である。これにより、同一排他用文字列を持つバッチジョブ同士が同一計算機リソースに依存していることが識別できるので、これらバッチジョブ同士の同時実行を抑止できる。
【０１０１】
例えば、ジョブ名３５ａ「Ｊ００１」及び「Ｊ６５９」は、共に計算機リソースＡに依存し、計算機リソースＡに依存することを識別する排他用文字列「＃０２９３４８４８８３」を共通に持っている。ジョブ振分部２２が、ジョブ名３５ａ「Ｊ００１」及び「Ｊ６５９」の特定文（例えば、「ｒｅｓｏｕｒｃｅ文」）に同じ排他用文字列「＃０２９３４８４８８３」を設定するようにすれば、従来の排他制御技術によって、これらのバッチジョブの同時実行は抑止される。このため、ジョブ振分部２２は、排他制御管理テーブル３５を用いて、同一の計算機リソースに依存するバッチジョブ間の排他制御を的確に行うことができる。
【０１０２】
［その他］
なお、上記実施例２では、ジョブ特性特定部２１は、バッチジョブの実行要求のタイミングで、バッチジョブが依存する計算機リソースを特定するものとして説明した。しかし、これに限定されず、ジョブ特性特定部２１は、例えば定期的又は不定期的に行われる各バッチジョブの特性を特定する旨の特性特定要求のタイミングで、各バッチジョブが依存する計算機リソースを特定するものとしても良い。
【０１０３】
また、上記実施例２では、ジョブ振分部２２は、ジョブ特性特定部２１のリソース特定部２１ｄから出力された実行要求ジョブの起動要求を取得するタイミングで動作するものとした。しかし、これに限定されず、ジョブ振分部２２は、ジョブ特性特定部２１と連動しないで、独立して動作することも可能である。すなわち、例えば、ジョブ振分部２２は、バッチジョブの実行要求のタイミングで動作し、ジョブ特性特定部２１と切り離して、動作するものとしても良い。この場合、ジョブ特定特定部２１は、例えば前述したように、バッチジョブの特性を特定する旨の特性特定要求のタイミングで単独で動作するようにし、ジョブ振分部２２の実行以前にあらかじめ動作するようにすれば良い。
【０１０４】
また、上記実施例２では、相関関係算出部２１ｃは、実行時間情報蓄積テーブル３３に実行要求ジョブに関する情報が所定実行回数分記憶されている場合には、制御プログラムｐと実行要求ジョブとの相関係数を算出するものとして説明した。この場合、相関関係算出部２１ｃでは、初回は所定実行回数分の情報が記憶されたときこれらの情報を用いて算出するが、次回はさらに所定実行回数分の情報が記憶されたとき前回分と合わせた情報を用いて算出しても良い。これにより、相関関係算出部２１ｃは、所定実行回数分の情報より多い情報を用いて相関係数を算出するので、算出された相関係数の信頼度を向上させることができる。
【０１０５】
また、上記実施例２では、リソース依存処理実行時間算出部２１ａは、実行が要求された実行要求ジョブの起動時に動作する制御プログラムｐにおいて、計算機リソースに依存した処理に要した実行時間を算出するものとして説明した。しかし、これに限定されず、リソース依存処理実行時間算出部２１ａは、実行が要求された実行要求ジョブの起動直前に動作する、計算機リソースに依存する処理の実行時間を測定する所定のプログラムにおいて、当該処理の実行時間を算出するものとしても良い。
【０１０６】
また、このジョブ振分装置１、２は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記したジョブ特性特定部２１、ジョブ振分部２２及び記憶部３０の各機能を搭載することによって実現することができる。
【０１０７】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、リソース依存処理実行時間算出部２１ａとジョブ実行時間算出部２１ｂとを１つの部として統合しても良く、一方、相関関係算出部２１ｃを、ＣＰＵリソースに依存した処理と実行要求ジョブとの相関関係を算出するＣＰＵリソース相関関係算出部と、Ｉ／Ｏリソースに依存した処理と実行要求ジョブとの相関関係を算出するＩ／Ｏリソース相関関係算出部などとに分散しても良い。また、記憶部３０をジョブ振分装置２の外部装置としてネットワーク経由で接続するようにしても良い。また、ジョブ特性特定部２１、ジョブ振分部２２を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上述したジョブ振分装置２の機能を実現するようにしても良い。
【０１０８】
［プログラム］
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１２を用いて、図２に示したジョブ振分装置２と同様の機能を有するジョブ振分プログラムを実行するコンピュータの一例を説明する。
【０１０９】
図１２は、ジョブ振分プログラムを実行するコンピュータを示す図である。図１２に示すように、コンピュータ１０００は、ＲＡＭ（Random  Access  Memory）１０１０と、キャッシュ１０２０と、ＨＤＤ１０３０と、ＲＯＭ（Read  Only  Memory）１０４０と、ＣＰＵ（Central  Processing  Unit）１０５０、バス１０６０とを有する。ＲＡＭ１０１０、キャッシュ１０２０、ＨＤＤ１０３０、ＲＯＭ１０４０、ＣＰＵ１０５０は、バス１０６０によって接続されている。
【０１１０】
ＲＯＭ１０４０には、図２に示したジョブ振分装置２と同様の機能を発揮するジョブ振分プログラムが予め記憶されている。具体的には、ＲＯＭ１０４０には、ジョブ特性特定プログラム１０４１と、ジョブ振分プログラム１０４２とが記憶されている。
【０１１１】
そして、ＣＰＵ１０５０は、これらのジョブ特性特定プログラム１０４１と、ジョブ振分プログラム１０４２とを読み出して実行する。これにより、図１２に示すように、ジョブ特性特定プログラム１０４１は、ジョブ特性特定プロセス１０５１になり、ジョブ振分プログラム１０４２は、ジョブ振分プロセス１０５２になる。なお、ジョブ特性特定プロセス１０５１は、図２に示したジョブ特性特定部２１に対応し、ジョブ振分プロセス１０５２は、図２に示したジョブ振分部２２に対応する。
【０１１２】
また、ＨＤＤ１０３０には、図１２に示すように振分制御関連情報１０３１が設けられる。振分制御関連情報１０３１は、例えば、図２に示した記憶部３０に記憶される各種データ（実行時間履歴テーブル３１、実行時間管理テーブル３２、実行時間情報蓄積テーブル３３、相関関係管理テーブル３４、排他制御管理テーブル３５及びジョブｊ１〜ｊｍ）に対応する。
【０１１３】
なお、上述した各プログラム１０４１〜１０４２については、必ずしもＲＯＭ１０４０に記憶させなくても良い。例えば、コンピュータ１０００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラム１０４１〜１０４２を記憶させても良い。又は、コンピュータ１０００の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」にプログラム１０４１〜１０４２を記憶させても良い。又は、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１０００に接続される「他のコンピュータ（又はサーバ）」にプログラム１０４１〜１０４２を記憶させても良い。そして、コンピュータ１０００は、上述したフレキシブルディスクなどから各プログラムを読み出して実行するようにしても良い。
【０１１４】
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
【０１１５】
（付記１）実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出部と、
前記相関関係算出部によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定部と、
前記リソース特定部によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分部と
を有することを特徴とするジョブ振分装置。
【０１１６】
（付記２）前記相関関係算出部は、前記プログラムにおいて計算機リソースに依存した処理に要した実行時間として、互いに異なる計算機リソースに依存した処理毎に要した実行時間を用いることを特徴とする付記１に記載のジョブ振分装置。
【０１１７】
（付記３）前記相関関係算出部は、前記実行要求ジョブが所定回数動作した後に、所定回数分の前記プログラム及び前記実行要求ジョブに関わる実行時間を用いて、前記相関関係を算出することを特徴とする付記１又は付記２に記載のジョブ振分装置。
【０１１８】
（付記４）前記相関関係算出部は、ＣＰＵ（Central Processing Unit）、Ｉ／Ｏ（Input／Output）及びメモリを前記計算機リソースとすることを特徴とする付記１から付記３のいずれか１つに記載のジョブ振分装置。
【０１１９】
（付記５）前記ジョブ振分部は、
前記実行要求ジョブを実行させる実行サーバの選択順位を、各実行サーバが実行しているジョブの多重度に基づいて決定する選択順位決定部と、
前記選択順位決定部によって決定された選択順位に応じて選択された実行サーバのうち、前記実行要求ジョブが依存する計算機リソースと同一の計算機リソースに依存するジョブが実行されていない実行サーバを探索するサーバ探索部と、
前記サーバ探索部によって前記実行要求ジョブが依存する計算機リソースと同一の計算機リソースに依存するジョブが実行されていない実行サーバが探索された場合には、当該実行サーバの選択順位までの全ての実行サーバの待ち行列に前記実行要求ジョブを投入するジョブ投入部と、
前記ジョブ投入部によって前記実行要求ジョブが投入された実行サーバのうち、前記実行要求ジョブが最初に実行可能となった実行サーバ以外の実行サーバから前記実行要求ジョブを削除するジョブ削除部と
を有することを特徴とする付記１から付記４のいずれか１つに記載のジョブ振分装置。
【０１２０】
（付記６）前記相関関係算出部は、前記実行要求ジョブの起動時に動作するプログラムとして、前記実行要求ジョブを起動するプログラムを用いることを特徴とする付記１から付記５のいずれか１つに記載のジョブ振分装置。
【０１２１】
（付記７）実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出部と、
前記相関関係算出部によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定部と
を有することを特徴とする計算機リソース特定装置。
【０１２２】
（付記８）実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出手順と、
前記相関関係算出手順によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定手順と、
前記リソース特定手順によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分手順と
をコンピュータに実行させることを特徴とするジョブ振分プログラム。
【０１２３】
（付記９）実行サーバにジョブを振り分けるジョブ振分装置のジョブ振分方法であって、
実行が要求された実行要求ジョブの起動時に動作するプログラムにおいて計算機リソースに依存した処理に要した実行時間と、前記プログラムの動作完了直後に動作する前記実行要求ジョブにおいて所定データ量当たりの処理に要した実行時間との相関関係を算出する相関関係算出工程と、
前記相関関係算出工程によって算出された相関関係に基づいて、前記実行要求ジョブが依存する計算機リソースを特定するリソース特定工程と、
前記リソース特定工程によって特定された計算機リソースと同一の計算機リソースに依存するジョブと、前記実行要求ジョブとの同時実行を排除すべく、自装置と接続されたいずれかの実行サーバに前記実行要求ジョブを振り分けるジョブ振分工程と
を含むことを特徴とするジョブ振分方法。
【符号の説明】
【０１２４】
１、２  ジョブ振分装置
１０  相関関係算出部
１１  リソース特定部
１２  ジョブ振分部
２０  制御部
２１  ジョブ特性特定部
２１ａ  リソース依存処理実行時間算出部
２１ｂ  ジョブ実行時間算出部
２１ｃ  相関関係算出部
２１ｄ  リソース特定部
２２  ジョブ振分部
２２ａ  サーバ選択順位決定部
２２ｂ  排他制御対象ジョブ確認部
２２ｃ  ジョブ投入部
２２ｄ  ジョブ実行監視部
２２ｅ  ジョブ削除部
３０  記憶部
３１  実行時間履歴テーブル
３２  実行時間管理テーブル
３３  実行時間情報蓄積テーブル
３４  相関関係管理テーブル
３５  排他制御管理テーブル
ｊ１、ｊｍ  ジョブ
Ｓ１、Ｓｎ  ジョブ実行サーバ
ｐ  制御プログラム
【図１】
2011123817.tif 000003
【図２】
2011123817.tif 000004
【図３】
2011123817.tif 000005
【図４】
2011123817.tif 000006
【図５】
2011123817.tif 000007
【図６】
2011123817.tif 000008
【図７】
2011123817.tif 000009
【図８】
2011123817.tif 000010
【図９】
2011123817.tif 000011
【図１０】
2011123817.tif 000012
【図１１】
2011123817.tif 000013
【図１２】
2011123817.tif 000014