(57)【要約】【課題】記憶領域の冗長化およびシステムの安定化の両立を図ることが可能な情報処理装置、メモリ管理方法、およびメモリ管理プログラムを提供する。【解決手段】情報処理装置２０１は、データを記憶するための記憶装置１０３を用いる。情報処理装置２０１は、記憶装置１０３よりも高速にアクセス可能なメモリ１０２と、メモリ１０２において複数の記憶領域を論理的に設け、記憶領域に他の記憶領域を冗長記憶領域として割り当て、冗長記憶領域にデータのコピーを格納することが可能なメモリ管理部１５１とを備える。メモリ管理部１５１は、メモリ１０２の使用率が所定の閾値を超えた場合には、冗長記憶領域の割り当てられた１または複数の記憶領域について、メモリ１０２の使用率が所定の閾値以下になるまで、各冗長記憶領域を段階的に未使用領域とする。【選択図】図２
2012190064.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するための記憶装置を用いる情報処理装置であって、
前記記憶装置よりも高速にアクセス可能なメモリと、
前記メモリにおいて複数の記憶領域を論理的に設け、前記記憶領域に他の前記記憶領域を冗長記憶領域として割り当て、前記冗長記憶領域にデータのコピーを格納することが可能なメモリ管理部とを備え、
前記メモリ管理部は、前記メモリの使用率が所定の閾値を超えた場合には、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域について、前記メモリの使用率が前記所定の閾値以下になるまで、各前記冗長記憶領域を段階的に未使用領域とする、情報処理装置。
【請求項２】
前記メモリ管理部は、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域を、前記記憶領域に異常が発生した場合における影響度に応じて複数のレベルに分類し、前記レベルに従って未使用領域とする前記冗長記憶領域を選択する、請求項１に記載の情報処理装置。
【請求項３】
前記複数のレベルは、
未使用状態の記憶領域、または記憶領域のデータのコピーが前記記憶装置に格納されている記憶領域を示す第１レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが可能なプロセスが使用する記憶領域を示す第２レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが不可能なプロセスが使用する記憶領域を示す第３レベルと、
オペレーティングシステムが使用中の記憶領域を示す第４レベルとを含む、請求項２に記載の情報処理装置。
【請求項４】
前記メモリ管理部は、前記メモリにおける複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定する、請求項１から３のいずれかに記載の情報処理装置。
【請求項５】
前記情報処理装置は、さらに、
アプリケーション単位または仮想アドレス空間の範囲の単位で、前記記憶領域に冗長記憶領域を割り当てるか否かの指示をユーザから受け付けるための冗長化有無受け付け部を備える、請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理方法であって、
前記メモリにおいて複数の記憶領域を論理的に設けるステップと、
前記記憶領域に他の前記記憶領域を冗長記憶領域として割り当て、前記冗長記憶領域にデータのコピーを格納するステップと、
前記メモリの使用率が所定の閾値を超えた場合には、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域について、前記メモリの使用率が前記所定の閾値以下になるまで、各前記冗長記憶領域を段階的に未使用領域とするステップとを含む、メモリ管理方法。
【請求項７】
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理プログラムであって、コンピュータに、
前記メモリにおいて複数の記憶領域を論理的に設けるステップと、
前記記憶領域に他の前記記憶領域を冗長記憶領域として割り当て、前記冗長記憶領域にデータのコピーを格納するステップと、
前記メモリの使用率が所定の閾値を超えた場合には、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域について、前記メモリの使用率が前記所定の閾値以下になるまで、各前記冗長記憶領域を段階的に未使用領域とするステップとを実行させる、メモリ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリ管理方法、およびメモリ管理プログラムに関し、特に、記憶領域の冗長化を行なう情報処理装置、メモリ管理方法、およびメモリ管理プログラムに関する。
【背景技術】
【０００２】
ミッションクリティカルなサーバシステムでは、故障によってサービスが停止する時間を減らすために様々な技術が用いられている。特に、本番系が故障したときに待機系に切り替える二重化および冗長化の技術は、サーバ、ディスクおよびメモリなど、様々な部分で用いられている。しかしながら、従来の冗長化では本番環境と同一の待機系を用意しなければならないため、導入コストおよび保守コストが高くなるという難点があった。
【０００３】
このような問題を解決するために、たとえば、特許文献１（特開平０５−０８８９８９号公報）には、以下のような技術が開示されている。すなわち、メモリ部に格納するプログラムまたはデータの重要度に応じて、メモリ部をソフトウェアによりブロック単位で二重化構成とする。より詳細には、メモリ装置は、内部が複数のブロックに分かれかつこれらの複数のブロックの中の２つのブロックを二重化メモリとして機能させることが可能に構成したメモリ部と、各ブロックを二重化構成とするかしないかの情報が格納されたブロック・ステータスレジスタと、このレジスタに格納されたステータス情報が二重化構成を指示する場合、ＣＰＵ（Central Processing Unit）部からのアドレスを変換してメモリ部に与えるアドレス変換手段と、レジスタに格納された情報が二重化構成を指示する場合、対応するブロックを二重化メモリとして機能するように制御する二重化メモリ制御部とを備える。
【０００４】
また、特許文献２（特開平０７−２５３９３５号公報）には、以下のような技術が開示されている。すなわち、ディスクキャッシュメモリおよびディスクを備えたコンピュータにおいて、上記ディスクキャッシュメモリを不揮発性メモリで構成し、上記コンピュータ本体の起動指令の入力に対応して上記ディスクキャッシュメモリの内容を上記ディスクに書き込む。
【０００５】
一方、メモリの高可用性（availability）機能としては、特許文献３（特開２００８−１３４８０９号公報）および特許文献４（特開２００６−１３４２４１号公報）に記載されているようなメモリミラーリングに加えて、エラー発生時にエラーを閉じこめることによりシステムを安全に継続できる技術が最近実現されつつある。ここで、エラーの閉じ込め機能とは、エラーが発生したメモリ位置に印をつけて、エラーの発生後にそのデータを参照しないようにすることにより、エラーを無害化する機能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０５−０８８９８９号公報
【特許文献２】特開平０７−２５３９３５号公報
【特許文献３】特開２００８−１３４８０９号公報
【特許文献４】特開２００６−１３４２４１号公報
【特許文献５】特開２００９−１９９４７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、一般に既存のＯＳが提供するメモリ管理機構は、様々なワークロードにおけるメモリ割り当ての要求に柔軟に対処するために、高度にチューニングされている。
【０００８】
このため、記憶領域の冗長化を行なうと、このような柔軟性を維持することができなくなる場合がある。たとえば、大きなサイズの記憶領域を動的に割り当てる際に、物理メモリのサイズを超えたサイズのメモリを割り当てようとしたり、メモリの使用状況が予測不可能になったりする可能性がある。
【０００９】
このような問題を解決するために、たとえば、特許文献５（特開２００９−１９９４７８号公報）には、以下のような技術が開示されている。すなわち、ＯＳは、現在使用しているメモリ使用率が、計算機に格納してあるメモリ使用率の閾値を超えたことを検出したとき、Ｆ／Ｗ（ファームウェア）サービスルーチンコールを用いて、メモリ構成変更指示をＦ／Ｗに通報する。Ｆ／Ｗは、メモリ構成変更指示をＯＳから受けると、計算機に格納してある管理情報にアクセスし、自動メモリミラーリング制御機能の情報を受信する。自動メモリミラーリング制御機能が無効であるとき、Ｆ／Ｗは何も行なわず、ＯＳに正常値を返す。自動メモリミラーリング制御機能の設定が有効の場合、Ｆ／Ｗは、メモリ構成がミラーリング状態であった場合には、メモリミラーリングを解除する領域のチェックを行なう。そして、ミッションクリティカルな用途で使用されているメモリ領域ならば、ミラーリングを解除しない。
【００１０】
このような特許文献５に記載の技術を超えて、記憶領域の冗長化およびシステムの安定化の両立を図る技術が望まれる。
【００１１】
この発明は、上述の課題を解決するためになされたもので、その目的は、記憶領域の冗長化およびシステムの安定化の両立を図ることが可能な情報処理装置、メモリ管理方法、およびメモリ管理プログラムを提供することである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、この発明のある局面に係わる情報処理装置は、データを記憶するための記憶装置を用いる情報処理装置であって、上記記憶装置よりも高速にアクセス可能なメモリと、上記メモリにおいて複数の記憶領域を論理的に設け、上記記憶領域に他の上記記憶領域を冗長記憶領域として割り当て、上記冗長記憶領域にデータのコピーを格納することが可能なメモリ管理部とを備え、上記メモリ管理部は、上記メモリの使用率が所定の閾値を超えた場合には、上記冗長記憶領域の割り当てられた１または複数の上記記憶領域について、上記メモリの使用率が上記所定の閾値以下になるまで、各上記冗長記憶領域を段階的に未使用領域とする。
【００１３】
上記課題を解決するために、この発明のある局面に係わるメモリ管理方法は、データを記憶するための記憶装置を用い、上記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理方法であって、上記メモリにおいて複数の記憶領域を論理的に設けるステップと、上記記憶領域に他の上記記憶領域を冗長記憶領域として割り当て、上記冗長記憶領域にデータのコピーを格納するステップと、上記メモリの使用率が所定の閾値を超えた場合には、上記冗長記憶領域の割り当てられた１または複数の上記記憶領域について、上記メモリの使用率が上記所定の閾値以下になるまで、各上記冗長記憶領域を段階的に未使用領域とするステップとを含む。
【００１４】
上記課題を解決するために、この発明のある局面に係わるメモリ管理プログラムは、データを記憶するための記憶装置を用い、上記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理プログラムであって、コンピュータに、上記メモリにおいて複数の記憶領域を論理的に設けるステップと、上記記憶領域に他の上記記憶領域を冗長記憶領域として割り当て、上記冗長記憶領域にデータのコピーを格納するステップと、上記メモリの使用率が所定の閾値を超えた場合には、上記冗長記憶領域の割り当てられた１または複数の上記記憶領域について、上記メモリの使用率が上記所定の閾値以下になるまで、各上記冗長記憶領域を段階的に未使用領域とするステップとを実行させる。
【発明の効果】
【００１５】
本発明によれば、記憶領域の冗長化およびシステムの安定化の両立を図ることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態に係る情報処理装置の概略構成図である。
【図２】本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。
【図３】フラグとページ状態の関係を示す図である。
【図４】図３に示す４種類のページ状態間の遷移を示す図である。
【図５】本発明の実施の形態に係る情報処理装置がメモリ管理処理を行なう際の動作手順を示すフローチャートである。
【図６】本発明の実施の形態に係る情報処理装置が冗長化開始処理を行なう際の動作手順を示すフローチャートである。
【図７】本発明の実施の形態に係る情報処理装置が冗長化終了処理を行なう際の動作手順を示すフローチャートである。
【図８】本発明の実施の形態に係る情報処理装置がデータ復旧処理を行なう際の動作手順を示すフローチャートである。
【図９】本発明の実施の形態に係る情報処理装置がメモリ管理処理を行なう際の動作手順の他の例を示すフローチャートである。
【図１０】本発明の実施の形態に係る情報処理装置が冗長化解除処理を行なう際の動作手順を定めたフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
［装置構成］
【００１８】
本発明の実施の形態に係る情報処理装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、あらかじめインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスク（Flexible Disk）およびＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。このような汎用的なコンピュータを利用する場合には、本発明の実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本発明の実施の形態に係るプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および／またはタイミングで呼出して処理を実行するものであってもよい。すなわち、本発明の実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行される場合もある。したがって、本発明の実施の形態に係るプログラムとしては、上記のようなモジュールを含まない形態であってもよい。
【００１９】
さらに、本発明の実施の形態に係るプログラムは、ＯＳ等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【００２０】
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００２１】
図１は、本発明の実施の形態に係る情報処理装置の概略構成図である。図１を参照して、情報処理装置２０１は、携帯情報端末、パーソナルコンピュータおよびサーバ等の情報処理装置であり、演算処理部であるＣＰＵ（Central Processing Unit）１０１と、メインメモリ１０２およびハードディスク１０３と、入力インタフェース１０４と、表示コントローラ１０５と、データリーダ／ライタ１０６と、通信インタフェース１０７とを備える。これらの各部は、バス１２１を介して互いにデータ通信可能に接続される。
【００２２】
ＣＰＵ１０１は、ハードディスク１０３に格納されたプログラム（コード）をメインメモリ１０２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１０２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１０３から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ハードディスク１０３は不揮発性の磁気記憶装置であり、ＣＰＵ１０１で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク１０３にインストールされるプログラムは、後述するように、記録媒体１１１に格納された状態で流通する。なお、ハードディスク１０３に加えて、あるいはハードディスク１０３に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００２３】
入力インタフェース１０４は、ＣＰＵ１０１とキーボード１０８、マウス１０９および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インタフェース１０４は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受け付ける。
【００２４】
表示コントローラ１０５は、表示部の典型例であるディスプレイ１１０と接続され、ディスプレイ１１０での表示を制御する。すなわち、表示コントローラ１０５は、ＣＰＵ１０１による画像処理の結果などをユーザに対して表示する。ディスプレイ１１０は、たとえばＬＣＤ（Liquid Crystal Display）またはＣＲＴ（Cathode Ray Tube）である。
【００２５】
データリーダ／ライタ１０６は、ＣＰＵ１０１と記録媒体１１１の間のデータ伝送を仲介する。すなわち、記録媒体１１１は、情報処理装置２０１で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１０６は、この記録媒体１１１からプログラムを読み出す。また、データリーダ／ライタ１０６は、ＣＰＵ１０１の内部指令に応答して、情報処理装置２０１における処理結果などを記録媒体１１１へ書き込む。なお、記録媒体１１１は、たとえば、ＣＦ（Compact Flash）およびＳＤ（Secure Digital）などの汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体、またはＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体である。
【００２６】
通信インタフェース１０７は、ＣＰＵ１０１とパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インタフェース１０７は、典型的には、イーサネット（登録商標）またはＵＳＢ（Universal Serial Bus）の通信機能を有する。なお、記録媒体１１１に格納されたプログラムを情報処理装置２０１にインストールする形態に代えて、通信インタフェース１０７を介して配信サーバなどからダウンロードしたプログラムを情報処理装置２０１にインストールしてもよい。
【００２７】
また、情報処理装置２０１には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００２８】
［制御構造］
次に、情報処理装置２０１における各種機能を提供するための制御構造について説明する。
【００２９】
図２は、本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。
【００３０】
図２に示す情報処理装置２０１の各ブロックは、ハードディスク１０３に格納されたプログラム（コード）などをメインメモリ１０２に展開して、ＣＰＵ１０１に実行させることで提供される。なお、図２に示すモジュールの一部もしくは全部がハードウェアに実装されているファームウェアによって提供される場合もある。あるいは、図２に示す制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現してもよい。
【００３１】
図２を参照して、情報処理装置２０１は、その制御構造として、メモリ管理部１５１と、冗長化有無受付部１５４とを備える。メモリ管理部１５１は、キャッシュ領域管理部１５２と、冗長領域管理部１５３とを含む。この制御構造は、たとえばＯＳの機能の一部として提供される。メモリ管理部１５１は、メインメモリ１０２を管理する。
【００３２】
より詳細には、キャッシュ領域管理部１５２は、メインメモリ１０２に対する読み書き、割り当ておよび解放等の処理を制御する。キャッシュ領域管理部１５２は、メインメモリ１０２に対する読み書き、割り当ておよび解放等の処理を契機として、冗長化の要不要を判定する処理を行ない、当該判定結果に基づいて、冗長領域管理部１５３に対して冗長化開始処理および冗長化終了処理を要求する（Ｃ１１）。
【００３３】
冗長領域管理部１５３は、キャッシュ領域管理部１５２からの要求（Ｃ１１）に応じて冗長化のオン・オフを実行し、冗長領域の情報を管理する。
【００３４】
物理メモリであるメインメモリ１０２は、ハードディスク１０３よりも高速にアクセス可能である。メインメモリ１０２は、論理的に設けられた連続する複数の記憶領域を有する。すなわち、メモリ管理部１５１は、メインメモリ１０２において複数のページを論理的に設ける。ＯＳは、この記憶領域を単位としてメインメモリ１０２を管理する。この単位をページと呼ぶ。ページ管理データ２０１〜２０６は、メインメモリ１０２上の固定サイズ領域３０１〜３０６をそれぞれ管理するためのデータである。
【００３５】
各ページ管理データは、ページが未使用（フリー）であることを示すフリーフラグと、ページがキャッシュ領域管理部１５２に繋がれていることを示すキャッシュフラグと、キャッシュがハードディスク１０３などのストレージにバックアップを持たないことを示すダーティフラグと、ページが冗長ページであることを示す冗長化フラグとを含む。
【００３６】
図３は、フラグとページ状態の関係を示す図である。図３の一番右の列は、ページを冗長化する必要の有無を示している。
【００３７】
図３を参照して、ページが未使用ページである場合には、当該ページを冗長化する必要は無く、フリーフラグがオンに設定され、キャッシュフラグは無効であり、ダーティフラグは無効である。また、ページがクリーンページ、すなわちアプリケーションが使用し、かつハードディスク１０３にデータのコピーが存在する場合には、当該ページを冗長化する必要は無く、フリーフラグがオフに設定され、キャッシュフラグがオンに設定され、ダーティフラグがオフに設定される。また、ページがダーティページ、すなわちアプリケーションが使用し、かつハードディスク１０３にデータのコピーが存在しない場合には、当該ページを冗長化する必要が有り、フリーフラグがオフに設定され、キャッシュフラグがオンに設定され、ダーティフラグがオンに設定される。また、ページがＯＳ使用ページ、すなわちＯＳが使用し、かつハードディスク１０３にデータのコピーが存在しない場合には、当該ページを冗長化する必要が有り、フリーフラグがオフに設定され、キャッシュフラグがオフに設定され、ダーティフラグは無効である。
【００３８】
本発明の実施の形態では、ダーティページおよびＯＳ使用ページに対してのみ冗長化を行ない、他のページに対しては冗長化を行なわない。その理由は、ダーティページおよびＯＳ使用ページは、他の場所にデータのコピーを持たないので、冗長化しなければエラー発生時にデータを修復することができないからである。
【００３９】
［動作］
次に、本発明の実施の形態に係る情報処理装置の動作について図面を用いて説明する。本発明の実施の形態では、情報処理装置２０１を動作させることによって、本発明の実施の形態に係るメモリ管理方法が実施される。よって、本発明の実施の形態に係るメモリ管理方法の説明は、以下の情報処理装置２０１の動作説明に代える。なお、以下の説明においては、適宜図２を参照する。
【００４０】
図４は、図３に示す４種類のページ状態間の遷移を示す図である。図４を参照して、アプリケーションがハードディスク１０３からデータファイルを読み出して未使用ページ５０１に当該データファイルを格納すると、未使用ページ５０１はクリーンページ５０２に遷移する（ＴＲ５１）。アプリケーションがクリーンページ５０２を解放すると、クリーンページ５０２は未使用ページ５０１に遷移する（ＴＲ５２）。また、アプリケーションがクリーンページ５０２にデータを書き込むと、クリーンページ５０２はダーティページ５０３に遷移する（ＴＲ５３）。アプリケーションがメインメモリ１０２とハードディスク１０３との同期をとると、ダーティページ５０３はクリーンページ５０２に遷移する（ＴＲ５４）。また、アプリケーションが未使用ページ５０１を動的ページとして割り当てると、未使用ページ５０１はダーティページ５０３に遷移する（ＴＲ５５）。アプリケーションがダーティページ５０３を解放すると、ダーティページ５０３は未使用ページ５０１に遷移する（ＴＲ５６）。また、ＯＳが未使用ページ５０１を自身の作業用として割り当てると、未使用ページ５０１はＯＳ使用ページ５０４に遷移する（ＴＲ５７）。ＯＳがＯＳ使用ページ５０４を解放すると、ＯＳ使用ページ５０４は未使用ページ５０１に遷移する（ＴＲ５８）。
【００４１】
図５は、本発明の実施の形態に係る情報処理装置がメモリ管理処理を行なう際の動作手順を示すフローチャートである。
【００４２】
図５を参照して、メモリ管理部１５１は、ページ状態すなわちページの使用状態の遷移が指示されるまで待機し（Ｓ１０でＮＯ）、使用状態の遷移が指示されると（Ｓ１０でＹＥＳ）、当該遷移が冗長化の不要な使用状態から冗長化の必要な使用状態への遷移である場合には（Ｓ１２でＹＥＳ）、冗長化開始処理を行ない（Ｓ１４）、その後、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００４３】
また、メモリ管理部１５１は、当該遷移が冗長化の必要な使用状態から冗長化の不要な使用状態への遷移である場合には（Ｓ１２でＮＯ、Ｓ１６でＹＥＳ）、冗長化終了処理を行ない（Ｓ１８）、その後、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００４４】
また、メモリ管理部１５１は、当該ページの冗長化の必要性が変わらない場合には（Ｓ１２でＮＯ、Ｓ１６でＮＯ）、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００４５】
具体的には、使用状態の遷移が指示されたページ（以下、対象ページと称する。）が、冗長化が不要な未使用ページ５０１またはクリーンページ５０２から、冗長化が必要なダーティページ５０３またはＯＳ使用ページ５０４へ遷移するとき（ＴＲ５３、ＴＲ５５、ＴＲ５７）、キャッシュ領域管理部１５２は、冗長領域管理部１５３へ冗長化開始指示を送ることにより、冗長化開始処理を行なう。冗長領域管理部１５３は、キャッシュ領域管理部１５２から冗長化開始指示を受けて、冗長化開始指示の示す対象ページを冗長化する。
【００４６】
一方、対象ページが冗長化の必要なページ状態から不要なページ状態へ遷移するとき（ＴＲ５４、ＴＲ５６、ＴＲ５８）、キャッシュ領域管理部１５２は、冗長領域管理部１５３へ冗長化終了指示を送ることにより、冗長化終了処理を行なう。冗長領域管理部１５３は、キャッシュ領域管理部１５２から冗長化終了指示を受けて、冗長化終了指示の示す対象ページを非冗長化する。
【００４７】
次に、本発明の実施の形態に係る情報処理装置の冗長化開始処理および冗長化終了処理について説明する。ここでは、図２に示す一例を参照しながら説明する。
【００４８】
図６は、本発明の実施の形態に係る情報処理装置が冗長化開始処理を行なう際の動作手順を示すフローチャートである。
【００４９】
図６を参照して、キャッシュ領域管理部１５２は、冗長化の不要な使用状態から必要な使用状態へ遷移するページ（固定サイズ領域）３０３，３０５を冗長領域管理部１５３に関連付ける（Ｓ６０１、図２のＣ１４，Ｃ１６）。ページ３０３，３０５を管理するためにそれぞれページ管理データ２０３，２０５が用いられる。
【００５０】
次に、キャッシュ領域管理部１５２は、ページ３０３，３０５に対してそれぞれページ３０４，３０６を冗長ページとして割り当てる（Ｓ６０２）。
【００５１】
次に、キャッシュ領域管理部１５２は、冗長ページ３０４，３０６を冗長領域管理部１５３に関連付ける（Ｓ６０３、図２のＣ１５，Ｃ１７）。冗長ページ３０４，３０６を管理するためにそれぞれページ管理データ２０４，２０６が用いられる。
【００５２】
次に、キャッシュ領域管理部１５２は、冗長領域管理部１５３に冗長化開始を要求する（Ｓ６０４）。
【００５３】
次に、冗長領域管理部１５３は、ページ管理データ２０４，２０６の冗長化フラグをオンに設定する（Ｓ６０５）。
【００５４】
次に、ＯＳまたはアプリケーションにより、ページ３０３，３０５の使用状態の遷移処理が実行される（Ｓ６０６、図４のＴＲ５３，ＴＲ５５，ＴＲ５７）。
【００５５】
図７は、本発明の実施の形態に係る情報処理装置が冗長化終了処理を行なう際の動作手順を示すフローチャートである。
【００５６】
図７を参照して、ＯＳまたはアプリケーションにより、ページ３０３，３０５を冗長化の必要な使用状態から不要な使用状態へ遷移する処理が実行される（Ｓ６１１、図４のＴＲ５４，ＴＲ５６，ＴＲ５８）。
【００５７】
次に、冗長領域管理部１５３は、ページ管理データ２０４，２０６の冗長化フラグをオフに設定する（Ｓ６１２）。
【００５８】
次に、キャッシュ領域管理部１５２は、冗長領域管理部１５３に冗長化終了を要求する（Ｓ６１３）。
【００５９】
次に、キャッシュ領域管理部１５２は、冗長ページ３０４，３０６と冗長領域管理部１５３との関連を消去する（Ｓ６１４、図２のＣ１５，Ｃ１７）。
【００６０】
次に、キャッシュ領域管理部１５２は、冗長ページ３０４，３０６を解放して未使用ページとする（Ｓ６１５）。
【００６１】
次に、キャッシュ領域管理部１５２は、ページ３０３，３０５と冗長領域管理部１５３との関連を消去する（Ｓ６１６、図２のＣ１４，Ｃ１６）。
【００６２】
ステップＳ６０１〜Ｓ６０５およびステップＳ６１２〜Ｓ６１６の処理により、効率の良い冗長化が可能となる。
【００６３】
また、上記ステップＳ６０４およびＳ６１３の処理の詳細は、メモリ二重化の実装内容に依存する。メモリ二重化の手段として、たとえば特許文献１に記載されている二重化手段を用いた場合には、ステップＳ６０４およびＳ６１３の処理は二重化のオン・オフを制御するためのステータスレジスタに値を書き込む処理に相当する。このような二重化手段により二重化をオンにした場合、ＣＰＵ１０１およびメインメモリ１０２間のデータ転送は、二重化されたページの両方に対して同期的に行なわれる。
【００６４】
要約すれば、メモリ管理部１５１は、冗長化の不要な使用状態から冗長化の必要な使用状態へ対象ページが遷移する場合には、対象ページに他のページを冗長ページとして割り当てて対象ページのデータのコピーを格納し、冗長化の必要な使用状態から冗長化の不要な使用状態へ対象ページが遷移する場合には、対象ページに対する冗長ページの割り当てを解除する。
【００６５】
また、メモリ管理部１５１は、対象ページが冗長化の不要な使用状態から冗長化の必要な使用状態へ遷移する前に対象ページに対する冗長ページの割り当てを行ない、対象ページが冗長化の必要な使用状態から冗長化の不要な使用状態へ遷移した後に対象ページに対する冗長ページの割り当ての解除を行なう。すなわち、冗長化開始処理では、ページ遷移処理（Ｓ６０６）を行なう前に冗長化のための処理（Ｓ６０１〜Ｓ６０５）を行なう。一方、冗長化終了処理では、ページ遷移処理（Ｓ６１１）の後に冗長化のための処理（Ｓ６１２〜Ｓ６１６）を行なう。このような方法により、ページ状態の遷移途中でメモリエラーが発生した場合でも、エラーからの復旧が可能となる。
【００６６】
次に、メモリエラー発生時のデータ復旧処理について説明する。
【００６７】
図８は、本発明の実施の形態に係る情報処理装置がデータ復旧処理を行なう際の動作手順を示すフローチャートである。
【００６８】
要約すれば、メモリ管理部１５１は、冗長ページが割り当てられた対象ページにおいてエラーが発生した場合には、対象ページの使用を停止して対応の冗長ページを対象ページとして新たに設定する。そして、メモリ管理部１５１は、メインメモリ１０２における複数のページのうち、エラーの発生した対象ページおよび新たに設定した対象ページ以外のページを新たに冗長ページとして割り当てる。そして、メモリ管理部１５１は、新たに割り当てられた冗長ページに、新たに設定された対象ページのデータのコピーを格納する。
【００６９】
図８を参照して、データ復旧処理は、メモリエラー発生時に情報処理装置２０１におけるハードウェアが発行するマシンチェック割り込み（Ｓ７０１）を発端として、エラーの発生したエラーページの閉じ込め処理（Ｓ７０２）を行った後に行なわれる。ここで、エラーページの閉じ込め処理とは、エラーページにハードウェアエラーが起こったことを示すフラグをオンに設定する処理である。この処理以降、当該エラーページへのアクセスは拒否される。データ復旧処理（Ｓ７０３〜Ｓ７０９）では、エラーページの種類（図３に示した４種類）に応じて、以下のように処理の分岐がなされる。
【００７０】
エラーページが未使用ページの場合には、エラーによりデータが失われないため、エラーページの閉じ込め処理を行なうだけで、安全に処理を継続することができる（Ｓ７０９）。
【００７１】
エラーページがクリーンページの場合、メインメモリ１０２において冗長化はされていないが、ハードディスク１０３等のストレージにデータのコピーが存在する。このため、メモリ管理部１５１は、ハードディスク１０３からコピーデータを読み出し、新しく割り当てたページに格納する（Ｓ７０４）。これにより、データの整合性が保たれ、安全に処理を継続することができる（Ｓ７０９）。
【００７２】
エラーページがダーティページまたはＯＳ使用ページの場合、まず、メモリ管理部１５１は、冗長領域管理部１５３に冗長ページの位置を問い合わせる（Ｓ７０５）。次に、メモリ管理部１５１は、エラーページの管理データを冗長ページの管理データにコピーする（Ｓ７０６）。さらに、ユーザ空間のアプリケーションをすべて検査し、エラーページへの参照をすべて冗長ページへの参照に切り替える（Ｓ７０７）。最後に、メモリ管理部１５１は、冗長ページに対して改めて冗長化を行ない（Ｓ７０８）、フェイルオーバー処理を完了する。これらの処理により、データの整合性を保ちつつエラーを無害化できるため、安全に処理を継続することができる（Ｓ７０９）。
【００７３】
ステップＳ７０５〜Ｓ７０８の処理により、メモリ冗長化によるデータ復旧が可能となる。
【００７４】
ここで、本発明の実施の形態に係る情報処理装置では、メモリエラー発生時にデータ修復が可能か否かに基づいて冗長化の有無を判断するＯＳのメモリ冗長化機能に加えて、以下の２つの機能Ａおよび機能Ｂが実装される。すなわち、アプリケーション単位、あるいは仮想アドレス空間の範囲単位で、ユーザからのメモリ冗長化の有無の指示を受け付ける機能Ａと、エラー発生時の影響度に基づいてページを分類し、メモリ使用率を監視して、メモリ使用率が閾値を超えた場合に、当該影響度の小さいページから段階的にメモリ冗長化を解除する機能Ｂとが実装される。
【００７５】
まず、ユーザからの冗長化有無の指示を受け付ける機能Ａについて説明する。
【００７６】
冗長化有無受付部１５４は、アプリケーション単位または仮想アドレス空間の範囲の単位で、各ページに冗長ページを割り当てるか否かの指示をユーザから受け付ける。
【００７７】
具体的な実現方法としては、たとえば、プロセスの管理データあるいは仮想アドレス空間の管理データに、冗長化の有無を指定するための冗長化有無フラグを設け、ユーザ空間から当該フラグのオン・オフを設定可能にする。
【００７８】
図９は、本発明の実施の形態に係る情報処理装置がメモリ管理処理を行なう際の動作手順の他の例を示すフローチャートである。
【００７９】
図９を参照して、メモリ管理部１５１は、ページ状態すなわちページの使用状態の遷移が指示されるまで待機し（Ｓ１０でＮＯ）、使用状態の遷移が指示されると（Ｓ１０でＹＥＳ）、当該遷移が冗長化の不要な使用状態から冗長化の必要な使用状態への遷移である場合には（Ｓ１２でＹＥＳ）、冗長化有無フラグをチェックする。
【００８０】
そして、メモリ管理部１５１は、冗長化有無フラグがオンされている場合には（Ｓ１９でＹＥＳ）、冗長化開始処理を行ない（Ｓ１４）、その後、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００８１】
一方、メモリ管理部１５１は、冗長化有無フラグがオフされている場合には（Ｓ１９でＮＯ）、冗長化開始処理を行なわず、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００８２】
また、メモリ管理部１５１は、当該遷移が冗長化の必要な使用状態から冗長化の不要な使用状態への遷移である場合には（Ｓ１２でＮＯ、Ｓ１６でＹＥＳ）、冗長化終了処理を行ない（Ｓ１８）、その後、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００８３】
また、メモリ管理部１５１は、当該ページの冗長化の必要性が変わらない場合には（Ｓ１２でＮＯ、Ｓ１６でＮＯ）、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００８４】
次に、メモリ使用率に基づく自律的な冗長化解除処理を行なう機能Ｂについて説明する。
【００８５】
メモリ管理部１５１は、メインメモリ１０２の使用率が所定の閾値を超えた場合には、冗長ページの割り当てられた１または複数のページについて、メインメモリ１０２の使用率が所定の閾値以下になるまで、各冗長ページを段階的に未使用領域とする。
【００８６】
たとえば、メモリ管理部１５１は、冗長ページの割り当てられた１または複数のページを、ページに異常が発生した場合における影響度に応じて複数のレベルに分類し、レベルに従って未使用領域とする冗長ページを選択する。
【００８７】
具体的には、キャッシュ領域管理部１５２は、メモリ使用率を管理するために、全ページ数カウンタおよび使用中ページ数カウンタを有する。
【００８８】
使用中ページ数カウンタのカウント値は、クリーンページ、ダーティページ、ＯＳ使用ページ、および冗長ページの合計を示す。また、キャッシュ領域管理ユニット１０２は、全ページ数カウンタのカウント値に対する使用中ページ数カウンタのカウント値の比率をメモリ使用率として算出する。
【００８９】
冗長領域管理部１５３は、メモリエラー発生時のインパクトすなわち影響度を各ページに付与する。この影響度は、冗長化を行なわない仮定の下でメモリエラーが発生した場合に、情報処理装置２０１の提供するシステムがメモリエラーによって受ける影響の大きさにより複数の段階に分けられる。
【００９０】
たとえば、情報処理装置２０１では、未使用状態のページ、またはページのデータのコピーがハードディスク１０３に格納されているページを示すレベル１と、アプリケーションが使用中のページであって、アプリケーションにおいてリトライが可能なプロセスが使用するページを示すレベル２と、アプリケーションが使用中のページであって、アプリケーションにおいてリトライが不可能なプロセスが使用するページを示すレベル３と、オペレーティングシステムが使用中のページを示すレベル４とが設けられる。
【００９１】
より具体的には、各レベルを以下のように定義する。
レベル０：「影響なし」
未使用ページおよびクリーンページは、冗長化を行なわなくてもメモリエラーから復旧可能である。そこで、これらのページを、メモリエラーに対して「影響なし」であると定義する。
【００９２】
レベル１：「リトライ可能」
アプリケーションの部分的な処理を担うプロセスの中には、処理が失敗してもリトライできるものがある。このようなプロセスが使用するページにおいてメモリエラーが発生した場合には、当該プロセスの親プロセスの段階から処理をリトライし、当該プロセスを再起動することにより処理を継続できる。このようなプロセスが使用するページを、メモリエラーに対して「リトライ可能」なページであると定義する。
【００９３】
レベル２：「アプリケーションダウン」
アプリケーションの中核となるプロセスが使用するページにおいてメモリエラーが発生した場合には、当該アプリケーションに関わるすべてのプロセスがエラーの影響を受ける。このため、システム全体のダウンは避けることができるものの、当該アプリケーション全体の再起動が必要である。このようなプロセスが使用するページを、メモリエラーに対して「アプリケーションダウン」なページであると定義する。
【００９４】
レベル３：「システムダウン」
ＯＳが使用するページにおいてメモリエラーが発生した場合には、システム全体がエラーの影響を受けるため、システムの再起動が必要である。このようなページを、メモリエラーに対して「システムダウン」なページであると定義する。
【００９５】
冗長領域管理部１５３は、上記４つのレベルのうち、レベル１〜レベル３に相当するページを管理するために、各レベルに対応するリトライ可能ページリスト４１１、アプリケーションダウンページリスト４１２およびシステムダウンページリスト４１３を設け、冗長化が行なわれているページを、該当するレベルのリストに繋げる。
【００９６】
図１０は、本発明の実施の形態に係る情報処理装置が冗長化解除処理を行なう際の動作手順を定めたフローチャートである。このフローチャートが示すメモリ冗長化解除ロジックは、たとえばカーネルスレッドを用いて実現することができる。
【００９７】
図１０を参照して、メモリ管理部１５１が提供するメモリ冗長化解除ロジックは、普段はスリープしており（Ｓ２１）、一定時間が経過するたびに起床して（Ｓ２２）、所定の処理（Ｓ２３〜Ｓ２７）を行ない、再びスリープ状態に戻る、というサイクルを繰り返す。
【００９８】
メモリ冗長化解除ロジックは、起床時の処理として、まず、メモリ使用率があらかじめ設定された閾値を超えるか否かをチェックする（Ｓ２３）。
【００９９】
次に、メモリ冗長化解除ロジックは、メモリ使用率が閾値を超える場合には（Ｓ２３でＹＥＳ）、リトライ可能ページリスト４１１に１つ以上のページが繋がれているか否かをチェックする（Ｓ２４）。
【０１００】
次に、メモリ冗長化解除ロジックは、リトライ可能ページリスト４１１にページが繋がれている場合には（Ｓ２４でＹＥＳ）、リトライ可能ページリスト４１１の先頭にあるページの冗長化を解除する（Ｓ２７）。
【０１０１】
一方、メモリ冗長化解除ロジックは、リトライ可能ページリスト４１１にページが繋がれていない場合には（Ｓ２４でＮＯ）、アプリケーションダウンページリスト４１２に１つ以上のページが繋がれているか否かをチェックする（Ｓ２５）。
【０１０２】
次に、メモリ冗長化解除ロジックは、アプリケーションダウンページリスト４１２にページが繋がれている場合には（Ｓ２５でＹＥＳ）、アプリケーションダウンページリスト４１２の先頭にあるページの冗長化を解除する（Ｓ２７）。
【０１０３】
一方、メモリ冗長化解除ロジックは、アプリケーションダウンページリスト４１２にページが繋がれていない場合には（Ｓ２５でＮＯ）、システムダウンページリスト４１３に１つ以上のページが繋がれているか否かをチェックする（Ｓ２６）。
【０１０４】
次に、メモリ冗長化解除ロジックは、システムダウンページリスト４１３にページが繋がれている場合には（Ｓ２６でＹＥＳ）、システムダウンページリスト４１３の先頭にあるページの冗長化を解除する（Ｓ２７）。
【０１０５】
一方、メモリ冗長化解除ロジックは、システムダウンページリスト４１３にページが繋がれていない場合には（Ｓ２６でＮＯ）、起床時の処理を終了し、スリープ状態へ戻る（Ｓ２１）。
【０１０６】
また、メモリ冗長化解除ロジックは、リトライ可能ページリスト４１１、アプリケーションダウンページリスト４１２およびシステムダウンページリスト４１３のいずれかのリストにおいてページの冗長化解除処理が行なわれた場合には（Ｓ２７）、再びメモリ使用率のチェックを行ない（Ｓ２３）、冗長化解除処理を継続する。
【０１０７】
このように、メモリ使用率が閾値を超えたときにメモリ冗長化を解除することにより、メインメモリ１０２の空き領域を確保し、メモリ枯渇を予防することができる。そして、メモリエラー発生時の影響度が小さいページから順番に冗長化を解除していくことにより、メモリエラー発生時の影響を小さく抑えるとともに、メモリ使用効率を高めることができる。
【０１０８】
ところで、記憶領域の冗長化を行なうと、メモリ管理のチューニングを壊してしまい、柔軟性を維持することができなくなる場合がある、という問題点があった。そして、特許文献５に記載の技術を超えて、記憶領域の冗長化およびシステムの安定化の両立を図る技術が望まれている。
【０１０９】
これに対して、本発明の実施の形態に係る情報処理装置２０１では、メモリ管理部１５１は、メインメモリ１０２において複数のページを論理的に設け、各ページに他のページを冗長ページとして割り当て、冗長ページにデータのコピーを格納することが可能である。そして、メモリ管理部１５１は、メインメモリ１０２の使用率が所定の閾値を超えた場合には、冗長ページの割り当てられた１または複数のページについて、メインメモリ１０２の使用率が所定の閾値以下になるまで、各冗長ページを段階的に未使用領域とする。
【０１１０】
すなわち、メモリ使用率を監視して、メモリ高負荷時に冗長記憶領域を減らすフィードバックをかけることにより、メモリ冗長化を段階的に解除し、冗長化の程度を抑える。このような構成により、記憶領域の冗長化を最大限に行ないながら、システムの安定化を図ることができる。
【０１１１】
すなわち、本発明の実施の形態に係る情報処理装置における各構成要素のうち、メインメモリ１０２およびメモリ管理部１５１からなる最小構成により、記憶領域の冗長化およびシステムの安定化の両立を図る、という本発明の目的を達成することが可能となる。
【０１１２】
また、本発明の実施の形態に係る情報処理装置では、メモリ管理部１５１は、冗長ページの割り当てられた１または複数のページを、ページに異常が発生した場合における影響度に応じて複数のレベルに分類し、各レベルに従って未使用領域とする冗長ページを選択する。
【０１１３】
すなわち、メモリ冗長化を解除する際に、記憶領域においてエラーが発生した時のインパクトが小さいものから順番に解除していき、冗長化を段階的に解除する。
【０１１４】
このように、ある記憶領域にエラーが発生したときの影響を考慮して冗長化の有無の判断を行なうことにより、メモリエラー対策のためのメモリ冗長化の範囲を適切に制限することができ、メモリの高可用性および高い使用効率を両立させることができる。
【０１１５】
また、本発明の実施の形態に係る情報処理装置では、複数のレベルは、未使用状態のページ、またはページのデータのコピーがハードディスク１０３に格納されているページを示すレベル１と、アプリケーションが使用中のページであって、アプリケーションにおいてリトライが可能なプロセスが使用するページを示すレベル２と、アプリケーションが使用中のページであって、アプリケーションにおいてリトライが不可能なプロセスが使用するページを示すレベル３と、オペレーティングシステムが使用中のページを示すレベル４とを含む。
【０１１６】
このような構成により、各記憶領域をエラー発生時の影響度に応じて適切にレベル分けし、記憶領域の適切な冗長化およびシステムのさらなる安定化を図ることができる。
【０１１７】
ところで、ＯＳ（Operating System）およびアプリケーション等のプログラムが使用する内部変数等の内部データの重要度は時々刻々と変化する場合が多い。
【０１１８】
しかしながら、特許文献１に記載の技術では、データの重要度の具体的な判定基準、すなわち冗長化の必要性を判断するための具体的な基準が与えられていないため、上記のような重要度の変化するデータについて効率の良い冗長化を実現することが困難である。
【０１１９】
また、特許文献２に記載の技術では、単にディスクキャッシュメモリの内容をディスクに格納するだけであるため、上記のような重要度の変化するデータを冗長化することには適していない。
【０１２０】
また、特許文献３および特許文献４に記載のエラーの閉じ込め機能では、エラーが発生したメモリ位置にあるデータを、ストレージから読み出すなどの方法で修復できる場合にはシステムを正常に継続できる。その一方で、当該データを修復できない場合にはシステムを正常に継続することができず、アプリケーションあるいはシステムがダウンしてしまう、という問題点があった。
【０１２１】
これに対して、本発明の実施の形態に係る情報処理装置では、メモリ管理部１５１は、メインメモリ１０２における複数のページの中で使用状態が遷移する対象ページが、ハードディスク１０３に対象ページのデータのコピーが格納される第１の使用状態へ遷移するかハードディスク１０３に対象ページのデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、対象ページに他のページを冗長ページとして割り当て、対象ページのデータのコピーを格納するか否かを決定する。
【０１２２】
このような構成により、データの重要度の具体的な判定基準、すなわち冗長化の必要性を判断するための具体的な基準に従って、ＯＳ等がプログラムの状態すなわちページの状態に応じて冗長化を行なうか否かを自律的に決定することができる。したがって、重要度の変化するデータについて効率の良い冗長化を実現することが可能となる。
【０１２３】
すなわち、本発明の実施の形態に係る情報処理装置では、メモリ上でハードウェアのエラーが発生したときに、特許文献１〜５に記載の技術等の従来の方法よりも効率良く高可用性を実現することが可能となる。すなわち、エラーにより失われたデータを修復する手段がない場合のみ、データの冗長化を行なう。これにより、従来の方法ではデータを復旧できなかった場合でも、冗長化領域へフェイルオーバーすることにより、システムを正常に継続させることができる。さらに、冗長化のために用いるメモリ領域を小さく抑えることができるため、メモリの使用効率を高めることができる。
【０１２４】
このような効果を実現するためには、メモリ上の各データについて、従来の方法でデータを修復できるか否かを判断し、修復不可能なメモリ領域のみ部分的に冗長化する必要がある。本発明の実施の形態では、一例として、ＯＳのメモリ管理機能に対して、動的に冗長化のオン・オフを切り替えるための仕組みを追加することにより、上記効果を実現する。
【０１２５】
また、本発明の実施の形態に係る情報処理装置は、メモリ冗長化の範囲を動的に変更するメモリ管理機能を実現しており、メモリ冗長化の範囲を、メモリエラーに対するデータの修復可能性に応じて動的に制御する。言い換えれば、エラー発生時のデータの修復可能性に基づいてメモリ冗長化の範囲を判断し、メモリ冗長化の範囲を動的に制御する。
【０１２６】
ここで、ウェブサーバまたはファイルサーバとの間で大きなサイズのデータをやり取りする場合には、メモリエラーに対してメモリ冗長化で対処するよりも、単にメモリエラーの発生したプロセスを再起動し、リトライすることで対処した方がよい場合がある。
【０１２７】
これに対して、本発明の実施の形態に係る情報処理装置では、冗長化有無受付部１５４は、アプリケーション単位または仮想アドレス空間の範囲の単位で、各ページに冗長ページを割り当てるか否かの指示をユーザから受け付ける。
【０１２８】
これにより、ユーザアプリケーション単位でメモリ冗長化の有無を指定することができる。すなわち、システム側で決定される条件に基づくメモリ冗長化の制御手段に加えて、ユーザのアプリケーションで決定できる条件に基づくメモリ冗長化の制御手段を提供することができるため、利用者のニーズに合ったメモリ管理を実現することができる。
【０１２９】
なお、本発明の実施の形態では、情報処理装置２０１がハードディスク１０３を備える構成であるとしたが、これに限定するものではなく、情報処理装置２０１の外部にハードディスク１０３が設けられる構成であってもよい。
【０１３０】
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１３１】
上記実施の形態の一部または全部は以下の付記のようにも記載されうるが、本発明の範囲は、以下の付記に限定されるものではない。
【０１３２】
［付記１］
データを記憶するための記憶装置を用いる情報処理装置であって、
前記記憶装置よりも高速にアクセス可能なメモリと、
前記メモリにおいて複数の記憶領域を論理的に設け、前記記憶領域に他の前記記憶領域を冗長記憶領域として割り当て、前記冗長記憶領域にデータのコピーを格納することが可能なメモリ管理部とを備え、
前記メモリ管理部は、前記メモリの使用率が所定の閾値を超えた場合には、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域について、前記メモリの使用率が前記所定の閾値以下になるまで、各前記冗長記憶領域を段階的に未使用領域とする、情報処理装置。
【０１３３】
［付記２］
前記メモリ管理部は、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域を、前記記憶領域に異常が発生した場合における影響度に応じて複数のレベルに分類し、前記レベルに従って未使用領域とする前記冗長記憶領域を選択する、付記１に記載の情報処理装置。
【０１３４】
［付記３］
前記複数のレベルは、
未使用状態の記憶領域、または記憶領域のデータのコピーが前記記憶装置に格納されている記憶領域を示す第１レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが可能なプロセスが使用する記憶領域を示す第２レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが不可能なプロセスが使用する記憶領域を示す第３レベルと、
オペレーティングシステムが使用中の記憶領域を示す第４レベルとを含む、付記２に記載の情報処理装置。
【０１３５】
［付記４］
前記メモリ管理部は、前記メモリにおける複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定する、付記１から３のいずれかに記載の情報処理装置。
【０１３６】
［付記５］
前記情報処理装置は、さらに、
アプリケーション単位または仮想アドレス空間の範囲の単位で、前記記憶領域に冗長記憶領域を割り当てるか否かの指示をユーザから受け付けるための冗長化有無受け付け部を備える、付記１から４のいずれかに記載の情報処理装置。
【０１３７】
［付記６］
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理方法であって、
前記メモリにおいて複数の記憶領域を論理的に設けるステップと、
前記記憶領域に他の前記記憶領域を冗長記憶領域として割り当て、前記冗長記憶領域にデータのコピーを格納するステップと、
前記メモリの使用率が所定の閾値を超えた場合には、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域について、前記メモリの使用率が前記所定の閾値以下になるまで、各前記冗長記憶領域を段階的に未使用領域とするステップとを含む、メモリ管理方法。
【０１３８】
［付記７］
前記冗長記憶領域を未使用領域とするステップにおいては、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域を、前記記憶領域に異常が発生した場合における影響度に応じて複数のレベルに分類し、前記レベルに従って未使用領域とする前記冗長記憶領域を選択する、付記６に記載のメモリ管理方法。
【０１３９】
［付記８］
前記複数のレベルは、
未使用状態の記憶領域、または記憶領域のデータのコピーが前記記憶装置に格納されている記憶領域を示す第１レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが可能なプロセスが使用する記憶領域を示す第２レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが不可能なプロセスが使用する記憶領域を示す第３レベルと、
オペレーティングシステムが使用中の記憶領域を示す第４レベルとを含む、付記７に記載のメモリ管理方法。
【０１４０】
［付記９］
前記メモリ管理方法は、さらに、
前記メモリにおける複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップを含む、付記６から８のいずれかに記載のメモリ管理方法。
【０１４１】
［付記１０］
前記メモリ管理方法は、さらに、
アプリケーション単位または仮想アドレス空間の範囲の単位で、前記記憶領域に冗長記憶領域を割り当てるか否かの指示をユーザから受け付けるステップを含む、付記６から９のいずれかに記載のメモリ管理方法。
【０１４２】
［付記１１］
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理プログラムであって、コンピュータに、
前記メモリにおいて複数の記憶領域を論理的に設けるステップと、
前記記憶領域に他の前記記憶領域を冗長記憶領域として割り当て、前記冗長記憶領域にデータのコピーを格納するステップと、
前記メモリの使用率が所定の閾値を超えた場合には、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域について、前記メモリの使用率が前記所定の閾値以下になるまで、各前記冗長記憶領域を段階的に未使用領域とするステップとを実行させる、メモリ管理プログラム。
【０１４３】
［付記１２］
前記冗長記憶領域を未使用領域とするステップにおいては、前記冗長記憶領域の割り当てられた１または複数の前記記憶領域を、前記記憶領域に異常が発生した場合における影響度に応じて複数のレベルに分類し、前記レベルに従って未使用領域とする前記冗長記憶領域を選択する、付記１１に記載のメモリ管理プログラム。
【０１４４】
［付記１３］
前記複数のレベルは、
未使用状態の記憶領域、または記憶領域のデータのコピーが前記記憶装置に格納されている記憶領域を示す第１レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが可能なプロセスが使用する記憶領域を示す第２レベルと、
アプリケーションが使用中の記憶領域であって、前記アプリケーションにおいてリトライが不可能なプロセスが使用する記憶領域を示す第３レベルと、
オペレーティングシステムが使用中の記憶領域を示す第４レベルとを実行させる、付記１２に記載のメモリ管理プログラム。
【０１４５】
［付記１４］
前記メモリ管理プログラムは、さらに、コンピュータに、
前記メモリにおける複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップを実行させる、付記１１から１３のいずれかに記載のメモリ管理プログラム。
【０１４６】
［付記１５］
前記メモリ管理プログラムは、さらに、コンピュータに、
アプリケーション単位または仮想アドレス空間の範囲の単位で、前記記憶領域に冗長記憶領域を割り当てるか否かの指示をユーザから受け付けるステップを実行させる、付記１１から１４のいずれかに記載のメモリ管理プログラム。
【産業上の利用可能性】
【０１４７】
本発明は、たとえばサーバシステムにおいて、記憶領域の冗長化およびシステムの安定化の両立を図ることを可能とする。したがって、本発明は、産業上の利用可能性を有している。
【符号の説明】
【０１４８】
１０１  ＣＰＵ
１０２  メインメモリ
１０３  ハードディスク
１０４  入力インタフェース
１０５  表示コントローラ
１０６  データリーダ／ライタ
１０７  通信インタフェース
１０８  キーボード
１０９  マウス
１１０  ディスプレイ
１１１  記録媒体
１２１  バス
１５１  メモリ管理部
１５２  キャッシュ領域管理部
１５３  冗長領域管理部
１５４  冗長化有無受付部
２０１  情報処理装置
【図１】
2012190064.tif 000003
【図２】
2012190064.tif 000004
【図３】
2012190064.tif 000005
【図４】
2012190064.tif 000006
【図５】
2012190064.tif 000007
【図６】
2012190064.tif 000008
【図７】
2012190064.tif 000009
【図８】
2012190064.tif 000010
【図９】
2012190064.tif 000011
【図１０】
2012190064.tif 000012