(57)【特許請求の範囲】
【請求項１】
記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュするキャッシュ制御部と、
前記キャッシュ制御部によって前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する選択部と、
前記削除対象のデータと前記選択部によって選択されたデータとを前記メモリから削除する削除部と、
前記キャッシュされたデータを含むファイルを識別する識別子と、所定時間前にメモリにキャッシュされていた前記ファイルのページキャッシュの総数とに対応付けて、所定時間内に前記記憶部から読み出された前記ファイルのページキャッシュまたは前記記憶部に書き込まれた前記ファイルのページキャッシュを計数したページ管理情報を生成する生成部と、
前記ページ管理情報に含まれるページキャッシュ数とページキャッシュの総数と、現時点でメモリにキャッシュされている前記ファイルのページキャッシュの総数とを用いて、前記削除対象のデータを含むファイルのページキャッシュが前記所定時間内にメモリから解放された割合を算出する算出部と、を有し、
前記選択部は、前記算出部によって算出された割合が閾値を超える場合に、前記削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択することを特徴とする情報処理装置。
【請求項２】
前記選択部は、前記算出部によって算出された割合が閾値を超える場合、かつ、前記メモリの物理領域に対して仮想的に割当てた仮想メモリ領域の空き容量が所定値よりも少ない場合に、前記削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記算出部によって算出された前記現時点での割合と、前記算出部によって算出された前記所定時間前の割合との差が第１の基準値より大きい場合には、前記閾値をより小さい値に更新し、前記差が第２の基準値より小さい場合には、前記閾値をより大きな値に更新する閾値更新部とをさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記生成部は、前記メモリにキャッシュされているデータのうち最近参照されていないデータから順に、前記ページ管理情報を生成し、
前記算出部は、前記ページ管理情報の先頭のエントリから順に前記割合を算出し、前記割合を算出したエントリを前記ページ管理情報の最後尾に移動させることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記生成部は、前記メモリにキャッシュされているデータのうち最近参照されていないデータから順に、前記ページ管理情報を生成し、
前記算出部は、前記ページ管理情報のエントリのうち前記記憶部から読み出されたまたは前記記憶部に書き込まれたデータに対応するエントリを、前記ページ管理情報の最後尾に移動させることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
他の情報処理装置が有するメモリにキャッシュされているファイルを識別する識別子を各情報処理装置から取得する取得部と、
前記算出部によって前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされているか否かを、前記取得部によって取得された識別子を用いて判定する判定部とをさらに有し、
前記選択部は、前記判定部によって、前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされていると判定された場合には、前記削除対象のデータを含むファイルを削除対象から除外することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
他の情報処理装置が有するメモリにキャッシュされているファイルを識別する識別子を各情報処理装置から取得する取得部と、
前記算出部によって前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされているか否かを、前記取得部によって取得された識別子を用いて判定する判定部とをさらに有し、
前記取得部は、前記識別子とともに前記各情報処理装置のメモリの物理領域に対して仮想的に割当てた仮想メモリ領域の残量を取得し、
前記選択部は、前記判定部によって、前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされていると判定された場合、かつ、前記削除対象のデータをキャッシュしている前記他の情報処理装置の前記仮想メモリ領域の残量が所定値以下の場合に、前記削除対象のデータを含むファイルを削除対象から除外することを特徴とする請求項１に記載の情報処理装置。
【請求項８】
コンピュータが、
記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュし、
前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択し、
前記削除対象のデータと前記選択されたデータとを前記メモリから削除し、
前記キャッシュされたデータを含むファイルを識別する識別子と、所定時間前にメモリにキャッシュされていた前記ファイルのページキャッシュの総数とに対応付けて、所定時間内に前記記憶部から読み出された前記ファイルのページキャッシュまたは前記記憶部に書き込まれた前記ファイルのページキャッシュを計数したページ管理情報を生成し、
前記ページ管理情報に含まれるページキャッシュ数とページキャッシュの総数と、現時点でメモリにキャッシュされている前記ファイルのページキャッシュの総数とを用いて、前記削除対象のデータを含むファイルのページキャッシュが前記所定時間内にメモリから解放された割合を算出し、
算出した前記割合が閾値を超える場合に、前記削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する
処理を実行することを特徴とするメモリ管理方法。
【請求項９】
コンピュータに、
記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュし、
前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択し、
前記削除対象のデータと前記選択されたデータとを前記メモリから削除し、
前記キャッシュされたデータを含むファイルを識別する識別子と、所定時間前にメモリにキャッシュされていた前記ファイルのページキャッシュの総数とに対応付けて、所定時間内に前記記憶部から読み出された前記ファイルのページキャッシュまたは前記記憶部に書き込まれた前記ファイルのページキャッシュを計数したページ管理情報を生成し、
前記ページ管理情報に含まれるページキャッシュ数とページキャッシュの総数と、現時点でメモリにキャッシュされている前記ファイルのページキャッシュの総数とを用いて、前記削除対象のデータを含むファイルのページキャッシュが前記所定時間内にメモリから解放された割合を算出し、
算出した前記割合が閾値を超える場合に、前記削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する
処理を実行させることを特徴とするメモリ管理プログラム。
【請求項１０】
記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュするキャッシュ制御部と、
前記キャッシュ制御部によって前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する選択部と、
前記削除対象のデータと前記選択部によって選択されたデータとを前記メモリから削除する削除部と、
前記キャッシュされたデータを含むファイルを識別する識別子と、所定時間前にメモリにキャッシュされていた前記ファイルのページキャッシュの総数とに対応付けて、所定時間内に前記記憶部から読み出された前記ファイルのページキャッシュまたは前記記憶部に書き込まれた前記ファイルのページキャッシュを計数したページ管理情報を生成する生成部と、
前記ページ管理情報に含まれるページキャッシュ数とページキャッシュの総数と、現時点でメモリにキャッシュされている前記ファイルのページキャッシュの総数とを用いて、前記削除対象のデータを含むファイルのページキャッシュが前記所定時間内にメモリから解放された割合を算出する算出部と、
他の情報処理装置が有するメモリにキャッシュされているファイルを識別する識別子を各情報処理装置から取得する取得部と、
前記算出部によって前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされているか否かを、前記取得部によって取得された識別子を用いて判定する判定部とを有し、
前記選択部は、前記判定部によって、前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされていると判定された場合には、前記削除対象のデータを含むファイルを削除対象から除外することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリ管理方法およびメモリ管理プログラムに関する。
【背景技術】
【０００２】
従来、データへのアクセスを高速化する技術としてキャッシュが知られている。例えば、コンピュータのオペレーティングシステム（ＯＳ）において、アクセス速度が遅いディスクなどの記憶装置に記憶されるデータの一部を、アクセス速度が速いメモリなどの記憶装置に記憶させることで、データへのアクセスを高速化することが行われている。
【０００３】
一般的に、アクセス速度が速いメモリなどの記憶装置は容量が小さく、プログラムの実行領域、ＯＳの管理用領域などキャッシュ以外の用途にも使用される。このため、ＯＳは、ある程度の余裕をもたせておくようにメモリ領域を管理する。例えば、ＯＳは、メモリの使用可能な残量が所定値を下回ると、キャッシュ領域に記憶されるデータをメモリから削除するキャッシュアウト処理を実行して、メモリ残量を回復させる。
【０００４】
このキャッシュアウト処理としては、ＬＲＵ（Least  Recently  Used）やＭＲＵ（Most  Recently  Used）などが知られている。ＬＲＵは、最も長い間利用されていないデータを削除する手法であり、ＭＲＵは、最近使用されたデータを削除する手法である。これら以外にも、キャッシュされているデータに対して、ユーザが残しておきたい順に優先度を付けておき、優先度が低いものから削除する手法などが知られている。
【０００５】
また、上述したＯＳによる制御以外にも、例えば、アプリケーション層とＯＳによるキャッシュ制御との間に、アプリケーションによるキャッシュ制御を実行させる中間層を設けて、アプリケーションによってキャッシュを管理する手法も知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−１８２２２０号公報
【特許文献２】特開平１１−９６１０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の技術では、キャッシュ領域にフラグメンテーションが発生し、アプリケーションの実行速度が低下することから、処理性能が劣化するという問題がある。
【０００８】
例えば、従来の技術では、キャッシュ領域からデータを削除する際に、４キロバイトのページ単位で削除する。このため、１ファイルが４キロバイト以上である場合、キャッシュ領域上にファイルの全体が残らず、ファイルの一部のみがキャッシュ領域に残る場合がある。すなわち、キャッシュ領域のフラグメンテーションが発生する。このような状態で、あるファイルに対するアクセスを行った場合に、キャッシュ領域では解決できず、ディスクへのアクセスを実行して、キャッシュ領域にない一部のデータを読み出すことになる。この結果、低速なディスクアクセスが発生して、アプリケーション実行速度が遅くなり、処理性能の劣化を招く。
【０００９】
また、通常のキャッシュ制御における階層構造に新たな層を加える手法では、処理層が１つ増えるので、キャッシュ領域からデータを読み出す速度の劣化が発生する。例えば、アプリケーションがキャッシュからデータを読み出す場合、アプリケーションによるキャッシュ制御を介して、通常のＯＳによるキャッシュ制御に、データの読み出しを要求する。その後、通常のＯＳによるキャッシュ制御によって読み出されたデータを、アプリケーションによるキャッシュ制御を介して取得する。このように、階層が増えたことにより処理が増えるので、アプリケーション実行速度が遅くなり、結果として処理性能が劣化する。
【００１０】
１つの側面では、処理性能の劣化を抑制することができる情報処理装置、メモリ管理方法およびメモリ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、情報処理装置は、記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュするキャッシュ制御部を有する。情報処理装置は、前記キャッシュ制御部によって前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する選択部を有する。情報処理装置は、前記削除対象のデータと前記選択部によって選択されたデータとを前記メモリから削除する削除部を有する。情報処理装置は、前記キャッシュされたデータを含むファイルを識別する識別子と、所定時間前にメモリにキャッシュされていた前記ファイルのページキャッシュの総数とに対応付けて、所定時間内に前記記憶部から読み出された前記ファイルのページキャッシュまたは前記記憶部に書き込まれた前記ファイルのページキャッシュを計数したページ管理情報を生成する生成部を有する。情報処理装置は、前記ページ管理情報に含まれるページキャッシュ数とページキャッシュの総数と、現時点でメモリにキャッシュされている前記ファイルのページキャッシュの総数とを用いて、前記削除対象のデータを含むファイルのページキャッシュが前記所定時間内にメモリから解放された割合を算出する算出部を有する。前記選択部は、前記算出部によって算出された割合が閾値を超える場合に、前記削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する。
【発明の効果】
【００１２】
処理性能の劣化を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る情報処理システムの全体構成例を示す図である。
【図２】図２は、実施例１に係るサーバの構成を示す機能ブロック図である。
【図３】図３は、ディスクの定義値領域に記憶される情報の例を示す図である。
【図４】図４は、メモリのページキャッシュ領域の例を示す図である。
【図５】図５は、メモリのテーブル領域に記憶されるキャッシュ管理情報の例を示す図である。
【図６】図６は、実施例１に係るサーバが実行するキャッシュ管理処理の流れを示すフローチャートである。
【図７】図７は、ページキャッシュの削除によるエントリ更新処理の具体例を示す図である。
【図８】図８は、ファイルのリードまたはライトによるエントリ更新処理の具体例を示す図である。
【図９】図９は、実施例２に係る情報処理システムの全体構成例を示す図である。
【図１０】図１０は、実施例２に係るサーバの構成を示す機能ブロック図である。
【図１１】図１１は、グローバルキャッシュ管理表の例を示す図である。
【図１２】図１２は、実施例２に係るサーバが実行するグローバルキャッシュ管理処理の流れを示すフローチャートである。
【図１３】図１３は、メモリ管理プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する情報処理装置、メモリ管理方法およびメモリ管理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
［全体構成］
図１は、実施例１に係る情報処理システムの全体構成例を示す図である。図１に示すように、情報処理システムは、サーバ１０とサーバ２０とサーバ３０とがネットワーク５を介して相互に接続される。なお、ここでは、３台のサーバで構成される例を示したが、これに限定されるものではなく、１台以上であればよい。また、各サーバは、例えばＷｅｂサーバ、アプリケーションサーバなどであり、処理内容を限定するものではない。
【００１６】
また、図１に示した情報処理システムは、各サーバが各々で各種処理を実行してもよく、各サーバが協働して処理を実行してもよい。協働する例としては、例えばＨａｄｏｏｐやＨＤＦＳ（Hadoop  Distributed  File  System）を用いた分散処理システムなどがある。
【００１７】
このような情報処理システムにおける各サーバは、記憶部から読み出されたデータまたは記憶部に書き込まれたデータを、ＯＳカーネルが管理するページキャッシュ領域（以下、ページキャッシュと記載する場合がある）に記憶する。そして、各サーバは、ＯＳカーネルの管理するページキャッシュ領域に記憶されたデータを削除する際に、削除対象のデータと同一ファイルに含まれるデータをＯＳカーネルの管理するページキャッシュ領域から選択する。その後、各サーバは、削除対象のデータと選択されたデータとを削除する。なお、以降ではＯＳカーネルの管理するページキャッシュ領域のことを単にページキャッシュと記述する。またページキャッシュに記憶することを単にキャッシュすると記述する。
【００１８】
例えば、各サーバは、最近参照されていないデータをページキャッシュから削除する際に、当該ページキャッシュが有するｉｎｏｄｅ番号を特定する。そして、各サーバは、特定したｉｎｏｄｅ番号と同じｉｎｏｄｅ番号を有するページキャッシュをページキャッシュから特定する。つまり、各サーバは、ページキャッシュに記憶されているデータのうち、削除対象データを含むファイルの一部であるデータを特定する。その後、各サーバは、特定したデータと削除対象のデータとをページキャッシュから削除する。
【００１９】
このように、各サーバは、キャッシュアウトでページキャッシュ上のデータを削除する際に、ページ単位かつファイル単位でページキャッシュ上のデータを削除することができる。この結果、ページキャッシュのフラグメンテーションを抑制し、アプリケーションの処理速度の低下を抑制することができ、処理性能の劣化を抑制することができる。
【００２０】
［サーバの構成］
次に、図１に示したサーバについて説明する。図１に示したサーバは同様の構成を有するので、ここでは、サーバ１０を例にして説明する。図２は、実施例１に係るサーバの構成を示す機能ブロック図である。図２に示すように、サーバ１０は、通信制御部１１と、ディスク１２と、メモリ１３と、制御部１４とを有する。なお、図２に示した処理部は、あくまで例示であり、マウスなどの入力部やディスプレイなどの表示部など他の処理部を有していてもよい。
【００２１】
通信制御部１１は、他のサーバとの通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部１１は、他のサーバから受信した各種要求やデータを制御部１４に出力する。また、通信制御部１１は、制御部１４から出力された処理結果やデータを宛先のサーバに送信する。
【００２２】
ディスク１２は、データ等を記憶する記憶装置であり、例えばハードディスクドライブなどである。このディスク１２は、ファイル領域１２ａと定義値領域１２ｂとを有する。ファイル領域１２ａは、制御部１４のアプリ実行部１６等が実行したアプリケーションが使用するファイルなどのデータを記憶する領域である。
【００２３】
定義値領域１２ｂは、キャッシュ管理部１７がファイルをメモリ１３から削除するか否かを判定する際に使用する各種定義値が記憶される領域である。図３は、ディスクの定義値領域に記憶される情報の例を示す図である。図３に示すように、定義値領域１２ｂには、「削除率初期値Ｒｔ」と「最小削除率Ｒｔｍｉｎ」と「仮想記憶域閾値Ｆｔ」と「喪失加速度αｔ１」と「喪失加速度αｔ２」とが記憶される。
【００２４】
「削除率初期値Ｒｔ」は、キャッシュされているページをメモリ１３から削除するか否かを判定する際に使用される閾値の初期値であり、例えば０．０２（２％）などと指定される。この「削除率初期値Ｒｔ」は、閾値更新部１７ｅによって更新される。「最小削除率Ｒｔｍｉｎ」は、上記閾値の最小値であり、管理者等によって設定される。「仮想記憶域閾値Ｆｔ」は、メモリ１３の物理領域に対して仮想的に割当てた仮想メモリ領域の空き容量に余裕があるかないかを判定する際に使用する閾値であり、管理者等によって設定される。「喪失加速度αｔ１」と「喪失加速度αｔ２」は、ページキャッシュの解放速度を判定する際に使用される閾値であり、管理者等によって設定される。キャッシュ管理部１７によって算出された解放率（Ｒ）がαｔ１からαｔ２の間であれば、ページキャッシュの解放速度は安全値であると判定される。
【００２５】
図２に戻り、メモリ１３は、制御部１４が実行するプログラム等を記憶する記憶装置であり、ディスク１２から読み出されたデータまたはディスク１２に書き込まれたデータをキャッシュする。このメモリ１３は、管理領域１３ａとページキャッシュ領域１３ｂとテーブル領域１３ｃとを有する。管理領域１３ａは、プログラムの実行領域、ＯＳの管理用領域などキャッシュ以外の用途に使用される領域である。
【００２６】
ページキャッシュ領域１３ｂは、ディスク１２から読み出されたまたはディスク１２に書き込まれたデータ、すなわちキャッシュを記憶する領域である。図４は、メモリのページキャッシュ領域の例を示す図である。図４に示すように、ページキャッシュ領域１３ｂは、ＯＳカーネルが管理する資源である。図４の場合、１ページ（１マス）が４キロバイトであり、１ページには１つのファイルのデータしか格納されない。４キロバイトを越えるサイズのファイルのデータは、複数のページを占有する。また、ページアウト処理はページ単位に実行される。
【００２７】
図４の場合、ファイル０４（Ｆ０４）のデータが連続したページに格納されており、ファイル０１（Ｆ０１）のデータが６ページを占有している状態を示す。また、ファイル０２（Ｆ０２）のデータが不連続なページに格納されていることを示す。
【００２８】
テーブル領域１３ｃは、キャッシュ管理部１７が使用する管理情報を記憶する領域である。図５は、メモリのテーブル領域に記憶されるキャッシュ管理情報の例を示す図である。図５に示すように、キャッシュ管理情報は、メモリ１３にキャッシュされているファイル単位のページキャッシュエントリがリンクリストで構成された情報である。先頭には、メモリ１３上で最も参照されていないファイルが位置する。すなわち、先頭に近いほどＯＳによって破棄されやすく、終端に近いほどＯＳによって破棄されにくい。
【００２９】
各ページキャッシュエントリは、「ｉｎｏｄｅ番号」と「前回ページキャッシュ数」と「ディスクから読み書きしたページ数」と「所有者情報」と「アクセス権限情報」とを有する。「ｉｎｏｄｅ番号」は、例えばファイルやファイルに関する管理情報を識別する識別子である。「前回ページキャッシュ数」は、所定時間前にメモリ１３にキャッシュされていたファイルの総ページ数であり、前回、キャッシュ管理部１７がメモリから削除するか否かの判定を行った時点でキャッシュされていたファイルの総ページ数である。
【００３０】
「ディスクから読み書きしたページ数」は、ディスク１２から読み出されたファイルのページ数とディスク１２に書き込まれたファイルのページ数との合計値である。この「ディスクから読み書きしたページ数」は、生成部１７ａによって更新される。「所有者情報」は、ファイルを所有しているユーザ名である。「アクセス権限情報」は、ファイルに与えられているアクセス権限を示す情報である。「ｉｎｏｄｅ番号」と「所有者情報」と「アクセス権限情報」とは、ＯＳやページキャッシュから取得することができる。
【００３１】
制御部１４は、サーバ１０全体の処理を司る処理部である、例えばＣＰＵ（Central  Processing  Unit）などの電子回路である。この制御部１４は、ＯＳ実行部１５とアプリ実行部１６とキャッシュ管理部１７とを有する。
【００３２】
ＯＳ実行部１５は、ＯＳを実行する処理部である。このＯＳ実行部１５によって実行されたＯＳは、メモリ１３へページキャッシュを追加し、メモリ１３からページキャッシュを削除する。例えば、ＯＳ実行部１５は、後述するキャッシュ管理部１７から受信したｉｎｏｄｅ番号を有する各ページキャッシュを、メモリ１３のページキャッシュ領域から削除する。
【００３３】
アプリ実行部１６は、アプリケーションを実行する処理部である。このアプリ実行部１６によって実行されたアプリケーションは、使用するデータがキャッシュされているか否かをメモリ１３のページキャッシュ領域１３ｂを参照して判定する。そして、アプリケーションは、キャッシュヒットした場合には、該当するデータすなわちページをページキャッシュ領域１３ｂから読み出す。また、アプリケーションは、キャッシュミスした場合には、該当するデータをディスク１２のファイル領域１２ａが読み出す。そして、アプリケーションは、ディスク１２のファイル領域１２ａから読み出したデータを、メモリ１３のページキャッシュ領域１３ｂに格納する。
【００３４】
キャッシュ管理部１７は、生成部１７ａと算出部１７ｂと選択部１７ｃと削除依頼部１７ｄと閾値更新部１７ｅとを有し、これらによって、キャッシュされているページを管理する処理部である。
【００３５】
生成部１７ａは、メモリ１３にキャッシュされているデータの情報を示すキャッシュ管理情報を生成して、メモリ１３のテーブル領域１３ｃに格納する処理部である。例えば、生成部１７ａは、サーバ１０が起動してから所定時間経過した後、ページキャッシュ領域１３ｂを参照して、ページキャッシュに含まれるｉｎｏｄｅ番号から、キャッシュされているファイルを特定する。そして、生成部１７ａは、特定したファイルのうち最近参照されていないファイルのエントリから順にリンクさせたキャッシュ管理情報を生成する。この際、生成部１７ａは、ファイルの所有者情報、アクセス権限情報をページキャッシュやＯＳから取得して、生成したキャッシュ管理情報の各エントリに格納する。
【００３６】
また、生成部１７ａは、キャッシュ管理情報を更新する処理部である。例えば、生成部１７ａは、アプリ実行部１６が実行したアプリケーションによって、データのリードまたはライトが実行された場合に、当該データのｉｎｏｄｅ番号等から、リードまたはライトされたデータを含むファイルを特定する。そして、生成部１７ａは、特定したファイルについて作成されたページキャッシュの数を計数して、キャッシュ管理情報の「ディスクから読み書きしたページ数」に格納する。
【００３７】
算出部１７ｂは、ページキャッシュされているファイルにおいて、ページキャッシュが所定時間内にメモリから解放された割合を示すページキャッシュ既解放率「Ｒ」を算出する処理部である。例えば、算出部１７ｂは、キャッシュ管理情報の先頭エントリから所定間隔で、ページキャッシュ既解放率「Ｒ」を算出する。
【００３８】
具体的に説明すると、算出部１７ｂは、キャッシュ管理情報の先頭エントリのｉｎｏｄｅ番号を用いて、ＯＳから現時点でキャッシュされているページキャッシュの総数「Ｐｃ」を取得する。そして、算出部１７ｂは、対象エントリから前回ページキャッシュ数「Ｐｐ」とディスクから読み書きしたページ数「Δ」を取得する。その後、算出部１７ｂは、ページキャッシュ既解放率「Ｒ」＝「１−（Ｐｃ／Ｐｐ＋Δ）」を算出し、その結果を選択部１７ｃに出力する。
【００３９】
ここで、算出部１７ｂが算出するページキャッシュ既解放率「Ｒ」の計算式について説明する。ページキャッシュ既解放率「Ｒ」を算出する上記式は、前回チェックしたときのページキャッシュの数に、その後のアクセスで新たに作成したページキャッシュの数を加えて分母とする。この式において、ＯＳによるページキャッシュの解放が実施されている場合は、現在のページキャッシュ数（分子）が分母よりも小さくなる。また、この式において、ＯＳによる解放が頻繁に行われている場合は、分子が極端に小さくなり、結果としてページキャッシュ既解放率「Ｒ」は１に近くなる。逆にＯＳによるページキャッシュの解放が行われていない場合は分子＝分母となり、ページキャッシュ既解放率「Ｒ」は０になる。
【００４０】
選択部１７ｃは、算出部１７ｂによって算出された割合がページキャッシュ既解放率「Ｒ」が閾値を超える場合に、削除対象のエントリに該当するファイルに含まれるデータをメモリ１３から選択する処理部である。このとき、選択部１７ｃは、「Ｒ」が閾値を超える場合、かつ、メモリ１３の物理領域に対して仮想的に割当てた仮想メモリ領域の空き容量「Ｆ」が所定値よりも少ない場合に、該当するファイルに含まれるデータをメモリ１３から選択することもできる。
【００４１】
例えば、選択部１７ｃは、算出部１７ｂによってページキャッシュ既解放率「Ｒ」が算出されると、定義値領域１２ｂから削除率初期値「Ｒｔ」と最小削除率「Ｒｔｍｉｎ」と「仮想記憶域閾値Ｆｔ」とを取得する。また、選択部１７ｃは、仮想メモリ領域の空き容量「Ｆｔ」をＯＳから取得する。そして、選択部１７ｃは、ページキャッシュ既解放率「Ｒ」が削除率初期値「Ｒｔ」より大きく、かつ、仮想メモリ領域の空き容量「Ｆ」が仮想記憶域閾値「Ｆｔ」より小さいか否かを判定する。その後、選択部１７ｃは、上記条件を満たす場合に、対象となっているキャッシュ管理情報のエントリからｉｎｏｄｅ番号を取得して削除依頼部１７ｄに出力する。
【００４２】
削除依頼部１７ｄは、選択部１７ｃによって選択されたデータの削除をＯＳに依頼する処理部である。例えば、削除依頼部１７ｄは、選択部１７ｃから通知されたｉｎｏｄｅ番号とともに当該ｉｎｏｄｅ番号を有するページキャッシュを削除する依頼を、ＯＳ実行部１５が実行するＯＳに出力する。
【００４３】
その後、ＯＳは、受信したｉｎｏｄｅ番号を有するページキャッシュをメモリ１３から削除する。すると、生成部１７ａは、キャッシュ管理情報において当該ｉｎｏｄｅに対応するエントリの「前回ページキャッシュ数」を「０」に更新する。さらに、生成部１７ａは、当該エントリの「ディスクから読み書きしたページ数」を「０」に更新する。ここで、生成部１７ａは、当該エントリに対応したファイルのページキャッシュが削除されなかった場合には、今回取得されたページキャッシュ数「Ｐｃ」を「前回ページキャッシュ数」とする。
【００４４】
閾値更新部１７ｅは、今回算出されたページキャッシュ既解放率「Ｒ」と前回算出されたページキャッシュ既解放率「Ｒｐ」とを比較して、ページキャッシュの解放が適切に行われるように削除率初期値「Ｒｔ」を更新する処理部である。なお、前回算出されたページキャッシュ既解放率「Ｒｐ」は、エントリやファイルに関係なく、算出されるたびにメモリ１３等に記憶される。
【００４５】
例えば、閾値更新部１７ｅは、算出部１７ｂによって算出されたページキャッシュ既解放率「Ｒ」と、所定時間前のページキャッシュ既解放率「Ｒｐ」との差「α」が喪失加速度危険値「αｔ１」より大きい場合には、削除率初期値「Ｒｔ」をより小さい値に変更する。また、閾値更新部１７ｅは、算出部１７ｂによって算出されたページキャッシュ既解放率「Ｒ」と、所定時間前のページキャッシュ既解放率「Ｒｐ」との差「α」が喪失加速度安全値「αｔ２」より小さい場合には、削除率初期値「Ｒｔ」をより大きい値に変更する。このとき、閾値更新部１７ｅは、新たな削除率初期値「Ｒｔ」が最小削除率「Ｒｔｍｉｎ」を下回らないように変更する。
【００４６】
つまり、閾値更新部１７ｅは、ページキャッシュ既解放率が上昇傾向にあるか否かを判定し、上昇傾向が大きい場合に閾値を変更する。例えば、閾値更新部１７ｅは、「α」が「αｔ１」より大きい場合には、ページキャッシュの解放速度が不十分であると判定し、「Ｒｔ」をより小さい値に更新する。こうすることで、選択部１７ｃがページキャッシュ削除と判定する可能性が高くなって、ページキャッシュの解放速度が上がり、装置全体の仮想記憶域の残量に余裕ができる。
【００４７】
また、閾値更新部１７ｅは、「α」が「αｔ２」より小さい場合には、ページキャッシュの解放速度が十分であると判定し、「Ｒｔ」をより大きい値に更新する。こうすることで、選択部１７ｃがページキャッシュ削除と判定する可能性が小さくなり、ページキャッシュの解放速度を低減して頻繁にページキャッシュの解放が発生することを抑制できる。
【００４８】
［処理の流れ］
次に、サーバ１０が実行するキャッシュ管理処理の流れを説明する。図６は、実施例１に係るサーバが実行するキャッシュ管理処理の流れを示すフローチャートである。
【００４９】
図６に示すように、キャッシュ管理部１７の算出部１７ｂは、契機に到達すると（Ｓ１０１肯定）、ページキャッシュ領域１３ｂに格納されるキャッシュ管理情報の先頭エントリを選択する（Ｓ１０２）。なお、契機の例としては、所定間隔でもよく、ディスクアクセスが発生したときでもよく、任意に設定することができる。
【００５０】
続いて、算出部１７ｂは、選択したエントリ内から前回のページキャッシュ数「Ｐｐ」とディスクから読み書きしたページ数「Δ」を取得する（Ｓ１０３）。また、算出部１７ｂは、選択したエントリ内からｉｎｏｄｅ番号を取得してＯＳに出力し、当該ｉｎｏｄｅ番号を有する現在のページキャッシュの総数「Ｐｃ」をＯＳから取得する（Ｓ１０４）。
【００５１】
その後、算出部１７ｂは、ページキャッシュ既解放率「Ｒ」＝「１−（Ｐｃ／Ｐｐ＋Δ）」を算出する（Ｓ１０５）。また、選択部１７ｃは、仮想メモリ領域の空き容量「Ｆ」をＯＳから取得する（Ｓ１０６）。
【００５２】
続いて、選択部１７ｃは、定義値領域１２ｂから削除率初期値「Ｒｔ」と「仮想記憶域閾値Ｆｔ」とを取得し、「Ｒ＞ＲｔかつＦ＜Ｆｔ」を満たすか否かを判定する（Ｓ１０７）。
【００５３】
そして、削除依頼部１７ｄは、選択部１７ｃによって「Ｒ＞ＲｔかつＦ＜Ｆｔ」を満たすと判定された場合（Ｓ１０７肯定）、該当エントリ内から取得したｉｎｏｄｅ番号を有するページキャッシュの削除をＯＳに依頼する（Ｓ１０８）。その後、生成部１７ａは、該当エントリを更新した後、該当エントリをキャッシュ管理情報の最後尾に移動させる（Ｓ１０９）。
【００５４】
続いて、閾値更新部１７ｅは、前回算出されたページキャッシュ既解放率「Ｒｐ」をメモリ１３等から取得して、「α＝今回算出されたページキャッシュ既解放率「Ｒ」−前回算出されたページキャッシュ既解放率「Ｒｐ」」を算出する（Ｓ１１０）。
【００５５】
そして、閾値更新部１７ｅは、定義値領域１２ｂから喪失加速度危険値「αｔ１」を取得し、Ｓ１１０で算出した「α」が喪失加速度危険値「αｔ１」より大きいか否かを判定する（Ｓ１１１）。
【００５６】
その後、閾値更新部１７ｅは、「α」が喪失加速度危険値「αｔ１」より大きい場合（Ｓ１１１肯定）、定義値領域１２ｂに格納される削除率初期値「Ｒｔ」を「現在の削除率初期値「Ｒｔ−ＲｔΔ」で更新する（Ｓ１１２）。すなわち、閾値更新部１７ｅは、削除率初期値「Ｒｔ」をより小さい値に更新する。このとき、閾値更新部１７ｅは、削除率初期値「Ｒｔ」が喪失加速度安全値「αｔ２」を下回らないように、削除率初期値「Ｒｔ」を設定する。なお、ＲｔΔは任意の値である。
【００５７】
一方、閾値更新部１７ｅは、「α」が喪失加速度危険値「αｔ１」より小さい場合（Ｓ１１１否定）、定義値領域１２ｂに格納される削除率初期値「Ｒｔ」を「現在の削除率初期値「Ｒｔ＋ＲｔΔ」で更新する（Ｓ１１３）。すなわち、閾値更新部１７ｅは、削除率初期値「Ｒｔ」をより大きい値に更新する。
【００５８】
その後、キャッシュ管理部１７は所定時間待機し（Ｓ１１４）、次の契機に到達すると（Ｓ１１４肯定）、算出部１７ｂが、次のエントリを選択して（Ｓ１１５）、Ｓ１０３以降の処理を実行する。なお、Ｓ１０７において、選択部１７ｃが「Ｒ＞ＲｔかつＦ＜Ｆｔ」を満たさないと判定した場合も（Ｓ１０７否定）、キャッシュ管理部１７は、Ｓ１１４以降の処理を実行する。
【００５９】
［具体例］
次に、上述した各処理の具体例を説明する。ここでは、ページキャッシュによるキャッシュ管理情報のエントリ更新処理とリードまたはライトによるキャッシュ管理情報のエントリ更新処理とを説明する。
【００６０】
（ページキャッシュの削除による更新）
図７は、ページキャッシュの削除によるエントリ更新処理の具体例を示す図である。図７に示すように、キャッシュ管理情報は、ｉｎｏｄｅ番号が「０ｘ１２３４５６７８」であるファイルの情報を先頭エントリとして、複数のエントリをリンク接続させて構成される。
【００６１】
このような構成において、所定の契機に到達すると、キャッシュ管理部１７の算出部１７ｂは、該当エントリ内から「前回ページキャッシュ数（Ｐｃ）」と「ディスクから読み書きしたページ数（Δ）」を取得する。また、算出部１７ｂは、該当エントリのｉｎｏｄｅ番号を用いて、「現在のページキャッシュ数（Ｐｐ）」をＯＳから取得する。そして、算出部１７ｂは、ページキャッシュ既解放率「Ｒ」を算出する。その後、選択部１７ｃは、仮想記憶域の空き容量「Ｆ」をＯＳから取得し、前回算出されたページキャッシュ既解放率「Ｒｔ」をメモリ１３等から取得する。また、選択部１７ｃは、定義値領域１２ｂから「仮想記憶域閾値Ｆ０」を取得する。
【００６２】
そして、削除依頼部１７ｄは、「Ｒ＞ＲｔかつＦ＜Ｆ０」を満たす場合、該当エントリのｉｎｏｄｅ番号をＯＳに通知して、当該ｉｎｏｄｅ番号を有するページキャッシュの削除を依頼する。こうして、ＯＳは、通知されたｉｎｏｄｅ番号を有する各ページキャッシュ、すなわち、同一ファイルに該当する各データをメモリ１３のページキャッシュ領域１３ｂから削除することができる。その後、生成部１７ａは、処理が終了したエントリの「前回ページキャッシュ数（Ｐｃ）」および「ディスクから読み書きしたページ（Δ）」をともに「０」に更新した後、キャッシュ管理情報の最後尾に移動させる。
【００６３】
ここで、先頭に位置するエントリ（ｉｎｏｄｅ番号＝０ｘ１２３４５６７８）のページキャッシュを削除するか否かを判定する例を説明する。図７に示すように、対象のエントリには、「前回ページキャッシュ数（Ｐｃ）＝１０００」と「ディスクから読み書きしたページ（Δ）＝０」が格納されている。また、各定義値は、図３に示した通りとし、前回算出されたＲ値である「Ｒｐ」は、０．０２とする。
【００６４】
まず、算出部１７ｂは、該当エントリのｉｎｏｄｅ番号（０ｘ１２３４５６７８）をＯＳに通知して、「現在のページキャッシュ数（Ｐｐ）＝９００」をＯＳから取得する。そして、算出部１７ｂは、ページキャッシュ既解放率「Ｒ」＝「１−（Ｐｃ／Ｐｐ＋Δ）」すなわち、「Ｒ＝１−（９００／（１０００＋０））＝０．１」を算出する。
【００６５】
次に、選択部１７ｃは、仮想記憶域の空き容量「Ｆ＝８０ギガバイト」をＯＳから取得する。そして、選択部１７ｃは、「Ｒ＞ＲｔかつＦ＜Ｆｔ」すなわち「０．１＞０．０２かつ８０＜１００」を満たすか否かを判定する。そして、削除依頼部１７ｄは、条件を満たすので、該当エントリに登録される「ｉｎｏｄｅ番号＝０ｘ１２３４５６７８」を有するページキャッシュの削除をＯＳに依頼する。そして、ＯＳは、「ｉｎｏｄｅ番号＝０ｘ１２３４５６７８」を有する各ページキャッシュを、メモリ１３のページキャッシュ領域１３ｂから削除する。
【００６６】
続いて、生成部１７ａは、ｉｎｏｄｅ番号（０ｘ１２３４５６７８）のエントリにおける「前回ページキャッシュ数（Ｐｃ）」に「０」を格納するとともに「ディスクから読み書きしたページ（Δ）」に「０」を格納した後、当該エントリをキャッシュ管理情報の最後尾に移動させる。
【００６７】
その後、閾値更新部１７ｅは、「α＝Ｒ値（０．１）−Ｒｐ値（０．０２）＝０．０８」を算出し、「α＝０．０８＞αｔ１（０．０５）」が成立することから、次回のＲｔ値を現在のＲｔ値から「０．０１」を減算した値とする。すなわち、閾値更新部１７ｅは、現在のＲｔ値「０．１」から「０．０１」を減算した「０．０９」を次回の削除率初期値Ｒｔとして、定義値を更新する。また、今回算出されたＲ値（０．１）は、次回の算出時には、前回算出されたＲｐ値として扱われる。
【００６８】
（リードまたはライトによる更新）
図８は、ファイルのリードまたはライトによるエントリ更新処理の具体例を示す図である。図８に示すように、キャッシュ管理情報は、ｉｎｏｄｅ番号が「０ｘ１２３４５６７８」であるファイルの情報を先頭エントリとして、複数のエントリをリンク接続させて構成される。
【００６９】
このような構成において、ＯＳは、アプリケーションによる処理の実行によって、ファイルのリードまたはライトのシステムコールを発行して、該当するページキャッシュをメモリ１３のページキャッシュ領域１３ｂに格納する。つまり、アプリケーションが参照するファイルのデータがメモリ１３にキャッシュされていない場合には、ディスク１２から読み出してキャッシュする。このとき、キャッシュ管理部１７の生成部１７ａは、ＯＳによって作成されたページキャッシュの数を計数する。
【００７０】
その後、ＯＳは、システムコールの延長でキャッシュ管理部１７を読み出し、その際にキャッシュ管理情報における該当ファイルを指すオブジェクトへのアドレスをキャッシュ管理部１７に送信する。キャッシュ管理部１７の生成部１７ａは、受信したアドレスが指し示す、キャッシュ管理情報のエントリの「ディスクから読み書きしたページ数」に、計数したページキャッシュの総数を加算し、当該エントリをキャッシュ管理情報の最後尾に移動させる。
【００７１】
ここで、先頭から２番目に位置するエントリ（ｉｎｏｄｅ番号＝０ｘ１２３４００１２）についてリードまたはライトが発生した例で具体的に説明する。「ｉｎｏｄｅ番号＝０ｘ１２３４００１２」のファイル内がユーザ「ｒｏｏｔ  ｓｙｓ」によって操作され、当該ファイル内のデータに該当するページキャッシュが「２００ページ」生成される。このとき、キャッシュ管理部１７の生成部１７ａは、ユーザ情報である「ｒｏｏｔ  ｓｙｓ」、生成したページキャッシュ数「２００」、ユーザに与えられたアクセス権「７５５」をＯＳ等から取得して一時的に保持する。
【００７２】
その後、生成部１７ａは、ＯＳから「ｉｎｏｄｅ番号＝０ｘ１２３４００１２」を受信すると、「ｉｎｏｄｅ番号＝０ｘ１２３４００１２」に対応するキャッシュ管理情報のエントリを特定する。そして、生成部１７ａは、図８に示すように、特定したエントリの「ディスクから読み書きしたページ数＝１０」に、一時的に保持するページキャッシュ数「２００」を加算する。同様に、生成部１７ａは、特定したエントリの「所有者」を「ｒｏｏｔ  ｓｙｓ」に更新するとともに、「アクセス権」を「７５５」に更新する。その後、生成部１７ａは、「ｉｎｏｄｅ番号＝０ｘ１２３４００１２」に対応するエントリを、キャッシュ管理情報の最後尾に移動させる。
【００７３】
このようにして、生成部１７ａは、ファイルのリードまたはライトが発生するたびに、キャッシュ管理情報のエントリを更新する。また、更新されたエントリは、キャッシュ管理情報の最後尾に移動させられる。つまり、最近参照されたファイルは、ページキャッシュ削除の優先度が低くなる。このため、参照頻度の多いファイルのページキャッシュが削除されることを防止することができる。
【００７４】
上述したように、実施例１に係るサーバ１０は、キャッシュデータのページ数の変化とディスクアクセス状況とから、ページキャッシュの解放が頻繁に行われていると判定した場合に、キャッシュから削除する。このサーバ１０は、ページキャッシュを削除する際に、同じｉｎｏｄｅ番号を有するページキャッシュを一括して選択対象とするので、ページ単位＋ファイル単位で削除を実施することができる。つまり、実施例１に係るサーバ１０は、キャッシュされている、同じファイル内のデータを一括して削除することができる。この結果、ページキャッシュの解放が頻繁に実施されているにも関らず、ファイルの一部しかメモリ１３にキャッシュされていない状態を防止することができる。したがって、メモリ１３内のフラグメンテーションの発生を抑制し、アプリケーション実行速度の低下を抑制できるので、サーバ１０全体の処理性能の劣化を防止できる。
【実施例２】
【００７５】
実施例１では、サーバ１０単体でページキャッシュを削除する例を説明したが、これに限定されるものではなく、他のサーバのキャッシュ状況を考慮してページキャッシュを削除するか否かを判定することもできる。そこで、実施例２では、複数のサーバが連携してページキャッシュの削除を実行する例を説明する。
【００７６】
［全体構成］
図９は、実施例２に係る情報処理システムの全体構成例を示す図である。図９に示すように、この情報処理システムは、図１に示した情報処理システムと同様の構成を有する。実施例１と異なる点は、１台の代表サーバがグローバルキャッシュ管理表を保持し、それ以外の各サーバがグローバルキャッシュ管理表のコピーを保持している点である。
【００７７】
グローバルキャッシュ管理表は、各サーバのファイルのキャッシュ状況と、そのサーバの仮想記憶域の残量を示す情報である。このグローバルキャッシュ管理表は、１台の代表サーバで生成されて、各サーバに配布される。図９では、サーバ１０がグローバルキャッシュ管理表を生成して各サーバにコピーを配布する。なお、代表サーバは任意に選択することができる。
【００７８】
各サーバは、実施例１で説明した処理を実行する前に、グローバルキャッシュ管理表を参照する。そして、各サーバは、削除対象のファイルが他の多くのサーバでキャッシュされている場合には、当該ファイルを削除対象から除外する。このようにすることで、常時共有される定義情報の可能性が高いファイルのページキャッシュからの削除を抑制することができる。
【００７９】
また、各サーバは、削除対象のファイルが他のいくつかのサーバでキャッシュされている（事前に定義した閾値台数以下）、かつ、そのキャッシュしているサーバの仮想記憶域が閾値以下の場合に、当該ファイルを削除対象から除外することもできる。キャッシュしているサーバの仮想記憶域が閾値以下ということは、ＯＳが、メモリ不足を解消するために、キャッシュアウトする可能性があるということであり、そういうキャッシュエントリをキャッシュアウトの対象から除外することで、すべてのサーバのページキャッシュ上からそのファイルのデータを失うことを防止できる。
【００８０】
［サーバの構成］
図１０は、実施例２に係るサーバの構成を示す機能ブロック図である。図１０に示すように、サーバ１０は、通信制御部１１とディスク１２とメモリ１３と制御部１４とを有する。実施例１と異なる点は、メモリ１３のテーブル領域１３ｃにグローバルキャッシュ管理表を保持している点と、グローバルキャッシュ管理部１８を有する点である。なお、グローバルキャッシュ管理部１８は、代表サーバと他サーバとで処理が異なるので、それぞれについて説明する。
【００８１】
グローバルキャッシュ管理表は、どのサーバがどのファイルをキャッシュしているかを示し、そのサーバでどのくらい仮想記憶域が空いているかを示す情報である。図１１は、グローバルキャッシュ管理表の例を示す図である。図１１に示すように、グローバルキャッシュ管理表は、「ｉｎｏｄｅ、ファイル名、ＩＰ（Internet  Protocol）アドレス、サーバの仮想記憶域の残量」から構成される。
【００８２】
この「ｉｎｏｄｅ」は、メモリにキャッシュされているファイルを識別するｉｎｏｄｅ番号であり、「ファイル名」はそのｉｎｏｄｅ番号で示されるデータの持つファイル名である。「ＩＰアドレス」は、ファイルをキャッシュしているサーバのＩＰアドレスである。「サーバの仮想記憶域の残量」は、サーバからキャッシュされているファイル情報を取得した時点でのそのサーバの仮想記憶域の残量である。図１１の場合、ｉｎｏｄｅ番号が「０ｘ１２３４５ｂｂｂ」であるファイルは、ファイル名が「／ｄａｔａ／ｆｉｌｅ１」であり、ＩＰアドレスが「１０．１０．１０．１００」のサーバにキャッシュされており、この情報が取得された時点でのそのサーバの仮想記憶域の残量が「９００」ＭＢであったことを示す。
【００８３】
このようなグローバルキャッシュ管理表は、各サーバが管理するキャッシュ管理情報の末尾から事前に定義されたエントリ数だけ取得された情報である。つまり、グローバルキャッシュ管理表は、各サーバのページキャッシュ領域１３ｂから削除されにくいページキャッシュの情報となっている。
【００８４】
グローバルキャッシュ管理部１８は、グローバルキャッシュ管理表の生成、グローバルキャッシュ管理表の配布、エントリ情報の送信を実行する処理部である。ここでは、代表ノードの場合と他ノードの場合とについて説明する。
【００８５】
（代表ノード）
ノード１０が代表ノードであるとする。この場合、グローバルキャッシュ管理部１８は、グローバルキャッシュ管理表の生成および配布を実行する。具体的には、グローバルキャッシュ管理部１８は、キャッシュしているファイルのｉｎｏｄｅ番号とファイル名と仮想記憶域の残量とを他のノードから受信した場合に、グローバルキャッシュ管理表の生成または更新を実行して各サーバに配布する。
【００８６】
例えば、グローバルキャッシュ管理部１８は、サーバ２０からｉｎｏｄｅ番号とファイル名と仮想記憶域の残量とを受信した場合に、サーバ２０のＩＰアドレスとｉｎｏｄｅ番号とファイル名と仮想記憶域の残量とを対応付けたエントリを生成して、グローバルキャッシュ管理表に追加またはマージする。このとき、グローバルキャッシュ管理部１８は、同一ＩＰアドレスからのデータについては、前回受信した古い情報を削除する。そして、グローバルキャッシュ管理部１８は、更新したグローバルキャッシュ管理表のコピーを、サーバ１０と接続される各サーバに配布する。このとき、グローバルキャッシュ管理部１８は、グローバルキャッシュ管理表全体のコピーを配布してもよく、前回からの差分だけを配布してもよい。こうすることで、各サーバが共通のグローバルキャッシュ管理表を保持することができる。
【００８７】
（一般ノード）
次に、ノード１０が代表ノード以外の一般ノードであるとする。この場合、グローバルキャッシュ管理部１８は、グローバルキャッシュ管理表のエントリ情報の送信を実行する。具体的には、グローバルキャッシュ管理部１８は、所定の間隔で、キャッシュ管理情報の最後尾から事前に定義された数だけエントリを取得し、ｉｎｏｄｅ番号に対応するファイル名を取得し、取得した時点の仮想記憶域の空き容量をＯＳから取得する。そして、グローバルキャッシュ管理部１８は、取得した情報を代表ノードに送信する。グローバルキャッシュ管理部１８は、この送信の応答として、代表サーバからグローバルキャッシュ管理表のコピーを受信する。そして、グローバルキャッシュ管理部１８は、受信したグローバルキャッシュ管理表のコピーで、メモリ１３のテーブル領域１３ｃに格納されるグローバルキャッシュ管理表を更新する。
【００８８】
［処理の流れ］
次に、実施例２に係るサーバ１０が実行する処理の流れを説明する。図１２は、実施例２に係るサーバが実行するグローバルキャッシュ管理処理の流れを示すフローチャートである。図１２に示した処理は、図６に示したＳ１０２とＳ１０３の間、Ｓ１１５とＳ１０３の間で、それぞれ実行される。
【００８９】
キャッシュ管理部１７の算出部１７ｂは、Ｓ１０２で選択した先頭エントリに含まれるｉｎｏｄｅ番号に対応するファイル名を取得し、そのファイル名が何個グローバルキャッシュ管理表に格納されているかを計数する（Ｓ２０１）。まずファイル名が一致するかどうかを判断し、ファイル名が一致する場合に、そのサーバの仮想記憶域の残量が閾値以上である場合に、格納されていると判断する。その格納数の合計を当該ファイルのキャッシュしているサーバの台数（Ｎ）とする。
【００９０】
算出部１７ｂは、取得したサーバの台数（Ｎ）が０か否かを判定する（Ｓ２０２）。０の場合には（Ｓ２０２肯定）、サーバ１０は、図６のＳ１０３以降を実行する（Ｓ２０７）。０以外の場合には（Ｓ２０２否定）、サーバ１０は、Ｓ２０３を実行する。
【００９１】
そして、算出部１７ｂは、取得したサーバの台数（Ｎ）が閾値よりも大きいか否かを判定する（Ｓ２０３）。算出部１７ｂは、取得したサーバの台数（Ｎ）が閾値よりも大きいと判定した場合（Ｓ２０３肯定）、図６のＳ１１５以降を実行する（Ｓ２０４）。
【００９２】
一方、算出部１７ｂは、取得したサーバの台数（Ｎ）が閾値よりも小さいと判定した場合（Ｓ２０３否定）、当該ｉｎｏｄｅ番号のファイルが、事前に設定された削除対象のファイルであるかを判定する（Ｓ２０５）。
【００９３】
そして、算出部１７ｂは、当該ｉｎｏｄｅ番号のファイルが事前に設定された削除対象のファイルであると判断した場合（Ｓ２０５肯定）、図６のＳ１０８以降を実行する（Ｓ２０６）。一方、算出部１７ｂは、当該ｉｎｏｄｅ番号のファイルが事前に設定された削除対象のファイルでないと判断した場合（Ｓ２０５否定）、図６のＳ１０３以降を実行する（Ｓ２０７）。
【００９４】
すなわち、算出部１７ｂは、分散処理等に使用するデータを格納するディレクトリを予め定義しておき、このディレクトリ以下にあるファイルは１個のサーバでキャッシュされていれば十分と判定し、積極的にキャッシュから削除するようにする。
【００９５】
このように、実施例２に係る各サーバは、自サーバのキャッシュ状況に加えて他のサーバのキャッシュ状況を考慮して、キャッシュアウト処理を実行することができる。具体的には、実施例２に係る各サーバは、各サーバ間で共通に保持されるファイルについては、重要な情報である可能性が高いとして削除対象から除外することができる。また、実施例２に係る各サーバは、グローバルキャッシュ管理表に格納されており、かつ、そのサーバの仮想記憶域の残量が少ない場合には、削除対象から除外することで、そのキャッシュがＯＳによって強制的に削除された場合でも、削除対象から除外したサーバにはキャッシュを残すことができ、すべてのサーバからそのファイルのデータがキャッシュアウトすることを防止することができる。
【実施例３】
【００９６】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００９７】
（ディスク）
例えば、図２等で説明したディスク１２は、ハードディスクドライブに限定されるものではなく、ＳＳＤ（Solid  State  Drive）などであってもよく、メモリに比べて低速であり、キャッシュの元データが記憶される記憶装置であればよい。
【００９８】
（空き容量の判定）
例えば、ファイルをキャッシュから削除する判定基準の１つとして、サーバの仮想記憶域の残量を用いる場合を説明したが、これに限定されるものではない。例えば、実施例１では、ページキャッシュ既解放率「Ｒ」が閾値「Ｒｔ」より小さいか否かだけを判定するようにしてもよい。また、実施例２では、Ｓ２０３とＳ２０４の処理を省略することもできる。
【００９９】
（削除するファイルを選択する手法）
例えば、実施例１では、ページキャッシュ既解放率「Ｒ」を算出して、削除対象のファイルを特定してから、当該ファイルのページキャッシュをメモリから選択して削除する例について説明したが、これに限定されるものではない。例えば、サーバは、ページキャッシュ既解放率「Ｒ」を算出することなく、単に最近参照されていないページキャッシュを削除すると決定する。そして、サーバは、当該ページキャッシュのｉｎｏｄｅ番号と同じｉｎｏｄｅ番号を有するページキャッシュを一括して、メモリから選択して削除することもできる。
【０１００】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１０１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、キャッシュ管理部１７とグローバルキャッシュ管理部１８とを統合することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１０２】
（ハードウェア構成）
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
【０１０３】
図１３は、メモリ管理プログラムを実行するコンピュータのハードウェア構成例を示す図である。図１３に示すように、コンピュータ１００は、ＣＰＵ１０２、入力装置１０３、出力装置１０４、通信インタフェース１０５、媒体読取装置１０６、ＨＤＤ（Hard  Disk  Drive）１０７、ＲＡＭ（Random  Access  Memory）１０８、メモリ１０９を有する。また、図１３に示した各部は、バス１０１で相互に接続される。
【０１０４】
入力装置１０３は、マウスやキーボードであり、出力装置１０４は、ディスプレイなどであり、通信インタフェース１０５は、ＮＩＣ（Network  Interface  Card）などのインタフェースである。ＨＤＤ１０７は、メモリ管理プログラム１０７ａとともに、図２で説明した各テーブル等を記憶する。記録媒体の例としてＨＤＤ１０７を例に挙げたが、ＲＯＭ（Read  Only  Memory）、ＲＡＭ、ＣＤ−ＲＯＭ等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【０１０５】
ＣＰＵ１０２は、メモリ管理プログラム１０７ａを読み出してＲＡＭ１０８に展開することで、図２や図１０等で説明した各機能を実行するメモリ管理プロセス１０８ａを動作させる。すなわち、メモリ管理プロセス１０８ａは、ＯＳ実行部１５、アプリ実行部１６、キャッシュ管理部１７、グローバルキャッシュ管理部１８を実行する。このようにコンピュータ１００は、プログラムを読み出して実行することでメモリ管理方法を実行する情報処理装置として動作する。
【０１０６】
また、コンピュータ１００は、媒体読取装置１０６によって記録媒体からメモリ管理プログラムを読み出し、読み出されたメモリ管理プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【０１０７】
１０  サーバ
１１  通信制御部
１２  ディスク
１２ａ  ファイル領域
１２ｂ  定義値領域
１３  メモリ
１３ａ  管理領域
１３ｂ  ページキャッシュ領域
１３ｃ  テーブル領域
１４  制御部
１５  ＯＳ実行部
１６  アプリ実行部
１７  キャッシュ管理部
１７ａ  生成部
１７ｂ  算出部
１７ｃ  選択部
１７ｄ  削除依頼部
１７ｅ  閾値更新部
１８  グローバルキャッシュ管理部
【図１】
0005861473.tif 000002
【図２】
0005861473.tif 000003
【図３】
0005861473.tif 000004
【図４】
0005861473.tif 000005
【図５】
0005861473.tif 000006
【図６】
0005861473.tif 000007
【図７】
0005861473.tif 000008
【図８】
0005861473.tif 000009
【図９】
0005861473.tif 000010
【図１０】
0005861473.tif 000011
【図１１】
0005861473.tif 000012
【図１２】
0005861473.tif 000013
【図１３】
0005861473.tif 000014