(57)【要約】【課題】チェックポイントデータの保存に要する時間の短縮が可能な情報処理システムを提供する。【解決手段】チェックポイント時点に達する毎に起動されるチェックポイント管理部７は、チェックポイントデータのうちＯＳ６との間のインタフェース情報を蓄えるスタック領域の利用状況をメモリ管理部６ａに問い合わせ（シーケンスＳｅｑ２）、該利用状況を保存対象リストとして取得した後（シーケンスＳｅｑ３）、該スタック領域内の現時点において有効な範囲を特定し、特定した該有効な範囲のデータに限定して、第１回目は、特定した前記有効な範囲のデータの全てをチェックポイント用ファイルシステム８に保存し、第２回目以降は、該範囲のデータのうち、直前のチェックポイント時点と現チェックポイント時点との間で変化があったデータを差分データとして同ファイルシステム８に保存する。【選択図】        図２
2016167212.tif 000002
【特許請求の範囲】
【請求項１】
チェックポイント時点としてあらかじめ定めた時間に達する都度、プログラムの実行に必要とするデータをチェックポイントデータとしてチェックポイント用ファイルシステムに保存する機能のあるチェックポイント管理部を有する情報処理システムであって、
前記チェックポイント管理部は、
前記チェックポイントデータのうちＯＳ（Operating  System）との間のインタフェース情報を蓄えるスタック領域に存在するデータに関し、ＯＳと連携して、前記スタック領域内の現時点において有効な範囲を特定し、特定した該有効な範囲のデータに限定して、
最初に呼び出された際には、特定した前記有効な範囲のデータの全てを前記チェックポイント用ファイルシステムに保存し、
第２回目以降に呼び出された際には、特定した前記有効な範囲のデータのうち、直前のチェックポイント時点と現チェックポイント時点との間で変化があったデータを差分データとして前記チェックポイント用ファイルシステムに保存する
ことを特徴とする情報処理システム。
【請求項２】
現時点において有効なスタック領域であるか否かを、該スタック領域のベースアドレスおよび先頭アドレスを直前のチェックポイント時点における該スタック領域のベースアドレスおよび先頭アドレスとそれぞれ比較することにより、判定することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記チェックポイント管理部は、
前記チェックポイントデータのうち前記スタック領域に存在するデータ以外のデータに関しては、
最初に呼び出された際には、対象とする該データの全てを前記チェックポイント用ファイルシステムに保存し、
第２回目以降に呼び出された際には、対象とする該データのうち、直前のチェックポイント時点と現チェックポイント時点との間で変化があったデータを差分データとして前記チェックポイント用ファイルシステムに保存する
ことを特徴とする請求項１または２に記載の情報処理システム。
【請求項４】
前記チェックポイント管理部は、
前記チェックポイントデータの前記チェックポイント用ファイルシステムへの保存が完了した時点で、外部に配置されているストレージ装置に前記チェックポイントデータをバックアップ保存するために、前記チェックポイント用ファイルシステムと前記ストレージとの間の同期化処理を起動する
ことを特徴とする請求項１ないし３のいずれかに記載の情報処理システム。
【請求項５】
前記チェックポイント管理部は、
最初に呼び出された際における前記チェックポイントデータの前記チェックポイント用ファイルシステムへの保存が完了した時点で、次回以降のチェックポイント動作を差分モードで実行することを示す差分検出フラグを設定して、プログラムの実行中に読み書きを行う全ての領域を書き込み禁止状態に設定する要求をＯＳに対して行い、
該要求を受け取ったＯＳは、要求された全ての領域を書き込み禁止状態に設定し、以降のプログラムの実行中に、書き込み禁止状態の領域への書き込みによるページフォルト割り込みが発生した際に、前記差分検出フラグが設定されていた場合には、該領域のデータが変更される旨を前記チェックポイント管理部に通知するとともに、該領域の書き込み禁止状態を解除する
ことを特徴とする請求項１ないし４のいずれかに記載の情報処理システム。
【請求項６】
前記チェックポイント用ファイルシステムとして、
重複排除機能を有するストレージ装置、または、重複排除機能および圧縮機能の双方の機能を有するストレージ装置を用いる
ことを特徴とする請求項１ないし５のいずれかに記載の情報処理システム。
【請求項７】
前記チェックポイント管理部は、
第２回目以降であっても、呼び出された回数があらかじめ定めた一定回数になる都度、前記チェックポイントデータとして、プログラムの実行に必要とする全てのデータを保存する
ことを特徴とする請求項１ないし６のいずれかに記載の情報処理システム。
【請求項８】
チェックポイント時点としてあらかじめ定めた時間に達する都度、プログラムの実行に必要とするデータをチェックポイントデータとしてチェックポイント用ファイルシステムに保存する機能のあるチェックポイント管理ステップを有する情報処理システムにおけるチェックポイントデータ採取方法であって、
前記チェックポイント管理ステップにおいて、
前記チェックポイントデータのうちＯＳ（Operating  System）との間のインタフェース情報を蓄えるスタック領域に存在するデータに関し、ＯＳと連携して、前記スタック領域内の現時点において有効な範囲を特定し、特定した該有効な範囲のデータに限定して、
最初に呼び出された際には、特定した前記有効な範囲のデータの全てを前記チェックポイント用ファイルシステムに保存し、
第２回目以降に呼び出された際には、特定した前記有効な範囲のデータのうち、直前のチェックポイント時点と現チェックポイント時点との間で変化があったデータを差分データとして前記チェックポイント用ファイルシステムに保存する
ことを特徴とするチェックポイントデータ採取方法。
【請求項９】
現時点において有効なスタック領域であるか否かを、該スタック領域のベースアドレスおよび先頭アドレスを直前のチェックポイント時点における該スタック領域のベースアドレスおよび先頭アドレスとそれぞれ比較することにより、判定することを特徴とする請求項８に記載のチェックポイントデータ採取方法。
【請求項１０】
請求項８または９に記載のチェックポイントデータ採取方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とするチェックポイントデータ採取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラムに関し、特に、チェックポイントデータの保存に要する時間を短縮する情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラムに関する。
【背景技術】
【０００２】
一般に、情報処理システムにおける通常のプログラムは、その実行の途中で、システム障害などが発生しないことを前提として作成されている。しかし、実際の情報処理システムにおいては、プログラム実行中であっても障害が発生することを避けることができない。このため、実行に長い時間を要するプログラムにおいては、障害が発生した場合の対策を講じていることが一般的になっている。その対策の一つとして、チェックポイント機能がある。
【０００３】
チェックポイント機能は、プログラム実行の途中段階において所定の時間に到達する都度、該プログラムの実行に必要なデータをチェックポイントデータとして保存する動作を行う機能である。かかるチェックポイント機能を備えることによって、プログラムの実行途中においてシステム障害が発生した場合に、それまでに保存されていたデータ（チェックポイントデータ）を使って、プログラムの途中から実行を再開させることを可能にしている。実行時間が長いプログラムを利用することが多いＨＰＣ（High  Performance  Computing）分野においては、以前からチェックポイント機能を利用している例が非常に多い。
【０００４】
チェックポイントを実現する方法に関しては、従来より様々な提案がなされている。例えば、特許文献１の特開平７-１３８０５号公報「並列計算機およびプログラム実行再現方法」には、共有メモリ並列計算機において書き込み順などを考慮したチェックポイントの方法が開示されている。また、特許文献２の特開２００５-２３５０５８号公報「スナップショット取得方法、スナップショット取得装置及びスナップショット取得機能を備えたコンピュータシステム」には、スナップショットすなわちチェックポイントの取得方法とその世代管理の方法が開示されている。つまり、これらの特許文献には、並列プログラムの実行再開に必要な情報を保存するための手法や保存したデータの効率的な管理方法が開示されている。
【０００５】
ここで、計算機システム（情報処理システム）などの信頼性の指標として、通常、障害と次の障害との間の平均的な時間間隔を示す平均障害間隔ＭＴＢＦ（Mean  Time  Between  Failure）などが利用されている。該ＭＴＢＦは平均的に連続して利用することが可能な時間の長さを表わすと見做すことができる。該ＭＴＢＦの値は、計算機システムを構成する部品の数が増えれば増えるほど、短くなることが良く知られている。つまり、部品点数が多くなる大規模な計算機システムの場合は、小規模な計算機システムと比べて連続して利用することができる時間が短くなる。したがって、大規模な計算機システムほど、チェックポイントを取る時間間隔も短くすることが必要である。将来の大規模計算機システムを構成する計算機台数が数十万台規模に達することが想定されており、そうなると、計算機システム全体の連続運転は、僅か数時間程度になるという予想もある。
【０００６】
一方、海外の大規模計算機システムにおいては、最近、ストレージ書き込み性能の向上にも関わらず、チェックポイントデータの保存に要する時間が、ほぼ一定であるという報告もある。これは、計算機に実装されているメモリが増えていることなどに伴うプログラムの保存対象データの大幅な増加が、ストレージの書き込み性能の向上による効果を打ち消していると見做すことができる。このことを計算機システムの大規模化と合わせて考えると、今後は、チェックポイントの保存に要する時間が殆ど変わらないにも関わらず、計算機システムの大規模化によりチェックポイントの保存間隔が短くなっていき、プログラムの実行に使うことができる時間が短くなってくるという問題が生じることを意味している。このため、チェックポイントの保存に要する時間を短縮することが重要になる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７-１３８０５号公報（第３−５頁）
【特許文献２】特開２００５-２３５０５８号公報（第６−８頁）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来の計算機システムレベルのチェックポイントは、プログラムの実行中の特定の時点に達する都度、当該プログラムの実行を再開するために必要なデータをチェックポイントデータとして保存しているが、該チェックポイントデータは、一般に、プログラムのアドレス空間上のデータに加え、該プログラムの実行を管理するためのシステムデータも保存するため、データサイズが大きくなっている。
【０００９】
一方、プロセッサの実行速度が向上する速度が頭打ちとなったことにより、高性能の計算機システムは、プロセッサ台数を多数並列に利用する並列計算機システムとすることが一般的になっている。並列計算機システムは、該システムを構成する部品数が増えることから、計算機システムとしての信頼性を示す指標である平均障害間隔ＭＴＢＦが短くなる傾向にある。ＭＴＢＦが短くなると、前述のように、システム障害に対応するために、チェックポイントデータを保存する時間間隔も短くすることが必要である。
【００１０】
しかしながら、計算機システムを構成するディスクシステムのＩ／Ｏ（Input／Output）性能の向上速度は、プロセッサと比べると、かなり緩やかとなっており、最近の大規模計算機システムにおいては、前述したように、チェックポイントデータの保存に要する時間が余り変わっていないことが報告されている。将来の大規模計算機システムにおいてはＭＴＢＦがさらに短くなると予想される状況下において、チェックポイントデータの保存に要する時間が減らない場合には、プログラムが実行される処理時間がさらに短くなっていくということが大きな問題になってくる。さらには、近い将来に、Ｉ／Ｏ性能が大きく向上することは余り期待することができないという状況もある。したがって、チェックポイントデータとして保存対象となるデータサイズを削減する等の対策を行うことによって、チェックポイントデータの保存に要する時間を短縮することが重要な課題である。
【００１１】
（本発明の目的）
本発明は、かかる事情に鑑みてなされたものであり、特に、保存対象のデータ量が急増する傾向にあるスタック領域に着目して、チェックポイントデータの保存に要する時間の短縮が可能な情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラムを提供することを、その目的としている。
【課題を解決するための手段】
【００１２】
前述の課題を解決するため、本発明による情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラムは、主に、次のような特徴的な構成を採用している。
【００１３】
（１）本発明による情報処理システムは、
チェックポイント時点としてあらかじめ定めた時間に達する都度、プログラムの実行に必要とするデータをチェックポイントデータとしてチェックポイント用ファイルシステムに保存する機能のあるチェックポイント管理部を有する情報処理システムであって、
前記チェックポイント管理部は、
前記チェックポイントデータのうちＯＳ（Operating  System）との間のインタフェース情報を蓄えるスタック領域に存在するデータに関し、ＯＳと連携して、前記スタック領域内の現時点において有効な範囲を特定し、特定した該有効な範囲のデータに限定して、
最初に呼び出された際には、特定した前記有効な範囲のデータの全てを前記チェックポイント用ファイルシステムに保存し、
第２回目以降に呼び出された際には、特定した前記有効な範囲のデータのうち、直前のチェックポイント時点と現チェックポイント時点との間で変化があったデータを差分データとして前記チェックポイント用ファイルシステムに保存する
ことを特徴とする。
【００１４】
（２）本発明によるチェックポイントデータ採取方法は、
チェックポイント時点としてあらかじめ定めた時間に達する都度、プログラムの実行に必要とするデータをチェックポイントデータとしてチェックポイント用ファイルシステムに保存する機能のあるチェックポイント管理ステップを有する情報処理システムにおけるチェックポイントデータ採取方法であって、
前記チェックポイント管理ステップにおいて、
前記チェックポイントデータのうちＯＳ（Operating  System）との間のインタフェース情報を蓄えるスタック領域に存在するデータに関し、ＯＳと連携して、前記スタック領域内の現時点において有効な範囲を特定し、特定した該有効な範囲のデータに限定して、
最初に呼び出された際には、特定した前記有効な範囲のデータの全てを前記チェックポイント用ファイルシステムに保存し、
第２回目以降に呼び出された際には、特定した前記有効な範囲のデータのうち、直前のチェックポイント時点と現チェックポイント時点との間で変化があったデータを差分データとして前記チェックポイント用ファイルシステムに保存する
ことを特徴とする。
【００１５】
（３）本発明によるチェックポイントデータ採取プログラムは、前記（２）に記載のチェックポイントデータ採取方法を、コンピュータによって実行可能なプログラムとして実施していることを特徴とする。
【発明の効果】
【００１６】
本発明の情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラムによれば、以下のような効果を奏することができる。
【００１７】
第１の効果は、チェックポイントデータとして保存するスタック領域のデータ量を削減することが可能なことである。その理由は、直前のチェックポイント時点において保存した後に再開したプログラムの実行により変更されているスタック領域であっても、現チェックポイント時点においては、スタック領域として現在利用していない領域をＯＳとチェックポイント管理部とが連携して解析することによって、スタック領域としては、無効な領域のデータであり、データ保存が不要な領域であることを判定することを可能にしているためである。而して、チェックポイントデータとして保存するデータ量を削減し、チェックポイント用ファイルシステムへのチェックポイントデータの保存時間のみならず、チェックポイント用ファイルシステムからのチェックポイントデータの読み込み時間も削減することができる。
【００１８】
第２の効果は、チェックポイントデータの外部への転送やリスタートに要する時間を短縮することが可能なことである。その理由は、チェックポイントデータのデータ量を削減することによって外部の大容量ストレージへの転送が必要なデータ量も削減されること、および、リスタート時において不要なデータ領域の割り当てとデータの書き込みとが不要になるためである。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係る情報処理システムのシステム構成の一例を示すシステム構成図である。
【図２】図１の情報処理システムにおけるチェックポイント管理部における動作を模式的に説明するための説明図である。
【図３】図１の情報処理システムにおいてチェックポイントデータを採取する際の動作の一例を示すフローチャートである。
【図４】図１の情報処理システムのチェックポイント管理部において保存対象リストに含まれているスタック領域の有効な範囲の確認を行う手順の一例を示すフローチャートである。
【図５】図３のフローチャートの処理により書き込み禁止状態に設定されたページに対する書き込みが発生した場合の動作の一例を説明するためのフローチャートである。
【図６】チェックポイント時点におけるスタック領域の有効範囲とプログラム実行時におけるスタック領域の有効範囲との変化の様子の一例を説明するための模式図である。
【発明を実施するための形態】
【００２０】
以下、本発明による情報処理システム、チェックポイントデータ採取方法およびチェックポイントデータ採取プログラムの好適な実施形態について添付図を参照して説明する。なお、以下の説明においては、本発明による情報処理システムおよびチェックポイントデータ採取方法について説明するが、かかるチェックポイントデータ採取方法をコンピュータにより実行可能なチェックポイントデータ採取プログラムとして実施するようにしても良いし、あるいは、チェックポイントデータ採取プログラムをコンピュータにより読み取り可能な記録媒体に記録するようにしても良いことは言うまでもない。また、以下の各図面に付した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではないことも言うまでもない。
【００２１】
（本発明の特徴）
本発明の実施形態の説明に先立って、本発明の特徴についてその概要をまず説明する。本発明は、チェックポイント機能として、計算機システムレベルのチェックポイントデータを保存する際に、プログラム実行中に増減するスタック領域については、ＯＳ（Operating  System）とチェックポイント管理部とが連携して、前の時点でチェックポイントを保存した後に変更されている領域ではあるものの、現在のスタック領域としては無効であって、チェックポイントデータとしてデータを保存する必要がない領域であるか否かを解析する機能を備えていることを主要な特徴としている。而して、スタック領域のうち無効と判断される該当部分をチェックポイントの保存対象から除外することを可能にして、保存対象のチェックポイントデータのデータ量を縮小し、チェックポイントデータの保存に要する時間を短縮することができるという効果を奏することができる。
【００２２】
さらに詳細に説明すると、次の通りである。すなわち、本発明においては、チェックポイント機能を有効に設定した状態において、プログラムを実行してチェックポイントに到達した際に、チェックポイントデータを保存するために、まず、プログラムの実行を一旦中断して、保存処理の途中にデータが変更されないことを保証する。しかる後、チェックポイント管理部が、保存対象のデータに関する情報をＯＳから取得し、チェックポイントデータとしての保存処理を行う。ここで、プログラム実行中に到達した最初のチェックポイントにおいてチェックポイントデータとしてデータを保存する際には、プログラム実行に関係する全てのデータを対象として保存することが必要であるが、第２回目以降のチェックポイントにおいては、前に保存したチェックポイントデータから変更された部分のみを差分データとして保存対象とすることによって保存対象のデータ量を削減することができる。
【００２３】
かくのごとき差分データ処理に対応するために、ＯＳはチェックポイント用の機能として、前にチェックポイントデータを保存した後に変更された領域を、ページ単位に、プログラム実行時にチェックしてリストアップする変更領域記録機能を備えている。さらに、プログラム実行時の手続き呼び出しと該手続きからの戻りとにおいて大きさが変わっていくスタック領域の有効範囲を解析して、解析した情報と保存対象になっているページのアドレス情報とから、保存が必要なスタック領域であるか否かの判定を行う。該判定結果に基づいて、保存が不要なスタック領域のページについては、チェックポイントデータの保存対象から除外することを可能にしている。
【００２４】
而して、チェックポイントデータとして保存すべき対象のデータを絞り込んで、最終的に保存対象となったデータを、チェックポイントデータの保存用としているチェックポイント用ファイルシステムに保存したり、外部の大容量ストレージに転送したりすることによって、システム障害が発生した際に、保存したチェックポイントデータを利用してシステム障害からの復旧を図ることができる。
【００２５】
（実施形態の構成例）
次に、本発明に係る情報処理システムのシステム構成の一例について、図１を参照しながら説明する。図１は、本発明の実施形態に係る情報処理システムのシステム構成の一例を示すシステム構成図である。図１に示す情報処理システムにおいては、計算機１はネットワーク１０を介して外部の大容量ストレージ１１と接続されている。大容量ストレージ１１は、本計算機１において保存されたデータ例えばチェックポイント（ＣＰ：Check  Point）データをバックアップして記憶することができる。また、計算機１は複数のノード２を含んで構成されている。ここで、計算機１は、ノード２とは異なる他のノード３を含んでいても良い。
【００２６】
各ノード２に含まれているＣＰＵ（Central  Processing  Unit）４は、複数のコア５を含んで構成されており、ＯＳ６がＣＰＵ４上で動作している。また、ノード２には、プログラム実行に利用するファイルシステム（ＦＳ：File  System）９とチェックポイントデータを保存するための専用のチェックポイント用ファイルシステム８（ＣＰ専用ＦＳ）とが含まれて構成されている。さらに、ノード２には、チェックポイントの管理を行うチェックポイント管理部７が含まれている。
【００２７】
（実施形態の動作の説明）
次に、図１に例示した情報処理システムの動作について、図１を参照しながら詳細に説明する。なお、以下の説明においては、計算機１は、ＣＰＵ４に含まれる各コア５において、ＯＳ６の制御の下、各種のプログラムを実行しており、プログラムの実行中に、チェックポイントとしてあらかじめ設定している一定時間に達する都度、プログラムの実行を中断した後、チェックポイント管理部７が起動して、適宜、あらかじめ設定している領域のデータ（プログラムの動作に必要なデータ）をチェックポイントデータとして採取する場合を想定している。
【００２８】
通常動作においては、プログラムは、ファイルシステム９を利用して実行している。そして、前述したように、プログラムの実行中にチェックポイントとしてあらかじめ設定した一定時間が経過する都度、プログラムの実行を中断した後、チェックポイント管理部７が起動して、チェックポイントとしてあらかじめ設定している領域のデータを、チェックポイントデータとしてチェックポイント用ファイルシステム８に保存する処理を行った後、プログラムの実行を再開させる。
【００２９】
かくのごとき動作を繰り返している状況下において、情報処理システムに何らかの障害などが発生して、プログラムの実行が異常終了した場合、チェックポイント管理部７が起動されて、チェックポイント用ファイルシステム８に定期的に保存されているチェックポイントデータのうち、例えば最新のチェックポイント時点のチェックポイントデータを利用して、データの再設定を行うことにより、該チェックポイント時点に遡って、プログラムの実行を再開させることができる。
【００３０】
プログラムの実行を一旦中断して、チェックポイントデータを採取して保存した後、プログラムの実行の再開に至るまでの処理手順の一例について、図３のフローチャートを用いて詳細に説明する。図３は、図１の情報処理システムにおいてチェックポイントデータを採取する際の動作の一例を示すフローチャートであり、本発明によるチェックポイントデータ採取方法の一例を示している。
【００３１】
図３のフローチャートにおいて、プログラム実行中の状態において、ＯＳ６があらかじめ定めた一定時間の経過を検知すると、ＯＳ６は、まず、実行中のプログラムの実行を中断させて、停止させた後（ステップＳ１）、チェックポイント管理部７を起動する。起動されたチェックポイント管理部７は、スタック領域に関しては、図２の説明図に示すような手順によって、保存対象となる領域をＯＳ６から保存対象リストとして取得して保存する処理を行う（ステップＳ２）。図２は、図１の情報処理システムにおけるチェックポイント管理部７における動作を模式的に説明するための説明図であり、ＯＳ６との間のインタフェース情報を蓄えるスタック領域に存在するデータを採取する動作に関し、チェックポイント管理部７とＯＳ６、チェックポイント用ファイルシステム８との間の制御データの流れについてその一例を示している。
【００３２】
図２の説明図において、チェックポイント管理部７は、プログラムを停止させた状態でＯＳ６から起動されると（シーケンスＳｅｑ１）、まず、プログラムの実行に必要な領域のデータ全てを保存する必要があるので、ＯＳ６内のメモリ管理部６ａに対してチェックポイントデータとして保存対象となるデータが存在するスタック領域を問い合わせる（シーケンスＳｅｑ２）。該問い合わせを受け取ったＯＳ６のメモリ管理部６ａは、チェックポイントデータとして保存対象となるデータのスタック領域に関する情報を保存対象リストとして、問い合わせ元のチェックポイント管理部７に送り返す（シーケンスＳｅｑ３）。メモリ管理部６ａからの返送を受け取ったチェックポイント管理部７は、受け取った保存対象リストを、チェックポイント用ファイルシステム８に書き込んで保存する（シーケンスＳｅｑ４）。
【００３３】
ここで、チェックポイント管理部７は、最初に呼び出された時は、プログラム実行に必要なデータの全てをチェックポイントデータとして保存することが必要であるが、第２回目以降に呼び出された時は、直前に呼び出された際に保存したデータとの差分のデータを保存しておけば、プログラム実行に必要なデータの全てを再生することができるので、最初と第２回目以降とでは一部の処理が異なるが、図２に示す処理の流れは同じである。
【００３４】
つまり、ＯＳ６から起動されたチェックポイント管理部７は、処理の最初に、シーケンスＳｅｑ２において、保存対象となるデータが存在するスタック領域の問い合わせをＯＳ６のメモリ管理部６ａに対して行うが、この際に、或る特定のプログラムの実行中に初めて起動されたチェックポイント管理部７は、初めて呼び出された場合として、当該特定のプログラム実行に必要な全ての領域のデータを保存する場合であることを示す全データ取得要求フラグを設定してメモリ管理部６ａに対して問い合わせを行う。
【００３５】
該全データ取得要求フラグが設定されている場合、ＯＳ６のメモリ管理部６ａは、シーケンスＳｅｑ３において、プログラムの実行に必要な全ての領域のデータを保存することを要求されている場合として、プログラムの使用しているデータ領域の全てとプログラム実行に必要な管理データとを保存対象リストとして問い合わせ元のチェックポイント管理部７に対して通知する。
【００３６】
一方、第２回目以降の呼び出しの場合には、チェックポイント管理部７は、シーケンスＳｅｑ２において、該全データ取得要求フラグが設定されていない状態にして、ＯＳ６のメモリ管理部６ａに対して問い合わせを行う。問い合わせを受け取ったＯＳ６のメモリ管理部６ａは、該全データ取得要求フラグが設定されていない場合として、シーケンスＳｅｑ３において、直前のチェックポイント以降のプログラムの実行によって変更されたページに関する情報を保存対象リストとして問い合わせ元のチェックポイント管理部７に対して通知する。なお、直前のチェックポイント以降のプログラムの実行によって変更された部分のうち、現チェックポイント時点においても有効な範囲にあるデータのみを保存対象の領域として抽出する処理の詳細については後述する。
【００３７】
次に、図３のフローチャートの処理の説明に戻って、チェックポイント管理部７は、ＯＳ６のメモリ管理部６ａから得た保存対象リストに基づいて、該保存対象リストに含まれているスタック領域の有効な範囲の確認を行う(ステップＳ３)。ここで、スタック領域の有効な範囲を確認する手順について図４のフローチャートを用いて説明する。図４は、図１の情報処理システムのチェックポイント管理部７において保存対象リストに含まれているスタック領域の有効な範囲の確認を行う手順の一例を示すフローチャートである。スタック領域の有効な範囲を確認する手順については、チェックポイント管理部７が最初に呼び出されて全てのスタック領域のデータを保存する場合と、第２回目以降に呼び出されて直前のチェックポイントから変化があったスタック領域のデータのみを差分データとして保存する場合と、の両者について変わることはなく、同じ手順で構わない。
【００３８】
図４のフローチャートにおいて、チェックポイント管理部７は、スタック領域の有効な範囲を確認するために、まず、ＯＳ６のメモリ管理部６ａに対して、確認すべきスタック領域の有効な範囲を問い合わせる。問い合わせを受け取ったＯＳ６のメモリ管理部６ａは、停止しているプログラムの情報に基づいて、スタック領域の有効範囲を示すスタックのベースアドレスと現在のスタックの先頭のアドレスとを取得する（ステップＳ１１）。該スタックの有効範囲を示す情報は、プログラムの実行に必要となる情報の一部であり、ＯＳ６のメモリ管理部６ａは、該スタックの有効範囲を示す情報を参照することにより、プログラムの実行に必要となる情報がどこに存在しているかということを容易に特定することが可能である。
【００３９】
次に、ＯＳ６のメモリ管理部６ａは、チェックポイントとして保存対象になっている領域のうち有効なスタック領域に関して、書き込み対象のスタック領域に割り当てられているページをアドレス情報として特定して（ステップＳ１２）、特定したスタック領域が、現在有効なスタック領域であるか、あるいは、現在は無効になっているスタック領域であるかを判定する（ステップＳ１３）。該判定は、直前に調べたスタックのベースアドレスおよびスタックの先頭アドレスを利用して、現在のスタックのベースアドレスおよび現在のスタックの先頭のアドレスと比較することにより、容易に判定することができる。
【００４０】
しかる後、ＯＳ６のメモリ管理部６ａは、チェックポイントとして保存対象になっている領域を示すページが、スタック領域のページであるか否か、スタック領域のページであった場合、現在有効なスタック領域であるか否かを示す判定結果を、チェックポイント管理部７に対して通知する（ステップＳ１４）。チェックポイント管理部７は、ＯＳ６のメモリ管理部６ａから該判定結果を受け取ることにより、スタック領域の有効な範囲を確認することができる。
【００４１】
なお、この際、スタック領域の先頭部分を含むページについては、現在のチェックポイント時点において設定されている、当該ページにおいて有効な範囲を特定するアドレスを先頭アドレスとして通知している。而して、チェックポイント管理部７においては、保存対象のスタック領域のページの有効な範囲を限定することができる。かくのごときスタック領域の有効な範囲の限定は、チェックポイントにおける保存対象の削減につながる。その理由は、プログラムの実行中においては、プログラム実行における関数呼び出しに対応してスタック領域が大きく増減するからである。図６は、チェックポイント時点におけるスタック領域の有効範囲とプログラム実行時におけるスタック領域の有効範囲との変化の様子の一例を説明するための模式図であり、第１ページから第４ページまでのスタック領域を例にして、ベースアドレスを“base”、先頭アドレスを“top”として示している。
【００４２】
図６において、第Ｎ回目のチェックポイント時点においては、図６（Ａ）の“base”と“top”とによって示すように、第１ページの先頭から第２ページの途中までのハッチングを施した領域が有効なスタック領域となっている。しかる後、プログラムの実行が再開されて、次の第（Ｎ＋１）回目のチェックポイント時点に達するまでの間に、プログラムの実行における関数呼び出しによってスタック領域が最大に利用された状態においては、図６（Ｂ）の“base”と“top”とによって示すように、第１ページの先頭から第４ページの途中までのハッチングを施した領域が利用されている。しかし、次の第（Ｎ＋１）回目のチェックポイント時点においては、図６（Ｃ）の“base”と“top”とによって示すように、利用されているスタック領域が大幅に少なくなって、第１ページの先頭から当該第１ページの途中までのハッチングを施した領域のみに有効なスタック領域がない状態になっている。
【００４３】
すなわち、図６において、第Ｎ回目のチェックポイント時点から変更があったスタック領域としては第１ページから第４ページまでのハッチングを施した領域が該当するものの、第（Ｎ＋１）回目のチェックポイント時点において実際に保存が必要なスタック領域は第１ページの途中までのハッチングを施した領域のみであり、第２ページから第４ページの領域についての保存は不要である。したがって、本実施形態においては、図６（Ｃ）の第１ページのハッチングを施した領域のみを保存すべき領域として取り扱っている。しかし、本実施形態において実施しているような処理を行わない場合には、第１ページから第４ページまでの領域を全て保存することになる。
【００４４】
次に、図３のフローチャートの処理の説明に戻って、ステップＳ３において、チェックポイント管理部７は、ＯＳ６のメモリ管理部６ａから受け取った判定結果に基づき、スタック領域の有効な範囲を確認すると、ステップＳ２において最初に取得した保存対象のリストの中から、スタック領域として、現在は無効になっていて、保存することが不要とされたページを削除し、保存が必要なページのみを対象とするリストに更新して、最終的な保存対象リストを作成する（ステップＳ４）。そして、最終的な該保存対象リストに登録されているページのデータをチェックポイント用ファイルシステム８に現在のチェックポイント時点におけるチェックポイントデータとして書き込む（ステップＳ５）。
【００４５】
ここで、チェックポイントデータの書き込みを行うチェックポイント用ファイルシステム８は、通常のプログラム実行に使用するファイルシステム９とは異なり、大きなサイズのデータの書き込みに対して最適化されていることが望ましい。つまり、チェックポイント時点においてはチェックポイントデータとして一度に大量のデータの書き込みが発生し、また、チェックポイントデータを読み出す場合にも、同様に、一度に大量のデータの読み出しを行う処理となるのに対して、通常のプログラム実行に使用するファイルシステム９においては、小さなデータ量の単位でデータの読み書き動作を頻繁に繰り返す処理が行われる。したがって、ファイルシステム９の場合には、チェックポイント用システムとは異なり、一般に、小さなデータ量の頻繁な読み書き動作について最適化を行う仕組みが採用されている。
【００４６】
つまり、チェックポイント用として通常のファイルシステム９を利用すると、チェックポイントデータの書き込み効率が悪くなり、書き込みに要する時間が長くなってしまうので、本実施形態においては、図１に示すように、ファイルシステム９とは別個に、チェックポイント用ファイルシステム８をチェックポイント専用に備えている。
【００４７】
なお、図３のフローチャートにおけるステップＳ４の保存対象リストの更新からステップＳ５の保存対象のチェックポイントデータの書き込みまでの処理は、チェックポイント管理部７が最初に呼び出された場合であっても、第２回目以降に呼び出された場合であっても、特別な処理を行う必要はなく、全て、同じ処理を行うようにすれば良い。
【００４８】
そして、保存対象のチェックポイントデータのチェックポイント用ファイルシステム８への書き込みが終了すると、チェックポイント管理部７は、チェックポイント用ファイルシステム８の保存内容を、ネットワーク１０を介して接続された外部の大容量ストレージ１１に転送するために、チェックポイント用ファイルシステム８と大容量ストレージ１１とを同期化する処理を起動する（ステップＳ６）。かくのごとき同期化処理は、通常のストレージのバックアップ機能やディザスタリカバリ（Disaster  Recovery）用として提供されている機能を利用することによって、データ転送処理をプロセッサによって行う必要がなくなり、負荷の削減を図ることができる。
【００４９】
次に、チェックポイント管理部７は、次回以降のチェックポイント時点において収集されるチェックポイントデータに関し、直前のチェックポイント時点から変更されたデータの差分を検出するための差分検出設定をＯＳ６に対して要求する（ステップＳ７）。該差分検出設定は、ＯＳ６に対してチェックポイントデータの差分を利用する差分モードで実行していることを示す差分検出フラグを設定することによってＯＳ６に対して要求し、該差分検出フラグが設定された要求を受け付けたＯＳ６は、プログラムの実行中に読み書き可能な状態に設定されていたページを全て書き込み禁止状態に変更するという処理を行う。以降、プログラムの実行中に、書き込み禁止状態に設定されているページへの書き込み動作が発生すると、ページフォルト割り込みとして検出されるので、直前のデータとの差分が発生するページを容易に判別することができる。また、チェックポイントデータの保存対象リストをクリアして何もない状態に戻す。しかる後、チェックポイント管理部７は、停止していたプログラムの実行を再開させる（ステップＳ８）。
【００５０】
次に、図３のステップＳ７およびステップＳ８において、差分検出設定としてプログラムの読み書き対象のページ全てを書き込み禁止状態に設定して、プログラムの実行を再開した後の動作について、すなわち、再開したプログラムの実行中において、書き込み禁止状態に変更されたページに対する書き込みが発生した場合の動作について図５のフローチャートを参照しながら詳細に説明する。図５は、図３のフローチャートの処理により書き込み禁止状態に設定されたページに対する書き込みが発生した場合の動作の一例を説明するためのフローチャートである。
【００５１】
図３のフローチャートに示したように、チェックポイント管理部７は、チェックポイントデータをチェックポイント用ファイルシステム８に最初に保存した以降においては、プログラムが使用するページ全てを書き込み禁止状態に設定している。したがって、図５のフローチャートにおいて、プログラムの実行中に、書き込み禁止状態のいずれかのページに対する書き込みが発生すると、ページフォルトの割り込みが発生して、プログラムの実行が停止し、ＯＳ６のメモリ管理部６ａのページフォルト処理が起動される（ステップＳ２１）。
【００５２】
起動したＯＳ６のメモリ管理部６ａは、差分検出フラグを確認することにより、差分モードのチェックポイント動作であり、チェックポイントデータとして差分データを採取するために設定された差分検出設定の結果によるページフォルトの割り込みであるか否かを調べる。その結果、差分データ採取のためのページフォルト割り込みであることを認識すると、当該ページをチェックポイントの保存対象リストに追加登録する（ステップＳ２２）。しかる後、ＯＳ６のメモリ管理部６ａは、当該ページへの書き込みを有効にする状態に設定を変更して、プログラムの実行を再開させる（ステップＳ２３）。この結果、実行を再開したプログラムは、ページフォルトを起こした当該ページへの書き込み処理を正常に実行することができる（ステップＳ２４）。
【００５３】
チェックポイント管理部７の動作が完了して、実行が再開されたプログラムにおいては、以降、書き込みを有効な状態に設定変更された当該ページに関する書き込み禁止状態が解除されているので、当該ページに対する書き込み動作については、ページフォルトの割り込み等が発生することはなく、通常通りに、実行することが可能になる。
【００５４】
以上のような処理を行うことによって、最初のチェックポイント時点以降において、書き込み禁止状態に設定されたページのうち、プログラムの実行により、書き込みが発生したページに関する情報を順次登録した保存対象リストが作成されていくことになる。かくのごとき処理は、一般的なＯＳであるＬｉｎｕｘ（登録商標）などに実装されている「コピーオンライト（Copy-on-Write）」機能によってページのコピーを行う処理と類似したものであり、容易に実装することができる。
【００５５】
なお、図３のフローチャートのステップＳ８において、チェックポイント管理部７がプログラムの実行を再開させる際に、できる限り安全な実行を可能にしようとして、チェックポイント用ファイルシステム８が外部の大容量ストレージ１１との間で実施している同期化処理の完了を待ってから、プログラムの実行を再開することが望ましいという考え方もあり得る。
【００５６】
しかし、本実施形態においては、チェックポイント用ファイルシステム８への書き込みが終了した後は、たとえ、プログラムのデータの変更が発生したとしても、次のチェックポイントの時点に達するまでは、チェックポイントデータとしてチェックポイント用ファイルシステム８に保存されたデータに対する影響を与えることがないし、また、前述したように、外部の大容量ストレージ１１との間の同期化処理に関するデータ転送処理をプロセッサによって行う必要はないので、プログラムの実行と同期化処理との間の競合を引き起こすこともなく、プロセッサに同期化処理に関する負荷が発生することもない。したがって、チェックポイント用ファイルシステム８と外部の大容量ストレージ１１との間の同期化処理の終了を待つことなく、図３のフローチャートのステップＳ７において、チェックポイントの差分検出設定が完了した時点で、ステップＳ８においてプログラム実行を再開させても問題はない。
【００５７】
実際に、大容量ストレージ１１に対するチェックポイントデータの保存が完了するまでの間に計算機１に障害が発生した場合の対応を考慮すると、同期化処理の完了を待つことなくプログラムを再開させた場合であっても、あるいは、同期化処理の完了を待ってからプログラムを再開させた場合であっても、いずれの場合においても、再開が可能なチェックポイントについて変わることがない。さらには、同期化処理の完了を待つことなくプログラムを再開させた場合には、プログラムの実行と同期化処理との一部の処理がオーバラップされ、プログラム実行時間の比率を高くすることができるという利点がある。ただし、同期化処理の完了を待つことなくプログラムを再開させた場合においては、当然のことではあるが、チェックポイント管理部７は、次のチェックポイント時点までには、チェックポイント用ファイルシステム８と外部の大容量ストレージ１１との間の同期化処理が終了していることを確認することが必要である。
【００５８】
また、チェックポイント管理部７は、実行しているプログラムが完全に終了した場合には、当該プログラムに関するチェックポイントデータとして保存したデータを、チェックポイント用ファイルシステム８と大容量ストレージ１１との双方から削除する処理を行う。
【００５９】
（本発明の他の実施形態）
前述した実施形態においては、チェックポイント用ファイルシステム８として、大量データ読み書き用の通常の機能を備えたストレージを用いる場合について説明した。しかし、チェックポイント用ファイルシステム８として、重複排除機能を有するストレージ装置を利用することにしても良い。重複排除機能を有するストレージ装置を利用することにより、データが変更されたページにおいて保存対象となるデータが発生した場合であっても、当該ページにおいて変更されていない領域の保存を省くことが可能になる。さらに、重複排除機能を有するストレージ装置に圧縮機能も付与されている場合には、保存するデータ容量をさらに削減することが可能になる。また、計算機１において複数のコア５により並列実行されるプログラムがチェックポイント用ファイルシステム８として同じファイルシステムを利用する場合には、重複排除機能を有するストレージ装置を用いることによって、複数のプログラムのチェックポイントデータ同士間における重複排除によるデータ削減効果を期待することができる。
【００６０】
また、前述した実施形態においては、チェックポイント用ファイルシステム８として、チェックポイント専用のファイルシステムを備えている場合について説明した。しかし、実際のチェックポイントの適用形態に応じて、場合によっては、チェックポイントデータを書き込む領域を通常のプログラム実行に利用しているファイルシステム９と同じ領域を利用するようにしても良い。ファイルシステム９と同じ領域を利用することにより、従来の情報処理システムのシステム構成であっても、前述した実施形態に係るチェックポイント機能を利用することができる。
【００６１】
また、前述した実施形態においては、チェックポイント管理部７は、最初の呼び出し時においてのみチェックポイントデータとしてプログラムの実行に必要とする全てのデータを保存し、第２回目以降の呼び出し時には、変更された部分だけを差分データとして保存する場合について説明した。しかし、復元する際の効率を考慮すると、あらかじめ定めた一定回数（例えば１０回など）の呼び出し毎に、チェックポイントデータとしてプログラムの実行に必要とする全てのデータを改めて保存し直すようにしても良い。さらには、場合によっては、例えば、スタック領域等の特定の領域のデータに関しては、呼び出しがある都度、毎回、プログラムの実行に必要とする全てのデータを保存するという既存の仕組みを実装するようにしても良い。
【００６２】
（実施形態の効果の説明）
以上に詳細に説明したように、本実施形態においても、次のような効果が得られる。
【００６３】
第１の効果は、チェックポイントデータとして保存するスタック領域のデータ量を削減することが可能なことである。その理由は、直前のチェックポイント時点において保存した後に再開したプログラムの実行により変更されているスタック領域であっても、現チェックポイント時点においては、スタック領域として現在利用していない領域をＯＳ６とチェックポイント管理部７とが連携して解析することによって、スタック領域としては、無効な領域のデータであり、データ保存が不要な領域であることを判定することを可能にしているためである。而して、チェックポイントデータとして保存するデータ量を削減し、チェックポイント用ファイルシステム８へのチェックポイントデータの保存時間のみならず、チェックポイント用ファイルシステム８からのチェックポイントデータの読み込み時間も削減することができる。
【００６４】
第２の効果は、チェックポイントデータの外部への転送やリスタートに要する時間を短縮することが可能なことである。その理由は、チェックポイントデータのデータ量を削減することによって外部の大容量ストレージ１１への転送が必要なデータ量も削減されること、および、リスタート時において不要なデータ領域の割り当てとデータの書き込みとが不要になるためである。
【００６５】
以上、本発明の好適な実施形態の構成を説明した。しかし、かかる実施形態は、本発明の単なる例示に過ぎず、何ら本発明を限定するものではないことに留意されたい。本発明の要旨を逸脱することなく、特定用途に応じて種々の変形変更が可能であることが、当業者には容易に理解できよう。
【符号の説明】
【００６６】
１      計算機
２      ノード
３      他のノード
４      ＣＰＵ（Central  Processing  Unit）
５      コア
６      ＯＳ
６ａ    メモリ管理部
７      チェックポイント管理部
８      チェックポイント用ファイルシステム
９      ファイルシステム（ＦＳ：File  System）
１０    ネットワーク
１１    大容量ストレージ
【図１】
2016167212.tif 000003
【図２】
2016167212.tif 000004
【図３】
2016167212.tif 000005
【図４】
2016167212.tif 000006
【図５】
2016167212.tif 000007
【図６】
2016167212.tif 000008