(57)【特許請求の範囲】
【請求項１】
コンピュータ実装キャッシュ・データ・ストレージ・システムの二次データ・ストレージ・キャッシュ内にデータをポピュレートするための方法であって、
前記二次データ・ストレージ・キャッシュ内に挿入される候補データのヒート・メトリックを判断するステップと、
前記二次データ・ストレージ・キャッシュの現在の状態のキャッシング効率に従って、ヒート・メトリック閾値を調整するステップと、
そのヒート・メトリックが前記閾値を下回る、前記二次データ・ストレージ・キャッシュに提供された候補データを拒否するステップと、
そのヒート・メトリックが前記ヒート・メトリック閾値と等しいか又はこれを上回る、前記二次データ・ストレージ・キャッシュに提供された候補データを、前記二次データ・ストレージ・キャッシュに入れることを許容するステップと、
前記二次データ・ストレージ・キャッシュ内に最後に挿入されたデータのヒットに関連する参照メトリック（最後挿入参照メトリック）を保持するステップと、
前記二次データ・ストレージ・キャッシュから最後に削除されたデータのヒットに関連する参照メトリック（最後削除参照メトリック）を保持するステップと、
を含み、
前記調整するステップは、前記最後挿入参照メトリック、及び、前記最後削除参照メトリックに従って、前記ヒート・メトリック閾値を調整するステップを含む、方法。
【請求項２】
前記調整するステップは、
前記最後挿入参照メトリックを、前記最後削除参照メトリックと比較するステップと、
前記最後挿入参照メトリックが前記最後削除参照メトリックを上回る場合、前記閾値をデクリメントするステップと、
前記最後挿入参照メトリックが前記最後削除参照メトリックを下回る場合、前記閾値をインクリメントするステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記キャッシュ・データ・ストレージ・システムは第１データ・ストレージ・キャッシュをさらに含み、前記ヒート・メトリックは、前記データが前記キャッシュ・データ・ストレージ・システムの前記第１データ・ストレージ・キャッシュ内に格納されていた間の前記データのヒートに基づいている、請求項２に記載の方法。
【請求項４】
前記二次データ・ストレージ・キャッシュに提供された前記データは、前記第１データ・ストレージ・キャッシュからデモートされたデータを含む、請求項３に記載の方法。
【請求項５】
前記最後に挿入されたデータはＭＲＩリスト内に列挙され、前記最後に削除されたデータはＭＲＥリスト内に列挙され、前記参照メトリックは、前記データが前記二次データ・ストレージ・キャッシュ内に存在する間の、前記ＭＲＩ内に列挙された前記データについての前記二次データ・ストレージ・キャッシュ内のヒット・カウントと、前記データが前記二次データ・ストレージ・キャッシュから削除された後の、前記ＭＲＥ内に列挙された前記データについてのヒット・カウントとを含む、請求項４に記載の方法。
【請求項６】
前記データは、データのページを含み、前記ヒート・メトリックについてのヒット・カウントは、ページごとに判断され、前記最後挿入参照メトリック及び前記最後削除参照メトリックは、それぞれ前記ＭＲＩ内及び前記ＭＲＥ内に列挙された前記ページの全てに関して判断される、請求項５に記載の方法。
【請求項７】
前記調整するステップは、前記最後挿入参照メトリックと前記最後削除参照メトリックとが実質的に同じである場合、前記ヒート・メトリック閾値を変更しないままにすることをさらに含む、請求項２に記載の方法。
【請求項８】
二次データ・ストレージ・キャッシュと、
前記二次データ・ストレージ・キャッシュ内にデータをポピュレートするための制御装置とを含み、前記制御装置は、
前記二次データ・ストレージ・キャッシュ内に挿入される候補データのヒート・メトリックを判断し、
前記二次データ・ストレージ・キャッシュの現在の状態のキャッシング効率に従って、ヒート・メトリック閾値を調整し、
そのヒート・メトリックが前記閾値を下回る、前記二次データ・ストレージ・キャッシュに提供された候補データを拒否し、
そのヒート・メトリックが前記ヒート・メトリック閾値と等しいか又はそれを上回る、前記二次データ・ストレージ・キャッシュに提供された候補データを、前記二次データ・ストレージ・キャッシュに入れることを許容し、
前記二次データ・ストレージ・キャッシュ内に最後に挿入されたデータのヒットに関連する参照メトリック（最後挿入参照メトリック）を保持し、
前記二次データ・ストレージ・キャッシュから最後に削除されたデータのヒットに関連する参照メトリック（最後挿入参照メトリック）を保持し、
前記調整するステップにおいて、前記最後挿入参照メトリック及び前記最後削除参照メトリックに従って、前記ヒート・メトリック閾値を調整する、コンピュータ実装キャッシュ・データ・ストレージ・システム。
【請求項９】
前記制御装置は、前記調整するステップにおいて、
前記最後挿入参照メトリックを、前記最後削除参照メトリックと比較し、
前記最後挿入参照メトリックが前記最後削除参照メトリックを上回る場合、前記閾値をデクリメントし、
前記最後挿入参照メトリックが前記最後削除参照メトリックを下回る場合、前記閾値をインクリメントする、
請求項８に記載のコンピュータ実装キャッシュ・データ・ストレージ・システム。
【請求項１０】
第１データ・ストレージ・キャッシュをさらに含み、
前記ヒート・メトリックは、前記データが前記キャッシュ・データ・ストレージ・システムの前記第１データ・ストレージ・キャッシュ内に格納されていた間の前記データのヒートに基づいている、請求項９に記載のコンピュータ実装キャッシュ・データ・ストレージ・システム。
【請求項１１】
前記二次データ・ストレージ・キャッシュに提供された前記データは、前記第１データ・ストレージ・キャッシュからデモートされたデータを含む、請求項１０に記載のコンピュータ実装キャッシュ・データ・ストレージ・システム。
【請求項１２】
コンピュータ実装キャッシュ・データ・ストレージ・システムの二次データ・ストレージ・キャッシュ内にデータをポピュレートするためのコンピュータ・プログラムであって、
非一時的コンピュータ使用可能プログラム・コードが内部に具体化されたコンピュータ使用可能ストレージ媒体を含み、前記コンピュータ使用可能プログラム・コードは、
前記二次データ・ストレージ・キャッシュ内に挿入される候補データのヒート・メトリックを判断するためのコンピュータ使用可能プログラム・コードと、
前記二次データ・ストレージ・キャッシュの現在の状態のキャッシング効率に従って、ヒート・メトリック閾値を調整するためのコンピュータ使用可能プログラム・コードと、  ヒート・メトリックが前記閾値を下回る、前記二次データ・ストレージ・キャッシュに提供された候補データを拒否するためのコンピュータ使用可能プログラム・コードと、
ヒート・メトリックが前記ヒート・メトリック閾値と等しいか又はこれを上回る、前記二次データ・ストレージ・キャッシュに提供された候補データを、前記二次データ・ストレージ・キャッシュに入れることを許容するためのコンピュータ使用可能プログラム・コードと、
前記二次データ・ストレージ・キャッシュ内に最後に挿入されたデータのヒットに関連する参照メトリック（最後挿入参照メトリック）を保持するためのコンピュータ使用可能プログラム・コードと、
前記二次データ・ストレージ・キャッシュから最後に削除されたデータのヒットに関連する参照メトリック（最後挿入参照メトリック）を保持するためのためのコンピュータ使用可能プログラム・コードと、
前記調整するステップにおいて、前記最後挿入参照メトリック及び前記最後削除参照メトリックに従って、前記ヒート・メトリック閾値を調整するためのためのコンピュータ使用可能プログラム・コードと、を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ実装データ・ストレージ・キャッシュに関し、より具体的には、複数のレベルを有するキャッシュに関する。
【背景技術】
【０００２】
コンピュータ実装データ・ストレージ・システムは、典型的には、ホスト・コンピュータ・システムのためにデータを格納する、種々のタイプのデータ・ストレージを含む。ストレージ制御装置又はコントローラは、読み出し要求及び書き込み要求に応答して、データ・ストレージ媒体及びメモリへのアクセスを制御する。ストレージ制御装置は、種々の冗長性、アクセス速度及び安全レベルに構成された、キャッシュ、不揮発性ストレージ、ＲＡＩＤ（redundant array of independence disks、独立ディスク冗長アレイ）、ＪＢＯＤ（Just a Bunch of Disks、単純ディスク束）などのデータ・ストレージ・デバイスに従って、データを指向させることができる。
【０００３】
一例として、ＤＳ８０００（商標）のような、インターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ（登録商標））のＥＳＳ（Enterprise Storage Server）データ・ストレージ・システムは、「中央電子処理装置（Central electronics complex）」又は「ＣＥＣ」と呼ばれる、コンピュータ・エンティティ、キャッシュ、不揮発性ストレージ等の冗長クラスタを有する。
【０００４】
データ・ストレージ・システム内において、キャッシュは、最近アクセスされた、頻繁にアクセスされる、又は近い将来アクセスされる可能性が高いデータ又は命令を格納するために用いられる高速メモリ又はストレージ・デバイスを含む。フェッチ又は再計算される代わりに、キャッシュ内に格納されたデータに迅速にアクセスし、時間とリソースの両方を節約することができる。
【０００５】
キャッシュは、複数のレベルで提供することができる。例えば、キャッシュ・データ・ストレージ・システムは、「第１（first）」即ち「一次（primary）」キャッシュ及び「二次」キャッシュの両方を含むことができる。典型的には、第１キャッシュは、二次キャッシュより高速のアクセスを有し、データの単位当たりのコストが高く、二次キャッシュは、第１キャッシュより大きいストレージ容量を有する。例えば、第１キャッシュは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を含み、一方、二次キャッシュは、「Ｆｌａｓｈ＿Ｃａｃｈｅ」（インターナショナル・ビジネス・マシーンズ・コーポレーションの商標）のようなフラッシュ・メモリ・ソリッド・ステート・ドライブ（ＳＳＤ）を含む。データにアクセスするとき、コンピューティング・システム又はデバイスは、最初に、第１キャッシュ内にデータがないかを探し、そこにデータが存在しない場合、二次キャッシュ内にデータがないかを探す。データを書き込む際、コンピューティング・システム又はデバイスは、データを第１キャッシュに書き込むことができる。第１キャッシュ内のデータに即座に又は頻繁にアクセスできない場合、このデータを二次キャッシュにデモートする（降格する）ことができる。二次キャッシュからのデータに即座に又は頻繁にアクセスできない場合、そのデータを、ＲＡＩＤ、ＪＢＯＤ等のようなより遅いアクセス速度のデータ・ストレージに追い出すことができる。
【０００６】
典型的には、ＬＲＵ（least recently used、最長時間未使用）アルゴリズムを利用して、どのデータを次の下位レベルにデモートするかを選択する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
二次データ・ストレージ・キャッシュへのデータのポピュレーションを制御するための方法、コンピュータ実装キャッシュ・データ・ストレージ・システム及びコンピュータ・プログラム製品が提供される。この文脈における「二次」とは、第１レベルのデータ・ストレージ・キャッシュと他のデータ・ストレージとの間の、いずれかのレベルのデータ・ストレージ・キャッシュである。従って、トライレベル（tri-level)のデータ・ストレージ・キャッシュにおいては、「二次」データ・ストレージ・キャッシュは、第２レベル又は第３レベルとすることができる。
【課題を解決するための手段】
【０００８】
二次データ・ストレージ・キャッシュを含むコンピュータ実装キャッシュ・データ・ストレージ・システムの一実施形態において、以下の:
二次データ・ストレージ・キャッシュ内に挿入される候補データのヒート・メトリック（heat metric）を判断するステップと、
二次データ・ストレージ・キャッシュの現在の状態のキャッシング効率に従って、ヒート・メトリック閾値を調整するステップと、
そのヒート・メトリックが閾値を下回る、二次データ・ストレージ・キャッシュに提供された候補データを拒否するステップと、
そのヒート・メトリックがヒート・メトリック閾値と等しいか又はこれを上回る、二次データ・ストレージ・キャッシュに提供された候補データを、二次データ・ストレージ・キャッシュに入れることを許容するステップと、
が実行される。
【０００９】
更に別の実施形態においては、キャッシング効率は、
二次データ・ストレージ・キャッシュ内に最後に挿入された（most recently inserted）データのヒットに関連する参照メトリックを保持することと、
二次データ・ストレージ・キャッシュから最後に削除された（most recently evicted）データのヒットに関連する参照メトリックを保持することと、
によって判断され、
調整するステップは、最後に挿入されたデータの参照メトリック及び最後に削除されたデータの参照メトリックに従って、ヒート・メトリック閾値を調整するステップを含む。
【００１０】
さらに別の実施形態においては、調整するステップは、
最後に挿入されたデータの参照メトリックを、最後に削除されたデータの参照メトリックと比較するステップと、
最後挿入参照メトリックが最後削除参照メトリックを上回る場合、閾値をデクリメントするステップと、
最後挿入参照メトリックが最後削除参照メトリックを上回る場合、閾値をインクリメントするステップと、
を含む。
【００１１】
キャッシュ・データ・ストレージ・システムが第１データ・ストレージ・キャッシュをさらに含む別の実施形態において、ヒート・メトリックは、データがキャッシュ・データ・ストレージ・システムの第１データ・ストレージ・キャッシュ内に格納されていた間のデータのヒートに基づいている。
【００１２】
更に別の実施形態において、二次データ・ストレージ・キャッシュに提供されたデータは、第１データ・ストレージ・キャッシュからデモートされたデータを含む。
【００１３】
別の実施形態において、最後に挿入されたデータはＭＲＩリスト内に列挙され、最後に削除されたデータはＭＲＥリスト内に列挙され、参照メトリックは、データが二次データ・ストレージ・キャッシュ内に存在する間のＭＲＩ内に列挙されたデータについての二次データ・ストレージ・キャッシュ内のヒット・カウントと、データが二次データ・ストレージ・キャッシュから削除された後のＭＲＥ内のデータについてのヒット・カウントとを含む。
【００１４】
データがデータのページを含む更に別の実施形態において、ヒート・メトリックについてのヒットのカウントは、ページごとに判断され、最後挿入参照メトリック及び最後削除参照メトリックは、それぞれＭＲＩ内及びＭＲＥ内に列挙されたページの全てに関して判断される。
【００１５】
別の実施形態において、調整するステップは、最後挿入参照メトリックと最後削除参照メトリックとが実質的に同じである場合に、ヒート・メトリック閾値を変更しないままにすることをさらに含む。
【００１６】
更に別の実施形態において、第１データ・ストレージ・キャッシュは、二次キャッシュにデータを提供するＤＲＡＭ第１キャッシュを含み、二次キャッシュは、フラッシュ・メモリを含む。
【００１７】
本発明をより完全に理解するために、添付図面と関連して記述された以下の詳細な説明を参照されたい。
【図面の簡単な説明】
【００１８】
【図１】本発明を実施することができる、例示的なネットワーク及びコンピュータ実装ストレージ・サーバ・システムのブロック図である。
【図２】図１のコンピュータ実装キャッシュ・データ・ストレージ・システムの線図である。
【図３】図１及び図２のシステムの様々な状態の線図である。
【図４】図１及び図２のシステムを動作させる例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【００１９】
本発明は、以下の説明において図面を参照して好ましい実施形態で説明され、図中、同様の番号は同一又は類似の要素を表す。本発明は、本発明の目的を達成するための最良の形態に関して説明されるが、当業者であれば、これらの教示に照らして、本発明の趣旨及び範囲から逸脱することなく変形を実現できることを認識するであろう。
【００２０】
図１を参照すると、コンピュータ・ベースのネットワーク・アーキテクチャ１００の例が、本明細書で説明されるコンピュータ実装キャッシュ・データ・ストレージ・システム及び方法を実施することができるコンピュータ実装データ・ストレージ・システム１１０と共に示される。アーキテクチャ１００は、単なる例として提示されるものであり、限定することを意図するものではない。本明細書に開示されるコンピュータ実装キャッシュ・データ・ストレージ・システム及び方法は、様々な種類の異なるコンピュータ、サーバ、データ・ストレージ・システム及びネットワーク・アーキテクチャに適用可能であり得る。
【００２１】
例示的なネットワーク・アーキテクチャ１００は、ストレージ・エリア・ネットワーク（ＳＡＮ）１０８のようなネットワークに結合された、１つ又は複数のホスト・コンピュータ・システム１０２を含むことができる。ネットワーク１０８は、いずれかの適切なプロトコルを用いる、いずれかの適切なプライベート又はパブリック相互接続を含むことができる。
【００２２】
ストレージ・システム１１０は、データを、スイッチ２０２とデータ・ストレージ２０３及び２０４との間で転送し、これらの動作を制御するように構成されたストレージ制御装置２００を含む。データ・ストレージは、例えば、スイッチ２０２を介してアクセス可能なソリッド・ステート・ドライブ及びハード・ディスク・ドライブのアレイを含むことができる。代替的に又は付加的に、データ・ストレージ２０３及び２０４は、個々のデバイスを含むことができるか、又は多数のデバイスを有するデータ・ストレージ・ライブラリを含むことができる。ホスト・システム１０２の全て又はいずれかは、ストレージ・システム１１０に指示し、これを利用することができ、かつ、ストレージ制御装置２００及び本明細書のデータ・キャッシング・システムを利用することができる。
【００２３】
キャッシング・システムは、ストレージ制御装置２００内に実装することができ、他のストレージ・システムにも適用可能であり得る。図示のように、ストレージ制御装置２００は、１つ又は複数のサーバ２０６を含む。制御装置２００はまた、制御装置２００を、ホスト・システム１０２並びにデータ・ストレージ２０３及び２０４に接続するインターフェースを提供するための、それぞれホスト・アダプタ２０８及びデバイス・アダプタ２１０を含むこともできる。複数のサーバ２０６ａ、２０６ｂは、接続されたホスト１０２が常にデータを利用できることを保証するために、冗長性を与えることができる。従って、１つのサーバ２０６ａが故障しても、他のサーバ２０６ｂは機能を維持することができ、ホスト・システム１０２とデータ・ストレージ２０３及び２０４との間でデータ転送を継続できることを保証する。このプロセスは、「フェイルオーバー（failover）」と呼ばれる。
【００２４】
図１に示されるものに類似したアーキテクチャを有するストレージ・システム１１０の一例が、インターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ（登録商標））のＤＳ８０００（商標）Ｅｎｔｅｒｐｒｉｓｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒである。ＤＳ８０００（商標）は、継続的な動作をサポートし、データ・ストレージの仮想化を実施するように設計されたデータ・ストレージを提供する、高性能大容量のストレージ制御装置であり、本明細書では単に実施形態の例として提示され、限定することを意図するものではない。従って、本明細書で説明されるキャッシング・システムは、ＤＳ８０００（商標）に限定されるものではなく、製造業者、製品名、又は、システム１１０と関連したコンポーネント若しくはコンポーネント名に関係なく、キャッシングを有するあらゆる同等のストレージ制御装置２００内に実装することができる。
【００２５】
図１の例においては、各サーバ２０６は、１つ又は複数のコンピュータ・プロセッサ２１２及びメモリ２１４を含むことができる。コンピュータ・プロセッサ２１２は、プロセッサ上で動作し、とりわけ、データ・ストレージ２０３及び２０４内のデータにアクセスするために用いられるソフトウェア・モジュールを格納するための内部処理及び格納能力を含むことができる。
【００２６】
一実施形態において、メモリ２１４は、キャッシュ２１８を含むことができる。例えば読み出し動作において、ホスト１０２がストレージ・システム１１０からのデータにアクセスするたびに、例えばストレージ２０４からデータを読み出すといった動作を実行するサーバ２０６は、データをそのキャッシュ２１８内に保存することができ、結果的には、そのデータを再び要求することができる。再びホスト１０２がデータにアクセスした場合、サーバ２０６は、データを、ストレージ２０４からフェッチする代わりに、キャッシュ２１８からフェッチすることができ、時間とリソースの両方を節約する。同様に、ホスト・システム１０２が書き込みを行うとき、サーバ２０６が格納してもよく、又は、ホスト・システム１０２が、データをキャッシュ２１８内に格納し、後でストレージ２０４にデステージする（destage）ように指示してもよい。書き込みがキャッシュ２１８内に格納される際、第１のサーバ２０６が故障した場合に反対側のサーバ２０６によって書き込みを復旧できるように、書き込みを反対側のサーバ２０６の不揮発性ストレージ（ＮＶＳ）２２０内にも格納することができる。
【００２７】
図１及び図２を参照すると、ストレージ・システム１１０は、ハード・ディスク・ドライブのようなデータ・ストレージ２０４、及び、フラッシュ・メモリ等の不揮発性メモリに基づいた、ソリッド・ステート・ドライブ（ＳＳＤ）のようなデータ・ストレージ２０３の両方を含むことができる。ＳＳＤドライブ又は他の種類のソリッド・ステート・メモリの入力／出力（Ｉ／Ｏ）性能は、典型的には、ハード・ディスク・ドライブのＩ／Ｏ性能よりはるかに高速である。特定の実施形態においては、より高いＩ／Ｏ性能のため、ＳＳＤ２０３を用いて、第１キャッシュとして働くキャッシュ２１８とハード・ディスク・ドライブ２０４との間に大容量の二次キャッシュ３００を設けることができる。大容量の二次キャッシュ３００の使用により、ストレージ・システム１１０のＩ／Ｏ性能が著しく改善し得る。
【００２８】
二次キャッシュ３００を用いる際、サーバ２０６が読み出し要求を受信した場合、サーバは、最初に第１キャッシュ２１８内にデータがあるかを探し、データが存在しない場合、ＳＳＤ２０３内にある二次キャッシュ３００内にデータがあるかを探す。データがいずれのキャッシュにおいても入手可能でない場合、サーバ２０６は、ハード・ディスク・ドライブ２０４からデータを取り出すことができる。同様に、データを書き込む又は修正するとき、サーバ２０６は、最初に、第１キャッシュ２１８に対して、データを書き込むこと又は修正することができる。最終的に、データを二次キャッシュ３００にデステージして、第１キャッシュ２１８内にスペースを作ることができる。最終的に、このデータをディスク・ドライブ２０４にデステージして、二次キャッシュ３００内に利用可能なスペースを作ることができる。
【００２９】
ハード・ディスク・ドライブ２０４からデータを読み出す際、再びデータにアクセスする場合に備えて、データを第１キャッシュ２１８内に格納することもできる。
【００３０】
一例として、二次キャッシュ３００は、ストレージ・システム１１０の全データ・ストレージ容量の約１乃至２０パーセントを与えるようなサイズにすることができる。従って、約４０テラバイトのデータ・ストレージ（ハード・ディスク・ドライブ２０４及びＳＳＤ２０３の両方からの）を含むストレージ・システム１１０については、この格納スペースの約２テラバイトを、二次キャッシュ３００として用いることができる。第１キャッシュ２１８は、典型的には、二次キャッシュ３００のサイズの僅かな割合である。例示的な実施形態のように、操作しやすくするために、第１キャッシュ２１８及び二次キャッシュ３００の両方についての格納スペースを、ページで構成することができる。
【００３１】
図２、図３及び図４を参照すると、一実施形態において、動的に調整された閾値を適用して、二次キャッシュ３００の選択的なポピュレーションを提供する。
【００３２】
第１キャッシュ２１８からデモートされたデータをフィルタリングするために閾値を用いる実施形態において、閾値の調整は、第１キャッシュ２１８及び二次キャッシュ３００のごく一部内にキャッシュされたページのみに関する統計値を保持することによって達成される。
【００３３】
制御装置２００によって保持された統計値は、二次キャッシュ３００にデモートされる候補である第１キャッシュ２１８内のページのヒート・メトリック３１０を含む。
【００３４】
ヒート・メトリックの一例は、データのページが第１キャッシュ２１８内に配置されてから、これにアクセス（「ヒット」）された回数のカウントである。大部分のキャッシュは、最長時間未使用（ＬＲＵ）アルゴリズム（多くの種類のものが当業者には周知である）に基づいて、どのデータをデモートするかを判断するので、統計値を集める効率的な方法は、第１キャッシュ２１８内の全てのページのヒート・メトリックを追跡し、保持することである。ヒットの数は、例えば、第１キャッシュ２１８内の各ページについてのメタデータ・エントリのカウンタの形で実装することができる。
【００３５】
ヒート・メトリックの他の例は、ページが第１キャッシュ２１８内に配置されていた一定期間にわたるページの「ヒット」数、及び第１キャッシュ２１８内の全てのページに対する「ヒット」の平均と比較した、あるページに対する「ヒット」の比を含む。
【００３６】
一実施形態においては、ヒート・メトリック及び候補データは、例えば読み出し動作において、ストレージ２０４から複製されたデータにすぎない。
【００３７】
図３において、調整可能な閾値Ｔが、ヒート・メトリックの形をとる。ヒート・メトリック閾値Ｔは、二次データ・ストレージ・キャッシュ３００の現在の状態のキャッシング効率に従って調整される。図１の制御装置２００は、デモートされる（３２０）候補ページの図２のヒート・メトリック３１０を、ヒート・メトリック閾値Ｔと比較する。候補データのヒート・メトリック３１０が閾値Ｔを下回った場合、制御装置は、二次データ・ストレージ・キャッシュに提供された候補データを拒否する（３３０）。一例において、拒否されたデータ３３０は廃棄される（３４０）。廃棄とは、データが図１のストレージ２０４から複製された場合、データへの参照が、ストレージ２１８、及び第１のストレージ２１８のメタデータ（インデックスなど）から除去され、原本がストレージ２０４内に保持されることを意味する。
【００３８】
代わりに、候補データ３２０が、最初に第１キャッシュ２１８に書き込まれたデータを含む場合、廃棄するとは、データが図１のデータ・ストレージ２０４に書き込まれることを意味する。
【００３９】
さらに図３を参照すると、図１の制御装置２００は、図２のヒート・メトリック３１０がヒート・メトリック閾値Ｔと等しいか又はこれを上回る、二次データ・ストレージ・キャッシュ３００に提供された候補データ３２０を、二次データ・ストレージ・キャッシュ３００に入れることを許容する（３５０）。
【００４０】
図２及び図３を参照すると、一実施形態において、図１の制御装置２００によって保持されるヒート・メトリック閾値Ｔについてのキャッシング効率の調整は、二次データ・ストレージ・キャッシュ３００内に、最後に挿入された（most recently inserted、ＭＲＩ）データ３６５のヒットに関連した参照メトリック３６０を保持すること、及び、二次データ・ストレージ・キャッシュ３００から最後に削除された（most recently evicted、ＭＲＥ）データ３７５のヒットに関連した参照メトリック３７０を保持することに基づく。一実施形態においては、ＭＲＩ及びＭＲＥ参照メトリックに用いられるデータのページ数は等しい。一例として、最後に挿入されたデータ３６５が、ＭＲＩリスト３８０内に列挙され、最後に削除されたデータが、ＭＲＥリスト３９０内に列挙され、参照メトリックは、データが二次データ・ストレージ・キャッシュ３００内に存在する間の、ＭＲＩ内に列挙されたデータについての二次データ・ストレージ・キャッシュにおけるヒット・カウントと、データが二次データ・ストレージ・キャッシュから削除された後の、ＭＲＥ内に列挙されたデータについてのヒット・カウントとを含む。リスト３８０、３９０は、先入れ先出し置換ポリシーを用いる小容量のゴースト・キャッシュの形とすることができる。代替的に、リストは、各ページが二次キャッシュ内に及び二次キャッシュの外に移動されるときに各ページの識別を付加及び消去することにより、決定することができる。各々のページ参照において、制御装置は２つのリストを更新し、ＭＲＩリスト「ｒ（ＭＲＩ）」及びＭＲＥリスト「ｒ（ＭＲＥ）」内で生じるヒットの数を追跡する。
【００４１】
データがデータ・ページを含む更に別の実施形態において、ヒート・メトリック３１０についてのヒット・カウントは、一例では、そのページが第１キャッシュ２１８内に存在する間のページについてのヒット数に基づいて、ページごとに判断される。他方、最後挿入参照メトリック３６０及び最後削除参照メトリック３７０は、それぞれＭＲＩ３６５内及びＭＲＥ３７５内に列挙されたページの全てに関して判断される。
【００４２】
一実施形態において、図１の制御装置２００は、最後に挿入されたデータの参照メトリック３６０を、最後に削除されたデータの参照メトリック３７０と比較し、最後挿入参照メトリック３６０が最後削除参照メトリック３７０を上回る場合、閾値Ｔをデクリメントし、最後挿入参照メトリック３６０が最後削除参照メトリック３７０を下回る場合、閾値をインクリメントする。
【００４３】
図２、図３及び図４を参照すると、一実施形態においては、図１の制御装置２００は、ステップ４００において、第１キャッシュ２１８からページｐをデモートする。
【００４４】
ステップ４００と関連しない時間枠内で行うことができるステップ４１０において、二次キャッシュ３００の最後に挿入されたデータ３６５の参照メトリック３６０を、最後に削除されたデータ３７５の参照メトリック３７０と比較する。
【００４５】
一実施形態においては、定常状態において、二次キャッシュ３００内に入れることが許容されたページごとに、１つのページを削除しなければならない。つまり、それぞれの許容は、１つのページの置換を意味する。従って、各々の第１キャッシュのデモートにおいて、制御装置は、ｎ個の最新の二次キャッシュの許容判断を評価し、これらが正しい（即ち、ヒット率の増大をもたらす）場合には、次に、閾値Ｔをデクリメントする。具体的には、最後挿入参照メトリック３６０が最後削除参照メトリック３７０を上回る場合（４１５）、閾値Ｔをデクリメントする（４２０）。つまり、以前の閾値Ｔ０が、一測定単位だけデクリメントされて、新しい閾値Ｔ１になる。一例においては、Ｔ１の調整により、１つ少ないヒットを有するページをキャッシュに入れるのを許容することが可能になる。閾値がより低いと、より積極的な二次キャッシュのポピュレーションがもたらされる。
【００４６】
他方、ｎ個の最新の二次キャッシュの許容判断が間違っていた（即ち、ヒット率の減少をもたらす）場合、次に、閾値Ｔを増加させる。具体的には、最後挿入参照メトリック３６０が、最後削除参照メトリック３７０を下回る場合（４２５）、閾値Ｔを増加させる（４３０）。つまり、以前の閾値Ｔ０が、一測定単位だけ増加し、新しい閾値Ｔ１になる。一例においては、Ｔ１の調整により、１つ多いヒット数を有するページをキャッシュに入れるのを許容することが可能になる。閾値がより高いと、より多くの受信ページを廃棄することになる（３４０）。
【００４７】
一実施形態においては、代替的な定常状態を保持することができ、最後挿入参照メトリック３６０と最後削除参照メトリック３７０とが実質的に同じである場合（４４０）、ヒート・メトリックの閾値Ｔは変更されないままである（４５０）。
【００４８】
代案として、閾値Ｔの調整を、一定の期間に行うことができる。
【００４９】
結果として、ｒ（ＭＲＩ）＞ｒ（ＭＲＥ）である場合、これは、新たに許容されたページが、削除されたものよりホットであることを意味し、閾値Ｔを低くする必要がある。他方、ｒ（ＭＲＩ）＜ｒ（ＭＲＥ）である場合、これは、ホスト・システム１０２にとって、削除されたページが新たに許容されたものより有用であり、新しいものに置換すべきではなかったことを意味し、従って、ポピュレーション率を下げて、許容閾値Ｔを高くする必要がある。
【００５０】
一実施形態においては、ステップ４６０において、デモートされたページ３２０のヒート・メトリック３１０「ｈ（ｐ）」を、新しい閾値Ｔ１と比較する。候補データのヒート・メトリック３１０が閾値Ｔを下回る場合、制御装置は、二次データ・ストレージ・キャッシュに提供された候補データ３２０を拒否し（４６５、３３０）、例えば、拒否されたデータを廃棄する（３４０）。図１の制御装置２００は、そのヒート・メトリック３１０がヒート・メトリック閾値Ｔと等しいか又はこれを上回る、二次データ・ストレージ・キャッシュ３００に提供された候補データ３２０を、二次データ・ストレージ・キャッシュ３００に入れることを許容する（４７０、３５０）。
【００５１】
閾値Ｔの調整の例として、最近の１０００回のアクセスの間、ＭＲＥリスト内で（そのページのいずれかで）５０回のヒットがあり、ＭＲＩリスト内で（そのページのいずれかで）１０回のヒットしかない場合、これは、より大きいキャッシング値のページが二次キャッシュから削除され、より小さいキャッシング値の新しいページが挿入されたことを意味し、従って、制御装置は、二次キャッシュ３００への許容率を下げる（閾値Ｔを上げる）必要がある。反対に、最近の１０００回のアクセスの間、ＭＲＩリスト内で（そのページのいずれかで）５０回のヒットがあり、ＭＲＥリスト内で（そのページのいずれかで）１０回のヒットしかない場合、これは、より高いキャッシング値の新しいページが二次キャッシュ内に挿入され、より低いキャッシング値のページが削除されたことを意味し、従って、制御装置は、二次キャッシュ３００への許容率を増加させて（閾値Ｔを下げて）、より大きいキャッシング値を有するより多くのページを許容するのを可能にする必要がある。
【００５２】
当業者であれば、図１及び図２のシステム１００の二次キャッシュ３００のポピュレーションを制御するためのコンピュータ実装制御装置２００及びそこで与えられた機能を含む、本明細書に開示された本発明の実施形態を、システム、方法、又はコンピュータ・プログラム製品として具体化できることを認識するであろう。従って、本発明の実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態などの、これらの組み合わせの形をとることができ、これらは全て本明細書において一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の実施形態は、具体化されたコンピュータ可読プログラム・コードを内部に有する、１つ又は複数の非一時的コンピュータ可読媒体内で具体化されたコンピュータ・プログラム製品の形をとることができる。
【００５３】
１つ又は複数の非一時的コンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、これらに限定されるものではないが、例えば、電子的、磁気的、光学的、電磁気的、赤外線又は半導体のシステム、装置若しくはデバイス、又は上記のものの任意の適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）には、以下のもの、即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のものの任意の適切な組み合わせが含まれる。本文書の文脈において、コンピュータ可能ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらとの関連で用いるためのプログラムを収容又は格納することができる任意の有形媒体とすることができる。
【００５４】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のもののいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。
【００５５】
本明細書の実施形態の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立したソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は、外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いるインターネットを通じて）。
【００５６】
本発明の実施形態は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して以下で説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサにより実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を生成するようにすることができる。
【００５７】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００５８】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で、コンピュータ実装プロセスを生成するための一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００５９】
当業者であれば、上述の方法に関して、ステップの順序に対する変更を含む変更をなし得ることを理解するであろう。さらに、当業者であれば、本明細書で示されるものとは異なる特定のコンポーネント構成を用い得ることも理解するであろう。
【００６０】
本発明の好ましい実施形態が詳細に示されたが、当業者であれば、添付の特許請求の範囲で記述されるような本発明の範囲から逸脱することなく、これらの実施形態に対する修正及び適合に想到し得ることは明らかである。
【符号の説明】
【００６１】
１００：ネットワーク・アーキテクチャ
１０２：ホスト・コンピュータ・システム
１０８：ストレージ・エリア・ネットワーク
１１０：コンピュータ実装データ・ストレージ・システム
２００：ストレージ制御装置
２０２：スイッチ
２０３、２０４：データ・ストレージ
２０６ａ、２０６ｂ：サーバ
２０８：ホスト・アダプタ
２１０：デバイス・アダプタ
２１２：コンピュータ・プロセッサ
２１４：メモリ
２１８：第１キャッシュ
２２０：不揮発性ストレージ
３００：二次キャッシュ
３１０：ヒート・メトリック
３２０：候補データ
３３０：廃棄された候補データ
３６０、３７０：参照メトリック
３６５：最後に挿入されたデータ
３７５：最後に削除されたデータ
３８０：ＭＲＩリスト
３９０：ＭＲＥリスト
【図１】
0005908100.tif 000002
【図２】
0005908100.tif 000003
【図３】
0005908100.tif 000004
【図４】
0005908100.tif 000005