(57)【特許請求の範囲】
【請求項１】
チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置であって、
前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録するメモリ使用量記録部と、
複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量に基づいて前記チェックポイントを設定する操作端末に対して前記メモリ使用量記録部に記録されたメモリ使用量を送信する通信部と、
前記メモリ操作命令の実行回数及び前記複数のプロセスにおける前記計算ジョブの実行を待ち合せる同期命令の実行回数を用いて示される位置情報を記録する位置情報記録部と、
を備え、
前記メモリ使用量記録部は、前記位置情報と前記メモリ使用量とを対応付けて記録する、
計算装置。
【請求項２】
前記位置情報は、
前記メモリ操作命令が実行される際に、前記メモリ操作命令の実行回数が増加され、前記同期命令が実行される際に前記同期命令の実行回数が増加される、請求項１に記載の計算装置。
【請求項３】
前記操作端末から、前記位置情報を用いて前記チェックポイントの設定位置を示すメモリイメージ取得指示に関する情報を受け取る指示情報記録部をさらに備え、
前記指示情報記録部は、
前記メモリ操作命令が実行される際に、前記位置情報記録部に記録されている前記位置情報と、前記メモリイメージ取得指示において示された前記チェックポイントの設定位置情報とが一致する場合に、前記チェックポイントにおける前記メモリイメージを取得する、請求項２に記載の計算装置。
【請求項４】
前記計算ジョブが複数回繰り返し実行される場合、
前記メモリ使用量記録部は、
初回に実行される前記計算ジョブ実行中のメモリ操作命令に応じて前記メモリ使用量を記録し、
前記指示情報記録部は、
前記メモリ使用量に基づいて前記操作端末において決定された前記チェックポイントの設定位置を受け取る、請求項３に記載の計算装置。
【請求項５】
前記計算ジョブが複数回繰り返し実行される場合、
前記メモリ使用量記録部は、
前記計算ジョブが実行される毎に前記メモリ使用量を更新し、
前記指示情報記録部は、
前記更新されたメモリ使用量に基づいて前記操作端末において決定された前記チェックポイントの設定位置を受け取る、請求項３に記載の計算装置。
【請求項６】
チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置であって、
前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録するメモリ使用量記録部と、
複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量に基づいて前記チェックポイントを設定する操作端末に対して前記メモリ使用量記録部に記録されたメモリ使用量を送信する通信部と、
前記メモリ操作命令を実行する際に操作されるメモリ上の実行アドレス及び前記複数のプロセスにおける前記計算ジョブの実行を待ち合せる同期命令の実行回数を用いて示される位置情報を記録する位置情報記録部と、
を備え、
前記メモリ使用量記録部は、前記位置情報と前記メモリ使用量とを対応付けて記録する、
計算装置。
【請求項７】
チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置と、前記計算装置に対して前記チェックポイント情報を送信する操作端末とを備える演算処理システムであって、
前記計算装置は、
前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録するメモリ使用量記録部と、
前記操作端末に対して前記メモリ使用量記録部に記録されたメモリ使用量を送信する通信部と、
前記メモリ操作命令の実行回数及び複数のプロセスにおける前記計算ジョブの実行を待ち合せる同期命令の実行回数を用いて示される位置情報を記録する位置情報記録部と、
を有し、
前記メモリ使用量記録部は、前記位置情報と前記メモリ使用量とを対応付けて記録し、
前記操作端末は、
複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量を表示し、ユーザから前記チェックポイントの設定位置に関する情報の入力を受け付ける、演算処理システム。
【請求項８】
チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置において実行されるチェックポイント設定方法であって、
前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録し、
複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量に基づいて前記チェックポイントを設定する操作端末に対して前記記録したメモリ使用量を送信し、
前記メモリ操作命令の実行回数及び前記複数のプロセスにおける前記計算ジョブの実行を待ち合せる同期命令の実行回数を用いて示される位置情報と、前記メモリ使用量と、を対応付けて記録する、
チェックポイント設定方法。
【請求項９】
チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置のコンピュータに実行させるプログラムであって、
前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録するステップと、
複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量に基づいて前記チェックポイントを設定する操作端末に対して前記記録したメモリ使用量を送信するステップと、
前記メモリ操作命令の実行回数及び前記複数のプロセスにおける前記計算ジョブの実行を待ち合せる同期命令の実行回数を用いて示される位置情報と、前記メモリ使用量と、を対応付けて記録するステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算装置に関し、特にチェックポイントを設定してメモリイメージを取得する計算装置に関する。
【背景技術】
【０００２】
ハイパフォーマンスコンピューティングの分野においては、大規模計算を行うために、多数の計算ノードをネットワークを介して接続した計算クラスタが用いられる。計算クラスタの大規模化に伴いハードウェア部品も増加している。そのため、計算ノードが、障害などに遭遇する頻度が高まっている。その結果、問題発生時におけるジョブのリカバリがますます重要になってきている。ジョブのリカバリ方法の一つを以下に説明する。計算ノードは、定期的にチェックポイントを設定し、設定されたチェックポイントにおいてメモリイメージを採取及び保存する。計算ノードは、問題発生時に、直前のチェックポイントのメモリイメージを復元し、ジョブをリスタートする。このリカバリ方法の場合、リスタートのために、チェックポイントでジョブを構成する全プロセスのメモリイメージを保存する必要があり、ジョブを構成するプロセス数とそれら各プロセスのメモリ使用量の増大が、そのままチェックポイントで採取するメモリイメージの増大につながる。メモリイメージの増大は、保存領域の圧迫、計算ノードから保存領域までの転送負荷の増大などの問題を発生させる。そのため、チェックポイントを効率よく設定しメモリイメージを採取する必要がある。
【０００３】
以上の状況において、本分野の大規模計算では、計算クラスタを有効利用するために、各計算ノードのプロセスを用いて協調動作をし、さらに計算を進める分散メモリ並列ジョブが多く利用されている。そして、業界標準であるＭＰＩ(Message Passing Interface)ライブラリを使い、単一プログラムに対して計算データを各プロセスに分割して実行するＳＰＭＤ(Single Program Multiple Data)型のジョブを用いて、大規模計算を行うことが多い。また、本分野の計算方式の一つに、パラメータを変更しながら同一プログラムを繰り返し実行して最適解を求める、パラメータサーベイがあり、シミュレーションの分野などで多く利用されている。
【０００４】
ここで、チェックポイントを効率よく設定する方法として、特許文献１には、実行時間とチェックポイント時間の割合に着目した方法が開示されている。さらに、特許文献２には、ＣＰＵ（Central Processing Unit）使用率及びＩ／Ｏ使用量に着目した方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−０９４４２２号公報
【特許文献２】特開２００６−１７２０６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１及び２に開示されているチェックポイントの設定方法は、チェックポイント設定時点におけるメモリ使用量が考慮されていないため、メモリイメージの増大に起因する問題に対処することができないという問題がある。
【０００７】
本発明はこのような問題を解決するためになされたものであり、メモリイメージの増大を低下させることができる計算装置、演算処理システム、チェックポイント設定方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の態様にかかる計算装置は、チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置であって、前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録するメモリ使用量記録部と、複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量に基づいて前記チェックポイントを設定する操作端末に対して前記メモリ使用量記録部に記録されたメモリ使用量を送信する通信部と、を備えるものである。
【０００９】
本発明の第２の態様にかかる演算処理システムは、チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置と、前記計算装置に対して前記チェックポイント情報を送信する操作端末とを備える演算処理システムであって、前記計算装置は、前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録するメモリ使用量記録部と、前記操作端末に対して前記メモリ使用量記録部に記録されたメモリ使用量を送信する通信部と、を有し、前記操作端末は、複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量を表示し、ユーザから前記チェックポイントの設定位置に関する情報の入力を受け付けるものである。
【００１０】
本発明の第３の態様にかかるチェックポイント設定方法は、チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置において実行されるチェックポイント設定方法であって、前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録し、複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量に基づいて前記チェックポイントを設定する操作端末に対して前記記録したメモリ使用量を送信するものである。
【００１１】
本発明の第４の態様にかかるプログラムは、チェックポイント情報に基づいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する計算装置のコンピュータに実行させるプログラムであって、前記計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録するステップと、複数のプロセスにおける前記メモリ使用量を集計し前記集計したメモリ使用量に基づいて前記チェックポイントを設定する操作端末に対して前記記録したメモリ使用量を送信するステップと、をコンピュータに実行させるものである。
【発明の効果】
【００１２】
本発明により、メモリイメージの増大を低下させることができる計算装置、演算処理システム、チェックポイント設定方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１にかかる計算装置の構成図である。
【図２】実施の形態１にかかる演算処理システムの構成図である。
【図３】実施の形態１にかかる計算装置の構成図である。
【図４】実施の形態１にかかるメモリ操作命令実行位置記録部に記録される情報テーブルを説明した図である。
【図５】実施の形態１にかかる操作端末の構成図である。
【図６】実施の形態１にかかる計算ジョブメモリ使用量テーブルを説明した図である。
【図７】実施の形態１にかかる計算プロセスメモリ使用量テーブルを説明した図である。
【図８】実施の形態１にかかる計算プロセスメモリ使用量テーブルを説明した図である。
【図９】実施の形態１にかかる計算プロセスメモリ使用量テーブルの集計テーブルを説明した図である。
【図１０】実施の形態１にかかる集計テーブルの情報をグラフ化した図である。
【図１１】実施の形態１にかかるチェックポイント実施指示に関する情報を説明した図である。
【図１２】実施の形態１にかかるチェックポイント実施指示記録部に保存される情報テーブルを説明した図である。
【図１３】実施の形態１にかかるメモリ使用量の記録処理の流れを説明した図である。
【図１４】実施の形態１にかかるチェックポイント実施指示の作成処理の流れを説明した図である。
【図１５】実施の形態１にかかるチェックポイント実施処理の流れを説明した図である。
【図１６】実施の形態３にかかるバルクジョブメモリ使用量テーブルを説明した図である。
【図１７】実施の形態４にかかる計算装置の構成図である。
【図１８】実施の形態５にかかる同期チェックポイントの動作を説明した図である。
【図１９】実施の形態５にかかる同期チェックポイントの動作を説明した図である。
【発明を実施するための形態】
【００１４】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１を用いて本発明の実施の形態１にかかる計算装置の構成例について説明する。計算装置１０は、プロセス１１〜１３を備えている。また、それぞれのプロセスは、メモリ使用量記録部１０１と、通信部１０２とから構成されている。また、計算装置１０のそれぞれのプロセスは、通信部１０２を介して操作端末３０と通信を行う。
【００１５】
操作端末３０は、例えば、サーバ装置や、パーソナルコンピュータ等であってもよい。操作端末３０は、プロセス１１〜１３におけるメモリ使用量を集計し、集計したメモリ使用量に基づいて計算装置１０、１１及び２０におけるチェックポイントを設定する。チェックポイントは、メモリイメージを取得するポイントである。計算装置１０において障害が発生し、計算ジョブのリスタートを行う際に、直前のチェックポイントにおいて取得されたメモリイメージを復元し、計算ジョブをリスタートする。操作端末３０は、単一のプログラムに対して計算データを分割して実行しているプロセス１１〜１３からそれぞれのメモリ使用量を収集し、メモリ使用量に関する統計データを生成する。また、操作端末３０は、統計データを確認したユーザからチェックポイント設定指示に関する情報入力を受け付ける。
【００１６】
計算装置１０は、設定されたチェックポイントのタイミングにおいて、障害発生時に計算ジョブのリスタートを行うためのメモリイメージを取得する。計算装置１０は、複数のプロセスの動作を実行する装置であり、サーバ装置や、パーソナルコンピュータ等であってもよい。それぞれのプロセスは、メモリ使用量記録部１０１と、通信部１０２とを備えている。
【００１７】
メモリ使用量記録部１０１は、計算ジョブ実行中のメモリ操作命令に応じてメモリ使用量を記録する。メモリ操作命令とは、例えば、プログラムの実行に必要なメモリを確保するメモリ確保命令や、不要なメモリを解放するメモリ解放命令を含む。メモリ使用量記録部１０１は、例えば、メモリ操作命令の実行指示がなされた場合に、メモリ操作命令の実行前後におけるメモリ使用量を記録してもよい。メモリ操作命令の実行前後のメモリ使用量とは、例えば、メモリ確保命令においては、メモリを確保する前のメモリ使用量とメモリを確保した後のメモリ使用量である。もしくは、メモリ解放命令においては、メモリを解放する前のメモリ使用量とメモリを解放した後のメモリ使用量である。
【００１８】
通信部１０２は、メモリ使用量記録部１０１において記録されたメモリ使用量を操作端末３０に対して送信する。通信部１０２は、メモリ使用量記録部１０１に記録されている情報が更新されるたびにメモリ使用量を操作端末３０に対して送信してもよく、定期的にメモリ使用量記録部１０１に記録されているメモリ使用量を操作端末３０に対して送信してもよい。また、通信部１０２は、メモリ使用量を外部記憶装置等へ記憶し、操作端末３０は、外部記憶装置等に記憶されたメモリ使用量を取得するようにしてもよい。
【００１９】
以上説明したように、図１にかかる計算装置１０を用いることにより、チェックポイントを設定する操作端末３０に対して、計算装置１０におけるメモリ使用量を送信することができる。これにより、操作端末３０を操作するユーザは、メモリ使用量を考慮したチェックポイントを設定することができる。例えば、メモリ使用量が少ないタイミングに、チェックポイントを設定することにより、取得するメモリイメージの容量が増大することを防止することができる。
【００２０】
また、本図においては、計算装置１０が複数のプロセスを有する構成について説明したが、複数の計算装置が単一もしくは複数のプロセスを有してもよい。
【００２１】
続いて、図２を用いて本発明の実施の形態１にかかる演算処理システムの構成例について説明する。演算処理システムは、計算装置１０と、操作端末３０と、記憶装置４０とから構成されている。また、計算装置１０と、操作端末３０と、記憶装置４０とは、ネットワーク５０を介して通信を行う。
【００２２】
計算装置１０は、複数のプロセスを用いて計算ジョブもしくはプログラムを実行する装置である。計算装置１０は、計算ノード等と称されてもよい。また、計算ジョブは、複数のプロセス及びメモリに分散して並列的に処理される分散メモリ並列ジョブと称されてもよい。
【００２３】
操作端末３０は、ユーザから入力される指示情報を、ネットワーク５０を介して計算装置１０へ出力する。ユーザから入力される指示情報は、計算ジョブの実行指示や、計算装置１０におけるチェックポイントの設定指示等を含む。
【００２４】
記憶装置４０は、計算装置１０において計算ジョブを実行するにあたり必要なデータを記憶する装置である。本図においては、記憶装置４０は、独立した装置として説明しているが、例えば、計算装置１０又は操作端末３０に備えられてもよい。もしくは、記憶装置４０は、計算装置１０及び操作端末３０に備えられてもよい。また、本図においては、操作端末３０は、ネットワーク５０を介して計算装置１０と通信を行う構成について説明しているが、計算装置１０と直接接続して通信を行ってもよい。
【００２５】
続いて、図３を用いて本発明の実施の形態１にかかる計算装置１０の詳細な構成例について説明する。計算装置１０は、複数の計算プロセスから構成される。以下に、複数の計算プロセスのうち計算プロセス１２０の構成例について説明する。なお、他の計算プロセスの構成も計算プロセス１２０の構成と同様である。
【００２６】
計算プロセス１２０は、メモリ使用量記録部１０１と、通信部１０２と、ユーザプログラム１０３と、分散メモリ並列部１０６と、チェックポイント実施指示記録部１０７と、メモリ操作命令実行位置記録部１０８と、メモリ管理部１０９と、チェックポイント実施部１１０とを備えている。分散メモリ並列部１０６は、メモリ操作命令実行部１０４と、同期命令実行部１０５と、を有している。
【００２７】
ユーザプログラム１０３は、複数の計算プロセスを用いて実行されるプログラムである。つまり、ユーザプログラム１０３は、各計算プロセスにおいて計算を実行するために必要な命令列が規定されている。
【００２８】
分散メモリ並列部１０６は、計算プロセス１２０においてユーザプログラム１０３を実行するために用いられる複数のライブラリが格納されている。分散メモリ並列部１０６に格納されているライブラリが提供する機能には、メモリ操作命令もしくは同期命令等が含まれている。ここで、分散メモリ並列部１０６において、メモリ操作命令を実行する要素をメモリ操作命令実行部１０４とし、同期命令を実行する要素を同期命令実行部１０５とする。
【００２９】
メモリ操作命令は、ユーザプログラム１０３を実行するにあたり必要なメモリの確保もしくは不要なメモリの解放をメモリ管理部１０９に依頼する命令である。同期命令は、例えば、複数の計算プロセスにおいて計算ジョブが実行されるＳＰＭＤプログラムにおいて全計算プロセスの待ち合わせを実行する命令である。
【００３０】
メモリ使用量記録部１０１は、メモリ操作命令が実行される前後のメモリ使用量と、メモリ操作命令実行位置記録部１０８とに記録されたメモリ操作命令実行位置を記録する。また、メモリ使用量記録部１０１は、通信部１０２を介して記憶装置４０へ、記録したメモリ使用量を送信する。もしくは、メモリ使用量記録部１０１は、通信部１０２を介して操作端末３０へ記録したメモリ使用量を通知してもよい。
【００３１】
メモリ操作命令実行位置記録部１０８は、メモリ操作命令及び同期命令を実行する際に呼び出され、メモリ操作命令の実行位置を記録する。メモリ操作命令実行位置記録部１０８は、図４に示されるテーブル１０８−１の形式によりメモリ操作命令の実行位置を記録してもよい。メモリ操作命令の実行位置は、同期命令が実行された回数と、メモリ操作命令が実行された回数を用いて定められる。本図においては、例えば、メモリ操作命令実行部１０４において実行されたメモリ操作命令は、同期命令がまだ実行されておらず、メモリ確保命令及びメモリ確保命令がそれぞれ１回実行された位置であることを示している。
【００３２】
図３に戻り、チェックポイント実施指示記録部１０７は、チェックポイント実施指示において指定された位置と、メモリ操作命令実行位置記録部１０８に記録されているメモリ操作命令の実行位置とから、チェックポイント実施可否を判定する。チェックポイント実施指示は、ユーザから入力された情報に基づいて操作端末３０が生成する情報である。チェックポイント実施指示には、チェックポイントを実施する位置が示されている。チェックポイント実施可能と判定した場合、チェックポイント実施指示記録部１０７は、チェックポイント実施部１１０を呼び出してチェックポイントを実施する。ここで、チェックポイントの実施とは、チェックポイントを設定しメモリイメージを採取することを意図する。
【００３３】
チェックポイント実施部１１０は、実行中の計算プロセスのメモリイメージを記憶装置４０に記憶する。メモリ管理部１０９は、メモリの確保や解放等を実行し、計算プロセスが利用するメモリを管理する。
【００３４】
続いて、図５を用いて本発明の実施の形態１にかかる操作端末３０の構成例について説明する。操作端末３０は、ユーザに対して計算ジョブのメモリ使用量を表示し、ユーザから計算装置１０に対する操作指示に関する情報を受け付ける。
【００３５】
メモリ使用量取得部３１は、記憶装置４０に記憶されたメモリ使用量に関する情報を抽出する。もしくは、メモリ使用量取得部３１は、計算装置１０のメモリ使用量記録部１０１からメモリ使用量に関する情報を受け取ってもよい。メモリ使用量取得部３１は、メモリ使用量に関する情報として、図６のように管理された計算ジョブメモリ使用量テーブル１０１−１を受け取ってもよい。以下に、計算ジョブメモリ使用量テーブル１０１−１の構成について説明する。
【００３６】
図６の計算ジョブメモリ使用量テーブル１０１−１は、計算ジョブもしくは実行するユーザプログラムを識別するジョブＩＤ１０１−２と、プロセスＩＤ１０１−３と、計算プロセスメモリ使用量テーブル１０１−４とから構成される。プロセスＩＤ１０１−３は、計算装置１０において実行される計算プロセスの識別子である。また、計算プロセスメモリ使用量テーブル１０１−４は、各計算プロセスにおいて使用されたメモリ使用量である。計算プロセスメモリ使用量テーブル１０１−４は、計算プロセス１２０のメモリ使用量記録部１０１において記録されたメモリ使用量が設定される。ジョブＩＤ１０１−２は、計算装置１０において実行されている計算ジョブの識別子である。ジョブＩＤ１０１−２には、一番若番のプロセスＩＤ１０１−３が設定されてもよい。
【００３７】
図５に戻り、メモリ使用量集計部３２は、計算ジョブメモリ使用量テーブル１０１−１に含まれる全てのプロセスＩＤ１０１−３の計算プロセスメモリ使用量テーブル１０１−４を集計する。操作端末３０は、メモリ使用量集計部３２において集計した結果を、操作端末３０の表示部（図示せず）に表示する。
【００３８】
チェックポイント採取位置作成部３３は、ユーザから入力されるチェックポイントを実施するタイミングに関する情報に基づいて、チェックポイント実施指示を作成する。ユーザは、計算プロセスメモリ使用量テーブル１０１−４の集計結果に基づいて、チェックポイントを実施するタイミングを判断する。
【００３９】
続いて、図７を用いて、計算プロセスメモリ使用量テーブル７−１の構成例について説明する。計算プロセスメモリ使用量テーブル７−１は、メモリ操作命令種別と、メモリ操作命令実行位置と、メモリ操作命令実行時刻と、使用メモリとから構成される表である。
【００４０】
メモリ操作種別は、実行されたメモリ操作命令の種別であり、例えば、メモリ確保命令もしくはメモリ解放命令が設定される。メモリ操作命令実行位置は、実行されたメモリ操作命令が、実行中の計算のどの位置で呼び出されたかを示している。本実施の形態においては、位置情報として、同期命令の実行回数と、同期命令以降にメモリ操作命令を実行した回数をメモリ操作命令種別ごとにカウントした値を用いる。
【００４１】
メモリ操作命令実行時刻は、メモリ操作命令が実行された時刻を示す。メモリ操作命令実行時刻に設定される時刻は、計算プロセス１２０が計算ジョブの実行を開始した時から経過した時間である。
【００４２】
使用メモリは、メモリ操作命令の実行前後における計算プロセスのメモリ使用量を示している。また、図８に、計算装置１０内の他の計算プロセスにおいて記録された計算プロセスメモリ使用量テーブル８−１を示す。
【００４３】
続いて、図９を用いて、メモリ使用量集計部３２における、計算プロセスメモリ使用量テーブル７−１及び８−１を集計したテーブルについて説明する。メモリ使用量集計部３２は、計算プロセスメモリ使用量テーブル７−１及び８−１において、メモリ操作命令種別及びメモリ操作命令実行位置が等しい行を抽出し、メモリ操作命令種別およびメモリ操作命令実行位置を設定する。メモリ使用量集計部３２は、抽出した行を比較してメモリ操作命令実行時刻が最も遅い時刻を、メモリ操作命令実行時刻に設定する。さらに、メモリ使用量集計部３２は、抽出した行の使用メモリの合計を算出し、算出した値を使用メモリに設定する。使用メモリの合計は、実行前と実行後に分けて算出される。
【００４４】
例えば、メモリ使用量集計部３２は、図７及び図８における、メモリ操作命令種別としてメモリ確保、メモリ操作命令実行位置として同期命令実行回数が１回目、メモリ操作命令種別ごとの実行回数が１回目である行を抽出する。抽出した行のメモリ操作命令実行時刻は、図７の方が１０と遅いため、メモリ操作命令実行時刻には１０を設定する。さらに、実行前の使用メモリは、図７及び図８ともに５０であるため、合計して１００を設定する。実行後の使用メモリは、図７が１００であり、図８が１５０であるため、合計して２５０を設定する。その他の行についても同様に設定される。
【００４５】
続いて、図１０を用いてメモリ使用量集計部３２が集計した集計データを操作端末３０の表示部に表示した結果について説明する。図１０のグラフは、縦軸にメモリ使用量を示し、横軸に呼び出し時刻を示す。図１０のグラフは、図９の集計データに基づいて作成される。呼び出し時刻１０においては、メモリ確保命令の実行前の使用メモリは１００であり、メモリ確保命令の実行後の使用メモリは２５０であることを示している。さらに、時刻２５においては、メモリ解放命令の実行前の使用メモリは３５０であり、メモリ確保命令の実行後の使用メモリは１５０であることを示している。さらに、時刻４０においては、メモリ解放命令の実行前の使用メモリは１５０であり、メモリ確保命令の実行後の使用メモリは２５０であることを示している。
【００４６】
続いて、図１１を用いて、チェックポイント採取位置作成部３３において作成されたチェックポイント実施指示１１−１について説明する。チェックポイント実施指示１１−１は、同期命令実行回数が０回目かつメモリ解放命令実行回数が１回目の後であって、同期命令実行回数が１回目且つメモリ確保命令実行回数が１回目の前に、チェックポイントを設定することを示している。
【００４７】
また、図１２は、操作端末３０からチェックポイント実施指示を受信した計算装置１０のチェックポイント実施指示記録部１０７に保存されるテーブルを示している。図１２のテーブル１２−１は、同期命令実行回数が０回目であって、メモリ確保命令実行回数が１回目の前であってメモリ解放命令実行回数が１回目の後にチェックポイントを設定することを示している。
【００４８】
続いて、図１３を用いて計算プロセス１２０におけるメモリ使用量の記録処理の流れについて説明する。計算ジョブは、計算装置１０において複数の計算プロセスにおいて実行される。本図においては、１つの計算プロセスに着目して、メモリ使用量の記録処理の流れについて説明する。
【００４９】
はじめに、計算プロセス１２０において計算ジョブの実行中に、同期命令実行部１０５において、同期命令の実行指示がなされた場合（Ｓ１１：ＹＥＳ）、メモリ操作命令実行位置記録部１０８は、同期命令実行回数を１増加し、メモリ操作命令実行回数を０に初期化する（Ｓ１２）。次に、同期命令実行部１０５は、同期命令を実行しステップＳ１１以降の処理に戻る。
【００５０】
計算ジョブの実行中に、同期命令の実行指示がなされず（Ｓ１１：ＮＯ）、メモリ操作命令実行部１０４において、メモリ操作命令の実行指示がなされた場合（Ｓ１１：ＹＥＳ）、メモリ操作命令実行位置記録部１０８は、メモリ種別に対応したメモリ操作命令実行回数を１増加する（Ｓ１５）。次に、メモリ使用量記録部１０１は、メモリ操作命令実行位置記録部１０８を参照し、同期命令実行回数と種別に応じたメモリ操作命令実行回数とをメモリ操作命令実行位置として、実行したメモリ操作命令の種別、メモリ操作命令実行時刻及びメモリ操作命令実行前後のメモリ使用量を、図７もしくは図８において説明した形式を用いて記録する（Ｓ１６）。次に、メモリ操作命令実行部１０４は、メモリ操作命令を実行しステップＳ１１以降の処理に戻る。
【００５１】
計算ジョブの実行中に、メモリ操作命令の実行指示がなされず（Ｓ１４：ＮＯ）、実行中のユーザプログラムが終了していない場合（Ｓ１８：ＮＯ）、ステップＳ１１以降の処理を繰り返す。実行中のユーザプログラムが終了した場合、メモリ使用量記録部１０１に記録されている情報を、記憶装置４０へ出力する（Ｓ１９）。記憶装置４０は、出力された情報を計算ジョブ使用量テーブルの計算プロセスメモリ使用量テーブルに記憶する。
【００５２】
続いて、図１４を用いて操作端末３０におけるチェックポイント実施指示の作成処理の流れについて説明する。
【００５３】
はじめに、メモリ使用量取得部３１は、記憶装置４０から計算ジョブ使用量テーブルを取得する（Ｓ２１）。次に、メモリ使用量集計部３２は、計算ジョブ使用量テーブルの全プロセスを集計する（Ｓ２２）。具体的には、図９において説明した集計テーブルを生成する。次に、メモリ使用量集計部３２は、図９おいて説明した集計テーブルを図１０のようにグラフ化して、操作端末３０の表示部へ表示させる（Ｓ２３）。次に、チェックポイント採取位置作成部３３は、ユーザからチェックポイント実施個所に関する情報の入力を受け付ける（Ｓ２４）。次に、チェックポイント採取位置作成部３３は、ユーザから入力された情報に基づいて、チェックポイント実施指示を作成する（Ｓ２５）。生成されたチェックポイント実施指示は、ネットワーク５０を介して操作端末３０から計算装置１０へ送信される。
【００５４】
続いて、図１５を用いて、計算装置１０におけるチェックポイント実施処理の流れについて説明する。はじめに、チェックポイント実施指示記録部１０７は、操作端末３０から送信されたチェックポイント実施指示を受信し、受信したチェックポイント実施指示を読み込む（Ｓ３１）。次に、ステップＳ３２〜Ｓ３６の処理は、図１３におけるステップＳ１１〜１５の処理と同様であるため、詳細な説明を省略する。
【００５５】
次に、ステップＳ３６において、メモリ操作命令実行位置記録部１０８のメモリ操作命令実行位置が更新されると、チェックポイント実施指示記録部１０７に記録されているチェックポイント実施位置と、メモリ操作命令実行位置記録部１０８に記録されているメモリ操作命令実行位置とが一致するか否かが判定される（Ｓ３７）。チェックポイント実施位置と、メモリ操作命令実行位置とが一致する場合（Ｓ３７：一致）、ステップＳ３５において実行指示がなされたメモリ操作命令のメモリ種別が判定される（Ｓ３８）。メモリ種別がメモリ確保命令である場合（Ｓ３８：確保）、チェックポイント実施部１１０は、メモリイメージを採取し、記憶装置４０へ保存する（Ｓ３９）。次に、メモリ操作命令実行部１０４は、メモリ確保命令を実行し、ステップＳ３２以降の処理を繰り返す（Ｓ４０）。ステップＳ３８において、メモリ種別がメモリ解放命令である場合（Ｓ３８：解放）、メモリ操作命令実行部１０４は、メモリ解放命令を実行する（Ｓ４２）。次に、チェックポイント実施部１１０は、メモリイメージを採取し、記憶装置４０へ保存し、ステップＳ３２以降の処理を繰り返す（Ｓ４２）。
【００５６】
ステップＳ３７において、チェックポイント実施位置と、メモリ操作命令実行位置とが一致しない場合（Ｓ３７：不一致）、ステップＳ３２以降の処理を繰り返す。ステップＳ４３の処理は、図１３におけるステップＳ１８と同様であるため詳細な説明を省略する。
【００５７】
以上説明したように、本発明の実施の形態１にかかる演算処理システムを用いることにより、ユーザはメモリ使用量に基づいてチェックポイントの実施タイミングを決定することができる。そのため、メモリ使用量の少ない位置にチェックポイントを設定することにより、採取するメモリイメージの増大を抑止することができる。
【００５８】
また、上記の説明においては、ユーザによってチェックポイントの実施タイミングが決定されるように説明を行ったが、例えば、一番メモリ使用量の少ない位置を自動的に判定し、その位置にチェックポイントを設定するようにしてもよい。
【００５９】
（実施の形態２）
本発明の実施の形態１においては、初回のユーザプログラム実行時におけるメモリ使用量を収集し、収集したデータに基づいて、次回以降のユーザプログラム実行時におけるチェックポイント実施位置を決定する。本発明の実施の形態２においては、初回のユーザプログラム実行時のみではなく、各回においてメモリ使用量を収集し、常に最新のメモリ使用量に応じてチェックポイント実施位置を決定する処理の流れについて説明する。
【００６０】
上述した処理を実行するために、図１５のステップＳ３６とステップＳ３７との間において、メモリ使用量記録部１０１を更新する。つまり、メモリ使用量記録部１０１は、メモリ操作命令実行位置記録部１０８を参照し、同期命令実行回数と種別に応じたメモリ操作命令実行回数とをメモリ操作命令実行位置として、実行したメモリ操作命令の種別、メモリ操作命令実行時刻及びメモリ操作命令実行前後のメモリ使用量を、図７もしくは図８において説明した形式を用いて記録する。
【００６１】
さらに、図１５のステップＳ４３の後に、メモリ使用量記録部１０１に記録されている情報を、記憶装置４０へ出力する。このようにして、チェックポイント実施処理とメモリ使用量の記録処理を同一のユーザプログラム実行時に行うことにより、メモリ使用量は常に更新され、ユーザに対して最新のメモリ使用量を確認させることができる。また、ユーザは最新のメモリ使用量に応じてチェックポイントを設定することができるため、より最適なチェックポイント位置を設定することができる。
【００６２】
（実施の形態３）
続いて、図１６を用いて本発明の実施の形態３にかかるメモリ使用量の算出方法について説明する。実施の形態３においては、同じプログラムの実行を複数回繰り返すパラメータサーベイを前提として説明を行う。パラメータサーベイを実行する場合、過去に実行されたプログラムにおけるメモリ使用量の平均を計算して、ユーザに対して平均結果に関するメモリ使用量を確認させてもよい。
【００６３】
例えば、図１６にバルクジョブメモリ使用量テーブル１６−１を示す。バルクジョブメモリ使用量テーブル１６−１は、パラメータサーベイを行う全計算ジョブにバルクジョブＩＤ１６−２を割り当てる。バルクジョブメモリ使用量テーブル１６−１は、図６において説明した計算ジョブメモリ使用量テーブル１０１−１をまとめて保存する。ジョブＩＤ毎に作成された計算プロセスメモリ使用量テーブルにおいて、メモリ操作種別とメモリ操作実行位置が同じ行同士において、メモリ操作命令実行時刻及び使用メモリの平均をとる。
【００６４】
以上説明したように、本発明の実施の形態３におけるメモリ使用量の算出方法を用いることにより、初回のメモリ使用量のみならず、過去に実行されたプログラムにおけるメモリ使用量をすべて反映させることができるため、ユーザに対してより正確なメモリ使用量を確認させることができる。
【００６５】
（実施の形態４）
続いて、図１７を用いて本発明の実施の形態４にかかる計算プロセス１２０の構成例について説明する。図１７の計算プロセス１２０は、図３における計算プロセス１２０に、チェックポイント要求記録部１１１を追加した点において異なる。その他の構成は、図３における計算プロセス１２０と同様である。
【００６６】
チェックポイント要求記録部１１１は、計算ジョブ実行前に決定されるチェックポイント採取指示とは別に、計算ジョブ実行中にユーザから要求されるチェックポイント採取指示を記録する。計算ジョブ実行中にユーザからチェックポイント採取指示があった場合、ユーザプログラム１０３は、チェックポイント要求記録部１１１に対して、ユーザからチェックポイントが要求されたことを記録する。
【００６７】
また、図１５のステップＳ３１とステップ３２との間に、ユーザからチェックポイント要求があったかどうかを判定し、チェックポイント要求があった場合には、チェックポイント要求記録部１１１に対して、チェックポイントが要求されたことを記録する処理を追加してもよい。さらに、ステップＳ３６とステップＳ３７との間において、チェックポイント要求記録部１１１に、チェックポイント要求がされたことが記録されている場合には、ステップＳ３８以降におけるチェックポイントを実施するようにしてもよい。また、チェックポイント要求記録部１１１に記録されているチェックポイント要求に関しては、チェックポイント実施後に消去するようにしてもよい。
【００６８】
以上説明したように、本発明の実施の形態４にかかる計算プロセス１２０を用いることにより、任意のタイミングにおいてチェックポイントの設定を行うことができる。そのため、ユーザが必要と判断したタイミングにおいてチェックポイントの設定を行うことができるため、ユーザにとって必要なデータの収集が可能となる。
【００６９】
（実施の形態５）
続いて、本発明の実施の形態５にかかるチェックポイント実施処理について説明する。実施の形態５においては、全プロセスでチェックポイントの実施を待ち合わせ、プロセス間の通信状態等の不整合を解消した後、同時にチェックポイントを実施する方法について説明する。このようなチェックポイントの実施方法を同期チェックポイントとする。
【００７０】
ここで、図１８を用いて通信命令を跨いでメモリ操作命令が実行される場合における同期チェックポイントについて説明する。図１８Ａは、プロセス１及び２におけるメモリ操作処理を示している。プロセス１は、メモリ確保命令を実行し、さらにメモリ解放命令が実行された後に、プロセス２との間における通信命令を実行する。プロセス２は、メモリ確保命令を実行した後に、プロセス１との間における通信命令を実行し、その後にメモリ解放命令を実行する。
【００７１】
図１８Ｂ及びＣは、プロセス１又はプロセス２におけるチェックポイント採取位置作成部３３において作成されたチェックポイント実施指示１１−１を示している。チェックポイントは、１８−１及び１８−２において示された場所において実施される。
【００７２】
ここで、同期チェックポイントを実施する場合、プロセス１が、１８−２のメモリ解放命令の実行後にチェックポイントを実施しようとしてプロセス２を待ち合せる。しかし、プロセス２は、１８−２のメモリ解放命令の前の通信命令でプロセス１の通信を待ち合せる。そのため、チェックポイントを実施することができずデッドロックが発生してしまう。
【００７３】
そこで、メモリ操作命令実行位置の表現形式を、同期命令実行回数及びメモリ操作命令種別ごとの実行回数の組み合わせから、同期命令実行回数及びメモリ操作命令の実行アドレスに変更して、同期チェックポイントを実行するようにする。メモリ操作命令の実行アドレスは、メモリ上にロードされたプログラムの命令列の先頭からのアドレスである。
【００７４】
具体的には、図１９に示されるように、図１９Ｂ及びＣのメモリ操作命令実行位置において、メモリ操作命令実行アドレスを用いる。ここで、図１９Ｂ及びＣに示されるように、通信命令を跨いだメモリ解放命令は、実行アドレスが異なる。そのため、メモリ操作命令実行位置が異なるため、チェックポイントの設定対象から除外することができる。これにより、デッドロックを発生させるような同期チェックポイントを回避し、安全に同期チェックポイントを実施することができる。
【００７５】
上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、図１３における計算装置の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。）
【００７６】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００７８】
１０  計算装置
１１  プロセス
１２  プロセス
１３  プロセス
３０  操作端末
３１  メモリ使用量取得部
３２  メモリ使用量集計部
３３  チェックポイント採取位置作成部
４０  記憶装置
５０  ネットワーク
１０１  メモリ使用量記録部
１０２  通信部
１０３  ユーザプログラム
１０４  メモリ操作命令実行部
１０５  同期命令実行部
１０６  分散メモリ並列部
１０７  チェックポイント実施指示記録部
１０８  メモリ操作命令実行位置記録部
１０９  メモリ管理部
１１０  チェックポイント実施部
１１１  チェックポイント要求記録部
１２０  計算プロセス
【図１】
0005966389.tif 000002
【図２】
0005966389.tif 000003
【図３】
0005966389.tif 000004
【図４】
0005966389.tif 000005
【図５】
0005966389.tif 000006
【図６】
0005966389.tif 000007
【図７】
0005966389.tif 000008
【図８】
0005966389.tif 000009
【図９】
0005966389.tif 000010
【図１０】
0005966389.tif 000011
【図１１】
0005966389.tif 000012
【図１２】
0005966389.tif 000013
【図１３】
0005966389.tif 000014
【図１４】
0005966389.tif 000015
【図１５】
0005966389.tif 000016
【図１６】
0005966389.tif 000017
【図１７】
0005966389.tif 000018
【図１８】
0005966389.tif 000019
【図１９】
0005966389.tif 000020