(57)【特許請求の範囲】
【請求項１】
課金機能と、チェックポイント／リスタート機能とをそなえた計算機システムにおいて、
プロセスの凍結処理を行う前に、該プロセスを実行したユーザのユーザ識別子と対応付けて課金レコードを課金ファイルに出力し、
前記プロセスの凍結処理を行った後に、該プロセスが属するジョブの凍結を指示したユーザのユーザ識別子と対応付けて課金レコードを課金ファイルに出力する
ことを特徴とする計算機システム。
【請求項２】
前記課金レコードは、ＣＰＵ使用時間の値と、ＣＰＵ使用時間を一時的に退避するＣＰＵ使用時間退避領域に退避されている値との差分値と、Ｉ／Ｏ量の値とＩ／Ｏ量を一時的に退避するＩ／Ｏ量退避領域に退避されている値との差分値とからなり、
前記課金レコードを課金ファイルに出力するごとに、前記ＣＰＵ使用時間の値及び前記Ｉ／Ｏ量の値をそれぞれ前記ＣＰＵ使用時間退避領域及び前記Ｉ／Ｏ量退避領域に退避すること
を特徴とする請求項１記載の計算機システム。
【請求項３】
課金機能と、チェックポイント／リスタート機能とをそなえた計算機システムにおいて、
チェックポイント／リスタート処理を指示したユーザに対してチェックポイント／リスタート処理に対する課金を行うような課金レコードを課金ファイルに出力する計算機システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は計算機システムのチェックポイント／リスタート機能に関する。
【０００２】
【従来の技術】
計算機システムは図１に示すように、ＣＰＵ、メモリ、外部記憶装置、端末装置等から構成される。ＣＰＵはメモリ上のプログラムを実行する。
オペレーティングシステム（ＯＳ）は、外部記憶装置に格納され、計算機システムの起動時にメモリ上にロードされ、以降、計算機システムの制御を行なう。
【０００３】
ユーザプログラムは、ＯＳ同様に外部記憶装置に格納され、端末装置等からの指示に応じて、ＯＳによって、メモリ上にロードされ、実行される。
メモリの大きさには限りがあるため、巨大なプログラムやデータを全てメモリ上に配置することは不可能なため、いわゆる仮想記憶方式で、必要なものと不必要なものとを適宜メモリと外部記憶装置との間で交換しながら処理が進められる。
【０００４】
プログラムは、通常プロセスと呼ばれる実行単位によって実行される。一つのプロセスには、一つの仮想空間（仮想的なメモリ空間と、仮想的なレジスタ等によって構成される）が割り当てられる。また、ジョブは、最低一つのプロセスとプロセスを管理するためのジョブ情報により構成される。
計算機システムは複数のユーザにより使用され、また、複数のプログラムが同時に実行されるため、ＯＳは様々な機能を提供している。
【０００５】
例えば、プログラムの実行中に計算機システムがシステムダウンを起こした場合などに備えて、計算機システムはチェックポイント／リスタート機能を提供している。
チェックポイント機能とは、実行中のジョブやプロセス等の実行単位の実行環境を保存する処理（チェックポイント処理または凍結処理とも言う）を行なう機能で、リスタート機能とは、チェックポイント機能により保存された実行環境を再現し、プログラムの実行を再開する処理（リスタート処理または解凍処理とも言う）を行なう機能のことである。
【０００６】
また、各種のユーザプログラムが共通に行なうような処理、例えばファイルの入出力処理等も、システムコールとして、ＯＳによりあらかじめ提供されている。なお、システムコールは、システムコールを発行するプロセスにとっては、サブルーチンのようなものであって、呼び出す側のプロセス空間に対してＯＳが処理を行なう。システムコールを実行する際は、ＯＳが走行するが、その使用するＣＰＵ時間等はユーザプロセスに対して課金される。
【０００７】
【発明が解決しようとする問題点】
ところで、従来のチェックポイント／リスタート機能には以下のような問題点があった。
チェックポイント処理は、ユーザプログラムがシステムコールを行なった際に、システムコール本来の処理を行なった後にプロセスがチェックポイントの対象になっているか否かを判定し、チェックポイントの対象になっていた場合のみ実行環境の保存を行なう。即ち、チェックポイントの処理は、ユーザプログラムの本来の処理と区別されること無く、一緒に課金の対象になっていた。
【０００８】
チェックポイント処理は、元々システム運用者の都合により行なわれる場合もあり、それを一律にユーザに対して課金することは好ましいことではない。これが第一の問題点である。
また、第二の問題点として、課金情報がジョブの終了時点まで課金ファイルに出力されないという問題があった。
【０００９】
ユーザプログラムは、必ずしも正常終了することだけを意図しているわけではなく、処理の途中で、中間的な出力をファイルに格納しておき、後で、その中間出力を利用して処理を継続するようなものがある。このようなケースでは、プログラムが正常に終了しなかったからといって、全く課金しないということは、システムの運用上好ましいことではない。
【００１０】
また、チェックポイント／リスタート処理を行なった場合、ジョブに対する課金はリスタート時点で最初からやり直されるため、ジョブのデバッグ等の目的でジョブを中間地点で凍結し、凍結した時点から条件を変更して複数回実行するような場合に凍結時点までの課金が多重に課金されてしまう。
第三の問題点として、チェックポイントの際に保存されるファイルは、まさにその時点で使用中のファイルに限られていたため、チェックポイント処理以降に別のファイルを更新した場合には、チェックポイントで保存された情報だけではチェックポイント時点の状態を復元出来ないという問題があった。
【００１１】
この問題点についてより詳しく説明すると、以下のとおりとなる。
チェックポイント処理以前（時刻Ｔ０）にファイルＡの使用を開始した状態でチェックポイント処理を行なう（時刻Ｔ１）。その後処理ＸでファイルＢの内容を参照し（時刻Ｔ２）、処理ＹでファイルＢを更新（時刻Ｔ３）したとする。時刻Ｔ１で退避した実行状態を復元して処理を再開した場合、時刻Ｔ３における処理Ｙによる更新のため、処理Ｘを再度実行した場合にはファイルＢの内容は時刻Ｔ２において参照したときとは異なる値となってしまう。
【００１２】
【問題を解決するための手段】
第一の問題点を解決するために、本発明では、ユーザプログラム走行に対する課金先とチェックポイント／リスタート処理に対する課金先とを区別して課金ファイルに出力する。
第二の問題点を解決するために、本願発明では、課金情報をチェックポイント時に課金ファイルに出力する。
【００１３】
第三の問題点を解決するために、本発明では、ファイルアクセス時に、ファイルをアクセスする実行単位がチェックポイント採取済みのものである場合、アクセス対象のファイルが退避済みであるか否かを判定し、未退避の場合はそのファイルをチェックポイントに対して追加退避する。
【００１４】
【発明の実施の形態】
図１は本発明の実施形態の構成を示す図である。図中、１は計算機、２は外部記憶装置、３は端末装置である。計算機１は、ＣＰＵ４とメモリ５とにより構成される。メモリ５には、オペレーティングシステム（ＯＳ）６及びジョブ７−ｎが配置される。
【００１５】
ＯＳ６は、凍結処理手段８、解凍処理手段９、課金処理手段１０、システムコール１１、凍結指示情報テーブル１２を含む。
凍結処理手段８は、ジョブの実行状態をファイルとして外部記憶装置２に退避するものである。解凍処理手段９は、凍結処理手段８によってファイルとして外部記憶装置２に退避されたジョブの実行状態を復元するものである。課金処理手段１０は、ＯＳ配下で実行されるプログラムの走行に伴って使用されるＣＰＵ時間や入出力量を課金情報として管理するものである。
【００１６】
ジョブ７−ｎは、ジョブ情報１３及び少なくとも一つのプロセス１４−ｎにより構成される。ジョブ情報は１３−ｎはジョブを管理するための情報である。プロセス１４−ｎは、プログラムを実行するための最小の単位である。プロセス１４−ｎの各々は、プロセスを管理するための情報として図３に示すプロセス管理情報を有する。
【００１７】
外部記憶装置２には、オペレーティングシステム１５、凍結ファイル１６、プログラム１７、データファイル１８、課金ファイル１９が格納される。
オペレーティングシステム１５は、計算機システム起動時に計算機１のメモリ５にロードされる。凍結ファイル１６は、凍結処理手段８によって退避されたジョブ情報を格納するファイルである。凍結ファイル１６は、一つのファイルである必要は無く複数のファイルであってもよい。
【００１８】
プログラム１７は、ＯＳ６配下で実行される。データファイル１８は、プログラム１７の実行に伴ってアクセスされる。課金ファイル１９は、課金処理手段により管理される課金情報を格納するものである。
図２を用いて、ジョブ情報１３−ｎについて説明する。図２に示すとおりジョブ情報は、ジョブ番号、凍結処理済フラグ、凍結ファイル名、複数のプロセス番号、複数の退避済ファイル名及びジョブを管理する上で必要なその他の情報を有する。
【００１９】
ジョブ番号１３−ｎは、ＯＳ６配下の複数のジョブを特定するための番号である。凍結処理済フラグは、そのジョブの実行状態が凍結ファイルとして既に退避されているか否かを示す情報である。凍結ファイル名は、退避されたジョブ情報を格納したファイル名である。プロセス番号ｎはジョブを構成するプロセスの番号である。退避済ファイル名ｎは、ジョブの実行状態を退避した際に使用中で退避されたファイルの名前である。
【００２０】
図３を用いて、プロセス情報について説明する。プロセス情報は、プロセス番号（プロセスＩＤ）、ジョブ番号、ユーザ識別子、ＣＰＵ使用時間、Ｉ／Ｏ量、ユーザ識別子退避領域、ＣＰＵ使用時間退避領域、Ｉ／Ｏ量退避領域及びプロセス管理のために必要な図示しない情報からなる。
プロセス番号はＯＳ６配下の複数のプロセスを特定するための番号である。ジョブ番号はプロセスが属するジョブのジョブ番号である。ユーザ識別子は、プロセスを実行したユーザの識別子である。ＣＰＵ使用時間はプロセスが実行を開始してからＣＰＵを使用した累積の時間である。Ｉ／Ｏ量は、プロセスが実行を開始してからの入出力の量（バイト単位）の累積である。ＣＰＵ使用時間及びＩ／Ｏ量はＯＳ６の課金処理手段１０によってプロセスの実行と共に随時更新される。
【００２１】
ＣＰＵ使用時間退避領域及びＩ／Ｏ量退避領域は、ＣＰＵ使用時間及びＩ／Ｏ量を一時的に退避するのに用いられる。
課金ファイル１９は図４に示すレコードフォーマットから構成される複数のレコードで構成される。課金ファイルのレコードは、ユーザ識別子、ＣＰＵ使用時間、Ｉ／Ｏ量及び図示しないその他の情報から構成される。ユーザ識別子は課金対象のユーザを特定するものである。ＣＰＵ使用時間は、ユーザのプログラムを実行するうえでＣＰＵを使用した時間である。Ｉ／Ｏ量は、ユーザのプログラムを実行するうえで入出力を行なった量である。これらの情報および必要なその他の情報に基づいてユーザに請求される料金が決定される。
【００２２】
凍結指示情報テーブル１２は、図５に示すフォーマットの複数のレコードで構成される。凍結指示情報テーブル１２は、ジョブの凍結を指示したユーザのユーザ識別子と、凍結対象のジョブ番号で構成される。
次に図６を用いて凍結処理手段８の行なう、チェックポイント処理について説明する。チェックポイント処理とは、ジョブの実行状態の退避を行なう処理であり、ジョブの凍結処理ともいう。
【００２３】
端末装置３等からあるユーザ（例えばシステム管理者) がジョブの凍結を指示すると、指示を行なったユーザのユーザ識別子と、凍結の対象のジョブのジョブ番号とを凍結指示情報テーブルに登録する（ステップＳ２１）。
テーブルへの情報の登録が完了すると、ジョブを構成するプロセスからのプロセスの凍結処理（プロセスの実行状態の退避）の完了の通知を受け（ステップＳ２２）、プロセスの完了の通知とともに、通知される使用中のファイルの名前を退避済みファイルに登録する（ステップＳ２３）。プロセスの凍結処理の詳細については後で説明する。
【００２４】
凍結対象のジョブを構成する全てのプロセスの完了が通知されていなければステップＳ２２及びステップＳ２３の処理を繰り返す（ステップＳ２４）。
退避済ファイル名に登録したファイルを凍結ファイル１６に退避し（ステップＳ２５）、ジョブ情報を凍結ファイル１６に退避する（ステップＳ２６）。
次にプロセスの凍結処理（プロセスの実行状態の退避）について、説明する。
【００２５】
各プロセスは、ＯＳ６によりサブルーチンとして提供されるシステムコール１１を呼び出しながら処理を行なう。本実施形態においては、図７に示す如く、システムコール本来の処理が終了した後に、チェックポイント処理を行なう。なお、図７に示したフローは、ファイルの入出力を伴わないシステムコールにおける処理であって、ファイルへのアクセスを伴うシステムコールに関する処理については、後で説明する。
【００２６】
図９にチェックポイント処理のフローを示す。まず凍結指示情報テーブルを参照して、プロセスが属するジョブが凍結の対象であるか否かを判定し、対象でなければ直ちに処理を終了する（ステップＳ５０）。
次に、プロセス情報のユーザ識別子、ＣＰＵ使用時間とＣＰＵ使用時間退避領域に退避されている値との差分値、Ｉ／Ｏ量とＩ／Ｏ量退避領域に退避されている値との差分値とからなる課金レコードを課金ファイル１９に出力し（ステップＳ５１）、ＣＰＵ使用時間をＣＰＵ使用時間退避領域に退避し、Ｉ／Ｏ量をＩ／Ｏ量退避領域に退避し（ステップＳ５２）、プロセスの凍結処理を行ない、完了の通知と使用中のファイルをＯＳ６に通知する（ステップＳ５３）。
【００２７】
プロセスの凍結処理が完了すると、ジョブの凍結を指示したユーザのユーザ識別子、ＣＰＵ使用時間とＣＰＵ使用時間退避領域に退避されている値との差分値、Ｉ／Ｏ量とＩ／Ｏ量退避領域に退避されている値との差分値とからなる課金レコードを課金ファイル１９に出力し（ステップＳ５４）、ＣＰＵ使用時間をＣＰＵ使用時間退避領域に退避し、Ｉ／Ｏ量をＩ／Ｏ量退避領域に退避し（ステップＳ５５）、チェックポイント処理を終了する。
【００２８】
図８を用いてファイルアクセス用システムコールの処理について説明する。
まずファイルへのアクセスを行なうプロセスが属するジョブに関して凍結処理が行なわれているか否かをジョブ情報内の凍結処理済フラグに基づいて判定する。判定の結果、凍結処理が行なわれていない場合は、ステップＳ４７に進む（ステップＳ４１）。
【００２９】
凍結処理が行なわれている場合、アクセス対象のファイルが退避済みであるか否かをジョブ情報内の退避済ファイル名を参照して判定する。アクセス対象のファイルが退避済みであれば、ステップＳ４７に進む（ステップＳ４２）。
次に課金情報を課金ファイルに出力する（ステップＳ４３）。ここでの処理は、図９のステップＳ５１及びステップＳ５２の処理と同様である。即ち、プロセス情報のユーザ識別子、ＣＰＵ使用時間とＣＰＵ使用時間退避領域に退避されている値との差分値、Ｉ／Ｏ量とＩ／Ｏ量退避領域に退避されている値との差分値とからなる課金レコードを課金ファイル１９に出力し、ＣＰＵ使用時間をＣＰＵ使用時間退避領域に退避し、Ｉ／Ｏ量をＩ／Ｏ量退避領域に退避する。
【００３０】
次に、アクセス対象のファイルを退避し（ステップＳ４４）、メモリ上のジョブ情報にアクセス対象のファイルのファイル名を退避済ファイル名に登録するとともに、このジョブ情報をもとに凍結ファイル１６に退避されているジョブ情報を更新する（ステップＳ４５）。
ファイルの退避及び、ジョブ情報の更新が完了すると、課金情報の出力を行なう（ステップＳ４６）。ここでの処理は、図９のステップＳ５４及びステップＳ５５の処理と同様である。即ち、ジョブの凍結を指示したユーザのユーザ識別子、ＣＰＵ使用時間とＣＰＵ使用時間退避領域に退避されている値との差分値、Ｉ／Ｏ量とＩ／Ｏ量退避領域に退避されている値との差分値とからなる課金レコードを課金ファイル１９に出力し、ＣＰＵ使用時間をＣＰＵ使用時間退避領域に退避し、Ｉ／Ｏ量をＩ／Ｏ量退避領域に退避する。
【００３１】
図１０を用いて、解凍処理手段９によって実行されるリスタート処理について説明する。リスタート処理とは、チェックポイント処理により外部記憶装置に凍結ファイルとして退避されたジョブの実行状態をメモリ上に展開する解凍処理と同じである。
ジョブのリスタートが指示されると、まず凍結ファイル１６からジョブ情報を取り出しメモリ上に配置する（ステップＳ６１）。
【００３２】
次にメモリ上に配置したジョブ情報の内容に基づいて退避されているファイル（ジョブ凍結の際に使用中であったファイル）を復元し（ステップＳ６２）、続いてジョブを構成する一つまたは複数のプロセスを復元する（ステップＳ６３）。これらの復元が完了すると課金情報の出力を行なう（ステップＳ６４）。
ここでの課金情報の出力は、基本的には図９に示したステップＳ５４及びステップＳ５５の処理と同様である。即ち、ジョブのリスタートを指示したユーザのユーザ識別子、ＣＰＵ使用時間とＣＰＵ使用時間退避領域に退避されている値との差分値、Ｉ／Ｏ量とＩ／Ｏ量退避領域に退避されている値との差分値とからなる課金レコードを課金ファイル１９に出力し、ＣＰＵ使用時間をＣＰＵ使用時間退避領域に退避し、Ｉ／Ｏ量をＩ／Ｏ量退避領域に退避する。
【００３３】
以上により、従来技術の抱えていた問題を解決することができる。
また、別の実施形態として、図１１に示す如く、プロセス管理情報に対してＣＰＵ使用時間第二退避領域、及びＩ／Ｏ量第二退避領域を更に備え、これらをもちいて処理を行なうことも可能である。
即ち、通常処理開始時点（凍結処理の終了時点）での課金情報を第二の課金情報退避領域（ＣＰＵ使用時間第二退避領域およびＩ／Ｏ量第二退避領域）に格納しておき、通常処理終了時点（凍結処理開始時点）での課金情報を第一の課金情報退避領域（ＣＰＵ使用時間第二退避領域およびＩ／Ｏ量第二退避領域）に格納しておき、凍結処理が終了した時点で第一の課金情報退避領域の値と第二の課金情報退避領域の値との差分をプログラム（ジョブ、プロセス）を実行しているユーザに対して課金するような課金レコードを課金ファイル１９に出力するとともに、現在の課金情報と第一の課金情報退避手段に格納されている値との差分をジョブの凍結を指示したユーザに対して課金するような課金レコードを出力する。
【００３４】
このような構成でも、従来技術の抱えていた問題を解決することが可能である。
以上述べた実施形態では、チェックポイント処理後のファイルのアクセスを例に説明したが、本発明は必ずしもファイルのみを対象にしたものではなく、ファイル以外のコンピュータ資源に対しても同様のことが行なえる。
【００３５】
また、実施形態の中では、ジョブ情報はジョブに付随し、プロセス情報はプロセスに付随するように説明したが、必ずしもこのようにする必要はなく、ＯＳの管理するメモリ上または外部記憶装置上に格納するよう構成してもよい。
【００３６】
【効果】
以上述べたとおり、本発明により、運用中の計算機システムがシステムダウンを起こした場合でも、ユーザプログラムの実行実績に応じた課金処理が可能となる。
また、チェックポイント／リスタート処理を指示したユーザに対してチェックポイント処理／リスタート処理に対する課金を行なうことができ、課金がより正確になる。
【００３７】
さらに、チェックポイント処理後にアクセスしたファイル（または、その他の計算機資源）も自動的に退避されるので、ジョブの再実行時の実行環境を正確に再現することができる。
【図面の簡単な説明】
【図１】計算機システムの構成を示す図
【図２】ジョブ情報の構成を示す図
【図３】プロセス管理情報の構成を示す図
【図４】課金ファイルのレコードフォーマットを示す図
【図５】凍結指示情報テーブルのレコードフォーマットを示す図
【図６】チェックポイント処理のフローを示す図
【図７】システムコールのフローを示す図
【図８】ファイルアクセス用システムコールのフローを示す図
【図９】チェックポイント処理のフローを示す図
【図１０】リスタート処理のフローを示す図
【図１１】プロセス管理情報の第２の構造を示す図
【符号の説明】
１：計算機
２：外部記憶装置
３：端末装置
４：ＣＰＵ
５：メモリ
６：オペレーティングシステム（ＯＳ）
７−ｎ：ジョブ
８：凍結処理手段
９：解凍処理手段
１０：課金処理手段
１１：システムコール
１２：凍結指示情報テーブル
１３−ｎ：ジョブ情報
１４−ｎ：プロセス
１５：ＯＳ
１６：凍結ファイル
１７：プログラム
１８：データファイル
１９：課金ファイル
【図１】
0003648892.tif 000002
【図２】
0003648892.tif 000003
【図３】
0003648892.tif 000004
【図４】
0003648892.tif 000005
【図５】
0003648892.tif 000006
【図６】
0003648892.tif 000007
【図７】
0003648892.tif 000008
【図８】
0003648892.tif 000009
【図９】
0003648892.tif 000010
【図１０】
0003648892.tif 000011
【図１１】
0003648892.tif 000012