(57)【要約】【課題】  メモリダンプ実行時にＣＲＣ値の計算に要する時間を短縮する。【解決手段】  主記憶装置を所定のサイズの領域に分割し、領域単位毎にＣＲＣ計算を実行する。このとき、通常の１領域全体に対するＣＲＣ値の計算との他に、領域のメモリ変化を検出する検査領域として１６バイトの３箇所だけ選んで簡易的にＣＲＣ値を計算して保持しておく。メモリが変化したかどうかを検査するために、通常ＣＲＣ値の計算の前に、簡易型ＣＲＣ値を計算して、保持している簡易型ＣＲＣ値と比較する。その結果、不一致ならダンプを実行し、一致なら通常型ＣＲＣを計算して、保持している通常型ＣＲＣ値と比較する。その結果、不一致ならダンプを実行し、一致なら実行しない。。【選択図】        図４
2006172237.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置の全メモリエリアが分割された領域毎に、領域全体を対象とした通常型ＣＲＣ（巡回符号）値と領域の一部を対象とした簡易型ＣＲＣ値を格納するための前記二次記憶装置に備えられたＣＲＣテーブルと、
前記二次記憶装置に格納されているファイルを主記憶装置の領域にロードする際に該領域の前記通常型ＣＲＣ値および簡易型ＣＲＣ値を計算し、またメモリダンプ処理時にダンプ対象領域の簡易型ＣＲＣ値を計算して前記ＣＲＣテーブルに格納されている簡易型ＣＲＣ値と比較し、一致する場合にのみダンプ対象領域の通常型ＣＲＣ値を計算して前記ＣＲＣテーブルに格納されている通常型ＣＲＣ値と比較するＣＲＣ計算部と、
前記ロードの処理を実行すると共に前記計算されたＣＲＣ値を前記ＣＲＣテーブルに書き込むＬＭロード部と、
メモリダンプ時にダンプ対象領域対応のＣＲＣ値を前記ＣＲＣテーブルから読み出して前記ＣＲＣ計算部にわたし、ＣＲＣ計算部からＣＲＣ値が不一致であることの信号を受けると、前記二次記憶装置に対してダンプ対象領域のメモリ内容をダンプファイルとして書き出すダンプの処理を実行するダンプ処理部とを計算機に設けたことを特徴とするメモリダンプシステム。
【請求項２】
前記ＣＲＣ計算部は、前記領域の前方，中央および後方の３箇所の部位について前記簡易型ＣＲＣ値を計算することを特徴とする請求項１に記載のメモリダンプシステム。
【請求項３】
前記主記憶装置のメモリクリア状態，前記通常型ＣＲＣ値の比較の結果により一致したためダウンロードが実行されなかった状態および前記ＣＲＣ値の比較の結果により不一致のためダウンロードが実行された状態を区分するフラグを前記領域対応に前記二次記憶装置に格納したことを特徴とする請求項１または請求項２に記載のメモリダンプシステム。
【請求項４】
主記憶装置の全メモリエリアが分割された領域毎に、領域全体を対象とした通常型ＣＲＣ（巡回符号）値と領域の一部を対象とした簡易型ＣＲＣ値を格納するためのＣＲＣテーブルを前記二次記憶装置に備えたメモリダンプシステムにおけるダンププログラムであって、
前記二次記憶装置に格納されているファイルを主記憶装置の領域にロードする際に該領域の前記通常型ＣＲＣ値および簡易型ＣＲＣ値を計算する手順と、
前記ロードの処理を実行すると共に前記計算されたＣＲＣ値を前記ＣＲＣテーブルに書き込む手順と、
メモリダンプ時にダンプ対象領域対応のＣＲＣ値を前記ＣＲＣテーブルから読み出す手順と、
メモリダンプ処理時にダンプ対象領域の簡易型ＣＲＣ値を計算して前記ＣＲＣテーブルに格納されている簡易型ＣＲＣ値と比較する手順と、
前記比較の結果、一致する場合にのみダンプ対象領域の通常型ＣＲＣ値を計算して前記ＣＲＣテーブルに格納されている通常型ＣＲＣ値と比較する手順と、
前記比較の結果、ＣＲＣ値が不一致であるときに、前記二次記憶装置に対してダンプ対象領域のメモリ内容をダンプファイルとして書き出すダンプの処理を実行する手順とを有することを特徴とするダンププログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムのメモリダンプに関し、特にメモリダンプ収集に要する時間を短縮するシステムおよび方法に関する。
【背景技術】
【０００２】
一般的に、コンピュータシステムにおいて障害が発生してシステムが停止した場合、その原因を調査する上で有効となるメモリイメージの保存は、事前に選択されているメモリ領域を事前に選択されている二次記憶装置ないしは外部記憶装置に対して保存することにより実現している。
【０００３】
従来のこの種のメモリダンプ方式は、オペレーティングシステムが仮想記憶をサポートする場合において、全メモリをダンプする際に、二次記憶装置にページアウトされていない主記憶装置上のページのみを二次記憶装置に強制的にページアウトすることにより二次記憶装置に書き込む時間を短縮するようにしている（例えば、特許文献１参照）。
【０００４】
また、ハイバネーション（休止）時にメモリ内容をハードディスク装置に書き込む際、ブロック単位にＣＲＣ（Cyclic Redundancy Code：巡回冗長符号）値を求め、これを予め格納しておいた値と比較し、ＣＲＣ値に変化のあるブロックについてのみ書き込みを行うようにしている（例えば、特許文献２参照）。
【０００５】
このような２つの従来技術を組み合わせることにより、仮想記憶をサポートしない場合でも、ＣＲＣ値を利用し二次記憶装置に書き込む時間を短縮する方式を想到することは容易であろう。
【０００６】
【特許文献１】特許第２６８５５３２号（第３頁、図１）
【特許文献２】特開２０００-０８２０１４（第３頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したいずれの技術においても、メモリダンプ時に前回からのメモリ内容の変化を正確に判定するためには、メモリの全領域についてＣＲＣの計算をしなけれならないので、ＣＲＣ値の計算コストが増加するという問題点がある。
【０００８】
そこで、本発明の目的は、メモリダンプ実行時において前回からのメモリ内容の変化をＣＲＣの計算結果により判定する場合に、ＣＲＣ値の計算に要する時間を短縮できるメモリダンプ収集システムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明のメモリダンプシステムは、主記憶装置（図１の１２）の全メモリエリアが分割された領域毎に、領域全体を対象とした通常型ＣＲＣ（巡回符号）値と領域の一部を対象とした簡易型ＣＲＣ値を格納するための二次記憶装置（図１の２０）に備えられたＣＲＣテーブル（図１の２１）と、二次記憶装置に格納されているファイルを主記憶装置の領域にロードする際に該領域の通常型ＣＲＣ値および簡易型ＣＲＣ値を計算し、またメモリダンプ処理時にダンプ対象領域の簡易型ＣＲＣ値を計算してＣＲＣテーブルに格納されている簡易型ＣＲＣ値と比較し、一致する場合にのみダンプ対象領域の通常型ＣＲＣ値を計算してＣＲＣテーブルに格納されている通常型ＣＲＣ値と比較するＣＲＣ計算部（図１の１３）と、ロードの処理を実行すると共に計算されたＣＲＣ値をＣＲＣテーブルに書き込むＬＭロード部（図１の１５）と、メモリダンプ時にダンプ対象領域対応のＣＲＣ値をＣＲＣテーブルから読み出してＣＲＣ計算部にわたし、ＣＲＣ計算部からＣＲＣ値が不一致であることの信号を受けると、二次記憶装置に対してダンプ対象領域のメモリ内容をダンプファイルとして書き出すダンプの処理を実行するダンプ処理部（図１の１４）とを計算機に設けたことを特徴とする。
【００１０】
本発明のダンププログラムは、主記憶装置の全メモリエリアが分割された領域毎に、領域全体を対象とした通常型ＣＲＣ（巡回符号）値と領域の一部を対象とした簡易型ＣＲＣ値を格納するためのＣＲＣテーブルを前記二次記憶装置に備えたメモリダンプシステムにおけるダンププログラムであって、二次記憶装置に格納されているファイルを主記憶装置の領域にロードする際に該領域の通常型ＣＲＣ値および簡易型ＣＲＣ値を計算する手順と、ロードの処理を実行すると共に計算されたＣＲＣ値をＣＲＣテーブルに書き込む手順と、メモリダンプ時にダンプ対象領域対応のＣＲＣ値をＣＲＣテーブルから読み出す手順と、メモリダンプ処理時にダンプ対象領域の簡易型ＣＲＣ値を計算してＣＲＣテーブルに格納されている簡易型ＣＲＣ値と比較する手順と、比較の結果、一致する場合にのみダンプ対象領域の通常型ＣＲＣ値を計算してＣＲＣテーブルに格納されている通常型ＣＲＣ値と比較する手順と、比較の結果、ＣＲＣ値が不一致であるときに、二次記憶装置に対してダンプ対象領域のメモリ内容をダンプファイルとして書き出すダンプの処理を実行する手順とを有することを特徴とする。
【発明の効果】
【００１１】
本発明は、二次記憶装置からＬＭファイルを主記憶装置にロードするときに領域一部の簡易型ＣＲＣ値および領域全体の通常型ＣＲＣ値を計算してＣＲＣテーブルに格納しておき、メモリダンプ時には、先ずダンプ対象領域の簡易型ＣＲＣ値を計算して、ＣＲＣテーブルに格納している対応する簡易型ＣＲＣ値と比較し、不一致の場合にはその領域の記憶内容は以前と異なっているとしてメモリダンプを実行し、一致するときは通常型ＣＲＣ値を計算して比較する構成としたので、通常型ＣＲＣ値を計算する回数が減り、ＣＲＣ値の計算に要する時間を短縮できるという効果が得られる。
【発明を実施するための最良の形態】
【００１２】
本発明のメモリダンプシステムは、ＣＲＣ計算対象となるメモリエリアの全領域のＣＲＣ計算結果とは別に、メモリエリアの数箇所から抽出した数十バイトのメモリ内容をＣＲＣ計算して得られた簡易的なＣＲＣ計算結果を保持する手段を有する。
【００１３】
メモリダンプ実行時には、メモリエリアの内容の変化を検出するために、メモリエリアの全領域をＣＲＣ計算した結果同士を比較する前に、簡易的なＣＲＣ計算を事前に実行し、メモリエリアの内容が以前と異なるかどうかをチェックする。
【実施例１】
【００１４】
図１は本発明のメモリダンプ収集システムの一実施例を示すブロック図である。本メモリダンプ収集システムは、計算機１０の障害発生時に主記憶装置１２におけるメモリ内容を二次記憶装置２０に保存することによりメモリダンプを行う。
【００１５】
主記憶装置１２には、主記憶装置１２の指定領域のＣＲＣ値を計算するＣＲＣ計算部１３と、メモリダンプ処理を実行するダンプ処理部１４と、二次記憶装置２０内のＬＭ（Load Memory）ファイル２２の主記憶装置１２へのロード処理を実行するＬＭロード部１５とのプログラムがロードされている。これらのプログラムはＣＰＵ１１が実行する。
【００１６】
ＬＭロード部１５は、二次記憶装置２０からＬＭファイル２２を主記憶装置１２に対してロードするための処理と共に、その際に二次記憶装置２０に設けているＬＭロード履歴テーブル２４のファイルに対してロードしたＬＭの履歴を記録する。図２はＬＭロード履歴テーブル２４の構成を示す。図２において、ロード先アドレスは主記憶装置１２のアドレス、ロードファイルパス名はロード元の二次記憶装置２０のアドレスである。
【００１７】
ＣＲＣ計算部１３は、ＬＭファイル２２のロードの際にＣＲＣ値を計算する。この計算では、主記憶装置１２の各領域について、領域全体を対象とした通常型ＣＲＣ値と、各領域について領域の前方，中央おうおび後方の３箇所の部位について、それぞれ例えば１６バイト計４８バイトを対象とした簡易型ＣＲＣ値を算出する。簡易型ＣＲＣ値は、計算するデータ量が少ないため通常型ＣＲＣ値に比べて高速に計算することができる。
【００１８】
なお、簡易型ＣＲＣ計算において計算を行う領域の部位および部位のバイト数は、上記に挙げた領域の前方，中央および後方の３箇所の部位および１６バイトである必要は必ずしもなく、最小限の計算量で領域の変化を検出可能な位置に計算領域を任意に配置することができる。計算されたＣＲＣ値は、ＬＭロード部１５によって二次記憶装置２０内のＣＲＣテーブル２１に格納される。
【００１９】
図３は、所定のサイズ単位で分割した主記憶装置１２の各領域と、これに対応して計算された簡易型ＣＲＣ値および通常型ＣＲＣ値の関係を示している。図４は、主記憶装置１２の１つの領域に対する簡易型ＣＲＣ値と通常型ＣＲＣ値の関係を示す。
【００２０】
ＣＲＣ計算部１３は、ダンプ処理部１４によるメモリダンプ処理時にも、ダンプ対象領域のＣＲＣ値を計算する。これは、計算したＣＲＣ値と、ＣＲＣテーブル２１に格納されているその領域対応のＣＲＣ値を比較して、その領域の記憶内容が以前と異なっていないかを調べ、メモリダンプの要否を判断するためである。
【００２１】
この場合のＣＲＣ値の計算手順に本発明の特徴があり、先ず簡易型ＣＲＣ値を計算して比較し、異なっているときは通常型ＣＲＣ値を計算することはなく、一致する場合にのみ通常型ＣＲＣ値を計算する。これにより、通常型ＣＲＣ値の計算回数を低減し、主記憶装置１２全体のＣＲＣ値の計算に要する時間を短縮するのである。
【００２２】
ダンプ処理部１４は、メモリダンプ時にダンプ対象領域のＣＲＣ値をＣＲＣテーブル２１から抽出してＣＲＣ計算部１３にわたす。そして、ＣＲＣ計算部１３からＣＲＣ値が不一致であることの信号を受けると、二次記憶装置２０に対して主記憶装置１２のメモリ内容をダンプファイル２３として書き出す。このとき、ダンプ処理部１４は、図５に示すメモリダンプ情報を二次記憶装置２０のメモリダンプ情報ファイル２５に書き込む。
【００２３】
図５において、領域毎に、ダンプフラグ値，簡易型ＣＲＣ値および通常型ＣＲＣ値が登録されている。ダンプフラグ値とは、図６に示すように、二次記憶装置２０にダンプファイル２３があるか否かの別と、無い場合には、それがメモリクリア状態であるためであるのかと、ロードされたＬＭと一致するためであるのかの別を示している。
［動作の説明］
図７は、計算機１０の初期起動時の手順を示すフローチャートである。先ず、ＣＰＵ初期化（図７のステップＡ１）と全メモリ初期化（ステップＡ２）後に、主記憶装置１２の全領域のＣＲＣ値をＣＲＣテーブル２１に設定する（ステップＡ３）。ここでは、全メモリ初期化時にメモリ内容は全て０クリアされているため、毎回同じＣＲＣ値になるので、事前に計算されているＣＲＣ値を設定する。この状態では、メモリダンプ情報ファイル（図６）２５のダンプフラグは、「ダンプファイルない（メモリクリア状態と一致）」を表す「０」とされる。
【００２４】
これにより計算機１０のシステム初期起動時におけるＣＲＣテーブル２１の初期化処理が完了する。この後、ＩＰＬ（Initial Program Load）実行（ステップＡ４）とカーネル起動（ステップＡ５）を経て初期起動処理を完了する。
【００２５】
図８のはＬＭロード処理の手順を示すフローチャートである。ＬＭロード部１５はロード先アドレスを取得して（図８のステップＢ１）ロード処理を実行する（ステップＢ２）。このとき、ＣＲＣ計算部１３はＬＭファイル２２を主記憶装置１２上にロードするタイミングで、ＬＭファイル２２のＣＲＣ値を再計算し（ステップＢ３）、計算された簡易型ＣＲＣ値および通常型ＣＲＣ値でＣＲＣテーブル２１を更新する（ステップＢ４）。最後に、ロードしたＬＭファイル２２について、そのロード先アドレス，ロードサイズおよびロードファイルパス名をＬＭロード履歴テーブル（図２）２４に保存する（ステップＢ５）。
【００２６】
図９は、計算機１０において障害が発生した後で、主記憶装置１２のダンプ処理を実行する際の流れを示したものである。ダンプ処理部１４は、主記憶装置１２の全領域を予め定められたサイズで分割された領域単位に、そのアドレスをダンプ対象アドレスとして計算する（図９のステップＣ１）。そして、そのダンプ対象領域対応の簡易型ＣＲＣ値をＣＲＣテーブル２１から取得して（ステップＣ２）、ＣＲＣ計算部１３にわたす。
【００２７】
ＣＲＣ計算部１３は、ダンプ対象領域の現在の簡易型ＣＲＣ値を計算し（ステップＣ３）、ＣＲＣテーブル２１から取得した簡易型ＣＲＣ値と比較する（ステップＣ４）。その結果、両者が一致した場合には（ステップＣ５でＹＥＳ）、ダンプせずにスキップして図１１で示すフローに移行する（ステップＣ６）。
【００２８】
一方、一致しなかった場合には（ステップＣ５でＮＯ）、ダンプ処理部１４は該当する領域のメモリ内容をダンプファイル２３にダンプする（ステップＣ７）。この時点で、ダンプ対象領域の記憶内容が以前と異なっている判断するのである。また、メモリダンプ情報ファイル（図６）２５のダンプフラグを「ダンプファイルあり（ダンプファイルあり））」を表す「２」とする（ステップＣ８）。以上の手順を全メモリ領域が終了するまで繰り返す（ステップＣ９）。
【００２９】
図１０に示すフローでは、ダンプ処理部１４は、ステップＣ１でアドレスを求めたダンプ対象領域対応の通常型ＣＲＣ値をＣＲＣテーブル２１から取得して（図１０のステップＤ１）、ＣＲＣ計算部１３にわたす。
【００３０】
ＣＲＣ計算部１３は、ダンプ対象領域の現在の通常型ＣＲＣ値を計算し（ステップＤ２）、ＣＲＣテーブル２１から取得した通常型ＣＲＣ値と比較する（ステップＤ３）。その結果、両者が一致した場合には（ステップＤ４でＹＥＳ）、ダンプせずにスキップし、メモリダンプ情報ファイル（図６）２５のダンプフラグを「ダンプファイルなし（ロードされたＬＭと一致）」を表す「１」とする（ステップＤ５）。
【００３１】
一方、一致しなかった場合には（ステップＤ５でＮＯ）、ダンプ処理部１４は該当する領域のメモリ内容をダンプファイル２３にダンプするための処理を実行する（ステップＤ６）。また、メモリダンプ情報ファイル（図６）２５のダンプフラグを「ダンプファイルあり（ダンプファイルあり）」を表す「２」とする（ステップＤ７）。
【００３２】
このようにして得られたダンプファイル２３，メモリダンプ情報ファイル２５およびＬＭロード履歴テーブル２４と、ＬＭファイル２２を使用することにより、主記憶装置１２の全領域をダンプする場合と同様に障害発生時のメモリの内容を解析することが可能となる。
【００３３】
図１１は、本発明を適用した際の一例としてＣＲＣ計算必要回数の計算値を表示する。適用例として、主記憶装置１２の全メモリ容量が２５６ＭＢで、ＣＲＣ値を計算する単位である領域サイズが１ＭＢである場合を想定している。
【００３４】
本発明を未適用時のＣＲＣ計算を行うバイト数と、本発明を適用した際に簡易ＣＲＣ値の比較でメモリ変化を検出できず、通常型ＣＲＣ値を算出せざるを得なかった場合のＣＲＣ計算バイト数を比較すると0.005%の計算量増加となっている。それに対して、簡易ＣＲＣ値の比較でメモリ変化をある領域で１件だけ発見した際の計算量を比較すると、0.4%の計算量減少となっている。
【００３５】
このように、簡易ＣＲＣ値の比較でメモリ変化の発見数が０件であったとしても本発明を未適用時と比べて計算量はそれほど増えておらず、実際上は無視できる計算量の増加になっている。それに対して１件以上、簡易ＣＲＣ値の比較でメモリ変化を発見した場合には、確実に計算量を減少することができており、本発明を適用した際の効果が上がっている。図１１の例では、１領域のサイズが１ＭＢの場合を示したが、１領域のサイズをもっと大きくすれば、それに比例して本発明適用による計算量の減少の効果を上げることができる。
【図面の簡単な説明】
【００３６】
【図１】本発明のメモリダンプ収集システムの一実施例を示すブロック図
【図２】図１におけるＬＭロード履歴テーブル２４の構成を示す構成を示す図
【図３】主記憶装置の各領域と簡易型ＣＲＣ値および通常型ＣＲＣ値の関係を示す図
【図４】主記憶装置の１領域に対する簡易型ＣＲＣ値と通常型ＣＲＣ値の関係を示す図
【図５】メモリダンプ情報ファイル２５の構成を示ス図
【図６】メモリダンプ情報ファイルにおけるダンプフラグの値とその意味を表示した図
【図７】計算機の初期起動時の手順を示すフローチャート
【図８】ＬＭロード処理の流れを示すフローチャート
【図９】メモリダンプ処理全体の流れを示すフローチャート
【図１０】メモリダンプ処理の細部の流れを示すフローチャート
【図１１】本発明を適用した場合におけるＣＲＣ値計算の必要回数を表示した図
【符号の説明】
【００３７】
１０      計算機
１１      ＣＰＵ
１２      主記憶装置
１３      ＣＲＣ計算部
１４      ダンプ処理部
１５      ＬＭロード部
２０      二次記憶装置
２１      ＣＲＣテーブル
２２      ＬＭテーブル
２３      ダンプファイル
２４      ＬＭロード履歴テーブル
２５      メモリダンプ情報ファイル
【図１】
2006172237.tif 000003
【図２】
2006172237.tif 000004
【図３】
2006172237.tif 000005
【図４】
2006172237.tif 000006
【図５】
2006172237.tif 000007
【図６】
2006172237.tif 000008
【図７】
2006172237.tif 000009
【図８】
2006172237.tif 000010
【図９】
2006172237.tif 000011
【図１０】
2006172237.tif 000012
【図１１】
2006172237.tif 000013