(57)【要約】      （修正有）【課題】複数のノードで並行処理などの多重化処理を実行するシステムにおいて、バッチ処理における突発的な処理データ量の増加に対応出来、証券取引などで、特定日に突然取引件数が増加し、データ処理量が増加する場合に対応出来るように、日々の変動が発生してもバッチ処理時間を均一にする。【解決手段】バッチジョブを複数のノードにおいて実行される際に、ジョブ管理ノード１０２は、ジョブ実行ノード１０３、１０４、１０５の状況（ノードの性能および負荷状況）やバッチジョブの入力ファイルの状況に基づいて多重度を設定し、バッチジョブを多重化処理する。【選択図】図１
2011028464.tif 000002
【特許請求の範囲】
【請求項１】
分散配置された複数のノードを用いたバッチジョブの実行におけるジョブの実行多重度決定を行うバッチ処理多重化方法において、
前記バッチジョブを構成するジョブグループごとに実行するノードグループの選択を利用者から受け付け、
選択されたノードグループを構成するノードの状況もしくは前記バッチジョブの入力ファイル状況を検知し、
前記された前記ノードの状況もしくは前記バッチジョブの入力ファイル状況を用いて、前記バッチジョブを処理する前記ノードグループを構成するノードの数を示す実行多重度数を決定し、
決定された前記実行多重度数に従った数のノードを、前記ノードグループから選択し、
選択された前記ノードにおいて前記バッチジョブを多重化処理することを特徴とするバッチ処理多重化方法。
【請求項２】
請求項１に記載のバッチ処理多重化方法において、
前記ノードの状況は、前記ノードの性能および負荷状況であることを特徴とするのバッチ処理多重化方法。
【請求項３】
請求項２に記載のバッチ処理多重化方法において、
前記多重度数の決定は、前記利用者により選択された多重度決定方式を用いて、前記実行多重度数を決定することを特徴とするバッチ処理多重化方法。
【請求項４】
請求項３に記載のバッチ処理多重化方法において、
前記多重度決定方式は、前記ノードの性能および負荷状況から最適な多重度を計算するサブジョブ同期方式と前記バッチジョブのファイルの配置から最適な多重度を決定するサブジョブ並列方式のいずれか一方が前記利用者から選択され、
前記実行多重度数の決定を、選択された多重度決定方法に従って実行することを特徴とするバッチ処理多重化方法。
【請求項５】
請求項４に記載のバッチ処理多重化方法において、
前記サブジョブ同期方式が選択された場合、前記実行多重度数の決定を、仮多重度を仮定し、仮定された前記仮多重度に基づいて多重度を決定することを特徴とするバッチ処理多重化方法。
【請求項６】
請求項４または５のいずれかに記載のバッチ処理多重化方法において、
前記サブジョブ並列方式における多重度は入力ファイルの分割数と同値であり、前記入力ファイルが配置されているノード上で当該ファイルを処理するジョブを実行することを特徴とするバッチ処理多重化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、いわゆるバッチ処理を効率的に行う技術に関する。その中でも特に、口座バッチ等の大量データに対するバッチ処理を高速に実行するため、複数のノードを利用してバッチジョブを並列実行する際の最適な処理の多重度を決定する技術に関する。
【背景技術】
【０００２】
従来、バッチジョブの実行については、特許文献1に開示される技術が提案されている。特許文献1においては、ジョブの実行順序が定義されたジョブネットに関するスクリプトデータの入力を受け付け、前記スクリプトデータに基づいて、前期ジョブネットの実行に利用する資源ノードの割当要求を前期ジョブネットごとに行うことにより、当該割当要求に応じて割り当てられた資源ノードを前期ジョブネットごとに割り振ることが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2008-226181号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
バッチ処理においては、突発的に処理すべきデータ量が増加する場合が存在する。例えば、証券業界のシステムの課題として、投資信託の月末再投資処理で特定日に全口座の処理が必要となる、経済状況によりある日突然株式売買件数が増える、IPO(新規株式公開)の集中により売買件数が増えるといった事によりバッチ処理時間が増えるといった課題があり、その結果、日々のバッチ処理量の激しい変動に伴うバッチ処理の長時間化による翌日オンライン開始時間の遅延により、顧客に対してのオンラインサービス提供時間の縮小に繋がる事や、長時間化したバッチ処理と同一ノード内で同時実行している他業務のバッチ処理等の処理時間にも影響を与え、結果、他業務のオンライン開始も遅延する事といった課題がある為、日々の変動が発生してもバッチ処理時間を均一で終わらせる事が必要となる。
【課題を解決するための手段】
【０００５】
上述した問題を解決する為、本発明では、バッチジョブを複数のノードにおいて実行する際に、その並行処理含む処理の多重度を動的に設定するものである。これにより、本発明では、実行多重度及び実行ノードを柔軟に設定し、リソースを有効活用する事でバッチ処理時間を短縮するしくみを提供する。特定日などでのバッチ処理件数の増加時においても、バッチ処理をスケールアウトして処理を行う事で、処理件数の変動に問わず処理時間を均一にする（近付ける）事が可能となる。これにより、特定日の大量データのバッチ処理によるバッチ処理時間の長時間化による翌日オンライン開始遅延等の懸念を前もって取り除く事が可能となる。
【０００６】
また、バッチ処理においては、各々処理の特性があり、CPUリソースを必要とするバッチ処理、ディスクリソースを必要とバッチ処理がある為、本発明においては利用者がジョブグループごとにパラメータを設定することで、実行多重度の決定方式を2種類から選択することができ、実行するジョブの種類や入力データの配置に応じて最適な方式でジョブの実行多重度を決定することを可能とし、よりバッチ時間の短縮を可能とする仕組みを提供する。
【発明の効果】
【０００７】
本発明によれば、より効率的にバッチ処理を実行することが可能になる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態における構成機器の全体構成を示した図である。
【図２】ジョブ管理ノード上のノード管理テーブルの内容を示した図である。
【図３】ジョブ管理ノード上のサブジョブ管理テーブルの内容を示した図である。
【図４】ジョブ管理ノード上のジョブ管理テーブルの内容を示した図である。
【図５】ジョブ管理ノード上のデータ配置情報テーブルの内容を示した図である。
【図６】ジョブ管理ノード上のジョブグループ実行条件テーブルの内容を示した図である。
【図７】ジョブ管理ノード上のジョブグループ実行ノードグループテーブルの内容を示した図である。
【図８】本発明の一実施形態におけるジョブ実行のフローを示した図である。
【図９】サブジョブ同期方式を用いた場合の多重度決定のフローを示した図の前半である。
【図１０】サブジョブ同期方式を用いた場合の多重度決定のフローを示した図の後半である。
【図１１】サブジョブ並列方式を用いた場合の多重度決定のフローを示した図である。
【発明を実施するための形態】
【０００９】
添付図面を参照し、本発明を実施するための形態について詳細に説明する。以下の実施の形態は例示であり、本発明は、下記の構成に限定されない。
【００１０】
なお、本説明では、便宜上、バッチ処理プロセス１つに対し、CPUコア数204を１つ割り当てる設定で記述するが、物理的なCPUコア数に依存するものではなく、ノード201に対しての処理多重度数（CPUコア数201）を任意に設定する事が可能である。マルチスレッド等のように複数スレッドになる場合や、ハイパースレッドを使用するような場合においても状況に応じて任意に設定可能となる。
【００１１】
図1に、本発明の一実施形態におけるシステム全体の構成を示す。本発明の実施におけるシステムは、クライアントノード101、ジョブ管理ノード102、ジョブ実行ノード103-105によって構成される。これらの構成機器は相互に疎通が可能な状態で接続されている。利用者はこれらの構成機器のうちクライアントノード101を通じて、システムに対しての設定を行うことが可能である。具体的には、ジョブグループ実行条件テーブル110の最小多重度242、最大多重度243、処理対象データの開始キー244、終了キー245、実行オプション246の指定を利用者が行うことが可能である。この場合、利用者によるクライアントノード101を通じた設定の手段は問わない。
【００１２】
次にフローチャート（図8〜図11）を参照し、本発明の実施における処理の流れを説明する。
【００１３】
まず、ジョブ実行開始前の段階で、ジョブ管理ノード102上のノード管理テーブル109、ジョブ管理テーブル108、データ配置情報テーブル114、ジョブグループ実行条件テーブル110、ジョブグループ実行ノードグループテーブル114の各パラメータには値が設定されている。ここで、パラメータの形式、設定方法及び配置場所は問わない。
【００１４】
時刻起動などジョブグループの開始条件が満たされると、ジョブ管理ノード102上でジョブ管理部106がジョブグループを起動開始する（ステップ301）。このときのジョブグループの開始条件は従来のジョブの開始条件と同様であり、その種類として時刻起動、ログ・イベント監視、先行ジョブ、ファイル作成、手動機能などがある。本実施形態においては、開始条件の種類は問わない。
【００１５】
いずれかの開始条件によってジョブの起動が開始すると、ジョブ管理ノード102上のジョブ管理部106がジョブグループ実行条件テーブル110から、ジョブグループの最小多重度242・最大多重度243と処理対象データの開始キー244、終了キー245、実行オプション246を取得する（ステップ302）。
【００１６】
次に、ジョブ管理部106がジョブグループ実行ノードグループテーブル114から、開始したジョブグループ251に対応するノードグループ252の情報を取得する（ステップ303）。
【００１７】
次に、ジョブ管理部106がノード多重度計算部107にジョブグループの最小多重度242、最大多重度243、処理対象データの開始キー244、終了キー245、実行するノードグループ252の情報を引き渡し、ジョブ多重度計算部107がジョブ実行時の多重度の計算を行う（ステップ304）。ノード多重度計算部107は、ジョブ管理部106より引き渡された実行オプション246によって、ジョブグループの多重度の決定方式がサブジョブ同期方式とサブジョブ並列方式のどちらであるかを決定する（ステップ305）。
【００１８】
続いて、サブジョブ同期方式とサブジョブ並列方式それぞれにおける、ジョブ実行多重度の決定方式について説明する。
【００１９】
まず、サブジョブ同期方式における多重度決定の処理について説明する。サブジョブ同期方式は、各ジョブ実行ノード103-105のCPU負荷状況に応じ処理多重度を決定することで、最適な多重度でジョブを実行する方式である。サブジョブ同期方式ではまず仮多重度が決定され、仮多重度を基に、最終的な多重度が決定される。仮多重度はジョブグループ実行条件テーブル110の最小多重度242と最大多重度243の範囲の中で、空きコア数のうちもっとも多くのコア数を占有（利用）する多重度である。仮多重度を基に算出する多重度は、それぞれのジョブ実行ノード103-105の性能を考慮に入れたうえで算出する、CPUリソースを最も効率的に使用するための最終的な多重度である。多重度決定の前に一度仮多重度を決定することで、各多重度における処理性能を算出することなく最適な多重度を求めることが可能になり、多重度算出処理の短縮化が実現される。
【００２０】
ジョブ管理ノード102のノード多重度計算部107が計算を開始すると（ステップ313）、ジョブグループ実行条件テーブル110の最大多重度243と、ノード管理テーブル109の空きコア数206の合計を比較する（ステップ315）。比較の結果、空きコア数206の合計が最大多重度243以上である場合、ノード管理テーブル109の性能比が高いノードを優先に最大多重度分空きコアを占有する。この場合、空きコア数206の合計が仮多重度となる（ステップ316）。
【００２１】
空きコア数206の合計よりも最大多重度243の方が大きい場合、ジョブグループ実行条件テーブル110の最小多重度242とノード管理テーブル109の空きコア数206の合計を比較する（ステップ318）。この比較の結果、最小多重度242が空きコア数206の合計以下である場合、空きコア分をそれぞれ占有し、空きコア数206が仮多重度となる（ステップ317）。最小多重度242が空きコア数206の合計よりも大きい場合、空いているコアを占有し、ノード管理テーブル201の性能比が大きいノードを優先に、最小多重度分1ノードに対して1多重度ずつ割り当てる（ステップ320）。この場合、仮多重度は最小多重度と同一の値となる。
【００２２】
空きコア数が0の場合は、ノード多重度計算部107がノード管理テーブル201のCPU割当方法を参照し、各ノードに設定されている割当方法に従ってCPUの割当を行う（ステップ321）。CPU割当方法が「他ノード」の場合は、他ノードに割り当てを行う（ステップ321）。CPU割当方法が「待機」の場合は、空きコア数が1以上になるまで待機する（ステップ320）。この場合、当該時点でCPUを占有しているジョブの実行には影響を与えず、先行ジョブがCPUを開放し空きコアが発生するまで待機する。
【００２３】
この時点で、ノード多重度計算部107は仮多重度を決定する（ステップ322）。仮多重度を決定すると、ノード多重度計算部107は仮多重度を基に多重度を決定するための処理を開始する。
【００２４】
まず、仮多重度が最大多重度243と一致するかどうかの判断を行う（ステップ323）。仮多重度が最大多重度243と一致しない場合、仮多重度+1の多重度で処理量を計算する（ステップ325）。この処理量とは、ノード管理テーブル201上の性能比203とCPUコア数204の数値より算出される、各ノードの処理性能を表す指数である。同じジョブを処理する場合、処理量の大きなノードで処理を行う方が、処理時間は短縮される。
【００２５】
空きコア数がマイナスの場合、すなわち空きコア数の合計がジョブの数を下回る場合は、（空きコア数/ジョブ数）という計算を行い、計算の結果を処理量とする（ステップ324）。
【００２６】
処理量を算出した後、仮多重度の処理量と仮多重度+1の処理量を比較する（ステップ326）。仮多重度+1の処理量のほうが大きい場合は、仮多重度に+1し、再び仮多重度が最大多重度と一致するかどうかの判断を行う（ステップ325）。このような処理を行うことで、仮多重度の値を最大多重度以下の範囲でどこまで増加させるかを決定する。
【００２７】
同様のアルゴリズムを用いて、仮多重度の数値を最小多重度以上の範囲でどこまで低下させるかの判断を行う。このとき、仮多重度と仮多重度-１の処理量を比較し（ステップ330）、仮多重度-１の処理量が上回った場合は、仮多重度に-1（仮多重度から１マイナスする）をする（ステップ329）。
【００２８】
上記のアルゴリズムに従って仮多重度の数値を調整することで、最も多くの処理量を処理できる多重度を算出し、（最終的な）多重度として決定する（ステップ331）。なお、ここでの多重度としては、最も多く、ではなく、2番目に多いなどとしても構わない。
【００２９】
以上の方法で多重度を決定した後、ノード多重度計算部107はジョブ管理部106に多重度の情報を送る。
【００３０】
サブジョブ同期方式では、各ジョブ実行ノード103-105のCPU使用状況に応じて処理多重度を算出することで、最適な多重度でジョブを実行する方式を提供する。
【００３１】
次に、サブジョブ並列方式における多重度決定の処理について説明する。サブジョブ並列方式は、ジョブの入力ファイルが配置されているノードを認識し、ファイルが配置されているノードでジョブを実行することで、極力通信負荷の少ない状態でジョブを実行する方式を提供する。なお、ここで入力ファイルの配置形式及び配置場所は問わない。
【００３２】
ノード多重度計算部107がサブジョブ並列方式で多重度計算を開始すると、データ配置情報テーブル112を参照し、実行するジョブの入力ファイルの分割数を取得する（ステップ332）。この分割数が、ジョブ実行の多重度となる（ステップ333）。このとき、各ジョブを実行するノードは処理対象のデータが配置されているノードと一致させる。たとえば、キー#1から#100のファイルが配置されているノードでは、キー#1から#100のファイルを対象に処理を行うジョブを実行する。
【００３３】
サブジョブ並列方式では、処理対象のファイルの配置されているノード上で、そのファイルに対し処理を行うジョブを実行する。これにより、別のノードのファイルに対し処理を行う必要がなくなり、ジョブ実行の際の通信負荷を軽減することが可能となる。
【００３４】
多重度を決定すると、ジョブ管理部106がノード多重度計算部107から各サブジョブの実行情報を取得し、サブジョブ管理テーブル113を作成する（ステップ308）。
【００３５】
ジョブ管理ノード102のジョブ実行指示部111が、サブジョブ管理テーブル202を基に、各ジョブ実行ノード103-105に対しジョブ実行の指示を行う（ステップ309）。実行の指示を受けた各ジョブ実行ノード103-105は、引き渡されたジョブ実行指示に基づきジョブを実行する（ステップ310）。
【００３６】
ジョブの実行が終了すると、ジョブ管理部106がサブジョブ管理テーブル202上の各サブジョブの実行ステータスを更新する（ステップ311）。
【符号の説明】
【００３７】
101・・・クライアントノード101、102・・・ジョブ管理ノード102、103〜105・・・ジョブ実行ノード
【図１】
2011028464.tif 000003
【図２】
2011028464.tif 000004
【図３】
2011028464.tif 000005
【図４】
2011028464.tif 000006
【図５】
2011028464.tif 000007
【図６】
2011028464.tif 000008
【図７】
2011028464.tif 000009
【図８】
2011028464.tif 000010
【図９】
2011028464.tif 000011
【図１０】
2011028464.tif 000012
【図１１】
2011028464.tif 000013