(58)【調査した分野】(Int.Cl.,DB名)
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、請求項1又は2に記載のメモリ管理プログラム。
【発明を実施するための形態】
【0012】
以下、図面に基づいて本発明の実施の形態を説明する。
【0013】
図1は、本実施の形態におけるメモリ管理装置のハードウェア構成の一例を示す図である。
【0014】
図1において、メモリ管理装置1は、CPU2、メモリ3、HDD(Hard Disk Drive)4、入力装置5、出力装置6、およびネットワークI/F(Interface)7を備える。CPU(Central Processing Unit)2、メモリ3、HDD(Hard Disk Drive)4、入力装置5、出力装置6、およびネットワークI/F(Interface)7は、システムバス8によって相互に接続される。
【0015】
CPU2は、HDD4に記憶されたプログラムやデータをメモリ3に読み出して、プログラムによる処理を実行する中央演算処理装置である。CPU2は、例えば複数のプロセッサコアを有するマルチコアプロセッサである。マルチコアプロセッサは複数のプロセッサの間でプロセッサ間通信を行うことができる。
【0016】
メモリ3は、メモリ管理装置1の主記憶装置であり、例えばRAM(Random Access Memory)によって構成される。メモリ3に記憶されたプログラムはCPU2によって実行される。メモリ3は、例えばROM(Read Only Memory)やフラッシュメモリを含んでいてもよい。
【0017】
HDD4は、メモリ管理装置1の2次記憶である。HDD4には、プログラムやデータが格納されて、適宜メモリ3に読み出される。また、メモリ3に確保された主メモリ領域のアドレスが不足した場合、ページング処理にてメモリ3のデータがHDD4に一時的に退避される。本実施の形態では2次記憶装置としてHDD4を例示したが、HDD4の代わりに、例えばSSD(Solid State Drive)を用いることもできる。
【0018】
入力装置5は、メモリ管理装置1の外部から内部にデータの入力を行う機器である。入力装置5は、例えば、キーボード、マウス、タッチパネル等である。出力装置6は、メモリ管理装置1の内部のデータを外部に出力する装置である。出力装置6は、例えば、ディスプレイ、スピーカである。
【0019】
ネットワークI/F7は、ネットワークを介した外部装置との通信を制御する。ネットワークI/F7は、接続するネットワークのプロトコルに対応したNIC(Network Interface Controller)を有する。
【0020】
次に、本実施の形態におけるメモリ管理装置1のソフトウェアの構成を、
図2を用いて説明する。
図2は、メモリ管理装置のソフトウェア構成の一例を示す図である。
図2で説明するソフトウェアは、
図1で説明したメモリ3に読み出されて、CPU2によって実行される。
【0021】
図2において、メモリ管理装置1は、ソフトウェアの構成として、OS(Operating System)層とアプリケーション層と、OS層の下位に位置し、図示しないハードウェア層からなる階層構造のソフトウェアを備える。OS層は、カーネル10とデバイスドライバ11とを備える。
【0022】
デバイスドライバ11は、ハードウェア層のハードウェアを制御するプログラムである。デバイスドライバ11は、ハードウェアの構成に対応した複数のプログラムモジュールを有し、それぞれのプログラムモジュールはハードウェアの構成に応じてカーネル10に対して動的に追加してもよい。
【0023】
アプリケーション層は、OS層の上で動作する複数のアプリケーションプログラム(以下、「アプリ」と省略する。)を備える。メモリ管理装置1は、アプリの一例として複数のサービス13と、複数のユーザプロセス14とを備える。ユーザプロセス14は、例えば、OS上で実行され、ユーザに対して定められた目的を果たすための機能を提供するプログラムである。また、サービス13は、例えば、ユーザプロセス14に対して、サービス13を介してOS層またはハードウェア層を利用したサービスを提供するプログラムである。
【0024】
カーネル10は、OS層の中核となる機能を備え、例えば、メモリ管理部102、プロセス管理部103、IO(Input Output)管理部104、ネットワーク管理部105、及びファイルシステム管理部106を備える。
【0025】
メモリ管理部102は、物理的メモリであるメモリ3に対して仮想アドレッシングによるメモリマッピングを行い、それぞれのアプリがマッピングしたメモリ領域を安全に利用できるように管理する。プロセス管理部103は、それぞれのアプリに対して実行を許可し、ハードウェアへのアクセスのためのインタフェースを提供する。例えば、プロセス管理部103は、アプリからのシステムコールに対して、ハードウェアの利用を提供する。また、プロセス管理部103は、アプリを実行するのに必要なスタックを提供する。
【0026】
IO管理部104は、デバイスドライバ11を介して、メモリ管理装置1に接続される入出力デバイスによる入出力データの管理を行う。ネットワーク管理部105は、メモリ管理装置1に接続されるネットワークの管理を行う。ファイルシステム管理部106は、ファイルシステムによるデータの取り扱いを管理する。
【0027】
メモリ管理部102は、メモリ管理プログラム12を備える。メモリ管理プログラム12は、メモリ管理部102の機能に対して、本実施の形態において新たに提供する機能であり、詳細は
図3を用いて後述する。なお、本実施の形態において、メモリ管理プログラム12は、メモリ管理部102の機能を拡張することによって実装している。但し、メモリ管理プログラム12を、例えばサービス13として、メモリ管理部102とは別のプログラムとして実装してもよい。
【0028】
次に、メモリ管理装置1の機能を、
図3を用いて説明する。
図3は、メモリ管理装置1の機能の概略の一例を示す図である。
【0029】
図3において、メモリ管理装置1は、
図2で説明したメモリ管理プログラム12と、ダンプ復元ポイント作成プロセス(以下、「復元プロセス」と省略する。)131のプログラムが動作している。メモリ管理プログラム12は、検知部121、確保部122、及び保存部123を備える。復元プロセス131はOS層の上で動作するサービス13として実装する。但し、復元プロセス131を、例えばカーネル10の機能を拡張して実装してもよい。
【0030】
メモリ管理装置1は、メモリ管理部102によってメモリ3にマッピングされた仮想アドレス空間において、主メモリ領域31と差分用メモリ領域32を備える。主メモリ領域31は、プログラムの実行においてカーネル10により利用される領域である。
【0031】
差分用メモリ領域32は、ページ管理テーブル33と差分メモリ34を備える。ページ管理テーブル33は、後述するページアウト時の差分メモリデータの変更を管理するテーブルである。差分メモリ34は、コンテキスト、差分メモリデータ、メモリ変更テーブルを有している。差分用メモリ領域32には複数の差分メモリ34を備えることができる。
図3で例示する差分メモリ34は、差分メモリ1(341)、差分メモリ2(342)、差分メモリ3(343)が保存された状態を図示している。それぞれ所定の差分メモリ34nには、コンテキスト34n1、差分メモリデータ34n2、およびメモリ変更テーブル34n3が対応付けられて保存される。例えば、差分メモリ1(341)には、コンテキスト3411、差分メモリデータ3412、メモリ変更テーブル3413が対応付けられて保存される。
【0032】
検知部121は、主メモリ領域31を監視して、主メモリ領域31への書き込みを検知する。検知部121は、例えば、メモリ管理部102がメモリのデータを変更する書き込み処理をトラップして、主メモリ領域31への書き込みを検知してもよい。検知部121は、書き込み処理をトラップすることにより、主メモリ領域への書き込みをページ単位で検知することができる。また、検知部121は、ページング処理を検知してメモリへの書き込みを検知してもよい。
【0033】
ここで、ページング処理とは、例えばユーザプロセス14が、物理メモリとしてマップされていない仮想アドレス空間上のページにアクセスしたときに発生するページフォルト処理を行うものである。メモリ管理部102は、不要なページをハードディスク等に書き出して物理メモリから消去(ページアウト)し、また、必要なページをハードディスク等から読み出して物理メモリ上に配置(ページイン)する。
【0034】
確保部122は、所定のタイミングで差分用メモリ領域32に差分メモリ34の記憶領域を順次確保する。
図3では、差分メモリ1(341)から差分メモリ3(343)の3つの差分メモリが確保されていることを示している。
【0035】
確保部122が差分メモリ34を確保する所定のタイミングとは、例えば、所定の時間間隔が経過したときである。所定のタイミングとしては他に、メモリの変更量が所定の量に達したとき、CPUの使用率が所定値以上になったとき、ハードディスク等の記憶装置の単位時間あたりの使用量が所定の回数以上となったとき、あるいは、ネットワークの単位時間あたりの使用量が所定値以上となったとき等であってもよい。
【0036】
確保部122が差分メモリ34を確保する所定のタイミングは予め設定することができる。所定のタイミングの設定について、
図6を用いて説明する。
図6は、差分メモリ取得方法の設定の一例を示す図である。
【0037】
図6において、「設定項目」及び「パラメータ」は、差分メモリ34の確保のタイミングを表している。ユーザは、設定項目とパラメータを指定できる。設定項目がパラメータで指定された条件となったときに、差分メモリ34が確保される。例えば、設定項目で「時間」を選択して、そのパラメータが「10秒ごとに取得」であった場合、10秒ごとに、差分メモリ34が順次確保されることになる。
【0038】
設定項目は複数を選択可能である。設定項目を複数選択したときには、いずれかの設定項目がパラメータで指定された条件となったときに、差分メモリ34が確保される。また、パラメータは適宜変更ができる。
【0039】
図6で示す設定項目及びパラメータの指定は、例えばメモリ管理プログラム12が、出力装置6のディスプレイを通じて、
図6で示した設定画面のUI(User Interface)を提供する。また、設定項目を記述したテキスト等にて、設定ファイルとして予め保存しておき、メモリ管理プログラム12の起動時に設定ファイルを読み込んでもよい。確保部122は、設定された条件に従い差分メモリ34を確保する所定のタイミングを設定又は変更することができる。
【0040】
保存部123は、確保部122によって確保された差分メモリ34の記憶領域に検知部121で検知された書き込み先のデータ領域に記憶された差分メモリデータをメモリダンプとして順次保存する。ここで、メモリダンプとは、メモリに記憶されたデータを書き出したものである。保存部123が保存する差分メモリデータは、例えば、主メモリ領域31のページ単位で保存してもよい。また、複数のページを一つの差分メモリデータとして保存してもよい。
【0041】
復元プロセス131は、差分メモリ34の確保に対応して、CPU2のコンテキスト情報をそれぞれの差分メモリ34に順次保存する。
【0042】
コンテキスト情報は、CPU2が複数のプロセスにて共有されてコンテキストスイッチが発生したときに保存されるCPU2の使用状況を示す設定情報である。差分メモリ34に保存された差分メモリデータは、対応するコンテキスト情報と併せて保存することにより、過去の差分メモリデータとそのときのCPU2の状態と整合性を図ることができる。
【0043】
ここで、整合性を図るとは、クラッシュ発生時より過去の時点でのメモリのデータと、そのときのCPU2の状態とが時系列的に対応が取れていることをいう。
【0044】
主メモリ領域31のメモリデータと差分用メモリ領域32のメモリデータは、CPUがエラーによる停止をしたときに完全メモリダンプ及び差分メモリダンプとして保存される。保存された完全メモリダンプと差分メモリダンプは、エラーの解析のために、例えばCPUの再起動時に読み出すことができる。読み出された完全メモリダンプと差分メモリダンプによって、CPU2がエラーで停止する前の過去のメモリダンプを復元することができる。メモリダンプ復元の詳細は後述する。
【0045】
次に、ページ管理テーブル33の詳細を、
図4を用いて説明する。ページ管理テーブル33は、ページアウト時の差分メモリデータの変更を管理するテーブルである。
図4は、ページ管理テーブルの一例を示す図である。
【0046】
図4において、ページ管理テーブル33は、差分用メモリ領域番号、保存先のアドレス、ページアウト領域使用場所情報(1〜n)の各フィールドを有する。差分用メモリ領域番号は、ページアウトした主メモリ領域の情報が、何番目の差分メモリに保存されているのかを示す情報である。差分用メモリ領域番号は、1からnまでの整数が入力される。
【0047】
保存先のアドレスは、主メモリ領域31に書き込みがされて変更があった場合に保存する、変更前の主メモリ領域31の情報を保存した差分用メモリ領域34nの開始アドレスである。なお、主メモリ領域31が変更されていない場合は(0xffffffff)が入力されている。ページ管理テーブル33を設けることによって、増減する差分メモリ34を一元的に管理することが可能となる。
【0048】
ページアウト領域使用場所情報(1〜n)は、ページアウトした主メモリ領域31の情報と過去の差分用メモリ領域の情報が一致した際に追加する情報である。ページアウト領域使用場所情報は、差分メモリ34と主メモリ領域31のアドレスとを対応させて保存する。ページアウト領域使用場所情報は、一つの差分メモリ34に対して、複数の差分メモリデータを保存することができる。例えば、
図4では、差分用メモリ領域番号が1の領域ではm個の差分メモリデータが保存されている。一方、差分用メモリ領域番号が2の領域では、一つの差分メモリデータ、差分用メモリ領域番号が3の領域では、二つの差分メモリデータが保存されていることを表している。
【0049】
次に、それぞれの差分用メモリ領域34nが有するメモリ変更テーブル34n3の詳細を、
図5を用いて説明する。
図5は、メモリ変更テーブルの一例を示す図である。
【0050】
図5において、それぞれのメモリ変更テーブルは、メモリ領域のアドレス、変更フラグ、および保存先のアドレスの各フィールドを有する。メモリ領域のアドレスは、主メモリ領域31をページ単位で分割したときの先頭アドレスを示す。変更フラグは、主メモリ領域31に対する変更の有無を示す。変更フラグの"1"は、変更があったことを示す。また、変更フラグの"0"は、変更が無かったことを示す。保存先のアドレスは、差分用メモリ領域34nのそれぞれの先頭アドレスである。この保存先のアドレスは、
図4で説明した保存先のアドレスと同じであり、増減する差分メモリのそれぞれにおいてもメモリ領域のアドレスと対応付けて記録しておく。
【0051】
次に、
図3で説明したメモリ管理プログラム12による、主メモリ領域31のメモリデータの差分用メモリ領域32への保存について、
図7を用いて説明する。
図7は、書き込みトラップとメモリデータの保存の一例を示す図である。
【0052】
図7において、(1)〜(5)は時間経過の順番を示す。(1)において、先ずは、全ての主メモリ領域31を書き込み禁止にする。(1)で図示する主メモリ領域31の網点は、主メモリ領域31が書き込み禁止の状態であることを示している。主メモリ領域31を書き込み禁止にすることにより、検知部121は主メモリ領域31に対する全ての書き込み処理をトラップする。(2)において、検知部121が主メモリ領域に対する書き込みをともなう処理をトラップして割込処理を発生させる。
【0053】
(3)において、確保部122は、所定の記憶領域として差分用メモリ領域32に差分メモリ34を確保して、書き込み処理の対象となる主メモリ領域31のメモリデータ(データn)をページ単位で差分メモリ34にデータmとして保存する。なお、保存される主メモリ領域31のデータnと、差分メモリ34に保存されるデータmは、全く同一のデータであってもよいし、後述する完全メモリダンプの復元において、データmからデータnを復元できるのであれば、例えばデータmはデータnを圧縮したものであってもよい。
【0054】
(4)において、保存されたデータnのメモリ領域は書き込み禁止が解除されて割込処理が終了する。(5)において、トラップされた書き込み処理が実行されて、書き込み禁止が解除された主メモリ領域31にデータn'が書き込まれる。
【0055】
なお、主メモリ領域31への書き込み禁止と解除は、例えばメモリ管理プログラム12がメモリ管理部102に対して行ってもよい。
【0056】
次に、
図6で説明した差分メモリ取得方法において、設定項目が「時間」である場合の差分メモリ34の確保とメモリデータの保存の詳細を、
図8を用いて説明する。
図8は、差分メモリ34の確保とメモリデータの保存の一例を示す図である。
【0057】
図8(1)において、(1)から(3)は、時刻t1からt3におけるダンプ復元ポイント1から3の主メモリ領域31のメモリの状態を示している。時刻t1におおいて、メモリの状態は、それぞれのデータ領域におけるメモリデータが「A、B、C、D、E」である。
【0058】
時刻t2において、主メモリ領域31に対する書き込み処理により書き込み先のデータ領域のメモリデータ「B、E」が「Z、E'」に書き換えられる。このとき、所定の記憶領域として差分メモリ1には、書き込み先のデータ領域の書き込み処理の前のメモリデータ「B、E」が差分メモリデータ(3412−1、3412−2)に保存される。差分メモリ1(341)には、
図7で説明した差分メモリ1(341)の先頭アドレス等が保存される。
【0059】
次に、時刻t3において、書き込み先のデータ領域の書き込み処理の前のメモリデータ「Z、C」が、差分メモリ1(342)から変更された差分メモリ2(342)の差分メモリデータ(3422−1、3422−2)として保存されて、主メモリ領域31が「G、F」に書き換えられる。時刻t4において、書き込み先のデータ領域の書き込み処理の前のメモリデータ「G、D」が、差分メモリ2(342)から変更された差分メモリ3(343)の差分メモリデータ(3432−1、3432−2)に保存されて、主メモリ領域31が「H、D'」に書き換えられる。
【0060】
時刻t4の状態にて、例えばOSがクラッシュして、CPUが停止したとすると、時刻t4における完全メモリダンプと、差分用メモリ領域32に保存された差分メモリ1(342)〜差分メモリ3(343)までの情報が保存される。また、それぞれの差分メモリには、メモリ変更テーブル(3413、3423、3433)が保存されている。
【0061】
次に、OSがクラッシュした原因を解析する際の、各復元ポイントにおけるメモリダンプ復元の詳細を、
図9を用いて説明する。
図9は、メモリダンプの復元の一例を示す図である。
【0062】
図9において、(1)は、
図8で説明したOSクラッシュ時に保存された完全メモリダンプと差分用メモリ領域32を示す。
【0063】
(2)において、先ず、完全メモリダンプを、OSの再起動等により読み出して、仮ダンプファイルを作成する。仮ダンプファイルの作成及び復元は、例えばダンプファイル解析用の別のコンピュータで行ってもよい。
【0064】
(3)において、クラッシュ前に最後に保存された差分メモリ3(343)の差分メモリデータ(3432−1、3432−2)のメモリデータ「G、D」が、メモリ変更テーブル3433に保存された主記憶領域31のアドレスに従い、基のアドレスに書き込まれて、復元ポイント3における完全メモリダンプが復元される。
【0065】
(4)において、差分メモリ2(342)の差分メモリデータ(3422−1、3422−2)のメモリデータ「Z、C」が、メモリ変更テーブル3423に保存された主記憶領域31のアドレスに従い、基のアドレスに書き込まれて、復元ポイント2における完全メモリダンプが復元される。
【0066】
図9では、復元ポイント2までの完全メモリダンプの復元を図示したが、同様の方法によって、順次保存された差分メモリのデータに基づいて過去の完全メモリダンプを復元することができる。したがって、OSのクラッシュがクラッシュ直前ではない過去の原因によるものである場合には、それぞれの復元ポイントにおけるメモリダンプを時系列的に遡って復元することによりクラッシュの原因解析を容易にすることができる。
【0067】
次に、
図3で説明した復元プロセス131による主メモリ領域31のメモリデータとコンテキスト情報との整合について、
図10を用いて説明する。
図10は、差分メモリとコンテキスト情報との対応の一例を示す図である。
【0068】
図10において、本実施の形態におけるメモリ管理装置1は、CPU0(20)〜CPU3(23)の4つのCPUを備えるマルチプロセッサの場合を例示している。復元プロセス131は、CPU0によって実行されるものとする。
【0069】
(1)において、復元プロセス131が起動されると、主メモリ領域31のダンプ用コンテキスト保存領域(図示網点の領域)のメモリデータがコンテキストスイッチにより保存されていない場合、明示的にコンテキスト保存領域に変更を加える。変更を加えることで、
図3で説明した検知部121は、主メモリ領域31への書き込みを検知して、所定の記憶領域としての差分メモリ領域(i−1)のコンテキスト保存領域34(i−1)1にメモリデータを保存する。(1)に示す処理によって、コンテキスト情報と対応付けて保存する書き込み先のデータ領域のメモリのデータが保存可能となる。また、コンテキスト情報の保存は、
図7又は
図8で説明したメモリ管理プログラム12によって行うことができるので、復元プロセス131がコンテキスト情報を保存する場合に比べてシステム停止時間を短縮することができる。
【0070】
(2)において、復元プロセス131は、CPU1(21)〜CPU3(23)を待ち合わせ処理(ループ処理)にして停止するとともに、CPU1(21)〜CPU3(23)のコンテキスト情報をダンプ用コンテキスト保存領域に退避させる。
【0071】
(3)において、復元プロセス131は、CPU0のコンテキスト情報をダンプ用コンテキスト保存領域に退避させる。
【0072】
(4)において、復元プロセス131は、全ての主メモリ領域31を書き込み禁止にして、主メモリ領域31への書き込み処理をトラップする。主メモリ領域31への書き込み処理をトラップして、
図7および
図8で説明したとおり、書き込み先のデータ領域の書き込み前のメモリのデータを差分メモリ領域(i−1)に保存する。保存されたメモリのデータは、(1)および(2)で保存されたコンテキスト情報と同じ所定の記憶領域としての差分メモリ領域(i−1)に対応付けられて保存される。
【0073】
(5)において、復元プロセス131は、差分メモリiにコンテキスト保存領域34i1を確保して、コンテキスト保存領域を差分メモリ34の中のコンテキスト保存領域34n3に変更する。例えば、n=iの場合は、コンテキスト保存領域は34i3に変更される。
【0074】
(6)において、復元プロセス131は、停止しているCPU1(21)〜CPU3(23)を起動して処理を再開し、自身のプロセスを終了する。
【0075】
以上の動作によって、マルチプロセッサの場合であっても、同じタイミングの全プロセッサのコンテキスト情報と差分メモリデータと対応付けて、整合させて保存することができる。また、コンテキスト情報を差分用メモリ領域32に保存することにより、コンテキスト情報の保存は、差分メモリの保存と対応付けられて行われることとなる。したがって、コンテキスト情報を復元プロセス131が割込処理にて行う必要がなくなり、割込処理によるシステムの停止時間を短くすることができる。
【0076】
次に、ページング処理を考慮した差分メモリの保存について、
図11を用いて説明する。
図11は、ページング発生時のメモリデータの保存の一例を示す図である。
【0077】
図11において、
図3で説明した検知部121が、ページアウトによって主メモリ領域31のメモリデータCが保存されていたメモリ領域が変更されることを検知すると、ページ管理テーブル33に保存された情報から、これからページアウトされるメモリデータCと差分メモリに過去に保存されたメモリデータと比較する。(
図11では、メモリデータCが既に保存されている場合を図示している。)
一致する情報が格納されておらず、メモリデータCが検出されなかった場合、差分メモリ2に変更される前の情報Cを保存するとともに、ページ管理テーブル33に差分メモリ3の差分メモリデータの保存先のアドレス(図示「0x####3000」)を新規に登録する。
【0078】
一方、メモリデータCと一致するメモリデータが差分メモリ領域(3442−2)に既に格納されていることが検出された場合、差分メモリ領域への情報保存は行わず、ページ管理テーブル33の一致した情報の記録に対して、本来情報が保存されるべきであった場所の情報を追加する。
図11では、ページアウト領域使用場所情報_1に対して、「領域3、0x####3000」が追加されることを図示している。
【0079】
以上の動作によって、ページングの発生による主メモリ領域31が書き換わる場合であっても差分用メモリ領域32による差分メモリの保存ができる。
【0080】
次に、差分メモリの削除について、
図12及び
図13を用いて説明する。
図12は、差分メモリの削除方法の設定の一例を示す図である。
図13は、差分メモリの削除の一例を示す図である。
【0081】
差分メモリ34は、OSがクラッシュして停止等したときのみならず、稼働中においてもメモリデータとコンテキスト情報を順次保存していくため、例えば差分用メモリ領域32の記憶容量が大きくなる場合がある。そこで、本実施の形態においては、差分メモリ34を所定の条件にて削除して、障害調査に関連するデータを残しつつ、差分用メモリ領域32の記憶容量の肥大化防止を図る。
【0082】
図12において、差分メモリ34の削除の方法は、設定項目とパラメータによって設定される。例えば、現在時刻より一定時間経過して古くなったメモリデータを削除する設定ができる。システムが安定して稼働している場合には、一定時間以上経過して古くなったメモリデータは、トラブルの原因解析に使用される可能性が低くなるため、クラッシュ前の所定の時間のみの記録を残して、差分メモリダンプの容量を小さくすることができる。
【0083】
また、差分メモリ34を所定数毎に削除して間引く設定ができる。例えば、システムが安定して稼働している場合と、不安定となっている場合において、保存する差分メモリの時間的な粒度を変更することができる。
【0084】
さらに、CPUのコンテキスト情報に特定の命令、または特定のアドレスが含まれる場合に差分メモリ34を残して他を削除する設定をすることができる。トラブルの原因となる可能性の高い命令やデータの取り扱いに対して、監視を強化することができる。
【0085】
なお、
図12で説明した差分メモリ34の削除の設定は、複数の設定項目を同時に設定することができる。設定はメモリ管理プログラム12が提供するUIによって設定をするようにしてもよい。また、テキストファイル
図13において、削除前は差分メモリ1〜5までが存在しているものとする。この中で差分メモリ2(342)及び差分メモリ4(344)を削除する。削除対象である差分メモリ2(342)に含まれるメモリデータ「Z、C」を、差分メモリ2(342)の直前に保存された差分メモリ1(341)に保存する。
【0086】
なお、削除対象の差分メモリがページアウトにより保存されたメモリ領域である場合には、ページ管理テーブル33に記録された差分メモリの差分メモリデータの保存先のアドレスの記載も変更する。
【0087】
次に、削除対象である差分メモリ4(344)に含まれるメモリデータ「U」を、差分メモリ4(344)の直前に保存された差分メモリ3(343)に保存する。一方、差分メモリ4(344)に含まれるメモリデータ「D'」は、差分メモリ3に同一領域のメモリデータ「D」が存在しているため、復元時に使用されることがない「D'」は保存しない。
【0088】
次に、差分メモリ2(342)と差分メモリ4(344)を削除して削除の処理を終了する。
【0089】
次に、以上説明したメモリ管理装置1の動作を、フローチャートにて説明する。
【0090】
先ず、メモリ管理プログラム12の動作を、
図14を用いて説明する。
図14は、メモリ管理動作の一例を示すフローチャートである。
【0091】
図14において、メモリ管理プログラム12の検知部121は、メモリ差分監視の機構として主メモリ領域31の監視を開始する(S11)。なお、ステップS11の動作の詳細は、
図15を用いて後述する。
【0092】
次に、メモリ管理プログラム12は復元ポイントの取得の要求を受けたか否かを判断する(S12)。復元ポイントの取得の要求を受けた場合(S12でYES)、ダンプ復元ポイントの作成を行う(S13)。復元ポイントの取得の要求がない場合(S12でNO)、ステップS12をループする。なお、ステップS13のダンプ復元ポイントの作成の詳細は、
図16を用いて後述する。
【0093】
メモリ管理プログラム12は、メモリ管理装置1が稼働中は常駐するプログラムであり、S12〜S13をループして動作する。
【0094】
次に、
図11で説明したページアウトによるメモリデータの取得動作の詳細を、
図15を用いて説明する。
図15は、メモリデータ取得の動作の一例を示すフローチャートである。
【0095】
図15において、主メモリ領域31が書き込み禁止状態か否かを判断する(S21)。書き込み禁止状態において、検知部121は、主メモリ領域31の書き込み処理をトラップする。書き込み禁止で無い場合(S21でNO)、主メモリ領域31のメモリ変更が実行され(S28)、メモリ変更テーブル34n3が更新されて(S29)、処理を終了する。
【0096】
一方、書き込み禁止であった場合(S21でYES)、ページアウトの発生か否かを判断する(S22)。ページアウトの発生であった場合(S22でYES)、変更前の主メモリ領域31におけるメモリデータが登録済みか否かを判断する(S23)。登録済みであった場合(S23でYES)、
図11で説明したページ管理テーブル33のページアウト領域使用場所情報を更新する。
【0097】
一方、登録済みで無かった場合(S23でNO)、ページ管理テーブル33の保存先のアドレスの情報に新たに差分メモリ領域を追加する更新を行い(S25)、書き込み先のデータ領域のデータを追加した差分メモリ領域に保存して退避させる(S26)。また、ページアウトで無い場合(S22でNO)、同様に書き込み先のデータ領域のデータを差分メモリ領域に保存する(S26)。
【0098】
次に、ページ書き込みの禁止を解除して(S27)、メモリ変更を実行する(S28)。
【0099】
以上の動作により、主メモリ領域31に対する書き込みは、差分メモリとして保存される。
【0100】
次に、
図10で説明したメモリダンプ復元ポイントの作成動作の詳細を、
図16を用いて説明する。
図16は、メモリダンプ復元ポイントの作成動作の一例を示すフローチャートである。
【0101】
図16において、主メモリ領域31のコンテキスト情報が待避済みか否かを判断する(S31)。コンテキスト情報が待避済みの場合(S31でYES)、他のCPUを停止する(S33)。一方、コンテキスト情報が待避済みで無い場合(S31でNO)、コンテキスト情報を差分メモリのコンテキスト情報保存領域に保存して(S32)、他のCPUを停止する(S33)。停止したCPUのコンテキスト情報を主メモリ領域31に保存して(S34)、次に、復元プロセス131が動作するCPU0のコンテキスト情報を主メモリ領域31に保存する(S35)。
【0102】
主メモリ領域31を書き込み禁止にして(S36)、差分用メモリ領域32に新しい差分メモリ領域を用意し(S37)、さらに停止したCPUの動作を再開して(S38)、メモリダンプ復元ポイントの作成動作を終了する。
【0103】
次に、
図9で説明したメモリダンプの復元動作の詳細を、
図17を用いて説明する。
図17は、メモリダンプの復元動作の一例を示すフローチャートである。
【0104】
図17において、仮ダンプファイルとして、完全メモリダンプをコピーする(S41)。
【0105】
次に、ステップS42からS45までの繰り返し動作を、目的の復元ポイントのメモリダンプになるまで行う。先ず、各復元ポイントに対する差分メモリのメモリ変更テーブルの情報を基に、差分メモリのメモリデータで仮ダンプファイルを書き換えて、各復元ポイントにおけるメモリダンプを復元する(S43)。
一方、差分メモリに対応する情報が無い場合には、ページ管理テーブル33に保存されたページアウト領域使用場所情報の情報を基に、メモリデータを読み出して仮ダンプファイルを書き換えてメモリダンプを復元する(S44)。
目的の復元ポイントにおけるメモリダンプまで復元してメモリダンプの復元動作を終了する。
以上説明した本実施の形態の動作によって、CPUがOSクラッシュ等により停止する前であっても、差分メモリデータとそれに対応してコンテキスト情報とを整合性をたもったまま保存するので、エラーで停止したときの完全メモリダンプに加えて、エラーで停止前の過去のCPU2の状態とメモリダンプを復元することができる。これにより、トラブルの原因を解析しやすくなる。
【0106】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0107】
以上の説明に関し、更に以下の項を開示する。
(付記1)
メモリへの書き込みを検知し、
検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する
処理をコンピュータに実行させるメモリ管理プログラム。
(付記2)
前記所定の記憶領域は、前記コンテキスト情報を保存するときに変更され、
前記書き込み前のデータは、変更された前記所定の記憶領域に対応付けられて順次保存される、付記1に記載のメモリ管理プログラム。
(付記3)
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、付記1又は2に記載のメモリ管理プログラム。
(付記4)
前記所定の記憶領域の変更は、予め設定可能な所定のタイミングで行われる、付記1乃至3のいずれか一に記載のメモリ管理プログラム。
(付記5)
保存される前記コンテキスト情報は、複数のプロセッサのコンテキスト情報である、付記1乃至4のいずれか一に記載のメモリ管理プログラム。
(付記6)
メモリへの書き込みを検知する処理と、
検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する処理と
をコンピュータが実行するメモリ管理方法。
(付記7)
前記所定の記憶領域は、前記コンテキスト情報を保存するときに変更され、
前記書き込み前のデータは、変更された前記所定の記憶領域に対応付けられて順次保存される、付記6に記載のメモリ管理方法。
(付記8)
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、付記6又は7に記載のメモリ管理方法。
(付記9)
前記所定の記憶領域の変更は、予め設定可能な所定のタイミングで行われる、付記6乃至8のいずれか一に記載のメモリ管理方法。
(付記10)
保存される前記コンテキスト情報は、複数のプロセッサのコンテキスト情報である、付記6乃至9のいずれか一に記載のメモリ管理方法。
(付記11)
メモリへの書き込みを検知する検知部と、
前記検知部により検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する保存部と
を備えたメモリ管理装置。
(付記12)
前記所定の記憶領域は、前記コンテキスト情報を保存するときに変更され、
前記書き込み前のデータは、変更された前記所定の記憶領域に対応付けられて順次保存される、付記11に記載のメモリ管理装置。
(付記13)
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、付記11又は12に記載のメモリ管理装置。
(付記14)
前記所定の記憶領域の変更は、予め設定可能な所定のタイミングで行われる、付記11乃至13のいずれか一に記載のメモリ管理装置。
(付記15)
保存される前記コンテキスト情報は、複数のプロセッサのコンテキスト情報である、付記11乃至14のいずれか一に記載のメモリ管理装置。