(57)【特許請求の範囲】
【請求項１】
複数のジョブを実行する複数の実行サーバと、前記実行サーバに接続されるスケジューラサーバとを備える計算機システムであって、
前記実行サーバは、前記ジョブによって処理される複数のデータを保持し、
前記スケジューラサーバは、
連続して実行される前記複数のジョブによって処理される複数のデータを各々含む複数の第１の組を取得し、
一つの前記実行サーバに保持されるデータと、他の前記実行サーバに保持されるデータとを含む第２の組を、前記複数の第１の組から抽出し、
前記抽出された第２の組に含まれるデータを、新たに追加された前記実行サーバに移動するデータに決定し、
前記計算機システムは、前記第２の組に含まれるデータを移動する前の第１の状態をとることが可能であり、
前記スケジューラサーバは、
前記第１の状態において、前記各データが前記ジョブによって処理される第１の頻度と、前記連続して実行される複数のジョブが前記第２の組に含まれる複数のデータを処理する第２の頻度とを算出し、
前記第２の頻度と、所定の閾値とにおいて、第１の比較を行い、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が大きいと判定された場合、前記抽出された第２の組に含まれるデータを、前記新たに追加された実行サーバに移動するデータに決定し、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が小さいと判定された場合、前記第１の頻度を合計することによって、前記各実行サーバの負荷量を算出し、前記算出された複数の負荷量に従って抽出された前記データを、前記新たに追加された実行サーバに移動するデータに決定することを特徴とする計算機システム。
【請求項２】
前記計算機システムは、前記算出された複数の負荷量に従って抽出されたデータを移動する前の第２の状態と、移動した後の第３の状態とをとることが可能であり、
前記スケジューラサーバは、
前記第１の状態における前記第２の頻度が小さいと判定された場合、前記第３の状態における前記第２の頻度を算出し、前記第３の状態における第２の頻度と、前記所定の閾値とにおいて、第２の比較を行い、
前記第２の比較の結果、前記第３の状態における第２の頻度が小さいと判定された場合、前記第２の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第１の差、及び、前記第３の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第２の差を算出し、前記第１の差と前記第２の差とにおいて、第３の比較を行い、
前記第３の比較の結果、前記第２の差が小さい場合、前記負荷量に従って抽出されたデータを、新たに追加された前記実行サーバに移動するデータに決定することを特徴とする請求項１に記載の計算機システム。
【請求項３】
複数のジョブを実行する複数の実行サーバと、前記実行サーバに接続されるスケジューラサーバとを備える計算機システムであって、
前記実行サーバは、前記ジョブによって処理される複数のデータを保持し、
前記スケジューラサーバは、
連続して処理される前記複数のデータを含む第１の組を取得し、
一つの前記実行サーバに保持されるデータと、他の前記実行サーバに保持されるデータとを含む第２の組を、前記複数の第１の組から抽出し、
前記抽出された第２の組に含まれるデータを、新たに追加された前記実行サーバに移動するデータに決定し、
前記計算機システムは、前記第２の組に含まれるデータを移動する前の第１の状態をとることが可能であり、
前記スケジューラサーバは、
前記第１の状態において、前記各データが前記ジョブによって処理される第１の頻度と、前記第２の組が連続して処理される第２の頻度とを算出し、
前記第２の頻度と、所定の閾値とにおいて、第１の比較を行い、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が大きいと判定された場合、前記抽出された第２の組に含まれるデータを、前記新たに追加された実行サーバに移動するデータに決定し、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が小さいと判定された場合、前記第１の頻度を合計することによって、前記各実行サーバの負荷量を算出し、前記算出された複数の負荷量に従って抽出された前記データを、前記新たに追加された実行サーバに移動するデータに決定することを特徴とする計算機システム。
【請求項４】
前記計算機システムは、前記算出された複数の負荷量に従って抽出されたデータを移動する前の第２の状態と、移動した後の第３の状態とをとることが可能であり、
前記スケジューラサーバは、
前記第１の状態における前記第２の頻度が小さいと判定された場合、前記第３の状態における前記第２の頻度を算出し、前記第３の状態における第２の頻度と、前記所定の閾値とにおいて、第２の比較を行い、
前記第２の比較の結果、前記第３の状態における第２の頻度が小さいと判定された場合、前記第２の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第１の差、及び、前記第３の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第２の差を算出し、前記第１の差と前記第２の差とにおいて、第３の比較を行い、
前記第３の比較の結果、前記第２の差が小さい場合、前記負荷量に従って抽出されたデータを、新たに追加された前記実行サーバに移動するデータに決定することを特徴とする請求項３に記載の計算機システム。
【請求項５】
複数のジョブを実行する複数の実行サーバに接続されるスケジューラサーバにおける移動データ決定方法であって、
前記実行サーバは、前記ジョブによって処理される複数のデータをメモリに保持し、
前記方法は、
前記スケジューラサーバが、連続して実行される前記複数のジョブによって処理される複数のデータを各々含む複数の第１の組を、メモリに格納し、
前記スケジューラサーバが、一つの前記実行サーバに保持されるデータと、他の前記実行サーバに保持されるデータとを含む第２の組を、前記メモリに格納された複数の第１の組から抽出し、
前記スケジューラサーバが、前記抽出された第２の組に含まれるデータを、新たに追加された前記実行サーバに移動するデータに決定し、
前記複数の実行サーバ及び前記スケジューラサーバは、計算機システムに含まれ、
前記計算機システムは、前記第２の組に含まれるデータを移動する前の第１の状態をとることが可能であり、
前記方法は、
前記スケジューラサーバが、前記第１の状態において、前記各データが前記ジョブによって処理される第１の頻度と、前記連続して実行される複数のジョブが前記第２の組に含まれる複数のデータを処理する第２の頻度とを算出し、
前記スケジューラサーバが、前記第２の頻度と、所定の閾値とにおいて、第１の比較を行い、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が大きいと判定された場合、前記スケジューラサーバが、前記抽出された第２の組に含まれるデータを、前記新たに追加された実行サーバに移動するデータに決定し、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が小さいと判定された場合、前記スケジューラサーバが、前記第１の頻度を合計することによって、前記各実行サーバの負荷量を算出し、前記算出された複数の負荷量に従って抽出された前記データを、前記新たに追加された実行サーバに移動するデータに決定し、
前記計算機システムは、前記算出された複数の負荷量に従って抽出されたデータを移動する前の第２の状態と、移動した後の第３の状態とをとることが可能であり、
前記方法は、
前記第１の状態における前記第２の頻度が小さいと判定された場合、前記スケジューラサーバが、前記第３の状態における前記第２の頻度を算出し、前記第３の状態における第２の頻度と、前記所定の閾値とにおいて、第２の比較を行い、
前記第２の比較の結果、前記第３の状態における第２の頻度が小さいと判定された場合、前記スケジューラサーバが、前記第２の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第１の差、及び、前記第３の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第２の差を算出し、前記第１の差と前記第２の差とにおいて、第３の比較を行い、
前記第３の比較の結果、前記第２の差が小さい場合、前記スケジューラサーバが、前記負荷量に従って抽出されたデータを、新たに追加された前記実行サーバに移動するデータに決定することを特徴とする移動データ決定方法。
【請求項６】
複数のジョブを実行する複数の実行サーバに接続されるスケジューラサーバにおける移動データ決定方法であって、
前記実行サーバは、前記ジョブによって処理される複数のデータを保持し、
前記方法は、
前記スケジューラサーバが、連続して処理される前記複数のデータを含む複数の第１の組を、メモリに格納し、
前記スケジューラサーバが、一つの前記実行サーバに保持されるデータと、他の前記実行サーバに保持されるデータとを含む第２の組を、前記メモリに格納された複数の第１の組から抽出し、
前記スケジューラサーバが、前記抽出された第２の組に含まれるデータを、新たに追加された前記実行サーバに移動するデータに決定し、
前記複数の実行サーバ及び前記スケジューラサーバは、計算機システムに含まれ、
前記計算機システムは、前記第２の組に含まれるデータを移動する前の第１の状態をとることが可能であり、
前記方法は、
前記スケジューラサーバが、前記第１の状態において、前記各データが前記ジョブによって処理される第１の頻度と、前記第２の組が連続して処理される第２の頻度とを算出し、
前記スケジューラサーバが、前記第２の頻度と、所定の閾値とにおいて、第１の比較を行い、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が大きいと判定された場合、前記スケジューラサーバが、前記抽出された第２の組に含まれるデータを、前記新たに追加された実行サーバに移動するデータに決定し、
前記第１の比較の結果、前記第１の状態における前記第２の頻度が小さいと判定された場合、前記スケジューラサーバが、前記第１の頻度を合計することによって、前記各実行サーバの負荷量を算出し、前記算出された複数の負荷量に従って抽出された前記データを、前記新たに追加された実行サーバに移動するデータに決定し、
前記計算機システムは、前記算出された複数の負荷量に従って抽出されたデータを移動する前の第２の状態と、移動した後の第３の状態とをとることが可能であり、
前記方法は、
前記スケジューラサーバが、前記第１の状態における前記第２の頻度が小さいと判定された場合、前記第３の状態における前記第２の頻度を算出し、前記第３の状態における第２の頻度と、前記所定の閾値とにおいて、第２の比較を行い、
前記第２の比較の結果、前記第３の状態における第２の頻度が小さいと判定された場合、前記スケジューラサーバが、前記第２の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第１の差、及び、前記第３の状態における、前記各実行サーバの負荷量と前記新たに追加された実行サーバの負荷量との第２の差を算出し、前記第１の差と前記第２の差とにおいて、第３の比較を行い、
前記第３の比較の結果、前記第２の差が小さい場合、前記スケジューラサーバが、前記負荷量に従って抽出されたデータを、新たに追加された前記実行サーバに移動するデータに決定することを特徴とする移動データ決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、特に、計算機システムに新たにサーバを追加する場合に、移動するデータを決定する計算機システムに関する。
【背景技術】
【０００２】
現在、スケジューラとジョブを実行するためのサーバとを用いてジョブを実行するシステムが、広く用いられている。このシステムは、ジョブを実行する要求を受信し、受信した要求を、ジョブを実行するためのサーバ（以降、実行サーバと記載）に送信するスケジューラと、実行サーバとを備える。
【０００３】
このシステムのスケジューラは、ジョブリクエスト、すなわち、ジョブに関する要求を解析し、要求されたジョブを実行する実行サーバを決定し、ジョブを実行する要求を、決定された実行サーバに送信する（例えば、特許文献１参照）。
【０００４】
また、ジョブの実行サーバのメモリにデータを格納する技術が提案されている（例えば、特許文献２参照）。特許文献２には、実行サーバのメモリ（主記憶装置）に、ジョブで使用するデータを格納するシステムが提案されている。
【０００５】
さらに、スケジューラと実行サーバとを備えるシステムにおいて、システムの処理容量が不足する場合、実行サーバを追加することによって、システムの処理容量を大きくするシステムが提案されている。実行サーバを追加することを、実行サーバのスケールアウトと呼ぶ。このように、スケールアウトによって処理容量を増大させるシステムが提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１５２６１８号公報
【特許文献２】特開平７−３３４４０２号公報
【特許文献３】特開２００９−１１０１２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
実行サーバのメモリにデータを保持するシステムにおいて、実行サーバをスケールアウトする場合、既存の実行サーバに保持されるデータの一部は、追加する実行サーバに移される必要がある。
【０００８】
この際、実行サーバにかけられる負荷に偏りが生じると、負荷が偏った実行サーバは、ネック、すなわち処理の遅延の原因になり、全体的な処理が滞る可能性がある。このため、実行サーバをスケールアウトする場合、実行サーバにかかる負荷が平準化されるように、データが移動される必要がある。
【０００９】
また、システムにおいて実行されるジョブには、一つのデータを引数として処理するジョブだけでなく、複数のデータを処理するジョブが存在する。
【００１０】
例えば、銀行口座の入出金システムは、口座番号と口座残高とのデータが、相互に対応して管理される。そして、このような入出金システムでは、一方の口座から出金し、他の口座に入金するといったジョブが実行される。このようなジョブは、出金された口座の口座番号及び口座残高のデータと、入金された口座の口座番号及び口座残高のデータとの複数のデータを、処理する。
【００１１】
複数のデータを処理するジョブを、以降、連携ジョブと記載する。
【００１２】
連携ジョブによって処理されるデータが異なる実行サーバに格納される場合、一つのサーバは、先行する処理（例えば、出金処理）を終了させた後、先行する処理が終了した旨を他の実行サーバに送信する。そして、他の実行サーバは、その旨を受信した後、後続の処理（例えば、入金処理）を実行する。
【００１３】
このように、連携ジョブによって処理されるデータが異なる実行サーバに格納される場合、一方の実行サーバから他方の実行サーバに通信が必要である。この通信のオーバヘッドによって、システムの性能が低下するため、連携ジョブによって処理されるデータは、同じ実行サーバに配置されることが望ましい。
【００１４】
本発明の一つ目の課題は、実行サーバをスケールアウトする場合、実行サーバ間の負荷の平準化、連携ジョブの通信におけるオーバヘッドの削減、又はその両方を行うため、追加する実行サーバに移動するデータを、適切に決定することである。
【００１５】
また、連携ジョブではないジョブも、特定のパターンによってデータにアクセスする場合がある。例えば、あるデータ（データ１）を処理した後に、別のデータ（データ２）を処理する可能性が高い、といった特定のパターンによって、データにアクセスするジョブが存在する。
【００１６】
前述の例において、データ１とデータ２とが異なる実行サーバに格納される場合、データを処理するための順序を保証するため、スケジューラは、データ１の処理が終了するのを待ち、データ１の処理が終了後、実行サーバにデータ２の処理を指示する。
【００１７】
一方、前述の例において、データ１とデータ２とが同じ実行サーバに格納される場合、実行サーバが指示を受けた順にジョブを実行するため、スケジューラは、データ１の処理を待たずに、データ２の処理を指示できる。そのため、スケジューラによる処理を低減するためには、データ１とデータ２とが同じ実行サーバに配置されることが望ましい。
【００１８】
本発明の二つ目の課題は、実行サーバをスケールアウトする場合、実行サーバの負荷の平準化、データへのアクセスパターンの相違によるスケジューラの処理負担の低減、又は、その両方を行うため、追加する実行サーバに移動するデータを、適切に決定することである。
【課題を解決するための手段】
【００１９】
本発明の代表的な一形態によると、複数のジョブを実行する複数の実行サーバと、前記実行サーバに接続されるスケジューラサーバとを備える計算機システムであって、前記実行サーバは、前記ジョブによって処理される複数のデータを保持し、前記スケジューラサーバは、連続して実行される前記複数のジョブによって処理される複数のデータを各々含む複数の第１の組を取得し、一つの前記実行サーバに保持されるデータと、他の前記実行サーバに保持されるデータとを含む第２の組を、前記複数の第１の組から抽出し、前記抽出された第２の組に含まれるデータを、新たに追加された前記実行サーバに移動するデータに決定し、前記計算機システムは、前記第２の組に含まれるデータを移動する前の第１の状態をとることが可能であり、前記スケジューラサーバは、前記第１の状態において、前記各データが前記ジョブによって処理される第１の頻度と、前記連続して実行される複数のジョブが前記第２の組に含まれる複数のデータを処理する第２の頻度とを算出し、前記第２の頻度と、所定の閾値とにおいて、第１の比較を行い、前記第１の比較の結果、前記第１の状態における前記第２の頻度が大きいと判定された場合、前記抽出された第２の組に含まれるデータを、前記新たに追加された実行サーバに移動するデータに決定し、前記第１の比較の結果、前記第１の状態における前記第２の頻度が小さいと判定された場合、前記第１の頻度を合計することによって、前記各実行サーバの負荷量を算出し、前記算出された複数の負荷量に従って抽出された前記データを、前記新たに追加された実行サーバに移動するデータに決定することを特徴とする計算機システム。
【発明の効果】
【００２０】
実行サーバ間の負荷を平準化し、通信におけるオーバヘッドを低減できる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態の計算機システムの構成を示すブロック図である。
【図２】本発明の実施形態のデータを示す説明図である。
【図３】本発明の実施形態のジョブ・データ配置テーブルに格納される情報を示す説明図である。
【図４】本発明の実施形態のデータ利用頻度テーブルを示す説明図である。
【図５】本発明の実施形態のアクセスパターン管理テーブルを示す説明図である。
【図６】、本発明の実施形態の実行サーバに移動するデータを移動データ決定部が決定する手順を示すフローチャートである。
【図７】本発明の実施形態の実行サーバ負荷リストを示す説明図である。
【図８】本発明の実施形態の実行サーバに移動するデータを、通信頻度を優先して決定する手順を示すフローチャートである。
【発明を実施するための形態】
【００２２】
図１は、本発明の実施形態の計算機システムの構成を示すブロック図である。
【００２３】
図１に示す計算機システムは、スケジューラサーバ１００と、１台以上の実行サーバ１０１（実行サーバ１０１−１、１０１−２、・・・、１０１−（Ｎ−１））とを備える。また、１０１−Ｎは、本実施形態における計算機システムに追加される実行サーバ１０１である。スケジューラサーバ１００と実行サーバ１０１とは、ネットワーク１０２によって接続される。
【００２４】
スケジューラサーバ１００は、ＣＰＵ１１２及びメモリを備える計算機である。スケジューラサーバ１００は、リクエスト解析部１０３、実行サーバ決定部１０４、リクエスト送受信部１０５、アクセスパターン分析部１０６、移動データ決定部１０８、ジョブ・データ配置テーブル１０９、データ利用頻度テーブル１１０、及び、アクセスパターン管理テーブル１１１を備える。
【００２５】
スケジューラサーバ１００に備わるリクエスト解析部１０３、実行サーバ決定部１０４、リクエスト送受信部１０５、アクセスパターン分析部１０６、及び、移動データ決定部１０８は、スケジューラサーバ１００のメモリに格納され、ＣＰＵ１１２によって実行されるプログラムである。また、ジョブ・データ配置テーブル１０９、データ利用頻度テーブル１１０、及び、アクセスパターン管理テーブル１１１は、スケジューラサーバ１００のメモリに格納されるテーブルである。
【００２６】
スケジューラサーバ１００のメモリは、プログラム及びデータ等を格納することができる。また、一時的に、データ等を格納することができる。
【００２７】
リクエスト解析部１０３は、管理者若しくはユーザ、又は、別のスケジューラサーバ１００等によって送られる要求等を解析し、要求等に含まれる情報を各プログラムに送るためのプログラムである。アクセスパターン分析部１０６は、各実行サーバ１０１に格納されたデータ１２５の利用頻度を測定するためのプログラムである。
【００２８】
実行サーバ決定部１０４は、ジョブの実行要求１３０によって要求されたジョブを、実行する実行サーバ１０１を決定するプログラムである。リクエスト送受信部１０５は、実行サーバ決定部１０４によって決定された実行サーバ１０１に、実行を要求されたジョブの情報等を送るプログラムである。また、リクエスト送受信部１０５は、実行サーバ１０１からジョブの実行結果を受信する。
【００２９】
移動データ決定部１０８は、実行サーバ１０１が追加される際に、既存の実行サーバ１０１から追加された実行サーバ１０１に移動するデータ１２５を、決定するプログラムである。
【００３０】
実行サーバ１０１は、ＣＰＵ１２６及びメモリを備える計算機である。実行サーバ１０１−１〜１０１−（Ｎ−１）は、リクエスト送受信部１２０、入金ジョブ１２１、出金ジョブ１２２、データ送受信部１２３、ジョブ・データ配置テーブル１０９、及び、データ１２５を備える。また、実行サーバ１０１−Ｎは、リクエスト送受信部１２０、入金ジョブ１２１、出金ジョブ１２２、及び、データ送受信部１２３を備える。
【００３１】
実行サーバ１０１に備わるリクエスト送受信部１２０及びデータ送受信部１２３は、実行サーバ１０１のメモリに格納され、ＣＰＵ１２６によって実行されるプログラムである。また、入金ジョブ１２１、及び、出金ジョブ１２２は、ＣＰＵ１２６によって実行されるプログラムを含むジョブである。
【００３２】
また、実行サーバ１０１−１〜１０１−（Ｎ−１）に備わるジョブ・データ配置テーブル１０９及びデータ１２５（データ１２５−１〜１２５−（Ｎ−１））は、実行サーバ１０１のメモリに格納されるテーブル及びデータである。
【００３３】
リクエスト送受信部１２０は、スケジューラサーバ１００から送信される実行を要求されたジョブの情報等を受信し、ジョブの実行結果をスケジューラサーバ１００に送信するプログラムである。データ送受信部１２３は、実行サーバ１０１間で、データ１２５を送受信するためのプログラムである。
【００３４】
入金ジョブ１２１は、データ１２５に格納される値に、引数によって与えられた数を加算するジョブである。出金ジョブ１２２は、データ１２５に格納される値から、引数によって与えられた数を減算するジョブである。
【００３５】
実行サーバ１０１−Ｎは、本実施形態の計算機システムに新たに追加される実行サーバ１０１、すなわちスケールアウトされる実行サーバ１０１である。実行サーバ１０１−Ｎは、本実施形態の計算機システムに追加される前の時点において、ジョブ・データ配置テーブル１０９及びデータ１２５を備えていない。本実施形態のスケジューラサーバ１００は、実行サーバ１０１−Ｎを追加するために、実行サーバ１０１−Ｎに格納されるデータ１２５を決定する。
【００３６】
なお、図１に示すスケジューラサーバ１００と実行サーバ１０１とは、各々別の計算機によって実装されるが、本実施形態のスケジューラサーバ１００及び実行サーバ１０１は、仮想的な計算機によって実装されてもよい。仮想的な計算機は、少なくとも一つの物理的なＣＰＵと、少なくとも一つの物理的なメモリとによって実装される。
【００３７】
また、図１に示す実行サーバ１０１は、入金ジョブ１２１及び出金ジョブ１２２を保持するが、本実施形態の実行サーバ１０１は、入金ジョブ１２１及び出金ジョブ１２２に限らず、プログラムによって実行されるジョブであれば、いかなるジョブを保持してもよい。
【００３８】
図２は、本発明の実施形態のデータ１２５を示す説明図である。
【００３９】
データ１２５は、実行サーバ１０１がジョブによって処理するデータである。
【００４０】
データ１２５は、口座番号１２５１及び口座残高１２５２を含む。口座番号１２５１は、各データ１２５を一意に示す識別子を示し、口座残高１２５２は各データ１２５の値を示す。
【００４１】
実行サーバ１０１−１〜１０１−（Ｎ−１）には、異なるデータ１２５−１〜１２５−（Ｎ−１）が格納される。例えば、実行サーバ１０１−１には、口座番号１２５１が１から１０００を示すデータ１２５が格納され、実行サーバ１０１−２には、口座番号１２５１が１００１から２０００を示すデータ１２５が格納される。さらに、実行サーバ１０１−（Ｎ−１）には、口座番号１２５１が１０００×（Ｎ−１）＋１から１０００×Ｎのデータが格納される。
【００４２】
図３は、本発明の実施形態のジョブ・データ配置テーブル１０９を示す説明図である。
【００４３】
ジョブ・データ配置テーブル１０９は、スケジューラサーバ１００及び実行サーバ１０１によって保持される。ジョブ・データ配置テーブル１０９は、実行サーバ１０１と実行サーバ１０１が実行するジョブの種類と実行サーバ１０１が処理するデータとの対応関係を示す。ジョブ・データ配置テーブル１０９は、実行サーバ１０１がスケールアウトする際に更新される。更新されたジョブ・データ配置テーブル１０９は、スケジューラサーバ１００によって、各実行サーバ１０１に送信される。
【００４４】
ジョブ・データ配置テーブル１０９は、実行サーバ１０９１、ジョブ１０９２、及び、口座番号１０９３を含む。実行サーバ１０９１は、実行サーバ１０１を一意に示す識別子である。ジョブ・データ配置テーブル１０９は、実行サーバ１０１ごとにエントリを含む。
【００４５】
ジョブ１０９２は、実行サーバ１０９１が示す実行サーバ１０１において実行できるジョブの種類を含む。また、口座番号１０９３は、データ１２５の識別子、すなわち図２に示す口座番号１２５１を含む。口座番号１０９３は、複数の識別子を含んでよい。
【００４６】
例えば、図３に示すとおり、実行サーバ１０９１が実行サーバ１０１−１〜１０１−（Ｎ−１）を示し、ジョブ１０９２が"入金ジョブ、出金ジョブ"を示す場合、ジョブ・データ配置テーブル１０９は、実行サーバ１０１−１〜１０１−（Ｎ−１）が、入金ジョブ及び出金ジョブを実行可能であることを示す。
【００４７】
ここで、ジョブ・データ配置テーブル１０９に示される入金ジョブとは、入力された引数をデータ１２５の口座残高１２５２に加算するジョブであり、入金ジョブ１２１によって実行されるジョブである。また、ジョブ・データ配置テーブル１０９に示される出金ジョブとは、入力された引数をデータ１２５の口座残高１２５２から減算するジョブであり、出金ジョブ１２２によって実行されるジョブである。
【００４８】
また、実行サーバ１０９１が実行サーバ１０１−１を示し、口座番号１０９３が１〜１０００を示す場合、実行サーバ１０１−１には、図２に示す口座番号１２５１が１〜１０００であるデータ１２５が格納される。また、実行サーバ１０９１がサーバ実行サーバ１０１−２を示し、口座番号１０９３が１００１〜２０００を示す場合、実行サーバ１０１−２には、図２に示す口座番号１２５１が１００１〜２０００であるデータ１２５が格納される。
【００４９】
また、実行サーバ１０９１が実行サーバ１０１−（Ｎ−１）を示し、口座番号１０９３が１０００×（Ｎ−１）＋１〜１０００×Ｎを示す場合、実行サーバ１０１−（Ｎ−１）には、口座番号１２５１が１０００×（Ｎ−１）＋１〜１０００×Ｎであるデータが格納される。
【００５０】
なお、図３のジョブ１０９２の各エントリには、入金ジョブ１２１と出金ジョブ１２２が一つずつ格納されているが、複数の入金ジョブ１２１又は出金ジョブ１２２が格納されてもよい。
【００５１】
図４は、本発明の実施形態のデータ利用頻度テーブル１１０を示す説明図である。
【００５２】
データ利用頻度テーブル１１０は、スケジューラサーバ１００によって保持される。データ利用頻度テーブル１１０は、データ１２５の利用頻度、すなわち、データ１２５の各エントリがジョブによって処理される頻度を示す。
【００５３】
データ利用頻度テーブル１１０は、口座番号１１０１及び利用頻度１１０２を含む。口座番号１１０１は、データ１２５の識別子を示し、図２に示す口座番号１２５１と、図３に示す口座番号１０９３の値とに相当する。利用頻度１１０２は、例えば、口座番号１１０１が示すデータ１２５が、ジョブによって１分あたりに処理される頻度を示す。
【００５４】
なお、図４に示すデータ利用頻度テーブル１１０は、口座番号１１０１ごとに利用頻度１１０２を格納するテーブルであるが、データ利用頻度テーブル１１０のエントリの個数を減らすため、データ１２５を所定の数ごとに区切ることによって、複数のデータ利用頻度テーブル１１０が生成されてもよい。すなわち、例えば、口座番号１１０１が１〜１００、口座番号１１０１が実行サーバ１０１〜２００であるエントリを各々まとめることによって、複数のデータ利用頻度テーブル１１０に利用頻度１１０２が格納されてもよい。
【００５５】
図５は、本発明の実施形態のアクセスパターン管理テーブル１１１を示す説明図である。
【００５６】
アクセスパターン管理テーブル１１１は、口座番号の組１１１１及び利用頻度１１１２を含む。口座番号の組１１１１には、一つのデータ１２５が処理された後に、別のデータ１２５が処理される場合のデータ１２５の組を示す。口座番号の組１１１１に示される値は、図２に示す口座番号１２５１と、図３に示す口座番号１０９３の値と、図４に示す口座番号１１０１に相当する。ここで、口座番号の組１１１１に含まれるデータ１２５は、連携ジョブによって連続して処理されるデータ１２５の組だけでなく、通常のジョブが実行される際に、ある一定期間内に処理される可能性が高いデータ１２５の組であってもよい。
【００５７】
利用頻度１１１２は、口座番号の組１１１１に示されるデータ１２５の組が、処理される頻度を示す。利用頻度１１１２は、例えば、口座番号の組１１１１が示すデータ１２５の組が、ジョブによって１分あたりに処理される頻度を示す。
【００５８】
なお、図５に示すアクセスパターン管理テーブル１１１は、口座番号の組１１１１ごとに利用頻度１１１２を格納するテーブルであるが、アクセスパターン管理テーブル１１１のエントリの個数を減らすため、データを所定の数ごとに区切り、複数のアクセスパターン管理テーブル１１１が作成されてもよい。
【００５９】
すなわち、例えば、口座番号の組１１１１に含まれるデータ１２５の値のうち一つ目の値が、１〜１００であり、口座番号の組１１１１に含まれるデータ１２５の値のうち二つ目の値が、１０００〜１１００である組といったように、エントリを各々まとめることによって、複数のアクセスパターン管理テーブル１１１に利用頻度１１１２が格納されてもよい。
【００６０】
なお、図５の口座番号の組１１１１には、二つの口座番号１１０１の値のみが格納されているが、三つ以上の口座番号１１０１の値が格納されてもよい。
【００６１】
また、本実施形態のデータ１２５は、口座番号１２５１及び口座残高１２５２に限られず、各データ１２５を一意に識別する識別子と、値とを含めば、いかなる種類のデータでもよい。このため、ジョブ・データ配置テーブル１０９、データ利用頻度テーブル１１０、及び、アクセスパターン管理テーブル１１１の列名は、データ１２５に格納されるデータの種類に従い、異なる名称でもよい。
【００６２】
（ジョブのスケジュール）
スケジューラサーバ１００は、管理者若しくはユーザ、又は、別のスケジューラサーバ１００等によって、ジョブの実行要求１３０を送られた後、ジョブの実行要求１３０によって要求されたジョブを実行サーバ１０１に実行させる。ジョブの実行要求１３０には、実行されるジョブを一意に示す情報と、実行されるジョブが処理するデータ１２５を一意に示す情報とが含まれる。また、ジョブの実行要求１３０には、必要に応じて、ジョブに入力される引数等が含まれる。
【００６３】
例えば、本実施形態におけるジョブの実行要求１３０には、「口座番号が１番の口座から、１円を出金する出金ジョブの実行」を要求する情報が含まれる。この場合、"１番"が、データ１２５を一意に示す情報を示し、"出金ジョブ"が実行されるジョブを一意に示す情報を示し、"１円"が引数を示す。なお、ジョブの実行要求１３０に含まれる値は、データ１２５及びジョブを一意に示せばよく、識別子でも名称でもよい。
【００６４】
また、ジョブの実行要求１３０が、連携ジョブの実行の要求を示す情報を含む場合、ジョブの実行要求１３０には、ジョブとデータ１２５を示す情報が、それぞれ、二つ以上含まれる。例えば、ジョブの実行要求１３０には、「口座番号が１番である口座から、１円を出金する出金ジョブの実行と、口座番号が２番である口座に、１円を入金する入金ジョブの実行」を要求する情報が含まれる。
【００６５】
ジョブの実行要求１３０は、前述のような情報を含めば、いかなる方法によって指定されてもよい。ジョブの実行要求１３０は、例えば、ＣＳＶ（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）形式によって、記載されてもよい。
【００６６】
スケジューラサーバ１００がジョブの実行要求１３０を受信した後、リクエスト解析部１０３は、ジョブの実行要求１３０に含まれる、ジョブ名とデータ１２５を示す識別子等とを抽出し、アクセスパターン分析部１０６及び実行サーバ決定部１０４に送る。
【００６７】
アクセスパターン分析部１０６は、例えば１分等の一定時間ごとに、すべての実行サーバ１０１に格納されたデータ１２５の利用頻度を測定する。そして、データ利用頻度テーブル１１０の利用頻度１１０２及びアクセスパターン管理テーブル１１１の利用頻度１１１２を最新の値に更新する。
【００６８】
実行サーバ１０１は、ジョブを実行する際に、処理したデータ１２５とジョブとを示す情報をスケジューラサーバ１００に送信する。このため、スケジューラサーバ１００は、実行サーバ１０１から情報を送信されることによって、データ１２５の利用頻度を測定する。また、アクセスパターン分析部１０６は、一つのデータ１２５が処理された後に、他のデータ１２５が処理される頻度を、一定時間測定する。
【００６９】
リクエスト解析部１０３によってジョブとデータ１２５を示す情報とを送られた後、アクセスパターン分析部１０６は、リクエスト解析部１０３から受信したデータ１２５を示す情報に基づいて、一定時間、各実行サーバ１０１に格納されたデータ１２５の利用頻度を測定する。そして、測定された利用頻度によって、データ利用頻度テーブル１１０の利用頻度１１０２、及び、アクセスパターン管理テーブル１１１の利用頻度１１１２を更新する。
【００７０】
具体的に、アクセスパターン分析部１０６は、「口座番号が１番の口座から、１円を出金する出金ジョブの実行」を要求する情報を受信した場合、口座番号１２５１が１であるデータ１２５の利用頻度を、例えば１分等の一定時間測定する。そして、測定された利用頻度によって、データ利用頻度テーブル１１０を更新する。
【００７１】
また、アクセスパターン分析部１０６は、「口座番号が１番の口座から１円を出金する出金ジョブの実行と、口座番号が２番の口座に１円を入金する入金ジョブの実行」を要求する情報を受信した場合、口座番号１２５１が１であるデータ１２５と口座番号１２５１が２であるデータ１２５との組について、一定時間利用頻度を測定し、アクセスパターン管理テーブル１１１を更新する。
【００７２】
アクセスパターン分析部１０６は、連携ジョブの実行要求を受信した場合以外にも、アクセスパターン管理テーブル１１１を更新してよい。例えば、アクセスパターン分析部１０６は、口座番号１２５１が１であるデータ１２５の処理に続いて、口座番号１２５１が２であるデータ１２５が処理されることを、実行サーバ１０１から送信される頻度を測定する。
【００７３】
そして、アクセスパターン分析部１０６は、実行サーバ１０１から送信された頻度が、予め決められた頻度を上回った場合、口座番号１２５１が１であるデータ１２５と、口座番号１２５１が２であるデータ１２５の組とを、アクセスパターン管理テーブル１１１の口座番号の組１１１１に格納し、実行サーバ１０１から送信された頻度を利用頻度１１１２に格納する。
【００７４】
なお、アクセスパターン分析部１０６は、データ利用頻度テーブル１１０及びアクセスパターン管理テーブル１１１を更新する場合、過去に測定された利用頻度１１０２又は利用頻度１１１２と、新たに測定された利用頻度１１０２又は利用頻度１１１２との平均を算出し、算出された平均値を利用頻度１１０２又は利用頻度１１１２に格納してもよい。また、過去に測定された利用頻度１１０２又は利用頻度１１１２を削除し、新たに測定された利用頻度１１０２又は利用頻度１１１２を格納してもよい。
【００７５】
リクエスト解析部１０３によってジョブとデータ１２５を示す情報とを送られた後、実行サーバ決定部１０４は、ジョブ・データ配置テーブル１０９を参照し、リクエスト解析部１０３によって送られた情報が示すジョブ１０９２と口座番号１０９３とを抽出する。そして、抽出されたジョブ１０９２と口座番号１０９３とを含む実行サーバ１０９１を、ジョブの実行要求１３０によって要求されたジョブを実行する実行サーバ１０１に決定する。そして、決定された実行サーバ１０１と実行するジョブとを、リクエスト送受信部１０５に送信する。
【００７６】
リクエスト送受信部１０５は、実行サーバ決定部１０４によって決定された実行サーバ１０１のリクエスト送受信部１２０に、ジョブを実行する要求を送信する。この際、リクエスト送受信部１２０に送られる要求には、ジョブの実行要求１３０に含まれる情報が含まれる。
【００７７】
リクエスト送受信部１２０が、リクエスト送受信部１０５によってジョブを実行する要求を受信した後、実行サーバ１０１のＣＰＵ１２６は、要求に含まれる情報によって、ジョブを実行する。ＣＰＵ１２６が、ジョブを実行した後、リクエスト送受信部１２０は、ジョブの実行結果をリクエスト送受信部１０５に送信する。
【００７８】
前述のように、本実施形態の計算機システムにジョブの実行要求１３０が入力された後、実行サーバ１０１によって、要求されたジョブが実行される。ここで、入力されたジョブの実行要求１３０が連携ジョブの実行を要求する場合、複数の実行サーバ１０１によって実行される場合がある。
【００７９】
例えば、ジョブの実行要求１３０が、「口座番号が１番である口座から１円を出金する出金ジョブの実行と、口座番号が１００１番である口座に１円を入金する入金ジョブの実行」を要求する場合、スケジューラサーバ１００は、まず、前述の手順によって、一つ目のジョブを実行する実行サーバ１０１を決定する。ここで、実行サーバ決定部１０４が一つ目のジョブを実行する実行サーバ１０１を実行サーバ１０１−１に決定した場合、リクエスト送受信部１０５は、実行サーバ１０１−１に出金ジョブ１２２を実行する要求を送信する。
【００８０】
その後、実行サーバ１０１−１のＣＰＵ１２６が出金ジョブ１２２を終了した後、実行サーバ１０１−１のＣＰＵ１２６は、ジョブ・データ配置テーブル１０９を参照し、二つ目のジョブを実行する実行サーバ１０１を決定する。ここで、ＣＰＵ１２６が二つ目のジョブ実行サーバ１０１に実行サーバ１０１−２を決定した場合、実行サーバ１０１−１のＣＰＵ１２６は、実行サーバ１０１−２にジョブの実行の要求を送信する。この際、実行サーバ１０１−１のリクエスト送受信部１２０、及び、実行サーバ１０１−２のリクエスト送受信部１２０は、ジョブの実行の要求を送受信する。
【００８１】
（スケールアウトによって移動するデータ１２５の決定）
本実施形態の計算機システムに、実行サーバ１０１−Ｎが追加される場合、管理者等によってスケジューラサーバ１００にサーバスケールアウトのコマンド１３１が入力される。
【００８２】
サーバスケールアウトのコマンド１３１には、通信頻度の閾値が含まれる。通信頻度の閾値とは、管理者等が、連携ジョブを実行することによって発生する実行サーバ１０１間の通信の頻度を、指定する場合に用いる値である。本実施形態の通信頻度は、既存の実行サーバ１０１間、すなわち、実行サーバ１０１−１〜１０１−（Ｎ−１）間において発生する通信頻度である。なお、通信頻度の閾値は、サーバスケールアウトのコマンド１３１によって、管理者等から指定されてもよいし、スケジューラサーバ１００にあらかじめ格納されていてもよい。
【００８３】
スケジューラサーバ１００の移動データ決定部１０８は、通信頻度の閾値を指定されることによって、指定された通信頻度の閾値以下になるように、実行サーバ１０１−Ｎへ移動するデータ１２５を決定する。通信頻度の閾値は、例えば、１分あたりに発生する通信の回数によって指定される。
【００８４】
また、サーバスケールアウトのコマンド１３１には、平準化優先、通信削減優先、又は、その両方のいずれかを示す情報が含まれる。平準化優先とは、実行サーバ１０１−Ｎが追加される際、データ１２５の利用頻度に基づいて、すべての実行サーバ１０１の負荷が平準化されるように、追加された実行サーバ１０１−Ｎにデータ１２５を移動する指示である。通信削減優先とは、連携ジョブによって処理されるデータ１２５が、同じ実行サーバ１０１に格納されるようにデータ１２５を移動する指示である。
【００８５】
本実施形態のサーバスケールアウトのコマンド１３１は、平準化優先又は通信削減優先のいずれかを、通信頻度の閾値によって示す。すなわち、通信頻度の閾値が０回／分に指定された場合、サーバスケールアウトのコマンド１３１は、通信削減優先を示し、通信頻度の閾値が無限大に指定された場合、サーバスケールアウトのコマンド１３１は、平準化優先を示す。
【００８６】
また、通信頻度の閾値が、０回／分と無限大との間の値である場合、サーバスケールアウトのコマンド１３１は、平準化優先及び通信削減優先の両方を示す。サーバスケールアウトのコマンド１３１は、通信頻度の閾値の大小によって、平準化優先又は通信削減優先のいずれを優先させるかを示す。
【００８７】
移動データ決定部１０８は、実行サーバ１０１−Ｎが追加される際、実行サーバ１０１−Ｎへ移動するデータ１２５を決定するためのプログラムである。
【００８８】
サーバスケールアウトのコマンド１３１がスケジューラサーバ１００に入力された場合、リクエスト解析部１０３は、サーバスケールアウトのコマンド１３１が示す情報を移動データ決定部１０８に送る。移動データ決定部１０８は、リクエスト解析部１０３からサーバスケールアウトのコマンド１３１が示す情報を受信した場合、サーバスケールアウトのコマンド１３１が示す情報に従って、新たに追加される実行サーバ１０１−Ｎに移動するデータ１２５を決定する。
【００８９】
以下に、１００が、追加された実行サーバ１０１に移動するデータ１２５を、決定する処理を示す。
【００９０】
図６は、本発明の実施形態の実行サーバ１０１−Ｎに移動するデータ１２５を移動データ決定部１０８が決定する手順を示すフローチャートである。
【００９１】
以下、図６のフローチャートによって、移動データ決定部１０８の処理を説明する。図６に示す移動データ決定部１０８の処理は、実行サーバ１０１間の通信頻度を削減するように移動するデータ１２５を決定するステップと、すべての実行サーバ１０１の負荷量を平準化するように移動するデータ１２５を決定するステップを含む。
【００９２】
ステップ６０１、及び、ステップ６０３において、移動データ決定部１０８は、通信頻度を削減するように移動するデータ１２５を決定する。
【００９３】
まず、移動データ決定部１０８は、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値より、実行サーバ１０１の通信頻度が大きいか否かを判定する（６０１）。具体的には、移動データ決定部１０８は、ジョブ・データ配置テーブル１０９を参照することによって、アクセスパターン管理テーブル１１１のエントリのうち、異なる実行サーバ１０１に格納されるデータ１２５の組を示す口座番号の組１１１１を含むエントリを抽出する。そして、抽出されたすべてのエントリの利用頻度１１１２を合計する。これによって、移動データ決定部１０８は、既存の実行サーバ１０１間、すなわち、実行サーバ１０１−１〜１０１−（Ｎ−１）間の通信頻度を算出する。
【００９４】
さらに移動データ決定部１０８は、ステップ６０１において、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値と、算出された実行サーバ１０１−１〜１０１−（Ｎ−１）間の通信頻度とを比較する。そして、移動データ決定部１０８は、ステップ６０１において、実行サーバ１０１−１〜１０１−（Ｎ−１）間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値以上であるか否かを判定する。
【００９５】
ステップ６０１において、実行サーバ１０１−１〜１０１−（Ｎ−１）間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値以上であると判定された場合、実行サーバ１０１間の通信頻度を減らすため、移動データ決定部１０８は、ステップ６０３に移行する。
【００９６】
ステップ６０１の後、移動データ決定部１０８は、ステップ６０１において抽出された、異なる実行サーバ１０１に格納されるデータ１２５の組を示す口座番号の組１１１１のうち、最も利用頻度１１１２が大きいエントリを選択する。そして、移動データ決定部１０８は、選択されたエントリに基づいて、最も利用頻度１１１２が高く、異なる実行サーバ１０１に格納されるデータ１２５の組を、実行サーバ１０１−Ｎに移動することを決定する（６０３）。
【００９７】
また、移動データ決定部１０８は、ステップ６０３において、実行サーバ１０１−Ｎに移動することを決定されたデータ１２５の組と実行サーバ１０１−Ｎとが対応するように、ジョブ・データ配置テーブル１０９を更新する。
【００９８】
ステップ６０３の後、移動データ決定部１０８は、実行サーバ１０１−１〜１０１−（Ｎ−１）間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値以下になるまで、ステップ６０１及びステップ６０３を繰り返す。
【００９９】
ステップ６０１において、実行サーバ１０１−１〜１０１−（Ｎ−１）間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値より小さいと判定された場合、実行サーバ１０１間の通信頻度は問題ない頻度であり、実行サーバ１０１間の通信頻度を変更する必要はないため、移動データ決定部１０８は、ステップ６０４に移行する。
【０１００】
ステップ６０４からステップ６１３までにおいて、移動データ決定部１０８は、実行サーバ１０１の負荷を平準化するために、移動するデータ１２５を決定する。
【０１０１】
ステップ６０１の後、移動データ決定部１０８は、実行サーバ１０１−１〜１０１−（Ｎ−１）の実行サーバ１０１ごとの負荷量を算出し、実行サーバ負荷リスト１１３を生成する（６０４）。具体的には、移動データ決定部１０８は、データ利用頻度テーブル１１０とジョブ・データ配置テーブル１０９とを参照することによって、データ利用頻度テーブル１１０の利用頻度１１０２を実行サーバ１０１ごとに加算する。これによって、実行サーバ１０１ごとの負荷量を算出する。そして、ステップ６０４において、移動データ決定部１０８は、算出された負荷量が大きい順に、実行サーバ１０１を示す情報がソートされた、実行サーバ負荷リスト１１３を生成する。
【０１０２】
図７は、本発明の実施形態の実行サーバ負荷リスト１１３を示す説明図である。
【０１０３】
実行サーバ負荷リスト１１３は、実行サーバ１１３１、負荷量１１３２を含む。実行サーバ１１３１は、実行サーバ１０１を一意に示す識別子、又は、名称である。負荷量１１３２は、ステップ６０４において算出された負荷量である。
【０１０４】
実行サーバ負荷リスト１１３には、負荷量１１３２が大きい順に、エントリが格納される。図７に示す実行サーバ負荷リスト１１３は、負荷量１１３２を降順にソートしているが、移動データ決定部１０８が負荷量１１３２の大小を識別できれば、昇順でもよい。
【０１０５】
ステップ６０４の後、移動データ決定部１０８は、初期設定として、パラメータＫに１を格納し、パラメータＪに１を格納する（６０５）。パラメータＫは、負荷量が大きい順番を示すパラメータである。パラメータＪは、データ１２５の利用頻度が大きい順番を示すパラメータである。
【０１０６】
ステップ６０５の後、移動データ決定部１０８は、実行サーバ負荷リスト１１３を参照し、Ｋ番目に負荷量１１３２が大きい実行サーバ１１３１（実行サーバ１０１に相当）を抽出する。そして、ジョブ・データ配置テーブル１０９及びデータ利用頻度テーブル１１０を参照し、抽出された実行サーバ１０１（実行サーバ１０９１に相当）に保持されるデータ１２５（口座番号１０９３に相当）のうち、Ｊ番目に利用頻度１１０２が大きいデータ１２５（口座番号１１０１に相当））を抽出する（６０６）。
【０１０７】
さらに、移動データ決定部１０８は、ステップ６０６において、抽出されたＫ番目に負荷量１１３２が大きい実行サーバ１０１が保持するデータ１２５のうち、Ｊ番目に大きいデータ１２５を、実行サーバ１０１−Ｎに移動させた場合のジョブ・データ配置テーブル１０９を一時的に生成する。なお、ここで一時的に生成されたジョブ・データ配置テーブル１０９は、スケジューラサーバ１００に備わるメモリの一時的な記憶領域に格納される。
【０１０８】
そして、移動データ決定部１０８は、ステップ６０６において、アクセスパターン管理テーブル１１１と、一時的に生成されたジョブ・データ配置テーブル１０９とを参照し、ステップ６０１と同様な手順によって、実行サーバ１０１−１〜１０１−Ｎ間の通信頻度を算出する。すなわち、移動データ決定部１０８は、一時的に生成されたジョブ・データ配置テーブル１０９を参照することによって、アクセスパターン管理テーブル１１１のエントリのうち、異なる実行サーバ１０１に格納されるデータ１２５の組を示す口座番号の組１１１１を含むエントリを抽出する。そして、抽出されたエントリの利用頻度１１１２をすべて合計することによって実行サーバ１０１−１〜１０１−Ｎ間の通信頻度を算出する。
【０１０９】
ステップ６０６の後、移動データ決定部１０８は、算出された実行サーバ１０１−１〜１０１−Ｎ間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値以上であるか否かを判定する（６０７）。すなわち移動データ決定部１０８は、ステップ６０７において、Ｋ番目に負荷の大きい実行サーバ１０１のデータ１２５のうち、Ｊ番目に利用頻度の大きいデータ１２５を、実行サーバ１０１−Ｎに移動した場合、通信頻度が閾値以上であるか否かを判定する。
【０１１０】
本実施形態の移動データ決定部１０８は、利用頻度の大きいデータ１２５を、実行サーバ１０１−Ｎに移動することによって、実行サーバ１０１の負荷を軽減する。しかし、利用頻度の大きいデータ１２５が、連携ジョブによって参照されるデータ１２５である場合、その利用頻度の大きいデータ１２５を実行サーバ１０１−Ｎに移動することによって、通信頻度が高くなる場合がある。このため、移動データ決定部１０８は、ステップ６０７において、実行サーバ１０１間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値以上であるか否かを判定する。
【０１１１】
ステップ６０７において、算出された実行サーバ１０１−１〜１０１−Ｎ間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値以上である場合、実行サーバ１０１間の通信頻度が、管理者等が指定する通信頻度以上になるため、移動データ決定部１０８は、Ｊ番目に利用頻度の大きいデータ１２５を実行サーバ１０１−Ｎに移動せず、一時的に生成されたジョブ・データ配置テーブル１０９を削除する。そして、ステップ６１０に移行する。
【０１１２】
ステップ６０７において、算出された実行サーバ１０１−１〜１０１−Ｎ間の通信頻度が、サーバスケールアウトのコマンド１３１によって指定された通信頻度の閾値より小さい場合、実行サーバ１０１間の通信頻度は、管理者等が指定する通信頻度より小さいため、移動データ決定部１０８は、ステップ６０８に移行する。
【０１１３】
ステップ６０７の後、移動データ決定部１０８は、ステップ６０８において、実行サーバ１０１−Ｎの負荷量と、Ｋ番目に負荷量が大きい実行サーバ１０１の負荷量との差が、Ｊ番目に利用頻度の大きいデータ１２５を実行サーバ１０１−Ｎに移動する前と、移動した後とにおいて、小さくなるか否かを判定する。
【０１１４】
具体的には、移動データ決定部１０８は、Ｊ番目に利用頻度１１０２の大きいデータ１２５を実行サーバ１０１−Ｎに移動する前における、実行サーバ１０１−Ｎの負荷量１１３２と、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１の負荷量１１３２との差を算出し、さらに、Ｊ番目に利用頻度１１０２の大きいデータ１２５を実行サーバ１０１−Ｎに移動した後における、実行サーバ１０１−Ｎの負荷量１１３２と、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１の負荷量１１３２との差を算出する。そして、算出された二つの差を比較して、Ｊ番目に利用頻度１１０２の大きいデータ１２５を実行サーバ１０１−Ｎに移動した後における差が小さいか否かを判定する（６０８）。
【０１１５】
なお、ステップ６０８における処理は、実行サーバ１０１−Ｎへデータ１２５を移動することによって、実行サーバ１０１−Ｎの負荷量１１３２が、データ１２５の移動元の実行サーバ１０１の負荷量１１３２よりも大きく、かつ、実行サーバ１０１−Ｎの負荷量１１３２とデータ１２５の移動元の実行サーバ１０１の負荷量１１３２との差が増加していくか否かを判定できれば、いかなる算出方法を用いてもよい。
【０１１６】
例えば、移動データ決定部１０８は、Ｊ番目に利用頻度の大きいデータ１２５の利用頻度１１０２を、実行サーバ１０１−Ｎの負荷量に加算することによって、Ｊ番目に利用頻度の大きいデータ１２５を実行サーバ１０１−Ｎに移動した場合の実行サーバ１０１−Ｎの、新たな負荷量を算出してもよい。また、Ｋ番目に負荷量１１３２が大きい実行サーバ１１３１の負荷量１１３２から、Ｊ番目に利用頻度の大きいデータ１２５の利用頻度１１０２を減算することによって、Ｊ番目に利用頻度の大きいデータ１２５を実行サーバ１０１−Ｎに移動した場合のＫ番目に負荷量１１３２が大きい実行サーバ１０１の新たな負荷量を算出してもよい。そして、移動データ決定部１０８は、算出された、実行サーバ１０１−Ｎの新たな負荷量と、Ｋ番目に１１３２が大きい実行サーバ１０１の新たな負荷量を減算し、差を算出してもよい。
【０１１７】
ステップ６０８において、実行サーバ１０１−Ｎの負荷量１１３２と、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１の負荷量１１３２との差が、データ１２５を移動することによって大きくなる場合、実行サーバ１０１−Ｎの負荷量１１３２が過多となり、実行サーバ１０１間の負荷が平準化されないため、移動データ決定部１０８は、Ｊ番目に利用頻度の大きいデータ１２５を実行サーバ１０１−Ｎに移動せず、ステップ６０６において一時的に生成されたジョブ・データ配置テーブル１０９を削除する。そして、ステップ６１０に移行する。
【０１１８】
ステップ６０８において、実行サーバ１０１−Ｎの負荷量１１３２と、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１の負荷量１１３２との差が、データ１２５を移動することによって小さくなる場合、すべての実行サーバ１０１間の負荷が平準化されるため、移動データ決定部１０８は、Ｋ番目に１１３２が大きい実行サーバ１０１が保持するデータ１２５のうち、Ｊ番目に大きいデータ１２５を、実行サーバ１０１−Ｎへ移動することを決定する（６０９）。そして、ステップ６０６において一時的に生成されたジョブ・データ配置テーブル１０９によって、スケジューラサーバ１００のジョブ・データ配置テーブル１０９を更新する。
【０１１９】
ステップ６０９の後、移動データ決定部１０８は、ステップ６０４に戻る。そして、ステップ６０４において、ステップ６０９において決定されたデータ１２５を、実行サーバ１０１−Ｎへ移動した後の、実行サーバ負荷リスト１１３を生成する。
【０１２０】
そして、移動データ決定部１０８は、ステップ６０５に移行し、パラメータＫ及びパラメータＪに、各々１を格納する。本実施形態のスケジューラサーバ１００の移動データ決定部１０８は、ステップ６０５によって、実行サーバ１０１−Ｎに移動するデータ１２５を決定した後、最も負荷量１１３２が大きい実行サーバ１０１を抽出しなおすことができる。すなわち、本実施形態のスケジューラサーバ１００の移動データ決定部１０８は、最も負荷量１１３２を減らすべき実行サーバ１０１を抽出することができる。
【０１２１】
ステップ６０７又はステップ６０８の後、移動データ決定部１０８は、Ｊ番目の次に大きいデータ１２５を選択するため、パラメータＪに１を加算する。
【０１２２】
そして移動データ決定部１０８は、パラメータＪの値が、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１が保持するすべてのデータ１２５の個数より、大きいか否かを判定する（６１１）。パラメータＪの値が、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１が保持するすべてのデータ１２５の個数以下である場合、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１が保持するすべてのデータ１２５を、実行サーバ１０１−Ｎに移動できるか否かを判定していないため、移動データ決定部１０８は、ステップ６０６に戻る。
【０１２３】
パラメータＪの値が、Ｋ番目に負荷量１１３２が大きい実行サーバ１０１が保持するすべてのデータ１２５の個数よりも大きい場合、Ｋ番目の次に負荷量１１３２が大きい実行サーバ１０１が保持するデータ１２５を実行サーバ１０１−Ｎへ移動するか否かを決定するため、移動データ決定部１０８は、ステップ６１２に移行する。移動データ決定部１０８は、パラメータＫに１を加算し、パラメータＪに１を格納する（６１２）。
【０１２４】
ステップ６１２の後、移動データ決定部１０８は、パラメータＫとＮとが等しいか否かを判定する（６１３）。パラメータＫとＮとが異なる場合、すべての既存の実行サーバ１０１−１〜１０１−（Ｎ−１）が保持するデータ１２５を、実行サーバ１０１−Ｎに移動するか否かを判定していないため、移動データ決定部１０８は、ステップ６０６に移行する。
【０１２５】
ステップ６１２において、パラメータＫとＮとが等しい場合、既存の実行サーバ１０１−１〜１０１−（Ｎ−１）が保持するデータ１２５を、実行サーバ１０１−Ｎに移動するか否かを判定したため、移動データ決定部１０８は、図６に示す処理を終了する。
【０１２６】
移動データ決定部１０８は、図６に示す処理によって移動するデータ１２５を決定すると、データ１２５の移動を、データ１２５の移動元となる実行サーバ１０１のデータ送受信部１２３に指示する。また、移動データ決定部１０８は、図６の処理によって更新されたジョブ・データ配置テーブル１０９を実行サーバ１０１に送信する。
【０１２７】
これによって、実行サーバ１０１−Ｎには、ジョブ・データ配置テーブル１０９及びデータ１２５が格納される。
【０１２８】
以上によって、本実施形態の計算機システムは、実行サーバ１０１−Ｎがシステムに追加された際に、実行サーバ１０１−Ｎに移動するデータ１２５を決定することができる。また、移動するデータ１２５を決定する際に、実行サーバ１０１間の負荷量１１３２の平準化を重視する判定と、実行サーバ１０１間の通信頻度の削減を重視する判定との両方の処理を行うことによって、より管理者等にとって最適なジョブの実行環境を生成することができる。
【０１２９】
なお、前述の説明は、Ｎが３以上である場合、すなわち、既存の実行サーバ１０１が２台以上である場合の計算機システムについて説明したが、Ｎが２である場合、すなわち、既存の実行サーバ１０１が１台のみである場合も、本実施形態の計算機システムは有効である。なお、Ｎが２である場合、図６のステップ６０４からの処理が実行される。
【０１３０】
図８は、本発明の実施形態の実行サーバ１０１−Ｎに移動するデータ１２５を、通信頻度を優先して決定する手順を示すフローチャートである。
【０１３１】
移動データ決定部１０８は、サーバスケールアウトのコマンド１３１を受信した後、アクセスパターン管理テーブル１１１のエントリのうち、異なる実行サーバ１０１に格納されているデータ１２５の組を実行サーバ１０１−Ｎに移動することを決定する（８０１）。
【０１３２】
図８に示す処理は、特にＮが３などの少ない値である場合、実行サーバ１０１間の負荷の平準化と、通信頻度の低減とを図ることができる。このため、図６に示す処理と、図８に示す処理とは、実行サーバ１０１の数に従って実行されてもよい。
【０１３３】
本実施形態によれば、管理者等の要求に従って、実行サーバ１０１間の負荷の平準化、通信頻度の削減、又は、その両方を行うことができる。また、通信頻度の削減に際し、連携ジョブによって処理される頻度が多いデータ１２５の組、又は、連続して処理される頻度が多いデータ１２５の組を抽出し、実行サーバ１０１−Ｎに追加することを決定するため、より効率的に通信頻度を低減することができる。
【符号の説明】
【０１３４】
１００  スケジューラサーバ
１０１（１０１−１、１０１−２、１０１−（Ｎ−１）、１０１−Ｎ）  実行サーバ
１０２  ネットワーク
１０３  リクエスト解析部
１０４  実行サーバ決定部
１０５  リクエスト送受信部
１０６  アクセスパターン分析部
１０８  移動データ決定部
１０９  ジョブ・データ配置テーブル
１１０  データ利用頻度テーブル
１１１  アクセスパターン管理テーブル
１１２  ＣＰＵ
１１３  実行サーバ負荷リスト
１２０  リクエスト送受信部
１２１  入金ジョブ
１２２  出金ジョブ
１２３  データ送受信部
１２５  データ
１２６  ＣＰＵ
１３０  ジョブの実行要求
１３１  サーバスケールアウトのコマンド
【図１】
0005388134.tif 000002
【図２】
0005388134.tif 000003
【図３】
0005388134.tif 000004
【図４】
0005388134.tif 000005
【図５】
0005388134.tif 000006
【図６】
0005388134.tif 000007
【図７】
0005388134.tif 000008
【図８】
0005388134.tif 000009