(57)【要約】【課題】メタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷量を、メタデータ処理実行ノードの処理能力に対して適正な割合以下に維持しやすくすること。【解決手段】ジョブ管理サーバｊｍｓは、図１の（１）、（２）で示すように、第１のジョブとしてジョブｊ１を実行する際に、実行履歴を参照して、ジョブｊ１の実行終了時刻として時刻ｔ２を算出し、実行終了時刻におけるメタデータサーバｍｄｓの負荷量を取得する。そして、ジョブ管理サーバｊｍｓは、取得した負荷量が所定の閾値以上であるか否かを判定する。図１の例では、取得した負荷量が所定の閾値以上であるとする。この場合、ジョブ管理サーバｊｍｓは、図１の（３）で示すように、ステージングバッファサーバｓｔｇに、ジョブｊ１の実行結果を有するファイルに対するステージング処理をジョブｊ１の実行終了時に実行させるスケジュールデータ１０４を生成する。【選択図】図１
2018156142.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとを有する複数のノードを有する並列処理装置であって、
前記複数のノードのうちのジョブのスケジューリング処理を実行する特定のノードは、
前記複数のノードのうちのいずれかが第１のジョブを実行する際に、前記ジョブの実行時間を記録した実行履歴を参照して、前記第１のジョブの実行が終了する実行終了時刻を算出し、
前記複数のノードのうちのファイルのメタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷を管理する負荷管理ノードから、算出した前記実行終了時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、２つの記憶領域の間でファイルを移動するステージングによって発生する前記メタデータ処理を実行するステージング実行ノードに、前記第１のジョブの実行結果を有するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行終了時に実行させるスケジュールデータを生成する、
ことを特徴とする並列処理装置。
【請求項２】
前記負荷管理ノードは、前記メタデータ処理の対象となるファイルの数に対応する前記メタデータ処理実行ノードの負荷量を示す負荷情報を有しており、
前記特定のノードは、
複数のファイルの各ファイルに対してステージングを実行する予定時刻を示す予定情報を参照して、算出した前記実行終了時刻に実行されるステージングの対象となるファイルの数を特定し、
前記負荷管理ノードに、特定した前記ファイルの数を送信し、
前記負荷管理ノードは、
前記負荷情報を参照して得られた前記ファイルの数に対応する前記メタデータ処理実行ノードの負荷量を、前記特定のノードに送信し、
前記特定のノードは、
受信した前記メタデータ処理実行ノードの負荷量を、前記実行終了時刻における前記メタデータ処理実行ノードの負荷量として取得する、
ことを特徴とする請求項１に記載の並列処理装置。
【請求項３】
前記実行履歴は、前記ジョブの実行を開始した時刻と、前記ジョブの実行結果を有するファイルに対するステージングを開始した実行開始時刻と、当該ファイルに対するステージングの実行終了時刻とを含み、
前記特定のノードは、
前記第１のジョブを実行する際に、前記実行履歴を参照して、前記第１のジョブの実行結果を有するファイルに対するステージングの実行開始時刻と、当該ステージングの実行終了時刻とを算出し、
前記予定情報を参照して、算出した前記実行開始時刻から前記実行終了時刻までの間に実行されるステージングの対象となるファイルの数を特定し、
前記負荷管理ノードに、特定した前記ファイルの数と、前記実行開始時刻から前記実行終了時刻までの時間の長さを示す情報とを送信し、
前記負荷管理ノードは、
前記負荷情報を参照して、前記時間の長さに基づき算出した前記ファイルの数に対応する前記メタデータ処理実行ノードの単位時間当たりの負荷量を、前記特定のノードに送信し、
前記特定のノードは、
取得した前記単位時間当たりの負荷量が所定の閾値以上である場合、前記スケジュールデータを生成する、
ことを特徴とする請求項２に記載の並列処理装置。
【請求項４】
前記特定のノードは、
前記複数のノードのうちのいずれかが前記第１のジョブを実行する前に、前記ジョブがノードの使用を開始する時刻を示す情報に基づいて、前記第１のジョブの実行が開始する実行開始時刻を算出し、
前記負荷管理ノードから、算出した前記実行開始時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、前記ステージング実行ノードに、前記第１のジョブが参照するファイルまたは前記第１のジョブが更新するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行開始時に実行させるスケジュールデータを生成する、
ことを特徴とする請求項１〜３のいずれか一つに記載の並列処理装置。
【請求項５】
前記特定のノードは、ジョブに関するファイルに対する前記メタデータ処理を実行する順序を示す順序情報を有し、
前記メタデータ処理実行ノードは、
前記第１のジョブに関するファイルに対するメタデータ処理を実行する際に、前記第１のジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理の有無を確認する要求を、前記特定のノードに送信し、
前記特定のノードは、
前記要求を受け付けた場合、前記順序情報を参照して、前記第１のジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理がある場合、前記前に実行すべきメタデータ処理を特定する情報を、前記メタデータ処理実行ノードに送信し、
前記メタデータ処理実行ノードは、
前記前に実行すべきメタデータ処理を特定する情報を受け付けた場合、前記前に実行すべきメタデータ処理を、前記第１のジョブに関するファイルに対するメタデータ処理より前に実行する、
ことを特徴とする請求項１〜４のいずれか一つに記載の並列処理装置。
【請求項６】
プロセッサとメモリとを有する複数のノードを有する並列処理装置のステージアウト処理方法であって、
前記複数のノードのうちのジョブのスケジューリング処理を実行する特定のノードが、
前記複数のノードのうちのいずれかが第１のジョブを実行する際に、前記ジョブの実行時間を記録した実行履歴を参照して、前記第１のジョブの実行が終了する実行終了時刻を算出し、
前記複数のノードのうちのファイルのメタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷を管理する負荷管理ノードから、算出した前記実行終了時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、２つの記憶領域の間でファイルを移動するステージングによって発生する前記メタデータ処理を実行するステージング実行ノードに、前記第１のジョブの実行結果を有するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行終了時に実行させるスケジュールデータを生成する、
処理を実行することを特徴とするステージアウト処理方法。
【請求項７】
プロセッサとメモリとを有する複数のノードを有する並列処理装置のジョブ管理プログラムであって、
前記複数のノードのうちのジョブのスケジューリング処理を実行する特定のノードに、
前記複数のノードのうちのいずれかが第１のジョブを実行する際に、前記ジョブの実行時間を記録した実行履歴を参照して、前記第１のジョブの実行が終了する実行終了時刻を算出し、
前記複数のノードのうちのファイルのメタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷を管理する負荷管理ノードから、算出した前記実行終了時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、２つの記憶領域の間でファイルを移動するステージングによって発生する前記メタデータ処理を実行するステージング実行ノードに、前記第１のジョブの実行結果を有するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行終了時に実行させるスケジュールデータを生成する、
処理を実行させることを特徴とするジョブ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理装置、ステージアウト処理方法、およびジョブ管理プログラムに関する。
【背景技術】
【０００２】
従来、ファイルシステムは、ファイルの実データと、ファイルを管理することに用いられるメタデータとに分けて管理することがある。また、ジョブ実行中のファイルアクセスを高速化するため、ジョブの実行前後で、アクセス性能が異なる２つの記憶領域の間でファイルを移動する、いわゆるステージングと呼ばれる技術がある。
【０００３】
関連する先行技術として、例えば、即時転送が不要な場合や、サービスの提供装置の負荷が高い状態である場合、サービスの要求をキューに一旦蓄積し、負荷が低くなった提供装置に対して、許容遅延が小さく最優先の要求をキューから転送するものがある。また、ジョブの投入後にＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の稼働率が高くなり、投入ジョブの実行速度が落ちた場合、ノードテーブル、ジョブ管理テーブル、およびジョブクラステーブルを参照して、現用のノードから他のノードへジョブの再投入を行う技術がある。また、ジョブ実行時にジョブが用いるファイルに対応する作業ファイルを創成し、他ノードから転送した情報の作業ファイルの書き込み終了時にジョブで指定したファイルに作業ファイルの内容を複写し、作業ファイルを消滅させる技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１８６８１０号公報
【特許文献２】国際公開第２００６／１００７５２号
【特許文献３】特開昭６０−１５７６４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術によれば、メタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷量を、メタデータ処理実行ノードの処理能力に対して適正な割合以下に維持することができない場合がある。具体的には、ステージングを行うファイルシステムでは、メタデータ処理実行ノードの負荷量は、ステージングが発生するジョブの実行前後に上昇する。そして、ジョブの実行前後というタイミングは、ジョブのスケジューリングに依存することであり、ファイルシステム側の制御では原理的に不可能な要因である。ここで、ジョブのスケジューリングでは、ジョブを実行する計算ノードの数と、ジョブを実行する計算ノードのネットワーク上での配置とが重要である。従って、メタデータ処理実行ノードの負荷量を、メタデータ処理実行ノードの処理能力に対して適正な割合以下に維持するジョブのスケジューリングを採用することは、妥当ではない。
【０００６】
１つの側面では、本発明は、メタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷量を、メタデータ処理実行ノードの処理能力に対して適正な割合以下に維持しやすくすることができる並列処理装置、ステージアウト処理方法、およびジョブ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、並列処理装置、ステージアウト処理方法、およびジョブ管理プログラムは、プロセッサとメモリとを有する複数のノードを有する並列処理装置であって、複数のノードのうちのジョブのスケジューリング処理を実行する特定のノードに、複数のノードのうちのいずれかが第１のジョブを実行する際に、ジョブの実行時間を記録した実行履歴を参照して、第１のジョブの実行が終了する実行終了時刻を算出し、複数のノードのうちのファイルのメタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷を管理する負荷管理ノードから、算出した実行終了時刻におけるメタデータ処理実行ノードの負荷量を取得し、取得した負荷量が所定の閾値以上である場合、２つの記憶領域の間でファイルを移動するステージングによって発生するメタデータ処理を実行するステージング実行ノードに、第１のジョブの実行結果を有するファイルに対するステージングによって発生するメタデータ処理を第１のジョブの実行終了時に実行させるスケジュールデータを生成する。
【発明の効果】
【０００８】
一つの側面では、メタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷量を、メタデータ処理実行ノードの処理能力に対して適正な割合以下に維持しやすくすることが可能となる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施の形態にかかる並列処理装置１０１の動作例を示す説明図である。
【図２】図２は、並列処理システム２００の構成例を示す説明図である。
【図３】図３は、ノードのハードウェア構成例を示す説明図である。
【図４】図４は、並列処理システム２００の機能構成例を示す説明図である。
【図５】図５は、ジョブ管理サーバｊｍｓの機能構成例を示す説明図である。
【図６】図６は、ジョブごとの資源予約管理表５２１の記憶内容の一例を示す説明図である。
【図７】図７は、ステージング予定表５２２の記憶内容の一例を示す説明図である。
【図８】図８は、ジョブ投入時からステージングバッファサーバｓｔｇがステージング処理を実行するまでのシーケンスを示す説明図である。
【図９】図９は、ジョブ投入時からステージングバッファサーバｓｔｇがステージング処理を実行するまでの一連の処理を示すフローチャート（その１）である。
【図１０】図１０は、ジョブ投入時からステージングバッファサーバｓｔｇがステージング処理を実行するまでの一連の処理を示すフローチャート（その２）である。
【図１１】図１１は、メタデータサーバ負荷管理表５２３の記憶内容の一例を示す説明図である。
【図１２】図１２は、ステージングバッファサーバ負荷管理表５２４の記憶内容の一例を示す説明図である。
【図１３】図１３は、過去に実行されたジョブ情報ＤＢ５２５の記憶内容の一例を示す説明図である。
【図１４】図１４は、メタデータサーバｍｄｓで発生するＣＰＵ使用率とディスクＩ／Ｏ量との一例を示す説明図である。
【図１５】図１５は、ステージングバッファサーバｓｔｇで発生するＣＰＵ使用率の一例を示す説明図である。
【図１６】図１６は、ステージングバッファサーバ負荷状況４１３の一例を示す説明図である。
【図１７】図１７は、各時刻におけるメタデータサーバｍｄｓのＣＰＵ使用率の一例を示す説明図である。
【図１８】図１８は、ステージングするデータ間でデータの順序制約がある場合の一連の処理を示すフローチャートである。
【図１９】図１９は、ステージングでのメタデータ更新順序制約管理表５２６の記憶内容の一例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、開示の並列処理装置、ステージアウト処理方法、およびジョブ管理プログラムの実施の形態を詳細に説明する。
【００１１】
図１は、本実施の形態にかかる並列処理装置１０１の動作例を示す説明図である。並列処理装置１０１は、複数のノードにより形成される並列計算機システムである。複数のノードの各ノードは、それぞれ、プロセッサとメモリとを有する。また、複数のノードのうちの計算ノードは、科学技術計算等の処理といったジョブを実行する。
【００１２】
ここで、大規模並列計算機システムは、「ステージング」と呼ばれる機能を有することがある。ステージングとは、ジョブの実行前後にユーザディスクと計算ノード上のワークディスク間で任意のファイルを転送する機能である。以下、２つの記憶領域の間でファイルを移動することを、「ステージング」と呼称する。ステージングは、多くの場合、バッチジョブ・スケジューラの一部として、または、バッチジョブ・スケジューラを補助する役割を持つミドルウェアの一部として、実行される。
【００１３】
ユーザディスクとは、ジョブを実行するユーザやユーザのグループが所有者である二次記憶領域や、ジョブ実行前後で一貫性のあるアクセス権が付与されているファイルが配置されている二次記憶領域である。また、ワークディスクは、ジョブ実行中に限定して、一時的に利用できる二次記憶領域である。そして、ユーザディスクから計算ノード上のワークディスクへの転送を「ステージイン」、計算ノード上のワークディスクからユーザディスクへの転送を「ステージアウト」と呼称する。以下、「ステージング」は、ステージイン、ステージアウトの総称とする。
【００１４】
一般的には、大規模並列計算機システムにおけるユーザディスクは、大規模構成に対応した並列分散ファイルシステムプログラムにより並列計算機システム全体に対して一元管理されるディスクである。また、大規模並列計算機システムにおけるワークディスクは、各計算ノードに接続されたハードディスク、ＳＳＤ、または、システム全体ではなく比較的少数の一部の計算ノードの間でのみ共有されるネットワークファイルシステムにより管理されるディスクである。このように、ファイルシステムが階層化されている状況を、「システムのファイルシステムが２階層で形成される」と呼称することがある。
【００１５】
通常、ジョブ実行開始前には、ステージインとして、ジョブが参照あるいは更新すべきファイルがユーザディスクからワークディスクにコピーされる。また、ジョブ実行終了後には、ステージアウトとして、ジョブが更新したファイル、およびジョブが新たに作成し、かつ保存すべきファイルが、ワークディスクからユーザディスクにコピーされる。ステージイン、ステージアウトの目的は、ワークディスクをキャッシュのように使用することで、ジョブ実行中のファイルアクセスを高速化することである。
【００１６】
ここで、大規模構成に対応した並列分散ファイルシステムにおける性能のボトルネックは、データ量自体は大きいファイルの内容のＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）処理以上に、データ量自体は小さいファイルの管理情報のＩ／Ｏ処理における場合が、より深刻となることがある。以下、管理情報を、「メタデータ」と呼称する。メタデータには、例えば、ファイルのサイズ、ファイルの属性、ファイルのパーミッション、ファイルへのアクセス時刻等が含まれる。
【００１７】
そして、メタデータのＩ／Ｏ処理が深刻となる理由として、ファイルの内容のＩ／Ｏ処理のボトルネックは、データを保持するためのサーバやディスクの増設で比較的容易に対応できる。これに対し、メタデータのＩ／Ｏ処理では、ファイルシステムとしての管理情報の一貫性の維持のため、直列にしかできない処理の割合が、比較的高いからである。ここで、以下の記載では、複数のノードのうち、メタデータにアクセスするメタデータ処理を実行するノードを、「メタデータサーバ」と呼称する。
【００１８】
そして、メタデータサーバの負荷量を、メタデータサーバの処理能力に対して適正な割合に維持することができない場合がある。具体的には、ステージングを行うファイルシステムでは、メタデータサーバの負荷量は、ステージングが発生するジョブの実行前後に上昇する。そして、ジョブの実行前後というタイミングは、ジョブのスケジューリングに依存することであり、ファイルシステム側の制御では原理的に不可能な要因である。ここで、ジョブのスケジューリングでは、計算ノードの数と、計算ノードのネットワーク上での配置とが重要である。従って、メタデータサーバの負荷量を、メタデータサーバの処理能力に対して適正な割合に維持するジョブのスケジューリングを採用することは、妥当ではない。
【００１９】
特に、並列ファイルシステム全体中で、どのサブツリーのメタデータへのアクセスが、どの時点で多くなるのかを個別に制御することは困難であるため、特定時点での特定メタデータサーバへのアクセス集中の回避が深刻な問題を引き起しうる。
【００２０】
そこで、本実施の形態では、ステージングによって発生するメタデータ処理を実行するステージング実行ノードを用意する。以下、ステージング実行ノードを、「ステージングバッファサーバ」と呼称する。また、本実施の形態では、ステージングに伴うメタデータ処理を、「ステージング処理」と呼称する。ステージング処理は、例えば、ステージングの対象となったファイルのファイルサイズやアクセス時刻の更新を行う処理である。
【００２１】
そして、本実施の形態では、ステージアウトに関して、ジョブの実行履歴からジョブの実行終了時刻を求め、求めた時刻のメタデータサーバの負荷が高ければ、求めた時刻にステージングバッファサーバにステージアウトさせる。同様に、本実施の形態では、ステージインに関して、ジョブのスケジューリング結果からジョブの実行開始時刻を求め、求めた時刻のメタデータサーバの負荷が高ければ、求めた時刻にステージングバッファサーバにステージインさせる。これにより、並列処理装置１０１は、メタデータサーバｍｄｓが負荷集中する可能性が高い時刻がわかり、メタデータサーバｍｄｓの負荷を抑えることができる。
【００２２】
図１を用いて、並列処理装置１０１の動作例について説明する。並列処理装置１０１には、ジョブのスケジューリング処理を実行する特定のノードとして、ジョブ管理サーバｊｍｓと、計算ノードｃｎと、メタデータサーバｍｄｓと、ステージング処理実行ノードとしてステージングバッファサーバｓｔｇとを含む。そして、図１では、ステージアウトが発生する時刻において、メタデータサーバｍｄｓの負荷量が、メタデータサーバｍｄｓの処理能力に対して適正な割合以下に維持できるようにする。
【００２３】
ジョブ管理サーバｊｍｓは、複数のノードのうちのいずれかが第１のジョブを実行する際に、ジョブの実行時間を記録した実行履歴を参照して、第１のジョブの実行が終了する実行終了時刻を算出する。第１のジョブを実行するノードは、計算ノードｃｎである。ここで、図１では、ジョブの実行が終了する時刻が、ステージアウトが発生する時刻とみなしている。ステージアウトが発生する時刻をより正確に算出するには、例えば、実行履歴には、ジョブの実行が開始してから、ステージアウトが発生するまでの時間を有してもよい。
【００２４】
また、具体的な実行終了時刻の算出方法としては、例えば、ジョブ管理サーバｊｍｓは、第１のジョブを実行する際に、実行履歴を参照して、第１のジョブが使用するプロセッサの数や第１のジョブの名称と一致するジョブの実行時間を検出する。そして、ジョブ管理サーバｊｍｓは、現在時刻に、検出した実行時間を加えた時刻を、実行終了時刻として算出する。また、第１のジョブを実行する前でも、実行終了時刻を算出することができる。具体的には、ジョブ管理サーバｊｍｓは、前述したように実行履歴を参照して実行時間を検出し、ジョブのスケジューリング結果から第１のジョブの実行開始時刻を取得し、取得した実行開始時刻に、検出した実行時間を加えた時刻を、実行終了時刻として算出する。
【００２５】
図１で示すグラフ１０２は、実行履歴を参照して得られた、ジョブｊ１の実行時間を示す。グラフ１０２の横軸は、時刻を示す。そして、グラフ１０２は、現在時刻である時刻ｔ１では、ジョブｊ１が実行開始して、ステージインが発生し、時刻ｔ２では、ジョブｊ１が実行終了することを示す。従って、図１の例では、ジョブ管理サーバｊｍｓは、図１の（１）で示すように、第１のジョブとしてジョブｊ１を実行する際に、実行履歴を参照して、ジョブｊ１の実行終了時刻として時刻ｔ２を算出する。
【００２６】
次に、ジョブ管理サーバｊｍｓは、ノードの負荷を管理する負荷管理ノードから、算出した実行終了時刻におけるメタデータサーバｍｄｓの負荷量を取得する。ここで、負荷管理ノードは、並列処理装置１０１に含まれる複数のノードのいずれでもよく、例えば、ジョブ管理サーバｊｍｓそのものでもよいし、他のノードでもよい。以下の記載では、負荷管理ノードは、ジョブ管理サーバｊｍｓであるとする。また、実行終了時刻におけるメタデータサーバｍｄｓの負荷量は、メタデータサーバｍｄｓのＣＰＵ使用率でもよいし、ディスクＩ／Ｏ量でもよいし、ＣＰＵ使用率とディスクＩ／Ｏ量の両方でもよい。
【００２７】
また、実行終了時刻におけるメタデータサーバｍｄｓの負荷量を取得する方法としては、ジョブ管理サーバｊｍｓは、メタデータ処理の対象となるファイルの数に対応するメタデータサーバｍｄｓの負荷量を示す負荷情報を記憶しておく。そして、ジョブ管理サーバｊｍｓは、ジョブのスケジューリング結果から、実行終了時刻におけるステージアウトが発生するファイルの数を特定する。そして、ジョブ管理サーバｊｍｓは、負荷情報を参照して、特定したファイルの数に対応するメタデータサーバｍｄｓの負荷量を取得する。
【００２８】
図１の（２）で示すように、ジョブ管理サーバｊｍｓは、実行終了時刻におけるメタデータサーバｍｄｓの負荷量を取得する。図１で示すグラフ１０３は、取得したメタデータサーバｍｄｓの負荷量を示す。
【００２９】
そして、ジョブ管理サーバｊｍｓは、取得した負荷量が所定の閾値以上であるか否かを判定する。所定の閾値は、並列処理装置１０１の管理者等によって設定される値である。図１の例では、取得した負荷量が所定の閾値以上であるとする。この場合、ジョブ管理サーバｊｍｓは、図１の（３）で示すように、ステージングバッファサーバｓｔｇに、ジョブｊ１の実行結果を有するファイルに対するステージング処理をジョブｊ１の実行終了時に実行させるスケジュールデータ１０４を生成する。図１に示すスケジュールデータ１０４の内容は、「時刻ｔ２に、ジョブｊ１の実行結果を有するファイルをステージアウト」する旨が記載される。
【００３０】
このように、並列処理装置１０１は、ステージアウト時におけるメタデータサーバｍｄｓの負荷量が所定の閾値以上ならば、事前にステージングバッファサーバｓｔｇにステージング処理を割り当てる。従って、並列処理装置１０１は、ステージアウト時におけるメタデータサーバｍｄｓの負荷量を、メタデータサーバｍｄｓの処理能力に対して適正な割合以下に維持しやすくすることができる。
【００３１】
なお、図１の例では、ステージアウトに関する説明であったが、同様な方法で、並列処理装置１０１は、ステージイン時におけるメタデータサーバｍｄｓの負荷量を、メタデータサーバｍｄｓの処理能力に対して適正な割合以下に維持しやすくすることができる。次に、並列処理装置１０１を並列処理システムに適用した例を、図２を用いて説明する。
【００３２】
図２は、並列処理システム２００の構成例を示す説明図である。並列処理システム２００は、１以上の計算ノードｃｎと、ジョブ管理サーバｊｍｓと、代表ステージングサーバｒｓと、１以上のステージングバッファサーバｓｔｇと、並列分散ファイルシステム２０１と、ユーザ端末ｕｔとを含む。計算ノードｃｎ、ジョブ管理サーバｊｍｓ、代表ステージングサーバｒｓ、ステージングバッファサーバｓｔｇ、並列分散ファイルシステム２０１、ユーザ端末ｕｔは、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク２１０で接続される。並列分散ファイルシステム２０１は、複数のメタデータサーバｍｄｓと、複数の実データサーバｒｄｓとを含む。図２の例では、並列分散ファイルシステム２０１は、メタデータサーバｍｄｓ＿００〜０２と、実データサーバｒｄｓ＿００〜０３とを有する。
【００３３】
以下の説明では、同種の要素を区別する場合には、「メタデータサーバｍｄｓ＿００」、「メタデータサーバｍｄｓ＿０１」のように参照符号を使用する。そして、同種の要素を区別しない場合には、「メタデータサーバｍｄｓ」のように参照符号のうちの共通番号だけを使用することがある。
【００３４】
計算ノードｃｎは、アプリを実行するノードである。ジョブ管理サーバｊｍｓは、ジョブ実行のスケジュールやステージング指示を出すノードである。
【００３５】
代表ステージングサーバｒｓは、ステージング処理を行うノードである。具体的には、代表ステージングサーバｒｓは、ジョブ運用開始時に、ステージングバッファサーバｓｔｇの中から代表ステージングサーバとして選出される。そして、代表ステージングサーバｒｓは、メタデータサーバｍｄｓと、ステージングバッファサーバｓｔｇとの負荷を取得し、ジョブ管理サーバｊｍｓからの問い合わせに対し応答する。ステージングバッファサーバｓｔｇは、メタデータサーバｍｄｓの負荷が高い時に、ステージング処理を一時的に保留しておき、メタデータサーバｍｄｓの負荷が低くなった時に、保留しておいたステージング処理を実行するノードである。
【００３６】
ユーザ端末ｕｔは、並列処理システム２００を利用するユーザが操作するコンピュータである。メタデータサーバｍｄｓは、ファイルのメタデータ処理を担うノードである。ここで、メタデータ処理は、ステージング処理を含む。さらに、メタデータ処理には、ステージング処理以外の処理として、ファイルの最終アクセス時刻を変更する処理や、ファイルのアクセス権限を変更する処理等を含む。実データサーバｒｄｓは、ファイルのＩ／Ｏ処理を担うノードである。
【００３７】
次に、計算ノードｃｎ、ジョブ管理サーバｊｍｓ、代表ステージングサーバｒｓ、ステージングバッファサーバｓｔｇ、メタデータサーバｍｄｓ、実データサーバｒｄｓを総称したノードのハードウェア構成例を示す。
【００３８】
図３は、ノードのハードウェア構成例を示す説明図である。図３において、ノードは、プロセッサ３０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、を含む。また、ノードは、ディスクドライブ３０４およびディスク３０５と、通信インターフェース３０６と、を含む。また、プロセッサ３０１〜ディスクドライブ３０４、通信インターフェース３０６はバス３０７によってそれぞれ接続される。
【００３９】
プロセッサ３０１は、ノードの全体の制御を司る演算処理装置である。また、ノードは、複数のプロセッサを有してもよい。プロセッサ３０１は、例えば、ＣＰＵである。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、プロセッサ３０１のワークエリアとして使用される揮発性メモリである。
【００４０】
ディスクドライブ３０４は、プロセッサ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４が光ディスクドライブである場合、ディスク３０５には、光ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００４１】
通信インターフェース３０６は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０６は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース３０６には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４２】
また、ユーザ端末ｕｔは、図３に示したハードウェアに加え、ディスプレイ、キーボード、マウスといったハードウェアを有する。
【００４３】
図４は、並列処理システム２００の機能構成例を示す説明図である。ジョブ管理サーバｊｍｓは、制御部４０１を有する。制御部４０１は、ジョブスケジューラ４０２を有する。制御部４０１は、記憶装置に記憶されたプログラムを、ジョブ管理サーバｊｍｓのプロセッサ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したジョブ管理サーバｊｍｓのＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、各部の処理結果は、ＲＡＭ３０３や、プロセッサ３０１のレジスタ、プロセッサ３０１のキャッシュメモリ等に格納される。ジョブスケジューラ４０２の詳細な機能と、ジョブ管理サーバｊｍｓが有する情報については、図５で示す。
【００４４】
また、代表ステージングサーバｒｓは、メタデータサーバ負荷状況４１１を有する。また、ステージングバッファサーバｓｔｇは、ステージングバッファ４１２と、ステージングバッファサーバ負荷状況４１３とを有する。メタデータサーバ負荷状況４１１は、各ステージングバッファサーバｓｔｇの負荷状況を示す情報である。ステージングバッファ４１２は、保留されたステージング処理のメタデータ要求が格納される。ステージングバッファサーバ負荷状況４１３は、自身の負荷量が格納される。
【００４５】
メタデータサーバｍｄｓは、先行要求待ちメタデータ要求キュー４１４と、メタデータサーバ性能情報４１５とを有する。先行要求待ちメタデータ要求キュー４１４は、先行すべきメタデータ要求に対するメタデータ処理が終了するまで待ち続けるメタデータ要求が格納される。メタデータサーバ性能情報４１５は、自身の負荷量が格納される。実データサーバｒｄｓは、ディスク４１６を有する。
【００４６】
（ジョブ管理サーバｊｍｓの機能構成例）
図５は、ジョブ管理サーバｊｍｓの機能構成例を示す説明図である。ジョブスケジューラ４０２は、メタデータサーバ負荷管理部５０１と、ステージングバッファサーバ負荷管理部５０２と、ステージング処理スケジューリング部５０３とを有する。ステージング処理スケジューリング部５０３は、算出部５１１と、取得部５１２と、決定部５１３と、生成部５１４とを有する。
【００４７】
また、ジョブ管理サーバｊｍｓは、記憶部５２０を有する。記憶部５２０は、ＲＡＭ３０３やディスク３０５等の記憶領域である。そして、記憶部５２０は、ジョブごとの資源予約管理表５２１と、ステージング予定表５２２と、メタデータサーバ負荷管理表５２３と、ステージングバッファサーバ負荷管理表５２４とを有する。さらに、記憶部５２０は、過去に実行されたジョブ情報ＤＢ５２５と、ステージングでのメタデータ更新順序制約管理表５２６と、設定ファイル５２７とを有する。
【００４８】
ジョブごとの資源予約管理表５２１は、ジョブごとに割り当てられた資源に関する情報を有する。ジョブごとの資源予約管理表５２１の記憶内容の一例は、図６で示す。ステージング予定表５２２は、ジョブのステージングに関する情報を有する。ステージング予定表５２２の記憶内容の一例は、図７で示す。メタデータサーバ負荷管理表５２３は、各メタデータサーバｍｄｓの負荷量を有する。メタデータサーバ負荷管理表５２３の記憶内容の一例は、図１１で示す。ステージングバッファサーバ負荷管理表５２４は、各ステージングサーバｓｔｇの負荷量を有する。ステージングバッファサーバ負荷管理表５２４の記憶内容の一例は、図１２で示す。
【００４９】
過去に実行されたジョブ情報ＤＢ５２５は、過去に実行されたジョブに関する情報を有する。過去に実行されたジョブ情報ＤＢ５２５の記憶内容の一例は、図１３で示す。ステージングでのメタデータ更新順序制約管理表５２６は、ジョブに関するファイルに対するメタデータ処理を実行する順序を示す順序情報を有する。ステージングでのメタデータ更新順序制約管理表５２６の記憶内容の一例は、図１９で示す。設定ファイル５２７は、並列処理システム２００構築時に、並列処理システム２００の管理者等によって作成されるファイルである。具体的には、設定ファイル５２７には、並列処理システム２００に含まれるメタデータサーバｍｄｓの識別ＩＤの一覧や、ステージングバッファサーバｓｔｇの識別ＩＤの一覧を有する。
【００５０】
メタデータサーバ負荷管理部５０１は、メタデータサーバｍｄｓの負荷を管理するサブコンポーネントである。メタデータサーバｍｄｓが複数ある場合には、メタデータサーバ負荷管理部５０１は、複数のメタデータサーバｍｄｓの各メタデータサーバｍｄｓの負荷を管理する。メタデータサーバ負荷管理部５０１は、メタデータサーバｍｄｓに、メタデータサーバｍｄｓの負荷状況を問い合わせた後、ステージング時（ジョブ開始・終了時）に発生しうるメタデータサーバの負荷を算出する。メタデータサーバ負荷管理部５０１による一連の処理は、ジョブ投入時にステージング処理スケジューリング部５０３より依頼のあった時に実行される。
【００５１】
ステージングバッファサーバ負荷管理部５０２は、ステージングバッファサーバｓｔｇの負荷を管理するサブコンポーネントである。ステージングバッファサーバｓｔｇが複数ある場合には、ステージングバッファサーバ負荷管理部５０２は、複数のステージングバッファサーバｓｔｇの各ステージングバッファサーバｓｔｇの負荷を管理する。ステージングバッファサーバ負荷管理部５０２は、ステージングバッファサーバｓｔｇに負荷状況を問い合わせた後、ステージング時に発生しうるステージングバッファサーバｓｔｇの負荷を算出する。ステージングバッファサーバ負荷管理部５０２による一連の処理は、ジョブ投入時にステージング処理スケジューリング部５０３より依頼のあった時に実行される。
【００５２】
ステージング処理スケジューリング部５０３は、メタデータサーバｍｄｓの負荷が高い場合に、ステージング処理をステージングバッファサーバｓｔｇに割り当てるスケジューリングを行うサブコンポーネントである。
【００５３】
まずは、ステージアウトにおける、メタデータサーバｍｄｓの負荷を抑える機能について説明する。算出部５１１は、複数のノードのうちのいずれかが第１のジョブを実行する際に、過去に実行されたジョブ情報ＤＢ５２５を参照して、第１のジョブの実行終了時刻を算出する。過去に実行されたジョブ情報ＤＢ５２５が、図１で説明した実行履歴に相当する。
【００５４】
取得部５１２は、メタデータサーバ負荷管理部５０１から、算出部５１１が算出した実行終了時刻におけるメタデータサーバｍｄｓの負荷量を取得する。メタデータサーバｍｄｓの負荷量の負荷の算出方法として、例えば、メタデータサーバ負荷管理部５０１は、メタデータサーバｍｄｓの過去の負荷量の変動から、時刻に対する負荷量を表すモデル式を生成してもよい。そして、メタデータサーバ負荷管理部５０１は、生成したモデル式に実行終了時刻を入力することにより、実行終了時刻におけるメタデータサーバｍｄｓの負荷量を算出する。
【００５５】
生成部５１４は、取得部５１２が取得した負荷量が所定の閾値以上である場合、ステージングバッファサーバｓｔｇに、第１のジョブの実行結果を有するファイルに対するステージング処理を第１のジョブの実行終了時に実行させるスケジュールデータを生成する。生成したスケジュールデータは、ステージング予定表５２２内に格納される。
【００５６】
また、より正確な負荷量を算出するため、ジョブ管理サーバｊｍｓは、メタデータ処理の対象となるファイルの数に対応するメタデータ処理実行ノードの負荷量を示す負荷情報として、ステージングバッファサーバ負荷管理表５２４を有してもよい。そして、取得部５１２は、複数のファイルの各ファイルに対してステージングを実行する予定時刻を示す予定情報としてステージング予定表５２２を参照して、算出部５１１が算出した実行終了時刻に実行されるステージングの対象となるファイルの数を特定する。次に、取得部５１２は、特定したファイルの数を、メタデータサーバ負荷管理部５０１に送信する。メタデータサーバ負荷管理部５０１は、ステージングバッファサーバ負荷管理表５２４を参照して得られたファイルの数に対応するメタデータサーバｍｄｓの負荷量を、取得部５１２に送信する。取得部５１２は、受信したメタデータサーバｍｄｓの負荷量を、実行終了時刻におけるメタデータサーバｍｄｓの負荷量として取得する。
【００５７】
また、算出部５１１は、ステージアウトの予定時間を算出してもよい。この場合、過去に実行されたジョブ情報ＤＢ５２５は、ジョブの実行を開始した時刻と、ジョブの実行結果を有するファイルに対するステージングを開始した実行開始時刻と、ファイルに対するステージングの実行終了時刻とを含む。そして、算出部５１１は、過去に実行されたジョブ情報ＤＢ５２５を参照して、第１のジョブの実行結果を有するファイルに対するステージングの実行開始時刻と、ステージングの実行終了時刻とを算出する。
【００５８】
次に、取得部５１２は、算出部５１１が算出した実行開始時刻から実行終了時刻までの間に実行されるステージングの対象となるファイルの数を特定する。そして、取得部５１２は、特定したファイルの数と、実行開始時刻から実行終了時刻までの時間の長さを示す情報を、メタデータサーバ負荷管理部５０１に送信する。メタデータサーバ負荷管理部５０１は、時間の長さに基づき算出したファイルの数に対応するメタデータサーバｍｄｓの単位時間当たりの負荷量を、取得部５１２に送信する。単位時間は、例えば、１［秒］でもよいし、１［分］でもよい。取得部５１２は、受信したメタデータサーバｍｄｓの単位時間当たりの負荷量を、実行開始時刻から実行終了時刻までのメタデータサーバｍｄｓの負荷量として取得する。そして、生成部５１４は、取得したメタデータサーバｍｄｓの単位時間当たりの負荷量が所定の閾値以上である場合、スケジュールデータを生成する。
【００５９】
次に、ステージインにおける、メタデータサーバｍｄｓの負荷を抑える機能について説明する。算出部５１１は、第１のジョブを実行する前に、ステージング予定表５２２を参照して、第１のジョブの実行開始時刻を算出する。第１のジョブを実行する前は、例えば、第１のジョブがユーザ端末ｕｔから投入され、ステージング予定表５２２に第１のジョブの実行開始時刻を登録した後である。取得部５１２は、メタデータサーバ負荷管理部５０１から、算出部５１１が算出した実行開始時刻におけるメタデータサーバｍｄｓの負荷量を取得する。生成部５１４は、取得部５１２が取得した負荷量が所定の閾値以上である場合、ステージングバッファサーバｓｔｇに、第１のジョブが参照または更新するファイルに対するステージング処理を第１のジョブの実行開始時に実行させるスケジュールデータを生成する。
【００６０】
また、図２で示したように、並列処理システム２００内にステージングバッファサーバｓｔｇは複数あってもよいため、ステージング処理を実行させる候補となる複数の候補ノードとなるステージングバッファサーバｓｔｇがあってもよい。この場合、ステージング処理スケジューリング部５０３は、ステージング処理を複数のステージングバッファサーバｓｔｇのいずれかに実行させてもよい。具体的には、決定部５１３は、取得部５１２が取得した負荷量が所定の閾値以上である場合、ステージングバッファサーバ負荷管理部５０２から、算出部５１１が算出した実行終了時刻における各ステージングバッファｓｔｇの負荷量を取得する。そして、決定部５１３は、取得した各ステージングバッファｓｔｇの負荷量に基づいて、ステージング処理を実行するステージングバッファｓｔｇを決定する。
【００６１】
（メタデータサーバｍｄｓの機能構成例）
メタデータサーバｍｄｓは、第１のジョブに関するファイルに対するメタデータ処理を実行する際に、第１のジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理の有無を確認する要求を、ジョブ管理サーバｊｍｓに送信する。そして、ジョブ管理サーバｊｍｓは、前述した要求を受け付けたとする。この場合、ジョブ管理サーバｊｍｓは、ステージングでのメタデータ更新順序制約管理表５２６を参照して、第１のジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理があるか否か判断する。第１のジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理があると判断すれば、ジョブ管理サーバｊｍｓは、前に実行すべきメタデータ処理を特定する情報を、メタデータサーバｍｄｓに送信する。前に実行すべきメタデータ処理を特定する情報は、例えば、前に実行すべきメタデータ処理のジョブＩＤである。そして、メタデータサーバｍｄｓは、前に実行すべきメタデータ処理を特定する情報を受け付けた場合、前に実行すべきメタデータ処理を、第１のジョブに関するファイルに対するメタデータ処理より前に実行する。
【００６２】
図６は、ジョブごとの資源予約管理表５２１の記憶内容の一例を示す説明図である。図６に示すジョブごとの資源予約管理表５２１は、レコード６０１〜６０３を有する。
【００６３】
ジョブごとの資源予約管理表５２１は、ジョブＩＤと、ジョブ名と、プロセッサの使用開始時刻と、プロセッサ集合管理構造体と、プロセッサの使用終了時刻というフィールドを含む。ジョブＩＤフィールドには、ジョブを一意に識別するために付与される識別番号となるジョブＩＤが格納される。ジョブＩＤは、配列のインデックスや検索のキーとして利用される。ジョブ名フィールドには、ジョブの名称が格納される。プロセッサの使用開始時刻は、ジョブが計算ノードｃｎのプロセッサの使用を開始する時刻を示す情報が格納される。プロセッサ集合管理構造体フィールドには、ジョブが使用する計算ノードｃｎのプロセッサの一覧が格納される。プロセッサの使用終了時刻フィールドには、ジョブが計算ノードｃｎのプロセッサの使用を終了する時刻を示す情報が格納される。
【００６４】
図７は、ステージング予定表５２２の記憶内容の一例を示す説明図である。図７に示すステージング予定表５２２は、レコード７０１＿１〜３、７０２、７０３を有する。なお、ステージング予定表５２２の各レコードが、スケジュールデータ１０４に相当する。
【００６５】
ステージング予定表５２２は、ジョブＩＤと、ファイルＩＤと、ファイルサイズと、ステージアウト予定時刻と、ステージアウト予定時間と、ステージングを行うノードの識別ＩＤというフィールドを含む。
【００６６】
ジョブＩＤフィールドには、ジョブを一意に識別するために付与される識別番号となるジョブＩＤが格納される。ジョブＩＤは、配列のインデックスや検索のキーとして利用される。ファイルＩＤフィールドには、ステージングするファイルを一意に識別するために付与される識別番号となるファイルＩＤが格納される。ファイルサイズフィールドには、ステージングするファイルのサイズが格納される。ステージアウト予定時間フィールドには、ファイルをステージアウトする場合の予定時刻を示す情報が格納される。ステージアウト予定時間フィールドには、ファイルをステージアウトする場合の予定時間を示す情報が格納される。ステージングを行うノードの識別ＩＤフィールドには、ステージングを行う代表ステージングサーバｒｓまたはステージングバッファサーバｓｔｇの識別情報が格納される。識別情報は、例えば、代表ステージングサーバｒｓやステージングバッファサーバｓｔｇのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスやホスト名である。
【００６７】
なお、図７で示すステージング予定表５２２は、ステージアウトに関するフィールドとして、ステージアウト予定時刻と、ステージアウト予定時間と、ステージングを行うノードの識別ＩＤというフィールドを有するが、これに限らない。ステージング予定表５２２は、ステージインに関するフィールドを有してもよいし、ステージアウトに関するフィールドとステージインに関するフィールドとを有してもよい。
【００６８】
（ジョブ投入時からステージングバッファサーバｓｔｇへステージング処理を依頼するまでの一連の処理について）
次に、ジョブ投入時からステージングバッファサーバｓｔｇへステージング処理を依頼するまでの一連の処理について、図８〜図１０を用いて説明する。図８では、前述した一連の処理について、並列処理システム２００全体のシーケンスを示す。また、図９、図１０では、図８で示す一連の処理を、図２で示した装置ごと、ジョブ管理サーバｊｍｓに関しては図４で示した機能部ごとの処理の順序に並べ替え、かつ、データへのアクセスを示す。
【００６９】
また、図８〜図１０では、ユーザ端末ｕｔが実行する処理のステップ番号を「Ｓｕｔｘ」として示す。ｘは自然数である。また、代表ステージングサーバｒｓ、ステージングバッファサーバｓｔｇ、メタデータサーバｍｄｓが実行する処理のステップ番号を、それぞれ、「Ｓｒｓｘ」、「Ｓｓｔｇｘ」、「Ｓｍｄｓｘ」として示す。同様に、メタデータサーバ負荷管理部５０１、ステージングバッファサーバ負荷管理部５０２、ステージング処理スケジューリング部５０３が実行する処理のステップ番号を、それぞれ「Ｓｍｄｓｌｘ」、「Ｓｓｔｇｌｘ」、「Ｓｓｓｘ」として示す。また、前述の一連の処理のそれぞれの処理を説明した後で、各ステップのより具体的な説明を行う。
【００７０】
図８は、ジョブ投入時からステージングバッファサーバｓｔｇがステージング処理を実行するまでのシーケンスを示す説明図である。図９は、ジョブ投入時からステージングバッファサーバｓｔｇがステージング処理を実行するまでの一連の処理を示すフローチャート（その１）である。また、図１０は、ジョブ投入時からステージングバッファサーバｓｔｇがステージング処理を実行するまでの一連の処理を示すフローチャート（その２）である。まずは、図８で示したシーケンス順に、各ステップを説明する。
【００７１】
ユーザ端末ｕｔは、ジョブを投入する（ステップＳｕｔ１）。ジョブの投入を受け付けたステージング処理スケジューリング部５０３は、ジョブごとの資源予約管理表５２１を更新する（ステップＳｓｓ１）。次に、ステージング処理スケジューリング部５０３は、過去に実行されたジョブ情報ＤＢ５２５を参照して、ステージング予定表５２２を更新する（ステップＳｓｓ２）。ステージング予定表５２２の更新後、ジョブの依存関係が判明するため、ステージング処理スケジューリング部５０３は、依存関係があるジョブについて、ステージングでのメタデータ更新順序制約管理表５２６を更新する。そして、ステージング処理スケジューリング部５０３は、メタデータサーバ負荷管理部５０１への負荷算出依頼を送信する（ステップＳｓｓ３）。ステージング処理スケジューリング部５０３は、メタデータサーバ負荷管理部５０１の負荷算出結果を待ち受ける。
【００７２】
負荷算出依頼を受け付けたメタデータサーバ負荷管理部５０１は、設定ファイル５２７を参照して、メタデータサーバｍｄｓの一覧を取得する（ステップＳｍｄｓｌ１）。次に、メタデータサーバ負荷管理部５０１は、代表ステージングサーバｒｓへの問い合わせとして、メタデータサーバｍｄｓの負荷状況の取得依頼を代表ステージングサーバｒｓに送信する（ステップＳｍｄｓｌ２）。取得依頼送信後、メタデータサーバ負荷管理部５０１は、メタデータサーバ負荷状況４１１に格納された負荷状況を取得する。メタデータサーバ負荷管理部５０１は、取得した負荷状況で、メタデータサーバ負荷管理表５２３を更新する。
【００７３】
取得依頼を受け付けた代表ステージングサーバｒｓは、メタデータサーバｍｄｓへの問い合わせとして、メタデータサーバｍｄｓの性能値の取得依頼をメタデータサーバｍｄｓに送信する（ステップＳｒｓ１）。取得依頼送信後、代表ステージングサーバｒｓは、メタデータサーバ性能情報４１５に格納された性能値を取得する。そして、代表ステージングサーバｒｓは、取得した性能値でメタデータサーバ負荷状況４１１を更新する。
【００７４】
取得依頼を受け付けたメタデータサーバｍｄｓは、メタデータサーバ性能値を取得し（ステップＳｍｄｓ１）、取得した性能値でメタデータサーバ性能情報４１５を更新する。
【００７５】
メタデータサーバ負荷管理部５０１は、代表ステージングサーバｒｓへの問い合わせとして、ステージング対象のファイルを処理するメタデータサーバの取得依頼を送信する（ステップＳｍｄｓｌ３）。
【００７６】
次に、メタデータサーバ負荷管理部５０１は、メタデータサーバの負荷を算出する（ステップＳｍｄｓｌ４）。メタデータサーバ負荷管理部５０１は、算出した負荷を、ステージング処理スケジューリング部５０３に送信する。
【００７７】
ステージング処理スケジューリング部５０３は、ステージング予定表５２２と、メタデータサーバ負荷管理部５０１が算出した負荷とに基づいて、スケジューリング処理を実行する（ステップＳｓｓ４）。次に、ステージング処理スケジューリング部５０３は、ステージングバッファサーバ負荷管理部５０２へのステージングバッファサーバ負荷算出依頼を送信する（ステップＳｓｓ５）。
【００７８】
ステージングバッファサーバ負荷算出依頼を受け付けたステージングバッファサーバ負荷管理部５０２は、設定ファイル５２７を参照して、ステージングバッファサーバｓｔｇの一覧を取得する（ステップＳｓｔｇｌ１）。次に、ステージングバッファサーバ負荷管理部５０２は、ステージングバッファサーバｓｔｇへの問い合わせとして、ステージングバッファサーバの負荷状況取得依頼を送信する（ステップＳｓｔｇｌ２）。負荷状況取得依頼後、ステージングバッファサーバ負荷管理部５０２は、ステージングバッファサーバ負荷状況４１３から、ステージングバッファサーバｓｔｇの負荷状況を取得する。そして、ステージングバッファサーバ負荷管理部５０２は、取得した負荷状況で、ステージングバッファサーバ負荷管理表５２４を更新する。
【００７９】
負荷状況取得依頼を受け付けたステージングバッファサーバｓｔｇは、ステージングバッファサーバ負荷状況４１３を更新する（Ｓｓｔｇ１）。
【００８０】
ステージングバッファサーバ負荷管理部５０２は、ステージングバッファサーバ負荷管理表５２４を参照して、ステージングバッファサーバの負荷を算出する（Ｓｓｔｇｌ３）。ステージングバッファサーバ負荷管理部５０２は、算出した負荷を、ステージング処理スケジューリング部５０３に送信する。
【００８１】
ステージング処理スケジューリング部５０３は、ステージングバッファサーバ負荷管理部５０２が算出した負荷に基づいて、ステージング処理を振り分ける（ステップＳｓｓ６）。
【００８２】
ステージング処理を振り分けられたステージングバッファサーバｓｔｇは、ステージング処理を実行する（ステップＳｓｔｇ２）。次に、図９、図１０における各装置、各機能部内で示す順に、各ステップの詳細について説明する。
【００８３】
（メタデータサーバ負荷管理部５０１の処理）
メタデータサーバ負荷管理部５０１の処理について説明する。ステップＳｍｄｓｌ１の処理として、メタデータサーバ負荷管理部５０１は、設定ファイル５２７等から、メタデータサーバｍｄｓの一覧を取得する。次に、ステップＳｍｄｓｌ２の処理として、メタデータサーバ負荷管理部５０１は、ステップＳｍｄｓｌ１の処理で取得した各メタデータサーバｍｄｓの負荷状況を取得する。メタデータサーバ負荷管理部５０１は、取得した情報を、メタデータサーバ負荷管理表５２３に保存する。そして、ステップＳｍｄｓｌ３の処理として、メタデータサーバ負荷管理部５０１は、代表ステージングサーバｒｓに問い合わせ、ステージング対象のファイルを処理するメタデータサーバｍｄｓを取得する。
【００８４】
次に、ステップＳｍｄｓｌ４の処理として、メタデータサーバ負荷管理部５０１は、メタデータサーバ負荷管理表５２３と、次に示す情報とに基づいて、ステップＳｍｄｓｌ３の処理で取得したメタデータサーバｍｄｓの負荷を算出する。次に示す情報は、ステージング時のメタアクセス数と、ステージインかステージアウトかの処理の種別と、処理の種別に応じた処理の開始時刻と終了時刻とである。これらの情報は、ステージング処理スケジューリング部５０３から受け付ける情報である。また、メタデータサーバｍｄｓの負荷は、具体的には、ＣＰＵ使用率でもよいし、ディスクＩ／Ｏ量でもよいし、ＣＰＵ使用率とディスクＩ／Ｏ量との両方でもよい。ディスクＩ／Ｏ量は、１秒当たりのステージング時のメタアクセス数である。ＣＰＵ使用率は、例えば、下記（１）式によって算出される値である。
【００８５】
ＣＰＵ使用率＝（１秒当たりのステージング時のメタアクセス数）×（メタデータサーバ負荷管理表５２３のＣＰＵ使用率）÷（メタデータサーバ負荷管理表５２３のディスクＩ／Ｏ量）  …（１）
【００８６】
ここで、（１）式を用いた具体的なＣＰＵ使用率の算出例を、メタデータサーバ負荷管理表５２３の記憶内容を示しながら、図１１を用いて説明する。
【００８７】
図１１は、メタデータサーバ負荷管理表５２３の記憶内容の一例を示す説明図である。図１１に示すメタデータサーバ負荷管理表５２３は、レコード１１０１〜１１０３を有する。
【００８８】
メタデータサーバ負荷管理表５２３は、識別ＩＤと、ＣＰＵ使用率と、ディスクＩ／Ｏ量というフィールドを含む。識別ＩＤフィールドには、メタデータサーバｍｄｓを識別する識別ＩＤが格納される。ＣＰＵ使用率フィールドには、メタデータサーバｍｄｓのＣＰＵ使用率が格納される。ディスクＩ／Ｏ量フィールドには、メタデータサーバｍｄｓのディスクＩ／Ｏ量を示す値が格納される。また、ディスクＩ／Ｏ量フィールドで示す［ｏｐｓ］は、ｏｐｅｒａｔｉｏｎ  ｐｅｒ  ｓｅｃｏｎｄのことであり、１秒当たりのオペレーション数を示す。
【００８９】
図１１を用いて、ＣＰＵ使用率の算出例について示す。ここで、ステップＳｍｄｓｌ３で取得したメタデータサーバｍｄｓの識別ＩＤが、ｍｄｓ＿００であるとする。また、ステージング時間１０分の間に発生するメタアクセス数が５０００００回であるとする。このため、１秒間に５０００００÷６００≒８００回のメタアクセスが発生することになる。図１１に示したレコード１１０１から、識別ＩＤがｍｄｓ＿００であるメタデータサーバｍｄｓは、ディスクＩ／Ｏ量が１５０５［ｏｐｓ］である時に、ＣＰＵ使用率が１３．０［％］である。従って、メタデータサーバ負荷管理表５２３は、（１）式に従って、ＣＰＵ使用率を下記のように算出する。
【００９０】
ＣＰＵ使用率＝８００×１３÷１５０５≒７．０［％］
【００９１】
（ステージングバッファサーバ負荷管理部５０２の処理）
次に、ステージングバッファサーバ負荷管理部５０２の処理について説明する。ステップＳｓｔｇｌ１の処理として、ステージングバッファサーバ負荷管理部５０２は、設定ファイル５２７等から、ステージングバッファサーバｓｔｇの一覧を取得する。次に、ステップＳｓｔｇｌ２の処理として、ステージングバッファサーバ負荷管理部５０２は、ステップＳｓｔｇｌ１の処理で取得した各ステージングバッファサーバｓｔｇに問い合わせ、ステージングバッファサーバｓｔｇの負荷状況を取得する。そして、ステージングバッファサーバ負荷管理部５０２は、取得した情報を、ステージングバッファサーバ負荷管理表５２４に保存する。
【００９２】
そして、ステップＳｓｔｇｌ３の処理として、ステージングバッファサーバ負荷管理部５０２は、ステージングバッファサーバ負荷管理表５２４と、次に示す情報とに基づいて、ステージング処理時のステージングバッファサーバｓｔｇの負荷を算出する。ここで、算出対象となるステージングバッファサーバｓｔｇは、ステップＳｓｔｇｌ１の処理で取得した各ステージングバッファサーバｓｔｇである。また、次に示す情報は、ステージング時のメタアクセス数と、ステージインかステージアウトかの処理の種別と、処理の種別に応じた処理の開始時刻と終了時刻とである。これらの情報は、ステージング処理スケジューリング部５０３から受け付ける情報である。また、ステージングバッファサーバｓｔｇの負荷は、ＣＰＵ使用率である。ＣＰＵ使用率は、例えば、下記（２）式によって算出される値である。
【００９３】
ＣＰＵ使用率＝（１秒当たりのステージング時のメタアクセス数）×（ステージングバッファサーバ負荷管理表５２４のＣＰＵ使用率）÷（ステージングバッファサーバ負荷管理表５２４のメタアクセス数）  …（２）
【００９４】
なお、ステージングバッファサーバｓｔｇの負荷に、ディスクＩ／Ｏ量は含めなくてよい。ステージングバッファサーバｓｔｇの負荷に、ディスクＩ／Ｏ量は含めない理由として、ステージング処理は、ステージングバッファサーバｓｔｇのディスクにアクセスしないためである。
【００９５】
ここで、ステージングバッファサーバ負荷管理表５２４の記憶内容を図１２で示しながら、（２）式を用いた具体的なＣＰＵ使用率の算出例を説明する。
【００９６】
図１２は、ステージングバッファサーバ負荷管理表５２４の記憶内容の一例を示す説明図である。図１２に示すステージングバッファサーバ負荷管理表５２４は、レコード１２０１〜１２０３を有する。
【００９７】
ステージングバッファサーバ負荷管理表５２４は、識別ＩＤと、ＣＰＵ使用率と、メタアクセス数、というフィールドを含む。識別ＩＤフィールドには、ステージングバッファサーバｓｔｇを一意に識別可能な識別ＩＤが格納される。ＣＰＵ使用率フィールドには、ＣＰＵ使用率を示す値が格納される。メタアクセス数フィールドには、１秒間当たりのメタアクセス数を示す値が格納される。
【００９８】
そして、ステップＳｓｔｇｌ３の処理では、負荷算出対象のステージングバッファサーバｓｔｇのＩＤが、ｓｓｔｇ＿ｓｖｒ＿００とする。また、ステージング時間１０［分］の間に発生するメタアクセス数が５０００００［回］であるとする。このため、１秒間に５０００００÷６００≒８００［回］のメタアクセスが発生することになる。そして、レコード１２０１から、識別ＩＤがｓｓｔｇ＿ｓｖｒ＿００の各ステージングバッファサーバｓｔｇのディスクＩ／Ｏ量は８１３［ｏｐｓ］の時にＣＰＵ使用率が３．０［％］である。このことから、ステージングバッファサーバ負荷管理部５０２は、（２）式に従って、ステージング処理で発生するＣＰＵ使用率を、下記のように算出する。
【００９９】
ＣＰＵ使用率＝８００×３÷８１３≒３．０［％］
【０１００】
（ステージング処理スケジューリング部５０３の処理）
次に、ステージング処理スケジューリング部５０３の処理について説明する。ステップＳｓｓ１の処理として、ステージング処理スケジューリング部５０３は、ユーザから指示された実行時間と、ジョブごとの資源予約管理表５２１とに基づいて、投入されたジョブのプロセッサと、該当のプロセッサの使用時間および終了時間を決定する。そして、ステージング処理スケジューリング部５０３は、決定した内容で、ジョブごとの資源予約管理表５２１を更新する。
【０１０１】
ここで、図６で示したジョブごとの資源予約管理表５２１を用いて、ステップＳｓｓ１の処理の具体例を説明する。また、並列処理システム２００の計算ノードｃｎのプロセッサ数が６４個であるとする。ジョブＩＤが１４１であるジョブが実行時間２時間、プロセッサ数６４として投入された場合、ステージング処理スケジューリング部５０３は、資源予約管理表５２１を参照して、空きプロセッサ数が６４となる時刻を検索する。図６の例では、ステージング処理スケジューリング部５０３は、空きプロセッサ数が６４となる時刻が１５：５０であることから、１５：５０をプロセッサ使用開始時刻として決定し、ジョブの資源予約管理表５２１へ登録する。
【０１０２】
次に、ステップＳｓｓ２の処理として、ステージング処理スケジューリング部５０３は、決定したジョブの開始時刻および終了時刻から、ステージイン予定時刻と、ステージアウト予定時刻とを算出する。そして、ステージング処理スケジューリング部５０３は、算出結果をステージング予定表５２２に反映する。この時、ステージング処理スケジューリング部５０３は、自身が有する、過去に実行されたジョブ情報ＤＢ５２５に基づいて、ステージイン予定時刻およびステージアウト予定時刻を算出する。ここで、過去に実行されたジョブ情報ＤＢ５２５の記憶内容の一例を図１３で示し、ステップＳｓｓ２の処理を具体的に説明する。
【０１０３】
図１３は、過去に実行されたジョブ情報ＤＢ５２５の記憶内容の一例を示す説明図である。図１３に示す過去に実行されたジョブ情報ＤＢ５２５は、レコード１３０１〜１３０３を有する。
【０１０４】
過去に実行されたジョブ情報ＤＢ５２５は、ジョブＩＤと、ジョブ名と、ジョブ開始日時と、ジョブ終了日時とを有する。さらに、過去に実行されたジョブ情報ＤＢ５２５は、使用プロセッサ数と、ファイルＩＤと、ステージアウト開始日時と、ステージアウト終了日時と、ステージアウト時のメタアクセス数というフィールドを含む。
【０１０５】
ジョブＩＤフィールドには、ジョブを一意に識別するために付与される識別番号となるジョブＩＤが格納される。ジョブ名フィールドには、ジョブの名称が格納される。ジョブ開始日時フィールドには、ジョブが実行を開始した日時を示す情報が格納される。ジョブ終了日時フィールドには、ジョブが実行を終了した日時を示す情報が格納される。使用プロセッサ数フィールドには、ジョブが使用したプロセッサの数が格納される。ファイルＩＤフィールドには、ステージングするファイルを一意に識別するために付与される識別番号が格納される。ステージアウト開始日時フィールドには、ステージアウトを開始した日時を示す情報が格納される。ステージアウト終了日時フィールドには、ステージアウトを終了した日時を示す情報が格納される。ステージアウト時のメタアクセス数フィールドには、ステージアウト時中に発生したメタアクセスの総量が格納される。
【０１０６】
なお、図１３で示す過去に実行されたジョブ情報ＤＢ５２５は、ステージアウトに関するフィールドとして、ステージアウト開始日時と、ステージアウト終了日時と、ステージアウト時のメタアクセス数というフィールドを有するが、これに限らない。過去に実行されたジョブ情報ＤＢ５２５は、ステージインに関するフィールドを有してもよいし、ステージアウトに関するフィールドとステージインに関するフィールドとを有してもよい。
【０１０７】
ステップＳｓｓ２の処理について、ステージング処理スケジューリング部５０３は、投入されたジョブのジョブ名と使用プロセッサ数が同一のジョブ情報を、過去に実行されたジョブ情報ＤＢ５２５から取得する。次に、ステージング処理スケジューリング部５０３は、取得したジョブ情報のステージアウト開始日時、終了日時から、ジョブが実行を開始してからステージアウトまでの時間と、ステージアウトに要した時間を算出する。そして、ステージング処理スケジューリング部５０３は、算出した時間を、ステップＳｓｓ１の処理で決定したジョブのステージイン／ステージアウトの予定時刻の算出に利用する。
【０１０８】
より具体的な例を用いて、ステップＳｓｓ２の処理について説明する。ここで、資源予約管理表５２１のジョブＩＤ＝１３５であるジョブについて、ステージイン予定時刻およびステージアウト予定時刻を算出する例を示す。レコード６０１により、ジョブＩＤ＝１３５であるジョブのジョブ名は、「Ｊｏｂ  Ａ」であり、使用プロセッサ数は、４８である。ステージング処理スケジューリング部５０３は、「ジョブ名：Ｊｏｂ  Ａ」、「使用プロセッサ数：４８」をキーに過去に実行されたジョブ情報ＤＢ５２５を検索すると、レコード１３０１が示すジョブＩＤが１１であるジョブが類似ジョブであることを特定する。そして、ジョブＩＤが１１であるジョブは、レコード１３０１が示すように、ジョブ開始時刻である１１：３５から４０分後の１２：１５にはステージアウトが開始している。
【０１０９】
このため、ステージング処理スケジューリング部５０３は、ステージング予定表５２２のステージアウト予定時刻を、レコード６０１のプロセッサの使用開始時刻の４０分後である１５：４０であるとして、ステージング予定表５２２を更新する。ステージアウト予定時間は、過去に実行されたジョブ情報ＤＢ５２５のステージアウト開始日時とステージアウト終了日時の差とする。
【０１１０】
次に、ステップＳｓｓ３の処理について、ステージング処理スケジューリング部５０３は、メタデータサーバ負荷管理部５０１に、メタデータサーバｍｄｓの負荷算出依頼を送信する。例えば、ステージング処理スケジューリング部５０３は、ステージアウト予定時刻の負荷量を取得する場合、引数として、ステップＳｓｓ２で算出したステージアウト予定時刻のメタデータアクセス数、ステージアウト予定時間を含めて、負荷算出依頼を送信する。また、ステージング処理スケジューリング部５０３は、ステージイン予定時刻の負荷量を取得する場合、引数として、ステップＳｓｓ２で算出したステージイン予定時刻のメタデータアクセス数、ステージイン予定時間を含めて、負荷算出依頼を送信する。
【０１１１】
ここで、ステージング予定表５２２の例を用いると、１５：４０にステージアウトが始まるファイルは、ジョブＩＤが１３５であるジョブが扱うファイル３個で、ステージアウト予定時間は９分であることが分かる。そして、ステージング処理スケジューリング部５０３は、メタアクセス数としてステージアウトが始まるファイル数と、ステージアウト予定時間とをメタデータサーバ負荷管理部５０１に送信する。メタアクセス数とステージアウト予定時間とを送信することにより、ステージング処理スケジューリング部５０３は、メタデータサーバｍｄｓで発生しうるＣＰＵ使用率とディスクＩ／Ｏ量を取得する。
【０１１２】
そして、ステップＳｓｓ４の処理について、ステージング処理スケジューリング部５０３は、ステップＳｓｓ３で取得したメタデータサーバｍｄｓの負荷を、ステージアウト処理を行っている全てのジョブに対して求める。メタデータサーバｍｄｓの負荷は、メタデータ処理量を表すことになる。次に、ステージング処理スケジューリング部５０３は、メタデータサーバｍｄｓでステージアウト処理を実行する予定のジョブによる負荷の合計が、並列処理システム２００の管理者が設定した所定の閾値を超えるか否かを判断する。そして、前述した合計が所定の閾値を超えた場合、ステージング処理スケジューリング部５０３は、ステージング処理の一部または全てをステージングバッファサーバｓｔｇがステージング処理するように、スケジュールする。
【０１１３】
ここで、ステップＳｓｓ４の処理の具体例について、図１４を用いて説明する。まず、ステップＳｓｓ２の処理について、ジョブＩＤが１、２である２つのジョブが並列分散ファイルシステム２０１上で実行中であるとする。ステージング処理スケジューリング部５０３は、ステップＳｓｓ３で取得したメタデータサーバｍｄｓの負荷に基づいて、サンプリング間隔ごとに、実行中のジョブごとのメタデータサーバのＣＰＵ使用率とディスクＩ／Ｏ量の合算値を算出する。ここで、サンプリング間隔は、並列処理システム２００の管理者が任意に設定可能な値である。
【０１１４】
図１４は、メタデータサーバｍｄｓで発生するＣＰＵ使用率とディスクＩ／Ｏ量との一例を示す説明図である。図１４の上部で示す表１４００は、時刻１２：００から１２：０１までの間にメタデータサーバで発生するＣＰＵ使用率とディスクＩ／Ｏ量を示す。図１４の上部で示す表１４００は、レコード１４０１＿１〜３、１４０２を有する。
【０１１５】
そして、ステージング処理スケジューリング部５０３は、表１４００に基づいて、各メタデータサーバｍｄｓに発生しうるＣＰＵ使用率とディスクＩ／Ｏ量とを算出し、図１４の下部で示す表１４１０を得る。図１４の下部で示す表１４１０は、レコード１４１１〜１４１３を有する。
【０１１６】
ここで、並列処理システム２００の管理者が設定したＣＰＵ使用率の閾値が８０［％］であり、ディスクＩ／Ｏ量が１００００［ｏｐｓ］であるとする。時刻１２：００から１２：０１までの間は、識別ＩＤがｍｄｓ＿００であるメタデータサーバｍｄｓに発生するＣＰＵ使用率が８７．３［％］であるため、並列処理システム２００の管理者が設定したＣＰＵ使用率の閾値を上回る。このため、ステージング処理スケジューリング部５０３は、ジョブＩＤが２であるジョブによるステージアウト処理をステージングバッファサーバｓｔｇへ一時的に転送することを決定する。
【０１１７】
そして、ステップＳｓｓ５の処理では、ステップＳｓｓ４の処理で、決定したステージアウト処理を対象とする。そして、ステージング処理スケジューリング部５０３は、ステップＳｓｓ３の処理で求めたメタアクセス数と、ステージアウト予定時間とをステージングバッファサーバ負荷管理部５０２に送信する。メタアクセス数と、ステージアウト予定時間とを送信することにより、ステージング処理スケジューリング部５０３は、対象とするステージアウト処理を各ステージングバッファサーバｓｔｇで実行することになった場合のＣＰＵ使用率を取得する。
【０１１８】
ここで、ステップＳｓｓ５の処理の具体例について、図１５を用いて説明する。そして、ステップＳｓｓ５の処理の具体例では、ジョブＩＤが２のジョブによるステージングアウト処理が、ステージングバッファサーバｓｔｇへ一時的に転送すると決定された処理である。ステップＳｓｓ５の処理において、ステージング処理スケジューリング部５０３は、メタアクセス数とステージアウト予定時間を、ステージングバッファサーバ負荷管理部５０２に送信する。メタアクセス数とステージアウト予定時間を送信したことにより取得したＣＰＵ使用率を、図１５で示す。
【０１１９】
図１５は、ステージングバッファサーバｓｔｇで発生するＣＰＵ使用率の一例を示す説明図である。図１５で示す表１５００は、レコード１５０１〜１５０３を有する。表１５００は、ステージングバッファサーバｓｔｇへ一時的に転送すると決定されたステージアウト処理を実行する時刻１２：００から１２：０１までの間に、各ステージングバッファサーバで発生するＣＰＵ使用率の例である。
【０１２０】
次に、ステップＳｓｓ６の処理について、ステージング処理スケジューリング部５０３は、ＣＰＵ使用率が最も低いステージングバッファサーバｓｔｇに、ステップＳｓｓ４の処理で決定したステージング処理の要求を送信する。
【０１２１】
ここで、ステップＳｓｓ６の処理の具体例について、図１５の例を用いて説明する。ステージング処理スケジューリング部５０３は、ＣＰＵ使用率が最も低い、識別ＩＤがｓｓｔｇ＿ｓｖｒ＿０２となるステージングバッファサーバｓｔｇに、ステージアウト処理の要求を送信する。
【０１２２】
（ステージングバッファサーバｓｔｇの処理）
次に、ステージングバッファサーバｓｔｇの処理について説明する。ステップＳｓｔｇ１の処理について、ステージングバッファサーバｓｔｇは、自身のＣＰＵ使用率やディスクＩ／Ｏ量を取得し、取得した情報をステージングバッファサーバ負荷状況４１３に保存する。図１６を用いて、ステージングバッファサーバ負荷状況４１３を説明する。
【０１２３】
図１６は、ステージングバッファサーバ負荷状況４１３の一例を示す説明図である。図１６で示すステージングバッファサーバ負荷状況４１３は、レコード１６０１を有する。ステージングバッファサーバ負荷状況４１３は、ＣＰＵ使用率と、メタアクセス数とを有する。ＣＰＵ使用率フィールドには、負荷状況取得時点でのステージングバッファサーバｓｔｇのＣＰＵ使用率が格納される。メタアクセス数フィールドには、負荷状況取得時点でのステージングバッファサーバｓｔｇのメタアクセス数が格納される。
【０１２４】
ステップＳｓｔｇ２の処理について、ステージングバッファサーバｓｔｇは、保留したステージング処理を実行する。具体的には、ステージングバッファサーバｓｔｇは、メタデータサーバｍｄｓの負荷状況を代表ステージングサーバｒｓに問い合わせ、保留したステージング処理を実行する。このとき、ステージングバッファサーバｓｔｇは、ステージング要求により、メタデータサーバｍｄｓの負荷が並列処理システム２００の管理者が設定したＣＰＵ使用率の閾値を超えない時刻に、前述のステージング処理が発生するように設定する。
【０１２５】
ステップＳｓｔｇ２の処理の具体例について、図１７を用いて説明する。ステージングバッファサーバｓｔｇは、代表ステージングサーバｒｓに問い合わせ、メタデータサーバｍｄｓで発生するＣＰＵ使用率にステージング処理を加えても、前述したＣＰＵ使用率の閾値を超えない時刻に、ステージング処理の実行開始時間を決定する。ここで、メタデータサーバｍｄｓのＣＰＵ使用率を参照する理由は、ステージングバッファサーバｓｔｇでステージング処理を実行すると、メタデータサーバｍｄｓに処理が発生するためである。そして、各時刻におけるメタデータサーバｍｄｓのＣＰＵ使用率の一例を、図１７で示す。
【０１２６】
図１７は、各時刻におけるメタデータサーバｍｄｓのＣＰＵ使用率の一例を示す説明図である。図１７で示す表１７００は、各時刻における識別ＩＤがｍｄｓ＿００のメタデータサーバｍｄｓと、識別ＩＤがｍｄｓ＿００のメタデータサーバｍｄｓとのそれぞれのＣＰＵ使用率を示す。図１７に示す表１７００は、レコード１７０１〜１７０４を有する。
【０１２７】
そして、ステップＳｓｔｇ２の処理の具体例について、図１７に示す表１７００のように、各時刻におけるメタデータサーバｍｄｓのＣＰＵ使用率が、代表ステージングサーバｒｓから得られたとする。また、本ステージング処理によりメタデータサーバｍｄｓのＣＰＵ使用率が４０［％］増加すると算出されており、また、本ステージング処理は、識別ＩＤがｍｄｓ＿００であるメタデータサーバｍｄｓで行うことが決定されているとする。この時、ステージングバッファサーバｓｔｇは、図１７から、１２：０４−１２：０５に識別ＩＤがｍｄｓ＿００であるメタデータサーバｍｄｓに対してステージング処理を行うようにする。
【０１２８】
（メタデータサーバｍｄｓの処理）
次に、メタデータサーバｍｄｓの処理について説明する。ステップＳｍｄｓ１の処理として、各メタデータサーバｍｄｓは、代表ステージングサーバｒｓからの問い合わせに応じて、自サーバの性能値と、ファイルの識別子とを通知する。
【０１２９】
（ステージングするデータ間でデータの順序制約がある場合の処理）
順序制約がある場合の処理は、メタデータ処理間で使用するファイルに依存関係のあるファイルを扱う場合に発生する。例えば、メタデータ処理に含まれるステージング処理Ａとステージング処理Ｂの２つのステージング処理があるとして、本来であればステージング処理Ａが実行された後に、ステージング処理Ｂの順番で実行される場合を想定する。このように想定される例としては、ステージング処理Ｂでアクセスするファイルの中に、ステージング処理Ａのファイルパスが含まれているとすると、ステージング処理Ｂ実行前にステージング処理Ａを実行することになる。順序制約がある場合の一連の処理のフローチャートについて、図１８を用いて説明する。
【０１３０】
図１８は、ステージングするデータ間でデータの順序制約がある場合の一連の処理を示すフローチャートである。メタデータサーバｍｄｓは、対象のメタデータ要求より先行処理すべきメタデータ要求の存在を確認する（ステップＳ１８０１）。具体的には、各メタデータサーバｍｄｓは、ステージング処理スケジューリング部５０３に問い合わせて、先行処理すべきメタデータ要求の存在を確認する。ステップＳ１８０１の処理のより具体的な説明は、図１９で行う。
【０１３１】
次に、メタデータサーバｍｄｓは、先行処理すべきメタデータ要求があるか否かを判断する（ステップＳ１８０２）。先行処理すべきメタデータ要求がある場合（ステップＳ１８０２：Ｙｅｓ）、メタデータサーバｍｄｓは、対象のメタデータ要求を、先行要求待ちメタデータ要求キュー４１４に登録する（ステップＳ１８０３）。次に、メタデータサーバｍｄｓは、先行要求待ちメタデータ要求キューから、メタデータ要求を取り出す（ステップＳ１８０４）。
【０１３２】
そして、メタデータサーバｍｄｓは、取り出したメタデータ要求より先行処理すべきメタデータ要求が処理済か否かを判断する（ステップＳ１８０５）。取り出したメタデータ要求より先行処理すべきメタデータ要求が処理済でない場合（ステップＳ１８０５：Ｎｏ）、メタデータサーバｍｄｓは、先行処理すべきメタデータ要求が、先行要求待ちメタデータ要求キュー４１４に含まれるか否かを判断する（ステップＳ１８０６）。先行処理すべきメタデータ要求が先行要求待ちメタデータ要求キュー４１４に含まれる場合（ステップＳ１８０６：Ｙｅｓ）、メタデータサーバｍｄｓは、先行処理すべきメタデータ要求を、対象のメタデータ要求より前に移動する（ステップＳ１８０７）。ステップＳ１８０７の処理終了後、または、先行要求待ちメタデータ要求キュー４１４に含まれない場合（ステップＳ１８０６：Ｎｏ）、メタデータサーバｍｄｓは、ステップＳ１８０５の処理に移行する。
【０１３３】
また、先行処理すべきメタデータ要求がない場合（ステップＳ１８０２：Ｎｏ）、または、取り出したメタデータ要求より先行処理すべきメタデータ要求が処理済である場合（ステップＳ１８０５：Ｙｅｓ）、メタデータサーバｍｄｓは、対象のメタデータ要求によるメタデータ処理を実行する（ステップＳ１８０８）。ステップＳ１８０８の処理終了後、メタデータサーバｍｄｓは、一連の処理を終了する。
【０１３４】
図１９は、ステージングでのメタデータ更新順序制約管理表５２６の記憶内容の一例を示す説明図である。図１９に示すステージングでのメタデータ更新順序制約管理表５２６は、レコード１９０１〜１９０４を有する。
【０１３５】
ステージングでのメタデータ更新順序制約管理表５２６は、ジョブＩＤと、依存するジョブというフィールドを含む。ジョブＩＤフィールドには、ステージング処理を含むメタデータ要求を行うジョブの識別子となるジョブＩＤを示す値が格納される。依存するジョブフィールドには、該当のステージング処理において、該当のメタデータ処理が依存するステージング処理を行うジョブの識別子となるジョブＩＤが格納される。
【０１３６】
例えば、レコード１９０１は、ジョブＩＤが１２であるジョブのステージング処理のメタデータ要求の中に、先行して処理すべきメタデータ要求があることを示す。先行して処理すべきメタデータ要求は、ジョブＩＤが８であるジョブのステージング処理に含まれる。このため、メタデータサーバｍｄｓは、ジョブＩＤが８であるジョブのステージング処理が完了するまで、ジョブＩＤが１２であるジョブのステージング処理を保留する。
【０１３７】
以上説明したように、ジョブ管理サーバｊｍｓは、ステージアウトに関して、ジョブの実行履歴からジョブの実行終了時刻を求め、求めた時刻のメタデータサーバの負荷が高ければ、求めた時刻にステージングバッファサーバにステージアウトさせる。これにより、ジョブ管理サーバｊｍｓは、メタデータサーバｍｄｓが負荷集中する可能性が高い時刻がわかり、メタデータサーバｍｄｓの負荷を抑えることができる。
【０１３８】
また、ジョブ管理サーバｊｍｓは、ジョブのスケジューリング結果から、実行終了時刻におけるステージアウトが発生するファイルの数を特定し、特定したファイルの数に対応するメタデータサーバｍｄｓの負荷量を取得してもよい。このように、ジョブ管理サーバｊｍｓは、未来に確実に起こるステージアウトが発生するファイルの数を用いて、実行終了時刻におけるメタデータサーバｍｄｓの負荷量を取得する。従って、ジョブ管理サーバｊｍｓは、メタデータサーバｍｄｓの過去の負荷量だけを用いる場合より、より精度の良い実行終了時刻におけるメタデータサーバｍｄｓの負荷量を取得することができる。そして、ジョブ管理サーバｊｍｓは、実際には実行終了時刻におけるメタデータサーバｍｄｓの負荷量が所定の閾値を超えたのに、超えないと誤判断してメタデータサーバｍｄｓにステージング処理をさせてしまうという可能性を低くすることができる。
【０１３９】
また、ジョブ管理サーバｊｍｓは、ジョブのステージアウト予定時間を算出し、ステージアウト予定時間においてステージアウトが発生するファイルの数を特定し、ファイルの数に対応するメタデータサーバｍｄｓの単位時間当たりの負荷量を取得してもよい。これにより、ジョブ管理サーバｊｍｓは、ステージアウト予定時間が、ある程度の期間ある場合でも、メタデータサーバｍｄｓの負荷を抑えることができる。
【０１４０】
また、ジョブ管理サーバｊｍｓは、ステージインに関して、ジョブのスケジューリング結果からジョブの実行開始時刻を求め、求めた時刻のメタデータサーバの負荷が高ければ、求めた時刻にステージングバッファサーバにステージインさせる。これにより、ジョブ管理サーバｊｍｓは、メタデータサーバｍｄｓが負荷集中する可能性が高い時刻がわかり、メタデータサーバｍｄｓの負荷を抑えることができる。
【０１４１】
また、メタデータサーバｊｍｓは、ジョブに関するファイルに対するメタデータ処理を実行する際に、ジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理の有無を確認する要求を、ジョブ管理サーバｊｍｓに送信する。これにより、並列処理システム２００は、依存関係があるメタデータ処理も、正しく処理することができる。
【０１４２】
また、ジョブ管理サーバｊｍｓは、複数のステージングバッファサーバｓｔｇから、各ステージングバッファサーバｓｔｇの負荷量に基づいて、ステージング処理を実行させるステージングバッファサーバｓｔｇを決定してもよい。これにより、ジョブ管理サーバｊｍｓは、各ステージングバッファサーバｓｔｇの間で、負荷を分散することができる。
【０１４３】
なお、本実施の形態で説明した並列処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本並列処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本並列処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１４５】
（付記１）プロセッサとメモリとを有する複数のノードを有する並列処理装置であって、
前記複数のノードのうちのジョブのスケジューリング処理を実行する特定のノードは、
前記複数のノードのうちのいずれかが第１のジョブを実行する際に、前記ジョブの実行時間を記録した実行履歴を参照して、前記第１のジョブの実行が終了する実行終了時刻を算出し、
前記複数のノードのうちのファイルのメタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷を管理する負荷管理ノードから、算出した前記実行終了時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、２つの記憶領域の間でファイルを移動するステージングによって発生する前記メタデータ処理を実行するステージング実行ノードに、前記第１のジョブの実行結果を有するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行終了時に実行させるスケジュールデータを生成する、
ことを特徴とする並列処理装置。
【０１４６】
（付記２）前記負荷管理ノードは、前記メタデータ処理の対象となるファイルの数に対応する前記メタデータ処理実行ノードの負荷量を示す負荷情報を有しており、
前記特定のノードは、
複数のファイルの各ファイルに対してステージングを実行する予定時刻を示す予定情報を参照して、算出した前記実行終了時刻に実行されるステージングの対象となるファイルの数を特定し、
前記負荷管理ノードに、特定した前記ファイルの数を送信し、
前記負荷管理ノードは、
前記負荷情報を参照して得られた前記ファイルの数に対応する前記メタデータ処理実行ノードの負荷量を、前記特定のノードに送信し、
前記特定のノードは、
受信した前記メタデータ処理実行ノードの負荷量を、前記実行終了時刻における前記メタデータ処理実行ノードの負荷量として取得する、
ことを特徴とする付記１に記載の並列処理装置。
【０１４７】
（付記３）前記実行履歴は、前記ジョブの実行を開始した時刻と、前記ジョブの実行結果を有するファイルに対するステージングを開始した実行開始時刻と、当該ファイルに対するステージングの実行終了時刻とを含み、
前記特定のノードは、
前記第１のジョブを実行する際に、前記実行履歴を参照して、前記第１のジョブの実行結果を有するファイルに対するステージングの実行開始時刻と、当該ステージングの実行終了時刻とを算出し、
前記予定情報を参照して、算出した前記実行開始時刻から前記実行終了時刻までの間に実行されるステージングの対象となるファイルの数を特定し、
前記負荷管理ノードに、特定した前記ファイルの数と、前記実行開始時刻から前記実行終了時刻までの時間の長さを示す情報とを送信し、
前記負荷管理ノードは、
前記負荷情報を参照して、前記時間の長さに基づき算出した前記ファイルの数に対応する前記メタデータ処理実行ノードの単位時間当たりの負荷量を、前記特定のノードに送信し、
前記特定のノードは、
取得した前記単位時間当たりの負荷量が所定の閾値以上である場合、前記スケジュールデータを生成する、
ことを特徴とする付記２に記載の並列処理装置。
【０１４８】
（付記４）前記特定のノードは、
前記複数のノードのうちのいずれかが前記第１のジョブを実行する前に、前記ジョブがノードの使用を開始する時刻を示す情報に基づいて、前記第１のジョブの実行が開始する実行開始時刻を算出し、
前記負荷管理ノードから、算出した前記実行開始時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、前記ステージング実行ノードに、前記第１のジョブが参照するファイルまたは前記第１のジョブが更新するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行開始時に実行させるスケジュールデータを生成する、
ことを特徴とする付記１〜３のいずれか一つに記載の並列処理装置。
【０１４９】
（付記５）前記特定のノードは、ジョブに関するファイルに対する前記メタデータ処理を実行する順序を示す順序情報を有し、
前記メタデータ処理実行ノードは、
前記第１のジョブに関するファイルに対するメタデータ処理を実行する際に、前記第１のジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理の有無を確認する要求を、前記特定のノードに送信し、
前記特定のノードは、
前記要求を受け付けた場合、前記順序情報を参照して、前記第１のジョブに関するファイルに対するメタデータ処理より前に実行すべきメタデータ処理がある場合、前記前に実行すべきメタデータ処理を特定する情報を、前記メタデータ処理実行ノードに送信し、
前記メタデータ処理実行ノードは、
前記前に実行すべきメタデータ処理を特定する情報を受け付けた場合、前記前に実行すべきメタデータ処理を、前記第１のジョブに関するファイルに対するメタデータ処理より前に実行する、
ことを特徴とする付記１〜４のいずれか一つに記載の並列処理装置。
【０１５０】
（付記６）前記複数のノードは、前記ステージング実行ノードとなる複数の候補ノードを含み、
前記特定のノードは、
取得した前記負荷量が所定の閾値以上である場合、前記複数の候補ノードの各候補ノードの負荷を管理する負荷管理ノードから、算出した前記実行終了時刻における前記各候補ノードの負荷量を取得し、
取得した前記各候補ノードの負荷量に基づいて、前記複数の候補ノードから前記ステージング実行ノードを決定する、
ことを特徴とする付記１〜５のいずれか一つに記載の並列処理装置。
【０１５１】
（付記７）プロセッサとメモリとを有する複数のノードを有する並列処理装置のステージアウト処理方法であって、
前記複数のノードのうちのジョブのスケジューリング処理を実行する特定のノードが、
前記複数のノードのうちのいずれかが第１のジョブを実行する際に、前記ジョブの実行時間を記録した実行履歴を参照して、前記第１のジョブの実行が終了する実行終了時刻を算出し、
前記複数のノードのうちのファイルのメタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷を管理する負荷管理ノードから、算出した前記実行終了時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、２つの記憶領域の間でファイルを移動するステージングによって発生する前記メタデータ処理を実行するステージング実行ノードに、前記第１のジョブの実行結果を有するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行終了時に実行させるスケジュールデータを生成する、
処理を実行することを特徴とするステージアウト処理方法。
【０１５２】
（付記８）プロセッサとメモリとを有する複数のノードを有する並列処理装置のジョブ管理プログラムであって、
前記複数のノードのうちのジョブのスケジューリング処理を実行する特定のノードに、
前記複数のノードのうちのいずれかが第１のジョブを実行する際に、前記ジョブの実行時間を記録した実行履歴を参照して、前記第１のジョブの実行が終了する実行終了時刻を算出し、
前記複数のノードのうちのファイルのメタデータにアクセスするメタデータ処理を実行するメタデータ処理実行ノードの負荷を管理する負荷管理ノードから、算出した前記実行終了時刻における前記メタデータ処理実行ノードの負荷量を取得し、
取得した前記負荷量が所定の閾値以上である場合、２つの記憶領域の間でファイルを移動するステージングによって発生する前記メタデータ処理を実行するステージング実行ノードに、前記第１のジョブの実行結果を有するファイルに対するステージングによって発生する前記メタデータ処理を前記第１のジョブの実行終了時に実行させるスケジュールデータを生成する、
処理を実行させることを特徴とするジョブ管理プログラム。
【符号の説明】
【０１５３】
１０１  並列処理装置
４１１  メタデータサーバ負荷状況
４１２  ステージングバッファ
４１３  ステージングバッファサーバ負荷状況
４１４  先行要求待ちメタデータ要求キュー
４１５  メタデータサーバ性能情報
５０１  メタデータサーバ負荷管理部
５０２  ステージングバッファサーバ負荷管理部
５０３  ステージング処理スケジューリング部
５１１  算出部
５１２  取得部
５１３  決定部
５１４  生成部
５２０  記憶部
５２１  ジョブごとの資源予約管理表
５２２  ステージング予定表
５２３  メタデータサーバ負荷管理表
５２４  ステージングバッファサーバ負荷管理表
５２５  過去に実行されたジョブ情報ＤＢ
５２６  ステージングでのメタデータ更新順序制約管理表
【図１】
2018156142.tif 000003
【図２】
2018156142.tif 000004
【図３】
2018156142.tif 000005
【図４】
2018156142.tif 000006
【図５】
2018156142.tif 000007
【図６】
2018156142.tif 000008
【図７】
2018156142.tif 000009
【図８】
2018156142.tif 000010
【図９】
2018156142.tif 000011
【図１０】
2018156142.tif 000012
【図１１】
2018156142.tif 000013
【図１２】
2018156142.tif 000014
【図１３】
2018156142.tif 000015
【図１４】
2018156142.tif 000016
【図１５】
2018156142.tif 000017
【図１６】
2018156142.tif 000018
【図１７】
2018156142.tif 000019
【図１８】
2018156142.tif 000020
【図１９】
2018156142.tif 000021