(57)【要約】【課題】通常時におけるコンピュータの負荷の増大等を抑えつつ、障害発生時におけるダンプをより短時間で行えるようにするための技術を提供する。【解決手段】メモリ上にコピーされたページ、或いは更新されたページは、状態Ａ０に遷移される。状態Ａ０のページは、更新されなければ、運用中のダンプを行うダンプデーモンが起動される度に、状態Ａ０→状態Ｂ１→状態Ｂ２→状態Ｂｍａｘ→状態Ｃ、と遷移し、ダンプされる。途中でカーネルによる更新が行われたページは、その更新により、最終的に状態Ａ０に遷移する。状態Ｃのページも、更新により状態Ａ０に遷移する。この結果、運用中は、状態Ｃに遷移するページのみがダンプされる。障害発生時は、状態Ｃを除く全ての状態のページがダンプの対象となる。【選択図】図８
2015035007.tif 000002
【特許請求の範囲】
【請求項１】
メモリ装置と、
前記メモリ装置に格納されているデータを出力するダンプを行う出力部と、
前記メモリ装置に格納されているデータの管理単位毎に、前記管理単位の所定期間内の更新状況を監視する監視部と、
前記監視部による前記更新状況の監視結果を基に、前記メモリ装置上の管理単位のなかで前記出力部に前記ダンプを行わせる管理単位である対象管理単位を選択する制御部と、
を有することを特徴とするコンピュータ。
【請求項２】
前記制御部は、前記更新状況の監視結果を基に、更新されてから一定期間が経過した管理単位を特定し、該特定した管理単位を前記対象管理単位として選択する、
ことを特徴とする請求項１記載のコンピュータ。
【請求項３】
前記制御部は、障害が発生した場合、前記メモリ装置上の前記管理単位のなかで、前記対象管理単位として選択された後、更新されていない管理単位を除く管理単位を対象に、前記出力部に前記ダンプを行わせる、
ことを特徴とする請求項１、または２記載のコンピュータ。
【請求項４】
メモリ装置にアクセス可能なコンピュータに、
前記メモリ装置に格納されているデータの管理単位毎に、前記管理単位の所定期間内の更新状況を監視し、
前記更新状況の監視結果を基に、前記メモリ装置上の管理単位のなかでデータを出力するダンプの対象とする管理単位である対象管理単位を選択し、
選択した前記対象管理単位をダンプする、
処理を実行させる制御プログラム。
【請求項５】
メモリ装置にアクセス可能なコンピュータに、
前記メモリ装置に格納されているデータの管理単位毎に、前記管理単位の所定期間内の更新状況を監視させ、
前記更新状況の監視結果を基に、前記メモリ装置上の管理単位のなかでデータを出力するダンプの対象とする管理単位である対象管理単位を選択させ、
選択させた前記対象管理単位をダンプさせる、
ことを特徴とするダンプ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置上のデータを出力するダンプを行う技術に関する。
【背景技術】
【０００２】
コンピュータでは、演算処理装置であるＣＰＵ（Central Processing Unit）が必要とするデータは主記憶装置（メモリ装置）上に格納される。主記憶装置上に格納されているデータには、ＣＰＵが実行している処理の内容が反映されている。そのため、障害が発生した場合、主記憶装置上に格納されているデータは、発生した障害の原因追及等に有用な情報となる。このことから、コンピュータの一部は、障害が発生した場合、主記憶装置上のデータを出力するダンプを行うようになっている。特にサーバ等のような高信頼性が要求されるコンピュータの多くは、ダンプを行うようになっている。
【０００３】
ダンプを行うコンピュータでは、障害の発生による再起動は、ダンプが終了してから行われる。現在、コンピュータに搭載される主記憶装置の容量は非常に大きくなっている。その容量は、数年前に比べて１０倍以上となっている。そのような主記憶装置の大容量化に伴い、ダンプに必要な時間も非常に長くなっている。このため、障害が発生したコンピュータの再起動をより速く行うには、ダンプをより短時間に終了することが求められる。
【０００４】
メモリダンプをより短時間に終了可能な従来のコンピュータとしては、主記憶装置を一定領域（ブロック）毎に監視して、更新されたブロックのみを対象にしたダンプを直ちに行うものがある。この従来のコンピュータは、障害の発生時、最後にダンプしてから更新されたブロックのみを対象にダンプを行う。そのようにして障害の発生時にダンプの対象とするブロックを制限することから、主記憶装置上のデータを全てダンプする場合と比較して、ダンプはより短時間に終了させることができる。
【０００５】
この従来のコンピュータでは、更新を契機に、更新されたブロックのダンプが行われる。主記憶装置上には多数のブロックが存在し、単位時間当たりに更新されるブロックの数は少なくないのが普通である。そのため、この従来のコンピュータでは、ブロック単位のダンプのためのＩ／Ｏ（Input/Output）処理、つまり主記憶装置上のブロックを出力先のストレージに書き込む処理が高い頻度で発生する。
【０００６】
このダンプ用のＩ／Ｏ処理は、コンピュータが本来、行うべき処理ではない。高い頻度で発生するダンプ用のＩ／Ｏ処理は、コンピュータの負荷を増大させ、ＣＰＵの処理速度、並びに主記憶装置、及びデータの出力先とするストレージの各アクセス速度を実質的に低下させる。そのため、負荷の増大は、本来、行うべき処理の実行に要する時間をより長くさせる。このことから、障害発生時のダンプに要する時間の短縮化には、障害等が発生していない通常時（運用中）における負荷の増大を抑えることも求められる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平２−８５９３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
一側面では、本発明は、通常時におけるコンピュータの負荷の増大を抑えたダンプを実現する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明を適用した１システムは、メモリ装置と、メモリ装置に格納されているデータを出力するダンプを行う出力部と、メモリ装置に格納されているデータの管理単位毎に、管理単位の所定期間内の更新状況を監視する監視部と、監視部による更新状況の監視結果を基に、メモリ装置上の管理単位のなかで出力部にダンプを行わせる管理単位である対象管理単位を選択する制御部と、を有する。
【発明の効果】
【００１０】
本発明を適用した場合には、通常時（運用中）におけるコンピュータの負荷の増大を抑えたダンプを実現できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態によるコンピュータの構成例を説明する図である。
【図２】第１の実施形態によるページ単位のダンプ方法を説明する図である。
【図３】メモリ管理テーブルの構成例を表す図である。
【図４】メモリ書き込み処理のフローチャートである。
【図５】運用中のダンプ処理のフローチャートである。
【図６】障害発生時のダンプ処理のフローチャートである。
【図７】メモリ管理テーブルの構成例を表す図である（第２の実施形態）。
【図８】ページの状態遷移例を説明する図である。
【図９】第２の実施形態における運用中のダンプ処理のフローチャートである。
【図１０】第２の実施形態における障害発生時のダンプ処理のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
（第１の実施形態）
図１は、第１の実施形態によるコンピュータの構成例を説明する図である。
【００１３】
図１に表すように、第１の実施形態によるコンピュータ１は、ＣＰＵ１１、ＲＯＭ（Read Only Memory）１２、メモリ（メモリモジュール）１３、Ｉ／Ｏユニット１４、ディスク装置１５、及びバス１６を備えている。コンピュータ１の構成は、この図１に表す構成例に限定されない。
【００１４】
バス１６は、ＣＰＵ１１、ＲＯＭ１２、メモリ１３、及びＩ／Ｏユニット１４を相互接続する。ＣＰＵ１１は、バス１６を介して、ＲＯＭ１２、及びメモリ１３へのアクセスを行い、Ｉ／Ｏユニット１４の制御を行う。
【００１５】
ＣＰＵ１１は、主記憶装置であるメモリ１３をワークに用いて処理を行う。障害（異常、等）が発生した場合、ＣＰＵ１１は、メモリ１３に格納されている全データを出力するダンプを行う。
【００１６】
ＲＯＭ１２には、ファームウェアとして、ＢＩＯＳ（Basic Input/Output System）が格納されている。ＣＰＵ１１は、電源の投入により、ＲＯＭ１２からＢＩＯＳをメモリ１３に読み出し、読み出したＢＩＯＳを実行する。
【００１７】
Ｉ／Ｏユニット１４は、ストレージの接続、及びネットワークを介した通信、等のためのインタフェースである。Ｉ／Ｏユニット１４は、接続されたディスク装置１５に対し、ＣＰＵ１１の指示に従って生成するコマンドを出力する。それにより、ＣＰＵ１１は、バス１６、及びＩ／Ｏユニット１４を介して、ディスク装置１５へのアクセスを行う。
【００１８】
ディスク装置１５は、例えば磁気ディスクを記録媒体とするストレージであり、ブートローダ１５ａ、及びＯＳ（Operating System）１５ｂを含む各種プログラム、及び各種データが格納されている。このディスク装置１５は、ダンプを行う際のメモリ１３のデータの出力先であり、メモリ１３のデータの格納用にダンプ領域１５ｃが確保されている。ダンプによるデータの出力先は、ネットワークを介してアクセス可能なストレージであっても良い。
【００１９】
ＢＩＯＳの実行を開始したＣＰＵ１１は、バス１６、及びＩ／Ｏユニット１４を介して、ディスク装置１５に格納されているブートローダ１５ａを読み出して実行する。ブートローダ１５ａは、ディスク装置１５からＯＳ１５ｂを読み出させる。ＯＳ１５ｂは、ディスク装置１５から読み出されることで起動する。
【００２０】
図１に構成例を表すコンピュータ１は、例えばネットワークを介して接続された端末装置のユーザにサービスを提供するサーバとして用いられる。サーバとして用いられる場合、ＯＳ１５ｂは、ディスク装置１５からサービス提供用のアプリケーション・プログラム（以降「アプリケーション」と略記）を読み出して起動する。
【００２１】
ＯＳ１５ｂは、仮想記憶をサポートしている。ＯＳ１５ｂを実行するＣＰＵ１１は、ディスク装置１５上に格納されているデータを管理単位で分け、管理単位毎にメモリ１３に書き込む。本実施形態では、このことに着目し、管理単位毎に、必要に応じてダンプを行うようにしている。
【００２２】
ここでは、その管理単位として「ページ」を想定する。管理単位は、セグメントであっても良い。仮想記録とは異なる管理単位を設定しても良い。メモリ１３上に設定する領域であっても良い。管理単位は複種類、混在していても良い。このようなことから、管理単位は特に限定されない。
【００２３】
図２は、第１の実施形態によるページ単位のダンプ方法を説明する図である。次に図２を参照し、ページ単位で行うダンプ方法について具体的に説明する。
【００２４】
図２中に表記の「０」〜「９」の数値は、ページに識別情報として割り当てられたページ番号を表している。３１はメモリ１３に格納されたページである。異常等による障害発生時において、ページ３１の状態は３種類に分類される。３１ａ〜３１ｃは、ページ３１の状態の明確化のために用いている。
【００２５】
第１の実施形態では、運用中（通常時）、メモリ１３上のページ３１は、更新を条件に、そのデータをダンプするようにしている。このため、障害の発生時、メモリ１３上のページ３１は、最後のダンプ後に更新されていない状態（以降「ダンプ済み状態」と表記）、ダンプが全く行われていない状態（以降「未ダンプ状態」と表記）、及び最後のダンプ後に更新された状態（以降「再更新状態」と表記）のうちの何れかとなる。３１ａは、ダンプ済み状態のページ３１、３１ｂは、未ダンプ状態のページ３１、３１ｃは、再更新状態のページ３１である。
【００２６】
障害発生時、ダンプ済み状態のページ３１ａは、そのデータが既に保存されていることから、ダンプの対象外とされる。ダンプの対象は、未ダンプ状態のページ３１ｂ、及び再更新状態のページ３１ｃに制限される。第１の実施形態では、障害発生時、ダンプの対象を未ダンプ状態のページ３１ｂ、及び再更新状態のページ３１ｃに制限する。そのため、障害発生時におけるメモリ１３のダンプは、全データをダンプする場合と比較して、より短時間に完了させることができる。
【００２７】
ＣＰＵ１１は、メモリ１３に保存しているメモリ管理テーブル１３ａを用いて、メモリ１３上のページ３１を管理する。そのメモリ管理テーブル１３ａの各エントリ（レコード）には、図３に表すように、ページ番号、ＯＳ用アクセス設定データ、及びダンプ用アクセス設定データが格納される。
【００２８】
ＯＳ用アクセス設定データは、同じエントリに格納されているページ番号が割り当てられたページ３１に許可されているアクセス内容を表すデータである。図３中にＯＳ用アクセス設定データとして表記の「Ｒｅａｄ  Ｏｎｌｙ」（以降「ＲＯ」と表記）は読み出しのみが許可されていることを表している。「Ｒｅａｄ／Ｗｒｉｔｅ」は読み出し、及び書き込み（更新）の両方が許可されていることを表している。
【００２９】
ダンプ用アクセス設定データは、同じエントリに格納されているページ番号が割り当てられたページ３１が更新されたか否かを表すデータである。図３中にダンプ用アクセス設定データとして表記の「Ｒｅａｄ  Ｏｎｌｙ」（以降「ＲＯ」と表記）は更新されていないことを表している。「Ｒｅａｄ／Ｗｒｉｔｅ」（以降「ＲＷ」と表記）は更新されたことを表している。
【００３０】
ＣＰＵ１１は、メモリ１３上のページ３１を更新する場合、メモリ管理テーブル１３ａを参照して、更新するページ３１のＯＳ用アクセス設定データがＲＷか否かを確認する。そのＯＳ用アクセス設定データがＲＯであった場合、ＣＰＵ１１は、そのＯＳ用アクセス設定データをＲＷに変更した後、ページ３１を更新する。更新するページ３１のダンプ用アクセス設定データは、ＲＷでなければＲＯに変更される。それにより、第１の実施形態では、運用中、及び障害発生時、ダンプ用アクセス設定データがＲＷとなっているページ３１をダンプする。
【００３１】
第１の実施形態では、ダンプ用アクセス設定データの初期値はＲＷとしている。それにより、第１の実施形態では、メモリ１３上に新たにコピーされたページ３１は直ちにダンプさせるようにしている。これは、メモリ１３上にコピーされた後、更新されなかったことで障害発生時にダンプの対象となるページ３１の数をより抑えるためである。そのため、第１の実施形態では、障害発生時、ダンプの対象となるページ３１の殆どは再更新状態のページ３１ｃである。未ダンプ状態のページ３１ｂは、メモリ１３上にコピーした後、ダンプする前に障害が発生したページ３１である。
【００３２】
ＣＰＵ１１は、ＯＳ１５ｂにより、メモリ１３上にメモリ管理テーブル１３ａを作成する。メモリ１３に読み出されるディスク装置１５上のデータは、ページ３１単位に分割され、各ページ３１にはページ番号が割り当てられる。
【００３３】
メモリ管理テーブル１３ａには、全てのページ３１を登録可能なエントリが確保され、各ページ３１はメモリ管理テーブル１３ａの異なるエントリに登録される。各エントリには、対応するページ３１のページ番号、初期設定データとして定められたＯＳ用アクセス設定データ、及び初期設定データとして定められたダンプ用アクセス設定データが格納される。このようなメモリ管理テーブル１３ａの作成、及び作成後のメモリ管理テーブル１３ａの更新は、例えばＯＳ１５ｂの中核部分であるカーネルの制御によって行われる。
【００３４】
以降は、図４〜図６に表す各処理のフローチャートを参照し、ダンプに係わるＣＰＵ１１の動作について詳細に説明する。
【００３５】
図４は、メモリ書き込み処理のフローチャートである。このメモリ書き込み処理は、メモリ１３上のページ３１を更新する書き込みを行う場合に、ＣＰＵ１１が実行する一連の処理を抜粋して表した処理であり、例えばＯＳ１５ｂへのアプリケーション・プログラムからの要求によって開始される。このメモリ書き込み処理自体は、ＯＳ１５ｂのカーネルをＣＰＵ１１が実行することで実現される。始めに図４を参照して、メモリ書き込み処理について詳細に説明する。
【００３６】
先ず、ＣＰＵ１１は、アプリケーション・プログラムから書き込みが要求されたページ（以降「要求ページ」と表記）３１をロックし、その要求ページ３１への他のアクセスを禁止する（Ｓ１）。次にＣＰＵ１１は、メモリ管理テーブル１３ａを参照して、要求ページ３１のＯＳ用アクセス設定データを確認し（Ｓ２）、そのＯＳ用アクセス設定データがＲＷか否か判定する（Ｓ３）。そのＯＳ用アクセス設定データがＲＷであった場合、Ｓ３の判定はＹｅｓとなってＳ５に移行する。そのＯＳ用アクセス設定データがＲＯであった場合、Ｓ３の判定はＮｏとなってＳ４に移行する。
【００３７】
Ｓ４では、ＣＰＵ１１は、要求ページ３１のロックを解除、つまりその要求ページ３１をアンロックする。その後、要求ページ３１を更新することなく、このメモリ書き込み処理が終了する。要求ページ３１を更新しないことから、このときはエラー終了となる。
【００３８】
Ｓ５では、ＣＰＵ１１は、メモリ管理テーブル１３ａを参照して、要求ページ３１のダンプ用アクセス設定データを確認する。次にＣＰＵ１１は、、そのダンプ用アクセス設定データがＲＷか否か判定する（Ｓ６）。そのダンプ用アクセス設定データがＲＷであった場合、Ｓ６の判定はＹｅｓとなってＳ８に移行する。そのダンプ用アクセス設定データがＲＯであった場合、Ｓ６の判定はＮｏとなってＳ７に移行する。
【００３９】
Ｓ８では、ＣＰＵ１１は、メモリ１３上の要求ページ３１に、アプリケーション・プログラムから要求されたデータを書き込む。このデータの書き込みにより要求ページ３１を更新したＣＰＵ１１は、その要求ページ３１をアンロックする（Ｓ９）。要求ページ３１をアンロックし、その要求ページ３１への他のアクセスを可能にした後、このメモリ書き込み処理が終了する。このときは、更新ページ３１を更新することから、正常終了となる。
【００４０】
上記Ｓ６の判定がＮｏとなって移行するＳ７では、ＣＰＵ１１は、要求ページ３１のダンプ用アクセス設定データをＲＯからＲＷに変更して、メモリ管理テーブル１３ａを更新する。その後、ＣＰＵ１１は、上記Ｓ８に移行し、要求ページ３１の更新を行う。
【００４１】
このようにして、メモリ１３上のページ３１のダンプ用アクセス設定データは、書き込みによる更新が行われた場合、ＲＷとなる。そのため、更新されたページ３１は、ダンプの対象とされる。
【００４２】
図５は、運用中のダンプ処理のフローチャートである。このダンプ処理は、運用中にダンプ用アクセス設定データがＲＷとなっているページをダンプするための処理であり、例えば一定時間（以降「ダンプ間隔」と表記）が経過する度に実行される。このダンプ処理自体は、ＯＳ１５ｂに含まれる、メモリ１３に常駐するプログラム（以降「ダンプデーモン」と表記）をＣＰＵ１１が実行することで実現される。次に図５を参照して、運用中のダンプ処理について詳細に説明する。
【００４３】
先ず、ＣＰＵ１１は、変数ｎに０を代入する（Ｓ２１）。この変数ｎは、ダンプするか否かを確認する対象ページ３１を管理するための変数であり、その変数ｎの値をページ番号とするページ３１が対象ページ３１として選択される。図５中、対象ページ３１は「ページ（ｎ）」と表記されている。
【００４４】
次にＣＰＵ１１は、メモリ管理テーブル１３ａを参照して、対象ページ３１のダンプ用アクセス設定データを確認し（Ｓ２２）、そのダンプ用アクセス設定データがＲＷか否か判定する（Ｓ２３）。そのダンプ用アクセス設定データがＲＷであった場合、Ｓ２３の判定はＹｅｓとなってＳ２４に移行する。そのダンプ用アクセス設定データがＲＯであるか、或いは対象ページ３１がメモリ１３上に存在しない場合、Ｓ２３の判定はＮｏとなってＳ２５に移行する。
【００４５】
Ｓ２４では、ＣＰＵ１１は、バス１６、及びＩ／Ｏユニット１４を介して、対象ページ３１をディスク装置１５のダンプ領域１５ｃに書き込むダンプを行い、対象ページ３１のダンプ用アクセス設定データをＲＷからＲＯに変更する。その後、Ｓ２５に移行する。
【００４６】
Ｓ２５では、ＣＰＵ１１は、変数ｎの値がページ番号の最大値（図５中「ｍａｘ」と表記）と等しいか否か判定する。変数ｎの値がページ番号の最大値と等しい場合、Ｓ２５の判定はＹｅｓとなり、ここで運用中のダンプ処理が終了する。変数ｎの値がページ番号の最大値と等しくない場合、つまり変数ｎの値がページ番号の最大値未満であった場合、Ｓ２５の判定はＮｏとなり、ＣＰＵ１１は、変数ｎの値をインクリメントする（Ｓ２６）。変数ｎの値をインクリメントした後は、上記Ｓ２２に戻る。
【００４７】
このようにして、運用中のダンプ処理を実行した場合、メモリ１３上のページ３１のなかでダンプ用アクセス設定データがＲＷとなっているページ３１は全てダンプされる。上記のように、メモリ１３上のページ３１のなかで更新されたページ３１のダンプ用アクセス設定データはＲＷである。そのため、メモリ１３上の更新されたページ３１は、その更新後に最初に実行される運用中のダンプ処理によってダンプされる。
【００４８】
図６は、障害発生時のダンプ処理のフローチャートである。このダンプ処理は、障害発生を契機に、メモリ１３のダンプを行うための処理であり、例えばＯＳ１５ｂのカーネルをＣＰＵ１１が実行することで実現される。最後に図６を参照し、障害発生時のダンプ処理について詳細に説明する。
【００４９】
先ず、ＣＰＵ１１は、ＯＳ１５ｂのなかでメモリ１３に常駐させている全てのプログラム（図６中「デーモン」と表記）を停止させる（Ｓ４１）。次にＣＰＵ１１は、変数ｎに０を代入する（Ｓ４２）。その後、ＣＰＵ１１は、メモリ管理テーブル１３ａを参照して、変数ｎの値をページ番号として割り当てられた対象ページ３１のダンプ用アクセス設定データを確認し（Ｓ４３）、そのダンプ用アクセス設定データがＲＷか否か判定する（Ｓ４４）。そのダンプ用アクセス設定データがＲＷであった場合、Ｓ４４の判定はＹｅｓとなってＳ４５に移行する。そのダンプ用アクセス設定データがＲＯであるか、或いは対象ページ３１がメモリ１３上に存在しない場合、Ｓ４４の判定はＮｏとなってＳ４６に移行する。
【００５０】
Ｓ４５では、ＣＰＵ１１は、対象ページ３１をディスク装置１５のダンプ領域１５ｃに書き込むダンプを行う。そのダンプを行った後、ＣＰＵ１１は、変数ｎの値がページ番号の最大値と等しいか否か判定する（Ｓ４６）。変数ｎの値がページ番号の最大値と等しい場合、Ｓ４６の判定はＹｅｓとなり、ここで障害発生時のダンプ処理が終了する。変数ｎの値がページ番号の最大値と等しくない場合、つまり変数ｎの値がページ番号の最大値未満であった場合、Ｓ４６の判定はＮｏとなり、ＣＰＵ１１は、変数ｎの値をインクリメントする（Ｓ４７）。変数ｎの値をインクリメントした後は、上記Ｓ４３に戻る。
【００５１】
このようにして、障害発生時は、メモリ１３上のページ３１のなかでダンプ用アクセス設定データがＲＷとなっている全てのページ３１がダンプされる。
【００５２】
（第２の実施形態）
上記第１の実施形態では、更新したページ３１は、その更新後、直ちにダンプするようにしている。第２の実施形態では、ページ３１毎に、所定期間（以降「監視期間」と表記）内の更新状況を監視し、その監視結果を用いて、各ページ３１のダンプを行うか否かの判定を個別に行うようにしている。
【００５３】
第２の実施形態によるコンピュータの構成は、上記第１の実施形態によるコンピュータ１の構成と同じである。動作も基本的には第１の実施形態と同じである。このことから、第２の実施形態の説明は、第１の実施形態で付した符号を用いつつ、その第１の実施形態から異なる部分にのみ着目して行う。
【００５４】
第１の実施形態では、更新されたページ３１は、その更新直後に実行される運用中のダンプ処理（図５）によってダンプされる。そのため、各ページ３１の単位時間当たりのダンプ回数は、更新頻度が高くなるほど大きくなる。ダンプでは、メモリ１３、及びディスク装置１５にアクセスしなければならない。そのため、更新頻度の高いページ３１が多くなるほど、ページ３１当たりの更新頻度が高くなるほど、ダンプのためのＩ／Ｏ処理に多くのリソースを消費し、メモリ１３，及びディスク装置１５のアクセス速度を実質的に低下させる。
【００５５】
運用中のダンプ処理（ダンプデーモン）は、上記のように、例えばダンプ間隔の経過を契機に起動される。上記監視期間として設定される時間は、そのダンプ間隔よりも長い時間である。そのような時間を監視期間として設定した場合、各ページ３１をダンプしてから次にダンプするまでのダンプ実施間隔は、監視期間を単位とする長さとなる。最小のダンプ実施間隔は、監視期間以上となる。このため、監視期間を設定し、その監視期間の監視結果を用いて各ページ３１のダンプを行うようにした場合、第１の実施形態と比較して、単位時間当たりにダンプするページ３１の数を抑制することができる。その結果、運用中のダンプのためのＩ／Ｏ処理に要するリソースの消費は抑制され、そのリソースの抑制によって、メモリ１３，及びディスク装置１５のアクセス速度の実質的な低下も抑制される。障害発生時は、運用中にダンプするページ３１の存在により、全体のダンプをより短時間に完了することができる。
【００５６】
第２の実施形態では、更新された後、運用中のダンプ処理を４回、実行するまでの間に再度、更新されなかったことを条件に、ページ３１のダンプを行うようにしている。その条件から、監視期間は、ページ３１の更新時から経過した時間であり、その最大の監視期間は、ダンプ間隔の３倍＜最大の監視期間＜ダンプ間隔の４倍、の関係を満たすものとなる。最小の監視期間は、最小の監視期間＜ダンプ間隔、を満たすものとなる。
【００５７】
上記条件は、単位時間当たりの更新頻度の高いページ３１をダンプの対象から除外すると共に、更新されない可能性が比較的に高いと期待できるページ３１をダンプするために設けている。第２の実施形態では、その条件により、更新されない状態が継続する度合いである安定度が比較的に高いと期待できるページ３１を運用中のダンプの対象としている。
【００５８】
単位時間当たりの更新頻度の高いページ３１、及び安定度の比較的に低いページ３１は、ダンプを行った後、直ぐに更新される可能性が高い。そのため、それらのページ３１は、障害発生時にダンプの対象となる可能性が高い。このことから、運用中のダンプの対象として、それらのページ３１を除外しても、障害発生時にダンプすべきページ３１の数が大きく増大することは回避される可能性が高い。そのため、障害発生時、対象にすべきページ３１の全てのダンプも第１の実施形態とほぼ同じ時間で行えると期待できる。運用中では、それらのページ３１がダンプの対象から除外されるため、第１の実施形態と比較して、ダンプのためのＩ／Ｏ処理に要するリソースの消費を大幅に抑えられると期待できる。
【００５９】
なお、第２の実施形態では、ページ３１の更新によって監視期間をリセットすることにより、監視期間は変化するようになっているが、監視期間は固定としても良い。固定の監視期間を採用する場合、例えば比較的に長い時間を監視期間として設定し、監視期間内でのページ３１の更新頻度、或いは更新間隔等により、ページ３１をダンプするか否か判定するようにしても良い。固定の監視期間を採用する場合、運用中のダンプによるＩ／Ｏ処理の負荷の増大を抑えるために、ページ３１を複数のグループに分け、ダンプのタイミングが各グループで異なるようにすることが望ましい。
【００６０】
図７は、第２の実施形態におけるメモリ管理テーブルの構成例を表す図である。図７に表すように、メモリ管理テーブル１３ａの各エントリには、ページ番号、ＯＳ用アクセス設定データ、及びダンプ用アクセス設定データの他に、安定度カウンタ値、及びダンプ管理フラグの各データが格納される。
【００６１】
ダンプ用アクセス設定データは、第１の実施形態と同じく、同じエントリに格納されているページ番号が割り当てられたページ３１が更新されたか否かを表すデータである。初期値（初期設定データ）は「ＲＷ」が設定される。
【００６２】
ダンプ管理フラグは、更新後にダンプが行われたか否かを表すデータである。「１」はダンプが行われたことを表し、「０」はダンプが行われていないことを表している。初期値は「０」である。
【００６３】
メモリ１３上のページ３１が更新される場合、第２の実施形態でも、図４に表すメモリ書き込み処理が実行され、更新されるページ３１のダンプ用アクセス設定データはＲＯからＲＷに変更される。第２の実施形態におけるダンプデーモンは、メモリ管理テーブル１３ａのエントリのなかでダンプ用アクセス設定データがＲＷとなっているエントリを抽出し、ダンプ用アクセス設定データをＲＷからＲＯに変更する。また、ダンプデーモンは、抽出したエントリの安定度カウンタ値、及びダンプ管理フラグをそれぞれ０に変更する。なお、ダンプを行う前に再更新されたページ３１では、ダンプ管理フラグは０となっていることから、変更前のダンプ管理フラグは０となっている場合がある。
【００６４】
安定度カウンタ値は、ページ３１が更新された後に経過した期間を表すデータである。ダンプ管理フラグが０となっているエントリの安定度カウンタ値は、起動されたダンプデーモンによってインクリメントされる。上記のように、ページ３１の更新によって安定度カウンタ値は０にリセットされることから、安定度カウンタ値は、ダンプデーモンが起動されるダンプ間隔を単位に、ページ３１が更新された後に経過した期間を表すデータとなる。
【００６５】
起動されたダンプデーモンは、最大値に達していない安定度カウンタ値を対象にインクリメントを行う。そのため、０に変更された安定度カウンタ値もインクリメントの対象となっている。上記のように、ダンプの対象となるページ３１は、更新された後、ダンプデーモンによる運用中のダンプ処理を４回、実行するまでの間に再度、更新されなかったページ３１である。このことから、上記最大値は３となっている。従って、ダンプの対象は、ダンプ用アクセス設定データがＲＯ、安定度カウンタ値が３、ダンプ管理フラグが０となっているページ３１である。
【００６６】
図７に表すメモリ管理テーブル１３ａでは、ページ番号として２が格納されているエントリのダンプ用アクセス設定データがＲＷとなっている。そのエントリの安定度カウンタ値は３、ダンプ管理フラグは０である。それにより、ページ番号として２が割り当てられたページ３１は、更新されてから、３回、ダンプデーモンによるチェック処理（第２の実施形態における運用中のダンプ処理）が実行された後、再び更新されたことが分かる。
【００６７】
図８は、ページの状態遷移例を説明する図である。図２に表すように、第２の実施形態では、メモリ１３上のページ３１は、状態Ａ０〜Ａｄ、Ｂ１〜Ｂｍａｘ、及びＣの９つの状態に分けることができる。
【００６８】
各状態には、３つの項を含む括弧を表記している。例えば状態Ａ０には「（ダンプ未、ＲＷ、０）」を表記している。括弧内の第１項は、ダンプ管理フラグの値を表している。その第１項の内容として表記の「ダンプ未」は、ダンプ管理フラグが０であることを表している。「ダンプ済」は、ダンプ管理フラグが１であることを表している。
【００６９】
括弧内の第２項は、ダンプ用アクセス設定データの内容を表している。その第２項の内容として表記の「ＲＷ」は、ダンプ用アクセス設定データがＲＷであることを表している。「ＲＯ」は、ダンプ用アクセス設定データがＲＯであることを表している。
【００７０】
括弧内の第３項は、安定度カウンタ値の内容を表している。その第３項の内容として表記の「０」〜「Ｍａｘ」は、安定度カウンタ値を表している。「Ｍａｘ」は、上記のように、第２の実施形態では３である。
【００７１】
メモリ１３上にコピーされたページ３１は、状態Ａ０に初期設定される。そのページ３１は、更新されない限り、ダンプデーモンが起動される度に安定度カウンタ値がインクリメントされることで、状態Ａ０→状態Ｂ１→状態Ｂ２→状態Ｂｍａｘ→状態Ｃ、と遷移する。状態Ｂｍａｘから状態Ｃへの遷移により、ページ３１はダンプされ、そのページ３１のエントリに格納されているダンプ管理フラグ、及び安定度カウンタ値は、それぞれ１、及び０に更新される。
【００７２】
状態Ａ０→状態Ｂ１→状態Ｂ２→状態Ｂｍａｘに遷移する途中でページ３１が更新された場合、ページ３１が更新された状態に応じて、次に遷移すべき状態に遷移する。状態Ｂ１でページ３１の更新が行われた場合、次に状態Ａ１に遷移する。ページ３１の更新が行われたのが状態Ｂ２であれば状態Ａ２に、状態ＢＭａｘであれば状態ＡＭａｘにそれぞれ遷移する。状態Ｃで更新が行われたページ３１は、次に状態Ａｄに遷移する。これらの遷移は、全て、図４に表すメモリ書き込み処理（カーネル）の実行によって実現される。
【００７３】
ページ３１の更新後、最初に起動されるダンプデーモンは、状態Ａ１〜Ａｍａｘ、及びＡｄのうちの何れかとなっているページ３１を状態Ａ０に遷移させる。ダンプデーモンは、状態Ａ０に遷移させた後、直ちにページ３１を状態Ｂ１に遷移させる。そのため、ダンプデーモンによって状態Ａ０に遷移されたページ３１は、コピー時とは異なり、ダンプ間隔が経過する前に状態Ｂ１に遷移する。
【００７４】
運用中、ページ３１は、上記のように状態が遷移する。そのため、運用中は、状態Ｃに遷移しない限り、ページ３１はダンプされない。この結果、障害発生時には、状態Ｃ以外の状態となっているページ３１の全てがダンプの対象となる。
【００７５】
第２の実施形態では、第１の実施形態で説明したメモリ書き込み処理（図４）、運用中のダンプ処理（図５）、及び障害発生時のダンプ処理（図６）のなかで、運用中のダンプ処理、及び障害発生時のダンプ処理が第１の実施形態から異なっている。以降、図９、及び図１０を参照し、第２の実施形態における運用中のダンプ処理、及び障害発生時のダンプ処理について詳細に説明する。
【００７６】
図９は、第２の実施形態における運用中のダンプ処理のフローチャートである。始めに図９を参照して、第２の実施形態における運用中のダンプ処理について詳細に説明する。
【００７７】
先ず、ＣＰＵ１１は、変数ｎに０を代入する（Ｓ１０１）。次にＣＰＵ１１は、メモリ管理テーブル１３ａを参照して、変数ｎの値をページ番号とする対象ページ３１のダンプ用アクセス設定データを確認し（Ｓ１０２）、そのダンプ用アクセス設定データがＲＯか否か判定する（Ｓ１０３）。そのダンプ用アクセス設定データがＲＯであった場合、Ｓ１０３の判定はＹｅｓとなってＳ１０５に移行する。そのダンプ用アクセス設定データがＲＷであった場合、Ｓ１０３の判定はＮｏとなってＳ１０４に移行する。
【００７８】
Ｓ１０４では、ＣＰＵ１１は、対象ページ３１のダンプ管理フラグを０、安定度カウンタ値を０、ダンプ用アクセス設定データをＲＯにそれぞれ変更する。その後、Ｓ１０５に移行する。
【００７９】
Ｓ１０５では、ＣＰＵ１１は、対象ページ３１のダンプ管理フラグは０か否か判定する。そのダンプ管理フラグが０であった場合、Ｓ１０５の判定はＹｅｓとなってＳ１０６に移行する。そのダンプ管理フラグが１であった場合、Ｓ１０５の判定はＮｏとなってＳ１０９に移行する。
【００８０】
Ｓ１０６では、ＣＰＵ１１は、対象ページ３１の安定度カウンタ値が３（図９中「ＭＡＸ値」と表記）か否か判定する。その安定度カウンタ値が３であった場合、Ｓ１０６の判定はＹｅｓとなってＳ１０７に移行する。その安定度カウンタ値が３未満であった場合、Ｓ１０６の判定はＮｏとなってＳ１０８に移行する。
【００８１】
Ｓ１０７では、ＣＰＵ１１は、対象ページ３１をダンプし、その対象ページ３１のダンプ管理フラグを１、ダンプ用アクセス設定データをＲＯ、安定度カウンタ値を０にそれぞれ変更する。そのようにして対象ページ３１を状態Ｃに遷移させた後、Ｓ１０９に移行する。
【００８２】
Ｓ１０８では、ＣＰＵ１１は、対象ページ３１の安定度カウンタ値をインクリメントする。その後は上記Ｓ１０９に移行する。Ｓ１０４の処理が実行された対象ページ３１は、Ｓ１０８で安定度カウンタ値が０から１に更新される。
【００８３】
Ｓ１０９では、ＣＰＵ１１は、変数ｎの値がページ番号の最大値（図９中「ｍａｘ」と表記）と等しいか否か判定する。変数ｎの値がページ番号の最大値と等しい場合、Ｓ１０９の判定はＹｅｓとなり、ここで第２の実施形態における運用中のダンプ処理が終了する。変数ｎの値がページ番号の最大値と等しくない場合、つまり変数ｎの値がページ番号の最大値未満であった場合、Ｓ１０９の判定はＮｏとなり、ＣＰＵ１１は、変数ｎの値をインクリメントする（Ｓ１１０）。変数ｎの値をインクリメントした後は、上記Ｓ１０２に戻る。
【００８４】
このようにして、運用中のダンプ処理を実行した場合、メモリ１３上のページ３１のなかで状態Ｂｍａｘとなっているページ３１のみがダンプされ、ダンプされたページ３１は状態Ｃに遷移する。そのため、障害発生時は、状態Ｃを除く全ての状態のページ３１がダンプの対象となる。
【００８５】
図１０は、第２の実施形態における障害発生時のダンプ処理のフローチャートである。最後に図１０を参照し、第２の実施形態における障害発生時のダンプ処理について詳細に説明する。
【００８６】
図１０において、第１の実施形態と同じ内容の処理ステップには同一の符号を付している。ここでは、第１の実施形態から内容が異なる処理ステップ、つまり図６に存在していない符号を付した処理ステップに着目して説明を行う。
【００８７】
第２の実施形態では、Ｓ４３の代わりにＳ１３１を実行する。そのＳ１３１では、ＣＰＵ１１は、メモリ管理テーブル１３ａを参照して、変数ｎの値をページ番号として割り当てられた対象ページ３１のエントリを確認する。次にＣＰＵ１１は、そのエントリが状態Ｃを表しているか否か確認する（Ｓ１３２）。そのエントリのダンプ管理フラグが１、ダンプ用アクセス設定データがＲＯ、及び安定度カウンタ値が０であった場合、Ｓ１３２の判定はＹｅｓとなってＳ４６に移行する。一方、エントリのダンプ管理フラグが０、ダンプ用アクセス設定データがＲＷ、或いは安定度カウンタ値が０以外の値であった場合、Ｓ１３２の判定はＮｏとなってＳ４５に移行し、ＣＰＵ１１は対象ページのダンプを行う。
【００８８】
なお、本実施形態（第１、及び第２の実施形態）によるコンピュータ１は、サーバ等として用いられる情報処理装置である。本実施形態が適用可能なコンピュータは、サーバ等として用いられる情報処理装置に限定されない。コンピュータは、何らかの装置、或いはシステムにとって必要な処理を実行させるものであっても良い。このことから、コンピュータは、何らかの装置に搭載されるものであっても良い。
【符号の説明】
【００８９】
１    コンピュータ
１１    ＣＰＵ
１２    ＲＯＭ
１３    メモリ
１３ａ    メモリ管理テーブル
１４    Ｉ／Ｏユニット
１５    ディスク装置
１５ｂ    ＯＳ
１５ｃ    ダンプ領域
【図１】
2015035007.tif 000003
【図３】
2015035007.tif 000004
【図４】
2015035007.tif 000005
【図５】
2015035007.tif 000006
【図６】
2015035007.tif 000007
【図７】
2015035007.tif 000008
【図８】
2015035007.tif 000009
【図９】
2015035007.tif 000010
【図１０】
2015035007.tif 000011
【図２】
2015035007.tif 000012