JP2013156766A - 情報処理装置、メモリ管理方法およびメモリ管理プログラム - Google Patents

情報処理装置、メモリ管理方法およびメモリ管理プログラム Download PDF

Info

Publication number
JP2013156766A
JP2013156766A JP2012015694A JP2012015694A JP2013156766A JP 2013156766 A JP2013156766 A JP 2013156766A JP 2012015694 A JP2012015694 A JP 2012015694A JP 2012015694 A JP2012015694 A JP 2012015694A JP 2013156766 A JP2013156766 A JP 2013156766A
Authority
JP
Japan
Prior art keywords
data
memory
unit
cache
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012015694A
Other languages
English (en)
Other versions
JP5861473B2 (ja
Inventor
Akira Ochi
亮 越智
Yasuo Koike
康夫 小池
Toshiyuki Maeda
敏之 前田
Tomonori Furuta
智徳 古田
Fumiaki Ito
史昭 伊藤
Tadahiro Miyaji
忠宏 宮路
Kazuhisa Fujita
藤田  和久
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012015694A priority Critical patent/JP5861473B2/ja
Priority to EP13152332.6A priority patent/EP2624141A1/en
Priority to US13/750,196 priority patent/US9021208B2/en
Priority to CN201310030552.2A priority patent/CN103294609B/zh
Publication of JP2013156766A publication Critical patent/JP2013156766A/ja
Application granted granted Critical
Publication of JP5861473B2 publication Critical patent/JP5861473B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】処理性能の劣化を抑制することを課題とする。
【解決手段】サーバは、ディスクなどの記憶部から読み出されたデータまたは記憶部に書き込まれたデータをメモリにキャッシュする。サーバは、キャッシュ制御によってメモリにキャッシュされたデータをメモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータをメモリから選択する。サーバは、削除対象のデータと選択されたデータとを一括してメモリから削除する。
【選択図】図2

Description

本発明は、情報処理装置、メモリ管理方法およびメモリ管理プログラムに関する。
従来、データへのアクセスを高速化する技術としてキャッシュが知られている。例えば、コンピュータのオペレーティングシステム(OS)において、アクセス速度が遅いディスクなどの記憶装置に記憶されるデータの一部を、アクセス速度が速いメモリなどの記憶装置に記憶させることで、データへのアクセスを高速化することが行われている。
一般的に、アクセス速度が速いメモリなどの記憶装置は容量が小さく、プログラムの実行領域、OSの管理用領域などキャッシュ以外の用途にも使用される。このため、OSは、ある程度の余裕をもたせておくようにメモリ領域を管理する。例えば、OSは、メモリの使用可能な残量が所定値を下回ると、キャッシュ領域に記憶されるデータをメモリから削除するキャッシュアウト処理を実行して、メモリ残量を回復させる。
このキャッシュアウト処理としては、LRU(Least Recently Used)やMRU(Most Recently Used)などが知られている。LRUは、最も長い間利用されていないデータを削除する手法であり、MRUは、最近使用されたデータを削除する手法である。これら以外にも、キャッシュされているデータに対して、ユーザが残しておきたい順に優先度を付けておき、優先度が低いものから削除する手法などが知られている。
また、上述したOSによる制御以外にも、例えば、アプリケーション層とOSによるキャッシュ制御との間に、アプリケーションによるキャッシュ制御を実行させる中間層を設けて、アプリケーションによってキャッシュを管理する手法も知られている。
特開平7−182220号公報 特開平11−96102号公報
しかしながら、従来の技術では、キャッシュ領域にフラグメンテーションが発生し、アプリケーションの実行速度が低下することから、処理性能が劣化するという問題がある。
例えば、従来の技術では、キャッシュ領域からデータを削除する際に、4キロバイトのページ単位で削除する。このため、1ファイルが4キロバイト以上である場合、キャッシュ領域上にファイルの全体が残らず、ファイルの一部のみがキャッシュ領域に残る場合がある。すなわち、キャッシュ領域のフラグメンテーションが発生する。このような状態で、あるファイルに対するアクセスを行った場合に、キャッシュ領域では解決できず、ディスクへのアクセスを実行して、キャッシュ領域にない一部のデータを読み出すことになる。この結果、低速なディスクアクセスが発生して、アプリケーション実行速度が遅くなり、処理性能の劣化を招く。
また、通常のキャッシュ制御における階層構造に新たな層を加える手法では、処理層が1つ増えるので、キャッシュ領域からデータを読み出す速度の劣化が発生する。例えば、アプリケーションがキャッシュからデータを読み出す場合、アプリケーションによるキャッシュ制御を介して、通常のOSによるキャッシュ制御に、データの読み出しを要求する。その後、通常のOSによるキャッシュ制御によって読み出されたデータを、アプリケーションによるキャッシュ制御を介して取得する。このように、階層が増えたことにより処理が増えるので、アプリケーション実行速度が遅くなり、結果として処理性能が劣化する。
1つの側面では、処理性能の劣化を抑制することができる情報処理装置、メモリ管理方法およびメモリ管理プログラムを提供することを目的とする。
第1の案では、情報処理装置は、記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュするキャッシュ制御部を有する。情報処理装置は、前記キャッシュ制御部によって前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する選択部を有する。情報処理装置は、前記削除対象のデータと前記選択部によって選択されたデータとを前記メモリから削除する削除部を有する。
処理性能の劣化を抑制することができる。
図1は、実施例1に係る情報処理システムの全体構成例を示す図である。 図2は、実施例1に係るサーバの構成を示す機能ブロック図である。 図3は、ディスクの定義値領域に記憶される情報の例を示す図である。 図4は、メモリのページキャッシュ領域の例を示す図である。 図5は、メモリのテーブル領域に記憶されるキャッシュ管理情報の例を示す図である。 図6は、実施例1に係るサーバが実行するキャッシュ管理処理の流れを示すフローチャートである。 図7は、ページキャッシュの削除によるエントリ更新処理の具体例を示す図である。 図8は、ファイルのリードまたはライトによるエントリ更新処理の具体例を示す図である。 図9は、実施例2に係る情報処理システムの全体構成例を示す図である。 図10は、実施例2に係るサーバの構成を示す機能ブロック図である。 図11は、グローバルキャッシュ管理表の例を示す図である。 図12は、実施例2に係るサーバが実行するグローバルキャッシュ管理処理の流れを示すフローチャートである。 図13は、メモリ管理プログラムを実行するコンピュータのハードウェア構成例を示す図である。
以下に、本願の開示する情報処理装置、メモリ管理方法およびメモリ管理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[全体構成]
図1は、実施例1に係る情報処理システムの全体構成例を示す図である。図1に示すように、情報処理システムは、サーバ10とサーバ20とサーバ30とがネットワーク5を介して相互に接続される。なお、ここでは、3台のサーバで構成される例を示したが、これに限定されるものではなく、1台以上であればよい。また、各サーバは、例えばWebサーバ、アプリケーションサーバなどであり、処理内容を限定するものではない。
また、図1に示した情報処理システムは、各サーバが各々で各種処理を実行してもよく、各サーバが協働して処理を実行してもよい。協働する例としては、例えばHadoopやHDFS(Hadoop Distributed File System)を用いた分散処理システムなどがある。
このような情報処理システムにおける各サーバは、記憶部から読み出されたデータまたは記憶部に書き込まれたデータを、OSカーネルが管理するページキャッシュ領域(以下、ページキャッシュと記載する場合がある)に記憶する。そして、各サーバは、OSカーネルの管理するページキャッシュ領域に記憶されたデータを削除する際に、削除対象のデータと同一ファイルに含まれるデータをOSカーネルの管理するページキャッシュ領域から選択する。その後、各サーバは、削除対象のデータと選択されたデータとを削除する。なお、以降ではOSカーネルの管理するページキャッシュ領域のことを単にページキャッシュと記述する。またページキャッシュに記憶することを単にキャッシュすると記述する。
例えば、各サーバは、最近参照されていないデータをページキャッシュから削除する際に、当該ページキャッシュが有するinode番号を特定する。そして、各サーバは、特定したinode番号と同じinode番号を有するページキャッシュをページキャッシュから特定する。つまり、各サーバは、ページキャッシュに記憶されているデータのうち、削除対象データを含むファイルの一部であるデータを特定する。その後、各サーバは、特定したデータと削除対象のデータとをページキャッシュから削除する。
このように、各サーバは、キャッシュアウトでページキャッシュ上のデータを削除する際に、ページ単位かつファイル単位でページキャッシュ上のデータを削除することができる。この結果、ページキャッシュのフラグメンテーションを抑制し、アプリケーションの処理速度の低下を抑制することができ、処理性能の劣化を抑制することができる。
[サーバの構成]
次に、図1に示したサーバについて説明する。図1に示したサーバは同様の構成を有するので、ここでは、サーバ10を例にして説明する。図2は、実施例1に係るサーバの構成を示す機能ブロック図である。図2に示すように、サーバ10は、通信制御部11と、ディスク12と、メモリ13と、制御部14とを有する。なお、図2に示した処理部は、あくまで例示であり、マウスなどの入力部やディスプレイなどの表示部など他の処理部を有していてもよい。
通信制御部11は、他のサーバとの通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部11は、他のサーバから受信した各種要求やデータを制御部14に出力する。また、通信制御部11は、制御部14から出力された処理結果やデータを宛先のサーバに送信する。
ディスク12は、データ等を記憶する記憶装置であり、例えばハードディスクドライブなどである。このディスク12は、ファイル領域12aと定義値領域12bとを有する。ファイル領域12aは、制御部14のアプリ実行部16等が実行したアプリケーションが使用するファイルなどのデータを記憶する領域である。
定義値領域12bは、キャッシュ管理部17がファイルをメモリ13から削除するか否かを判定する際に使用する各種定義値が記憶される領域である。図3は、ディスクの定義値領域に記憶される情報の例を示す図である。図3に示すように、定義値領域12bには、「削除率初期値Rt」と「最小削除率Rtmin」と「仮想記憶域閾値Ft」と「喪失加速度αt1」と「喪失加速度αt2」とが記憶される。
「削除率初期値Rt」は、キャッシュされているページをメモリ13から削除するか否かを判定する際に使用される閾値の初期値であり、例えば0.02(2%)などと指定される。この「削除率初期値Rt」は、閾値更新部17eによって更新される。「最小削除率Rtmin」は、上記閾値の最小値であり、管理者等によって設定される。「仮想記憶域閾値Ft」は、メモリ13の物理領域に対して仮想的に割当てた仮想メモリ領域の空き容量に余裕があるかないかを判定する際に使用する閾値であり、管理者等によって設定される。「喪失加速度αt1」と「喪失加速度αt2」は、ページキャッシュの解放速度を判定する際に使用される閾値であり、管理者等によって設定される。キャッシュ管理部17によって算出された解放率(R)がαt1からαt2の間であれば、ページキャッシュの解放速度は安全値であると判定される。
図2に戻り、メモリ13は、制御部14が実行するプログラム等を記憶する記憶装置であり、ディスク12から読み出されたデータまたはディスク12に書き込まれたデータをキャッシュする。このメモリ13は、管理領域13aとページキャッシュ領域13bとテーブル領域13cとを有する。管理領域13aは、プログラムの実行領域、OSの管理用領域などキャッシュ以外の用途に使用される領域である。
ページキャッシュ領域13bは、ディスク12から読み出されたまたはディスク12に書き込まれたデータ、すなわちキャッシュを記憶する領域である。図4は、メモリのページキャッシュ領域の例を示す図である。図4に示すように、ページキャッシュ領域13bは、OSカーネルが管理する資源である。図4の場合、1ページ(1マス)が4キロバイトであり、1ページには1つのファイルのデータしか格納されない。4キロバイトを越えるサイズのファイルのデータは、複数のページを占有する。また、ページアウト処理はページ単位に実行される。
図4の場合、ファイル04(F04)のデータが連続したページに格納されており、ファイル01(F01)のデータが6ページを占有している状態を示す。また、ファイル02(F02)のデータが不連続なページに格納されていることを示す。
テーブル領域13cは、キャッシュ管理部17が使用する管理情報を記憶する領域である。図5は、メモリのテーブル領域に記憶されるキャッシュ管理情報の例を示す図である。図5に示すように、キャッシュ管理情報は、メモリ13にキャッシュされているファイル単位のページキャッシュエントリがリンクリストで構成された情報である。先頭には、メモリ13上で最も参照されていないファイルが位置する。すなわち、先頭に近いほどOSによって破棄されやすく、終端に近いほどOSによって破棄されにくい。
各ページキャッシュエントリは、「inode番号」と「前回ページキャッシュ数」と「ディスクから読み書きしたページ数」と「所有者情報」と「アクセス権限情報」とを有する。「inode番号」は、例えばファイルやファイルに関する管理情報を識別する識別子である。「前回ページキャッシュ数」は、所定時間前にメモリ13にキャッシュされていたファイルの総ページ数であり、前回、キャッシュ管理部17がメモリから削除するか否かの判定を行った時点でキャッシュされていたファイルの総ページ数である。
「ディスクから読み書きしたページ数」は、ディスク12から読み出されたファイルのページ数とディスク12に書き込まれたファイルのページ数との合計値である。この「ディスクから読み書きしたページ数」は、生成部17aによって更新される。「所有者情報」は、ファイルを所有しているユーザ名である。「アクセス権限情報」は、ファイルに与えられているアクセス権限を示す情報である。「inode番号」と「所有者情報」と「アクセス権限情報」とは、OSやページキャッシュから取得することができる。
制御部14は、サーバ10全体の処理を司る処理部である、例えばCPU(Central Processing Unit)などの電子回路である。この制御部14は、OS実行部15とアプリ実行部16とキャッシュ管理部17とを有する。
OS実行部15は、OSを実行する処理部である。このOS実行部15によって実行されたOSは、メモリ13へページキャッシュを追加し、メモリ13からページキャッシュを削除する。例えば、OS実行部15は、後述するキャッシュ管理部17から受信したinode番号を有する各ページキャッシュを、メモリ13のページキャッシュ領域から削除する。
アプリ実行部16は、アプリケーションを実行する処理部である。このアプリ実行部16によって実行されたアプリケーションは、使用するデータがキャッシュされているか否かをメモリ13のページキャッシュ領域13bを参照して判定する。そして、アプリケーションは、キャッシュヒットした場合には、該当するデータすなわちページをページキャッシュ領域13bから読み出す。また、アプリケーションは、キャッシュミスした場合には、該当するデータをディスク12のファイル領域12aが読み出す。そして、アプリケーションは、ディスク12のファイル領域12aから読み出したデータを、メモリ13のページキャッシュ領域13bに格納する。
キャッシュ管理部17は、生成部17aと算出部17bと選択部17cと削除依頼部17dと閾値更新部17eとを有し、これらによって、キャッシュされているページを管理する処理部である。
生成部17aは、メモリ13にキャッシュされているデータの情報を示すキャッシュ管理情報を生成して、メモリ13のテーブル領域13cに格納する処理部である。例えば、生成部17aは、サーバ10が起動してから所定時間経過した後、ページキャッシュ領域13bを参照して、ページキャッシュに含まれるinode番号から、キャッシュされているファイルを特定する。そして、生成部17aは、特定したファイルのうち最近参照されていないファイルのエントリから順にリンクさせたキャッシュ管理情報を生成する。この際、生成部17aは、ファイルの所有者情報、アクセス権限情報をページキャッシュやOSから取得して、生成したキャッシュ管理情報の各エントリに格納する。
また、生成部17aは、キャッシュ管理情報を更新する処理部である。例えば、生成部17aは、アプリ実行部16が実行したアプリケーションによって、データのリードまたはライトが実行された場合に、当該データのinode番号等から、リードまたはライトされたデータを含むファイルを特定する。そして、生成部17aは、特定したファイルについて作成されたページキャッシュの数を計数して、キャッシュ管理情報の「ディスクから読み書きしたページ数」に格納する。
算出部17bは、ページキャッシュされているファイルにおいて、ページキャッシュが所定時間内にメモリから解放された割合を示すページキャッシュ既解放率「R」を算出する処理部である。例えば、算出部17bは、キャッシュ管理情報の先頭エントリから所定間隔で、ページキャッシュ既解放率「R」を算出する。
具体的に説明すると、算出部17bは、キャッシュ管理情報の先頭エントリのinode番号を用いて、OSから現時点でキャッシュされているページキャッシュの総数「Pc」を取得する。そして、算出部17bは、対象エントリから前回ページキャッシュ数「Pp」とディスクから読み書きしたページ数「Δ」を取得する。その後、算出部17bは、ページキャッシュ既解放率「R」=「1−(Pc/Pp+Δ)」を算出し、その結果を選択部17cに出力する。
ここで、算出部17bが算出するページキャッシュ既解放率「R」の計算式について説明する。ページキャッシュ既解放率「R」を算出する上記式は、前回チェックしたときのページキャッシュの数に、その後のアクセスで新たに作成したページキャッシュの数を加えて分母とする。この式において、OSによるページキャッシュの解放が実施されている場合は、現在のページキャッシュ数(分子)が分母よりも小さくなる。また、この式において、OSによる解放が頻繁に行われている場合は、分子が極端に小さくなり、結果としてページキャッシュ既解放率「R」は1に近くなる。逆にOSによるページキャッシュの解放が行われていない場合は分子=分母となり、ページキャッシュ既解放率「R」は0になる。
選択部17cは、算出部17bによって算出された割合がページキャッシュ既解放率「R」が閾値を超える場合に、削除対象のエントリに該当するファイルに含まれるデータをメモリ13から選択する処理部である。このとき、選択部17cは、「R」が閾値を超える場合、かつ、メモリ13の物理領域に対して仮想的に割当てた仮想メモリ領域の空き容量「F」が所定値よりも少ない場合に、該当するファイルに含まれるデータをメモリ13から選択することもできる。
例えば、選択部17cは、算出部17bによってページキャッシュ既解放率「R」が算出されると、定義値領域12bから削除率初期値「Rt」と最小削除率「Rtmin」と「仮想記憶域閾値Ft」とを取得する。また、選択部17cは、仮想メモリ領域の空き容量「Ft」をOSから取得する。そして、選択部17cは、ページキャッシュ既解放率「R」が削除率初期値「Rt」より大きく、かつ、仮想メモリ領域の空き容量「F」が仮想記憶域閾値「Ft」より小さいか否かを判定する。その後、選択部17cは、上記条件を満たす場合に、対象となっているキャッシュ管理情報のエントリからinode番号を取得して削除依頼部17dに出力する。
削除依頼部17dは、選択部17cによって選択されたデータの削除をOSに依頼する処理部である。例えば、削除依頼部17dは、選択部17cから通知されたinode番号とともに当該inode番号を有するページキャッシュを削除する依頼を、OS実行部15が実行するOSに出力する。
その後、OSは、受信したinode番号を有するページキャッシュをメモリ13から削除する。すると、生成部17aは、キャッシュ管理情報において当該inodeに対応するエントリの「前回ページキャッシュ数」を「0」に更新する。さらに、生成部17aは、当該エントリの「ディスクから読み書きしたページ数」を「0」に更新する。ここで、生成部17aは、当該エントリに対応したファイルのページキャッシュが削除されなかった場合には、今回取得されたページキャッシュ数「Pc」を「前回ページキャッシュ数」とする。
閾値更新部17eは、今回算出されたページキャッシュ既解放率「R」と前回算出されたページキャッシュ既解放率「Rp」とを比較して、ページキャッシュの解放が適切に行われるように削除率初期値「Rt」を更新する処理部である。なお、前回算出されたページキャッシュ既解放率「Rp」は、エントリやファイルに関係なく、算出されるたびにメモリ13等に記憶される。
例えば、閾値更新部17eは、算出部17bによって算出されたページキャッシュ既解放率「R」と、所定時間前のページキャッシュ既解放率「Rp」との差「α」が喪失加速度危険値「αt1」より大きい場合には、削除率初期値「Rt」をより小さい値に変更する。また、閾値更新部17eは、算出部17bによって算出されたページキャッシュ既解放率「R」と、所定時間前のページキャッシュ既解放率「Rp」との差「α」が喪失加速度安全値「αt2」より小さい場合には、削除率初期値「Rt」をより大きい値に変更する。このとき、閾値更新部17eは、新たな削除率初期値「Rt」が最小削除率「Rtmin」を下回らないように変更する。
つまり、閾値更新部17eは、ページキャッシュ既解放率が上昇傾向にあるか否かを判定し、上昇傾向が大きい場合に閾値を変更する。例えば、閾値更新部17eは、「α」が「αt1」より大きい場合には、ページキャッシュの解放速度が不十分であると判定し、「Rt」をより小さい値に更新する。こうすることで、選択部17cがページキャッシュ削除と判定する可能性が高くなって、ページキャッシュの解放速度が上がり、装置全体の仮想記憶域の残量に余裕ができる。
また、閾値更新部17eは、「α」が「αt2」より小さい場合には、ページキャッシュの解放速度が十分であると判定し、「Rt」をより大きい値に更新する。こうすることで、選択部17cがページキャッシュ削除と判定する可能性が小さくなり、ページキャッシュの解放速度を低減して頻繁にページキャッシュの解放が発生することを抑制できる。
[処理の流れ]
次に、サーバ10が実行するキャッシュ管理処理の流れを説明する。図6は、実施例1に係るサーバが実行するキャッシュ管理処理の流れを示すフローチャートである。
図6に示すように、キャッシュ管理部17の算出部17bは、契機に到達すると(S101肯定)、ページキャッシュ領域13bに格納されるキャッシュ管理情報の先頭エントリを選択する(S102)。なお、契機の例としては、所定間隔でもよく、ディスクアクセスが発生したときでもよく、任意に設定することができる。
続いて、算出部17bは、選択したエントリ内から前回のページキャッシュ数「Pp」とディスクから読み書きしたページ数「Δ」を取得する(S103)。また、算出部17bは、選択したエントリ内からinode番号を取得してOSに出力し、当該inode番号を有する現在のページキャッシュの総数「Pc」をOSから取得する(S104)。
その後、算出部17bは、ページキャッシュ既解放率「R」=「1−(Pc/Pp+Δ)」を算出する(S105)。また、選択部17cは、仮想メモリ領域の空き容量「F」をOSから取得する(S106)。
続いて、選択部17cは、定義値領域12bから削除率初期値「Rt」と「仮想記憶域閾値Ft」とを取得し、「R>RtかつF<Ft」を満たすか否かを判定する(S107)。
そして、削除依頼部17dは、選択部17cによって「R>RtかつF<Ft」を満たすと判定された場合(S107肯定)、該当エントリ内から取得したinode番号を有するページキャッシュの削除をOSに依頼する(S108)。その後、生成部17aは、該当エントリを更新した後、該当エントリをキャッシュ管理情報の最後尾に移動させる(S109)。
続いて、閾値更新部17eは、前回算出されたページキャッシュ既解放率「Rp」をメモリ13等から取得して、「α=今回算出されたページキャッシュ既解放率「R」−前回算出されたページキャッシュ既解放率「Rp」」を算出する(S110)。
そして、閾値更新部17eは、定義値領域12bから喪失加速度危険値「αt1」を取得し、S110で算出した「α」が喪失加速度危険値「αt1」より大きいか否かを判定する(S111)。
その後、閾値更新部17eは、「α」が喪失加速度危険値「αt1」より大きい場合(S111肯定)、定義値領域12bに格納される削除率初期値「Rt」を「現在の削除率初期値「Rt−RtΔ」で更新する(S112)。すなわち、閾値更新部17eは、削除率初期値「Rt」をより小さい値に更新する。このとき、閾値更新部17eは、削除率初期値「Rt」が喪失加速度安全値「αt2」を下回らないように、削除率初期値「Rt」を設定する。なお、RtΔは任意の値である。
一方、閾値更新部17eは、「α」が喪失加速度危険値「αt1」より小さい場合(S111否定)、定義値領域12bに格納される削除率初期値「Rt」を「現在の削除率初期値「Rt+RtΔ」で更新する(S113)。すなわち、閾値更新部17eは、削除率初期値「Rt」をより大きい値に更新する。
その後、キャッシュ管理部17は所定時間待機し(S114)、次の契機に到達すると(S114肯定)、算出部17bが、次のエントリを選択して(S115)、S103以降の処理を実行する。なお、S107において、選択部17cが「R>RtかつF<Ft」を満たさないと判定した場合も(S107否定)、キャッシュ管理部17は、S114以降の処理を実行する。
[具体例]
次に、上述した各処理の具体例を説明する。ここでは、ページキャッシュによるキャッシュ管理情報のエントリ更新処理とリードまたはライトによるキャッシュ管理情報のエントリ更新処理とを説明する。
(ページキャッシュの削除による更新)
図7は、ページキャッシュの削除によるエントリ更新処理の具体例を示す図である。図7に示すように、キャッシュ管理情報は、inode番号が「0x12345678」であるファイルの情報を先頭エントリとして、複数のエントリをリンク接続させて構成される。
このような構成において、所定の契機に到達すると、キャッシュ管理部17の算出部17bは、該当エントリ内から「前回ページキャッシュ数(Pc)」と「ディスクから読み書きしたページ数(Δ)」を取得する。また、算出部17bは、該当エントリのinode番号を用いて、「現在のページキャッシュ数(Pp)」をOSから取得する。そして、算出部17bは、ページキャッシュ既解放率「R」を算出する。その後、選択部17cは、仮想記憶域の空き容量「F」をOSから取得し、前回算出されたページキャッシュ既解放率「Rt」をメモリ13等から取得する。また、選択部17cは、定義値領域12bから「仮想記憶域閾値F0」を取得する。
そして、削除依頼部17dは、「R>RtかつF<F0」を満たす場合、該当エントリのinode番号をOSに通知して、当該inode番号を有するページキャッシュの削除を依頼する。こうして、OSは、通知されたinode番号を有する各ページキャッシュ、すなわち、同一ファイルに該当する各データをメモリ13のページキャッシュ領域13bから削除することができる。その後、生成部17aは、処理が終了したエントリの「前回ページキャッシュ数(Pc)」および「ディスクから読み書きしたページ(Δ)」をともに「0」に更新した後、キャッシュ管理情報の最後尾に移動させる。
ここで、先頭に位置するエントリ(inode番号=0x12345678)のページキャッシュを削除するか否かを判定する例を説明する。図7に示すように、対象のエントリには、「前回ページキャッシュ数(Pc)=1000」と「ディスクから読み書きしたページ(Δ)=0」が格納されている。また、各定義値は、図3に示した通りとし、前回算出されたR値である「Rp」は、0.02とする。
まず、算出部17bは、該当エントリのinode番号(0x12345678)をOSに通知して、「現在のページキャッシュ数(Pp)=900」をOSから取得する。そして、算出部17bは、ページキャッシュ既解放率「R」=「1−(Pc/Pp+Δ)」すなわち、「R=1−(900/(1000+0))=0.1」を算出する。
次に、選択部17cは、仮想記憶域の空き容量「F=80ギガバイト」をOSから取得する。そして、選択部17cは、「R>RtかつF<Ft」すなわち「0.1>0.02かつ80<100」を満たすか否かを判定する。そして、削除依頼部17dは、条件を満たすので、該当エントリに登録される「inode番号=0x12345678」を有するページキャッシュの削除をOSに依頼する。そして、OSは、「inode番号=0x12345678」を有する各ページキャッシュを、メモリ13のページキャッシュ領域13bから削除する。
続いて、生成部17aは、inode番号(0x12345678)のエントリにおける「前回ページキャッシュ数(Pc)」に「0」を格納するとともに「ディスクから読み書きしたページ(Δ)」に「0」を格納した後、当該エントリをキャッシュ管理情報の最後尾に移動させる。
その後、閾値更新部17eは、「α=R値(0.1)−Rp値(0.02)=0.08」を算出し、「α=0.08>αt1(0.05)」が成立することから、次回のRt値を現在のRt値から「0.01」を減算した値とする。すなわち、閾値更新部17eは、現在のRt値「0.1」から「0.01」を減算した「0.09」を次回の削除率初期値Rtとして、定義値を更新する。また、今回算出されたR値(0.1)は、次回の算出時には、前回算出されたRp値として扱われる。
(リードまたはライトによる更新)
図8は、ファイルのリードまたはライトによるエントリ更新処理の具体例を示す図である。図8に示すように、キャッシュ管理情報は、inode番号が「0x12345678」であるファイルの情報を先頭エントリとして、複数のエントリをリンク接続させて構成される。
このような構成において、OSは、アプリケーションによる処理の実行によって、ファイルのリードまたはライトのシステムコールを発行して、該当するページキャッシュをメモリ13のページキャッシュ領域13bに格納する。つまり、アプリケーションが参照するファイルのデータがメモリ13にキャッシュされていない場合には、ディスク12から読み出してキャッシュする。このとき、キャッシュ管理部17の生成部17aは、OSによって作成されたページキャッシュの数を計数する。
その後、OSは、システムコールの延長でキャッシュ管理部17を読み出し、その際にキャッシュ管理情報における該当ファイルを指すオブジェクトへのアドレスをキャッシュ管理部17に送信する。キャッシュ管理部17の生成部17aは、受信したアドレスが指し示す、キャッシュ管理情報のエントリの「ディスクから読み書きしたページ数」に、計数したページキャッシュの総数を加算し、当該エントリをキャッシュ管理情報の最後尾に移動させる。
ここで、先頭から2番目に位置するエントリ(inode番号=0x12340012)についてリードまたはライトが発生した例で具体的に説明する。「inode番号=0x12340012」のファイル内がユーザ「root sys」によって操作され、当該ファイル内のデータに該当するページキャッシュが「200ページ」生成される。このとき、キャッシュ管理部17の生成部17aは、ユーザ情報である「root sys」、生成したページキャッシュ数「200」、ユーザに与えられたアクセス権「755」をOS等から取得して一時的に保持する。
その後、生成部17aは、OSから「inode番号=0x12340012」を受信すると、「inode番号=0x12340012」に対応するキャッシュ管理情報のエントリを特定する。そして、生成部17aは、図8に示すように、特定したエントリの「ディスクから読み書きしたページ数=10」に、一時的に保持するページキャッシュ数「200」を加算する。同様に、生成部17aは、特定したエントリの「所有者」を「root sys」に更新するとともに、「アクセス権」を「755」に更新する。その後、生成部17aは、「inode番号=0x12340012」に対応するエントリを、キャッシュ管理情報の最後尾に移動させる。
このようにして、生成部17aは、ファイルのリードまたはライトが発生するたびに、キャッシュ管理情報のエントリを更新する。また、更新されたエントリは、キャッシュ管理情報の最後尾に移動させられる。つまり、最近参照されたファイルは、ページキャッシュ削除の優先度が低くなる。このため、参照頻度の多いファイルのページキャッシュが削除されることを防止することができる。
上述したように、実施例1に係るサーバ10は、キャッシュデータのページ数の変化とディスクアクセス状況とから、ページキャッシュの解放が頻繁に行われていると判定した場合に、キャッシュから削除する。このサーバ10は、ページキャッシュを削除する際に、同じinode番号を有するページキャッシュを一括して選択対象とするので、ページ単位+ファイル単位で削除を実施することができる。つまり、実施例1に係るサーバ10は、キャッシュされている、同じファイル内のデータを一括して削除することができる。この結果、ページキャッシュの解放が頻繁に実施されているにも関らず、ファイルの一部しかメモリ13にキャッシュされていない状態を防止することができる。したがって、メモリ13内のフラグメンテーションの発生を抑制し、アプリケーション実行速度の低下を抑制できるので、サーバ10全体の処理性能の劣化を防止できる。
実施例1では、サーバ10単体でページキャッシュを削除する例を説明したが、これに限定されるものではなく、他のサーバのキャッシュ状況を考慮してページキャッシュを削除するか否かを判定することもできる。そこで、実施例2では、複数のサーバが連携してページキャッシュの削除を実行する例を説明する。
[全体構成]
図9は、実施例2に係る情報処理システムの全体構成例を示す図である。図9に示すように、この情報処理システムは、図1に示した情報処理システムと同様の構成を有する。実施例1と異なる点は、1台の代表サーバがグローバルキャッシュ管理表を保持し、それ以外の各サーバがグローバルキャッシュ管理表のコピーを保持している点である。
グローバルキャッシュ管理表は、各サーバのファイルのキャッシュ状況と、そのサーバの仮想記憶域の残量を示す情報である。このグローバルキャッシュ管理表は、1台の代表サーバで生成されて、各サーバに配布される。図9では、サーバ10がグローバルキャッシュ管理表を生成して各サーバにコピーを配布する。なお、代表サーバは任意に選択することができる。
各サーバは、実施例1で説明した処理を実行する前に、グローバルキャッシュ管理表を参照する。そして、各サーバは、削除対象のファイルが他の多くのサーバでキャッシュされている場合には、当該ファイルを削除対象から除外する。このようにすることで、常時共有される定義情報の可能性が高いファイルのページキャッシュからの削除を抑制することができる。
また、各サーバは、削除対象のファイルが他のいくつかのサーバでキャッシュされている(事前に定義した閾値台数以下)、かつ、そのキャッシュしているサーバの仮想記憶域が閾値以下の場合に、当該ファイルを削除対象から除外することもできる。キャッシュしているサーバの仮想記憶域が閾値以下ということは、OSが、メモリ不足を解消するために、キャッシュアウトする可能性があるということであり、そういうキャッシュエントリをキャッシュアウトの対象から除外することで、すべてのサーバのページキャッシュ上からそのファイルのデータを失うことを防止できる。
[サーバの構成]
図10は、実施例2に係るサーバの構成を示す機能ブロック図である。図10に示すように、サーバ10は、通信制御部11とディスク12とメモリ13と制御部14とを有する。実施例1と異なる点は、メモリ13のテーブル領域13cにグローバルキャッシュ管理表を保持している点と、グローバルキャッシュ管理部18を有する点である。なお、グローバルキャッシュ管理部18は、代表サーバと他サーバとで処理が異なるので、それぞれについて説明する。
グローバルキャッシュ管理表は、どのサーバがどのファイルをキャッシュしているかを示し、そのサーバでどのくらい仮想記憶域が空いているかを示す情報である。図11は、グローバルキャッシュ管理表の例を示す図である。図11に示すように、グローバルキャッシュ管理表は、「inode、ファイル名、IP(Internet Protocol)アドレス、サーバの仮想記憶域の残量」から構成される。
この「inode」は、メモリにキャッシュされているファイルを識別するinode番号であり、「ファイル名」はそのinode番号で示されるデータの持つファイル名である。「IPアドレス」は、ファイルをキャッシュしているサーバのIPアドレスである。「サーバの仮想記憶域の残量」は、サーバからキャッシュされているファイル情報を取得した時点でのそのサーバの仮想記憶域の残量である。図11の場合、inode番号が「0x12345bbb」であるファイルは、ファイル名が「/data/file1」であり、IPアドレスが「10.10.10.100」のサーバにキャッシュされており、この情報が取得された時点でのそのサーバの仮想記憶域の残量が「900」MBであったことを示す。
このようなグローバルキャッシュ管理表は、各サーバが管理するキャッシュ管理情報の末尾から事前に定義されたエントリ数だけ取得された情報である。つまり、グローバルキャッシュ管理表は、各サーバのページキャッシュ領域13bから削除されにくいページキャッシュの情報となっている。
グローバルキャッシュ管理部18は、グローバルキャッシュ管理表の生成、グローバルキャッシュ管理表の配布、エントリ情報の送信を実行する処理部である。ここでは、代表ノードの場合と他ノードの場合とについて説明する。
(代表ノード)
ノード10が代表ノードであるとする。この場合、グローバルキャッシュ管理部18は、グローバルキャッシュ管理表の生成および配布を実行する。具体的には、グローバルキャッシュ管理部18は、キャッシュしているファイルのinode番号とファイル名と仮想記憶域の残量とを他のノードから受信した場合に、グローバルキャッシュ管理表の生成または更新を実行して各サーバに配布する。
例えば、グローバルキャッシュ管理部18は、サーバ20からinode番号とファイル名と仮想記憶域の残量とを受信した場合に、サーバ20のIPアドレスとinode番号とファイル名と仮想記憶域の残量とを対応付けたエントリを生成して、グローバルキャッシュ管理表に追加またはマージする。このとき、グローバルキャッシュ管理部18は、同一IPアドレスからのデータについては、前回受信した古い情報を削除する。そして、グローバルキャッシュ管理部18は、更新したグローバルキャッシュ管理表のコピーを、サーバ10と接続される各サーバに配布する。このとき、グローバルキャッシュ管理部18は、グローバルキャッシュ管理表全体のコピーを配布してもよく、前回からの差分だけを配布してもよい。こうすることで、各サーバが共通のグローバルキャッシュ管理表を保持することができる。
(一般ノード)
次に、ノード10が代表ノード以外の一般ノードであるとする。この場合、グローバルキャッシュ管理部18は、グローバルキャッシュ管理表のエントリ情報の送信を実行する。具体的には、グローバルキャッシュ管理部18は、所定の間隔で、キャッシュ管理情報の最後尾から事前に定義された数だけエントリを取得し、inode番号に対応するファイル名を取得し、取得した時点の仮想記憶域の空き容量をOSから取得する。そして、グローバルキャッシュ管理部18は、取得した情報を代表ノードに送信する。グローバルキャッシュ管理部18は、この送信の応答として、代表サーバからグローバルキャッシュ管理表のコピーを受信する。そして、グローバルキャッシュ管理部18は、受信したグローバルキャッシュ管理表のコピーで、メモリ13のテーブル領域13cに格納されるグローバルキャッシュ管理表を更新する。
[処理の流れ]
次に、実施例2に係るサーバ10が実行する処理の流れを説明する。図12は、実施例2に係るサーバが実行するグローバルキャッシュ管理処理の流れを示すフローチャートである。図12に示した処理は、図6に示したS102とS103の間、S115とS103の間で、それぞれ実行される。
キャッシュ管理部17の算出部17bは、S102で選択した先頭エントリに含まれるinode番号に対応するファイル名を取得し、そのファイル名が何個グローバルキャッシュ管理表に格納されているかを計数する(S201)。まずファイル名が一致するかどうかを判断し、ファイル名が一致する場合に、そのサーバの仮想記憶域の残量が閾値以上である場合に、格納されていると判断する。その格納数の合計を当該ファイルのキャッシュしているサーバの台数(N)とする。
算出部17bは、取得したサーバの台数(N)が0か否かを判定する(S202)。0の場合には(S202肯定)、サーバ10は、図6のS103以降を実行する(S207)。0以外の場合には(S202否定)、サーバ10は、S203を実行する。
そして、算出部17bは、取得したサーバの台数(N)が閾値よりも大きいか否かを判定する(S203)。算出部17bは、取得したサーバの台数(N)が閾値よりも大きいと判定した場合(S203肯定)、図6のS115以降を実行する(S204)。
一方、算出部17bは、取得したサーバの台数(N)が閾値よりも小さいと判定した場合(S203否定)、当該inode番号のファイルが、事前に設定された削除対象のファイルであるかを判定する(S205)。
そして、算出部17bは、当該inode番号のファイルが事前に設定された削除対象のファイルであると判断した場合(S205肯定)、図6のS108以降を実行する(S206)。一方、算出部17bは、当該inode番号のファイルが事前に設定された削除対象のファイルでないと判断した場合(S205否定)、図6のS103以降を実行する(S207)。
すなわち、算出部17bは、分散処理等に使用するデータを格納するディレクトリを予め定義しておき、このディレクトリ以下にあるファイルは1個のサーバでキャッシュされていれば十分と判定し、積極的にキャッシュから削除するようにする。
このように、実施例2に係る各サーバは、自サーバのキャッシュ状況に加えて他のサーバのキャッシュ状況を考慮して、キャッシュアウト処理を実行することができる。具体的には、実施例2に係る各サーバは、各サーバ間で共通に保持されるファイルについては、重要な情報である可能性が高いとして削除対象から除外することができる。また、実施例2に係る各サーバは、グローバルキャッシュ管理表に格納されており、かつ、そのサーバの仮想記憶域の残量が少ない場合には、削除対象から除外することで、そのキャッシュがOSによって強制的に削除された場合でも、削除対象から除外したサーバにはキャッシュを残すことができ、すべてのサーバからそのファイルのデータがキャッシュアウトすることを防止することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
(ディスク)
例えば、図2等で説明したディスク12は、ハードディスクドライブに限定されるものではなく、SSD(Solid State Drive)などであってもよく、メモリに比べて低速であり、キャッシュの元データが記憶される記憶装置であればよい。
(空き容量の判定)
例えば、ファイルをキャッシュから削除する判定基準の1つとして、サーバの仮想記憶域の残量を用いる場合を説明したが、これに限定されるものではない。例えば、実施例1では、ページキャッシュ既解放率「R」が閾値「Rt」より小さいか否かだけを判定するようにしてもよい。また、実施例2では、S203とS204の処理を省略することもできる。
(削除するファイルを選択する手法)
例えば、実施例1では、ページキャッシュ既解放率「R」を算出して、削除対象のファイルを特定してから、当該ファイルのページキャッシュをメモリから選択して削除する例について説明したが、これに限定されるものではない。例えば、サーバは、ページキャッシュ既解放率「R」を算出することなく、単に最近参照されていないページキャッシュを削除すると決定する。そして、サーバは、当該ページキャッシュのinode番号と同じinode番号を有するページキャッシュを一括して、メモリから選択して削除することもできる。
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、キャッシュ管理部17とグローバルキャッシュ管理部18とを統合することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(ハードウェア構成)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
図13は、メモリ管理プログラムを実行するコンピュータのハードウェア構成例を示す図である。図13に示すように、コンピュータ100は、CPU102、入力装置103、出力装置104、通信インタフェース105、媒体読取装置106、HDD(Hard Disk Drive)107、RAM(Random Access Memory)108、メモリ109を有する。また、図13に示した各部は、バス101で相互に接続される。
入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NIC(Network Interface Card)などのインタフェースである。HDD107は、メモリ管理プログラム107aとともに、図2で説明した各テーブル等を記憶する。記録媒体の例としてHDD107を例に挙げたが、ROM(Read Only Memory)、RAM、CD−ROM等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
CPU102は、メモリ管理プログラム107aを読み出してRAM108に展開することで、図2や図10等で説明した各機能を実行するメモリ管理プロセス108aを動作させる。すなわち、メモリ管理プロセス108aは、OS実行部15、アプリ実行部16、キャッシュ管理部17、グローバルキャッシュ管理部18を実行する。このようにコンピュータ100は、プログラムを読み出して実行することでメモリ管理方法を実行する情報処理装置として動作する。
また、コンピュータ100は、媒体読取装置106によって記録媒体からメモリ管理プログラムを読み出し、読み出されたメモリ管理プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
10 サーバ
11 通信制御部
12 ディスク
12a ファイル領域
12b 定義値領域
13 メモリ
13a 管理領域
13b ページキャッシュ領域
13c テーブル領域
14 制御部
15 OS実行部
16 アプリ実行部
17 キャッシュ管理部
17a 生成部
17b 算出部
17c 選択部
17d 削除依頼部
17e 閾値更新部
18 グローバルキャッシュ管理部

Claims (10)

  1. 記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュするキャッシュ制御部と、
    前記キャッシュ制御部によって前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択する選択部と、
    前記削除対象のデータと前記選択部によって選択されたデータとを前記メモリから削除する削除部と
    を有することを特徴とする情報処理装置。
  2. 前記キャッシュされたデータを含むファイルを識別する識別子と、所定時間前にメモリにキャッシュされていた前記ファイルのページキャッシュの総数とに対応付けて、所定時間内に前記記憶部から読み出された前記ファイルのページキャッシュまたは前記記憶部に書き込まれた前記ファイルのページキャッシュを計数したページ管理情報を生成する生成部と、
    前記ページ管理情報に含まれるページキャッシュ数とページキャッシュの総数と、現時点でメモリにキャッシュされている前記ファイルのページキャッシュの総数とを用いて、前記削除対象のデータを含むファイルのページキャッシュが前記所定時間内にメモリから解放された割合を算出する算出部と、を有し、
    前記選択部は、前記算出部によって算出された割合が閾値を超える場合に、前記削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択することを特徴とする請求項1に記載の情報処理装置。
  3. 前記選択部は、前記算出部によって算出された割合が閾値を超える場合、かつ、前記メモリの物理領域に対して仮想的に割当てた仮想メモリ領域の空き容量が所定値よりも少ない場合に、前記削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択することを特徴とする請求項2に記載の情報処理装置。
  4. 前記算出部によって算出された前記現時点での割合と、前記算出部によって算出された前記所定時間前の割合との差が第1の基準値より大きい場合には、前記閾値をより小さい値に更新し、前記差が第2の基準値より小さい場合には、前記閾値をより大きな値に更新する閾値更新部さらに有することを特徴とする請求項2に記載の情報処理装置。
  5. 前記生成部は、前記メモリにキャッシュされているデータのうち最近参照されていないデータから順に、前記ページ管理情報を生成し、
    前記算出部は、前記ページ管理情報の先頭のエントリから順に前記割合を算出し、前記割合を算出したエントリを前記ページ管理情報の最後尾に移動させることを特徴とする請求項2に記載の情報処理装置。
  6. 前記生成部は、前記メモリにキャッシュされているデータのうち最近参照されていないデータから順に、前記ページ管理情報を生成し、
    前記算出部は、前記ページ管理情報のエントリのうち前記記憶部から読み出されたまたは前記記憶部に書き込まれたデータに対応するエントリを、前記ページ管理情報の最後尾に移動させることを特徴とする請求項2に記載の情報処理装置。
  7. 他の情報処理装置が有するメモリにキャッシュされているファイルを識別する識別子を各情報処理装置から取得する取得部と、
    前記算出部によって前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされているか否かを、前記取得部によって取得された識別子を用いて判定する判定部とをさらに有し、
    前記選択部は、前記判定部によって、前記削除対象のデータが所定数以上の前記他の情報処理装置のメモリにキャッシュされていると判定された場合には、前記削除対象のデータを含むファイルを削除対象から除外することを特徴とする請求項1に記載の情報処理装置。
  8. 前記取得部は、前記識別子とともに前記各情報処理装置における前記仮想メモリ領域の残量を取得し、
    前記選択部は、さらに、前記削除対象のデータに対応付けられた前記仮想メモリ領域の残量が所定値以下の場合に、前記削除対象のデータを含むファイルを削除対象から除外することを特徴とする請求項6に記載の情報処理装置。
  9. コンピュータが、
    記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュし、
    前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択し、
    前記削除対象のデータと前記選択されたデータとを前記メモリから削除する
    処理を実行することを特徴とするメモリ管理方法。
  10. コンピュータに、
    記憶部から読み出されたデータまたは前記記憶部に書き込まれたデータをメモリにキャッシュし、
    前記メモリにキャッシュされたデータを前記メモリから削除する際に、削除対象のデータと同一ファイルに含まれるデータを前記メモリから選択し、
    前記削除対象のデータと前記選択されたデータとを前記メモリから削除する
    処理を実行させることを特徴とするメモリ管理プログラム。
JP2012015694A 2012-01-27 2012-01-27 情報処理装置、メモリ管理方法およびメモリ管理プログラム Active JP5861473B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012015694A JP5861473B2 (ja) 2012-01-27 2012-01-27 情報処理装置、メモリ管理方法およびメモリ管理プログラム
EP13152332.6A EP2624141A1 (en) 2012-01-27 2013-01-23 Information processing device, memory management method, and memory management program
US13/750,196 US9021208B2 (en) 2012-01-27 2013-01-25 Information processing device, memory management method, and computer-readable recording medium
CN201310030552.2A CN103294609B (zh) 2012-01-27 2013-01-25 信息处理装置和存储器管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012015694A JP5861473B2 (ja) 2012-01-27 2012-01-27 情報処理装置、メモリ管理方法およびメモリ管理プログラム

Publications (2)

Publication Number Publication Date
JP2013156766A true JP2013156766A (ja) 2013-08-15
JP5861473B2 JP5861473B2 (ja) 2016-02-16

Family

ID=47594581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012015694A Active JP5861473B2 (ja) 2012-01-27 2012-01-27 情報処理装置、メモリ管理方法およびメモリ管理プログラム

Country Status (4)

Country Link
US (1) US9021208B2 (ja)
EP (1) EP2624141A1 (ja)
JP (1) JP5861473B2 (ja)
CN (1) CN103294609B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9984000B2 (en) * 2013-09-06 2018-05-29 Lyve Minds, Inc. Electronic device data distribution
US10268592B2 (en) * 2014-01-31 2019-04-23 Avago Technologies International Sales Pte. Limited System, method and computer-readable medium for dynamically mapping a non-volatile memory store
CN110852045A (zh) * 2018-08-01 2020-02-28 珠海金山办公软件有限公司 一种删除文档内容的方法、装置、电子设备及存储介质
CN111866419B (zh) * 2019-04-24 2022-05-31 杭州海康微影传感科技有限公司 热成像图像显示方法、装置及热成像设备
US11275690B1 (en) * 2020-08-17 2022-03-15 Amazon Technologies, Inc. Configurable caching policy for transferring data via shared memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008139521A1 (ja) * 2007-04-27 2008-11-20 Fujitsu Limited リモートファイルシステム、端末装置およびサーバ装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182220A (ja) 1993-12-21 1995-07-21 Hitachi Ltd 分散ファイルシステムおよびそのファイルキャッシング方法
JPH1196102A (ja) 1997-09-25 1999-04-09 Hitachi Ltd サーバ分散管理方法
US6154813A (en) * 1997-12-23 2000-11-28 Lucent Technologies Inc. Cache management system for continuous media system
GB0116116D0 (en) * 2001-06-30 2001-08-22 Koninkl Philips Electronics Nv Receiver apparatus and method
US7181574B1 (en) * 2003-01-30 2007-02-20 Veritas Operating Corporation Server cluster using informed prefetching
US8171219B2 (en) * 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
CN102323907A (zh) * 2011-08-19 2012-01-18 长安大学 嵌入式arm处理器对nandflash数据存储和删除方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008139521A1 (ja) * 2007-04-27 2008-11-20 Fujitsu Limited リモートファイルシステム、端末装置およびサーバ装置

Also Published As

Publication number Publication date
US9021208B2 (en) 2015-04-28
JP5861473B2 (ja) 2016-02-16
CN103294609A (zh) 2013-09-11
CN103294609B (zh) 2016-01-13
US20130198460A1 (en) 2013-08-01
EP2624141A1 (en) 2013-08-07

Similar Documents

Publication Publication Date Title
US9934231B2 (en) System and methods for prioritizing data in a cache
US9805048B2 (en) System and method for managing a deduplication table
EP3229142B1 (en) Read cache management method and device based on solid state drive
US8856484B2 (en) Mass storage system and methods of controlling resources thereof
CN107943718B (zh) 一种清理缓存文件的方法和装置
US9858197B2 (en) Cache management apparatus of hybrid cache-based memory system and the hybrid cache-based memory system
US20200175074A1 (en) Tree structure aware cache eviction policy
US8819074B2 (en) Replacement policy for resource container
US8868863B2 (en) Method and apparatus for a frugal cloud file system
JP5861473B2 (ja) 情報処理装置、メモリ管理方法およびメモリ管理プログラム
JP6106028B2 (ja) サーバ及びキャッシュ制御方法
JP2005285058A (ja) 記憶装置のキャッシュ管理方法
US20240061789A1 (en) Methods, apparatuses, and electronic devices for evicting memory block in cache
KR101916240B1 (ko) 공유 콘텐츠 항목의 저장소 제약된 동기화
JP2012014739A (ja) 計算機システム及びデータベース管理システムプログラム
CN111488128B (zh) 一种元数据的更新方法、装置、设备及介质
JP6107341B2 (ja) データ管理プログラム,データ管理装置およびデータ管理方法
US8621156B1 (en) Labeled cache system
JP2015179326A (ja) データ転送装置、データ転送方法およびコンピュータプログラム
CN106873910A (zh) 一种基于openstack平台的SSD缓存方法
KR102168464B1 (ko) 인메모리 캐시를 관리하는 방법
JP5697403B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN116909942A (zh) 在包括反向高速缓存和主高速缓存的高速缓存系统中使用重影列表进行高速缓存插入和逐出的方法
Katakami et al. I/O buffer cache mechanism based on the frequency of file usage
Tabata et al. I/O Buffer Cache Mechanism Based on the Frequency of File Usage

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150824

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151207

R150 Certificate of patent or registration of utility model

Ref document number: 5861473

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150