JP2010140362A - 分散キャッシュシステム、方法、プログラム、及び計算ノード - Google Patents

分散キャッシュシステム、方法、プログラム、及び計算ノード Download PDF

Info

Publication number
JP2010140362A
JP2010140362A JP2008317528A JP2008317528A JP2010140362A JP 2010140362 A JP2010140362 A JP 2010140362A JP 2008317528 A JP2008317528 A JP 2008317528A JP 2008317528 A JP2008317528 A JP 2008317528A JP 2010140362 A JP2010140362 A JP 2010140362A
Authority
JP
Japan
Prior art keywords
block
copy
node
consistency
access
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
JP2008317528A
Other languages
English (en)
Other versions
JP5257843B2 (ja
Inventor
Morio Sasaki
盛朗 佐々木
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008317528A priority Critical patent/JP5257843B2/ja
Publication of JP2010140362A publication Critical patent/JP2010140362A/ja
Application granted granted Critical
Publication of JP5257843B2 publication Critical patent/JP5257843B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】分散キャッシュシステムの目標性能が達成されるように、複数の計算ノード間のキャッシュコンシステンシを自動的に制御すること。
【解決手段】複数の計算ノードは、ブロック単位でデータキャッシュを行う。各計算ノードは、コピーブロックとメタ情報が格納される記憶装置と、キャッシュ制御部と、転送量算出部とを備える。メタ情報は、コピーブロックのステータスとアクセス履歴情報とを含む。第1計算ノードは、第1ブロックに対するライトアクセスを受け取る。転送量算出部は、第1コピーブロックに関連付けられたメタ情報に含まれるアクセス履歴情報を参照して、計算ノード間で将来発生する第1コピーブロックの転送量を算出する。キャッシュ制御部は、目標性能と算出された転送量に基づいて、コンシステンシを緩和するか否かを決定する。コンシステンシを緩和する場合、第1コピーブロックをキャッシュしている他の計算ノードにおいて、第1コピーブロックのステータスは変更されない。
【選択図】図2

Description

本発明は、複数の計算ノードがデータキャッシュを行う分散キャッシュ技術に関する。特に、本発明は、複数の計算ノード間でのキャッシュのコンシステンシを制御する技術に関する。
計算機システムの分野において、データキャッシュ技術は、高速データアクセスを実現するために重要である。例えば、ストレージに接続された計算ノードが、そのストレージ上のあるブロックのコピーをコピーブロックとして自身の記憶装置に格納(キャッシュ)する。当該ブロックに対するアクセスが発生したとき、その計算ノードは、ストレージ上のブロックではなく、自身の記憶装置に格納されているコピーブロックにアクセスする。これにより、高速データアクセスが実現される。
また、複数の計算ノードを用いて分散的に処理を行う分散計算機システムは、システム性能の向上の観点から優れている。そのような分散計算機システムに、更に、上記データキャッシュ技術を適用することが考えられる(例えば、特許文献1参照)。その場合は、複数の計算ノードのそれぞれがデータキャッシュを行うことになる。このように、複数の計算ノードがデータキャッシュを行うシステムは、以下「分散キャッシュシステム」と参照される。
分散キャッシュシステムでは、複数の計算ノードが同一ブロックのコピーを同時にキャッシュする可能性がある。それぞれの計算ノードは、自身のコピーブロックに対して独立にアクセスすることができる。但し、ある計算ノードがコピーブロックに最新データを書き込んだ場合、そのコピーブロックの更新を、他の計算ノードにも反映させることが望ましい。さもなければ、他の計算ノードがその最新データを参照することができないからである。このように、分散キャッシュシステムでは、複数の計算ノード間のキャッシュのコンシステンシ(一貫性;consistency)を考慮することが重要である。
例として、第1計算ノードと第2計算ノードが、同一ブロックのコピーをそれぞれキャッシュしている場合を考える。第1計算ノードに対して当該ブロックへのライトアクセスが発行されると、第1計算ノードは、自身のコピーブロックに書き込みデータを書き込む。この場合、第1計算ノードのコピーブロックが最新となり、第2計算ノードのコピーブロックは古くなる。その後、第2計算ノードに対して当該ブロックへのリードアクセスが発行された場合、第2計算ノードのコピーブロックは古くなっているので、最新のコピーブロックを第1計算ノードから第2計算ノードへ転送する必要がある。このような最新のコピーブロックの転送は、以下、「ブロック転送処理」と参照される。
以上に説明されたように、分散キャッシュシステムにおいてキャッシュコンシステンシを維持するためには、ブロック転送処理が必須となる。このブロック転送処理は、分散キャッシュシステムにとってはオーバーヘッドとなる。従って、計算ノード数が2倍になったとしても、システム性能は単純に2倍になるとは限らない。
非特許文献1には、9種類のコンシステンシモデル(一貫性モデル)が記載されている。その9種類のコンシステンシモデルは、「strict consistency model」、「sequential consistency model」、「casual consistency model」、「PRAM consistency model」、「processor consistency model」、「weak consistency model」、「release consistency model」、「lazy release consistency model」、及び「entry consistency model」である。それぞれのコンシステンシモデルは、コンシステンシを維持するための異なる基準を規定している。いずれのコンシステンシモデルでも、コンシステンシを維持するために、その基準に従った上述のブロック転送処理が必要とされる。
特許文献2には、クラスタシステムにおいて発生するクラスタリングオーバヘッドを予測するための技術が記載されている。クラスタシステムは、通信回線を介して接続された複数のノードを備える。各ノードの主記憶装置に格納されたデータは、通信回線を通して、ノード間で共有される。このノード間のデータ共有を実現するために、上述のブロック転送処理が必要であり、そのブロック転送処理によってクラスタリングオーバヘッドが発生する。クラスタリングオーバヘッドの予測処理では、まず、単位時間当たりのブロック転送回数が算出される。そして、算出されたブロック転送回数と、1回のブロック転送当たりのCPU負荷に基づいて、クラスタリングオーバヘッドが算出される。
特開平10−254779号公報 特開2006−331135号公報 Doreen L. Galli, "Distributed Operating Systems: Concepts and Practice", Prentice Holl, 1999年8月31日, pp.216−225.
上述の通り、分散キャッシュシステムにおいてキャッシュコンシステンシを維持するためには、ブロック転送処理が必要となる。しかしながら、ブロック転送処理は、分散キャッシュシステムにある程度の負荷をかけてしまい、その性能を劣化させる要因となる。場合によっては、システムの目標性能が達成されず、分散キャッシュ技術の利点である性能向上を十分に享受できなくなる。
本発明の1つの目的は、分散キャッシュシステムの目標性能が達成されるように、複数の計算ノード間のキャッシュコンシステンシを自動的に制御することができる分散キャッシュ技術を提供することにある。
本発明の第1の観点において、分散キャッシュシステムが提供される。分散キャッシュシステムは、ブロック単位でデータキャッシュを行う複数の計算ノードを備える。複数の計算ノードの各々は、記憶装置と、複数の計算ノード間でのキャッシュのコンシステンシを制御するキャッシュ制御部と、転送量算出部とを備える。記憶装置には、ブロックのコピーであるコピーブロックと、そのコピーブロックに関連付けられたメタ情報と、が格納される。メタ情報は、コピーブロックのステータスと、ブロックに関する過去のアクセス状況を示すアクセス履歴情報と、を含む。複数の計算ノードのうち第1計算ノードは、第1ブロックに対するライトアクセスを受け取る。第1ブロックのコピーは第1コピーブロックである。第1計算ノードの転送量算出部は、第1コピーブロックに関連付けられたメタ情報に含まれるアクセス履歴情報を参照して、複数の計算ノード間で将来発生する第1コピーブロックの転送量を算出する。第1計算ノードのキャッシュ制御部は、目標性能と算出された転送量に基づいて、コンシステンシを緩和するか否かを決定する。コンシステンシを緩和しない場合、第1計算ノードのキャッシュ制御部は、第1コピーブロックをキャッシュしている他の計算ノードが第1コピーブロックのステータスを変更するよう指示を行う。一方、コンシステンシを緩和する場合、第1計算ノードのキャッシュ制御部は、当該他の計算ノードが第1コピーブロックのステータスを変更することを指示しない。
本発明の第2の観点において、ブロック単位でデータキャッシュを行う複数の計算ノードを備える分散キャッシュシステムにおける計算ノードが提供される。計算ノードは、記憶装置と、複数の計算ノード間でのキャッシュのコンシステンシを制御するキャッシュ制御部と、転送量算出部とを備える。記憶装置には、ブロックのコピーであるコピーブロックと、そのコピーブロックに関連付けられたメタ情報と、が格納される。メタ情報は、コピーブロックのステータスと、ブロックに関する過去のアクセス状況を示すアクセス履歴情報と、を含む。計算ノードは、第1ブロックに対するライトアクセスを受け取る。第1ブロックのコピーは第1コピーブロックである。転送量算出部は、第1コピーブロックに関連付けられたメタ情報に含まれるアクセス履歴情報を参照して、複数の計算ノード間で将来発生する第1コピーブロックの転送量を算出する。キャッシュ制御部は、目標性能と算出された転送量に基づいて、コンシステンシを緩和するか否かを決定する。コンシステンシを緩和しない場合、キャッシュ制御部は、第1コピーブロックをキャッシュしている他の計算ノードが第1コピーブロックのステータスを変更するよう指示を行う。一方、コンシステンシを緩和する場合、キャッシュ制御部は、当該他の計算ノードが第1コピーブロックのステータスを変更することを指示しない。
本発明の第3の観点において、分散キャッシュ方法が提供される。分散キャッシュ方法は、(A)複数の計算ノードがブロック単位でデータキャッシュを行うステップを含む。ここで、複数の計算ノードの各々は、ブロックのコピーであるコピーブロックと共に、そのコピーブロックに関連付けられたメタ情報を記憶装置に格納する。メタ情報は、コピーブロックのステータスと、ブロックに関する過去のアクセス状況を示すアクセス履歴情報と、を含む。分散キャッシュ方法は、更に、(B)複数の計算ノードのうち第1計算ノードが、第1ブロックに対するライトアクセスを受け取るステップと、ここで、第1ブロックのコピーは第1コピーブロックであり、(C)第1計算ノードが、第1コピーブロックに関連付けられたメタ情報に含まれるアクセス履歴情報を参照して、複数の計算ノード間で将来発生する第1コピーブロックの転送量を算出するステップと、(D)第1計算ノードが、目標性能と算出された転送量に基づいて、複数の計算ノード間でのキャッシュのコンシステンシを緩和するか否かを決定するステップと、(E)コンシステンシを緩和しない場合、第1計算ノードが、第1コピーブロックをキャッシュしている他の計算ノードが第1コピーブロックのステータスを変更するよう指示を行うステップと、(F)コンシステンシを緩和する場合、第1計算ノードが、当該他の計算ノードが第1コピーブロックのステータスを変更することを指示しないステップと、を含む。
本発明の第4の観点において、分散キャッシュシステムにおける計算ノードにコンシステンシ制御処理を実行させる分散キャッシュプログラムが提供される。分散キャッシュシステムは、ブロック単位でデータキャッシュを行う複数の計算ノードを備える。複数の計算ノードの各々は、ブロックのコピーであるコピーブロックと共に、そのコピーブロックに関連付けられたメタ情報を記憶装置に格納する。メタ情報は、コピーブロックのステータスと、ブロックに関する過去のアクセス状況を示すアクセス履歴情報と、を含む。上記コンシステンシ制御処理は、(a)第1ブロックに対するライトアクセスを受け取るステップと、ここで、第1ブロックのコピーは第1コピーブロックであり、(b)第1コピーブロックに関連付けられたメタ情報に含まれるアクセス履歴情報を参照して、複数の計算ノード間で将来発生する第1コピーブロックの転送量を算出するステップと、(c)目標性能と算出された転送量に基づいて、複数の計算ノード間でのキャッシュのコンシステンシを緩和するか否かを決定するステップと、(d)コンシステンシを緩和しない場合、第1コピーブロックをキャッシュしている他の計算ノードが第1コピーブロックのステータスを変更するよう指示を行うステップと、(e)コンシステンシを緩和する場合、当該他の計算ノードが第1コピーブロックのステータスを変更することを指示しないステップと、を含む。
本発明によれば、分散キャッシュシステムの目標性能が達成されるように、複数の計算ノード間のキャッシュコンシステンシを自動的に制御することが可能となる。
添付図面を参照して、本発明の実施の形態に係る分散キャッシュ技術を説明する。
1.分散キャッシュシステム
図1は、本発明の実施の形態に係る分散キャッシュシステム1の構成を概略的に示すブロック図である。分散キャッシュシステム1は、データキャッシュを行う複数の計算ノード2を備えている。図1では、n個(nは2以上の整数)の計算ノード2−1〜2−nが示されている。複数の計算ノード2は、通信回線を通して互いに通信可能である。また、ストレージ3が複数の計算ノード2に対して共通に設けられており、各計算ノード2が共通のストレージ3に接続されている。クライアント100は、複数の計算ノード2のうち任意の計算ノード2に対してアクセスを発行する。
計算ノード2は、典型的には、サーバや仮想サーバである。その場合、分散キャッシュシステム1はサーバシステムであり、クライアント100は端末であり、各サーバはストレージ3中のデータのコピーを自身の主記憶装置(ローカルメモリ)にキャッシュする。あるいは、計算ノード2は、キャッシュメモリが搭載されたCPUであってもよい。その場合、分散キャッシュシステム1はマルチコアシステムであり、ストレージ3は下位記憶装置(下位キャッシュメモリや主記憶装置)であり、クライアント100はプロセスであり、各CPUはストレージ3中のデータのコピーを自身のキャッシュメモリに格納する。計算ノード2は、その他のプロセッシングエレメント(PE: Processing Element)であってもよい。
ストレージ3には、データの集合であるデータセットDSETが格納される。データセットDSETは、ブロック単位で管理される。1つのブロックは、データの集合であり、所定のデータサイズを有する。サーバシステムの場合、1ブロックサイズは、例えば4Kバイトである。各計算ノード2は、ストレージ3上のデータセットDSETを、ブロック単位でキャッシュする。例えば、計算ノード2−1は、ストレージ3上のあるブロックBLKのコピーをキャッシュする。計算ノード2−1にキャッシュされているブロックBLKのコピーは、コピーブロックCBLK−1である。他の計算ノード2も同じブロックBLKのコピーをキャッシュすることができる。計算ノード2−i(i=1〜n)にキャッシュされているブロックBLKのコピーは、コピーブロックCBLK−iである。
分散キャッシュシステム1においては、複数の計算ノード2間のキャッシュのコンシステンシを管理することが重要である。コンシステンシ管理のため、一般的に、各コピーブロックCBLKには「ステータス(Status)」が付与される。コピーブロックCBLKのステータスとしては、少なくとも“exclusive”、“shared”、“stale”の3種類が挙げられる。ステータス“exclusive”は、そのコピーブロックCBLKが最新であり、且つ、計算ノード2−1〜2−nのうち自ノードにのみキャッシュされていることを示す。ステータス“shared”は、そのコピーブロックCBLKが最新であり、且つ、計算ノード2−1〜2−nのうち2以上の計算ノード2にキャッシュされていることを示す。ステータス“stale”は、そのコピーブロックCBLKが最新ではないことを示す。
このように、ステータスが“exclusive”あるいは“shared”の場合、それは、コピーブロックCBLKが少なくとも最新であることを意味する。ステータスが“exclusive”であるコピーブロックCBLKは、以下「Exclusiveコピー」と参照される場合がある。また、ステータスが“shared”であるコピーブロックCBLKは、以下「Sharedコピー」と参照される場合がある。また、ExclusiveコピーとSharedコピーは、合わせて、「Current(最新)コピー」と参照される場合がある。ある計算ノード2にキャッシュされているコピーブロックCBLKのステータスが“exclusive”あるいは“shared”の場合、当該計算ノード2は、ブロックBLKのCurrentコピーをキャッシュしていると言える。
クライアント100は、複数の計算ノード2のうち任意の計算ノード2に対してアクセスを発行する。アクセスは、少なくとも「ブロック識別子」と「アクセス種別」を含む。ブロック識別子は、アクセス対象データを含むブロック(アクセス対象ブロック)を示す。アクセス種別は、リードアクセスあるいはライトアクセスのいずれかを示す。
クライアント100からアクセスを受け取り、受け取ったアクセスを処理する計算ノード2は、以下「アクセス処理ノード2A」と参照される。アクセス処理ノード2Aは、受け取ったアクセスに含まれるブロック識別子を参照して、アクセス対象ブロックを特定することができる。また、アクセス処理ノード2Aは、受け取ったアクセスに含まれるアクセス種別を参照して、当該アクセスがリードアクセスかライトアクセスかを判別することができる。
リードアクセスの場合、アクセス処理ノード2Aは、自身がアクセス対象ブロックのCurrentコピーをキャッシュしているか否かを調べる。アクセス処理ノード2AがCurrentコピーをキャッシュしている場合、アクセス処理ノード2Aは、ストレージ3にアクセスすることなく、キャッシュされているCurrentコピーからアクセス対象データを読み出すことができる。その結果、リードアクセス速度が向上する。そして、アクセス処理ノード2Aは、読み出されたデータをクライアント100に送信する。
一方、アクセス処理ノード2AがCurrentコピーをキャッシュしていない場合、Currentコピーをキャッシュしている他の計算ノード2からアクセス処理ノード2Aへ、そのCurrentコピーを転送する必要がある。すなわち、「ブロック転送処理」が発生する。このブロック転送処理によって、計算ノード間のコンシステンシが維持される。その一方、ブロック転送処理は、分散キャッシュシステム1にある程度の負荷をかけてしまい、その性能を劣化させる要因となる。従って、分散キャッシュシステム1の性能の観点から言えば、ブロック転送処理は少ない方が好ましい。
ブロック転送処理が発生するのは、ある計算ノード2がブロックBLKに対するリードアクセスを受け取り、且つ、当該計算ノード2のコピーブロックCBLKのステータスが“stale”であるときである。そして、当該計算ノード2のコピーブロックCBLKのステータスが“stale”になるのは、他の計算ノード2が同一ブロックBLKに対するライトアクセスを処理し、当該他の計算ノード2のコピーブロックCBLKが“exclusive”になったときである。すなわち、ライトアクセスが発生すると、その後にブロック転送処理が発生する。ブロック転送処理は、ライトアクセスに起因して発生するとも言える。
本実施の形態では、分散キャッシュシステム1は、基本的に、所定のコンシステンシモデルで定められたコンシステンシを維持する。コンシステンシモデルとしては、様々なものが知られている(非特許文献1参照)。しかしながら、所定のコンシステンシモデルに従ってコンシステンシを維持するためには、上述のブロック転送処理が必要になる。そのブロック転送処理は、分散キャッシュシステム1の性能を劣化させる要因となる。場合によっては、システムの目標性能が達成されず、分散キャッシュ技術の利点である性能向上を十分に享受できなくなる。従って、本実施の形態に係る分散キャッシュシステム1は、システムの目標性能を参酌し、その目標性能が達成されるようにコンシステンシを自動的に制御する。特に、本実施の形態に係る分散キャッシュシステム1は、場合によっては、コンシステンシの厳密性を“緩和”する。
そのために、本実施の形態によれば、ライトアクセスの処理方式として2種類の方式が選択的に用いられる。その2種類の方式を説明するために、ある計算ノード2がブロックBLKに対するライトアクセスを受け取った場合を考える。当該計算ノード2は、アクセス処理ノード2Aである。また、分散キャッシュシステム1では、アクセス処理ノード2Aと異なる他の計算ノード2が、当該ブロックBLKのコピーであるコピーブロックCBLKをキャッシュしている可能性がある。そのような他の計算ノード2は、以下「ノード2C」と参照される。
第1の方式では、アクセス処理ノード2Aは、ライトアクセスを通常通り処理する。具体的には、アクセス処理ノード2Aは、自身がキャッシュしているコピーブロックCBLKに書き込みデータを書き込み、且つ、そのコピーブロックCBLKのステータスを“exclusive”に設定する。更に、アクセス処理ノード2Aは、ノード2CのコピーブロックCBLKのステータスを“stale”に変更するように指示する。その結果、ノード2CにキャッシュされているコピーブロックCBLKのステータスは“stale”に変更される。すなわち、アクセス処理ノード2AにおけるコピーブロックCBLKの更新が、他のノード2Cにも反映される。この場合、コンシステンシは“緩和”されず、“維持”される。
第2の方式では、アクセス処理ノード2Aは、ライトアクセスを「擬似ライトアクセス(Quasi Write Access)」として処理する。この場合、第1の方式と同様に、アクセス処理ノード2Aは、自身がキャッシュしているコピーブロックCBLKに書き込みデータを書き込み、且つ、そのコピーブロックCBLKのステータスを“exclusive”に設定する。しかしながら、アクセス処理ノード2Aは、ノード2CがコピーブロックCBLKのステータスを変更することを禁止する。従って、ノード2CにキャッシュされているコピーブロックCBLKのステータスは“stale”に変更されない。つまり、アクセス処理ノード2AにおけるコピーブロックCBLKの更新が、他のノード2Cに反映されない。よって、コンシステンシが“緩和”される。この場合、後にノード2CがブロックBLKに対するリードアクセスを受け取ったとしても、ブロック転送処理が発生しない。すなわち、現在のライトアクセスに起因して、ブロック転送処理が将来発生する確率が低くなり、システム性能の劣化が抑制される。このように、第2の方式では、コンシステンシが緩和されるが、システム性能の劣化が抑制される。
コンシステンシを緩和するか否かは、システムの目標性能の観点から決定されることが好適である。そのために、ライトアクセスを受け取ったアクセス処理ノード2Aは、将来発生するブロック転送処理による負荷(ブロック転送量)を予測する。そして、そのアクセス処理ノード2Aは、予測されたブロック転送量と目標性能を参照し、目標性能が達成されるように、コンシステンシの緩和の要否を自動的に決定する。コンシステンシを緩和しない場合、アクセス処理ノード2Aは、上述の第1の方式に従ってライトアクセスを処理する。一方、コンシステンシを緩和する場合、アクセス処理ノード2Aは、上述の第2の方式に従って、ライトアクセスを擬似ライトアクセスとして処理する。その結果、コンシステンシは緩和されるが、システム性能が向上する。
以上に説明されたように、本実施の形態によれば、目標性能が達成されるように、計算ノード間のキャッシュコンシステンシの制御(維持、緩和)が自動的に行われる。コンシステンシを多少緩和してでも、システム性能を優先したい場合の例として、検索処理や統計処理が挙げられる。本実施の形態は、そのような場合に特に好適である。本実施の形態は、ウェブサーバー、アプリケーションサーバー、データベースサーバー、データセンターにおけるストレージサービス等に適用可能である。
以下、例として、計算ノード2がサーバ等の計算機である場合を考える。計算ノード2がCPU等の場合であっても同様の議論が適用されることは、当業者によって容易に理解されよう。
2.計算ノードの構成
図2は、計算ノード2の構成例を示すブロック図である。計算ノード2は、処理装置10、記憶装置20、入力装置30、出力装置40、及び通信装置50を備えている。処理装置10は、CPU(Central Processing Unit)を含み、記憶装置20に格納されているデータを用いて各種データ処理を実行する。記憶装置20としては、RAM(Random Access Memory)が例示される。入力装置30としては、キーボードやマウスが例示される。出力装置40としては、ディスプレイが例示される。通信装置50としては、通信インタフェースが例示される。
記憶装置20には、コンシステンシ管理情報CON、コピーブロックCBLK、メタ情報MET、目標情報TAR、転送コスト情報CST等が格納される。
コンシステンシ管理情報CONは、ブロックに関するコンシステンシを管理するための情報である。ここで、ある1つのブロックに関するコンシステンシは、複数の計算ノード2のうち所定の計算ノード2によって集中的に管理される。その所定の計算ノードは、以下、「マスターノード2M」と参照される。1つのマスターノード2Mには、少なくとも1つのブロックの管理が割り当てられる。異なるブロックの管理は、異なるマスターノード2Mに割り当てられてもよい。あるブロックに関しては、そのブロックに割り当てられたマスターノード2Mだけがコンシステンシ管理情報CONを有する。
図3は、あるブロックBLKに関するコンシステンシ管理情報CONの一例を示している。コンシステンシ管理情報CONは、ディレクトリ情報DIRとアクセス履歴情報HISを含んでいる。
ディレクトリ情報DIRは、どの計算ノード2がどのようなステータスのコピーブロックCBLKをキャッシュしているかを示す。例えば、ディレクトリ情報DIRは、複数の計算ノード2のそれぞれに対応した複数のエントリを有する。各エントリは、該当計算ノード2にキャッシュされているコピーブロックCBLKのステータスを示す。例えば、図3に示されるディレクトリ情報DIRからは、計算ノード2−2がブロックBLKのExclusiveコピー(ステータス=“exclusive”)をキャッシュしていることが分かる。
アクセス履歴情報HISは、当該ブロックBLKに関する過去のアクセス状況を示す。例えば、アクセス履歴情報HISは、当該ブロックBLKへの過去のライトアクセス数NW、当該ブロックBLKへの過去のリードアクセス数NR、ライトアクセス数NWとリードアクセス数NRの測定開始時刻T0、及びスコープNを有する。スコープNは、n個の計算ノード2−1〜2−nのうち当該ブロックBLKへのアクセスが発行される計算ノード2の数である。例えば、スコープNが4の場合、ブロックBLKへのアクセスが4個の計算ノード2で発生し得る。スコープNは、システム設計段階で予め決定される。
再度図2を参照して、コピーブロックCBLKは、ストレージ3上のブロックBLKのコピーであり、キャッシュされているブロックBLKである。メタ情報METは、コピーブロックCBLKのステータス等を示す情報であり、コピーブロックCBLKに関連付けられている。つまり、各計算ノード2は、コピーブロックCBLKと共に、そのコピーブロックCBLKに関連付けられたメタ情報METを記憶装置20に格納する。
図4は、あるコピーブロックCBLKに関連付けられたメタ情報METの一例を示している。メタ情報METは、コピーブロックCBLKのステータス、アクセス履歴情報HIS、及び一時アクセス情報TMPを含んでいる。アクセス履歴情報HISは、上述のコンシステンシ管理情報CONに含まれているものと同様である。一時アクセス情報TMPは、一時的ライトアクセス数と一時的リードアクセス数を含む。この一時アクセス情報TMPは、後述のアクセス処理において用いられる。
再度図2を参照して、目標情報TARは、分散キャッシュシステム1の目標性能(性能の目標値)を示す。例えば、目標性能として、スケーラビリティの目標値が与えられる。本実施の形態におけるスケーラビリティとは、単位時間あたりに計算ノード2がブロック転送処理以外の処理を実行できる時間(CPU使用時間)を意味する。単位時間あたりにブロック転送処理に費やされる時間は、以下「ブロック転送量」と参照される。よって、スケーラビリティは、単位時間からブロック転送量を差し引いた時間であると言える。例えば、目標性能(スケーラビリティの目標値)が0.8である場合、その目標性能が達成されるブロック転送量の上限値は0.2である。目標性能が達成されるブロック転送量の上限値は、以下「閾値転送量」と参照される。目標情報TARは、目標性能の代わりにこの閾値転送量を与えていてもよい。
転送コスト情報CSTは、1回のブロック転送処理に要する転送コストを示す。例えば、転送コストは、計算ノード2におけるCPU使用時間で与えられる。
処理装置10は、通信部11、キャッシュ制御部12、及び転送量算出部13を備えている。通信部11は、通信装置50を用いて、外部(他の計算ノード2、ストレージ3、クライアント100)との間でデータの送受信を行う機能ブロックである。キャッシュ制御部12は、キャッシュ処理全般、及び計算ノード2間のキャッシュのコンシステンシの制御を行う機能ブロックである。このキャッシュ制御部12の機能としては、(1)コンシステンシ管理情報CONの参照、更新、(2)メタ情報METの参照、更新、(3)コピーブロックCBLKの読み出し、書き込み、(4)リードアクセス、ライトアクセスの処理、(5)他の計算ノード2に対する指示、等が挙げられる。転送量算出部13は、後述されるブロック転送量算出処理(ステップS210)を実行する機能ブロックである。
これら機能ブロック11〜13は、各計算ノード2の処理装置10が分散キャッシュプログラムPROGを実行することにより実現される。分散キャッシュプログラムPROGは、処理装置10によって実行可能なコンピュータプログラム(ソフトウェアプロダクト)であり、記憶装置20に格納されている。分散キャッシュプログラムPROGは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。各計算ノード2の処理装置10は、分散キャッシュプログラムPROGを読み出し、実行する。それにより、各計算ノード2は、次に説明されるような処理を実行する。
3.処理フロー
本実施の形態に係る分散キャッシュシステム1による処理を詳しく説明する。図5は、本実施の形態に係る分散キャッシュシステム1の処理を示すフローチャートである。
ステップS10:
アクセス処理ノード2Aの通信部11は、クライアント100からアクセスを受け取る。受け取ったアクセスには、アドレス情報、対象ブロックを示すブロック識別子、及びアクセス種別が含まれている。以下の説明において、対象ブロックはブロックBLKであるとする。
ステップS20:
アクセス処理ノード2Aのキャッシュ制御部12は、ブロック識別子を参照して、対象ブロックBLKを特定する。
ステップS30:
アクセス処理ノード2Aのキャッシュ制御部12は、アクセス種別を参照して、当該アクセスがリードアクセスかライトアクセスかを判別する。リードアクセスの場合、アクセス処理ノード2Aは、リードアクセス処理(ステップS100)を実行する。ライトアクセスの場合、アクセス処理ノード2Aは、ライトアクセス処理(ステップS200)を実行する。
3−1.リードアクセス処理(ステップS100)
まず、本実施の形態におけるリードアクセス処理(ステップS100)を説明する。図6は、リードアクセス処理を示すフローチャートである。
ステップS110:
アクセス処理ノード2Aのキャッシュ制御部12は、自ノード2AがCurrentコピーをキャッシュしているか否かを判定する。つまり、キャッシュ制御部12は、ステータスが“exclusive”あるいは“shared”であるコピーブロックCBLKが記憶装置20に格納されているか否かを調べる。Currentコピーがキャッシュされている場合(ステップS110;Yes)、それはキャッシュヒットを意味する。キャッシュヒットの場合、処理はステップS120へ進む。一方、Currentコピーがキャッシュされていない場合(ステップS110;No)、それはキャッシュミスを意味する。キャッシュミスの場合、処理はステップS150へ進む。
ステップS120:
アクセス処理ノード2Aのキャッシュ制御部12は、コピーブロックCBLKに関連付けられているメタ情報METに含まれる一時的リードアクセス数を1だけ増加させる(インクリメントする)。
ステップS130:
アクセス処理ノード2Aのキャッシュ制御部12は、記憶装置20に格納されているコピーブロックCBLKに含まれているリード対象データを読み出す。
ステップS140:
アクセス処理ノード2Aの通信部11は、読み出されたデータを読み出しデータとしてクライアント100へ送信する。これにより、リードアクセス処理が終了する。
ステップS150:
キャッシュミスの場合(ステップS110;No)、ブロック転送処理が実施される。図7は、ブロック転送処理(ステップS150)を示すフローチャートである。
ステップS151:
まず、アクセス処理ノード2Aのキャッシュ制御部12は、対象ブロックBLKに割り当てられているマスターノード2Mを特定する。このとき、キャッシュ制御部12は、アクセスに含まれるブロック識別子をハッシュする等の方法によって、外部と通信することなく、マスターノード2Mを特定することができる。そして、キャッシュ制御部12は、特定されたマスターノード2Mに対して、対象ブロックBLKのCurrentコピーを要求する。Currentコピーの要求を示すコピーリクエストは、対象ブロックBLKのブロック識別子とアクセス処理ノード2Aのノード識別子を含む。そのコピーリクエストは、アクセス処理ノード2Aの通信部11からマスターノード2Mへ送られる。
ステップS161:
マスターノード2Mの通信部11は、アクセス処理ノード2Aから上記コピーリクエストを受け取る。マスターノード2Mのキャッシュ制御部12は、コピーリクエストに含まれるブロック識別子を参照して、対象ブロックBLKを特定する。更に、キャッシュ制御部12は、その対象ブロックBLKのコンシステンシ管理情報CONを参照する。
ステップS162:
マスターノード2Mのキャッシュ制御部12は、コンシステンシ管理情報CONに含まれるディレクトリ情報DIRを参照し、対象ブロックBLKのCurrentコピーがいずれかの計算ノード2にキャッシュされているか否かを判定する。ある計算ノード2が対象ブロックBLKのCurrentコピーをキャッシュしている場合、その計算ノード2は、以下「転送元ノード2S」と参照される。転送元ノード2Sは複数存在する場合もある。Currentコピーが有る場合(ステップS162;Yes)、処理はステップS163に進む。一方、いずれの計算ノード2もCurrentコピーを有していない場合(ステップS162;No)、処理はステップS166に進む。
ステップS163:
また、マスターノード2Mのキャッシュ制御部12は、ディレクトリ情報DIRを参照して、Exclusiveコピーを有する転送元ノード2Sが有るか否かを判定する。Exclusiveコピーが有る場合(ステップS163;Yes)、処理はステップS164に進む。それ以外の場合(ステップS163;No)、ステップS164はスキップされ、処理はステップS165に進む。
ステップS164:
マスターノード2Mのキャッシュ制御部12は、Exclusiveコピーを有する転送元ノード2Sに対して、ステータスを“shared”に変更するように指示する。ステータスの変更を指示するステータス変更コマンドは、対象ブロックBLKのブロック識別子を含む。そのステータス変更コマンドは、マスターノード2Mの通信部11から該当する転送元ノード2Sへ送られる。また、マスターノード2Mのキャッシュ制御部12は、対象ブロックBLKに関するディレクトリ情報DIRを更新する。具体的には、キャッシュ制御部12は、該当する転送元ノード2Sに対応するスタータスを、“exclusive”から“shared”に変更する。
ステップS171:
Exclusiveコピーを有する転送元ノード2Sの通信部11は、マスターノード2Mからステータス変更コマンドを受け取る。転送元ノード2Sのキャッシュ制御部12は、ステータス変更コマンドに含まれるブロック識別子を参照して、対象ブロックBLKを特定する。そして、そのキャッシュ制御部12は、コピーブロックCBLK(Exclusiveコピー)に関連付けられたメタ情報METに含まれるステータスを、“exclusive”から“shared”に変更する。
ステップS165:
マスターノード2Mのキャッシュ制御部12は、転送元ノード2Sに対して、対象ブロックBLKのCurrentコピーをアクセス処理ノード2Aへ転送するように指示する。転送元ノード2Sが複数有る場合、キャッシュ制御部12は、いずれか1つの転送元ノード2Sを選択する。Currentコピーの転送を指示する転送指示コマンドは、対象ブロックBLKのブロック識別子とアクセス処理ノード2Aのノード識別子を含む。その転送指示コマンドは、マスターノード2Mの通信部11から該当する転送元ノード2Sへ送られる。また、マスターノード2Mのキャッシュ制御部12は、対象ブロックBLKに関するディレクトリ情報DIRを更新する。具体的には、キャッシュ制御部12は、アクセス処理ノード2Aに対応するスタータスを、“shared”に設定する。
ステップS172:
転送元ノード2Sの通信部11は、マスターノード2Mから転送指示コマンドを受け取る。転送元ノード2Sのキャッシュ制御部12は、転送指示コマンドに含まれるブロック識別子を参照して、対象ブロックBLKを特定する。そして、そのキャッシュ制御部12は、コピーブロックCBLK(Currentコピー)を記憶装置20から読み出し、読み出したCurrentコピーをアクセス処理ノード2Aに転送する。また、キャッシュ制御部12は、そのコピーブロックCBLK(Currentコピー)に関連付けられたメタ情報METに含まれるアクセス履歴情報HISも、アクセス処理ノード2Aに転送する。アクセス処理ノード2Aは、転送指示コマンドに含まれるノード識別子から特定可能である。Currentコピー及び対応するアクセス履歴情報HISは、転送元ノード2Sの通信部11を通して、アクセス処理ノード2Aへ送られる。
ステップS166:
一方、いずれの計算ノード2もCurrentコピーを有していない場合(ステップS162;No)、マスターノード2Mのキャッシュ制御部12は、ミスヒット通知をアクセス処理ノード2Aへ送信する。また、マスターノード2Mのキャッシュ制御部12は、対象ブロックBLKのコンシステンシ管理情報CONに含まれるアクセス履歴情報HISを、アクセス処理ノード2Aへ送信する。アクセス処理ノード2Aは、コピーリクエストに含まれるノード識別子から特定可能である。ミスヒット通知及びアクセス履歴情報HISは、マスターノード2Mの通信部11からアクセス処理ノード2Aへ送られる。更に、マスターノード2Mのキャッシュ制御部12は、対象ブロックBLKに関するディレクトリ情報DIRを更新する。具体的には、キャッシュ制御部12は、アクセス処理ノード2Aに対応するスタータスを“exclusive”に設定する。
ステップS152:
上記ステップS172が実施された場合、アクセス処理ノード2Aの通信部11は、転送元ノード2Sから対象ブロックBLKのCurrentコピー及びアクセス履歴情報HISを受信する。アクセス処理ノード2Aのキャッシュ制御部12は、受信したCurrentコピーをコピーブロックCBLKとして記憶装置20に格納する。また、キャッシュ制御部12は、そのコピーブロックCBLKと関連付けてメタ情報METも記憶装置20に格納する。そのメタ情報METに含まれるステータスは“shared”に設定される。一時的ライトアクセス数と一時的リードアクセス数は共に初期値(=0)に設定される。
ステップS153:
一方、上記ステップS166が実施された場合、アクセス処理ノード2Aの通信部11は、マスターノード2Mからミスヒット通知及びアクセス履歴情報HISを受け取る。アクセス処理ノード2Aのキャッシュ制御部12は、そのミスミット通知に応答して、ストレージ3から対象ブロックBLKを読み出す。そして、そのキャッシュ制御部12は、読み出した対象ブロックBLKをコピーブロックCBLKとして記憶装置20に格納する。また、キャッシュ制御部12は、そのコピーブロックCBLKと関連付けてメタ情報METも記憶装置20に格納する。そのメタ情報METに含まれるステータスは“exclusive”に設定される。一時的ライトアクセス数と一時的リードアクセス数は共に初期値(=0)に設定される。
以上により、ブロック転送処理(ステップS150)が終了する。その後、上述のステップS120〜S140が実施される。
3−2.ライトアクセス処理(ステップS200)
次に、本実施の形態におけるライトアクセス処理(ステップS200)を説明する。図8は、ライトアクセス処理を示すフローチャートである。
ステップS201:
アクセス処理ノード2Aのキャッシュ制御部12は、自ノード2Aが対象ブロックBLKのコピーブロックCBLKをキャッシュしているか否かを判定する。コピーブロックCBLKが既にキャッシュされている場合(ステップS201;Yes)、処理はステップS203へ進む。一方、コピーブロックCBLKがキャッシュされていない場合(ステップS201;No)、処理はステップS202へ進む。
ステップS202:
アクセス処理ノード2Aのキャッシュ制御部12は、ストレージ3から対象ブロックBLKを読み出し、読み出した対象ブロックBLKをコピーブロックCBLKとして記憶装置20に格納する。このとき、キャッシュ制御部12は、そのコピーブロックCBLKと関連付けてメタ情報METも記憶装置20に格納する。そのメタ情報METに含まれるアクセス履歴情報HISは、マスターノード2Mから取得される。アクセス処理ノード2Aがマスターノード2Mからアクセス履歴情報HISを取得する方法は、上述のステップS151やステップS166と同様である。また、メタ情報MET中の一時的ライトアクセス数と一時的リードアクセス数は共に初期値(=0)に設定される。
ステップS203:
クライアント100から受け取ったライトアクセスには、書き込みデータも含まれている。アクセス処理ノード2Aのキャッシュ制御部12は、記憶装置20に格納されているコピーブロックCBLKにその書き込みデータを書き込む。
ステップS204:
アクセス処理ノード2Aのキャッシュ制御部12は、コピーブロックCBLKに関連付けられているメタ情報METを更新する。具体的には、キャッシュ制御部12は、当該メタ情報METに含まれるステータスを“exclusive”に設定する。また、そのキャッシュ制御部12は、当該メタ情報METに含まれる一時的ライトアクセス数を1だけ増加させる(インクリメントする)。
ステップS210:
アクセス処理ノード2Aの転送量算出部13は、将来発生するブロック転送処理(ステップS150)によるコピーブロックCBLKの「ブロック転送量」を算出する。図9は、本実施の形態に係るブロック転送量算出処理を示すフローチャートである。
ステップS211:
まず、転送量算出部13は、コピーブロックCBLKに関連付けられているメタ情報METに含まれるアクセス履歴情報HISを参照する。そして、転送量算出部13は、そのアクセス履歴情報HISに基づいて、対象ブロックBLKに関する過去の「アクセス特性」を算出する。本実施の形態において、アクセス特性は、少なくとも「ライトアクセス比率W」と「ライトアクセスレートRT」を含む。ライトアクセス比率Wは、対象ブロックBLKへの総アクセス数に対する、対象ブロックBLKへのライトアクセス数の比率である。ライトアクセスレートRTは、単位時間あたりの対象ブロックBLKへのライトアクセス数である。
上述の通り、アクセス履歴情報HISには、過去のライトアクセス数NW、過去のリードアクセス数NR、及びライトアクセス数NWとリードアクセス数NRの測定開始時刻T0が含まれている。従って、転送量算出部13は、次の式(1)及び式(2)に従って、ライトアクセス比率W及びライトアクセスレートRTをそれぞれ算出することができる。
式(1):W=NW/(NW+NR)
式(2):RT=NW/(T−T0)
ここで、Tは現在時刻を表し、T−T0は測定期間を表す。
ステップS212:
次に、転送量算出部13は、1回のライトアクセスに起因して将来発生するコピーブロックCBLKの転送回数C(W,N)を算出する。その転送回数C(W,N)に関しては、本願発明者らによる論文(S. Sasaki and A. Tanaka,“An Analytical Model of Inter-Node Communication towards Performance Prediction of Multi-Node Systems”, Proceedings of International Symposium on Computer and Information Sciences, October 2008.)において詳しく解析されている。転送回数C(W,N)に関する詳細は、その論文も参照されたい。
1回のライトアクセスに起因して将来発生するコピーブロックCBLKの転送回数C(W,N)は、上述のライトアクセス比率W及びスコープNに依存する。まず、ライトアクセス比率Wが大きいほど、転送回数C(W,N)は少なくなる。それは、ライトアクセス比率Wが大きい状態は、リードアクセス比率が小さい状態を意味し、結果として、ブロック転送処理が発生する機会が少なくなるからである。また、スコープN(n個の計算ノード2−1〜2−nのうち当該ブロックBLKへのアクセスが発行される計算ノード2の数)が大きいほど、転送回数C(W,N)は多くなる。このように、転送回数C(W,N)は、ライトアクセス比率Wが小さくなるほど、また、スコープNが大きくなるほど、多くなる。
従って、転送量算出部13は、ライトアクセス比率WとスコープNに基づいて、転送回数C(W,N)を算出する。ライトアクセス比率Wは、上記ステップS211で得られている。また、スコープNは、メタ情報MET中のアクセス履歴情報HISに含まれている。そして、転送量算出部13は、所定の関数を用いることによって転送回数C(W,N)を算出する。その所定の関数によれば、ライトアクセス比率Wが小さくなるほど、また、スコープNが大きくなるほど多くなる転送回数C(W,N)が得られる。例えば、その所定の関数は、次の式(3)で与えられる。
式(3):C(W,N)=(N−1)/(W・N−W+1)
N=1の場合、転送回数C(W,N)は0である。N=2の場合、転送回数C(W,N)は、1/(W+1)である。N=3の場合、転送回数C(W,N)は、2/(2W+1)である。N=4の場合、転送回数C(W,N)は、3/(3W+1)である。このように、スコープNが大きくなるほど、転送回数C(W,N)は多くなる。また、ライトアクセス比率Wが小さくなるほど、転送回数C(W,N)が多くなる。上記論文によれば、式(3)で与えられる関数を用いることにより、転送回数C(W,N)がほぼ正確に予測され得ることが実証されている。
ステップS213:
次に、転送量算出部13は、将来発生するコピーブロックCBLKの転送量(ブロック転送量)を予測する。ブロック転送量は、単位時間あたりにブロック転送処理に費やされる時間である。1回のライトアクセスに起因して将来発生するコピーブロックCBLKの転送回数C(W,N)は、上記ステップS212で算出されている。また、単位時間あたりのライトアクセス数であるライトアクセスレートRTは、上記ステップS211で算出されている。更に、1回のブロック転送に要する転送コスト(CPU使用時間)は、記憶装置20に格納されている転送コスト情報CSTから得られる。従って、転送量算出部13は、それら情報に基づき、次の式(4)に従ってブロック転送量を算出することができる。
式(4):ブロック転送量=RT×C(W,N)×転送コスト
算出されるブロック転送量は、将来のブロック転送量の予測値である。このようにして転送量算出部13によって算出されたブロック転送量は、以下「予測ブロック転送量」と参照される。
ステップS220:
再度図8を参照して、アクセス処理ノード2Aのキャッシュ制御部12は、コンシステンシを緩和するか否かを決定する。この時、そのキャッシュ制御部12は、上記ステップS210において得られた予測ブロック転送量と、記憶装置20に格納されている目標情報TARを参照する。上述の通り、目標情報TARは目標性能を示している。従って、キャッシュ制御部12は、予測ブロック転送量と目標性能に基づき、目標性能が達成されるように、コンシステンシ緩和の要否を決定する。コンシステンシを緩和するか否かの決定方法は、後に詳しく説明される。
コンシステンシが緩和されない場合、すなわち、コンシステンシが維持される場合、アクセス処理ノード2Aのキャッシュ制御部12は、上述の2つの方式のうち「第1の方式」を採用する。この場合、処理はステップS230に進む。
ステップS230:
アクセス処理ノード2Aと異なる他のノード2Cが、対象ブロックBLKのコピーであるコピーブロックCBLKをキャッシュしている可能性がある。アクセス処理ノード2AのコピーブロックCBLKに新たなデータが書き込まれたため、ノード2CのコピーブロックCBLKのステータスを“stale”に変更する必要がある。
まず、アクセス処理ノード2Aのキャッシュ制御部12は、対象ブロックBLKに割り当てられているマスターノード2Mを特定する。このとき、キャッシュ制御部12は、アクセスに含まれるブロック識別子をハッシュする等の方法によって、外部と通信することなく、マスターノード2Mを特定することができる。そして、キャッシュ制御部12は、そのマスターノード2Mに対して、ノード2CのコピーブロックCBLKのステータスを“stale”に変更するよう指示する。ステータスの変更を指示するステータス変更コマンドは、対象ブロックBLKのブロック識別子とアクセス処理ノード2Aのノード識別子を含む。そのステータス変更コマンドは、アクセス処理ノード2Aの通信部11からマスターノード2Mへ送られる。
ステップS241:
マスターノード2Mの通信部11は、アクセス処理ノード2Aからステータス変更コマンドを受け取る。マスターノード2Mのキャッシュ制御部12は、ステータス変更コマンドに含まれるブロック識別子を参照して、対象ブロックBLKを特定する。そして、キャッシュ制御部12は、その対象ブロックBLKのコンシステンシ管理情報CONに含まれるディレクトリ情報DIRを参照する。
まず、マスターノード2Mのキャッシュ制御部12は、ディレクトリ情報DIRを参照することにより、Currentコピーをキャッシュしているノード2Cを特定する。ノード2Cは複数存在する場合もある。そして、キャッシュ制御部12は、ディレクトリ情報DIR中の該当するノード2Cに対応するステータスを“stale”に変更する。また、キャッシュ制御部12は、ステータス変更コマンドに含まれるノード識別子から、アクセス処理ノード2Aを特定する。そして、キャッシュ制御部12は、ディレクトリ情報DIR中のアクセス処理ノード2Aに対応するステータスを“exclusive”に設定する。
更に、マスターノード2Mのキャッシュ制御部12は、上記特定されたノード2Cのそれぞれに対して、ステータスを“stale”に変更するように指示する。ステータスの変更を指示するステータス変更コマンドは、対象ブロックBLKのブロック識別子を含む。そのステータス変更コマンドは、マスターノード2Mの通信部11からノード2Cのそれぞれへ送られる。
ステップS251:
各ノード2Cの通信部11は、マスターノード2Mからステータス変更コマンドを受け取る。各ノード2Cのキャッシュ制御部12は、ステータス変更コマンドに含まれるブロック識別子を参照して、対象ブロックBLKを特定する。そして、そのキャッシュ制御部12は、コピーブロックCBLKに関連付けられたメタ情報METに含まれるステータスを、“stale”に変更する。
ステップS252:
更に、各ノード2Cのキャッシュ制御部12は、コピーブロックCBLKに関連付けられたメタ情報METに含まれる一時アクセス情報TMPを読み出す。そして、そのキャッシュ制御部12は、読み出した一時アクセス情報TMPをマスターノード2Mに通知する。一時アクセス情報TMPは、各ノード2Cの通信部11からマスターノード2Mに送られる。その後、各ノード2Cのキャッシュ制御部12は、一時アクセス情報TMPに含まれる一時的ライトアクセス数及び一時的リードアクセス数の両方を初期値(=0)にリセットする。
ステップS242:
マスターノード2Mの通信部11は、各ノード2Cから一時アクセス情報TMPを受け取る。マスターノード2Mのキャッシュ制御部12は、対象ブロックBLKに関するコンシステンシ管理情報CONを更新する。具体的には、キャッシュ制御部12は、受け取った一時アクセス情報TMPに含まれる一時的ライトアクセス数及び一時的リードアクセス数を、アクセス履歴情報HISに含まれるライトアクセス数NWとリードアクセス数NRのそれぞれに加算する。
一方、ステップS220においてコンシステンシの緩和が決定された場合、アクセス処理ノード2Aのキャッシュ制御部12は、上述の2つの方式のうち「第2の方式」を採用する。すなわち、キャッシュ制御部12は、当該ライトアクセスを「擬似ライトアクセス」として扱う。この場合、アクセス処理ノード2Aのキャッシュ制御部12は、ノード2CにおけるコピーブロックCBLKのステータスの変更を指示しない。つまり、上述のステップS230以降は実行されない。従って、ノード2CにキャッシュされているコピーブロックCBLKのステータスは“stale”に変更されない。その結果、現在のライトアクセスに起因して、ブロック転送処理が将来発生する確率が低くなり、システム性能の劣化が抑制される。
以上に説明されたように、通常のライトアクセスが実施されると、コンシステンシは維持される。一方、擬似ライトアクセスが実施されると、コンシステンシは緩和される。そして、コンシステンシが緩和された後、再度ライトアクセスが実施されると、コンシステンシは自動的に回復することになる。
3−3.コンシステンシ緩和判定処理(ステップS220)
ステップS220では、コンシステンシを緩和するか否かの判定が行われる。つまり、ライトアクセスを実施するか擬似ライトアクセスを実施するかの判定が行われる。図10は、本実施の形態におけるステップS220の一例を示すフローチャートである。
ステップS221:
アクセス処理ノード2Aのキャッシュ制御部12は、目標情報TARに基づいて、閾値転送量を算出する。閾値転送量は、目標性能が達成され得るブロック転送量の上限値である。例えば、目標情報TARが「スケーラビリティ=0.8」を示している場合、閾値転送量は0.2(=1−0.8)である。目標情報TARは閾値転送量そのものを示していてもよい。その場合、キャッシュ制御部12は、目標情報TARで示される閾値転送量をそのまま用いる。
ステップS222:
次に、アクセス処理ノード2Aのキャッシュ制御部12は、予測ブロック転送量と閾値転送量との比較を行う。
ステップS223:
アクセス処理ノード2Aのキャッシュ制御部12は、その比較の結果に基づいて、コンシステンシを緩和するか否かを決定する。具体的には、予測ブロック転送量が閾値転送量を超える場合(ステップS223;Yes)、目標性能が達成されない可能性が高い。従って、アクセス処理ノード2Aのキャッシュ制御部12は、コンシステンシを緩和することを決定する。一方、予測ブロック転送量が閾値転送量以下の場合(ステップS223;No)、目標性能が達成される可能性が高い。従って、アクセス処理ノード2Aのキャッシュ制御部12は、コンシステンシを緩和しないことを決定する。
コンシステンシが緩和される場合、擬似ライトアクセスが実施される。図10で示されたアルゴリズムによれば、一度コンシステンシが緩和されると、擬似ライトアクセスが実施される期間がしばらく続く。従って、ブロック転送処理の発生回数が比較的早く減り、目標性能が素早く達成されることが期待される。その一方で、擬似ライトアクセスがしばらく続くため、コンシステンシが緩和され過ぎることも考えられる。例えば、ある計算ノード2において、コピーブロックCBLKの“見た目のステータス”はsharedであるが、実際にはそのコピーブロックCBLKがかなり古いものになっている状況が考えられる。このような状況で、ブロックBLKに対する通常のライトアクセスが実施されると、当該計算ノード2におけるコピーブロックCBLKのステータスが実際に即したものに更新される。すなわち、コンシステンシが回復する。この観点から言えば、コンシステンシを緩和したい場合であっても、ある程度通常のライトアクセスを実施することが好適である。通常のライトアクセスをある程度確保するためのアルゴリズムとして、例えば、次のようなものが考えられる。
図11は、ステップS220の変形例を示すフローチャートである。ステップS221〜S223は、図10の場合と同じである。予測ブロック転送量が閾値転送量以下の場合(ステップS223;No)、アクセス処理ノード2Aのキャッシュ制御部12は、コンシステンシを緩和しないことを決定する。従って、通常のライトアクセスが実施される。一方、予測ブロック転送量が閾値転送量を超える場合(ステップS223;Yes)、通常のライトアクセスと擬似ライトアクセスは、ある比率で実施される。そのために、処理はステップS224に進む。
ステップS224:
アクセス処理ノード2Aのキャッシュ制御部12は、予測ブロック転送量に対する閾値転送量の比率DIFFを算出する(比率DIFF=閾値転送量/予測ブロック転送量)。予測ブロック転送量は閾値転送量を超えているため、比率DIFFは0〜1の範囲の値を取る。
ステップS225:
アクセス処理ノード2Aのキャッシュ制御部12は、ステップS224で算出された比率DIFFに基づいて、コンシステンシを緩和するか否かを決定する。比率DIFFが比較的大きい場合、それは、予測ブロック転送量が閾地転送量をそれほど上回っていないことを意味する。従って、擬似ライトアクセスの頻度が低くても、目標性能は比較的早く達成されると考えられる。一方、比率DIFFが比較的小さい場合、それは、予測ブロック転送量が閾値転送量を大きく上回っていることを意味する。従って、目標性能が達成されるまでの時間の増大を防ぐためには、擬似ライトアクセスの頻度を高めることが望ましい。よって、キャッシュ制御部12は、比率DIFFが小さくなるほどコンシステンシが緩和される確率が高くなるように、コンシステンシの緩和の要否を決定する。
例えば、アクセス処理ノード2Aのキャッシュ制御部12は、0以上1未満の乱数RNDを生成する。乱数RNDが比率DIFF以上の場合(ステップS226;Yes)、キャッシュ制御部12は、コンシステンシを緩和することを決定する。この場合、擬似ライトアクセスが実施される。一方、乱数RNDが比率DIFFより小さい場合(ステップS226;No)、キャッシュ制御部12は、コンシステンシを緩和しないことを決定する。この場合、通常のライトアクセスが実施される。
例えば、比率DIFFが0.3の場合、予測ブロック転送量は閾値転送量をかなり上回っている。この場合、しばらくの間、30%の確率で通常のライトアクセスが実施され、70%の確率で擬似ライトアクセスが実施される。擬似ライトアクセスの頻度が比較的高いため、目標性能が素早く達成される。また、例えば、比率DIFFが0.9の場合、予測ブロック転送量は閾値転送量をそれほど上回っていない。この場合、しばらくの間、90%の確率で通常のライトアクセスが実施され、10%の確率で擬似ライトアクセスが実施される。擬似ライトアクセスの頻度は低いが、目標性能は直ぐに達成される。いずれの場合であっても、通常のライトアクセスがある程度実施されるため、コンシステンシが緩和され過ぎることが防止される。
以上に説明されたように、本実施の形態によれば、ライトアクセスを受け取ったアクセス処理ノード2Aは、コンシステンシを緩和するか否かを自動的に決定する。この時、アクセス処理ノード2Aは、将来のブロック転送量を予測し、システムの目標性能が達成されるように、コンシステンシの緩和の要否を決定する。このように、目標性能が達成されるように、コンシステンシを自動的に制御(維持、緩和)することが可能である。
4.具体例
次に、具体例を用いて、本実施の形態に係る処理を説明する。図12は、ある時の状態を概念的に示している。ここでは、5個の計算ノード2−1〜2−5を考える(計算ノード2−4、2−5は図示されていない)。対象ブロックは、ブロックBLKである。
計算ノード2−1は、対象ブロックBLKのマスターノード2Mである。従って、計算ノード2−1は、対象ブロックBLKに関するコンシステンシ管理情報CONを有している。ディレクトリ情報DIRは、「計算ノード2−2がExclusiveコピーをキャッシュしており、他の計算ノードはコピーブロックCBLKをキャッシュしていないこと」を示している。アクセス履歴情報HISは、「ライトアクセス数NW=10000、リードアクセス数NR=40000、測定開始時刻T0=8000000、スコープN=4」を示している。例えば、5個の計算ノード2のうち4個の計算ノード2−1〜2−4に対して、ブロックBLKへのアクセスが発行される。
図12で示される状態は、計算ノード2−2があるライトアクセスを処理した直後の状態である。従って、計算ノード2−2は、コピーブロックCBLK−2(Exclusiveコピー)をキャッシュしている。また、計算ノード2−2は、そのコピーブロックCBLK−2に関連付けられたメタ情報METを有している。コピーブロックCBLK−2のステータスは“exclusive”である。一時的ライトアクセス数は“1”になっている。
計算ノード2−3〜2−5は、コピーブロックCBLKをキャッシュしていない。
図12で示された状態の後、計算ノード2−3に対してリードアクセスが発行されたとする。この場合、図6及び図7で示されたリードアクセス処理(ステップS100)が行われる。図13は、このリードアクセス処理が行われた後の結果を示している。図6、図7、図12、及び図13を参照して、リードアクセス処理を説明する。
計算ノード2−3は、アクセス処理ノード2Aである。この計算ノード2−3は、対象ブロックBLKのCurrentコピーをキャッシュしていない(ステップS110;No)。従って、計算ノード2−3は、マスターノード2−1に対して、Curretコピーを要求する(ステップS151)。
マスターノード2−1は、ディレクトリ情報DIRを参照し、「計算ノード2−2がExclusiveコピーをキャッシュしていること」を検出する(ステップS162;Yes、ステップS163;Yes)。よって、計算ノード2−2が転送元ノード2Sとなる。マスターノード2−1は、計算ノード2−2に対して、ステータス変更とCurrentコピーの転送を指示する(ステップS164、ステップS165)。また、マスターノード2−1は、ディレクトリ情報DIR中の計算ノード2−2に対応するステータスを“exclusive”から“shared”に変更し、計算ノード2−3に対応するステータスを“shared”に設定する。
計算ノード2−2は、ステータス変更指示に応答して、コピーブロックCBLK−2のステータスを“exclusive”から“shared”に変更する(ステップS171)。また、計算ノード2−2は、転送指示コマンドに応答して、コピーブロックCBLK−2(Currentコピー)及びアクセス履歴情報HISを計算ノード2−3に転送する(ステップS172)。
計算ノード2−3は、計算ノード2−2から受け取ったCurrentコピーをコピーブロックCBLK−3としてキャッシュする(ステップS152)。また、計算ノード2−3は、コピーブロックCBLK−3と関連付けられたメタ情報METを作成する。そのメタ情報METに記載されるステータスは“shared”である。
その後、計算ノード2−2は、メタ情報METに含まれる一時的リードアクセス数を1だけ増加させる(ステップS120)。そして、計算ノード2−2は、コピーブロックCBLK−3からリード対象データを読み出し(ステップS130)、読み出しデータをクライアントへ送信する(ステップS140)。
次に、図13で示された状態の後、計算ノード2−2に対してライトアクセスが発行されたとする。この場合、図8〜図11で示されたライトアクセス処理(ステップS200)が行われる。図14は、このライトアクセス処理が行われた後の結果を示している。図8〜図11、図13及び図14を参照して、ライトアクセス処理を説明する。
計算ノード2−2は、アクセス処理ノード2Aである。計算ノード2−2は、コピーブロックCBLK−2をキャッシュしている(ステップS201;Yes)。よって、計算ノード2−2は、コピーブロックCBLK−2に書き込みデータを書き込む(ステップS203)。また、計算ノード2−2は、コピーブロックCBLK−2のステータスを“shared”から“exclusive”に変更し、一時的ライトアクセス数を1だけ増加させる(ステップS204)。一時的ライトアクセス数は2になる。
また、計算ノード2−2は、ブロック転送量を予測する(ステップS210)。まず、計算ノード2−2は、メタ情報METに含まれるアクセス履歴情報HISから、「ライトアクセス数NW=10000、リードアクセス数NR=40000、測定開始時刻T0=8000000、スコープN=4」を取得する。計算ノード2−2は、式(1)に従って、ライトアクセス比率Wを0.2(=10000/(10000+40000))と算出する。また、現在時刻Tは8001000であるとする。この場合、計算ノード2−2は、式(2)に従って、ライトアクセスレートRTを10(=10000/(8001000−8000000))と算出する。
次に、計算ノード2−2は、式(3)に従って、転送回数C(W,N)を算出する。ライトアクセス比率Wが0.2であり、スコープNが4であるため、転送回数C(W,N)は、1.875と算出される。また、転送コスト(CPU使用時間)は、0.01[秒]であるとする。従って、計算ノード2−2は、式(4)に従って、ブロック転送量を0.1875(=10×1.875×0.01)[秒]と算出する。つまり、計算ノード2−2は、1秒あたりに0.1875秒がブロック転送処理に費やされると予測する。
次に、計算ノード2−2は、予測ブロック転送量と目標性能に基づいて、コンシステンシを緩和するか否かを決定する(ステップS220)。本例では、目標性能はスケーラビリティ=0.8であり、閾値転送量は0.2(=1−0.8)であるとする。この場合、予測ブロック転送量=0.1875は、閾値転送量=0.2を超えない(ステップS223;No)。従って、計算ノード2−2は、コンシステンシを緩和しないことを決定する。
この場合、計算ノード2−2は、マスターノード2−1に対して、ステータス変更を指示する(ステップS230)。
マスターノード2−1は、ディレクトリ情報DIRを参照して、計算ノード2−2以外にCurrentコピーをキャッシュしている計算ノード2−3を特定する。つまり、計算ノード2−3は、ノード2Cである。従って、マスターノード2−1は、計算ノード2−3に対して、ステータス変更を指示する(ステップS241)。また、マスターノード2−1は、ディレクトリ情報DIRを更新する。具体的には、マスターノード2−1は、計算ノード2−2に対応するステータスを“shared”から“exclusive”に変更し、計算ノード2−3に対応するステータスを“shared”から“stale”に変更する。
計算ノード2−3は、ステータス変更指示に応答して、コピーブロックCBLK−3のステータスを“shared”から“stale”に変更する(ステップS251)。また、計算ノード2−3は、メタ情報MET中の一時アクセス情報TMPを、マスターノード2−1に送信する(ステップS252)。その後、計算ノード2−3は、一時アクセス情報TMPをリセットする。
マスターノード2−1は、計算ノード2−3から一時アクセス情報TMPを受け取る。そして、マスターノード2−1は、受け取った一時アクセス情報TMPを用いることにより、コンシステンシ管理情報CONに含まれるアクセス履歴情報HISを更新する。その結果、ブロックBLKに関するリードアクセス数NRは、40001となる。
次に、別の例として、現在時刻Tが8000500である場合のライトアクセス処理を説明する。図14の場合と同様に、図13で示された状態の後、計算ノード2−2に対してライトアクセスが発行されたとする。ステップS210までの処理は、図14の場合と同じである。
ステップS210において、計算ノード2−2は、式(2)に従って、ライトアクセスレートRTを20(=10000/(8000500−8000000))と算出する。転送回数C(W,N)は、図14の場合と同じく、1.875と予測される。従って、計算ノード2−2は、式(4)に従って、ブロック転送量を0.375(=20×1.875×0.01)[秒]と算出する。つまり、計算ノード2−2は、1秒あたりに0.375秒がブロック転送処理に費やされると予測する。
ステップS220において、計算ノード2−2は、予測ブロック転送量と目標性能に基づいて、コンシステンシを緩和するか否かを決定する。本例では、予測ブロック転送量=0.375は、閾値転送量=0.2を超えている(ステップS223;Yes)。従って、図10で示されたフローに従う場合、計算ノード2−2は、コンシステンシを緩和することを決定する。
図11で示されたフローに従う場合、計算ノード2−2は、予測ブロック転送量に対する閾値転送量の比率DIFFを算出する(ステップS224)。本例では、比率DIFFは、0.533(=0.2/0.375)と算出される。続いて、計算ノード2−2は、0以上1未満の乱数RNDを生成する(ステップS225)。乱数RNDが比率DIFF以上の場合(ステップS226;Yes)、計算ノード2−2は、コンシステンシを緩和することを決定する。一方、乱数RNDが比率DIFFより小さい場合(ステップS226;No)、計算ノード2−2は、コンシステンシを緩和しないことを決定する。
コンシステンシが緩和される場合、ステップS230以降の処理は実施されない。図15は、その場合の結果を示している。図15に示されるように、計算ノード2−3にキャッシュされているコピーブロックCBLK−3のステータスは、“stale”に変更されていない。つまり、コピーブロックCBLK−3のステータスは、“shared”のままである。また、ブロックBLKに関するコンシステンシ管理情報CONも更新されていない。
その後、計算ノード2−3に対してリードアクセスが発行されたとする。図14の場合、コピーブロックCBLK−3のステータスは“stale”であるため、計算ノード2−3は、自身がCurrentコピーをキャッシュしていないと判断する。その結果、計算ノード2−3は、Currentコピーの転送を要求し、ブロック転送処理が発生する。一方、図15の場合、コピーブロックCBLK−3のステータスは“shared”であるため、計算ノード2−3は、自身がCurrentコピーをキャッシュしていると判断する。従って、計算ノード2−3は、Currentコピーの転送を要求することなく、自身のコピーブロックCBLK−3からデータを読み出す。すなわち、ブロック転送処理は発生しない。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
図1は、本発明の実施の形態に係る分散キャッシュシステムの構成を概略的に示すブロック図である。 図2は、本発明の実施の形態に係る計算ノードの構成を示すブロック図である。 図3は、本発明の実施の形態におけるコンシステンシ管理情報の一例を示す。 図4は、本発明の実施の形態におけるメタ情報の一例を示す。 図5は、本発明の実施の形態に係る分散キャッシュシステムの処理を示すフローチャートである。 図6は、本発明の実施の形態に係るリードアクセス処理を示すフローチャートである。 図7は、本発明の実施の形態に係るブロック転送処理を示すフローチャートである。 図8は、本発明の実施の形態に係るライトアクセス処理を示すフローチャートである。 図9は、本発明の実施の形態に係るブロック転送量算出処理を示すフローチャートである。 図10は、本発明の実施の形態に係るコンシステンシ緩和判定処理の一例を示すフローチャートである。 図11は、本発明の実施の形態に係るコンシステンシ緩和判定処理の変形例を示すフローチャートである。 図12は、本発明の実施の形態におけるリードアクセス処理の一例を示す概念図である。 図13は、本発明の実施の形態におけるリードアクセス処理の一例を示す概念図である。 図14は、本発明の実施の形態におけるライトアクセス処理の一例を示す概念図である。 図15は、本発明の実施の形態におけるライトアクセス処理の他の例を示す概念図である。
符号の説明
1 分散キャッシュシステム
2 計算ノード
10 処理装置
11 通信部
12 キャッシュ制御部
13 転送量算出部
20 記憶装置
30 入力装置
40 出力装置
50 通信装置
100 クライアント
BLK ブロック
CBLK コピーブロック
DSET データセット
CON コンシステンシ管理情報
DIR ディレクトリ情報
HIS アクセス履歴情報
MET メタ情報
TMP 一時アクセス情報
TAR 目標情報
CST 転送コスト情報
PROG 分散キャッシュプログラム

Claims (15)

  1. ブロック単位でデータキャッシュを行う複数の計算ノードを備え、
    前記複数の計算ノードの各々は、
    ブロックのコピーであるコピーブロックと、前記コピーブロックに関連付けられたメタ情報と、が格納される記憶装置と、
    前記複数の計算ノード間でのキャッシュのコンシステンシを制御するキャッシュ制御部と、
    転送量算出部と
    を備え、
    前記メタ情報は、
    前記コピーブロックのステータスと、
    前記ブロックに関する過去のアクセス状況を示すアクセス履歴情報と
    を含み、
    前記複数の計算ノードのうち第1計算ノードは、第1ブロックに対するライトアクセスを受け取り、
    前記第1ブロックのコピーは第1コピーブロックであり、
    前記第1計算ノードの前記転送量算出部は、前記第1コピーブロックに関連付けられた前記メタ情報に含まれる前記アクセス履歴情報を参照して、前記複数の計算ノード間で将来発生する前記第1コピーブロックの転送量を算出し、
    前記第1計算ノードの前記キャッシュ制御部は、目標性能と前記算出された転送量に基づいて、前記コンシステンシを緩和するか否かを決定し、
    前記コンシステンシを緩和しない場合、前記第1計算ノードの前記キャッシュ制御部は、前記第1コピーブロックをキャッシュしている他の計算ノードが前記第1コピーブロックの前記ステータスを変更するよう指示を行い、
    前記コンシステンシを緩和する場合、前記第1計算ノードの前記キャッシュ制御部は、前記他の計算ノードが前記第1コピーブロックの前記ステータスを変更することを指示しない
    分散キャッシュシステム。
  2. 請求項1に記載の分散キャッシュシステムであって、
    前記目標性能が達成される前記転送量の上限は、閾値転送量であり、
    前記第1計算ノードの前記キャッシュ制御部は、前記算出された転送量と前記閾値転送量との比較を行い、前記比較の結果に基づいて、前記コンシステンシを緩和するか否かを決定する
    分散キャッシュシステム。
  3. 請求項2に記載の分散キャッシュシステムであって、
    前記算出された転送量が前記閾値転送量以下の場合、前記第1計算ノードの前記キャッシュ制御部は、前記コンシステンシを緩和しないことを決定する
    分散キャッシュシステム。
  4. 請求項3に記載の分散キャッシュシステムであって、
    前記算出された転送量が前記閾値転送量を超える場合、前記第1計算ノードの前記キャッシュ制御部は、前記算出された転送量に対する前記閾値転送量の比率を算出し、前記比率に基づいて前記コンシステンシを緩和するか否かを決定し、
    前記比率が小さい程、前記コンシステンシが緩和される確率が高くなる
    分散キャッシュシステム。
  5. 請求項4に記載の分散キャッシュシステムであって、
    前記第1計算ノードの前記キャッシュ制御部は、0以上1未満の乱数を生成し、
    前記乱数が前記比率以上の場合、前記第1計算ノードの前記キャッシュ制御部は、前記コンシステンシを緩和することを決定し、
    前記乱数が前記比率より小さい場合、前記第1計算ノードの前記キャッシュ制御部は、前記コンシステンシを緩和しないことを決定する
    分散キャッシュシステム。
  6. 請求項3に記載の分散キャッシュシステムであって、
    前記算出された転送量が前記閾値転送量を超える場合、前記第1計算ノードの前記キャッシュ制御部は、前記コンシステンシを緩和することを決定する
    分散キャッシュシステム。
  7. 請求項1乃至6のいずれか一項に記載の分散キャッシュシステムであって、
    前記ステータスは、
    前記コピーブロックが最新であり、且つ、前記複数の計算ノードのうち自身にのみキャッシュされていることを示すexclusiveと、
    前記コピーブロックが最新であり、且つ、前記複数の計算ノードのうち2以上の計算ノードにキャッシュされていることを示すsharedと、
    前記コピーブロックが最新ではないことを示すstaleと
    を含み、
    前記第1計算ノードの前記キャッシュ制御部は、前記ライトアクセスに応答して、前記第1コピーブロックの前記ステータスをexclusiveに設定し、
    前記コンシステンシを緩和しない場合、前記第1計算ノードの前記キャッシュ制御部は、前記他の計算ノードが前記第1コピーブロックの前記ステータスをstaleに変更するよう指示を行い、
    前記コンシステンシを緩和する場合、前記第1計算ノードの前記キャッシュ制御部は、前記他の計算ノードが前記第1コピーブロックの前記ステータスをstaleに変更することを指示しない
    分散キャッシュシステム。
  8. 請求項7に記載の分散キャッシュシステムであって、
    前記他の計算ノードは、前記第1ブロックに対するリードアクセスを受け取り、
    前記第1コピーブロックの前記ステータスがexclusiveあるいはsharedの場合、前記他の計算ノードの前記キャッシュ制御部は、前記記憶装置に格納されている前記第1コピーブロックからデータを読み出し、
    前記第1コピーブロックの前記ステータスがstaleの場合、前記他の計算ノードの前記キャッシュ制御部は、前記第1計算ノードからの前記第1コピーブロックの転送を要求する
    分散キャッシュシステム。
  9. 請求項1乃至8のいずれか一項に記載の分散キャッシュシステムであって、
    ライトアクセス比率Wは、前記第1ブロックへの総アクセス数に対する前記第1ブロックへのライトアクセス数の比率であり、
    ライトアクセスレートRTは、単位時間あたりの前記第1ブロックへのライトアクセス数であり、
    スコープNは、前記複数の計算ノードのうち前記第1ブロックへのアクセスが発行される計算ノードの数であり、
    前記第1計算ノードの前記転送量算出部は、前記アクセス履歴情報を参照して、前記ライトアクセス比率W及び前記ライトアクセスレートRTを算出し、
    前記第1計算ノードの前記転送量算出部は、1回のライトアクセスに起因して将来発生する前記第1コピーブロックの転送回数C(W,N)を算出し、ここで、前記転送回数C(W,N)は、前記ライトアクセス比率W及び前記スコープNに依存し、
    前記第1計算ノードの前記転送量算出部は、前記転送回数C(W,N)及び前記ライトアクセスレートRTに基づいて前記転送量を算出する
    分散キャッシュシステム。
  10. 請求項9に記載の分散キャッシュシステムであって、
    前記第1計算ノードの前記転送量算出部は、前記ライトアクセス比率Wが小さくなるほど、また、前記スコープNが大きくなるほど、前記転送回数C(W,N)が多くなる所定の関数を用いることによって、前記転送回数C(W,N)を算出する
    分散キャッシュシステム。
  11. 請求項10に記載の分散キャッシュシステムであって、
    前記所定の関数は、C(W,N)=(N−1)/(W・N−W+1)である
    分散キャッシュシステム。
  12. 請求項9乃至11のいずれか一項に記載の分散キャッシュシステムであって、
    前記第1ブロックに関する前記アクセス履歴情報は、
    前記第1ブロックへの過去のライトアクセス数NWと、
    前記第1ブロックへの過去のリードアクセス数NRと、
    前記ライトアクセス数NWと前記リードアクセス数NRの測定開始時刻T0と、
    前記スコープNと
    を含み、
    前記第1計算ノードの前記転送量算出部は、式:W=NW/(NW+NR)によって前記ライトアクセス比率Wを算出し、
    現在時刻がTであるとき、前記第1計算ノードの前記転送量算出部は、式:RT=NW/(T−T0)によって前記ライトアクセスレートRTを算出する
    分散キャッシュシステム。
  13. ブロック単位でデータキャッシュを行う複数の計算ノードを備える分散キャッシュシステムにおける計算ノードであって、
    ブロックのコピーであるコピーブロックと、前記コピーブロックに関連付けられたメタ情報と、が格納される記憶装置と、
    前記複数の計算ノード間でのキャッシュのコンシステンシを制御するキャッシュ制御部と、
    転送量算出部と
    を備え、
    前記メタ情報は、
    前記コピーブロックのステータスと、
    前記ブロックに関する過去のアクセス状況を示すアクセス履歴情報と
    を含み、
    前記計算ノードは、第1ブロックに対するライトアクセスを受け取り、
    前記第1ブロックのコピーは第1コピーブロックであり、
    前記転送量算出部は、前記第1コピーブロックに関連付けられた前記メタ情報に含まれる前記アクセス履歴情報を参照して、前記複数の計算ノード間で将来発生する前記第1コピーブロックの転送量を算出し、
    前記キャッシュ制御部は、目標性能と前記算出された転送量に基づいて、前記コンシステンシを緩和するか否かを決定し、
    前記コンシステンシを緩和しない場合、前記キャッシュ制御部は、前記第1コピーブロックをキャッシュしている他の計算ノードが前記第1コピーブロックの前記ステータスを変更するよう指示を行い、
    前記コンシステンシを緩和する場合、前記キャッシュ制御部は、前記他の計算ノードが前記第1コピーブロックの前記ステータスを変更することを指示しない
    計算ノード。
  14. 複数の計算ノードがブロック単位でデータキャッシュを行うステップと、
    ここで、前記複数の計算ノードの各々は、ブロックのコピーであるコピーブロックと共に、前記コピーブロックに関連付けられたメタ情報を記憶装置に格納し、
    前記メタ情報は、前記コピーブロックのステータスと、前記ブロックに関する過去のアクセス状況を示すアクセス履歴情報と、を含み、
    前記複数の計算ノードのうち第1計算ノードが、第1ブロックに対するライトアクセスを受け取るステップと、
    ここで、前記第1ブロックのコピーは第1コピーブロックであり、
    前記第1計算ノードが、前記第1コピーブロックに関連付けられた前記メタ情報に含まれる前記アクセス履歴情報を参照して、前記複数の計算ノード間で将来発生する前記第1コピーブロックの転送量を算出するステップと、
    前記第1計算ノードが、目標性能と前記算出された転送量に基づいて、前記複数の計算ノード間でのキャッシュのコンシステンシを緩和するか否かを決定するステップと、
    前記コンシステンシを緩和しない場合、前記第1計算ノードが、前記第1コピーブロックをキャッシュしている他の計算ノードが前記第1コピーブロックの前記ステータスを変更するよう指示を行うステップと、
    前記コンシステンシを緩和する場合、前記第1計算ノードが、前記他の計算ノードが前記第1コピーブロックの前記ステータスを変更することを指示しないステップと
    を含む
    分散キャッシュ方法。
  15. 分散キャッシュシステムにおける計算ノードにコンシステンシ制御処理を実行させる分散キャッシュプログラムであって、
    前記分散キャッシュシステムは、ブロック単位でデータキャッシュを行う複数の計算ノードを備え、
    前記複数の計算ノードの各々は、ブロックのコピーであるコピーブロックと共に、前記コピーブロックに関連付けられたメタ情報を記憶装置に格納し、
    前記メタ情報は、前記コピーブロックのステータスと、前記ブロックに関する過去のアクセス状況を示すアクセス履歴情報と、を含み、
    前記コンシステンシ制御処理は、
    第1ブロックに対するライトアクセスを受け取るステップと、ここで、前記第1ブロックのコピーは第1コピーブロックであり、
    前記第1コピーブロックに関連付けられた前記メタ情報に含まれる前記アクセス履歴情報を参照して、前記複数の計算ノード間で将来発生する前記第1コピーブロックの転送量を算出するステップと、
    目標性能と前記算出された転送量に基づいて、前記複数の計算ノード間でのキャッシュのコンシステンシを緩和するか否かを決定するステップと、
    前記コンシステンシを緩和しない場合、前記第1コピーブロックをキャッシュしている他の計算ノードが前記第1コピーブロックの前記ステータスを変更するよう指示を行うステップと、
    前記コンシステンシを緩和する場合、前記他の計算ノードが前記第1コピーブロックの前記ステータスを変更することを指示しないステップと
    を含む
    分散キャッシュプログラム。
JP2008317528A 2008-12-12 2008-12-12 分散キャッシュシステム、方法、プログラム、及び計算ノード Active JP5257843B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008317528A JP5257843B2 (ja) 2008-12-12 2008-12-12 分散キャッシュシステム、方法、プログラム、及び計算ノード

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008317528A JP5257843B2 (ja) 2008-12-12 2008-12-12 分散キャッシュシステム、方法、プログラム、及び計算ノード

Publications (2)

Publication Number Publication Date
JP2010140362A true JP2010140362A (ja) 2010-06-24
JP5257843B2 JP5257843B2 (ja) 2013-08-07

Family

ID=42350439

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008317528A Active JP5257843B2 (ja) 2008-12-12 2008-12-12 分散キャッシュシステム、方法、プログラム、及び計算ノード

Country Status (1)

Country Link
JP (1) JP5257843B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594785B2 (en) 2010-12-16 2017-03-14 Nec Corporation Database management device and database management method
KR20170058293A (ko) * 2015-11-13 2017-05-26 에이취지에스티 네덜란드 비.브이. 분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들
US11269919B2 (en) 2014-02-19 2022-03-08 Snowflake Inc. Resource management systems and methods

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249231A (ja) * 1995-02-13 1996-09-27 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システムにおける古いデータの処理システム及び方法
JPH0962577A (ja) * 1995-08-22 1997-03-07 Canon Inc 情報処理システム及び情報処理方法
JPH09128325A (ja) * 1995-11-06 1997-05-16 Mitsubishi Electric Corp 階層バス制御方式及びバスブリッジ
JP2006331135A (ja) * 2005-05-26 2006-12-07 Nec Corp クラスタシステムの性能予測装置、性能予測方法及び性能予測プログラム
JP2007249971A (ja) * 2006-03-13 2007-09-27 Intel Corp 統合キャッシュ階層における最新性情報の同期

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08249231A (ja) * 1995-02-13 1996-09-27 Internatl Business Mach Corp <Ibm> マルチプロセッサ・システムにおける古いデータの処理システム及び方法
JPH0962577A (ja) * 1995-08-22 1997-03-07 Canon Inc 情報処理システム及び情報処理方法
JPH09128325A (ja) * 1995-11-06 1997-05-16 Mitsubishi Electric Corp 階層バス制御方式及びバスブリッジ
JP2006331135A (ja) * 2005-05-26 2006-12-07 Nec Corp クラスタシステムの性能予測装置、性能予測方法及び性能予測プログラム
JP2007249971A (ja) * 2006-03-13 2007-09-27 Intel Corp 統合キャッシュ階層における最新性情報の同期

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594785B2 (en) 2010-12-16 2017-03-14 Nec Corporation Database management device and database management method
US11269919B2 (en) 2014-02-19 2022-03-08 Snowflake Inc. Resource management systems and methods
US11782950B2 (en) 2014-02-19 2023-10-10 Snowflake Inc. Resource management systems and methods
US11868369B2 (en) 2014-02-19 2024-01-09 Snowflake Inc. Resource management systems and methods
US11928129B1 (en) 2014-02-19 2024-03-12 Snowflake Inc. Cloning catalog objects
KR20170058293A (ko) * 2015-11-13 2017-05-26 에이취지에스티 네덜란드 비.브이. 분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들
KR101960138B1 (ko) 2015-11-13 2019-03-19 에이취지에스티 네덜란드 비.브이. 분산형 캐시 메모리들에서의 적응적 파티셔닝을 위한 시스템들 및 방법들

Also Published As

Publication number Publication date
JP5257843B2 (ja) 2013-08-07

Similar Documents

Publication Publication Date Title
JP6437656B2 (ja) ストレージ装置、ストレージシステム、ストレージシステムの制御方法
US11323514B2 (en) Data tiering for edge computers, hubs and central systems
US10432723B2 (en) Storage server and storage system
US9805048B2 (en) System and method for managing a deduplication table
WO2017097059A1 (zh) 分布式数据库系统及其自适应方法
US7457922B2 (en) Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US20150154216A1 (en) System and methods for prioritizing data in a cache
JP2004246898A (ja) キャッシュのロックを使用するストリーミング・データ
US11113192B2 (en) Method and apparatus for dynamically adapting cache size based on estimated cache performance
US20130262683A1 (en) Parallel computer system and control method
JP2005031987A (ja) コンテンツ配信システムにおけるコンテンツ配置管理システム及びコンテンツ配置管理プログラム
JP5257843B2 (ja) 分散キャッシュシステム、方法、プログラム、及び計算ノード
US20230121843A1 (en) Managing data stored in a cache using a reinforcement learning agent
WO2016080953A1 (en) Method and apparatus for data cache in converged system
US11625326B2 (en) Management of coherency directory cache entry ejection
CN103294609B (zh) 信息处理装置和存储器管理方法
US8745340B2 (en) Reduction of communication and efficient failover processing in distributed shared memory-based application
KR102469927B1 (ko) 분할 메모리 관리장치 및 방법
JP2022112614A (ja) リソースの移動スケジュールを決定する装置
US20150193343A1 (en) Cache system with multiple cache unit states
US10719441B1 (en) Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests
US10997077B2 (en) Increasing the lookahead amount for prefetching
JP5298826B2 (ja) キャッシュメモリ及びプリフェッチ方法
WO2022152086A1 (zh) 数据缓存方法、装置、设备及计算机可读存储介质
Ju et al. Video prediction strategy based on Markov modified model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110907

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130327

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: 20130401

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160502

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5257843

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130414