(57)【要約】  システムに障害が発生した場合に、システム復旧時にかかるダンプ時間を短縮する情報処理システムを提供することを目的とする。情報処理装置は、情報処理装置が使用する情報を格納する第１の記憶部に格納された情報を第２の記憶部に保存し、第１の記憶部に格納された情報のうち、第２の記憶部に保存済みである情報を判別する保存完了情報を保存完了情報格納部に格納し、障害発生後に、保存完了情報に基いて、第１の記憶部に記憶された情報のうち、第２の記憶部に保存されていない情報を第２の記憶部に格納する。
2014006694.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置が使用する情報を格納する第１の記憶部と、
前記第１の記憶部に格納された情報を格納する第２の記憶部と、
前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存済みである情報を判別する保存完了情報を格納する保存完了情報格納部と、
前記第１の記憶部に格納された情報を前記第２の記憶部に保存した場合、前記保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納する第１の保存処理部と、
前記情報処理装置に障害が発生した場合、前記保存完了情報に基いて、前記第１の記憶部に記憶された情報のうち、前記第２の記憶部に保存されていない情報を判別し、前記判別した情報を前記第２の記憶部に保存する第２の保存処理部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、さらに、
前記情報処理装置の障害を検知する検知部と、
前記検知部が前記障害を検知した場合、前記保存完了情報に基いて、前記第１の記憶部における前記保存済みの情報が格納された領域を用いて、前記情報処理装置の再起動処理を行う制御部と、
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、さらに、
前記第１の記憶部に格納された情報が更新された場合、該更新された情報に対応する前記保存完了情報を前記保存完了情報格納部に格納する管理部
を備えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第１の保存処理部は、所定の時間間隔で、前記保存完了情報に基いて、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存されていない情報を前記第２の記憶部に保存する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、さらに、
前記第１の記憶部が有する記憶領域毎の更新頻度を示す更新頻度情報を格納する更新頻度情報格納部と、
前記第１の記憶部に格納された情報が更新された場合、該更新された情報が格納された前記記憶領域に対応する前記更新頻度情報を更新する更新頻度情報管理部と、
を備え、
前記第１の保存処理部は、前記更新頻度情報の値が所定の閾値以下の前記記憶領域に格納された情報を前記第２の記憶部に保存し、前記保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納する
ことを特徴とする請求項１〜４のうちいずれか１項に記載の情報処理装置。
【請求項６】
前記情報処理装置は、さらに、
前記更新頻度情報に応じて、前記記憶領域に格納された情報を、前記更新頻度情報に対応する前記第１の記憶部の記憶領域に移動させる配置部と、
を備えることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
情報処理装置が使用する情報を格納する第１の記憶部に格納された情報を、前記第１の記憶部に格納された情報を格納する第２の記憶部に保存した場合、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存済みである情報を判別する保存完了情報を格納する保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納し、
前記情報処理装置に障害が発生した場合、前記保存完了情報に基いて、前記第１の記憶部に記憶された情報のうち、前記第２の記憶部に保存されていない情報を判別し、前記判別した情報を前記第２の記憶部に保存する
処理をコンピュータに実行させることを特徴とする情報保存処理プログラム。
【請求項８】
前記情報処理装置の障害を検知し、
前記障害を検知した場合、前記保存完了情報に基いて、前記第１の記憶部における前記保存済みの情報が格納された領域を用いて、前記情報処理装置の再起動処理を行う
処理をコンピュータに実行させることを特徴とする請求項７に記載の情報保存処理プログラム。
【請求項９】
前記第１の記憶部に格納された情報が更新された場合、該更新された情報に対応する前記保存完了情報を前記保存完了情報格納部に格納する
処理をコンピュータに実行させることを特徴とする請求項７または８に記載の情報保存処理プログラム。
【請求項１０】
所定の時間間隔で、前記保存完了情報に基いて、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存されていない情報を前記第２の記憶部に保存する
処理をコンピュータに実行させることを特徴とする請求項９に記載の情報保存処理プログラム。
【請求項１１】
前記第１の記憶部に格納された情報が更新された場合、前記第１の記憶部が有する記憶領域毎の更新頻度を示す更新頻度情報のうち、前記更新された情報が格納された前記記憶領域に対応する前記更新頻度情報を更新し、
前記更新頻度情報の値が所定の閾値以下の前記記憶領域に格納された情報を、前記第２の記憶部に保存し、前記保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納する
処理をコンピュータに実行させることを特徴とする請求項７〜１０のうちいずれか１項に記載の情報保存処理プログラム。
【請求項１２】
情報処理装置が使用する情報を格納する第１の記憶部に格納された情報を、前記第１の記憶部に格納された情報を格納する第２の記憶部に保存した場合、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存済みである情報を判別する保存完了情報を格納する保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納し、
前記情報処理装置に障害が発生した場合、前記保存完了情報に基いて、前記第１の記憶部に記憶された情報のうち、前記第２の記憶部に保存されていない情報を判別し、前記判別した情報を前記第２の記憶部に保存する
処理をコンピュータが実行することを特徴とする情報保存処理方法。
【請求項１３】
前記情報処理装置の障害を検知し、
前記障害を検知した場合、前記保存完了情報に基いて、前記第１の記憶部における前記保存済みの情報が格納された領域を用いて、前記情報処理装置の再起動処理を行う
処理をコンピュータが実行することを特徴とする請求項１２に記載の情報保存処理方法。
【請求項１４】
前記第１の記憶部に格納された情報が更新された場合、該更新された情報に対応する前記保存完了情報を前記保存完了情報格納部に格納する
処理をコンピュータが実行することを特徴とする請求項１２または１３に記載の情報保存処理方法。
【請求項１５】
所定の時間間隔で、前記保存完了情報に基いて、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存されていない情報を前記第２の記憶部に保存する
処理をコンピュータが実行することを特徴とする請求項１４に記載の情報保存処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリダンプ方法、及びそれを実行するシステムに関する。
【背景技術】
【０００２】
重大なシステム障害により、システムがこれ以上稼働できないと判断した場合に、オペレーティングシステム（以下、ＯＳと記す場合がある）は、システム障害の原因調査のために、システムに搭載された物理メモリの内容を補助記憶装置に記録する。すなわち、エラーを報告したプロセッサは、ダンプ出力用のプログラムを実行し、物理メモリの内容をディスク上のファイルに書き込む。ディスクへの書き込みが終了した後、システムは、通常の再起動のプロセスを経て、ＯＳ及びＯＳ上で稼動するプログラムを順次起動して、システムを再稼働する。【０００３】
システムの再稼動までにかかる時間は、システムが搭載するメモリの容量が増えるに従って増大する。これは、搭載メモリ量に比例してメモリダンプ時のディスク書き込み時間が増大するためである。高い可用性が要求されるシステムでは、メモリダンプにかかる再起動所要時間を許容できないため、メモリダンプを取得することができず、障害調査が行えない現状がある。【０００４】
ダンプ時間を短縮するための方法として、システム障害が発生した際に、物理メモリ上の特定領域を使用するＯＳ中核部のメモリ内容をダンプ出力し、ＯＳ中核部にあたる物理メモリ領域を解放し、再度ＯＳ中核部を該当メモリ領域へロードする方法が知られている。この方法では、ダンプ取得状況を管理するテーブルが用いられる。また、ＯＳ起動後は最低限の優先度でダンプ未取得領域のダンプ取得処理を行う。さらに、ＯＳ起動後にプログラムを実行する際、そのプログラムで使用するメモリページがダンプ未取得状態であった場合、そのメモリページをダンプ出力し、プログラムで使用する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−３３３９４４号公報
【特許文献２】特開２０００−２９３３９１号公報
【特許文献３】特開２００９−１４０２９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記方法では、重大なシステム障害が発生した際に、ＯＳ中核部分のメモリの内容をディスクにダンプ出力する時間が発生するため、システムの再稼動までに多くの時間がかかる。また、サービスが使用するメモリ領域の内容をすべてダンプ出力するまでサービスの再起動が行えない。【０００７】
そこで、１つの側面では、本発明は、システムに障害が発生した場合に、システム復旧時にかかるダンプ時間を短縮する情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
一態様の情報処理装置は、第１の記憶部、第２の記憶部、保存完了情報格納部、第１の保存処理部、及び、第２の保存処理部を含む。第１の記憶部は、情報処理装置が使用する情報を格納する。第２の記憶部は、第１の記憶部に格納された情報を格納する。保存完了情報格納部は、第１の記憶部に格納された情報のうち第２の記憶部に保存済みである情報を判別する保存完了情報を格納する。第１の保存処理部は、第１の記憶部に格納された情報を第２の記憶部に保存した場合、保存完了情報格納部に、保存した情報に対応する保存完了情報を格納する。第２の保存処理部は、前記情報処理装置に障害が発生した場合、保存完了情報に基いて、第１の記憶部に記憶された情報のうち、第２の記憶部に保存されていない情報を判別し、前記判別した情報を第２の記憶部に保存する。
【発明の効果】
【０００９】
本発明の１つの側面では、システムに障害が発生した場合に、システム復旧時にかかるダンプ時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係る情報処理装置の機能ブロック図の一例を示す。
【図２】本実施形態に係る情報処理装置の構成の一例を示す図である。
【図３】本実施形態に係るメモリ管理テーブルの構成の一例を示す図である。
【図４】本実施形態に係るシステム起動時の物理メモリのファイル配置の一例を示す図である。
【図５】ＯＳ稼働中の処理フローを示す図である。
【図６】重大エラー発生時の処理フローを示す図である。
【図７】メモリページに更新があった場合の、メモリ管理部及びメモリ管理テーブルの動作を説明するための図である。
【図８】本実施形態に係るメモリ管理テーブルのページアドレスフィールドと、物理メモリのメモリページが対応していることを説明するための図である。
【図９】本実施形態に係るシステムの動作開始時のＯＳ起動直後に行うメモリのフルダンプを行った際のメモリ管理テーブルの状態を示す図である。
【図１０】メモリページ更新時のメモリ管理テーブルの状態を示す図である。
【図１１】ＯＳ稼働中に差分ダンプを出力する際のシステムの動作フローを示す図である。
【図１２】メモリページの更新頻度に応じた物理メモリの再配置の動作フローを示す図である。
【図１３】サーバに重大なエラーが発生してから、ＯＳ起動完了までのシステムの動作フローを示す図である。
【図１４】ＯＳ起動後にダンプ未取得のメモリページのダンプ出力を多重処理で実行する際のシステムの動作フローを示す図である。
【図１５】本実施形態における情報処理装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
図１は、本実施形態に係る情報処理装置の機能ブロック図の一例である。
情報処理装置１は、第１の記憶部２、第２の記憶部３、保存完了情報格納部４、第１の保存処理部５、第２の保存処理部６、検知部７、制御部８、管理部９、更新頻度情報格納部１０、更新頻度情報管理部１１、及び、配置部１２を含む。
【００１２】
第１の記憶部２は、情報処理装置１が使用する情報を格納する。
第２の記憶部３は、第１の記憶部２に格納された情報を格納する。
保存完了情報格納部４は、第１の記憶部２に格納された情報のうち、第２の記憶部３に保存済みである情報を判別する保存完了情報を格納する。
【００１３】
第１の保存処理部５は、第１の記憶部２に格納された情報を第２の記憶部３に保存した場合、保存完了情報格納部４に、保存した該情報に対応する保存完了情報を格納する。また、所定の時間間隔で、保存完了情報に基いて、第１の記憶部２に格納された情報のうち、保存済みでない情報を第２の記憶部３に保存する。
【００１４】
第２の保存処理部６は、情報処理装置１に障害が発生した場合、保存完了情報に基いて、第１の記憶部２に記憶された情報のうち、第２の記憶部３に保存されていない情報を判別し、判別した情報を第２の記憶部３に保存する。
【００１５】
検知部７は、情報処理装置１の障害を検知する。
制御部８は、検知部７が障害を検知した場合、保存完了情報に基いて、第１の記憶部２における保存済みの情報が格納された記憶領域を用いて、情報処理装置１の再起動処理を行う。
【００１６】
管理部９は、第１の記憶部２に格納された情報が更新された場合、更新された情報に対応する保存完了情報を保存完了情報格納部４に格納する。
更新頻度情報格納部１０は、第１の記憶部２が有する記憶領域毎の更新頻度を示す更新頻度情報を格納する。更新頻度情報の値が所定の閾値以下の記憶領域に格納された情報は、第１の保存処理部５により、第２の記憶部３に保存され、第１の保存処理部５により、保存した情報に対応する保存完了情報が保存完了情報格納部１０に格納される。
【００１７】
更新頻度情報管理部１１は、第１の記憶部２に格納された情報が更新された場合、更新された情報が格納された記憶領域に対応する更新頻度情報を更新する。
配置部１２は、更新頻度情報に応じて、記憶領域に格納された情報を、更新頻度情報に対応する第１の記憶部２の記憶領域に移動させる。
【００１８】
このように構成することで、システム稼働中にＯＳ領域とその他のサービス（アプリケーション）が使用するメモリ領域を可能な限りダンプ取得済みの状態とする。それにより、障害発生後に取得するメモリダンプの量（ファイルへの書き込み量）を最小限にする。また、障害発生時に、ダンプ取得済みの領域を用いてＯＳの再起動処理を開始する。それにより、障害が発生してから、ダンプ処理にかかる時間をあけずに、直ちに再起動を開始することが可能になる。さらに、障害発生時にダンプ未取得の領域に対しては、ＯＳ再起動後もメモリの内容を開放せずに保持し、ＯＳ再起動後にダンプ未取得の領域をダンプする。それにより、障害発生時のメモリの内容を完全な状態で取得することが可能となる。
【００１９】
図２は、本実施形態に係る、情報処理装置１の構成の一例を示す図である。
情報処理装置１では、オペレーティングシステム５８が実行される。オペレーティングシステム５８の機能として、メモリ管理機構５１、ページテーブル５２、ダンプ取得部５３、システム制御部５４、メモリ管理部５５、メモリ管理テーブル５６が含まれる。また、情報処理装置１は、ダンプファイル５７を保持する。
【００２０】
ダンプ取得部５３は、第１の保存処理部５、第２の保存処理部６の一例として挙げられる。システム制御部５４は、制御部８の一例として挙げられる。メモリ管理部５５は、管理部９、更新頻度情報管理部１１、配置部１２の一例として挙げられる。メモリ管理テーブル５６の情報は、保存完了情報格納部４が格納する保存完了情報、及び更新頻度情報格納部１０が格納する更新頻度情報の一例として挙げられる。
【００２１】
尚、ダンプ取得部５３、システム制御部５４、メモリ管理部５５は、オペレーティングシステム５８上で実行されるアプリケーションとして実現しても、オペレーティングシステム５８内で実行されるモジュールとして実現してもよい。さらに、ダンプ取得部５３、システム制御部５４、メモリ管理部５５は、オペレーティングシステム５８とは別に実行されるソフトウェアとして実現してもよい。
【００２２】
オペレーティングシステム５８は、情報処理装置１で実行されるＯＳである。
メモリ管理機構５１は、ページテーブル５２を用いて、情報処理装置１の仮想アドレスと物理アドレスのアドレス変換を行う。ページテーブル５２は、情報処理装置１の仮想アドレスと物理アドレスの対応付けを行ったマッピング情報が格納されたテーブルである。
【００２３】
ダンプ取得部５３は、ＯＳ稼働中にメモリのフルダンプ、及び所定のタイミングで前回ダンプ取得時からの差分ダンプを出力する。ＯＳ稼働中に適宜メモリダンプを取得することで、障害発生時にダンプを取得する必要のあるメモリ容量を低減する。
【００２４】
ＯＳ稼働中にメモリのフルダンプを行う機能とは、ＯＳが稼働したまま物理メモリのすべての領域の内容を、補助記憶装置にダンプファイル５７として出力する機能である。メモリのフルダンプは、本実施形態のシステムの動作開始時に実行される。
【００２５】
ＯＳ稼働中に差分ダンプを出力する機能とは、前回ダンプ取得時から更新されたメモリ領域の内容のみを対象として、更新内容をディスク上のダンプファイル５７に出力する機能である。差分ダンプは所定の時間間隔で実行される。差分ダンプの取得のタイミングはパラメータを用いることにより使用者が設定可能とする。
【００２６】
ダンプファイル５７に対する更新処理は、前回までに取得したダンプファイル５７に対して、差分の内容を上書きして更新することによって行う。もしくは、ダンプファイル５７に対する更新処理は、前回までに取得したダンプファイル５７とは別のファイルに差分の内容を保存し、後で差分ファイルとダンプファイル５７をマージすることによって行ってもよい。
【００２７】
差分ダンプの対象となるメモリの領域の判定は、ダンプ取得部５３が、物理メモリの更新状態を管理するメモリ管理テーブル５６を用いて判定する。メモリ管理テーブル５６及びメモリ管理テーブル５６を用いた差分ダンプ対象領域の判定動作については後ほど説明する。
【００２８】
さらに、ダンプ取得部５３は、障害が発生しＯＳが再起動された後にダンプ未取得のメモリページをダンプするが、その際に、マルチスレッドでダンプ処理を実行することにより、処理を高速化する機能を有する。この機能により、ダンプ処理を多重処理で実行することが可能となり、短時間でダンプ処理を実行することができる。マルチスレッドとは、複数のスレッドを用いて並行して処理を行うことを指す。処理の詳細については、後ほど説明する。
【００２９】
次に、メモリ管理テーブル５６について説明する。メモリ管理テーブル５６は、物理メモリを構成するメモリページ毎に、メモリページの更新頻度、及び、メモリページがダンプ済みか否かを管理する。
【００３０】
図３は、本実施形態に係る、メモリ管理テーブル５６の構成の一例を示す図である。メモリ管理テーブル５６は、管理情報として、「バージョン情報」９０２と、「シャットダウンステータス」９０３のフィールドを有する。また、「ページアドレス」９０４、「ダンプステータス」９０５、「更新回数」９０６のデータ項目を含む。
【００３１】
「バージョン情報」９０２は、メモリ管理テーブル５６のバージョンを管理するためのフィールドである。
「シャットダウンステータス」９０３は、前回のシャットダウンが正常に行われたか否かを示すものである。このフィールドには、前回のシャットダウンが正常に行われた場合には、例えば、「１」が格納され、障害発生等により前回のシャットダウンが正常に行われなかった場合には、例えば、「０」が格納される。
【００３２】
「ページアドレス」９０４は、物理メモリを構成する各メモリページのアドレスを示す。「ページアドレス」９０４は、物理メモリの全てのページに対応付けられる。「ダンプステータス」９０５は、「ページアドレス」９０４で示されるアドレスの物理メモリの現在の内容が、ダンプ取得済みか否かを示す。「更新回数」９０６は、「ページアドレス」９０４で示されるアドレスの物理メモリが更新された回数を示す。更新された回数は、所定の時刻を基準とし、その時刻から現在までに更新された回数とする。
【００３３】
「ダンプステータス」９０５は、メモリページの現在の内容がダンプ取得済みである場合には、例えば、「１」が格納され、そうでない場合には、例えば、「０」が格納される。「ダンプステータス」９０５の値が書き換えられるタイミングは、メモリページのダンプ取得時と、メモリページへの書き込み（更新）発生時である。メモリページのダンプ取得時には、ダンプを取得したメモリページの「ダンプステータス」９０５に、例えば、「１」が書き込まれる。メモリページへの書き込み（更新）発生時には、書き込みが発生したメモリページの「ダンプステータス」９０５に、例えば、「０」が書き込まれる。
【００３４】
「更新回数」９０６については、メモリページへの書き込み（更新）発生時に、そのメモリページの「更新回数」９０６に「１」加算される。
図３では、「ページアドレス」９０４が「０ｘ１０００」であり、「ダンプステータス」９０５が「０」すなわちダンプ未取得であり、「更新回数」９０６が「１」すなわち前回フルダンプ実行時から現在までに１回更新された領域であることを示すエントリが示されている。
【００３５】
システム制御部５４は、サーバに重大なエラーが発生した際に、メモリ管理テーブル５６に基いてダンプ取得済みのメモリページを解放し、開放したメモリページの領域のみを使用してシステムを起動する機能を有する。この機能により、障害発生時にメモリダンプ取得のための時間を待つことなく、直ちにシステムの再起動処理を開始することが可能となる。ここで、ダンプ未取得のメモリページについては、メモリの内容がクリアされることなく、障害発生時のメモリ内容が保持されたまま、システムが再起動される。よって、ダンプ未取得のメモリの内容は、再起動後に取得することが可能であり、障害発生時のメモリの内容は完全な状態で保存可能である。
【００３６】
システムの起動に必要なメモリは、障害発生前のＯＳ稼動時にダンプ取得済みである領域から確保される。上述したように、ダンプ取得済みの領域かどうかは、メモリ管理テーブル５６で管理しているので、システム制御部５４は、メモリ管理テーブル５６を参照してダンプ取得済みの領域を判定する。
【００３７】
例外的に起動に必要な領域が確保できない、すなわちダンプ取得済み領域の容量がＯＳの起動に必要な容量に満たない場合は、ダンプ取得部５３は起動に必要な領域が確保できるまでダンプを行う。そして、システム制御部５４はＯＳの起動に必要な領域が確保されるのを待って再起動処理を開始する。
【００３８】
また、システム制御部５４は、ＯＳの再起動後も障害発生前のＯＳ稼働時のメモリ管理テーブル５６を引き継ぐ機能を有する。この機能を有することで、ＯＳの再起動後にダンプ未取得のメモリページのみをダンプして、効率よく障害発生時の完全なダンプファイル５７を作成することが可能となる。また、ＯＳの再起動後にアプリケーションプログラムが新たに必要とするメモリページとして、ダンプ取得済みの領域から順次メモリページを割り当てることが可能となる。
【００３９】
次に、メモリ管理部５５について説明する。メモリ管理部５５は、メモリページの更新頻度に応じた物理メモリの再配置機能を有する。すなわち、物理メモリを更新頻度ごとの連続領域に分割して、物理メモリを構成するメモリページの内容を、そのメモリページの更新頻度に応じて、分割した領域間を移動させる。このように、物理メモリを更新頻度ごとに分類された連続領域で構成することにより、メモリダンプ処理、および、再起動処理におけるメモリの使用効率を高める。
【００４０】
物理メモリは、３つの連続する領域に分割される。各領域のサイズは、固定の領域サイズ毎に決定され、この領域サイズは、予め使用者によりパラメータ等で与えられるようにする。分割された３つのメモリ領域において、以下の説明では、物理アドレスが下位の領域からメモリ領域１、メモリ領域２、メモリ領域３と記す。ここで、アドレスが下位とは、アドレスの値が小さいことを指し、アドレスが上位とは、アドレスの値が大きいことを指す。
【００４１】
３つの連続する領域は、それらを構成するメモリページの更新頻度が同程度になるように、メモリ管理部５５により制御される。すなわち、３つの連続する領域は、更新頻度が高いメモリページで構成されるメモリ領域、更新頻度が中程度のメモリページで構成されるメモリ領域、更新頻度が低いメモリページで構成されるメモリ領域となるように制御される。制御方法については、後ほど説明する。
【００４２】
本実施形態では、物理アドレスが下位の領域に位置するメモリ領域１は、更新頻度が低いメモリ領域に対応する。ここで、更新頻度が低い領域には、更新が発生しない書き込み禁止領域が含まれる。物理アドレスが上位の領域に位置するメモリ領域３は、更新頻度が高いメモリ領域に対応する。メモリ領域１とメモリ領域３に挟まれた物理アドレスが中位の領域に位置するメモリ領域２は、更新頻度が中程度のメモリ領域に対応する。
【００４３】
メモリ管理部５５は、所定時間毎に、物理メモリ上のメモリページを、そのページの更新頻度に応じて分類する。そして、メモリ管理部５５は、メモリページが分類された更新頻度に対応するメモリ領域（メモリ領域１、メモリ領域２、メモリ領域３のいずれか）に、メモリページを移動する。更新頻度による分類には閾値が用いられる。閾値はパラメータによりシステムの使用者が変更可能とする。また、閾値は柔軟に設定可能であり、例えば、システム負荷等に対するパラメータによる設定が可能である。
【００４４】
システム起動時およびサービス・アプリケーション起動時のイメージ等は、使用用途に応じて分類され、３つの領域に配置される。すなわち、メモリ管理部５５は、ＯＳの核となるモジュールおよび読み取り専用のコード領域等を「更新頻度低」として分類しメモリ領域１に配置する。メモリ管理部５５は、更新頻度が高い用途領域等を「更新頻度高」として分類し、メモリ領域３に配置する。例えば、サーバ起動時に、通常、次回再起動まで更新されることがない読み取り専用領域をメモリ領域１にロードする。読み取り専用領域は、例えば、ＯＳカーネルやシステム稼働に必須となるデバイスドライバーなどがある。
【００４５】
図４は、本実施形態に係る、システム起動時における物理メモリのファイル配置の一例を示す図である。図４の例では、下位のアドレス領域に位置し、更新頻度低に対応するメモリ領域１には、ＯＳカーネルモジュール・データ、ブートドライバの領域が含まれている。上位のアドレス領域に位置し、更新頻度高に対応するメモリ領域３には、データ領域、その他の領域が含まれている。
【００４６】
システム起動時に上記規則に従ってメモリページを配置したうえで、メモリ管理部５５は、メモリ管理テーブル５６を用いて定期的にメモリ書き込みの頻度を確認し、メモリページの内容を更新頻度に応じて移動する。具体的には、更新頻度による分類のために用いる閾値を予め設定しておき、更新頻度が閾値よりも高いページをひとつ上位の領域に移動し、更新頻度が閾値よりも低いページをひとつ下位の領域に移動する。例えば、メモリ管理部５５は、メモリ領域２に位置するメモリページに対して書き込みの頻度を確認した結果、書き込みの頻度が閾値よりも高い場合は、そのメモリページをメモリ領域３に移動する。尚、メモリ管理部５５によるメモリページの移動は、メモリの内容を複製することで実施してもよい。ここで、メモリ管理部５５は、様々な理由によりメモリの内容を移動できないと判断した場合は、移動は行わない。
【００４７】
メモリ管理部５５がメモリページの内容を移動した場合、ＯＳが管理する物理アドレスと仮想アドレスの対応付けが変更されることとなる。そこで、メモリ管理部５５は、メモリページの移動完了後にシステムのページテーブル５２を更新する。すなわち、メモリ管理部５５は、ページテーブル５２において、移動を行う対象となったメモリの仮想アドレスに対応する物理アドレスを、移動前の物理アドレスから、移動後の物理アドレスに変更して、仮想アドレスと物理アドレスのマッピングを更新する。よって、メモリの再配置の動作に伴って、アプリケーションの動作を変更する必要はない。
【００４８】
尚、メモリ再配置機能は、プラットフォーム（ハードウェア・ハイパーバイザ）と連携する実装とすることも可能である。
このようにメモリの再配置をおこなうことにより、稼働中のメモリダンプ情報と再起動後に作成したメモリを高速に結合処理することができ、障害発生後のメモリダンプ作成にかかる時間を短縮できる。ここで、更新頻度低に対応するメモリ領域１の内容は、ダンプ取得済みである可能性が高く、再起動はダンプ取得済みの領域が使用されて実行される。そのため、更新頻度低の領域がアドレスの下位側に連続して確保できれば、システムの再起動時にメモリを効率的に使用することができる。更新頻度低の領域を物理メモリの下位側に配置する理由は、アドレスが下位の領域からメモリダンプが行われるため、このように配置することは、メモリダンプの効率化につながるからである。
【００４９】
次に、本実施形態に係るシステムの処理の流れを説明する。
本実施形態のシステムの動作開始に当たって、ダンプ取得部５３は、ＯＳの起動直後に、メモリの全ての領域の内容をダンプファイル５７としてディスクに保存する。それ以降の通常運用においては、更新されたメモリ領域のみを対象に、任意のタイミングでダンプファイル５７を差分更新する。ここで、すべてのメモリ更新に追従して、ダンプファイル５７を更新すると、ダンプ処理に伴うシステムにかかる負荷が大きくなるため、更新頻度の高いメモリ領域については差分更新の対象外とする。また、ある領域のメモリの更新頻度、及びその領域がダンプ取得済みかどうかは、メモリ管理テーブル５６によって管理される。
【００５０】
障害が発生した場合システムは再起動されるが、再起動のために使用される領域としては、障害発生時点においてメモリダンプ取得済みの領域が使用される。ダンプ未取得のメモリ領域は、再起動後も、障害発生時の内容がそのまま保持された状態で引き継がれる（クリアされない）。なお、前回稼働時のメモリ管理テーブル５６の情報は、たとえ、メモリ管理テーブル５６が格納されているメモリ領域がダンプ取得済みであったとしても、再起動処理には使用されず、再起動後も内容が引き継がれる。このメモリ管理テーブル５６の情報を元に、ダンプ未取得の領域は、再起動後にダンプ出力される。
【００５１】
図５は、ＯＳ稼働中の情報処理装置１の処理フローを示す図である。
システムの起動完了後（Ｓ１１０１）、ダンプ取得部５３は、物理メモリのすべての領域の内容を補助記憶装置上に出力するフルダンプを行う（Ｓ１１０２）。フルダンプが終了したら、メモリ管理部５５によるメモリ管理テーブル５６の運用が開始される（Ｓ１１０３）。所定の時間間隔毎に、システムの稼動に伴って更新されたメモリ領域の内容がダンプ出力される（Ｓ１１０４）。さらに、メモリ管理部５５は、メモリ管理テーブル５６の情報を用いて、更新頻度による物理メモリの再配置を行う（Ｓ１１０５）。
【００５２】
図６は、重大エラー発生時の情報処理装置１の処理フロー図である。
ＣＰＵがエラーを検出すると、システムクラッシュが発生し（Ｓ１２０１）、ダンプ取得済みのメモリ領域が初期化される（Ｓ１２０２）。
【００５３】
次に、システムリセットが実行される（Ｓ１２０３）。ここでは、メモリの初期化は行われない。
次に、Ｓ１２０２で初期化されたメモリ領域を用いて、ＯＳが起動される（Ｓ１２０４）。
【００５４】
次に、メモリ管理テーブル５６の読み込みが行われる（Ｓ１２０５）。
ＯＳの起動が完了すると（Ｓ１２０６）、ダンプ未取得領域の差分ダンプ出力（Ｓ１２０７）及びダンプ取得済み物理メモリの開放（Ｓ１２０８）と、サービスの起動（Ｓ１２０９）が並行して行われる。ダンプ未取得領域の差分ダンプにおいて、ダンプ未取得領域の判定はＳ１２０５で読み込んだメモリ管理テーブル５６を用いて行われる。ダンプ未取得領域の差分ダンプ出力が進むにつれ、順次ダンプ出力が完了した物理メモリが開放される（Ｓ１２０８）。すべての障害発生時の物理メモリのダンプが完了した場合、システムの再起動が完了する（Ｓ１２１０）。
【００５５】
次に、通常運用における、メモリページに更新があった場合のメモリ管理部５５及びメモリ管理テーブル５６の動作について説明する。図７は、メモリページに更新があった場合の、メモリ管理部５５及びメモリ管理テーブル５６の動作を説明するための図である。
【００５６】
まず、本実施形態に係るシステムの動作開始にあたって、メモリ管理部５５は、すべての物理メモリを構成するメモリページの管理情報を有するメモリ管理テーブル５６を作成する（Ｓ２０１）。メモリ管理テーブル５６の「ページアドレス」９０４の項目は、システムに搭載された物理メモリのすべてのページに対応するように作成される。ここで、すべてのメモリページには、メモリ領域１、２に加えて、更新頻度高のメモリ領域３が含まれる。また、すべての「ダンプステータス」９０５の値は「１」に設定され、全ての「更新回数」９０６の値は「０」に設定される。
【００５７】
図８は、本実施形態に係るメモリ管理テーブル５６の「ページアドレス」９０４と、物理メモリのメモリページが対応していることを説明するための図である。図８に示すように、物理メモリのすべてのページに対応するように、「ページアドレス」９０４にページアドレスを格納する。
【００５８】
図９は、本実施形態に係るシステムの動作開始時のＯＳ起動直後に行うメモリのフルダンプ（Ｓ１１０２）を行った際のメモリ管理テーブル５６の状態を示す図である。メモリ管理テーブル５６のすべての「ダンプステータス」９０５に「１」が格納され、「更新回数」９０６には「０」が格納されている。
【００５９】
物理メモリのメモリページに対する書き込みが発生した場合、メモリ管理部５５は、ＯＳのメモリ管理機構５１からページ変更の通知を受け取る（Ｓ２０２）。メモリ管理部５５は、ページ変更の通知を受けると、通知を受けたページに対応するメモリ管理テーブル５６の「ダンプステータス」９０５の値を「０」に変更し、「更新回数」９０６の値をインクリメントする（Ｓ２０３）。
【００６０】
図１０は、メモリページ更新時のメモリ管理テーブル５６の状態を示す図である。メモリ管理部５５は、更新のあったページに対応するエントリの「ダンプステータス」９０５に「０」を格納し、「更新回数」９０６の値をインクリメントする。
メモリ管理部５５がメモリ管理テーブル５６を更新したら、Ｓ２０２に処理が移行する。
【００６１】
次に、ＯＳ稼働中に差分ダンプを出力する機能について説明する。
ダンプ取得部５３は、所定の時間間隔で差分ダンプを出力する。ダンプ取得部５３は、メモリ管理テーブル５６を用いて差分ダンプの対象となる領域を判定し、差分ダンプ対象と判定されたメモリ領域のみをダンプする。すなわち、ダンプ取得部５３は、メモリ管理テーブル５６の「ダンプステータス」９０５の値を参照し、その値が「０」であるメモリページを差分ダンプの対照とする。ただし、更新頻度の高いメモリ領域３に配置されるメモリについては、差分更新の対象外とする。
【００６２】
図１１は、ＯＳ稼働中に差分ダンプを出力する際のシステムの動作フローを示す図である。このフロー図で示す処理は、図５のＳ１１０４における処理を詳細に記したものである。
【００６３】
差分ダンプ出力処理では、物理メモリのページアドレスの下位から上位に向かってページ単位で、Ｓ３０２〜Ｓ３０６に示す処理が実施される。すなわち、Ｓ３０２〜Ｓ３０６のループでは、１回のループにおいて処理対象となるのは単一のページであり、ループが進む毎に、処理対象となるページは、上位アドレスのページとなる。
【００６４】
まず、ダンプ取得部５３は、差分ダンプ出力処理において、物理メモリにおける最も下位のアドレスのページを、処理対象のページとして設定する（Ｓ３０１）。
次に、ダンプ取得部５３は、現在処理対象のページが更新頻度高の領域、すなわち、メモリ領域３に含まれるページか否かを判定する（Ｓ３０２）。
【００６５】
更新頻度高の領域の場合（Ｓ３０２でＹｅｓ）、処理はＳ３０７に移行する。更新頻度高の領域でない場合（Ｓ３０２でＮｏ）、ダンプ取得部５３は、現在処理対象のページがダンプ取得済みか否かを判定する（Ｓ３０３）。ここで、ダンプ取得部５３は、メモリ管理テーブル５６を用いて、ダンプ取得済みか否かの判定を行う。すなわち、ダンプ取得部５３は、「ページアドレス」９０４が現在処理対象のページのアドレスと一致するメモリ管理テーブル５６のエントリにおいて、「ダンプステータス」９０５の値を参照し、その値が「１」であるか否かを判定する。
【００６６】
現在処理対象のページがダンプ取得済みである場合（Ｓ３０３でＹｅｓ）、処理はＳ３０６に移行する。現在処理対象のページがダンプ取得済みでない場合（Ｓ３０３でＮｏ）、ダンプ取得部５３は、ダンプ未取得である現在処理対象のページの内容をディスク上のダンプファイル５７に上書きして更新する（Ｓ３０４）。
【００６７】
そして、ダンプ取得部５３は、Ｓ３０４でダンプした現在処理対象のページをダンプ出力済みとする。すなわち、ダンプ取得部５３は、「ページアドレス」９０４が現在処理対象のページのアドレスと一致するメモリ管理テーブル５６のエントリにおいて、そのエントリの「ダンプステータス」９０５の値を「１」にする（Ｓ３０５）。
【００６８】
そして、処理対象のページを、現在処理対象のページに対してアドレスが１つ上位のページとする（Ｓ３０６）。そして、処理はＳ３０２に戻る。
Ｓ３０１で処理対象のページが更新頻度高の領域であると判定された場合は、予め設定しておいた次の差分ダンプの出力条件まで待機する（Ｓ３０７）。そして、差分ダンプの出力条件が満たされると、Ｓ３０１に処理が戻る。
【００６９】
Ｓ３０７における差分ダンプ出力条件は、例えば、所定時間の経過や、更新ページ数が一定数に到達すること等が挙げられる。具体的には、例えば、Ｓ３０７で待機を開始してから、予め設定しておいた一定時間（１分間等）が経過することが条件として考えられる。また、例えば、Ｓ３０７で待機を開始してから、更新されたメモリページの数が一定ページ数以上（１０００ページ以上等）に達することが条件として考えられる。
【００７０】
次に、メモリページ更新頻度に応じた物理メモリの再配置の動作について説明する。図１２は、メモリページの更新頻度に応じた物理メモリの再配置の動作フローを示す図である。このフロー図で示す処理は、図５のＳ１１０５における処理を詳細に記したものである。
【００７１】
物理メモリの再配置処理では、物理メモリのアドレスの下位から上位に向かってページ単位で、Ｓ４０２〜Ｓ４０７に示す処理が実施される。すなわち、Ｓ４０２〜Ｓ４０７のループでは、１回のループにおいて処理対象となるのは単一のページであり、ループが進む毎に、処理対象となるページは、上位アドレスのページとなる。
【００７２】
まず、メモリ管理部５５は、物理メモリの再配置処理において、物理メモリにおける最も下位のアドレスのページを、処理対象のページとして設定する（Ｓ４０１）。
次に、メモリ管理部５５は、現在処理対象のページの更新回数が、あらかじめ設定された閾値を超えているか否かを調べる（Ｓ４０２）。すなわち、メモリ管理部５５は、「ページアドレス」９０４が現在処理対象のページのアドレスと一致するメモリ管理テーブル５６のエントリにおいて、そのエントリの「更新回数」９０６の値を参照し、参照した値が予め与えられた閾値よりも大きいか否かを判定する。
【００７３】
現在処理対象のページの更新回数が閾値を超えていない場合（Ｓ４０２でＮｏ）、処理はＳ４０６に移行する。現在処理対象のページの更新回数が閾値を超えている場合（Ｓ４０２でＹｅｓ）、メモリ管理部５５は、現在処理対象のページの内容を、更新頻度により分類されたメモリ領域のひとつ上位のメモリ領域の未使用領域に移動する（Ｓ４０３）。すなわち、現在処理対象のページが更新頻度低であるメモリ領域１に含まれている場合、メモリ管理部５５は、現在処理対象のページの内容を更新頻度中であるメモリ領域２の空きメモリに移動する。また、現在処理対象のページが更新頻度中であるメモリ領域２に含まれている場合、メモリ管理部５５は、現在処理対象のページの内容を更新頻度高であるメモリ領域３の空きメモリに移動する。
【００７４】
次に、メモリ管理部５５は、システムの物理・仮想アドレスのマップ関係を移動先の物理アドレスに基いて更新する（Ｓ４０４）。すなわち、メモリ管理部５５は、システムが保持するページテーブル５２において、現在処理対象のページの仮想アドレスに対応する物理アドレスを、移動前の物理アドレスから、移動後の物理アドレスに変更する。
【００７５】
次に、メモリ管理部５５は、メモリ管理テーブル５６の現在処理対象のページのアドレスの「更新回数」９０６をクリアする（Ｓ４０５）。すなわち、メモリ管理部５５は、「ページアドレス」９０４が現在処理対象のページのアドレスと一致するメモリ管理テーブル５６のエントリにおいて、そのエントリの「更新回数」９０６の値を「０」に変更する。
【００７６】
次に、メモリ管理部５５は、現在処理対象のページが更新頻度高の領域であるメモリ領域３に含まれているか否かを判定する（Ｓ４０６）。更新頻度高の領域でない場合（Ｓ４０６でＮｏ）、処理対象のページを、現在処理対象のページに対してアドレスが１つ上位のページとする（Ｓ４０７）。そして、処理はＳ４０２に戻る。
【００７７】
更新頻度高の領域である場合（Ｓ４０６でＹｅｓ）、次のメモリ再配置条件まで待機する（Ｓ４０８）。Ｓ４０８におけるメモリ再配置条件は、例えば、所定時間の経過等が挙げられる。具体的には、例えば、Ｓ４０８で待機を開始してから、予め設定された一定時間（一分間等）が経過することが条件として考えられる。
メモリ再配置条件が満たされると、処理はＳ４０１に戻る。
【００７８】
尚、Ｓ４０２において、現在処理対象のページの更新回数が閾値を超えていない場合に（Ｓ４０２でＮｏ）、処理がＳ４０５に遷移する動作としてもよい。また、図１２の処理と同様に、メモリ管理部５５は、更新頻度が所定の閾値（Ｓ４０２における閾値とは異なる閾値）よりも低いページについて、更新頻度により分類されたメモリ領域のひとつ下位のメモリ領域の未使用領域に移動する処理をしてもよい。
【００７９】
次に、サーバに重大なエラーが発生してから、ＯＳ起動完了までのシステムの処理フローの詳細について説明する。システム制御部５４は、エラー発生時の未ダンプ領域のメモリ内容を保持したまま、ダンプ取得済みのメモリ領域（メモリ領域１）のみを使用してシステムを再起動する。ここで、システム制御部５４は、メモリ領域がダンプ取得済みか否かを、メモリ管理テーブル５６を用いて判定する。メモリ管理テーブル５６の格納に使用するメモリ領域は、必ずメモリ内容を保持したままの状態で、再起動後も引き継がれる。ここで、メモリ管理テーブル５６用の記憶域を物理メモリとは別装置で実装する場合は、この限りではない。
【００８０】
図１３は、サーバに重大なエラーが発生してから、ＯＳ起動完了までのシステムの処理フローを示す図である。このフロー図で示す処理は、図６のＳ１２０１からＳ１２１０における処理の詳細を記したものである。
【００８１】
システムに重大なエラーが発生し、システムクラッシュが発生すると（Ｓ５０１）、システム制御部５４は、メモリ管理テーブル５６の「シャットダウンステータス」９０３の値を「０」に変更する。次に、システム制御部５４は、メモリ管理テーブル５６の最も下位のアドレスから更新頻度高の領域の直前のアドレスまで、ダンプ出力済みであるページ数を調べる（Ｓ５０２）。具体的には、システム制御部５４は、メモリ管理テーブル５６の最も下位のアドレスから更新頻度高の領域の直前までのページアドレスをもつエントリの「ダンプステータス」９０５を参照し、「ダンプステータス」９０５の値が「１」であるページの数を算出する。
【００８２】
次に、システム制御部５４は、Ｓ５０２で算出したダンプ取得済みページの合計サイズから次回の起動に必要な容量が確保されているかを判定する（Ｓ５０３）。すなわち、システム制御部５４は、Ｓ５０２で算出したダンプ取得済みページの合計サイズが次回の起動に必要な容量を上回っているかを判定する。尚、次回の起動に必要な容量が確保されていないと判定された場合には、起動に必要な容量が確保されるまで、ダンプ取得部５３によりダンプ処理が実行される。
【００８３】
次に、システム制御部５４はＯＳの再起動処理を開始する（Ｓ５０４）。ＯＳの起動が開始されると（Ｓ５０５）、システム制御部５４はメモリ管理テーブル５６を読み込む（Ｓ５０６）。そして、システム制御部５４は、メモリ管理テーブル５６を参照して、前回のシステム停止はクラッシュであったか否かを判定する（Ｓ５０７）。具体的には、システム制御部５４は、メモリ管理テーブル５６の「シャットダウンステータス」９０３の値が「０」であれば、前回のシステム停止はクラッシュであると判定し、「１」であれば、前回のシステム停止はクラッシュではないと判定する。前回のシステム停止がクラッシュであったと判定した場合（Ｓ５０７でＹｅｓ）、システム制御部５４は、ダンプ取得済みのメモリ領域を使用してＯＳを起動する（Ｓ５０８）。具体的には、システム制御部５４は、まずメモリ管理テーブル５６が保存されているメモリ領域を除く、ダンプ取得済みであるページに対して、そのメモリ領域を開放する。すなわち、システム制御部５４はダンプ取得済みのページを使用可能メモリとして、ＯＳのメモリ管理機構５１に通知する。そして、システム制御部５４は、開放されたメモリ領域のみを用いてＯＳの起動処理を行う。その後ＯＳ起動が完了する（Ｓ５１０）。
【００８４】
Ｓ５０７において、前回のシステム停止がクラッシュではなかったと判定した場合（Ｓ５０７でＹｅｓ）、システム制御部５４は通常のシステム起動方法でＯＳを起動し（Ｓ５０９）、その後ＯＳの起動が完了する（Ｓ５１０）。
【００８５】
次に、ＯＳ起動後に、ダンプ未取得のメモリページのダンプ出力を多重処理で実行する動作について説明する。図１４は、ＯＳ起動後にダンプ未取得のメモリページのダンプ出力を多重処理で実行する際のシステムの動作フローを示す図である。
【００８６】
ＯＳ起動完了後（Ｓ６０１）、システム制御部５４は、メモリ管理テーブル５６の「シャットダウンステータス」９０３を参照して、前回のシステム停止はクラッシュであったか否かを判定する。（Ｓ６０２）。前回のシステム停止はクラッシュであった場合（Ｓ６０２でＹｅｓ）、システム制御部５４は、ダンプ処理スレッドを複数生成する（Ｓ６０３）。Ｓ６０３で生成された複数のダンプ処理スレッドは、Ｓ６０５〜Ｓ６０７の処理を並列に実行する。Ｓ６０４では、ダンプ処理スレッド１、ダンプ処理スレッド２、ダンプ処理スレッド３が生成されている。以下の説明では、複数のダンプ処理スレッドをまとめて、単にダンプ処理スレッドと記す。ダンプ処理スレッドはダンプ取得部５３を構成するスレッドである。
【００８７】
ダンプ処理スレッドは、メモリ管理テーブル５６を参照してダンプ未取得であるページを判定し、ダンプ未取得であると判定したページの内容をダンプファイル５７に保存する。具体的には、ダンプ処理スレッドは、メモリ管理テーブル５６の全てのエントリの「ダンプステータス」９０５を参照し、その値が「０」であるページのダンプを取得する。そして、ダンプ処理スレッドは、ダンプを取得したことをメモリ管理テーブル５６に登録する。すなわち、ダンプを取得したページに対応する「ダンプステータス」９０５の値を「１」に変更する。
【００８８】
次に、ダンプ処理スレッドは、Ｓ６０５でダンプを取得したメモリページを開放する。すなわち、ダンプを取得したメモリページを使用可能メモリとしてＯＳのメモリ管理機構５１に通知する（Ｓ６０６）。
【００８９】
すべてのダンプ出力処理が終了したら、すなわち、メモリ管理テーブル５６の「ダンプステータス」９０５の値が「０」であるエントリがなくなったら、ダンプ処理スレッドは、すべてのサービスが起動完了するまで、待機する（Ｓ６０７）。
すべてのサービスが起動完了したら、ＯＳは、システム起動完了をシステムに通知する（Ｓ６０９）。
【００９０】
Ｓ６０２において、前回のシステム停止はクラッシュではなかったと判定された場合（Ｓ６０２でＮｏ）、システムの起動は通常の動作となるので、すべてのサービスが起動完了するまで待機する（Ｓ６０８）。そして、全てのサービスが起動完了したら、ＯＳは、システム起動完了をシステムに通知する（Ｓ６０９）。
【００９１】
尚、ダンプ取得部５３、メモリ管理部５５の機能をＯＳにて実装することにより、ＯＳのダンプ取得機能を強化し、サービス再開までの時間が短縮される。
【００９２】
図１５は、本実施形態における情報処理装置１のハードウェア構成の一例を示す図である。
情報処理装置１は、メモリ２１、ＣＰＵ２２、補助記憶装置２３、及び入力装置２４を含む。また、メモリ２１、ＣＰＵ２２、補助記憶装置２３、及び入力装置２４は、例えば、バス２５を介して互いに接続される。ＣＰＵ２２の一例は、プロセッサである。
【００９３】
ＣＰＵ２２は、メモリ２１に記憶された各種プログラムを実行することによって、各種業務を処理する。具体的には、ＣＰＵ２２は、第１の保存処理部５、第２の保存処理部６、検知部７、制御部８、管理部９、配置部１１の機能を実行する。すなわち、メモリ管理部５５、システム制御部５４、ダンプ取得部５３などの機能を実行する。
【００９４】
メモリ２１は、ＣＰＵ２２によって実行されるプログラム及び当該プログラムによって使用されるデータが記憶される。具体的には、メモリ１１上では、オペレーティングシステム５８、ダンプ取得部５３、システム制御部５４、及びメモリ管理部５５などのプログラムが実行される。また、メモリ２１は、第１の記憶部２、保存完了情報格納部４、更新頻度情報格納部１０の一例として挙げられる。
【００９５】
補助記憶装置２３には、メモリ２１の内容を保存したダンプファイル５７が格納される。補助記憶装置２３は、第２の記憶部の一例として挙げられる。
また、メモリ管理テーブル５６は、メモリ２１に記憶されてもよいし、情報処理装置１内の所定の領域に記憶されてもよい。
【００９６】
入力装置２４は、情報処理装置１の使用者によりダンプ取得のタイミング、物理メモリの更新頻度毎の固定の領域サイズ、または更新頻度の閾値が設定される際に使用される。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００９７】
１      情報処理装置
２      第１の記憶部
３      第２の記憶部
４      保存完了情報格納部
５      第１の保存処理部
６      第２の保存処理部
７      検知部
８      制御部
９      管理部
１０      更新頻度情報格納部
１１      配置部
【図１】
2014006694.tif 000003
【図２】
2014006694.tif 000004
【図３】
2014006694.tif 000005
【図４】
2014006694.tif 000006
【図５】
2014006694.tif 000007
【図６】
2014006694.tif 000008
【図７】
2014006694.tif 000009
【図８】
2014006694.tif 000010
【図９】
2014006694.tif 000011
【図１０】
2014006694.tif 000012
【図１１】
2014006694.tif 000013
【図１２】
2014006694.tif 000014
【図１３】
2014006694.tif 000015
【図１４】
2014006694.tif 000016
【図１５】
2014006694.tif 000017
【手続補正書】
【提出日】平成27年1月7日(2015.1.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置が使用する情報を格納する第１の記憶部と、
前記第１の記憶部に格納された情報を格納する第２の記憶部と、
前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存済みである情報を判別する保存完了情報を格納する保存完了情報格納部と、
前記第１の記憶部に格納された情報を前記第２の記憶部に保存した場合、前記保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納する第１の保存処理部と、
前記情報処理装置の障害を検知する検知部と、
前記検知部が前記障害を検知した場合、前記保存完了情報に基いて、前記第１の記憶部における前記保存済みの情報が格納された領域を用いて、前記情報処理装置の再起動処理を行う制御部と、
前記検知部が前記障害を検知した場合、前記保存完了情報に基いて、前記第１の記憶部に記憶された情報のうち、前記第２の記憶部に保存されていない情報を判別し、前記判別した情報を前記第２の記憶部に保存する第２の保存処理部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、さらに、
前記第１の記憶部に格納された情報が更新された場合、該更新された情報に対応する前記保存完了情報を前記保存完了情報格納部に格納する管理部
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の保存処理部は、所定の時間間隔で、前記保存完了情報に基いて、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存されていない情報を前記第２の記憶部に保存する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、さらに、
前記第１の記憶部が有する記憶領域毎の更新頻度を示す更新頻度情報を格納する更新頻度情報格納部と、
前記第１の記憶部に格納された情報が更新された場合、該更新された情報が格納された前記記憶領域に対応する前記更新頻度情報を更新する更新頻度情報管理部と、
を備え、
前記第１の保存処理部は、前記更新頻度情報の値が所定の閾値以下の前記記憶領域に格納された情報を前記第２の記憶部に保存し、前記保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納する
ことを特徴とする請求項１〜３のうちいずれか１項に記載の情報処理装置。
【請求項５】
前記情報処理装置は、さらに、
前記更新頻度情報に応じて、前記記憶領域に格納された情報を、前記更新頻度情報に対応する前記第１の記憶部の記憶領域に移動させる配置部と、
を備えることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
情報処理装置が使用する情報を格納する第１の記憶部に格納された情報を、前記第１の記憶部に格納された情報を格納する第２の記憶部に保存した場合、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存済みである情報を判別する保存完了情報を格納する保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納し、
前記情報処理装置の障害を検知し、
前記障害を検知した場合、前記保存完了情報に基いて、前記第１の記憶部における前記保存済みの情報が格納された領域を用いて、前記情報処理装置の再起動処理を行い、
前記保存完了情報に基いて、前記第１の記憶部に記憶された情報のうち、前記第２の記憶部に保存されていない情報を判別し、前記判別した情報を前記第２の記憶部に保存する
処理をコンピュータに実行させることを特徴とする情報保存処理プログラム。
【請求項７】
前記第１の記憶部に格納された情報が更新された場合、該更新された情報に対応する前記保存完了情報を前記保存完了情報格納部に格納する
処理をコンピュータに実行させることを特徴とする請求項６に記載の情報保存処理プログラム。
【請求項８】
所定の時間間隔で、前記保存完了情報に基いて、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存されていない情報を前記第２の記憶部に保存する
処理をコンピュータに実行させることを特徴とする請求項７に記載の情報保存処理プログラム。
【請求項９】
前記第１の記憶部に格納された情報が更新された場合、前記第１の記憶部が有する記憶領域毎の更新頻度を示す更新頻度情報のうち、前記更新された情報が格納された前記記憶領域に対応する前記更新頻度情報を更新し、
前記更新頻度情報の値が所定の閾値以下の前記記憶領域に格納された情報を、前記第２の記憶部に保存し、前記保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納する
処理をコンピュータに実行させることを特徴とする請求項６〜８のうちいずれか１項に記載の情報保存処理プログラム。
【請求項１０】
情報処理装置が使用する情報を格納する第１の記憶部に格納された情報を、前記第１の記憶部に格納された情報を格納する第２の記憶部に保存した場合、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存済みである情報を判別する保存完了情報を格納する保存完了情報格納部に、保存した該情報に対応する前記保存完了情報を格納し、
前記情報処理装置の障害を検知し、
前記障害を検知した場合、前記保存完了情報に基いて、前記第１の記憶部における前記保存済みの情報が格納された領域を用いて、前記情報処理装置の再起動処理を行い、
前記保存完了情報に基いて、前記第１の記憶部に記憶された情報のうち、前記第２の記憶部に保存されていない情報を判別し、
前記判別した情報を前記第２の記憶部に保存する
処理をコンピュータが実行することを特徴とする情報保存処理方法。
【請求項１１】
前記第１の記憶部に格納された情報が更新された場合、該更新された情報に対応する前記保存完了情報を前記保存完了情報格納部に格納する
処理をコンピュータが実行することを特徴とする請求項１０に記載の情報保存処理方法。
【請求項１２】
所定の時間間隔で、前記保存完了情報に基いて、前記第１の記憶部に格納された情報のうち、前記第２の記憶部に保存されていない情報を前記第２の記憶部に保存する
処理をコンピュータが実行することを特徴とする請求項１１に記載の情報保存処理方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
一態様の情報処理装置は、第１の記憶部、第２の記憶部、保存完了情報格納部、第１の保存処理部、検知部、制御部、及び、第２の保存処理部を含む。第１の記憶部は、情報処理装置が使用する情報を格納する。第２の記憶部は、第１の記憶部に格納された情報を格納する。保存完了情報格納部は、第１の記憶部に格納された情報のうち第２の記憶部に保存済みである情報を判別する保存完了情報を格納する。第１の保存処理部は、第１の記憶部に格納された情報を第２の記憶部に保存した場合、保存完了情報格納部に、保存した情報に対応する保存完了情報を格納する。検知部は、情報処理装置の障害を検知する。制御部は、検知部が障害を検知した場合、保存完了情報に基いて、第１の記憶部における保存済みの情報が格納された領域を用いて、情報処理装置の再起動処理を行う。第２の保存処理部は、検知部が障害を検知した場合、保存完了情報に基いて、第１の記憶部に記憶された情報のうち、第２の記憶部に保存されていない情報を判別し、判別した情報を第２の記憶部に保存する。
【国際調査報告】
2014006694.tif 000018
2014006694.tif 000019
2014006694.tif 000020
2014006694.tif 000021