(57)【要約】  分散型の共有メモリを有するコンピュータネットワークであって、複数の物理的に別個のコンピュータシステム上の物理メモリ位置から集められて構成されたクラスター式メモリキャッシュを含んでいるコンピュータネットワーク。このネットワークが、前記クラスター式メモリキャッシュの異なる部分にそれぞれが組み合わせられた複数のローカル・キャッシュ・マネージャー、および前記ローカル・キャッシュ・マネージャーに作用可能に接続されたメタデータサービスをさらに含んでいる。また、複数のクライアントが、前記メタデータサービスおよび前記ローカル・キャッシュ・マネージャーに作用可能に接続される。前記クラスター式メモリキャッシュに存在するデータ項目を求めて前記クライアントのいずれかから発せられる要求に応答して、前記メタデータサービスが、前記クラスター式メモリキャッシュのうちの当該データ項目を含んでいる部分に組み合わせられた前記ローカル・キャッシュ・マネージャーの特定によって応答するように構成されている。【選択図】  図1
2011503725.tif 000002
【特許請求の範囲】
【請求項１】
分散型の共有メモリを有するコンピュータネットワークであって、
複数の物理的に別個のコンピュータシステム上の物理メモリ位置から集められて構成されたクラスター式メモリキャッシュ、
それぞれが前記クラスター式メモリキャッシュの異なる部分に局在し、該部分に組み合わせられている複数のローカル・キャッシュ・マネージャー、
前記ローカル・キャッシュ・マネージャーに作用可能に接続されたメタデータサービス、および
前記メタデータサービスおよび前記ローカル・キャッシュ・マネージャーに作用可能に接続された複数のクライアント
を含んでおり、
前記クラスター式メモリキャッシュに存在するデータ項目を求めて前記クライアントのいずれかから発せられる要求に応答して、前記メタデータサービスが、前記クラスター式メモリキャッシュのうちの当該データ項目を含んでいる部分に組み合わせられた前記ローカル・キャッシュ・マネージャーの特定によって応答するように構成されている、コンピュータネットワーク。
【請求項２】
前記ローカル・キャッシュ・マネージャーの少なくとも一部が、当該コンピュータネットワークのネットワーク接続によって前記メタデータサービスから離されている、請求項１に記載のコンピュータネットワーク。
【請求項３】
前記クラスター式メモリキャッシュに存在しないデータ項目を求めて前記クライアントのいずれかから発せられる要求に応答して、前記メタデータサービスが、前記クラスター式メモリキャッシュのうちの当該データ項目をキャッシュするための位置を選択するように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項４】
前記クラスター式メモリキャッシュに存在しないデータ項目を求めて前記クライアントのいずれかから発せられる要求に応答して、前記メタデータサービスが、当該データ項目を前記クラスター式メモリキャッシュにキャッシュする企てを行うか否かを制御するように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項５】
前記ローカル・キャッシュ・マネージャーの各々が、前記クラスター式メモリキャッシュのうちの該ローカル・キャッシュ・マネージャーに組み合わせられた部分にキャッシュされたデータ項目へのアクセスを要求するロックについて、クライアントへの付与を制御するように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項６】
前記メタデータサービスが、前記クラスター式メモリキャッシュの各部分についてのメタデータのメタデータ記憶装置を維持するように構成されており、前記メタデータが、前記ローカル・キャッシュ・マネージャーから受信されるメッセージングに応答して更新される、請求項２に記載のコンピュータネットワーク。
【請求項７】
前記メタデータが、前記クラスター式メモリキャッシュの各部分についての状態表示を含んでいる請求項２に記載のコンピュータネットワーク。
【請求項８】
前記メタデータが、前記クラスター式メモリキャッシュの各部についてクライアントへと付与されたキャッシュロックについての情報を含んでいる、請求項２に記載のコンピュータネットワーク。
【請求項９】
前記クラスター式メモリキャッシュが、アプリケーション特有データのキャッシングを許すように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項１０】
前記クラスター式メモリキャッシュが、動作時にサイズを動的に変化させるように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項１１】
前記メタデータサービスに作用可能に接続された設定マネージャーをさらに備えており、該設定マネージャーが、前記クラスター式メモリキャッシュへと追加されるべき追加の物理メモリ位置を登録するように構成され、該追加に関する前記メタデータサービスとのメッセージングに関与して、前記クラスター式メモリキャッシュのサイズの動的な変更を可能にするように構成されている、請求項１０に記載のコンピュータネットワーク。
【請求項１２】
前記追加の物理メモリ位置が、さらなる物理的に別個のコンピュータシステム上に位置している、請求項１１に記載のコンピュータネットワーク。
【請求項１３】
前記メタデータサービスが、キャッシュ挿入要求およびキャッシュ立ち退き要求を前記ローカル・キャッシュ・マネージャーへと導くように構成されており、前記ローカル・キャッシュ・マネージャーが、該要求を選択的に許可または拒絶し、該要求を許可する場合にそれぞれの挿入および立ち退きを実行するように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項１４】
前記メタデータサービスが、キャッシュされたデータ項目について、前記クラスター式メモリキャッシュ内の第一の位置から前記クラスター式メモリキャッシュ内の第二の位置への位置変更を制御するように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項１５】
前記ローカル・キャッシュ・マネージャーの各々が、前記物理的に別個のコンピュータシステムのうちの別々の一つにおいて動作しており、前記クラスター式メモリキャッシュのうちの該ローカル・キャッシュ・マネージャーに組み合わせられた部分が、前記同じ物理的に別個のコンピュータシステム上の物理メモリ位置で構成されている、請求項２に記載のコンピュータネットワーク。
【請求項１６】
前記ローカル・キャッシュ・マネージャーが、前記クラスター式メモリキャッシュ内のデータ項目を求める前記クライアントのうちの一つによるアクセス要求が、該クライアントと前記クラスター式メモリキャッシュのうちの前記データ項目を含んでいる部分に組み合わせられたキャッシュマネージャーとの間でネゴシエートされるように構成されている、請求項２に記載のコンピュータネットワーク。
【請求項１７】
ネットワーク化されたメモリリソースを動作させる方法であって、
ネットワークインフラストラクチャによって互いに作用可能に接続された複数の物理的に別個のコンピュータシステムの各々において、ローカル・メモリ・マネージャーを動作させること、
前記ネットワークインフラストラクチャを介して前記ローカル・メモリ・マネージャーの各々に作用可能に接続されたメタデータサービスを具現化すること、
前記複数の物理的に別個のコンピュータシステムの各々に配置された物理メモリ位置についての情報を前記メタデータサービスに提供するために、前記ローカル・メモリ・マネージャーと前記メタデータサービスとの間の通信を実行すること、および
クライアントが前記物理メモリ位置を区分されていないメモリリソースとしてひとまとめに使用できるように、前記複数の物理的に別個のコンピュータシステムの各々の前記物理メモリ位置の集成およびアドレス指定を容易にするためのディレクトリサービスとして、前記メタデータサービスを使用すること
を含んでいる方法。
【請求項１８】
データ項目を求めるクライアントの要求に応答して、該データ項目が前記区分されていないメモリリソースにキャッシュされているか否かを判断すること
をさらに含んでいる、請求項１７に記載の方法。
【請求項１９】
前記データ項目が前記区分されていないメモリリソースにキャッシュされているか否かを判断することが、前記メタデータサービスへの照会を行うことを含んでおり、前記メタデータサービスが、前記データ項目が前記区分されていないメモリリソースに存在する場合に、前記データ項目へとアクセスすることができる前記区分されていないメモリリソース内の特定の位置の特定によって応答するように構成されている、請求項１８に記載の方法。
【請求項２０】
データ項目を求めるクライアントの要求に応答して、該データ項目の複製を前記区分されていないメモリリソースに配置するか否かを判断するステップ
をさらに含んでいる、請求項１７に記載の方法。
【請求項２１】
前記データ項目の複製を前記区分されていないメモリリソースに配置するか否かを判断することが、前記データ項目が前記区分されていないメモリリソースにキャッシュするために適格であるか否かを、前記クライアントの要求の源において判断することを含んでいる、請求項２０に記載の方法。
【請求項２２】
前記データ項目の複製を前記区分されていないメモリリソースに配置するか否かを判断することが、前記データ項目が前記区分されていないメモリリソースにキャッシュするために適格であるか否かを、前記メタデータサービスにおいて判断することを含んでいる、請求項２０に記載の方法。
【請求項２３】
データ項目を求めるクライアントの要求に応答して、該データ項目の複製を配置すべき前記区分されていないメモリリソース内の特定の位置を決定すること
をさらに含んでいる、請求項２に記載の方法。
【請求項２４】
前記データ項目の複製を配置すべき前記区分されていないメモリリソース内の特定の位置を決定することが、前記データ項目のユーザから第一の候補位置までのデータ経路を、前記データ項目のユーザから第二の候補位置までのデータ経路と比較することを含んでいる請求項２３に記載の方法。
【請求項２５】
前記データ項目の複製を配置すべき前記区分されていないメモリリソース内の特定の位置を決定することが、前記データ項目の補助記憶装置から第一の候補位置までのデータ経路を、前記データ項目の前記補助記憶装置から第二の候補位置までのデータ経路と比較することを含んでいる、請求項２３に記載の方法。
【請求項２６】
ネットワーク化されたメモリリソースを有するネットワーク化されたコンピュータシステムであって、
ネットワークインフラストラクチャによって互いに作用可能に接続された複数の物理的に別個のコンピュータシステムの各々において動作するように各々が構成された複数のローカル・メモリ・マネージャー、および
前記ネットワークインフラストラクチャを介して前記ローカル・メモリ・マネージャーの各々に作用可能に接続されたメタデータサービス
を含んでおり、
前記メタデータサービスおよび前記ローカル・メモリ・マネージャーが、前記複数の物理的に別個のコンピュータシステムの各々に配置された物理メモリ位置についての情報を前記メタデータサービスに提供するために、互いに通信するように構成されており、
前記メタデータサービスが、クライアントが前記物理メモリ位置を区分されていないメモリリソースとしてひとまとめに使用できるように、前記複数の物理的に別個のコンピュータシステムの各々の前記物理メモリ位置の集成およびアドレス指定を容易にするためのディレクトリサービスを提供するように構成されているシステム。
【請求項２７】
前記メタデータサービスが、データ項目を求めるクライアントの要求に、該データ項目が前記区分されていないメモリリソースにキャッシュされているか否かを判断することによって応答するように構成されている、請求項２６に記載のシステム。
【請求項２８】
前記メタデータサービスが、前記クライアントの要求に、前記データ項目が前記区分されていないメモリリソースのどこにキャッシュされているかを示すことによって応答するように構成されている、請求項２７に記載のシステム。
【請求項２９】
前記メタデータサービスが、データ項目を求めるクライアントの要求に、該データ項目の複製を前記区分されていないメモリリソースに配置するか否かを判断することによって応答するように構成されている、請求項２６に記載のシステム。
テム。
【請求項３０】
前記メタデータサービスが、当該ネットワーク化されたコンピュータシステムからアクセスできるデータ項目を前記区分されていないメモリリソースにキャッシュすべきか否かを制御するように構成されている、請求項２６に記載のシステム。
【請求項３１】
前記メタデータサービスが、データ項目を求めるクライアントの要求に、該データ項目を前記区分されていないメモリリソースのどこにキャッシュすべきかを判断することによって応答するように構成されている、請求項２６に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は、コンピュータネットワークにおけるメモリリソースの共有に関する。幅広い種類のコンピュータ関連の革新が、コンピュータ関連のリソースを種々の利益をもたらすべく組み合わせることに関係している。例えば、幅広くさまざまな技術が、分散配置のストレージデバイス（例えば、ハードドライブ）を組み合わせ、単一の共有ストレージリソースとして論理的にアクセスできるようにするために使用されている。例えばマルチプロセッサおよび並行処理システムならびに仮想マシン環境においては、演算リソースも組み合わせられ、および／または分割されている。
【０００２】
コンピュータメモリ（RAM）の共有は、多くの点でより困難であることが明らかになっている。典型的には、個々のメモリチップが、RAMモジュール、デスクトップコンピュータのマザーボードなどにおいて、チップを専用のバス回路で緊密につなぎ合わせることによって組み合わせられている。したがって、ハードウェアの要件が、メモリ容量の共有および／または増加の可能性に対して制約となることが多い。種々の技術的解決策が提案されているが、それらの技術的解決策は、いずれもアーキテクチャの大きな変更を必要とし、変更後のメモリアーキテクチャを活用するために、専用のソフトウェアを必要とすることが多い。
【図面の簡単な説明】
【０００３】
【図１】本発明による分散型の共有メモリを有しているネットワークを概略的に示している。
【図２】図１のネットワークにおいてクラスター式メモリキャッシュの一部分を管理するために使用することができるメモリマネージャーを概略的に示している。
【図３】ローカル・メモリ・マネージャーの別の構成を概略的に示している。
【図４】複数のネットワークセグメントへと分散されたクラスター式メモリリソースを有する分散型の共有メモリ環境を概略的に示している。
【図５】分散型の共有メモリリソースを使用するための典型的な方法を示している。
【図６】分散型の共有メモリリソースへのデバイスのアクセスを可能にするために使用できる通信スタックの構成を概略的に示している。
【図７】分散型の共有メモリリソースへのデバイスのアクセスを可能にするために使用できる通信スタックの構成を概略的に示している。
【発明を実施するための形態】
【０００４】
図１が、分散型メモリを備えるコンピュータネットワーク20を示している。メモリリソースおよび支援システムを、さまざまな異なるやり方で、さまざまな用途のために構成することができる。ページキャッシングが、多数の利点を得ることができる設定の一例である。したがって、図１の例および本明細書に記載される他の例における分散型メモリリソースは、クラスター式メモリキャッシュ22を含んでいる。とくには図１を参照すると、クラスター式メモリキャッシュ22は、複数の物理的に別個のコンピュータシステム26（それぞれ、コンピュータシステム1、コンピュータシステム2、などと記されている）に位置する物理メモリ位置24から集められ、それらの物理メモリ位置24で構成される。コンピュータネットワーク20は、メタデータサービス30、複数のクライアント32（図では、クライアントが一つだけ示されている）、および複数のローカル・メモリ・マネージャー34（それぞれ、MM1、MM2、などと記されている）をさらに含んでいる。各々のローカル・メモリ・マネージャーは、クラスター式メモリキャッシュ22の各部分に局在し、クラスター式メモリキャッシュ22の各部分に組み合わせられている。メタデータサービス、クライアント、およびローカル・メモリ・マネージャーは、すべてネットワーク40を介して互いに動作可能に接続されている。さらに、設定マネージャー42、ポリシーマネージャー44、および管理者インターフェイス46を、後述される種々の機能を提供するために、さらに設けることが可能である。
【０００５】
クラスター式メモリキャッシュ22は、クライアントによるアクセスおよび使用が可能な共有メモリリソースを提供する。具体的には、動作の態様に応じて、クライアント32が、クラスター式メモリキャッシュからの読み出しを行うことができ、キャッシュへのデータ項目の挿入および／またはキャッシュからのデータ項目の立ち退きを生じさせることができる。
【０００６】
本明細書において使用されるとき、「クライアント」は、共有メモリリソースを利用する任意のハードウェアおよびソフトウェアエンティティを広く指すことがある。例えば、クライアントとして、パーソナルコンピュータ、ワークステーション、サーバ、および／または、このような装置において動作するアプリケーションまたは他のソフトウェアを挙げることができる。本発明は、金融、工学、などの分野における複雑なモデル化およびシミュレーションのアプリケーションなど、大量のデータについて動作を実行するサーバアプリケーションの性能を向上させるうえで、とくに有用であることが明らかになっている。そのような設定において、クライアントアプリケーションの性能を、共有メモリリソースの適切に管理された利用によって、大幅に向上させることができる。
【０００７】
さらに、「クライアント」は、共有メモリリソースへのアクセスを促進するドライバまたは他のソフトウェアエンティティをさらに具体的に指すこともできる。例えば、さらに詳しく後述されるとおり、ドライバを、ネットワークに接続されたコンピュータのメモリへとロードすることができ、ドライバが、そのコンピュータのアプリケーションまたはオペレーティングシステムがクラスター式キャッシュを「参照」および利用できるようにする。
【０００８】
本明細書に記載の分散型共有メモリを、さまざまな態様で動作させることができる。本明細書に記載される実施例の多くは、クラスター式メモリキャッシュ22がクライアント32によって使用されるデータのページキャッシング機能を提供する態様に関する。とくには、補助記憶装置50からのデータ項目を、クラスター式メモリキャッシュ22にキャッシュすることができる。すなわち、たとえ特定のクライアントが補助記憶装置に容易にアクセス（例えば、ハードディスクに保存されたファイルシステムへのアクセス）できるとしても、多くの場合に、より高速なデータへのアクセスを提供するために、要求されるデータをクラスター式メモリキャッシュに置くことが望ましい。補助記憶装置50は、ハードディスク、ファイルサーバ、ディスクアレイ、ストレージ・エリア・ネットワーク、など、さまざまな場所に位置する一つ以上のストレージデバイスまたはシステムを含むことができる。
【０００９】
特定の動作の態様にかかわらず、クラスター式メモリキャッシュは、多数の物理的に別個のコンピュータシステムにまたがる。例えば、図１においては、クラスター式メモリキャッシュ22が、N個の異なるコンピュータシステム26（コンピュータシステム1、コンピュータシステム2、・・・、コンピュータシステムN）からのメモリを含んでいる。個々のコンピュータシステムは、比較的非力なパーソナルデバイスからワークステーションや高性能のサーバまでの範囲にわたるさまざまな構成であってよい。コンピュータシステムのうちの一つ以上が、マルチプロセッサバスまたは他のインターコネクトによって互いに接続された複数のプロセッサまたはコアを使用するSMPまたは他のマルチプロセッサアーキテクチャも、同様に使用することができる。本明細書において詳しく記載されるとおり、これらの物理的に別個のシステムからの物理メモリを、ネットワーク40によってまとめ、クライアント32にとって単一の論理リソースとして利用できるようにすることができる。
【００１０】
ローカル・メモリ・マネージャー34をとくに参照すると、各々のメモリマネージャーが、クラスター式メモリキャッシュ22の各部分に局在し、クラスター式メモリキャッシュ22の各部分に組み合わせられている。メモリマネージャーは、典型的には、互いに独立しており、各々が物理メモリの個々のユニットをクラスター式メモリキャッシュ22の該当の部分に割り当て、管理するように構成されている。
【００１１】
ローカル・メモリ・マネージャーは、典型的には、キャッシュされたデータ項目へのクライアントの参照およびアクセスを管理するように構成されている。例示として、特定のクライアント32が、クラスター式キャッシュ22のうちのメモリマネージャーMM1によって管理されている部分にキャッシュされたデータ項目へのアクセスを必要としていると仮定する。クライアントが、キャッシュ項目のメモリ位置がMM1によって管理されていることを承知していると仮定すると、クライアントは、キャッシュ項目へのアクセスを得るためにMM1に接触する。アクセスが許されている場合、メモリマネージャーMM1がアクセスを許可し、要求クライアントがメモリ位置への参照を有する旨の記録を維持する。記録は、例えば、クライアントがメモリマネージャーMM1によって管理されるメモリの特定のブロックについて読み出しロックを有する旨を示すことができる。
【００１２】
いくつかの実施の形態においては、クラスター式メモリキャッシュ22を、リモート・ダイレクト・メモリ・アクセス（RDMA）を使用して実現することができる。使用することができるRDMAの実施例として、バーチャル・インターフェイス・アーキテクチャ、インフィニバンド（InfiniBand）、およびiWARPが挙げられる。そのような設定において、ローカル・メモリ・マネージャーを、要求クライアントへとRDMAキーを提供し、あるいは他のやり方でRDMAの実施例のそれぞれのアクセス制御を管理するように構成することができる。
【００１３】
任意の所与のメモリマネージャーについて、クラスター式キャッシュの該当の部分は、多くの場合、メモリの多数の異なるブロックまたは他のユニットを含む。とくには、図２を参照すると、キャッシュ記憶装置60を含む典型的なメモリマネージャー34が示されている。図示の例では、キャッシュ記憶装置60が、メモリマネージャーによって管理される物理メモリの各ブロックまたは他のユニットについてのレコード（行エントリ）を有する表として、概略的に示されている。この例において、第1列は、メモリの個々のブロックを指し示す単なる見出し、タグ、または他の識別子である。
【００１４】
残りの列（単数または複数）は、メモリの該当のユニットに関するメタデータまたは他の情報を含んでおり、および／または、メモリの当該ユニットに保存されたデータを含んでいる。図２に示されるとおり、さらにメモリマネージャー34は、キャッシュ記憶装置情報の取得および更新を容易にするために監視スレッド62を含むことができる。関連の情報として、例えば、読み出しロック、書き込みロック、および／またはメモリのユニットへの他のクライアントの参照についての情報、ファイル名／パスハッシュまたはキャッシュされたデータ項目を特定するための他の機構、ステータス表示、立ち退きおよび挿入のレート、キャッシュへの滞留時間や最後のアクセスからの時間などの時間情報、メモリのユニットに関するブロックサイズまたは他の容量情報、および／または、メモリユニットまたはメモリユニットにキャッシュされた項目の使用に関する統計情報などのメモリユニットに関する他の情報を挙げることができる。しかしながら、これらは例示にすぎない。また、キャッシュ記憶装置60が、情報を表にて含むものとして概略的に示されているが、情報記憶装置を維持するために、他のさまざまなデータ構造または機構を使用できることを、理解すべきである。
【００１５】
さらに、ローカル・メモリ・マネージャー34を、特定のデータ項目をクラスター式メモリキャッシュ22へと挿入するための要求を受信して、これに応答するように構成することができる。さらに詳しく後述されるとおり、これらのキャッシュ挿入要求は、メタデータサービス30およびクライアント32のアクションから生じることができ、メタデータサービス30およびクライアント32のアクションによって開始させることができる。いくつかの場合には、ローカル・メモリ・マネージャーが、キャッシュ挿入要求を拒絶することができる。挿入要求を拒絶することができる一つの状況は、要求が、例えばキャッシュされた項目へのクライアントの参照がアクティブであるためにすぐには立ち退きさせることができない項目を含むブロックへと向けられている場合である。
【００１６】
しかしながら、挿入要求がローカル・メモリ・マネージャーによって許可できると仮定すると、ローカル・メモリ・マネージャーは、要求の受領を知らせ、要求をかなえる。さらに、メモリマネージャーは、キャッシュすべきデータ項目でそれぞれのメモリブロックの集団をコーディネートし、キャッシュ記憶装置（例えば、キャッシュ記憶装置60）のブロックについての関連情報を適切に更新する。
【００１７】
同様に、各々のローカル・メモリ・マネージャー34は、クラスター式メモリキャッシュ22の該当の部分から項目を立ち退きさせる要求を受信し、これに応答するように構成される。挿入の要求と同様に、立ち退きの要求は、さらに詳しく後述されるとおり、メタデータサービス30および一つ以上のクライアント32のアクションから生じることができる。要求が許可できると仮定すると、メモリマネージャーは、要求の受け取りを知らせ、要求をかなえ、メモリブロックの消去を行い、あるいはメモリブロックを他の項目のキャッシュに利用できるようにするための他の適切なアクションを行う。
【００１８】
いくつかの典型的な実施の形態においては、項目がクラスター式メモリキャッシュから立ち退きさせられることを、クライアント32に通知することが望まれるかもしれない。したがって、ローカル・メモリ・マネージャーを、キャッシュ内の項目にアクセスするクライアントへの後方参照を維持するように構成することができる。例えば、クライアントが、キャッシュのうちの或るメモリマネージャーによって管理される部分の項目へのアクセスを要求すると仮定し、そのメモリマネージャーが、クライアントへと読み出しロックを与えることによって応答したと仮定する。クライアントへの後方参照を（例えば、キャッシュ記憶装置60に）維持することで、ローカル・メモリ・マネージャーは、係属中の立ち退きの場合にクライアントに通知を行うことができ、クライアントにロックを解放するように知らせることができる。
【００１９】
上述のように、各々のローカル・メモリ・マネージャーは、クラスター式メモリキャッシュの各部分に局在し、クラスター式メモリキャッシュの各部分に組み合わせられている。図１の例では、別個のコンピュータシステム26の各々が、システムによってクラスター式キャッシュへと提供される物理メモリ24を担当する個々のメモリマネージャーを有している。あるいは、コンピュータシステムにおいて複数のローカル・メモリ・マネージャーを使用してもよい。
【００２０】
図３は、別のメモリマネージャーの構成の例を示している。先の例と同様に、コンピュータシステム70が、物理メモリ24を分散型メモリリソースへと提供するいくつかの物理的に別個のコンピュータシステムのうちの一つである。図３の例は、本明細書に記載の例の任意のいずれかに適用できる二つの構成の変種を示している。第一に、この図は、ただ一つのコンピュータシステムから提供されるメモリが、複数の異なるセグメントへと割り当てられる構成を示している。連続的であっても、連続的でなくてもよい個々のセグメントの各々が、異なるメモリマネージャー34（それぞれ個別にMMa、MMb、およびMMcとして示されている）によって管理される。後述のように、ただ一つのコンピュータシステムにおける複数のメモリマネージャーおよびメモリセグメントの使用を、物理メモリを複数の異なる集合メモリリソースへと提供できるようにするために使用することができる。他方で、メモリがただ一つのキャッシュクラスタまたは他の共有メモリリソースへと提供される場合でも、複数のメモリマネージャーを使用することが望まれる可能性もある。
【００２１】
第二に、この図は、複数の異なるクラスターの使用を示している。具体的には、図３の例におけるローカル・メモリ・マネージャーおよびメモリセグメントのペアの各々が、異なるキャッシュクラスタ（すなわち、クラスター22a、22b、および22c）に属する。複数クラスターの構成を、セキュリティ、アクセス制御、ならびに特定のクラスターを特定の用途によってのみ使用できるように指定するためなど、さまざまな理由のために使用することができる。
【００２２】
さらに、ローカル・メモリ・マネージャー34を、クラスター式メモリキャッシュ22のそれぞれの部分に関する情報を報告するように構成することができる。図２に関して上述したように、各々のメモリマネージャーは、メモリマネージャーのメモリ位置についての情報を有するキャッシュ記憶装置60を含むことができる。この情報を、ときどき、メタデータサービス30、設定マネージャー42、および／または本明細書に記載のシステムの他の構成要素へと供給することができる。
【００２３】
例えば、さらに詳しく後述されるとおり、メタデータサービス30は、クラスター式キャッシュについてのステータス情報を維持するための集中化または比較的集中化された位置を提供することができる。とくには、図１において、メモリマネージャーMM1、MM2、・・・、MMNを、すべてメタデータサービス30へと割り当てられたドメイン内にあると考えることができる。メタデータサービス30は、例えばキャッシュ記憶装置60に関して述べた情報と同様の情報を、しかしながらドメイン内のメモリマネージャーのすべてについて維持することによって、ドメインを監視することができる。
【００２４】
より詳しくは、メタデータサービス30は、クラスター式キャッシュを形成する自身のドメイン内のメモリ位置に関する情報を維持するためのメタデータ・サービス・データ記憶装置80を含むことができる。1種類の例では、図１に示されるとおり、メタデータ・サービス・データ記憶装置80が、複数のレコード82を含むことができる。具体的には、レコード82が、クラスター式メモリキャッシュ22の物理メモリユニットの各々について設けられる。例えば、クラスター式メモリキャッシュ22が、6400万個の8キロバイトのメモリブロック（512ギガバイトのアドレス指定可能なキャッシュメモリ）を、コンピュータシステム1〜Nおよびローカル・メモリ・マネージャーMM1〜MMNにまたがって含むと仮定する。この例において、メタデータ・サービス・データ記憶装置80を、各々がクラスター内のキャッシュメモリブロックのうちの一つに関係する6400万個のレコード（行）によって構成することができる。別の例では、各々のレコードを、メモリ位置のグループへと適用することができる。多数の他の構成が可能である。
【００２５】
種々の追加の情報を、メタデータ・サービス・データ記憶装置80のレコードに関連付けることができる。とくには、メタデータサービスは、図に示されるように、キャッシュのメモリ位置の各々についてのタグを保存することができる。一例においては、タグによって、要求エンティティ（クライアント32のうちの一つなど）が、特定のデータ項目がキャッシュに保存されているか否かを容易に判断することができる。具体的には、タグ列エントリの各々が、該当のメモリブロックに位置するデータ項目についてのパス／ファイル名のハッシュであってよい。要求されたデータ項目（例えば、ファイル）が、キャッシュに存在するか否かを判断するために、要求された項目のパス／ファイル名が、同じハッシュルーチンを使用してハッシュされ、得られるハッシュが、メタデータ・サービス・データ記憶装置80のタグ列エントリと比較される。上述のパスおよびファイル名のハッシュは、あくまでも例であり、ハッシュの方法論を他のデータについて使用することができ、および／または、他の識別の仕組みを使用することができる。
【００２６】
さらに、メタデータ・サービス・データ記憶装置80は、「MM」と表示されている例示の列に示されているように、自身のレコードの各々について、関連のローカル・メモリ・マネージャーを示すことができる。例えば、データ記憶装置は、第一のメモリブロックまたはメモリブロックの範囲が、メモリマネージャーMM1によって管理されている一方で、第二のブロックまたはブロックの範囲が、ローカル・メモリ・マネージャーMM2によって管理されている旨を示すことができる。このような指示によって、特定の項目についてのクエリが、項目がキャッシュに存在することを明らかにする場合（例えば、上述のパス／ファイル名のハッシュの一致によって）に、そのクエリへの応答が、キャッシュされた項目を読み出し、あるいはキャッシュされた項目に他のやり方でアクセスするために、どのローカル・メモリ・マネージャー34が対処されなければならないかをさらに示すことができる。
【００２７】
図１の例において、データ記憶装置80は、各々のキャッシュブロックについてのステータス表示をさらに含んでいる。一例においては、各々のキャッシュブロックが、以下の状態のうちの一つを有するものとして示されている。以下の状態とは、（1）空であり、したがって中身を入れるために利用可能である状態、（2）挿入待ち状態（メモリブロックが、新たに挿入されるキャッシュ項目を入れるプロセスにあることを示している）、（3）アクティブ状態（メモリブロックが、現時点において有効なキャッシュデータ項目を含んでいることを示している）、または（4）削除待ち（キャッシュブロック内のデータ項目を削除していることを示している）である。これらが例示にすぎず、他のステータス情報およびフラグも使用できることを、理解できるであろう。上述した特定の典型的なステータス表示は、さらに詳しく後述される。
【００２８】
データ記憶装置80のキャッシュブロックに関して上述したタグ、メモリマネージャー、およびステータスの各エントリは、あくまでも例であって、これらに限られない。さらに詳しく後述されるとおり、メタデータサービス30およびそのポリシーエンジン90は、典型的には、クラスター式メモリキャッシュ22の設定および使用に関する種々のポリシーの実行において役割を果たす。種々のポリシーの適用は、キャッシュブロックまたはデータ項目の立ち退きおよび挿入のレート、データ項目が特定のブロックにキャッシュされている時間や、最後のアクセスからの時間などの時間情報、および／またはキャッシュブロックまたはキャッシュブロックにキャッシュされたデータ項目の使用に関する統計情報など、キャッシュブロックに関する他の情報にもとづくことができる。
【００２９】
このように、メタデータ・サービス・データ記憶装置80に維持される情報が、ローカル・メモリ・マネージャーの種々のキャッシュ記憶装置60（図２）からの情報と或る程度まで重なり合ってもよいことを、理解できるであろう。実際、すでに示したように、上述のシステムを、メモリマネージャーがメタデータ・サービス・データ記憶装置80の情報を維持するための定期的な更新をもたらすように構成することができる。
【００３０】
また、メタデータサービスを、ネットワークインフラストラクチャへと或る程度まで分散させることができる。例えば、メタデータサービスの複数のミラーコピーを使用し、それぞれをローカル・メモリ・マネージャーの部分集合へと割り当てることができる。メモリマネージャーの割り当てを、負荷の平衡を達成するため、および環境の動作状態における不具合または他の変化の場合に、動的に構成し直すことができる。
【００３１】
次に、クライアント32がクラスター式メモリキャッシュ22へのアクセスのためにどのようにメタデータサービス30およびローカル・メモリ・マネージャー34とやり取りするかを例示する種々の例を説明する。これらの例の基本的な内容は、以下のとおりである。特定のクライアント32（図１）が、アプリケーションサーバ上で動作し、データ集約的な金融分析およびモデル化のプログラムを実行している。特定の分析を実行するために、プログラムは、補助記憶装置50に位置する種々の大きなデータファイルにアクセスしなければならない。
【００３２】
第一の例において、金融分析プログラムが、すでにクラスター式メモリキャッシュ22へと書き込まれているデータファイルへのアクセスを企てる。これは、例えば、別のユーザがキャッシュへのファイルのロードを生じさせる結果として、生じるであろう。この例では、クライアント32が、分析プログラムにクラスター式メモリキャッシュ22へのアクセスを提供するドライバとして機能する。他の典型的な実施の形態として、例えばクラスター式リソースとのやり取りのためのAPIとしてユーザモードで動作するクライアント32が挙げられる。
【００３３】
クライアントのデータファイルの要求に応答して、メタデータサービス30は、要求されたファイルが実際にキャッシュに存在するかどうかを判断する。この判断は、例えば、上述したファイル名／パスのハッシュの方法を使用して実行することができる。次いで、メタデータサービス30は、クライアントがクラスター式メモリキャッシュの適切な部分（すなわち、要求されたファイルを含んでいる部分）を参照できるようにする特定のメタデータをクライアントに提供することによって、要求に応答する。
【００３４】
とくには、メタデータサービス30が、キャッシュのうちの要求されたファイルを含んでいる部分に関連付けられた特定のローカル・メモリ・マネージャー34を特定することによって要求に応答する。この特定は、ローカル・メモリ・マネージャーのネットワークアドレスを含むことができ、あるいはアドレスの導出を可能にする他の識別子を含むことができる。クライアントは、ひとたびこの情報を手にすると、ローカル・メモリ・マネージャーによって管理されている該当のブロック（単数または複数）にアクセスして、要求ファイルを読み出すために、ローカル・メモリ・マネージャーとのネゴシエーションへと進む。このネゴシエーションは、ローカル・メモリ・マネージャーからクライアントへと読み出しロックまたは他の参照を与え、および／または、上述のようにRDMAキーを提供することを含むことができる。
【００３５】
図１に示されているように、クライアント32は、メタデータのローカル記憶装置92を含むことができる。上記の例では、このローカル記憶装置を、クライアントが、要求データファイルと該当のローカル・メモリ・マネージャーおよびクラスター式キャッシュの該当部分との間の関連を記録するために使用することができる。したがって、ローカル記憶装置92を参照することによって、キャッシュされたファイルへの後のページ・キャッシュ・アクセスは、メタデータサービス30へのクエリの段階を省略することができる。実際、クライアント32は、典型的には、メタデータサービス30へのクエリの前に、まずはローカル記憶装置92を参照するように実現され、キャッシュ項目へのより直接的かつ効率的なアクセスを可能にする。このように、メタデータサービス30は、一つの点では、クラスター式メモリキャッシュ22のディレクトリとして機能する。ディレクトリの特定のエントリについて最新の知識を有するクライアントは、ディレクトリをバイパスし、関連のローカル・メモリ・マネージャーへと直接的に向かうことができる。
【００３６】
次に、分析プログラムによって要求されたファイルが、クラスター式メモリキャッシュ22に存在しない別の例を考える。先ほどと同じく、分析プログラムおよび／またはクライアント32がファイルの要求を発行し、この要求が、最終的にメタデータサービス30において受信される。しかしながら、要求をメタデータサービス30へと伝える前に、メタデータのローカルクライアント記憶装置92が参照される。この場合、要求されたファイルがキャッシュに存在しないため、ローカル記憶装置に有効なメタデータが存在しない。したがって、要求がメタデータサービス30へと送られる。
【００３７】
要求への応答において、メタデータサービス30は、先の例のようにメモリマネージャーの特定を返すことができない。なぜならば、要求されたファイルが、クラスター式メモリキャッシュに存在しないからである。したがって、ハッシュの照合の操作が、メタデータ・サービス・データ記憶装置80へと適用されても、一致の結果が生じない。
【００３８】
メタデータサービスを、この種のキャッシュミスの状況に応答してシステムポリシーを実行するように構成することができる。具体的には、要求された項目をクラスター式メモリキャッシュへと挿入するか否か、および／またはキャッシュのどの位置に項目を書き込むのかを支配するポリシーを実行することができる。クラスター式キャッシュ22に要求された項目が入れられると仮定すると、メタデータ・サービス・データ記憶装置80が、担当のメモリマネージャー34の指定を含むメタデータで更新される。次いで、このメタデータを、クライアントが適切なメモリマネージャーとのやり取りを通じてキャッシュされた項目にアクセスできるよう、元々の要求およびこの項目についての後の要求に応答して供給することができる。
【００３９】
本明細書に記載のシステムおよび方法を、共有メモリリソースに関する種々のポリシーによって構成することが可能である。ポリシーは、クラスター式メモリキャッシュの設定および使用、キャッシュへのクライアントのアクセス、キャッシュへの項目の挿入およびキャッシュからの項目の立ち退き、特定の位置への項目のキャッシング、キャッシュされた項目のキャッシュ内の或る位置から別の位置への移動、などを制御することができる。さらに、ポリシーは、クラスターにメモリ位置を提供しているコンピュータシステムのうちの一つの故障または終了に如何に対処するかなど、スタート／ストップの事象を支配することができる。これらは、あくまでも例であって、これらに限られるわけではなく、幅広くさまざまな可能性が存在している。
【００４０】
図１の例では、設定マネージャー42、管理者インターフェイス46、およびポリシーマネージャー44が、ポリシーに関する種々の機能を実行する。とくには、管理者インターフェイス46が、システム管理者がポリシーを定義し、ポリシーがどのように適用されるかを制御するために使用することができるコマンドライン、グラフィカル、または他のインターフェイスを提供することができる。設定マネージャー42は、典型的には、オンラインになるときのエンティティのログインまたは登録など、スタートアップの事象を協調させるように構成される。多くの設定において、スタートアップの手順は、ポリシーの配布をさらに含む。
【００４１】
例えば、図１において、クライアント32の初期化が、設定マネージャー42によって取り扱われる。具体的には、オンラインになるとき、各々のクライアント32が設定マネージャー42において初期化および登録される。設定マネージャー42は、初期化クライアントに適切なメタデータサービス30のアドレスを提供する。さらに、設定マネージャー42は、ポリシーマネージャー44から関連のポリシーを取り出し、クライアントへと配布することができ、クライアントが、それらのポリシーを、クライアント・ポリシー・エンジン94（図１）による実現のためにローカルに保存する。
【００４２】
さらに、設定マネージャー42は、典型的には、メタデータサービス30およびローカル・メモリ・マネージャー34のための登録およびポリシー配布をコーディネートさせる。配布されたポリシーは、ローカルに保存され、それぞれメタデータ・サービス・ポリシー・エンジン90（図１）およびメモリ・マネージャー・ポリシー・エンジン64（図２）によって実行される。動作の最中にときどき、クラスター式メモリリソースのサイズおよび基礎をなす構成が、ローカル・メモリ・マネージャーが意図的あるいは故障または他の意図せぬシステム変更の結果として起動および終了するときに、変化する可能性がある。これらの始動および終了を、共有メモリリソースに動的な変化をもたらすために、設定マネージャーによって取り扱うことができる。例えば、より激しく使用されるボリューム（例えば、キャッシュ挿入要求の数の増加）が検出される期間において、設定マネージャーは、リソースを動的に拡大するために、種々の分散デバイスおよびそれらの関連のメモリマネージャーとコーディネートすることができる。他方で、動作の遅れまたは他の状況が、一つ以上のメモリマネージャーがオフラインにされる動的調節を指示することができる。さらに詳しく後述されるとおり、本システムを、共有リソース内の或る位置から他の位置へのキャッシュデータの移動を可能にするように構成することができる。上述の始動および終了は、そのようなデータの移動が望まれる可能性がある状況の一例である。
【００４３】
上述のように、ポリシーマネージャー44は、典型的には、システムのポリシーの定義のためのマスタ／中央記憶装置を提供するように構成され、システムのポリシーの定義の一部またはすべてを、管理者インターフェイス46を介して受信される入力から導出することができる。さらに、ポリシーマネージャー44は、ポリシーの集合を認証または検証し、それらが有効であることを保証し、ポリシーの矛盾をチェックし、解決することができる。さらに、ポリシーマネージャー44は、典型的には、ポリシーの実施に関する統計値の収集において役割を果たす。例えば、ポリシーマネージャーは、ポリシーの体制を監視し、管理者インターフェイスへとフィードバックをもたらし、適切な調節を行うために、ポリシーヒットの数（特定のポリシーがトリガされた回数）および／またはヒットの頻度を記録することができる。例えば、使用されないポリシーを除去することで、ポリシーの体制を動作させるために使用される処理のオーバヘッドを減らすことができる。
【００４４】
以上から理解すべきように、ポリシーを中央で定義および管理することができるが、それらは、典型的には、システムの種々の場所へと配布され、システムの種々の場所で実行される。さらに、システムの所与の場所において有効なポリシーのルールセットは、典型的には、その場所の性質にもとづいてさまざまである。例えば、メモリマネージャー34またはクライアント32の任意の一つに比べて、メタデータサービス30は、クラスター式メモリキャッシュ22のよりシステムワイドな大局的視野を有することができる。さらに、複数のクライアントまたはメモリマネージャーに影響するポリシーのルールセットは、典型的には、メタデータサービス30へと配布され、メタデータサービス30において実行される。
【００４５】
クライアント32を参照し、さらに詳しくは各クライアントに組み込まれたクライアント・ポリシー・エンジン94を参照し、種々の典型的なクライアントレベルのポリシーの実現を説明する。クライアントにおいて実現される多数の典型的なポリシーが、どのクライアントの振る舞いが共有メモリリソースへの影響を許されるのかを選択的に制御するためのフィルタとして動作する。より具体的には、クライアント・ポリシー・エンジンを、データ項目の要求（例えば、特定のファイルを補助記憶装置50から読み出そうと企てるアプリケーション）をメタデータサービス30に渡して、企てられたキャッシュの挿入またはクラスター式キャッシュに影響する他のアクションを潜在的にトリガするか否かを制御するように構成できる。
【００４６】
クライアントのメタデータサービス30とのやり取りの選択的阻止は、実質的に、ファイルまたは他のデータ項目がキャッシュ可能であるか否かの判断として機能する。この判断および対応するポリシーは、幅広くさまざまな要因および基準にもとづくことができる。例として、これらに限られるわけではないが、以下が挙げられる。
（1）サイズ−すなわち、項目が、項目のサイズを基準しきい値と比較することによってキャッシュ可能であると判断される。例えば、Nバイトよりも大きいファイルがキャッシュ可能である。
（2）場所−すなわち、項目が、項目の場所に応じてキャッシュ可能であると判断される。例えば、特定のパスまたはストレージデバイスにあるすべてのファイルがキャッシュ可能である。
（3）ホワイトリスト／ブラックリスト−ファイルまたは他の項目のリストを、キャッシュ可能またはキャッシュ不可能であるとして具体的に指定することができる。
（4）許可レベルまたは他のフラグ／属性−例えば、読み出し専用ファイルのみがキャッシュ可能である。
（5）アプリケーションID−すなわち、キャッシュ可能の判断が、項目を要求しているアプリケーションの身元に関して行われる。例えば、特定のアプリケーションについて、キャッシュへのアクセスを拒絶または許可することができる。
（6）ユーザID−例えば、クライアント・ポリシー・エンジンを、要求の原因であるユーザの身元にもとづいてキャッシュ可能の判断を行うように構成することができる。
（7）時刻
さらに、これらの例を（例えば、論理演算子によって）組み合わせることが可能である。また、上述のように、上記リストはあくまでも例示にすぎず、キャッシュ可能の判断を、上述の例以外のパラメータにもとづいて行うことが可能である。
【００４７】
キャッシュ挿入ポリシーは、ファイルまたは他のデータ項目をクラスター式メモリキャッシュ22へと挿入できるか否かを判断する。典型的には、キャッシュ挿入ポリシーは、メタデータサービス30およびそのポリシーエンジン90によって適用されるが、所与のポリシーの適用は、多くの場合に、一つ以上のクライアント32から受信される要求、および／またはローカル・メモリ・マネージャー34から受信され、メタデータ・サービス・データ記憶装置80（図１）に維持されるメタデータ更新および他の通知にもとづく。
【００４８】
いくつかの例においては、管理者または他のユーザが、特定のファイル／パスに比較的高い優先度または低い優先度を割り当てるなど、特定の項目について優先度を設定することができる。さらには、挿入ロジックが、アクセスパターン（例えば、クライアントのファイル要求の観察から集められるファイルアクセスのパターン）にもとづいてランタイムで優先度を決定するためにメタデータサービス30に関連したサービスとして動作することができる。
【００４９】
キャッシュ挿入ポリシーのさらなる例として、これらに限られるわけではないが、以下が挙げられる。
（1）ファイルをクラスター式メモリキャッシュ22に挿入するか否かを、そのファイルについて受信された要求の数および／または頻度にもとづいて、メタデータサービス30において判断する。メタデータサービスを、しきい値を超える場合に挿入を開始するように構成することができる。
（2）ファイルをクラスター式メモリキャッシュ22に挿入するか否かを、キャッシュ内の利用可能な空間にもとづいて、メタデータサービス30において判断する。この判断は、典型的には、ファイルのサイズをキャッシュ内の空き空間およびキャッシュの立ち退きによって得られる追加の空間とバランスさせることを含む。自由な空間および立ち退き可能な空間の評価は、メタデータ・サービス・データ記憶装置80内の情報にもとづくことができる。
（3）ファイルをクラスター式メモリキャッシュ22に挿入するか否かを、ファイルの相対的な優先度にもとづいて、メタデータサービス30において判断する。
【００５０】
さらに、メタデータサービス30は、クラスター式メモリキャッシュ22について、立ち退きポリシーを実行することができる。立ち退きポリシーは、キャッシュが容量に達するときに、どのデータ項目をキャッシュから立ち退きさせるかを決定する。立ち退きポリシーを、所与の設定の要件にもとづいてユーザが（例えば、管理者が、管理者インターフェイス46を使用して）設定することができ、立ち退きポリシーは、多くの場合、メタデータサービス30および／またはメモリマネージャー34に保存されたメタデータおよび他の情報にもとづいて適用される。
【００５１】
とくには、メタデータサービス30は、自身のデータ記憶装置80を参照し、自身のドメイン内のどのメモリ位置が最長時間未使用（LRU）または最低使用頻度（LFU）であるかにもとづいて、立ち退きを決めることができる。他の可能性として、最も古いレコードを立ち退きさせることや、時間または頻度についてのしきい値にもとづく立ち退きが挙げられる。これらは、あくまでも例にすぎず、立ち退きは、これらの方法に加え、あるいはこれらの方法に変えて、幅広くさまざまな基準にもとづくことができる。
【００５２】
すでに述べたように、メタデータサービス30が、キャッシュについて大域的な視野を有しており、したがって挿入／立ち退きの判断を行うための良好な位置に位置しているが、実際の立ち退きおよび挿入は、典型的には、メモリマネージャー34によって実行される。実際に、メタデータサービス30によって行われた挿入／立ち退きの判断は、多くの場合に、メモリマネージャーが許可または拒絶を行うことができる要求として、メモリマネージャーへと提示される。他の場合には、メモリマネージャーが、ブロックの立ち退きに先立ってクライアントにブロックへの参照を解除させるなど、他の操作を実行した後でのみ、要求をかなえることができる。
【００５３】
他の場合には、メタデータサービス30が、挿入／立ち退きの要求により高い優先度を割り当て、要求がかなえられるように強く求めることができる。例えば、システムの全体的なポリシーの構成が、特定のファイルに超優先度を割り当てることができる。したがって、クライアント32のうちの一つが、超優先度のファイルを要求するとき、必要であれば、メタデータサービス30が、一つ以上のメモリマネージャー34に対して他のデータ項目を立ち退かせて挿入を実行するように指令する。
【００５４】
しかしながら、一般的な場合は、ローカル・メモリ・マネージャーが自信の管理するキャッシュメモリ位置について権限を有し、特定の状況においてメタデータサービス30からの要求を断ることができるというものである。この一つの理由は、メモリマネージャーが、多くの場合に、キャッシュのうちの当該メモリマネージャーに関連付けられた部分について、より正確および／または最新の情報を有するからである。メモリマネージャーにおける情報は、より粒状である可能性があり、あるいはメモリマネージャーが、メタデータサービス30には保存されず、あるいはメタデータサービス30へは報告されない特定の情報を維持している可能性がある。他方で、キャッシュにおいて生じる変化と、該当のメモリマネージャーからメタデータサービス30へのそれらの変化の報告との間に、遅延が存在しうる。例えば、メタデータサービス30が、特定のブロックを立ち退き可能であると示すが、実際にはメタデータサービスへの最後の更新の後で、このブロックのメモリマネージャーが複数の読み出しロックを許可している場合がありうる。このような情報の遅延は、クラスター式キャッシュシステムの動作に関する意識的な決断からもたらされる可能性がある。例えば、管理者が、共有メモリリソースの管理に関するネットワークのトラフィック量を抑えるために、報告のスケジュールを制限することを望む可能性がある。
【００５５】
上述の情報、機能、および複雑さの分配は、いくつかの利点をもたらすことができる。本明細書に記載の多くの例の高度に分散されかつ妨げのない性質が、それらを大規模なデータセンター環境において容易に拡大できるようにする。メモリマネージャーによって実行される分散されたロックおよび挿入／立ち退きの権限は、多数の動作の同時発生を可能にし、いずれか一つのスレッドが共有リソースを阻害する可能性を少なくする。さらに、キャッシュブロックへの実際のアクセスという複雑なタスクが、クラスターをまたいで分配される。しかしながら、この分配は、比較的中央集中型のメタデータサービス30ならびにそのようなメタデータサービス30によって提供される大域的な情報および管理の機能によって平衡させられる。
【００５６】
さらに、種々さまざまな持続モードを、本明細書に記載のクラスター式メモリリソースに関連して使用できることを、理解すべきである。本明細書に記載の例の多くにおいては、クラスター式リソースが内在する補助記憶装置からのデータ項目の冗長コピーを保存するように機能する読み出し専用キャッシングモードが説明されている。クラスターが元のデータが位置する補助記憶装置よりもはるかに高速な共有リソースを提供するため、性能が劇的に向上する。しかしながら、持続性の観点からは、クラスターが主たるデータ記憶装置として働くわけではないため、クラスター内のデータを、データ喪失の心配をすることなく任意の時点で消去することができる。あるいは、クラスターを、クライアントに読み出し動作の実行に加えてクラスター内の位置への書き込みを許して、主たる記憶装置として機能させることも可能である。この持続モードにおいて、クラスタデータを、ハードディスクまたは他のバックエンドのストレージデバイスへと定期的に書き込むことができる。
【００５７】
クラスター式メモリリソースをどのように使用できるかについてのさらなる例が、二次ページング機構である。ハードディスクを使用するページスワッピング技法が、よく知られている。本明細書に記載のシステムおよび方法を、ページが高性能のメモリクラスターからスワップされる別のページング機構を提供するために使用することができる。
【００５８】
本明細書に記載の典型的なポリシーの体制は、種々のキャッシュ操作が実行されるクラスター式メモリキャッシュ22内の場所を制御するように動作することもできる。1種類の例では、メタデータサービス30が、キャッシュの各部へのファイルまたは他の項目の挿入を取り扱うために、一つ以上の特定のメモリマネージャー34を選択する。この選択は、さまざまな基準にもとづくことができ、セキュリティの向上および故障に対する保護を提供するために、項目をクラスターの複数の部分にまたがって展開し、あるいは分解することを含むことができる。
【００５９】
他の種類の例では、メタデータサービスが、クラスター式メモリキャッシュ22にキャッシュされた項目について、例えばキャッシュ内の或る位置から別の位置への移動をコーディネートする。この移動は、負荷の平衡または他の性能上の利益を達成するために必要になり、あるいは所望される可能性がある。
【００６０】
次に、種々の典型的な局所性のポリシーを、図１および４を適宜に参照して説明する。図４が、共有メモリ・コンピュータ・ネットワーク20の別の例を示している。図示の例は、ネットワーク40が複数のセグメントを含んでいる点を除き、多くの点で図１の例に類似している。2個のセグメントが示されており、すなわちセグメントAおよびセグメントBが示されている。セグメントを、ルータ、スイッチ、などによって隔てることができる。先ほどと同様に、クラスター式メモリキャッシュ22は、複数の物理的に別個のコンピュータシステム26からのメモリ24で構成されているが、キャッシュの一部分がネットワークセグメントAへと局在している一方で、残りの部分がネットワークセグメントBへと局在している。クライアント32a、補助記憶装置50a、およびメタデータサービス30aが、セグメントAに位置する一方で、クライアント32b、補助記憶装置50b、およびメタデータサービス30bが、セグメントAに位置している。
【００６１】
第一の例では、キャッシュ挿入の局所性が、メモリ位置24の相対の使用にもとづいて決定される。使用情報を、メモリマネージャー34およびメタデータサービスによって経時的に集めて維持することができ、それぞれの記憶装置に維持することができる。使用は、立ち退きレート、挿入レート、アクセス頻度、特定のブロックについて与えられたロック／参照の数などにもとづくことができ、あるいはこれらから導出することができる。したがって、クラスター式メモリキャッシュ22のどこに項目を挿入するかを決定するときに、メタデータサービスは、負荷の平衡を達成するために、キャッシュのうちのあまり利用されておらず、あるいは充分に利用されていない部分を選択することができる。
【００６２】
さらに、メタデータサービスは、相対の使用の情報にもとづいて、或る場所から他の場所へのキャッシュ項目の移動をコーディネートすることができる。例えば、メタデータ・サービス・データ記憶装置80（図１）内の情報が、メモリマネージャーMM2およびMM3における容認不可能または耐え難い過剰使用を示している場合に、メタデータサービス30は、一部のデータ項目の別のメモリマネージャー（例えば、メモリマネージャーMM1またはMM4）への位置変更をコーディネートすることができる。
【００６３】
別の例では、局所性のポリシーを、要求を行うクライアントの位置にもとづいて実行することができる。例えば、図４を参照して、キャッシュ挿入要求が、クライアント32a（セグメントA）のうちの一つに関連付けられたアプリケーションにもとづいて引き起こされたと仮定する。これによって、セグメントBのメモリマネージャーではなくて、セグメントAのメモリマネージャー（MM1、MM2、またはMM3）のうちの一つにおいて挿入が試みられるように、ポリシー設定を実行することが可能である。
【００６４】
別の例では、内在するデータ項目の相対位置が、局所性のポリシーへと取り込まれる。図４を参照すると、ポリシーを、（セグメントBの）補助記憶装置50bに位置するファイルがセグメントBのメモリマネージャー34によってキャッシュされる旨の指定を行うように構成することができる。これは、たとえ要求クライアントがセグメントAに位置する場合であっても、そのようであってよい。ポリシーの実現がこの例のように完結する場合に、ポリシーの構成の他の態様は、例えば全体としてのポリシーの体制の種々の構成要素の優先順位付けによって、矛盾を解決することができる。
【００６５】
以上から、局所性を、クラスターにまたがる使用のパターンを追跡し、現状および予想されるクラスターの使用に関するネットワークホップの総数を少なくするように最適化されたノードへとメモリブロックを移動させることによって、決定できることを理解すべきである。多くの場合に、そのような最適化は、レイテンシーおよびネットワークの混雑の可能性を大幅に下げる。使用データを、設定マネージャーによってクライアントから集め、種々のキャッシュブロックを優先順位付けするポリシーの形態として、メタデータサービスへと伝えることができる。
【００６６】
ポリシーの実現を、データ項目のスラッシングを検出するために使用することも可能である。例えば、特定のデータ項目について高い挿入および立ち退きのレートが検出されると、システムは、立ち退きの基準を緩和し、あるいは他のやり方でスラッシング状態を軽減するように調節を行うことができる。
【００６７】
さらなる局所性の例は、ブロックまたはデータ項目がクラスター式メモリリソース内の多数の位置に複製される実施の形態を含む。例えば、キャッシングシステムにおいて、所与のキャッシュブロックの複数の複製を、クラスター式キャッシュ内の複数の異なる位置に位置させることができる。次いで、メタデータサービスのクエリが、有効な位置のうちの一つの特定をもたらすことができる。特定の設定において、このような複製は、耐障害性の向上、性能の向上、および他の利点を提供する。
【００６８】
次に、図５を参照して、典型的な共有メモリ方法120を、クラスター式メモリキャッシュにアクセスするクライアントエンティティの文脈において説明する。先ほどと同様、クラスター式メモリキャッシュは、多数の物理的に別個のコンピュータシステムに位置する物理メモリから集められ、構成されている。この文脈は、補助記憶装置に保存されているが、クラスター式メモリキャッシュへと挿入することも可能であるデータ項目について、クライアントによるアクセスの企てをさらに含む。
【００６９】
本方法は、一般に、ネットワークインフラストラクチャを介して互いに動作可能に接続された複数の物理的に別個のコンピュータシステムの各々においてローカル・メモリ・マネージャーを動作させることを含む。一つ以上のメタデータサービスが例示され、ネットワークインフラストラクチャに動作可能に接続される。物理的なメモリ位置に関するメタデータ（例えば、ファイル／パスのハッシュ、使用情報／統計値、状態、など）をメタデータサービスに供給するために、メタデータサービスとローカル・メモリ・マネージャーとの間で通信が実行される。次いで、メタデータサービスが、物理的なメモリ位置をクライアントが単一のメモリリソースとして集合的に利用できるよう、ディレクトリサービスを提供し、さらには他のやり方でメモリマネージャーを協調させるように機能する。
【００７０】
図面を具体的に参照すると、122において、方法120は、クライアント要求の発行をさらに含むことができる。上述した例と同様に、要求は、オペレーティングシステムの構成要素、アプリケーション、ドライバ、ライブラリ、または他のクライアントエンティティから由来でき、あるいはこれらから発行されることができ、ファイルサーバ、ディスクアレイ、または他の補助記憶装置に位置するファイルまたは他のデータ項目へと向けられることができる。
【００７１】
124に示されるとおり、方法120は、要求された項目についてメタデータがすでに利用可能であるか否かを判断するために、ローカル記憶装置をチェックすることをさらに含むことができる。ローカルメタデータの存在は、要求された項目が現時点においてクラスター式メモリキャッシュに存在しており有効であるか、あるいは少なくとも過去のいずれかの時点において存在していたことを示している。ローカルメタデータが利用可能である場合、必要であれば読み出しロックが得られ（126）、項目がクラスター式メモリキャッシュ内の場所から読み出される（128）。
【００７２】
図１の文脈において、これらの段階は、補助記憶装置50に位置する特定のファイルを求めるクライアント32経由のアプリケーション要求に相当することができる。要求に応答し、クライアント32は、要求されたファイルについての有効なメタデータをローカルメタデータ記憶装置92から取り出すことができる。取り出されたメタデータは、データ項目について特定のメモリマネージャー34を示しており、および／または、他の方法でクラスター式メモリキャッシュ22内のデータ項目の場所を示している。次いで、要求クライアントは、例えばそれぞれのメモリマネージャーとやり取りすることによって、キャッシュ内の場所からの項目にアクセスすることができ、読み出しロックを入手して、キャッシュされている項目のRDMA読み出しを実行することができる。
【００７３】
さらに図５を参照すると、要求された項目が共有メモリリソースにキャッシュされており、あるいは要求された項目が共有メモリリソースにキャッシュされていたことが、ローカル記憶装置からは判断できない場合、方法120は、130に示されているように、項目のキャッシュ適格性の判断を含むことができる。再び図１を参照すると、クライアント32およびクライアントのポリシーエンジン94が、ステップ130の適格性判断を行うように構成された構成要素の例を提供している。具体的には、上述のように、クライアントおよびポリシーエンジンが、メタデータサービス30への要求の通過をフィルタ処理することで、クラスター式メモリキャッシュの使用をフィルタ処理することができる。
【００７４】
要求された項目が、キャッシュのために適格でない場合、要求は、クラスター式メモリキャッシュ以外の手段によって満足される。とくには、132に示されるように、クライアントの要求が、例えば補助記憶装置50（図１）に位置するバックエンドのファイルシステムへと直接的にアクセスすることによって補助アクセスによって満足される。
【００７５】
134に進むと、ローカルに保存されたメタデータでは開始することができない適格な要求について、メタデータサービスにアクセスすることができる。ステップ124における照会と同様に、メタデータサービスが、136において、クライアントの要求に対応するメタデータが存在するか否かを判断するために照会される。メタデータサービスが、要求について現在のメタデータ（例えば、キャッシュ22のうちの要求された項目がキャッシュされている部分を管理しているローカル・メモリ・マネージャーのアドレス）を有する場合、そのメタデータが要求エンティティへと返され（138）、ステップ126および128に関して上述したようにアクセスおよび読み出しの動作を続けることができる。
【００７６】
照会されたメタデータサービスに現在のメタデータが存在しない場合、それは、要求された項目が共有メモリリソースに存在しないこと（例えば、図１のクラスター式メモリキャッシュ22が、クライアント32のうちの一つによって要求されたファイルの古くない複製を含んでいないこと）を知らせている。したがって、140に示されるとおり、方法120は、要求された項目を共有メモリへと挿入する企てを行うか否かを判断することを含むことができる。項目が挿入されない場合、クライアントの要求は、すでに説明し、132に示したように、共有リソースの使用以外によって対処されなければならない。
【００７７】
さらに図５を参照すると、挿入を行うべき場合に、方法120は、142に示されるとおり、挿入の局所性を判断することを含むことができる。より詳しくは、どこに項目を配置すべきかの評価を、共有メモリリソース内の特定の位置について行うことができる。
【００７８】
図１に関して説明した種々の例と同様に、局所性の判断を、種々のパラメータにもとづき、システムのポリシーの設定に従って行うことができる。いくつかの場合には、局所性を、例えばメモリマネージャーからの報告にもとづいてメタデータサービスに蓄積される使用の統計値など、動作の際に集められるデータに応答して決定することもできる。
【００７９】
やはり142に示されるとおり、キャッシュ挿入は、一つ以上のローカル・メモリ・マネージャー（例えば、図１のメモリマネージャーMM1、MM2、など）とのメッセージングまたは他の方法での協議をさらに含むことができる。この通信は、要求、受け取り確認、などを含むことができる。例示として、メタデータサービス30が、使用の統計値および特定のメタデータにもとづいて、要求されたデータのブロックをメモリマネージャーMM4が管理するメモリ位置にキャッシュするように企てることを決定できる。メタデータサービス30が、メモリマネージャーMM4へと挿入要求を送信し、メモリマネージャーMM4が要求をかなえ、自身の管理するメモリ位置24への要求されたブロックの書き込みを許可することができる。さらに、メタデータサービス30およびメモリマネージャーMM4の間のやり取りは、144に示されるとおり、メタデータサービスにおいて確認を受信することを含むことができる。
【００８０】
すでに述べたように、メモリマネージャーは、いくつかの場合には、挿入要求を拒絶することができ、あるいは自身の管理するメモリ位置（単数または複数）について立ち退きまたは他の操作を実行した後でのみ、要求を引き受けることができる。実際、いくつかの場合には、適切な挿入場所が決定される前に、異なるメモリマネージャーへと順次または平行して挿入要求が送信される。いずれにせよ、挿入プロセスは、典型的には、やはり144に示されているように、メタデータ・サービス・データ記憶装置を更新することをさらに含む。例えば、ファイルがキャッシュされた場合には、メタデータサービス30のデータ記憶装置80（図１）を、ファイルのパス／ファイル名のハッシュで更新することができる。
【００８１】
146に示されるように、挿入が成功した場合、メタデータをクライアントへと供給でき、次いでアクセスおよび読み出し操作を続けることができる（138、126、128）。他方で、挿入の企てが失敗した場合には、さらなる企て（142、144）が可能であり、および／または、要求された項目について補助アクセス（132）が可能である。
【００８２】
次に、図６および７を参照すると、これらの図は、クライアント32に共有メモリリソース（単数または複数）へのアクセスを提供するために使用することができる典型的なアーキテクチャを示している。これらの図は、クライアント32の種々の構成要素を、データ項目にアクセスするための通信スタックに関して示しており、補助記憶装置（例えば、図１の補助記憶装置50）またはクラスター式メモリリソース（例えば、図１のクラスター式メモリキャッシュ22）からデータ項目を読み出すためのアクセス経路を示している。クラスター式メモリリソースが、典型的には、補助記憶装置へのアクセスよりも高速かつ効率的なアクセスを提供する。
【００８３】
図６の例では、クラスターインターフェイス602が、アプリケーション600とファイルシステム抽象化レイヤ604との間で通信スタックに配置されている。補助記憶装置へのアクセスを、TCP/IP−イーサネット（登録商標）レイヤ606、SCSI−ファイバ・チャネル・レイヤ608、などといった公知の機構によって、ファイル・システム・レイヤによって行うことができる。上述のように、補助記憶装置へのアクセスは、さまざまな理由で生じうる。アプリケーション600によって要求されたファイルが、クラスター式メモリキャッシュへのロードに適さない形式であるかもしれない。クラスターインターフェイス602は、図５の典型的な方法のステップ130のように、共有メモリリソースへのアクセスを阻止または防止するフィルタを適用することができる。あるいは、補助記憶装置へのアクセスを、図５のステップ146および132に示されるように、クラスターへの挿入の企てが失敗した後で実行することができる。
【００８４】
あるいは、クラスターインターフェイス602を、いくつかの場合にファイル・システム・レイヤ604をバイパスし、要求されたデータを補助記憶装置50からではなく、共有メモリリソース内の位置（例えば、クラスター式メモリキャッシュ22のメモリ位置24）から読み出すように構成することができる。上述のとおり、このクラスター式リソースのアクセスは、クライアントRDMAレイヤ610およびターゲット・ホスト・チャネル・アダプタ612を介して行うことができる。
【００８５】
クラスターインターフェイス602は、共有メモリリソースのアクセスに関連して種々の機能を実行することができる。例えば、インターフェイス602は、アプリケーション600による特定のファイルの要求に応答して、（例えば、図５のステップ124あるいはステップ134、136、および138のように）メタデータの検索および取り出しを行うことができる。さらに、インターフェイス602は、メタデータサービスとやり取りし、ファイルをクラスター式キャッシュへと挿入することができ、次いで挿入の成功後に、クラスターインターフェイス602がクラスター式キャッシュの適切な位置からファイルを読み出すことができるよう、ファイルのメタデータを取り出すことができる。
【００８６】
一典型的な実施の形態においては、クラスターインターフェイス602が、クライアント装置の仮想メモリシステムとやり取りし、ページフォールト機構を使用する。具体的には、要求された項目がクライアント装置のローカルメモリに存在しない場合、仮想メモリのページフォールトが生成される。ページフォールトの発生に応答して、クラスターインターフェイス602が、要求された項目を補助記憶装置50または共有メモリクラスターから入手するために、すでに述べた処理を実行する。クラスターインターフェイス602を、クラスター式キャッシュ22の使用が許される場合に、項目の取り出しがクライアントによって同時に補助記憶装置50およびクラスター式メモリキャッシュ22から試みられるように、構成することができる。あるいは、最初にクラスター式キャッシュ22へのアクセスが試みられ、失敗の後でのみ補助アクセスが行われてもよい。
【００８７】
これに代え、図７は、クラスターインターフェイス602がファイルレイヤ604とブロックベースのアクセス機構（SCSI−ファイバ・チャネル・レイヤ608、ならびにSRP620、ISER622、およびOFED−インフィニバンド／iWarpレイヤ610）との間に位置しているブロックベースのシステムを示している。この例では、ブロックの保存およびアクセスのための機構は、図６のファイルベースの例と一致するが、データブロックは、ファイルパスによる代わりに、オフセットおよび長さによって装置から参照される。
【００８８】
クライアントに使用される特定の構成に応じて、ブロックレベルまたはファイルレベルの無効化を使用することができる。例えば、アプリケーションが、クラスター式リソースにキャッシュされたデータ項目へと書き込みを行っている場合、キャッシュされた複製が無効にされ、クラスター内の当該項目が保存されているローカルメモリ／キャッシュマネージャーにおいて、立ち退きを実行することができる。立ち退きとともに、このキャッシュ項目への参照を保持しているクライアントへとメッセージを送信し、立ち退きを知らせることができる。次いで、クライアントが、システムの構成に応じて、ブロックまたはファイルレベルの無効化を実行することができる。
【００８９】
さらに、ブロックベースの実施例において可変のブロックサイズを使用できることを、理解できるであろう。具体的には、ブロックサイズを、ポリシーの仕様に従って決定することができる。ブロックサイズは、特定の設定において性能に大きな影響を有すると考えられる。
【００９０】
最後に、ファイルまたはブロックベースではないAPIまたは他の機構を使用する構成も使用可能である。
【００９１】
本明細書に記載のコンピュータ装置が、本明細書に記載のプログラムを実行するように構成された任意の適切なコンピュータ装置であってよいことを、理解できるであろう。例えば、コンピュータ装置は、メインフレームコンピュータ、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末（PDA）、コンピュータによって可能にされた無線電話機、ネットワークコンピューティング装置、または他の適切なコンピュータ装置であってよく、インターネットなどのコンピュータネットワークを介して互いに接続することができる。これらのコンピュータ装置は、典型的には、プロセッサならびに関連の揮発および不揮発メモリを備えており、揮発メモリの部分およびプロセッサを使用して不揮発メモリに保存されたプログラムを実行するように構成される。本明細書において使用されるとき、用語「プログラム」は、本明細書に記載の一つ以上のコンピュータ装置によって実行でき、あるいは利用することができるソフトウェアまたはファームウェア要素を指し、個々の実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコード、あるいはこれらのグループ、などを包含するように意図される。コンピュータ装置によって実行されたときにコンピュータ装置に上述の方法を実行させ、上述のシステムの動作を生じさせるプログラムインストラクションが保存されたコンピュータにとって読み取り可能な媒体を提供できることを、理解できるであろう。
【００９２】
本発明の技術的範囲は、以上の説明によってではなく、添付の特許請求の範囲によって定められるため、本明細書の実施の形態が、あくまでも例示であって、本発明を限定するものではなく、したがって特許請求の範囲の境界および範囲あるいはそのような境界および範囲の均等物に含まれるすべての変更が、特許請求の範囲によって包含されることを、理解すべきである。
【図１】
2011503725.tif 000003
【図２】
2011503725.tif 000004
【図３】
2011503725.tif 000005
【図４】
2011503725.tif 000006
【図５】
2011503725.tif 000007
【図６】
2011503725.tif 000008
【図７】
2011503725.tif 000009
【国際調査報告】
2011503725.tif 000010