(57)【特許請求の範囲】
【請求項１】
コンピューティングシステムにおいてバッチジョブを実行するときデータステージングを管理する方法であって、各々のバッチジョブについて、
データステージインのための少なくとも１つのソースファイル及びデータステージアウトのための少なくとも１つの目標ファイルを識別するステップと、
データステージイン及びデータステージアウトで転送されるべきデータの量を決定し、前記のデータ転送を完了するための所要時間を推定するステップと、
前記バッチジョブの第１のデータステージング処理として、前記の推定した所要時間を閾値と比較することにより非同期又は同期データステージインを設定し、前記バッチジョブの第２のデータステージング処理として、非同期データステージアウトを設定するステップと、
前記ソースファイルからのデータステージインを実行し、前記データステージインを完了するための残り時間が前記閾値の範囲内になると、前記バッチジョブを実行するためにリソースを割り当てるステップと、
前記バッチジョブを実行して結果を生成するステップと、
前記目標ファイルへの前記結果のデータステージアウトを実行するステップと、
を有する方法。
【請求項２】
前記方法は、前記設定するステップの後に、
データステージインの前記推定した所要時間を第２の閾値と更に比較することにより、前記第１のデータステージング処理を非同期短期又は非同期長期データステージインとして分類するステップと、
前記非同期短期データステージインとして分類されたデータステージング処理をデータステージングリストの中で非同期短期データステージングとして１列に並べるステップと、
前記非同期長期データステージインとして分類されたデータステージング処理を前記データステージングリストの中で非同期長期データステージングとして１列に並べるステップと、
を更に有し、
前記生成するステップは、
前記データステージングリストに基づき、前記バッチジョブを実行して結果を生成する、請求項１に記載の方法。
【請求項３】
前記データステージングリストの中のデータステージング処理の予測時間の和、又は前記コンピューティングシステムの最大許容値のうちの大きい方を、データステージイン及び／又はデータステージアウトの最大時間として設定するステップと、
前記データステージングリストの中のデータステージング処理の予測時間の和を前記最大時間で除算することによりデータステージイン又はデータステージアウトの多重度を計算するステップと、
前記多重度に等しい数のデータステージング処理を有し、複数のバッチジョブのデータステージイン又はデータステージアウトを同時に実行するステップと、
を更に有する請求項２に記載の方法。
【請求項４】
前記設定するステップは、各データステージング処理及び各々の状態を記録するデータステージング管理テーブルを形成するステップを有する、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
データステージインを実行している間、前記ソースファイルがデータステージインの開始から変更されたか否かを調べ、変更された場合、追加データステージング処理として前記テーブルにインクリメンタルデータステージインを設定するステップ、
を更に有する請求項４に記載の方法。
【請求項６】
前記データステージング管理テーブルは、データステージング処理の各々について、
前記データステージング処理が設定される前記バッチジョブの識別子と、
前記データステージング処理がデータステージインかデータステージアウトかの指示と、
場合によっては各々のソースファイル又は目標ファイルの位置と、
転送されるべきデータの量と、
を含む初期情報を有する、請求項４又は５に記載の方法。
【請求項７】
前記初期情報は、前記識別するステップ及び推定するステップを実行するためにバッチジョブスクリプトを分析することにより得られる、請求項６に記載の方法。
【請求項８】
前記データステージング管理テーブルは、データステージング処理の各々について、
前記データステージング処理がインクリメンタルデータステージインか否かの指示と、
前記データステージング処理が開始していない、実行中である、又は完了したかと、
データステージング処理の開始時間と、
データステージング処理の終了時間と、
今までに転送されたデータ量及び／又は転送されるべき残りデータ量と、
前記データステージング処理のための前記推定した所要時間と、
を含む更なる情報を有する、請求項６に記載の方法。
【請求項９】
前記データステージング管理テーブルに基づき、複数のバッチジョブのデータステージイン又はデータステージアウトをスケジューリングするためにデータステージングリストを構築するステップと、
を更に有する請求項４乃至８のいずれか一項に記載の方法。
【請求項１０】
バッチジョブを実行するコンピュータシステムにおいてデータステージングを管理するデータステージングマネジャであって、前記データステージングマネジャは、各々のバッチジョブについて、
データステージインのための少なくとも１つのソースファイル及びデータステージアウトのための少なくとも１つの目標ファイルを識別し、
データステージイン及びデータステージアウトで転送されるべきデータの量を決定し、前記のデータ転送を完了するための所要時間を推定し、
前記バッチジョブの第１のデータステージング処理として、前記の推定した所要時間を閾値と比較することにより非同期又は同期データステージインを設定し、前記バッチジョブの第２のデータステージング処理として、非同期データステージアウトを設定し、
前記ソースファイルからのデータステージインを実行し、前記データステージインを完了するための残り時間が前記閾値の範囲内になると、
前記バッチジョブへのリソースを割り当て及び前記バッチジョブの実行を開始するために、前記コンピュータシステムのジョブスケジューラと通信し、
前記バッチジョブを実行して結果を生成し、
前記目標ファイルへの前記結果のデータステージアウトを実行する、
よう構成されるデータステージングマネジャ。
【請求項１１】
前記コンピュータシステムの前記ジョブスケジューラにインストールされたプリプロセッサ及びポストプロセッサに結合されるデータステージング管理サーバを有し、前記プリプロセッサは前記ジョブスケジューラにより受信されたバッチジョブスクリプトを分析するよう構成される、請求項１０に記載のデータステージングマネジャ。
【請求項１２】
前記データステージング管理サーバは、データステージング管理テーブルを有し、該データステージング管理テーブルは、データステージング処理の各々について、
前記データステージング処理が設定される前記バッチジョブの識別子と、
前記データステージング処理がデータステージインか又はデータステージアウトかの指示と、
場合によっては、各々のソースファイル又は目標ファイルの位置と、
転送すべきデータ量と、
前記データステージング処理がインクリメンタルデータステージインか否かの指示と、
前記データステージング処理が開始していない、実行中である、又は完了したかと、
データステージング処理の開始時間と、
データステージング処理の終了時間と、
今までに転送されたデータの量及び／又は転送されるべき残りデータ量と、
前記推定した所要時間と、
を記録する、請求項１１に記載のデータステージングマネジャ。
【請求項１３】
コンピュータシステムの中のサーバにより実行されると、請求項１乃至９のいずれか一項に記載の方法を実行するコンピュータ可読命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に必ずしも排他的ではないが、高性能コンピューティング（high−performance  computing：ＨＰＣ）システムにおける一時記憶と永久記憶との間のデータステージング（data  staging）に関する。より詳細には、本発明は、データステージング管理システム、及びコンピュータシステムにおけるデータステージングを管理する方法を提供する。
【背景技術】
【０００２】
ＨＰＣシステム又はクラスタは、様々な分野のコンピュータシミュレーションのために今日広く用いられている。しかしながら、実行されるべきアプリケーション（又は「ジョブ」）を有するエンドユーザは、必要なコンピューティングリソース（ここで、「リソース」はＣＰＵ、コア、メモリ、等を示す）を取得するために長時間待たなければならない場合が多い。これは、コンピューティングリソースが効率的に使用されないことを意味する。この課題を引き起こす主な問題の１つは、「データステージング」と呼ばれる処理である。
【０００３】
バッチジョブ実行は、ＨＰＣシステムで用いられる場合が多い。バッチジョブは、ユーザとシステムとの間で僅かな又は殆ど相互作用を必要としない所定の処理動作群を有する。ジョブは、ユーザにより提出されると、キューに置かれる。キューでは、ジョブは、システムが該ジョブを処理する準備ができるまで待機する。ジョブキューは、多くのジョブを有し得る。各々の特定のジョブは、システムが前に提出された又はより高い優先度を有するジョブを処理し終わるまで待機させられる。ユーザ相互作用は必要ないので、バッチジョブは、稼働時間の間に累積され、実行は夜間に行われ得る。この形式の実行は、ユーザがシステムと相互作用しユーザ要求がリアルタイムに行われる「対話式ジョブ」と対照的である。
【０００４】
ＨＰＣクラスタ環境におけるジョブ実行では、ジョブが実行を開始する前に、永久記憶領域からＩ／Ｏ速度が非常に速い一時記憶へ入力データを転送することが慣例である。このような入力データ転送と同様に、ジョブが終了した後に、一時記憶から永久記憶領域へ出力データを転送することも一般的である。このデータ転送処理は、高性能コンピューティング分野では「データステージング」と呼ばれる。入力及び出力データステージングは、「ステージイン」及び「ステージアウト」とそれぞれ表される。
【０００５】
図１は、データステージングを用いるＨＰＣシステムのシステム概要を示す。エンドユーザのワークステーション１は、ネットワーク５を介してＨＰＣシステム１０に接続される。ＨＰＣシステム１０は、ヘッドノード１１と、ジョブを実行する場合によっては膨大な数のコンピューティングノード１２と、を有する。シミュレーションモデルは通常多くの式の解を含むので、コンピューティングノード１２は、集合的に、実行されるべきシミュレーションタスクの「ソルバ」と呼ばれても良い。ワークステーション１は、システム１０の潜在的に非常に多数のユーザの単なる代表例である。
【０００６】
シミュレーションは、「ＩＳＶアプリケーション」と呼ばれる物理的現象の市販モデルの使用を含む場合が多い。ここで、ＩＳＶはIndependent  Software  Vendorの略である。製造会社及び研究所により使用されるこのようなＩＳＶアプリケーションの例は、ＭＳＣ、ＣＤ−Ａｄａｃｏ、及びＳＩＭＩＬＩＡを含む。
【０００７】
ＨＰＣシステム１０は、ネットワーク５を介して、自身のＩ／Ｏサーバ２１に備えられた一時記憶２０に、及びＩ／Ｏサーバ３１を有する永久記憶３０に、接続される。一時記憶２０は、通常、永久記憶３０と比べて、早く、小さな容量であり、ＨＰＣシステムによりローカルである。異なる記憶技術も含まれても良い。例えば、一時記憶２０は固体であっても良く、永久記憶３０は磁気ディスクを用いても良い２種類の記憶装置の間の転送は、図１の一点破線により示されるように、ヘッドノード１１からのコマンドにより開始され、Ｉ／Ｏサーバ２１及び３１により管理されても良い。
【０００８】
ヘッドノード１１は、ジョブスケジューラ１１０を有し、ユーザワークステーション１との及び必須ではないがコンピューティングノードのうちの１つを提供し得るＩ／Ｏサーバ２１及び３１との通信を担う。
【０００９】
通常、ジョブスケジューラ１１０は、バッチジョブのキューのジョブ実行順序と、各バッチジョブに関連するデータステージングと、の両方を管理する。同じバッチジョブに関連する１つより多い「データステージングジョブ」が存在し得る。特に、ステージインのための第１のデータステージングジョブと、ステージアウトのための第２のデータステージングジョブである。複数のバッチジョブは、必要なコンピューティングリソース及び利用可能なコンピューティングリソースに依存して、同時に実行されても良い。
【００１０】
先ず、ジョブスケジューラ１１０は、ジョブスケジューラ１１０とユーザワークステーション１との間の一点破線により示すように、ユーザワークステーション１からジョブ実行要求を受信し、ジョブをキューの中に置く。実行要求は、特に、ステージングのためのデータが見付かる永久記憶３０の中の少なくとも１つの目標データファイルを指定する「バッチジョブスクリプト」の形式を取る。次に、ジョブスケジューラは、コンピューティングノード１２の中でコンピューティングリソースの可用性の状態を調べる。記憶２０及び３０との間のデータステージングは、ジョブスケジューラからのコマンドにより、及び個々のＩ／Ｏサーバ２１及び３１により管理され、従来、指定されたコンピューティングリソ―スがジョブスケジューラ１１０の中でジョブに割り当てられた後にのみ、実行された。データフローは、図の左側の破線により示される。個々の記憶領域２２、３２、及び２３、３３は、入力（実行前）及び出力（実行後）段階の各々で定められても良い。次に、入力データの一時記憶２０へのステージインがエラー無しに完了した後にのみ、ステージインされたデータは、一時記憶２０からコンピューティングノード１２に供給され得る。ステージインは、ヘッドノード１１からの命令の下で実行される。データは、ジョブスケジューラ１１０により決定されたように、一時記憶２２からＩ／Ｏサーバ２１を介して、データを要求するコンピューティングノード１２へ直接転送される。次に、主ジョブは実行を開始する。
【００１１】
しかしながら、ソルバジョブ実行が多くの時間を要する前及び後に実行されたデータステージング処理は、コンピューティングリソースを殆どアイドルのままにしてしまう。これは、低いマシン効率をもたらし、電力を浪費してしまう。この種のデータステージングは、「同期」データステージングと呼ばれる。データステージングは必要なコンピューティングリソースを確保した後に実行されるので、Ｉ／Ｏ処理（ステージイン）のための時間は、目標データサイズが増大するにつれ、増大する。これは、コンピューティングリソースの非効率な使用をもたらす。Ｉ／Ｏ処理の占める時間は、ジョブが待ち行列に入れられて実行を待機する時間に加算されなければならない。Ｉ／Ｏ処理の間、上述のように、コンピューティングノードは、殆どアイドルである。
【００１２】
上述の問題を改善するために、所謂「非同期」データステージングが考案された。非同期データステージングでは、Ｉ／Ｏ処理の間のコンピューティングリソースの非効率な使用を低減するために、必要なコンピューティングリソースがジョブスケジューラにおいて提出されたジョブに割り当てられる前に、データステージングが独立して実行される。これは、ジョブが入力データのステージインのために使用されるために待ち行列に入れられる間、少なくともある程度の時間を可能にする。しかしながら、以下の問題が依然として存在する。
【００１３】
先ず、ユーザが実行されるべきジョブを待つ間、彼／彼女が入力データを変更する可能性がある。非同期データステージングの場合には、ユーザが入力データステージングの開始時間を知ることが困難なので、この待機期間中に入力データの変更は不可能である。第二に、入力データステージングが先入れ先出しアルゴリズムを用いてスケジューリングされる場合、データステージングに要する時間が増大し、ステージングデータの量が増大するにつれ、コンピューティングノードの割り当てが積み重なってしまう。これらの問題は、ステージイン及びステージアウトの両方で生じる。
【００１４】
シミュレーションモデルの洗練が進むにつれ、入力及び出力データの量は急速に増大している。結果として、ステージイン及びステージアウトに要する時間は、全体の実行時間の有意な割合を占め得る。その結果、一時記憶と永久記憶との間のより効率的なデータステージングメカニズムが必要である。
【発明の概要】
【００１５】
本発明の第１の態様によると、コンピューティングシステムにおいてバッチジョブを実行するときデータステージングを管理する方法であって、各々のバッチジョブについて、データステージインのための少なくとも１つのソースファイル及びデータステージアウトのための少なくとも１つの目標ファイルを識別するステップと、データステージイン及びデータステージアウトで転送されるべきデータの量を決定し、前記のデータ転送を完了するための所要時間を推定するステップと、前記バッチジョブの第１のデータステージング処理として、前記の推定した所要時間に基づき非同期又は同期データステージインを設定し、前記バッチジョブの第２のデータステージング処理として、非同期データステージアウトを設定するステップと、前記ソースファイルからのデータステージインを実行し、前記バッチジョブを実行するためにリソースを割り当てるステップと、前記バッチジョブを実行して結果を生成するステップと、前記目標ファイルへの前記結果のデータステージアウトを実行するステップと、を有する方法が提供される。
【００１６】
ここで参照される各々のデータステージング処理は、詳細な説明で言及される「データステージングジョブ」に対応する。
【００１７】
ここで、第１のデータステージング処理を同期又は非同期として設定するステップは、前記推定した時間を第１の閾値と比較することにより行うことができる。推定した時間が前記閾値の範囲内である場合、データステージインは同期として設定され、そうでない場合、非同期データステージインが設定される。いかなる場合にも、データステージアウトは、非同期に設定されることが望ましい。
【００１８】
望ましくは、非同期データステージング処理の短期又は長期への更なる分類は、次の通り行われる。データステージインの前記推定した所要時間に従って、前記第１のデータステージング処理を非同期短期又は非同期長期データステージインとして分類し、データステージアウトの前記推定した所要時間に従って、前記第２のデータステージング処理を非同期短期又は非同期長期データステージアウトとして分類する。より詳細には、各々の場合に前記推定した時間は、第２の閾値と比較されても良い。前記推定した時間が前記第２の閾値の範囲内である場合、短期が設定され、その他の場合、データステージング処理は長期として分類される。
【００１９】
望ましくは、リソースを割り当てる前記ステップは、前記データステージインを完了する前に実行される。つまり、データステージインを完了するために記推定した時間を知り、残りの所要時間が上述の前記第１の閾値より少なくなる場合、ジョブへのリソースの割り当てを開始することができる。
【００２０】
したがって、一態様では、本発明は、永久記憶と一時記憶とを有するコンピューティングシステムにおいてバッチジョブを実行するときデータステージングを管理する方法であって、前記データステージングは、データが前記永久記憶から前記一時記憶へ転送されるデータステージインと、データが前記一時記憶から前記永久記憶へ転送されるデータステージアウトと、を有し、前記方法は、バッチジョブの各々について、データステージインのための少なくとも１つのソースファイルと、データステージアウトのための少なくとも１つの目標ファイルと、を識別するステップと、データステージイン及びデータステージアウトで転送されるべきデータの量を決定し、前記のデータ転送を完了するための所要時間を推定するステップと、前記バッチジョブの第１のデータステージング処理として、前記推定した時間を前記閾値と比較することにより推定所要時間に基づき、非同期又は同期データステージインを設定するステップであって、前記推定した時間が前記閾値の範囲内である場合、前記データステージインは同期として設定され、そうでない場合、前記データステージインは非同期として設定される、ステップと、前記バッチジョブの第２のデータステージング処理として、非同期データステージアウトを設定するステップと、前記ソースファイルからのデータステージインを実行し、前記バッチジョブを実行するためにリソースを割り当てるステップと、前記バッチジョブを実行して結果を生成するステップと、前記目標ファイルへの前記結果のデータステージアウトを実行するステップと、を有し、リソースを割り当てる前記ステップは、前記データ転送を完了するための残り時間が前記閾値の範囲内になると、実行される、方法を提供する。
【００２１】
前記方法は、前記データステージイン及び／又は前記データステージアウトのために許容される最大時間を設定するステップと、前記最大時間に基づきデータステージイン及び／又はデータステージアウトの多重度を計算するステップと、前記多重度に等しい数のデータステージング処理を有し、複数のバッチジョブのデータステージイン又はデータステージアウトを同時に実行するステップと、を更に有しても良い。
【００２２】
ここで、前記計算するステップは、前記最大時間を、複数のバッチジョブのデータステージング処理の前記推定した時間の合計により除算するステップを有しても良い。結果は、多重度である整数に達するように切り上げられても良い。この整数が多重度である。
【００２３】
上述のいずれかの方法において、前記設定するステップは、各データステージング処理及び各々の状態を記録するデータステージング管理テーブルを形成するステップを有しても良い。
【００２４】
上述の各データステージング処理は、「初期」データステージング処理と称されても良い。しかしながら、望ましくは、前記方法は、データステージインを実行している間、前記ソースファイルがデータステージインの開始から変更されたか否かを調べ、変更された場合、追加データステージング処理として前記テーブルに「インクリメンタル」データステージインを設定するステップ、を更に有する。
【００２５】
前記データステージング管理テーブルは、データステージング処理の各々について、前記データステージング管理が設定される前記バッチジョブの識別子と、前記データステージング処理がデータステージインかデータステージアウトかの指示と、場合によっては各々のソースファイル又は目標ファイルの位置と、転送されるべきデータの量と、を含む初期情報を入力されても良い。
【００２６】
ここで、前記初期情報は、前記識別するステップ及び推定するステップを実行するためにバッチジョブスクリプトを分析することにより得られる。
【００２７】
前記データステージング管理テーブルは、データステージング処理の各々について、前記データステージング処理がインクリメンタルデータステージインか否かの指示と、前記データステージング処理が開始していない、実行中である、又は完了したかと、データステージング処理の開始時間と、データステージング処理の終了時間と、今までに転送されたデータ量又は転送されるべき残りデータ量と、前記データステージング処理のための前記推定した所要時間と、のような情報を更に有しても良い。
【００２８】
前記推定した時間は、データ転送を完了するための期待残り時間を示すために、データステージング処理が進むにつれ減算されても良い。
【００２９】
前記方法は、前記データステージング管理テーブルに基づき、複数のバッチジョブのデータステージイン又はデータステージアウトをスケジューリングするためにデータステージングリストを構築するステップと、を更に有しても良い。
【００３０】
本発明の第２の態様によると、バッチジョブを実行するコンピュータシステムにおいてデータステージングを管理するデータステージングマネジャであって、前記データステージングマネジャは、各々のバッチジョブについて、データステージインのための少なくとも１つのソースファイル及びデータステージアウトのための少なくとも１つの目標ファイルを識別し、データステージイン及びデータステージアウトで転送されるべきデータの量を決定し、前記のデータ転送を完了するための所要時間を推定し、前記バッチジョブの第１のデータステージング処理として、前記の推定した所要時間に基づき非同期又は同期データステージインを設定し、前記バッチジョブの第２のデータステージング処理として、非同期データステージアウトを設定し、前記ソースファイルからのデータステージインを実行し、前記バッチジョブへのリソースを割り当て前記バッチジョブを実行させるために、前記コンピュータシステムのジョブスケジューラと通信し、前記バッチジョブが実行された後に、前記目標ファイルへの前記結果のデータステージアウトを実行する、よう構成されるデータステージングマネジャが提供される。
【００３１】
前記データステージングマネジャは、望ましくは、前記コンピュータシステムの前記ジョブスケジューラにインストールされたプリプロセッサ及びポストプロセッサに結合されるデータステージング管理サーバを有し、前記プリプロセッサは前記ジョブスケジューラにより受信されたバッチジョブスクリプトを分析するよう構成される。前記データステージング管理サーバは、前記データステージイン又はステージアウトを（場合によっては別個のデータステージングプログラムと連携して）実行するために「開始プログラム」と呼ばれる種々のプロセスを実行しても良い。
【００３２】
更に望ましくは、前記データステージング管理サーバは、データステージング管理テーブルを有し、該データステージング管理テーブルは、データステージング処理の各々について、前記データステージング処理が設定される前記バッチジョブの識別子と、前記データステージング処理がデータステージインか又はデータステージアウトかの指示と、場合によっては、各々のソースファイル又は目標ファイルの位置と、転送すべきデータ量と、前記データステージング処理がインクリメンタルデータステージインか否かの指示と、前記データステージング処理が開始していない、実行中である、又は完了したかと、開始された場合にデータステージング処理の開始時間と、完了した場合にデータステージング処理の終了時間と、今までに転送されたデータの量及び／又は転送されるべき残りデータ量と、前記推定した所要時間と、を記録する。
【００３３】
本発明の第３の態様によると、コンピューティングシステムの中のサーバにより実行されると、上述のいずれかの方法を実行するコンピュータ可読命令を有するコンピュータプログラムが提供される。
【００３４】
このようなコンピュータプログラムは、１又は複数の過渡的コンピュータ可読記録媒体の形式で、又はダウンロード可能な信号として、又は任意の他の形式で提供されても良い。
【００３５】
したがって、本発明の実施形態は、低いマシン効率を改善するデータステージング管理システム（data  staging  management  system：ＤＳＭＳ）を提供し、入力及び出力データをコピーする前若しくは後処理と計算とを分離して、リソース使用率を向上する。コンピューティングリソース割り当て及びデータステージングは、ジョブ状態情報を参照して行われる。
【００３６】
より具体的には、纏めると、本発明の実施形態は、ＨＰＣシステムにおいてバッチジョブを実行するとき、データステージング技術を提供し、同期及び非同期データステージング処理を結合する。データステージインのための少なくとも１つのソースファイル（目標データファイル）、及びデータステージアウトのための目標ファイルは、バッチジョブスクリプトを分析することにより識別される。ファイルに含まれるデータの量から、データステージイン及びデータステージアウトのために必要な時間が推定される。データステージインは、推定した時間に基づき非同期又は同期として設定され、データステージアウトは非同期として扱われる。各非同期データステージング処理は、更に、推定所要時間に依存して短期又は長期として分類される。データステージインはソースファイルから実行される、データステージインが完了するのを待たずに、バッチジョブを実行するためにリソースが割り当てられる。バッチジョブが実行されて結果が生成される。そして、データステージアウトが実行されて、結果を目標ファイルへ転送する。
【図面の簡単な説明】
【００３７】
【図１】従来知られているデータステージングを用いるコンピューティングシステムのシステム概要を示す。
【図２】本発明を具現化するコンピューティングシステムのシステム概要を示す。
【図３】本発明の一実施形態で用いられるデータステージング処理の分類を示す。
【図４】一実施形態におけるデータステージイン処理を示す。
【図５】一実施形態におけるデータステージアウト処理を示す。
【図６】一実施形態におけるデータステージインを分類する処理のステップのフローチャートである。
【図７】一実施形態で用いられるデータステージング管理テーブルの一例を示す。
【図８】２つのデータステージングジョブの間の配置を示す。
【発明を実施するための形態】
【００３８】
導入で言及したように、入力データステージングが実行されるとき、コンピューティングリソースは、計算に使用されていなくても、対応するジョブのために予約される。後続のジョブが比較的緩やかなデータステージング要件を有する場合でも、キューの中の後続のジョブは、前のジョブがそのデータステージングを完了するのを待たなければならない。これは、占有されるリソースを殆どアイドルにし、低リソース使用率をもたらす。また、出力データステージングで、同じ状況が生じる。転送されるデータの量が膨大なので、ジョブが実行を開始する前に長時間を要し、占有されるリソースは、データステージングが完了するまでジョブにより保持される。この問題を解決するために、本発明の実施形態は、コンピューティングリソースの非効率な使用を回避するために同期及び非同期データステージングを結合するソリューションを提供する。
【００３９】
前述のように、ジョブスケジューラは、従来、コンピューティングリソースをジョブのために確保し、ジョブ実行順序を管理するために用いられていた。しかしながら、既存のジョブスケジューラは、バッチジョブ実行のために必要なデータステージング処理を制御しない。これは、ジョブスケジューラの範囲外であるためである。発明者等は、ジョブスケジューラが総合的にコンピューティングリソースの可用性に従ってデータステージング処理を制御可能であることが望ましいことを理解している。したがって、本発明の一実施形態の特徴は、効率的リソース割り当て及びエンドユーザの便宜を向上するために、ジョブスケジューラに結合されるデータステージング管理システムである。
【００４０】
特定の実施形態は、単なる例として図２〜８を参照して説明される。
【００４１】
図２は、システム概要を示す。図１の要素に対応する部分は、同じ参照符号を有する。新たに追加されたコンポーネントは、白ラベルと共に黒で示される。最も顕著なのは、データステージング管理サーバ４０が、追加でネットワーク５に接続され、データステージング管理システム又はＤＳＭＳ４２と、データステージング管理テーブル４４と、ステージングリスト４６と、を有することである。以降で、ＤＳＭＳへの言及は、必要に応じてステージング状態テーブル４４及びステージングリスト４６を用いて、データステージング管理サーバ４０の中で実行される動作を意味する。ＤＳＭＳ４２は、一時的及び永久記憶２０及び３０に、又はより詳細にはＩ／Ｏサーバ２１及び３１に、直接コマンドを発行できる。
【００４２】
さらに、ヘッドノード１１の中のジョブスケジューラ１１０は、新たに、後述するようにＤＳＭＳ４２と通信するよう配置されるプリプロセッサ１１０ａとポストプロセッサ１１０ｂとを備えられる。
【００４３】
サーバ４０で実行しているＤＳＭＳ４２の１つのタスクは、データステージイン及びステージアウトを非同期／同期、及び短期／長期カテゴリに分類する。図示しないが、ＤＳＭＳ４２は、内部及び外部ステージイン開始プログラムと、内部及び外部ステージアウト開始プログラムと、の両者を、管理サーバ４０で動作するプログラムとして有する。
【００４４】
図３は、本実施形態に定められるデータステージング処理の分類を示す。データステージイン処理は、実行されるタイミングに依存して、「非同期データステージイン」又は「同期データステージイン」として分類される。さらに、「非同期データステージイン」は、予測されるデータステージング期間に従って、「非同期長期データステージイン」又は「非同期短期データステージイン」として分類される。ここで、「短期」及び「長期」は、データが一時記憶にどれくらい長く残っているかではなく、データ転送がどれくらい長くかかるかに関連する。つまり、「短期」は比較的短い期間のデータステージングを表し、「長期」は長時間を要するデータステージングを表す。
【００４５】
データステージング処理の予測時間（単位：秒）は、ステージングデータの量（単位：バイト）をステージング速度（単位：バイト毎秒）で割ったものとして計算できる。ステージング速度は、システムのパラメータであり、Ｉ／Ｏサーバ２１及び３１のＩ／Ｏ能力に関連する。複数のデータステージング処理は、以下では「データステージングジョブ」として参照され、同じバッチジョブのデータステージングに関連しても良く、既に述べたように、システム１０は通常、バッチジョブのキューを扱う。このような（バッチジョブのキューについての）分類の結果は、上述のデータステージングリスト４６である。ステージングリスト４６は、種々のバッチジョブのデータステージングジョブのスケジュール又は実行順序を提供し、データステージイン及びデータステージアウトの両方を対象とする。
【００４６】
ジョブがユーザからシステムへ提出されると、以下に例示されるバッチジョブスクリプトは、ユーザワークステーション１からヘッドノード１１へ送信される。ジョブスケジューラ１１０に対してプラグインプログラムの形式のプリプロセッサ１１０ａは、バッチジョブスクリプトを受信すると開始される。プリプロセッサ１１０ａは、コードの特定のラインを探すためにスクリプトをパースする。この段階で、バッチジョブスクリプトがデータステージングの任意の部分（以下で、行「#DSMS−−stage−in−cp」及び「#DSMS−−stage−out−cp」）を有する場合、プリプロセッサプログラム１１０ａは、ＤＳＭＳ４２と通信する。
【００４７】
前述のように、データステージインは、永久記憶の中の１又は複数の記憶領域３２から一時記憶の中の記憶領域２２へのデータの転送を含む。目標ファイル（ソースファイルとも呼ばれる）又は記憶領域３２から記憶領域２２へ転送すべきデータのディレクトリを識別することにより、ＤＳＭＳ４２は、データステージイン処理を管理し、データステージングリスト４６を構築し、適切なタイミングで実行し、データステージインの進捗をデータステージング管理テーブル４４に記録する。コンピューティングノード１２によるバッチジョブの実行が進むにつれ、出力結果が生成され、記憶領域２３に格納される。バッチジョブが実行を完了した後、ＤＳＭＳ４２は、データステージアウト処理を管理し、適切なタイミングに実行して一時記憶２０から永久記憶３０へ又はより具体的には記憶領域２３から記憶領域３３へ処理結果を転送する。
【００４８】
ここで、データステージイン（又はデータステージアウトの）適切なタイミングは、データステージングを実行するために要する予測時間に依存する。通常、データステージイン処理は、バッチジョブ要求がコンピューティングノード１２に提出された後に実行される。データステージングの予測時間が短い場合は、データステージイン処理は、バッチジョブが実行される直前に実行される（これは、導入部で言及された同期データステージングの一例である）。他方で、データステージングが長時間を要すると予測されるとき、データステージングは、ステージディスクＩ／Ｏ性能を考慮するスケジュールに基づき実行される。ステージインの後、目標ファイルが更に変更される場合、変更された部分のみがステージインされる。これは、非同期データステージングの形式である。したがって、非同期データステージングは、記憶装置のＩ／Ｏ性能のより効率的使用を行うために２種類のステージング処理を含む。前述の予測時間は短期又は長期のような２種類を分類するために用いられる。
【００４９】
本発明で用いられるバッチジョブスクリプトの一例を以下に示す。Ｌｉｎｅ０１２及びＬｉｎｅ０１４で、データステージングの目標ファイル又はディレクトリは、データステージングコマンドでユーザにより明示的に指定される。
【数１】
0006686371.tif 000002
【００５０】
図４は、ＤＳＭＳ４２が従うデータステージイン処理の手順を示す。図５は、データステージアウト処理の対応する手順を示す。各図で、左側の垂直方向の帯は、連続する処理フェーズを示す。この帯の個々のステップは、各々の垂直方向の帯の右に詳細に示される。左回りの矢印は、関連するステップが繰り返され得ることを示す。ステップの番号、つまり［ステップ１］、［ステップ２］、等は、ステップが実行される順序を示す。各々の主ステップの下位ステップは、［ステップ１−１］、［ステップ１−２］、等と示される。これらのステップは、以下に詳述する。
【００５１】
バッチジョブスクリプトの中で指定されるデータステージング処理の状態は、データステージング処理を含む実行が完全に完了するまで、データステージング管理テーブル４４の中に記録され更新される。データステージング命令がバッチジョブスクリプトの中に含まれプリプロセッサ１００ａによりピックアップされるときはいつも、新しいエントリはテーブル４４に追加される。テーブルの中の各エントリ（行）は、１つのデータステージング処理又は「データステージングジョブ」に対応する。前述のように、同じバッチジョブについて、１つより多いデータステージングジョブが存在しても良い。ステージアウトジョブは、バッチジョブが実行された後までテーブルに入力されている必要は無いが、通常、同じバッチジョブは、ステージインとステージアウトの両方を引き起こす。前述のように、同期データステージインは、バッチジョブのコンピューティングリソースが予約されてから間もなく開始する。
【００５２】
次の表１は、データステージング管理テーブル４４の形式を示す。
【００５３】
［表１］データステージング管理テーブル
【表１】
0006686371.tif 000003
表１は、各データステージングジョブ、又は言い換えると管理テーブル４４の１つの「行」、について記録された管理情報の項目を示す。
【００５４】
再び図４を参照し、データステージイン処理の間のＤＳＭＳ４２の動作を以下に説明する。図４に示すように、処理は、（ｉ）ジョブ提出、（ｉｉ）実行のためのジョブのキューイング、及び（ｉｉｉ）リソース割り当て、の連続するフェーズを有する。図４及び５に示すように、ステップのうちの幾つかは、基本的にデータステージング管理サーバ４０であるサーバのメモリに常駐しプリントスプーラ若しくは電子メールハンドラと類似の方法でバックグラウンドで走る「デーモンプロセス」により実行される。このようなデーモンプロセスの例は、実際のデータステージングを実施する、後述する、所謂「開始プログラム」を含む。
【００５５】
［ステップ１］〜［ステップ３］の各々は、１つのジョブに関連する。言い換えると、これらのステップは、各ジョブについて順々に別個に実行される。対照的に、［ステップ４］〜［ステップ７］は、通常、複数のジョブについて同時に実行される。最後に、［ステップ８］及び［ステップ９］は、一度に１つのジョブに適用される。
【００５６】
［ステップ１］ステップ１はジョブ提出である。つまり、ジョブスケジューラの中のプリプロセッサからＤＳＭＳへ初期データステージイン処理の要求を発行するフェーズである。表２は、ＤＳＭＳにより認識できるデータステージングコマンドを示す。
【００５７】
［表２］データステージング処理のためにバッチジョブスクリプトの中で指定されるコマンド
【表２】
0006686371.tif 000004
［ステップ１−１］ユーザがバッチジョブスクリプトをジョブスケジューラに提出した後に、ジョブスケジューラ１１０のプリプロセッサ１１０ａは、ＤＳＭＳ４２と通信する。バッチジョブスクリプトが上述のデータステージングコマンドのいずれかを含む場合、ＤＳＭＳ４２は、バッチジョブスクリプトを分析し、対応する値を、表３に示すように、データステージングジョブ毎に、データステージング管理テーブル４４の１つのエントリ又は行の中の各属性に設定する。この段階の後、ステージイン処理及びジョブ実行は、未だ開始されていない。
【００５８】
［表３］［ステップ１−１］で生成された「データステージング管理テーブル」の例
【表３】
0006686371.tif 000005
このステップで、属性（ａ）〜（ｄ）及び（ｇ）〜（ｊ）の中の値が設定される。つまり、次の通りである。
【００５９】
（ａ）ジョブスケジューラにより発行されたJob  ＩＤが設定される。
【００６０】
（ｂ）「stage−in」が設定される。
【００６１】
（ｃ）初期値「０００」が初期値として設定される。
【００６２】
（ｄ）この段階でデータステージングは未だ開始していないので、「notstarted」が設定される。
【００６３】
（ｇ）ＤＳＭＳ４２は、バッチジョブスクリプトを検索し、もしあれば、ここで、ソースファイル（目標データステージングファイル）又はディレクトリの名称（パス）を入力する。
【００６４】
（ｈ）（ｇ）に基づき、ＤＳＭＳは、データステージング目標の合計サイズ（つまり転送されるべきデータの量）を計算し、値を設定する。
【００６５】
（ｉ）この段階でいかなるデータステージング目標も転送されないので、「０」が設定される。
【００６６】
（ｊ）この段階でいかなるデータステージング目標も転送されないので、ここでは（ｈ）と同じ値が入力される。
【００６７】
［ステップ２］段階（ｉｉ）の間に、実行のためにキューイングされる。バッチジョブは、（先に提出された又はより高い優先度を有する）他のデータが実行されている間、キューの中で待つ。この段階の間、ソースデータが変更される可能性がある。ステップ２は、プリプロセッサ１１０ａからＤＳＭＳ４２へインクリメンタルデータステージイン処理の要求を発行する処理である。
【００６８】
［ステップ２−１］データステージング管理テーブル４４で「Staging  status」が「completed」であるデータステージングジョブについて、ＤＳＭＳ４２は、データステージイン処理の開始時間の後に、目標ファイル又はディレクトリが変更されたかどうかを調べる。
【００６９】
［ステップ２−２］目標ファイル又はディレクトリがデータステージイン処理の開始時間の後に変更された場合、ＤＳＭＳは、これをファイル又はディレクトリの属性の「time  last  modified」値から検出できる。次に、新しいエントリがデータステージング管理テーブル４４に挿入される。ここで、Job  IDは同じであるが、インクリメント１が「Data  staging  ID」に追加される。これは、目標ファイル又はディレクトリが変更されたことをＤＳＭＳが見付けたときは常に、インクリメンタルデータステージングを示すために新しいエントリがテーブルに追加されることを意味する。この場合、表４に示すようなデータステージング管理テーブル４４の中の新しいエントリとして以下の値が設定される。
【００７０】
［表４］［ステップ２−２］で変更された「データステージング管理テーブル」の例
【表４】
0006686371.tif 000006
（ｃ）ＤＳＭＳは既存の値に１を加算する。ここで「０００」が既に設定されている場合、ＤＳＭＳはこの値を「００１」に変更する。
（ｄ）変更された目標ファイル及びディレクトリを転送するために、「notstarted」が設定される。
（ｇ）ＤＳＭＳは、バッチジョブスクリプトを検索し、データステージングの開始時間の後に変更されるファイル又はディレクトリを設定する。
（ｈ）（ｇ）に基づき、ＤＳＭＳは（ｇ）の合計サイズを計算する。
（ｉ）変更されたファイル又はディレクトリはこの段階で未だ転送されていないので、「０」が設定される。
（ｊ）変更されたファイル又はディレクトリはこの段階で未だ転送されていないので、（ｈ）と同じ値が設定される。
【００７１】
［ステップ３］図４のフェーズ（ｉｉｉ）はリソース割り当てである。バッチジョブにコンピューティングリソースを割り当てるために、ジョブスケジューラは、利用可能なコンピューティングノードの状態を参照する。この処理は、「リソース管理」と呼ばれる。以下のステージイン判断条件をリソース管理機能に追加して、リソース管理機能は、バッチジョブを実行するコンピューティングノードの割り当てを制御する。
【００７２】
［ステップ３−１］データステージング管理テーブル４４の中で、「Status  of  staging」の値が「completed」であるジョブが存在する場合、又は「Status  of  staging」の値が「ongoing」であり且つ「Predicted  time  for  data  staging  processing」の値が「Threshold  time  for  asynchronous  data  staging」以下である場合、ジョブスケジューラの中のリソース管理機能は、コンピューティングリソースをジョブに割り当てると決定する。ジョブスケジューラ１１０にインストールされたプラグ入力信号プリプロセッサ１１０ａ及びポストプロセッサ１１０ｂは、ＤＳＭＳ４２と周期的に通信する。これは、上述の状況が生じるとき、ジョブスケジューラに警告できる。
【００７３】
［ステップ４］非同期データステージング処理を管理するために、データステージングリスト４６を生成し又は改訂する処理である。データステージングリスト４６は、サーバ４０にあるデーモンプロセスによりデータステージング管理テーブル４４から形成され、データステージングが必要な全てのバッチジョブを対象とする。図４及び５に示すように、データステージングリスト４６は、非同期短期データステージング処理のセクション、及び非同期長期データステージング処理のセクションを有する。
【００７４】
データステージイン処理に関し、「Predicted  time  for  data  staging  processing」に従って、ＤＳＭＳ４２は、データステージングジョブを「非同期長期データステージング」又は「非同期短期データステージング」に分類する。Ｉ／Ｏサーバ２１及び３１及びデータステージングジョブのデーモンに依存して、複数のデータステージング処理を並列して実行することが可能であり得る。このような並列ステージング処理の数は、以下で「多重度（multiplicity）」と表される。データステージアウト処理に関し、デ―タステージングジョブは、「非同期長期データステージング」に自動的に分類される。
【００７５】
図６は、１つのバッチジョブのデータステージイン処理を分類するフローを示す。
【００７６】
Ｓ１１で、データステージインのための予測時間が第１の閾値（「Threshold  time  for  asynchronous  data  stage−in  processing」）以下かが調べられる。そうである場合（Ｓ１１でＹＥＳ）、フローはステップＳ１２に進む。Ｓ１２で、データステージイン処理を同期化するためにデータステージインが設定され、分類プロセスは終了する。前述のように、同期データステージインは、バッチジョブが実行される直前に実行される。
【００７７】
他方で、Ｓ１１における比較の結果が否定的である場合（Ｓ１１でＮｏ）、フローはステップＳ１３へと続く。Ｓ１３で、データステージインの予測期間が第２の閾値、つまり「Threshold  time  for  asynchronous  short−term  data  staging」以下かが調べられる。
【００７８】
そうである場合（Ｓ１３でＹＥＳ）、フローはステップＳ１４に進む。Ｓ１４で、データステージインは非同期短期データステージイン処理として分類され、プロセスは終了する。
【００７９】
他方で、ステージインの予測時間が第２の閾値を超える場合（Ｓ１３でＮｏ）、ステップＳ１５で、データステージインは非同期長期データステージインとして設定され、プロセスは終了する。
【００８０】
［ステップ４−１］データステージング管理テーブル４４の中で、「Status  of  staging」の値が「completed」以外であるエントリが存在する場合、ＤＳＭＳ４２は、データステージイン処理の予測時間を計算し、それを「Predicted  time  for  data  staging  processing」の値に設定する。予測時間は、以下の式（１）を用いて推定される。
【００８１】
（Predicted  time[秒]）=（Size  of  remaining  data[バイト]）／システムパラメータ（Staging  speed[バイト毎秒]）    （１）
［ステップ４−２］データステージング管理テーブル４４から、ＤＳＭＳ４２は、各「Predicted  time」の和を計算し、それを「Total  predicted  time」属性の値に設定する。
【００８２】
［ステップ４−３］通常、データステージングのために許容される最大時間は、「Maximum  map  time」のような、システム管理者により設定されるシステムパラメータである。「Total  predicted  time  for  data  staging  processing」の値がシステムパラメータ「Maximum  map  time」の値を超える場合、ＤＳＭＳ４２は、「Total  predicted  time  for  data  staging  processing」の値を「Maximum  map  time」の値に設定する。これは、「Total  predicted  time  for  data  staging  processing」に閾値を設定する。
【００８３】
データステージングリスト４６は、以下のように構築される。
【００８４】
［ステップ４−４］データステージング管理テーブル４４の中で、「Staging  phase」の値が「stage−in」であるエントリから、ＤＳＭＳ４２は、「Predicted  time  for  data  staging  processing」の値が「Threshold  time  for  asynchronous  data  staging」を超え且つシステムパラメータが「Threshold  time  for  asynchronous  short−term  data  staging」より小さいエントリを選択する。次に、ＤＳＭＳ４２は、「Asynchronous  data  staging」ジョブのリストを作る。
【００８５】
［ステップ４−５］ＤＳＭＳは、「Asynchronous  data  staging  jobs」のリストの中の「Predicted  time  for  data  staging  processing」の和を計算する。次に、ＤＳＭＳは、この値をデータステージング管理テーブル４４の中の「Predicted  time  for  asynchronous  short−term  data  staging  processing」の値として設定する。
【００８６】
［ステップ４−６］本実施形態は、「多重度（multiplicity）」の概念を用いる。多重度は、同時に処理できるデータステージングジョブの数である。データステージングジョブは、データステージングリスト４６に基づき、Ｉ／Ｏサーバ２１及び３１に循環的に送り出される。ＤＳＭＳは、以下の値を、「Multiplicity  for  asynchronous  short−term  data  staging  processing」の値に設定する。
【００８７】
（Multiplicity  for  asynchronous  short−term  data  staging  processing）＝（Predicted  time  for  asynchronous  short−term  data  staging  processing[秒]）／（Total  predicted  time  for  data  staging  processing[秒]）    （２）
ここで、小数は切り上げられる（したがって、例えば１．３３３は２になる）。上式は、データステージインとデータステージアウトの両方に適用される。
【００８８】
図７の例を参照する。図７は、データステージング管理テーブル４４の部分（より詳細には、上述の表１のから項目（ａ）、（ｂ）及び（ｋ）のみ）を示す。「Total  predicted  time  for  data  staging  processing」は、各「Predicted  time  for  data  staging  processing」の和であるか、又は（この値がMaximum  map  timeを超える場合）Maximum  map  timeに設定される。本例は、「Total  predicted  time  for  data  staging  processing」が１４４００［秒］であると仮定する。
【００８９】
つまり、上述の図７のデータステージング管理テーブル４４に基づき、「Total  predicted  time  for  data  staging  processing」は、各「Predicted  time  for  asynchronous  short−term  data  staging  processing」の和から１９２００［秒］になる。しかしながら、これは「Maximum  map  time」により設定される最大許容値（閾値）を超えるので、後者の値、１４４００［秒］が代わりに用いられる。
【００９０】
上述の式（２）を用いて、
（Multiplicity  for  asynchronous  short−term  data  staging  processing）＝１９２００［秒］／１４４００［秒］＝１．３３．．．＝２
［ステップ４−７］「Multiplicity  for  asynchronous  short−term  data  staging  processing」に従って、ＤＳＭＳ４２は、「Asynchronous  short−term  staging  processing」リストの各エントリを、データステージングリスト４６の中に、非同期短期ステージング処理として１列に並べる。
【００９１】
［ステップ４−６］で導入した例を見ると、データステージング管理テーブル４４の中で管理されるデータステージングジョブは、図７が示すように、多重度２を有するデータステージングリスト４６に１列に並べられる。
【００９２】
［ステップ４−８］データステージング管理テーブル４４の中で「Data  staging  status」の値が「stage−in」であるエントリについて、ＤＳＭＳ４２は、「Predicted  time  for  data  staging  processing」の値が「Threshold  time  for  asynchronous  short−term  data  staging」を超えるエントリを選択し、各エントリをデータステージングリスト４６の中で非同期長期ステージングとして１列に並べる。
【００９３】
［ステップ４−９］データステージング管理テーブル４４から、ＤＳＭＳは、「Data  staging  phase」の値が「stage−out」であるエントリを選択し、各エントリをデータステージングリスト４６の中に非同期長期ステージングとして１列に並べる。
【００９４】
［ステップ５］次のステップは、非同期ステージイン処理のためのサーバ４０上のデーモンプロセスである「External  stage−in  initiator」を開始する。因みに、以下の議論は短期非同期データステージインを先ず記載するが、実際には、短期か長期かに係わらず、データステージングは、「先入れ先出し」ポリシで行われる。
【００９５】
［ステップ５−１］これは、＜非同期＞＜短期＞データステージイン処理のためのものである。
【００９６】
［ステップ５−１−１］データステージング管理テーブル４４を用いて、ＤＳＭＳ４２は、非同期データステージング処理（データステージングジョブ）の数を確認し、その値をデータステージングリスト４６の中の「Multiplicity  for  asynchronous  short−term  data  staging  processing」の値と比較する。
【００９７】
［ステップ５−１−２］これは、＜非同期＞＜短期＞データステージング処理のためのものである。データステージングリスト４６の中の短期データステージングジョブについて、「Multiplicity  for  asynchronous  short−term  data  staging  processing」の数が上限に達するまで、ＤＳＭＳ４２は、「Data  staging  phase」が「stage−in」であり且つ「Data  staging  status」が「notstarted」であるステージングジョブを選択する。次に、「外部ステージイン開始プログラム」はデータステージインプログラムを呼び出し、パラメータ「Batch  job  ID」及び「Data  staging  ID」をＤＳＭＳから提供する。
【００９８】
［ステップ５−２］これは、＜非同期＞＜長期＞データステージイン処理のためのものである。
【００９９】
［ステップ５−２−１］データステージング管理テーブル４４から、データステージングリスト４６にある非同期長期ステージングジョブのリストから、ＤＳＭＳは、「Data  staging  phase」の値が「stage−in」であり且つ「Data  staging  status」が「notstarted」であるデータステージングジョブを選択する。次に、ＤＳＭＳ４２の外部ステージイン開始プログラムはデータステージインプログラムを呼び出し、パラメータ「Batch  job  ID」及び「Data  staging  ID」をＤＳＭＳ４２から提供する。
【０１００】
［ステップ６］これは、上述の内部ステージイン開始プログラムを起動するための＜同期＞データステージイン処理のためのものである。
【０１０１】
［ステップ６−１］データステージング管理テーブル４４から、ＤＳＭＳ４２は、「Batch  job  ID」の値が与えられたパラメータと一致し且つ「Predicted  time  for  data  staging  processing」の値が「Threshold  time  for  asynchronous  data  staging」以下であるステージングジョブを選択する。これは既に述べたように、同期ステージインを設定するための基準である。次に、ＤＳＭＳ４２の中の内部ステージイン開始プログラムは、パラメータ「Batch  job  ID」及び「Data  staging  ID」で、データステージインプログラムを呼び出す。
【０１０２】
［ステップ７］データステージインプログラム。
【０１０３】
［ステップ７−１］データステージインプログラムは、「Batch  job  ID」及び「Data  staging  ID」を、ＤＳＭＳ４２の外部ステージイン開始プログラム又は内部ステージイン開始プログラムから受信する。
【０１０４】
［ステップ７−２］ＤＳＭＳは、「Batch  job  ID」及び「Data  staging  ID」の値がデータステージング管理テーブル４４の中の与えられたパラメータに一致するエントリの「Data  staging  status」の値に、「ongoing」を設定する。
【０１０５】
［ステップ７−３］ＤＳＭＳ４２は、［ステップ７−２］で指定されたエントリの「List  of  data  staging  target」の中で指定された目標ファイル又はディレクトリを参照する。次に、ＤＳＭＳは（ヘッドノード１１を介して）、永久記憶３０にある目標ファイル又はディレクトリを一時記憶２０にコピーする。
【０１０６】
［ステップ７−４］コピー処理が完了した後、ＤＳＭＳは、「Batch  job  ID」及び「Data  staging  ID」の値がデータステージング管理テーブル４４の中の与えられた値と一致するエントリから、「Predicted  time  for  data  staging  processing」の値として「０」を、「Data  staging  status」の値として「Completed」を、設定する。
【０１０７】
［ステップ８］データステージイン状態を監視するための処理である。
【０１０８】
［ステップ８−１］データステージング管理テーブル４４の中で、「Data  staging  phase」が「stage−in」であり且つ「Data  staging  status」が「ongoing」であるエントリから、ＤＳＭＳ４２は、項目（ｇ）、「List  of  Data  staging  target」に記録された目標ファイル又はディレクトリを参照する。これは、サーバにあるデーモンプロセスとして連続的に実行される。次に、この監視処理は、転送されたデータの合計ファイルサイズを計算し、その値を「Size  of  transferred  data」の値に設定する。
【０１０９】
［ステップ８−２］［ステップ８−１］で指定されたエントリについて、データＤＳＭＳは、次の式（３）を計算し、それを「Size  of  remaining  data」属性の値として設定する。
【０１１０】
（Size  of  remaining  data[バイト]）＝（Total  size  of  data  staging  data[バイト]）−（Size  of  transferred  data[バイト]）    （３）
［ステップ９］バッチジョブを開始するための処理である。
【０１１１】
［ステップ９−１］一時的ファイルシステム２０にあるジョブ実行ディレクトリの中で、ＤＳＭＳは、タイムスタンプファイルを作り、現在日時を最終変更日として設定する。
【０１１２】
上述の説明は、図４に従ってデータステージインを参照した。データステージアウトのためのステップの対応するシーケンスは、以下に図５を参照して説明される。
【０１１３】
図５では、システム動作の観点から、全体として１つの「フェーズ」のみが存在する。つまり、ジョブの実行は、左側にある「ジョブ終了」により示されるように完了しなければならない。
【０１１４】
［ステップ１０１］データステージアウトの要求である。
【０１１５】
［ステップ１０１−１］バッチジョブが完了すると、表５の以下の情報がデータステージング管理テーブル４４に設定され、データステージアウトのためのデータステージングジョブを設定する。以下の表５は、表１と同じ情報を含むが、ここでは省略した形式で提示される。
【０１１６】
［表５］［ステップ１０１−１］で生成されるデータステージング管理テーブルの例
【表５】
0006686371.tif 000007
（ａ）ジョブスケジューラにより発行されたJob  IDが設定される。
（ｂ）「stage−out」が設定される。
（ｃ）初期値「０００」が初期値として設定される。
（ｄ）データステージングはこの段階で未だ開始されていないので、「notstarted」が設定される。
（ｇ）ＤＳＭＳはバッチジョブスクリプトを調べ、もしあれば目標データステージングファイル又はディレクトリを入れる。
（ｈ）（ｇ）に基づき、ＤＳＭＳはデ―タステージング目標の合計サイズを計算し、値を設定する。
（ｉ）この段階でデータステージング目標が転送されていないので、「０」が設定される。
（ｊ）この段階でデータステージング目標が転送されていないので、（ｈ）と同じ値が設定される。
【０１１７】
［ステップ１０１］はデータステージング管理テーブル４４にエントリを追加するので、これは、データステージインに関して上述した［ステップ４］におけるように、データステージングリスト４６も改訂を促す。
【０１１８】
［ステップ１０２］非同期ステージングのための外部ステージアウトプログラムを起動するための処理である。
【０１１９】
［ステップ１０２−１］データステージング管理テーブル４４から、「Data  staging  phase」の値が「stage−out」であるエントリから、ＤＳＭＳ又はより詳細には外部データステージアウト開始プログラムは、「Data  staging  phase」の値が「stage−out」であり且つ「Data  staging  status」の値が「notstarted」であるデータステージアウト処理を選択し、次に外部ステージアウトプログラムを起動する。このデータステージアウトプログラムは、「Batch  job  ID」及び「Data  staging  ID」のパラメータにより起動される。
【０１２０】
［ステップ１０３］内部ステージアウトプログラム。
【０１２１】
［ステップ１０３−１］与えられたパラメータから、内部ステージアウトプログラム（又は開始プログラム）は、「Batch  job  ID」及び「Data  staging  ID」を取得する。
【０１２２】
［ステップ１０３−２］データステージング管理テーブル４４から、ＤＳＭＳ４２は、「Batch  job  ID」及び「Data  staging  ID」が与えられたパラメータに一致するエントリの「Data  staging  status」の値として「ongoing」を設定する。
【０１２３】
［ステップ１０３−３］ＤＳＭＳは、［ステップ１０３−２］で指定されたエントリの「Data  staging  target」の中で指定された目標ファイル又はディレクトリを参照する。
【０１２４】
［ステップ１０３−４］ＤＳＭＳは、タイムスタンプファイルの中で指定された日の後にのみ変更される、［ステップ１０３−３］で指定されたファイル又はディレクトリを、一時記憶２０から永久記憶３０へコピーする。
【０１２５】
［ステップ１０３−５］コピーが完了した後、ＤＳＭＳ４２は、「Batch  job  ID」及び「Data  staging  ID」がデータステージング管理テーブル４４の中の与えられた値と一致するエントリについて、「Predicted  time  for  data  staging  processing」の値として「０」を、「Data  staging  status」の値として「Completed」を、設定する。
【０１２６】
［ステップ１０４］データステージアウト状態を監視するための処理である。
【０１２７】
［ステップ１０４−１］データステージング管理テーブル４４の中で、「Data  staging  type」の値が「stage−out」であり且つ「Data  staging  status」の値が「ongoing」であるエントリから、ＤＳＭＳは、テーブル４４の中の項目（ｇ）、「List  of  Data  staging  target」から目標ファイル又はディレクトリを参照する。次に、この処理は、転送されたデータ（つまり、今までに転送されたデータ）の合計ファイルサイズを計算し、その数値を「Size  of  transferred  data」の値に設定する。
【０１２８】
［ステップ１０４−２］［ステップ１０４−１］で指定されたエントリについて、ＤＳＭＳは、データステージインで用いられた式（３）を計算し、それを「Size  of  remaining  data」の値に設定する。
【０１２９】
（Size  of  remaining  data[バイト]）＝（Total  size  of  data  staging  target[バイト]）−（Size  of  transferred  data[バイト]）    （３）
データステージングジョブが完了すると（残り０バイト）、ジョブは、データステージングリスト４６から削除できる。
【０１３０】
これは、データステージアウト処理の説明を完了する。
【０１３１】
したがって、纏めると、本発明の実施形態は、ＨＰＣシステムにおいてバッチジョブを実行するとき、データステージング技術を提供し、同期及び非同期データステージング処理を結合する。ＨＰＣシステムのヘッドノードに追加されたプリプロセッサ１１０ａでは、データステージインのためのソースファイルとしての少なくとも１つの目標ファイル、及びデータステージアウトのための目標ファイルは、共に永久記憶３０の中に保持され、例えばユーザワークステーション１において入力されたバッチジョブスクリプト２を分析することにより識別される。ファイルに含まれるデータの量から、一時記憶２０へのデータステージイン及び一時記憶２０からのデータステージアウトのために必要な時間が推定される。データステージインは、推定した時間に基づき非同期又は同期として設定され、データステージアウトは非同期として扱われる。各非同期データステージング処理は、更に、推定所要時間に依存して短期又は長期として分類される。各データステージング処理は、データステージング管理テーブル４４に記録される。ソースファイルが変更される場合、インクリメンタルデータステージング処理がテーブルに追加される。関連するデータ量及び許容時間に依存して、データステージングジョブは、並列に実行するよう設定されても良い。或いは、データステージングジョブはキューイングされても良い。永久記憶３０からのソースファイルのデータステージインが実行され、データステージング管理テーブル４４の中のデータステージング処理の進捗を監視する。リソースは、データステージインが完了するのを待たずに、コンピューティングノード１１を用いてバッチジョブを実行するために割り当てられる。バッチジョブが実行され、一時記憶２０の中に結果を生じる。そして、ヘッドノード１１におけるポストプロセッサ１１０ｂの支援により、データステージアウトが実行されて、結果を永久記憶３０の中の目標ファイルへ転送する。
【０１３２】
本発明の範囲内で種々の変更が可能である。
【０１３３】
上述の実施形態では１つのステップシーケンスが記載されたが、これは必ずしも唯一の可能なシーケンスではなく、全体的な効果が等価である限り、動作は異なる順序で実行されても良い。
【０１３４】
上述の実施形態では、データステージイン及びデータステージアウトのための外部及び内部開始プログラムは、管理サーバ４０で実行する。しかしながら、外部及び内部開始プログラム若しくはプログラムを要求するとして記載された動作は、通常、コンピューティングシステムの中のどこでも実行され得る。
【０１３５】
上述の開始プログラムはデータステージイン又はデータステージアウトプログラムと共に動作するとして記載されたが、これらの機能は結合され得る。つまり、開始プログラムは、場合によっては、それ自体がステージイン又はステージアウトを実行しても良い。
【０１３６】
同様に、上述の実施形態では、ＤＳＭＳ４２は、ヘッドノード１１及びコンピューティングノード１２とは別個にあるサーバ４０で実行するとして記載された。しかしながら、これは必須ではなく、ＤＳＭＳはヘッドノード１１に、コンピューティングノード１２に、又はＨＰＣシステム１０の内部若しくは外部にある任意の他のノードに、実装されても良い。さらに、ＤＳＭＳは、複数のこのようなノードの間で分散されても良い。別個のサーバ４０の使用は、耐障害性及び回復力の観点から好ましい。
【０１３７】
同期及び非同期データステージングを結合することにより、本発明の実施形態は、バッチジョブを直ぐに実行でき、コンピューティングリソースの非効率な使用を回避する。
【符号の説明】
【０１３８】
１  ワークステーション
１０  ＨＰＣシステム
１１  ヘッドノード
１１０  ジョブスケジューラ
１１０ａ  プリプロセッサ
１１０ｂ  ポストプロセッサ
１２  コンピューティングノード
２０  一時記憶
２２  入力
２３  出力
３０  永久記憶
３２  入力
３３  出力
４０  データステージング管理サーバ
４２  データステージング管理システム（ＤＳＭＳ）
４４  データステージング管理テーブル
４６  データステージングリスト
５  ネットワーク
【図１】
0006686371.tif 000008
【図２】
0006686371.tif 000009
【図３】
0006686371.tif 000010
【図４】
0006686371.tif 000011
【図５】
0006686371.tif 000012
【図６】
0006686371.tif 000013
【図７】
0006686371.tif 000014
【図８】
0006686371.tif 000015