(57)【要約】【課題】  ストレージ・コントローラにおけるデステージ・タスクの動的管理の方法、システム、及びコンピュータ・プログラム製品を提供する。【解決手段】  １つ又は複数のプロセッサにより、デバイス・アダプタを介して書き込みキャッシュ及びＮＶＳからストレージ・デバイスのプールへのデータ転送を容易にするための方法、システム、及びコンピュータ・プログラム製品が提供される。プロセッサは、特定のストレージ・デバイスに関するＮＶＳの現在の占有率及びそのストレージ・デバイスに関連するステージ・アクティビティに基づいて、デステージ速度を適応変化させる。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。これらの因子は、一般に、キャッシュ・ミスの場合に読み出し応答時間と関連し、通常、デステージ速度の動的管理とは関連しない。この組み合わせは、ＮＶＳの所望の全占有率を維持すると同時に、応答時間性能を向上させる。【選択図】      図２
2013511081.tif 000002
【特許請求の範囲】
【請求項１】
デバイス・アダプタを介して、データをキャッシュ及び不揮発性ストレージ（ＮＶＳ）から複数のストレージ・デバイスの各々にデステージする方法であって、
前記ストレージ・デバイスの各々に関連した前記ＮＶＳの現在のストレージ占有率に応じて、キャッシュからのデータのデステージ速度を適応変化させるステップと、
前記ストレージ・デバイスに関連した現在のステージ・アクティビティに応じて前記デステージ速度を適応調整するステップであって、前記調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる、ステップと、
データを前記調整されたデステージ速度でキャッシュから前記ストレージ・デバイスにデステージし、前記ＮＶＳから前記デステージされたデータを破棄するステップと、
を含む方法。
【請求項２】
前記デステージ速度は、各々の前記ストレージ・デバイスに関連した前記ＮＶＳのデバイス占有率が前記ＮＶＳの最大デバイス占有率を上回らないという制約を条件として、前記ＮＶＳの所望の合計占有率を維持するように適応変化され、全ての前記ストレージ・デバイスへの、前記ＮＶＳ内の使用可能スペースの合計最大割り当ては、前記ＮＶＳ内の使用可能スペースの１００パーセントを上回る、請求項１に記載の方法。
【請求項３】
前記デステージ速度は、
前記ＮＶＳの前記合計占有率が最大合計占有率を上回る場合、前記デステージ速度を最大速度に設定し、
前記ＮＶＳの前記デバイス占有率が最小デバイス占有率を下回る場合、前記デステージ速度を最小速度に設定し、
他の場合には、前記ストレージ・デバイスに関する前記現在のデバイス占有率対前記最大デバイス占有率の比に基づいて前記デステージ速度を設定する、
ことによって適応変化される、請求項２に記載の方法。
【請求項４】
前記デステージ速度は、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅のうちの少なくとも１つを含む現在のステージ・アクティビティに応じて適応調整される、前記請求項のいずれか１項に記載の方法。
【請求項５】
前記デステージ速度は、前記ストレージ・デバイスの読み出し／書き込み速度に応じて適応調整される、請求項４に記載の方法。
【請求項６】
前記デステージ速度は、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及び前記ストレージ・デバイスの読み出し／書き込み速度の各々を含む現在のステージ・アクティビティに応じて適応調整される、請求項１に記載の方法。
【請求項７】
前記デステージ速度は、平均して前記ＮＶＳの前記合計占有率を所望の占有率に維持して、前記複数のストレージ・デバイスへのデータ・スループットを増大させるように適応変化され、かつ、ホスト読み出し及び書き込み応答時間を短縮するように適応調整される、請求項１に記載の方法。
【請求項８】
デステージ速度の索引付きテーブルを準備するステップであって、
前記デステージ速度を適応変化させるステップは、前記ストレージ・デバイスに関連した前記ＮＶＳの前記現在のデバイス占有率に基づいて初期索引を計算するステップを含み、
前記デステージ速度を適応調整するステップは、前記ストレージ・デバイスに関連した前記現在のステージ・アクティビティに応じて前記初期索引をインクリメント又はデクリメントするステップを含む、
ステップと、
前記調整された索引に従って、前記テーブルから前記調整されたデステージ速度を読み出すステップと、
をさらに含む、請求項１から請求項４までのいずれか１項に記載の方法。
【請求項９】
平均して前記ＮＶＳの合計占有率を所望の合計占有率に維持して、前記複数のストレージ・デバイスへのスループットを増大させ、かつ、読み出し及び書き込み応答時間を短縮するように、前記現在のステージ・アクティビティ及び前記索引付きテーブル内のデステージ速度に応じて、前記初期索引のインクリメント又はデクリメントを選択するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
デバイス・アダプタを介して、データをキャッシュ及び不揮発性ストレージ（ＮＶＳ）から複数のストレージ・デバイスにデステージするためのシステムであって、
前記キャッシュ及び前記ＮＶＳ、並びに前記複数のストレージ・デバイスと通信し、請求項１から請求項９までのいずれか１項に記載の方法を実行するように適合される、少なくとも１つのプロセッサを含むシステム
【請求項１１】
デバイス・アダプタを介して、データをキャッシュ及び不揮発性ストレージ（ＮＶＳ）から複数のストレージ・デバイスにデステージするのを容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、コンピュータ可読プログラム・コード部分が内部に格納されたコンピュータ可読ストレージ媒体を含み、前記コンピュータ可読プログラム・コード部分は、コンピュータによって実行されるとき、前記コンピュータに、請求項１から請求項９までのいずれかに記載のステップを実行させる、前記コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに関し、より具体的には、ストレージ・コントローラにおけるデステージ・タスクの管理に関する。
【背景技術】
【０００２】
Ｉｎｔｅｒｎａｔｉｏｎａｌ  ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ＩＢＭ（登録商標））のＥｎｔｅｒｐｒｉｓｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒのようなハイエンド・ストレージ・コントローラは、ネットワーク化されたホストから、直接アクセス・ストレージ・デバイス（direct access storage device、ＤＡＳＤ）、独立ディスク冗長アレイ(Redundant Array of Independent Disks)（ＲＡＩＤアレイ）、及び単純ディスク束（Just a Bunch of Disks、ＪＢＯＤ）などのストレージ・デバイスのプールへの入力／出力（Ｉ／Ｏ）要求を管理する。ストレージ・コントローラは、ネットワーク上で１つ又は複数のホストと通信するための１つ又は複数のホスト・バス・アダプタ（ＨＢＡ）カードと、ストレージ・デバイスと通信するためのデバイス・アダプタ（ＤＡ）とを含む。ストレージ・コントローラはまた、キャッシュ・メモリと、バッテリ・バックアップ式ランダム・アクセス・メモリで構成され得る不揮発性ストレージ・デバイス（non-volatile storage device、ＮＶＳ）とを含む。
【０００３】
キャッシングは、Ｉ／Ｏ遅延（latency）を隠蔽する際の基本的な技術であり、ストレージ・コントローラ、ファイル・システム、及びオペレーティング・システムにおいて広く用いられている。Ｓｔｏｒａｇｅ  Ｎｅｔｗｏｒｋｉｎｇ  Ｉｎｄｕｓｔｒｙ  Ａｓｓｏｃｉａｔｉｏｎ（ＳＮＩＡ）は、キャッシュを「低速メモリ又はデバイスとの間でデータを読み書きするのに必要とされる有効時間を短縮するために用いられる高速メモリ又はストレージ・デバイス」と定義する。以下に、キャッシュ技術が、ストレージ・コントローラの文脈において論じられ、そこでは、高速であるが比較的高価なランダム・アクセス・メモリが、低速であるが比較的安価なディスク又はストレージ・デバイスのためのキャッシュとして用いられる。キャッシュ・メモリは、メモリからの読み出しデータ・アクセス要求を処理し、変更されたデータのバッファリングを提供するために外部ストレージからインページされた（ステージされた）データへの高速アクセスのために用いられる。書き込み要求は、キャッシュに書き込まれ、ＮＶＳ内にミラーリングされ、次いで外部ストレージ・デバイスに書き込まれる（デステージされる）。
【０００４】
読み出しキャッシュ（readcache）管理は、良く研究されている分野である。この文脈においては、多数のキャッシュ置換技術が存在し、例えば、ＬＲＵ、ＣＬＯＣＫ、ＦＢＲ、ＬＲＵ−２、２Ｑ、ＬＲＦＵ、ＬＩＲＳ、ＭＱ、ＡＲＣ、及びＣＡＲを参照されたい。
【０００５】
書き込みキャッシュ（writecache）管理は、発展途上の分野である。ＮＶＳは、高速書き込みを可能にするために導入されたものである。一般的に、ＮＶＳがない場合、一貫性、正確さ、耐久性、及び持続性を確実にするために、あらゆるデータ書き込みをストレージ・デバイスに直接、同期式に書き込む（デステージする）必要がある。さもなければ、サーバの故障によりキャッシュが失われ、データの損失を招く可能性がある。一般的に、ホスト書き込みの速度はストレージ・デバイスの速度を上回るので、ＮＶＳがなければ、データ転送が妨げられる。ＮＶＳは、キャッシュへの高速書き込みを可能にし、書き込みは、ＮＶＳにミラーリングされ、外部ストレージ・デバイスに転送するまでＮＶＳ内に安全に格納される。データは、後でキャッシュから非同期式にデステージされ（そして、ＮＶＳから破棄され）、従って、ストレージ・デバイスの書き込み遅延を隠蔽する。キャッシュ及びＮＶＳは、典型的には、複数のストレージ・デバイスを対象とした更新を格納する。書き込みに対する低遅延の継続を保証するために、典型的には、ＮＶＳ内のデータを排出して（drain）、常に入ってくる書き込みのための幾らかの空きスペースがあることを確実にする必要があり、さもなければ、以後の書き込みが事実上同期式になり、そのことはホスト書き込みのための応答時間に悪影響を及ぼすことがある。一方、書き込みがあまりにも積極的に排出される場合、典型的にはＮＶＳキャッシュの平均使用量が少なくなるので、一般に、書き込みキャッシングの利点を十分に生かすことができない。キャッシュはＮＶＳよりも安価で遥かに大きいので、ＮＶＳは、書き込みデータをデステージする際のボトルネックとなる。
【０００６】
幾つかのデステージング技術は、特定のストレージ・デバイスに関するＮＶＳの占有率を制限して、単一のストレージ・デバイスの故障が全てのデバイスに影響を及ぼすのを防止する、線形閾値化（linear thresholding）スキームを用いる。他の技術は、ＮＶＳの全占有率及び各ストレージ・デバイスと関連した占有率に基づいて、ストレージ・デバイスへのデステージ速度を動的に変化させる。新しい書き込み速度に関係なく全速力で書き込むことは、一般に、性能上理想的なことではなく、これにより、ストレージ・コントローラから得ることができる最大書き込みスループット（throughput)が低下する。望ましい動作は、ＮＶＳを満杯にすることなくＮＶＳが大きく占有された状態を保持しながら、単に、入ってくる書き込みロード（即ち、書き込み要求）に遅れずについていくことである。ＮＶＳは同じ論理アドレスへのより多くの書き込みを吸収することができるため、ストレージ・デバイスへのデータのスループットがより効率的になるため、ＮＶＳの占有率が高いほど、書き込みキャッシュがより効率的になる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、ストレージ・コントローラにおけるデステージ・タスクの動的管理の方法、システム、及びコンピュータ・プログラム製品を提供する。
【課題を解決するための手段】
【０００８】
上記のことを考慮して、１つ又は複数のプロセッサにより、デバイス・アダプタを介して書き込みキャッシュ及びＮＶＳからストレージ・デバイスのプールへのデータ転送を容易にするための方法、システム、及びコンピュータ・プログラム製品が提供される。プロセッサは、特定のストレージ・デバイスに関連したＮＶＳの現在の占有率及びそのストレージ・デバイスに関連したステージ・アクティビティ（stage activity）に基づいて、デステージ速度を適応変化させる。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。これらの因子は、一般に、キャッシュ・ミスの場合に読み出し応答時間と関連し、通常、デステージ速度の動的管理とは関連しない。この組み合わせは、ＮＶＳの所望の全占有率を維持すると同時に、読み出し及び書き込み応答時間性能を向上させる。この手法は、異なるタイプの作業負荷（読み出し、書き込み、逐次的な、ランダムな）、異なるタイプのストレージ・デバイス、及び異なるデバイス速度にわたって、全体の読み出し及び書き込み性能を向上させる。
【０００９】
本発明の一実施形態によると、各々のストレージ・デバイスについて、プロセッサは、特定のストレージ・デバイスに関連したＮＶＳの現在のストレージ占有率に応じて、キャッシュからのデータのデステージ速度を適応変化させる。プロセッサは、ストレージ・デバイスに関連した現在のステージ・アクティビティに応じて、デステージ速度を適応調整する。現在のステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージし、ＮＶＳからそのデータを破棄する。
【００１０】
プロセッサは、特定のストレージ・デバイスに関連したＮＶＳの現在の占有率及びそのストレージ・デバイスに関連したステージ・アクティビティに基づいて、デステージ速度を適応変化させ、ＮＶＳの所望の全占有率及びストレージ・デバイスへのスループットを維持すると同時に、読み出し及び書き込み応答時間を改善することができる。スループットは、ホストからキャッシュ／ストレージまで測定され、これはキャッシュからストレージへのスループットに依存する。読み出し／書き込み時間は、ホストの観点から測定される。
【００１１】
プロセッサは、ＮＶＳの全占有率が高閾値（最大合計占有率）を上回る場合にはデステージ速度を最大値に設定することができ、ストレージ・デバイスの占有率が低閾値（最小デバイス占有率）を下回る場合にはデステージ速度を最小値に設定することができる。これらの閾値は固定されてもよく、又は作業負荷によって変化してもよい。あらゆる単一ストレージ・デバイスに関するＮＶＳの占有率を、最大デバイス占有率に制限するように、プロセッサを構成することができる。
【００１２】
プロセッサは、デステージ速度の索引付きテーブルを提供することができる。プロセッサは、ストレージ・デバイスに関するＮＶＳの現在のデバイス占有率に基づいて、初期索引を計算し、そのストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、初期索引をインクリメント又はデクリメントすることができる。プロセッサは、索引付きテーブルから調整されたデステージ速度を読み出す。
【００１３】
本発明の別の実施形態によると、各々のストレージ・デバイスについて、プロセッサは、ＮＶＳの所望の合計占有率を維持し、複数のストレージ・デバイスへの書き込みスループットを増加させるように、キャッシュからのデータのデステージ速度を適応変化させる。プロセッサは、各々のストレージ・デバイスに関するＮＶＳのデバイス占有率を、最大デバイス占有率を上回らないように制限するように構成される。全てのストレージ・デバイスに対するＮＶＳ内の使用可能スペースの合計最大割り当ては、ＮＶＳ内の使用可能スペースの１００パーセントを超える。プロセッサは、ＮＶＳの合計占有率が最大合計占有率を上回る場合にはデステージ速度を最大値に設定し、ＮＶＳのデバイス占有率が最小デバイス占有率を下回る場合にはデステージ速度を最小値に設定し、他の場合には、現在のデバイス占有率対最大デバイス占有率の比に基づいてデステージ速度を設定することにより、デステージ速度を適応変化させる。プロセッサは、少なくともストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅（場合によっては、デバイス・アダプタのステージ・アクティビティ、並びにストレージ・デバイスの読み出し／書き込み速度も同様に）を含む、ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、デステージ速度を適応調整して、読み出し及び書き込み応答時間を短縮する。調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージし、ＮＶＳからそのデータを破棄する。
【００１４】
プロセッサに、デステージ速度が最小索引に関する最小速度から最大索引に関する最大速度まで増加するデステージ速度の索引付きテーブルを提供することができる。プロセッサは、ストレージ・デバイスに関するＮＶＳの現在のデバイス占有率に基づいて初期索引を計算することによってデステージ速度を適応変化させ、ＮＶＳの合計占有率が最大合計占有率を上回る場合には、初期索引を最大索引に設定し、ＮＶＳのデバイス占有率が最小デバイス占有率を下回る場合には、初期索引を最小索引に設定し、他の場合には、現在のデバイス占有率対最大デバイス占有率の比に基づいて初期索引を設定する。プロセッサは、ストレージ・デバイスに関する現在のステージ・アクティビティに応じて、初期索引をインクリメント又はデクリメントすることによって、デステージ速度を適応調整し、ストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅が相対的に高い場合には、索引をデクリメントし、或いは、ストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅が相対的に低い場合には、索引をインクリメントする。プロセッサは、調整された索引に従って、テーブルから調整されたデステージ速度を読み出す。
【００１５】
関連するシステム及びコンピュータ・プログラム製品の実施形態も開示され、付加的な利点を与える。
【００１６】
ここで本発明の実施形態を、単なる例証として、添付の図面を参照しながら説明する。
【図面の簡単な説明】
【００１７】
【図１】本発明による装置及び方法を実装することができるストレージ・システムの一実施例を示す高レベルのブロック図である。
【図２】データをデキャッシュする方法の実施形態を示す高レベルのフロー図である。
【図３】複数のストレージ・デバイスに関するＮＶＳの占有率を示す図である。
【図４】特定のストレージ・デバイスに関連するステージ・アクティビティを示す、ストレージ・システムの一部分の図である。
【図５】（ａ）及び（ｂ）は、ストレージ・デバイスに関連するＮＶＳの現在の占有率及び現在のステージ・アクティビティの両方に基づいた、デステージ速度の動的管理を示すプロットである。
【図６】データをデキャッシュする方法の一実施形態を示すフロー図である。
【図７】データをデキャッシュする方法の一実施形態を示すフロー図である。
【図８】ストレージ・デバイスのステージ・アクティビティに従ったデステージ速度の動的管理を用いた場合と用いない場合の応答時間性能を比較するプロットである。
【図９】ストレージ・デバイスのステージ・アクティビティに従ったデステージ速度の動的管理を用いた場合と用いない場合の応答時間性能を比較するプロットである。
【発明を実施するための形態】
【００１８】
上記を鑑みて、プロセッサ又は複数プロセッサにより、デバイス・アダプタを介して書き込みキャッシュ及びＮＶＳからストレージ・デバイスのプールへのデータ転送を容易にするための種々の方法、システム、及びコンピュータ・プログラム製品の実施形態が提供される。プロセッサは、特定のストレージ・デバイスに関連するＮＶＳの現在の占有率及びそのストレージ・デバイスに関連するステージ・アクティビティに基づいて、デステージ速度を適応変化させる。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。これらの因子は、一般に、キャッシュ・ミスの場合の読み出し応答時間と関連し、通常、デステージ速度の動的管理とは関連しない。この組み合わせは、ＮＶＳの所望の全占有率及びストレージ・デバイスへのスループットを維持すると同時に、読み出し／書き込み応答時間を改善する。スループットは、ホストからキャッシュ／ストレージまで測定され、これはキャッシュからストレージへのスループットに依存する。読み出し／書き込み時間は、ホストの観点から測定される。この手法は、異なるタイプの作業負荷（読み出し、書き込み、逐次的な、ランダム）、異なるタイプのストレージ・デバイス、及び異なるデバイス速度にわたって、全体の読み出し及び書き込み性能を向上させる。
【００１９】
コンピュータ・ネットワーク・アーキテクチャは、ネットワークによって相互接続された１つ又は複数のコンピュータを含むことができる。ネットワークは、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、イントラネット等を含むことができる。特定の実施形態において、コンピュータは、クライアント・コンピュータ及びサーバ・コンピュータの両方を含むことができる。一般に、クライアント・コンピュータは通信セッションを開始できるのに対して、サーバ・コンピュータはクライアント・コンピュータからの要求を待つことができる。特定の実施形態において、コンピュータ及び／又はサーバは、１つ又は複数の内部又は外部の直接接続型（direct-attached）ストレージ・デバイス（例えば、ハードディスク・ドライブ、ソリッドステート・ドライブ、テープ・ドライブなど）に接続することができる。これらのコンピュータ及び直接接続型ストレージ・デバイスは、ＡＴＡ、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、ファイバ・チャネル等のようなプロトコルを用いて通信することができる。コンピュータの一部又は全ては、ストレージ・デバイスから取り出されたデータを格納するためのキャッシュを含むことができる。
【００２０】
コンピュータ・ネットワーク・アーキテクチャは、特定の実施形態において、サーバの背後に、ストレージ・エリア・ネットワーク（ＳＡＮ）又はＬＡＮ（例えば、ネットワーク接続型（network-attached）ストレージを用いるとき）のようなストレージ・ネットワークを含む。このネットワークは、サーバを、別個のハードディスク・ドライブ又はソリッドステート・ドライブ、ハードディスク・ドライブ又はソリッドステート・ドライブのアレイ、テープ・ドライブ、テープ・ライブラリ、ＣＤ−ＲＯＭライブラリ等のような１つ又は複数のストレージ・システムに接続することができる。ネットワークがＳＡＮである場合、サーバ及びストレージ・システムは、ファイバ・チャネル（ＦＣ）のようなネットワーク化標準を用いて通信することができる。
【００２１】
図１は、ＳＡＮ１０２に接続されたストレージ・システム１００の一実施形態を示す。ストレージ・システム１００は、ＲＡＩＤアレイのようなハードディスク・ドライブ（ＨＤＤ）及び／又はソリッドステート・ドライブ（ＳＤＤ）のアレイを含む。特定の実施形態において、デステージング技術は、こうしたストレージ・システム１００内で実装することができるので、ストレージ・システム１００の内部コンポーネントが示されるが、それらは、他のストレージ・システム１００にも適用可能である。図示したように、ストレージ・システム１００は、ストレージ・コントローラ１０４、１つ又は複数のスイッチ１０６、及びハードディスク・ドライブ１０８又はソリッドステート・ドライブ１０８のような１つ又は複数のストレージ・デバイス１０８を含む。ストレージ・コントローラ１０４は、１つ又は複数のホスト（例えば、オープン・システム及び／又はメインフレーム・サーバ）が１つ又は複数のストレージ・デバイス１０８内のデータにアクセスするのを可能にする。
【００２２】
選択された実施形態において、ストレージ・コントローラ１０４は、１つ又は複数のサーバ１１０を含む。ストレージ・コントローラ１０４はまた、それぞれホスト・デバイス及びストレージ・デバイス１０８に接続するためのホスト・アダプタ１１２及びデバイス・アダプタ１１３を含むこともできる。複数のサーバ１１０ａ、１１０ｂは、データが接続されたホストに対して常に利用可能であることを確実にするために、冗長性をもたらすことができる。従って、１つのサーバ１１０ａが故障しても、他のサーバ１１０ｂは機能できるままであり、Ｉ／Ｏは、ホストとストレージ・デバイス１０８との間で継続可能であることを保証する。このプロセスは「フェイルオーバー（failover）」と呼ぶことができる。
【００２３】
図１に示されるものと類似したアーキテクチャを有するストレージ・コントローラ１０４の一例が、ＩＢＭ  ＤＳ８０００（商標）エンタープライズ・ストレージ・システムである。ＤＳ８０００（商標）は、連続動作をサポートするように設計されたディスク・ストレージを提供する、高性能大容量ストレージ・コントローラである。ＤＳ８０００（商標）シリーズのモデルは、ＩＢＭのＰＯＷＥＲ５（商標）サーバ１１０ａ、１１０ｂを使用することができ、ＩＢＭの仮想化エンジン技術と統合することができる。しかしながら、本明細書で開示されるキャッシング装置及び方法は、ＩＢＭ  ＤＳ８０００（商標）エンタープライズ・ストレージ・システム１００に限定されるものではなく、製造業者、製品名、又はシステムと関連したコンポーネント若しくはコンポーネント名に関係なく、同等の又は類似のストレージ・システムにおいて実装することができる。さらに、本発明の１つ又は複数の実施形態から恩恵を受けることができるいずれのシステムも、本発明の範囲内に入るものと見なされる。従って、ＩＢＭ  ＤＳ８０００（商標）は、一例として提示したものにすぎず、限定することを意図したものではない。
【００２４】
選択された実施形態において、各々のサーバ１１０は、１つ又は複数のプロセッサ１１４（例えば、ｎウエイ（n-way）対称型マルチプロセッサ）と、メモリ１１６とを含むことができる。メモリ１１６は、揮発性メモリ（例えば、ＲＡＭ）、及び不揮発性メモリ（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ハードディスク、フラッシュメモリ等）を含むことができる。揮発性メモリ及び不揮発性メモリは、特定の実施形態においては、プロセッサ１１４上で実行され、ストレージ・デバイス１０８内のデータにアクセスするために用いられるソフトウェア・モジュールを格納することができる。サーバ１１０は、これらのソフトウェア・モジュールの少なくとも１つのインスタンスをホストすることができる。これらのソフトウェア・モジュールは、ストレージ・デバイス１０８内の論理ボリュームへの全ての読み出し及び書き込み要求を管理することができる。
【００２５】
メモリ１１６は、揮発性キャッシュ１１８を含む。ホスト（例えば、オープン・システム又はメインフレーム・サーバ）が読み出し動作を実行するたびに、サーバ１１０は、ストレージ・デバイス１０８からデータをフェッチし、そのデータが再度要求された場合にデータをキャッシュ１１８内に保存する。データがホストによって再度要求された場合、サーバ１１０は、そのデータを、ストレージ・デバイス１０８からフェッチする代わりに、キャッシュ１１８からフェッチすることができ、時間及びリソースの両方を節約する。これは、キャッシュ・ヒットと呼ばれる。
【００２６】
キャッシュ・ミス（トラックが現在キャッシュ内に存在しない）であるホスト読み出しの場合、ホスト読み出しが切断され、データはストレージ・デバイスからキャッシュにステージされ、次いでホスト読み出しが再接続され、データがキャッシュからホストに読み出される。データをストレージ・デバイスからキャッシュにステージするのにかかる時間は、ストレージ・デバイスを構成するドライブ（ＨＤＤ、ＳＤＤ）の読み出し／書き込み速度、各デバイス・アダプタに構成されたストレージ・デバイスの数、各デバイス・アダプタに構成されたストレージ・デバイスのタイプの混合、デバイス・アダプタの全使用帯域幅（ステージ及びデステージ・タスク）、並びにストレージ・デバイス及びデバイス・アダプタに課せられるステージ及びデステージ・タスクの現在の数を含む幾つかの因子に応じて、大きく変化し得る。一実施形態において、各ストレージ・デバイスは、ＲＡＩＤであり、これは「ランク（rank）」と呼ぶことができる。ＲＡＩＤは、例えば、１、５、６、１０などの多数のタイプと、例えば、７ｋ、１０ｋ、１５ｋ及びＳＤＤなどの異なるディスクＲＰＭ速度とを有する。読み出し応答時間は、キャッシュ・ミスの可能性、及びキャッシュ・ミスの場合に、データをストレージ・デバイスからキャッシュにステージするのにかかる時間によって、部分的に決定される。
【００２７】
メモリ１１６はまた、不揮発性ストレージ（ＮＶＳ）１２０を含む。ホストが書き込み動作を実行するとき、サーバ１１０は、ホスト書き込みが完了したと考えられる時点で、データをキャッシュ１１８及びＮＶＳ１２０の両方に書き込む。後の時点で、サーバは、データをキャッシュ１１８からストレージ・デバイスにデステージし、ＮＶＳ１２０からデータを破棄する（データのバッテリ・バックアップ・コピーはもはや必要とされないので）。データは、一般に、ＮＶＳを満杯にすることなくＮＶＳが大きく占有された状態を保持しながら、入ってくる書き込みロード（即ち、書き込み要求）に遅れずについていくのに十分な速度でデステージされる。ＮＶＳが満杯になった場合、キャッシュ書き込みミスの可能性が増大する。ＮＶＳは同じ論理アドレスへのより多くの書き込みを吸収することができ、従って、ストレージ・デバイスへのデータのスループットがより効率的になるため、ＮＶＳの占有率が高いほど、書き込みキャッシュがより効率的になる。
【００２８】
プロセッサ１１４は、ソフトウェア・モジュールを実行して、ストレージ・コントローラにおけるデステージ・タスクを動的に管理するように、より具体的には、そのストレージ・デバイスに関するＮＶＳの現在の占有率及びストレージ・デバイスに関連するステージ・アクティビティの両方に応じて、ストレージ・デバイスに関するデステージ速度を適合させるように構成される。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。ストレージ・デバイスのステージ・アクティビティのファクタリング（factoring）は、スループット・レベルを保持しながら、読み出し／書き込み応答時間を改善する。より具体的には、ホストの書き込み応答時間は、条件が許せば、ＮＶＳを積極的に空にすることによって改善することができ、読み出し応答時間は、条件が要求するときに、ＮＶＳを控えめに（conservatively）空にすることによって改善することができる。
【００２９】
ここで図２を参照すると、デステージ・タスクの動的管理の方法が、各々のストレージ・デバイスについて、プロセッサが、特定のストレージ・デバイスに関するＮＶＳの現在のストレージ占有率に従って、キャッシュからのデータのデステージ速度を適応変化させること（２００）を含む。プロセッサは、ストレージ・デバイスに関連する現在のステージ・アクティビティに従って、デステージ速度を適応調整する（２０２）。現在のステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。調整されたデステージ速度は、ステージ・アクティビティが低い場合は相対的に高くなり、ステージ・アクティビティが高い場合は相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージし（２０４）、ＮＶＳからデータを破棄する。
【００３０】
現在のストレージ占有率及びステージ・アクティビティの関数としてのデステージ速度は、所与のコンピューティング環境における全体の読み出し／書き込み性能を最適にするように適切に選択される。より具体的には、デステージ速度は、平均読み出し及び書き込み応答時間を短縮しながら、高スループットを保持するように選択される。ストレージ占有率の関数としての初期ステージ速度は、高い、低い、又は名目デステージ速度に設定することができ、現在のステージ・アクティビティの関数として上方に、下方に、又は上下に調整することができる。デステージ速度は、式として又はテーブルの形で与えることができる。一実施形態において詳述されるように、ストレージ占有率及びステージ・アクティビティを用いて、デステージ速度のテーブルへの索引を計算し、調整することができる。
【００３１】
図３は、ＮＶＳの部分３０２ａ、３０２ｂ、３０２ｃ、３０２ｄ及び３０２ｅ内に、それぞれストレージ・デバイス１０８ａ、１０８ｂ、１０８ｃ、１０８ｄ及び１０８ｅのプールに関するホスト書き込みのためのデータ３００を格納する、ＮＶＳ１２０の一実施形態を示す。各々のストレージ・デバイスは、ＮＶＳ１２０内の関連した現在のストレージ占有率を有する。一般的には、現在のストレージ占有率が大きいほど、そのストレージ・デバイスに関する、ＮＶＳを空にするためのデステージ速度が高くなる。
【００３２】
いずれか１つのストレージ・デバイスの現在のストレージ占有率は、無制約（ＮＶＳの１００％を占めることが許容される）にしてもよく、又は最大デバイス占有率（例えば、２５％）を上回らないように強いてもよい。後者の技術は、ＮＶＳの一部分を各ストレージ・デバイスに割り当て、１つのストレージ・デバイスの故障又は処理の遅延が、他のストレージ・デバイスに対する更新がＮＶＳ内にキャッシュされるのを防止するという状況を回避することを保証する。最大デバイス占有率は、幾つかのストレージ・デバイスの間で一様であってもなくてもよく、固定されていてもいなくてもよい。例えば、最大デバイス占有率は、ストレージ・デバイスのストレージ容量の加重平均として、又はストレージ・デバイス上のバックグランド処理の加重平均として計算することができる。最大デバイス占有率は、全てのストレージ・デバイスへのＮＶＳ内の使用可能スペースの合計最大割り当てが、ＮＶＳ内の使用可能スペースの１００％を上回るように確立することができる。例えば、５個のストレージ・デバイスの各々に最大デバイス占有率が割り当てられた場合、合計最大割り当ては１２５％となる。これは、ストレージ・デバイスの一部が、常にその最大デバイス占有率を使用しているわけではないという統計的仮定に基づいている。最大デバイス占有率が指定された場合、デステージ速度は、その最大デバイス占有率に対する現在のデバイス占有率に基づいて適切に変化される。
【００３３】
プロセッサは、デステージ速度を適応変化させるために、他の占有パラメータを考慮することができる。ＮＶＳの合計占有率が最大合計占有率を上回る場合、プロセッサは、デステージ速度を最大値に設定することができる。このテストは、ＮＶＳが満杯であり、一般に回避されるべき書き込みキャッシュ・ミスを引き起こし得ることのインジケータとなる。従って、プロセッサは、全てのストレージ・デバイスに関するデステージ速度をその最大値に設定して、所望の占有率に戻るようにＮＶＳを排出する。例えば、所望の全占有率が９０％である場合、実際の全占有率が９５％を上回る場合には、プロセッサは、最高速度でデステージすることができる。ＮＶＳのデバイス占有率が最小デバイス占有率を下回る場合、プロセッサは、そのストレージ・デバイスに関するデステージ速度を最小値（例えば、ゼロ）に設定することができる。このテストは、ＮＶＳが特定のストレージ・デバイスに関して、ストレージ・デバイスへのスループット効率を低下させる、空きすぎ状態であることのインジケータとなる。例えば、特定のストレージ・デバイスに関する占有率が１０％より下に下がると、プロセスは、そのストレージ・デバイスへのデータのデステージングを一時停止することができる。最大合計占有率は、固定してもしなくてもよい。例えば、最大合計占有率は作業負荷と共に変化し得る。最小デバイス占有率は固定してもしなくてもよく、ストレージ・デバイスにわたって一様であってもなくてもよい。
【００３４】
図４は、ストレージ・デバイスに関連する種々のステージ・アクティビティ因子（activity factor）を示すための、デバイス・アダプタ１１３、スイッチ１０６、並びにストレージ・デバイス１０８ａ、１０８ｂ及び１０８ｃを含むストレージ・システム１００の一部分を示す。第１のステージ・アクティビティ因子は、ストレージ・デバイスのステージ・アクティビティ４００である。この因子は、ストレージ・デバイスからの現在のステージ（読み出し）アクティビティの尺度である。第２のステージ・アクティビティ因子は、デバイス・アダプタのステージ・アクティビティ４０２である。この因子は、全てのストレージ・デバイスからのデバイス・アダプタによる現在のステージ（読み出し）アクティビティの尺度である。第３のステージ・アクティビティ因子は、デバイス・アダプタの使用帯域幅４０４である。この因子は、全てのストレージ・デバイスとの間のデバイス・アダプタによる現在のステージ（読み出し）及びデステージ（書き込み）アクティビティの尺度である。第４のステージ・アクティビティ因子は、ストレージ・デバイス４０６の読み出し／書き込み速度４０６である。この因子は、ストレージ・デバイスが、どれだけ速くデータを読み出し／書き込みできるかの尺度である。
【００３５】
前述のように、これらの因子は一般に、読み出しキャッシュ・ミスの場合の読み出し応答時間に関連する。これらの因子は、通常、データのデステージングとは関連せず、具体的には、デステージ速度を適応調整するためには用いられない。ストレージ・デバイスのステージ・アクティビティにおけるファクタリングは、スループットのレベルを維持しながら、読み出し／書き込み応答時間を改善する。より具体的には、ホスト書き込み応答時間は、条件が許すときにＮＶＳを積極的に空にすることによって改善することができ、読み出し応答時間は、条件の要求時にＮＶＳを控えめに空にすることによって改善することができる。この技術は、書き込み又は読み出しキャッシュ・ミスの数を減らすのに特に有効である。僅かな減少でも全体の応答時間に多大な影響を及ぼす。
【００３６】
図５（ａ）及び図５（ｂ）は、現在のデバイス占有率及びステージ・アクティビティをデステージ速度に関連付けるための１つの実施形態の例証である。デステージ速度の索引付きテーブル５００が、メモリ内に格納される。デステージ速度は、最小の索引（例えば、ゼロ）における最小速度（例えば、ゼロ）から増大し、最大の索引（例えば、１３）に関する最大速度（例えば、６０）まで増大する。このテーブルは、所与のコンピューティング環境に関する式又は数値分析から適切に生成される。図示のように、デステージ速度は索引に対して非線形である。これは典型的ではあるが必須ではない。プロセッサは、現在のデバイス占有率に基づいて、初期索引を計算する。プロセッサは、ステージ・アクティビティ因子の１つ又は複数によって与えられるような現在のステージ・アクティビティに基づいて、初期索引を調整する。プロセッサは、調整された初期索引を用いて、テーブル５００から調整されたデステージ速度を読み出す。
【００３７】
この特定の実施形態において、初期索引は、ストレージ・デバイスに関するＮＶＳの現在の占有率に基づいて、名目値５０２に設定される。プロセッサは、ステージ・アクティビティに基づいて、この名目値をインクリメント又はデクリメントする。ステージ・アクティビティが高い場合、デステージ速度を低下させて、ステージ・アクティビティに関するより多くのリソースを提供し、ステージ・アクティビティが低い場合、デステージ速度を増大させて、より迅速にＮＶＳを排出する。代替的に、プロセッサは、現在の占有率に基づいて、初期索引を高い（低い）値に設定し、ステージ・アクティビティに基づいて、デクリメント（インクリメント）のみを行うことができる。効果は同じである。ＮＶＳの全占有率が最大合計占有率閾値を上回る場合、プロセッサは、索引を最大値５０４に設定することができる。同様に、デバイス占有率が最小デバイス占有率を下回る場合、プロセッサは、索引を最小値５０６に設定することができる。これらの極端な場合のいずれにおいても、ステージ・アクティビティを考慮しなくてもよい。
【００３８】
図６は、各々のストレージ・デバイスに関するデステージ速度を、そのストレージ・デバイスに関するＮＶＳの占有率及びステージ・アクティビティの両方に基づいて動的に管理するための１つの実施形態のフロー図である。この実施形態において、初期索引は、占有率に基づいて名目値に設定され、ステージ・アクティビティ因子の各々に基づいてインクリメント又はデクリメントされる。合計占有率が閾値ＴＨＩ（最大合計占有率）を上回る場合、プロセッサは、索引を最大索引に設定して終了する（６００）。デバイス占有率が閾値ＴＨ２（最小デバイス占有率）を下回る場合、プロセッサは、索引を最小索引に設定して終了する（６０２）。他の場合には、プロセッサは、現在のデバイス占有率対最大デバイス占有率の比と索引の数との積に等しくなるように、初期索引を設定する（６０４）。この実施形態において、初期索引は、最大デバイス占有率に正規化された現在のデバイス占有率に直線的に比例する。デバイス占有率から索引への他のマッピングを用いることもできる。
【００３９】
プロセッサは、１つ又は複数のステージ・アクティビティ因子の各々をチェックし、それに応じて索引をインクリメント又はデクリメントする。プロセッサは、ストレージ・デバイスに対する現在のステージ要求をチェックする（６０６）。ステージ要求の数が低閾値ＴＨ３を下回る場合、プロセッサは、初期索引をインクリメントする（６０８）。ステージ要求の数が高閾値ＴＨ４を上回る場合、プロセッサは、初期索引をデクリメントする（６１０）。プロセッサは、デバイス・アダプタの現在の使用帯域幅をチェックする（６１２）。使用帯域幅が低閾値ＴＨ５を下回る場合、プロセッサは、初期索引をインクリメントする（６１４）。使用帯域幅が高閾値ＴＨ６を上回る場合、プロセッサは、初期索引をデクリメントする（６１６）。プロセッサは、デバイス・アダプタに対する現在のステージ要求をチェックする（６１８）。ステージ要求の数が低閾値ＴＨ７を下回る場合、プロセッサは、初期索引をインクリメントする（６２０）。ステージ要求の数が高閾値ＴＨ８を上回る場合、プロセッサは、初期索引をデクリメントする（６２２）。プロセッサは、ストレージ・デバイスの速度をチェックする（６２４）。デバイス速度が高い場合、プロセッサは索引をインクリメントする（６２６）。デバイス速度が低い場合、プロセッサは索引をデクリメントする（６２８）。ステージ・アクティビティ因子の各々に対して索引がインクリメント又はデクリメントされる量は、コンピューティング環境によって決まり、環境の計算又は数値分析によって設定することができる。調整された索引が最大索引を上回る場合、プロセッサは、最大索引と等しくなるように調整された索引を設定し、調整された索引が最小索引を下回る場合、プロセッサは、最小索引と等しくなるように調整された索引を設定する（６３０）。
【００４０】
索引が、６００及び６０２の閾値化プロセスによって、又は６０４乃至６３０の現在のデバイス占有率及びステージ・アクティビティに従って設定されると、プロセッサは、索引を用いて、テーブルから調整されたデステージ速度を抽出する（６３２）。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージする（６３４）。この技術は、プール内のストレージ・デバイスの各々に関するデステージ速度を決定するために用いられる。条件が変化したとき、この技術を繰り返して、ストレージ・デバイスの各々に関するデステージ速度を更新する。
【００４１】
図７は、特定のコンピューティング環境内の各ストレージ・デバイスについてのデステージ速度を、そのストレージ・デバイスに関連するＮＶＳの占有率及びステージ・アクティビティの両方に基づいて動的に管理するための１つの実施形態のフロー図である。この実施形態において、初期索引は、占有率に基づいて低値に設定され、ステージ・アクティビティ因子のテストされた組み合わせに基づいてインクリメントされる。合計占有率が９０％を上回る場合、プロセッサは、索引を最大索引に設定して終了する（７００）。デバイス占有率が１０％を下回る場合、プロセッサは、索引をゼロに設定して終了する（７０２）。他の場合には、プロセッサは、現在のデバイス占有率対最大デバイス占有率の比と索引の数との積と等しくなるように、初期索引を設定する（７０４）。デバイス・アダプタにおける使用帯域幅が７０％を下回る場合、プロセッサは、索引を、ストレージ・デバイスがＨＤＤである場合にはプラス２だけインクリメントし、ストレージ・デバイスがＳＤＤである場合にはプラス４だけインクリメントする（７０６）。ストレージ・デバイスにおけるステージ・アクティビティが１０を下回り、デバイス・アダプタにおけるステージ・アクティビティが４０を下回る場合、プロセッサは、索引をプラス２だけインクリメントする（７０８）。閾値のパーセンテージ及び索引のインクリメント量は、代表的なものにすぎない。コンピューティング環境に応じて、他の閾値及びインクリメント、並びにステージ・アクティビティ因子の異なる組み合わせを用いることができる。索引が最大索引を上回る場合、プロセッサは、最大索引と等しくなるように索引を設定する（７１０）。プロセッサは、索引を用いて、テーブルから調整されたデステージ速度を抽出する（７１２）。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージする（７１４）。
【００４２】
図８及び図９は、ステージ・アクティビティに部分的に基づいたキャッシング技術の動的管理を用いた場合と用いない場合のキャッシング技術の性能を比較するプロットである。基準手法（baseline approach）はＮＶＳ占有率のみに基づいてデステージ速度を管理し、一方、本発明の実施形態は、ＮＶＳ占有率をステージ・アクティビティと組み合わせる。図８は、ステージ・アクティビティを用いた場合（実線）８００及び用いない場合（破線）８０２の、１分当たりの平均応答時間（読み出し／書き込み）対ＤＢトランザクションの数をプロットしたものである。ユーザ数及びトランザクション／分が増加するにつれて、ＮＶＳ占有率とステージ・アクティビティを組み合わせたキャッシュ管理は、より良好な応答時間をもたらす。環境が過負荷状態となる「屈曲点」は右にシフトする。図９は、ステージ・アクティビティを用いた場合８０４と用いない場合８０６の、１分当たりの２８８，０００のユーザ、約３５，０００ＤＢトランザクションにおける、読み出しカウント・バケットの分布である。短い読み出しのパーセンテージは、２つの技術においてほぼ等しい。ステージ・アクティビティにおけるファクタリングは、少量ではあるが長い読み出しのパーセンテージを減らす。しかしながら、長い読み出しにおける僅かな改善でも、それらの長い読み出しのためのサービス時間における大きな改善をもたらす。この例においては、排除された３００ミリ秒を上回る０．１１％の読み出しにより、それらの読み出しによるサービス時間のパーセンテージが約４パーセントだけ減少した。
【００４３】
通常は読み出しキャッシュ・ミスの場合の読み出し応答時間とのみ関連しているステージ・アクティビティ因子を、ＮＶＳ占有率と組み合わせることによって、動的キャッシュ管理の技術が、異なるタイプの作業負荷（読み出し、書き込み、逐次的な、ランダムな）、異なるタイプのストレージ・デバイス、及び異なる速度にわたって、全体の読み出し／書き込み性能を向上させる。より具体的には、ステージ・アクティビティが許容するときにストレージ・デバイスへのデステージ速度を増加させることによって、書き込み応答時間が改善され、ステージ・アクティビティの要求時にデステージ速度を低下させることによって、スループットを犠牲にすることなく読み出し応答時間が改善される。
【００４４】
当業者であれば認識するように、本発明の態様は、システム、方法、又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又は、ソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に、「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログム製品の形を取ることができる。
【００４５】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限られるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のいずれかの適切な組み合わせが挙げられる。本明細書の文脈では、コンピュータ可読ストレージ媒体とは、命令実行システム、装置若しくはデバイスによって又はこれらと接続して用いるために、プログラムを収容又は格納することができるいずれかの有形媒体とすることができる。
【００４６】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限られるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。本発明の態様に関する動作を実行するためのプログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、ユーザのコンピュータ上で完全に実行される場合もあり、ユーザのコンピュータ上で部分的に実行される場合もあり、独立したソフトウェア・パッケージとして実行される場合もあり、ユーザのコンピュータ上で部分的に実行され、遠隔コンピュータ上で部分的に実行される場合もあり、又は遠隔コンピュータ若しくはサーバ上で完全に実行される場合もある。一番最後のシナリオの場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部のコンピュータへの接続がなされる場合もある（例えば、インタネット・サービス・プロバイダを用いたインターネットを通じて）。
【００４７】
本発明の態様は、本発明の実施形態による方法、装置（システム）、及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して、後述される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを生産し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を生成するようにすることができる。
【００４８】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードし、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実行させて、コンピュータ実施プロセスを生成し、それにより、コンピュータ又は他のプログラム可能データ処理装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００４９】
上記の図面におけるフローチャート及び／又はブロック図は、本発明の様々な実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能及び動作を示すものである。この点で、フローチャート又はブロック図における各々のブロックは、モジュール、セグメント又はコードの一部を表すことができ、これらは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む。幾つかの代替的な実装形態においては、ブロックに記された機能が図面に記された順序通りに行われない場合があることにも留意されたい。例えば、連続して示された２つのブロックが、実際には実質的に同時に実行されることがあり、これらのブロックが、関与する機能に応じて、ときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図における各々のブロック、並びにブロック図及び／又はフローチャート図におけるブロックの組み合わせは、指定された機能若しくは動作を行う専用ハードウェア・ベースのシステム又は専用のハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意されたい。
【００５０】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図するものではない。本明細書で用いられるとき、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、そうでないことが示されていない限り、複数形も含むことが意図されている。本明細書で用いられるとき、「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、提示された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を特定するものであるが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらのグループの存在又は追加を排除するものではないことがさらに理解されるであろう。
【００５１】
特許請求の範囲における全ての「手段又はステップと機能との組合せ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作及び均等物は、その機能を、明確に特許請求されているように他の特許請求された要素と組み合わせて実行するための、いかなる構造、材料又は動作をも含むことが意図される。本発明の説明は、例示及び説明の目的で提示されたものであるが、網羅的であることを意図するものではなく、本発明を開示された形態に限定することを意図するものでもない。本発明の範囲及び精神から逸脱することのない多くの変更及び変形が、当業者には明らかであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するため、及び、当業者が本発明を種々の変更を有する種々の実施形態について企図される特定の使用に適したものとして理解することを可能にするために、選択及び記載された。
【符号の説明】
【００５２】
１００：ストレージ・システム
１０２：ストレージ・エリア・ネットワーク（ＳＡＮ）
１０４：ストレージ・コントローラ
１０６：スイッチ
１０８、１０８ａ、１０８ｂ、１０８ｃ、１０８ｄ、１０８ｅ：ストレージ・デバイス
１１０、１１０ａ、１１０ｂ：サーバ
１１２：ホスト・アダプタ
１１３：デバイス・アダプタ
１１４：プロセッサ
１１６：メモリ
１１８：キャッシュ
１２０：不揮発性ストレージ（ＮＶＳ）
３００：データ
３０２ａ、３０２ｂ、３０２ｃ、３０２ｄ、３０２ｅ：ＮＶＳの部分
４００：ストレージ・デバイスのステージ・アクティビティ
４０２：デバイス・アダプタのステージ・アクティビティ
４０４：デバイス・アダプタの使用帯域幅
４０６：ストレージ・デバイスの読み出し／書き込み速度
５００：デステージ速度の索引付きテーブル
５０２：名目値
５０４：最大値
５０６：最小値
【図１】
2013511081.tif 000003
【図２】
2013511081.tif 000004
【図３】
2013511081.tif 000005
【図４】
2013511081.tif 000006
【図５】
2013511081.tif 000007
【図６】
2013511081.tif 000008
【図７】
2013511081.tif 000009
【図８】
2013511081.tif 000010
【図９】
2013511081.tif 000011
【手続補正書】
【提出日】平成24年5月11日(2012.5.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイス・アダプタを介して、データをキャッシュ及び不揮発性ストレージ（ＮＶＳ）から複数のストレージ・デバイスの各々にデステージする方法であって、
前記ストレージ・デバイスの各々に関連した前記ＮＶＳの現在のストレージ占有率に応じて、キャッシュからのデータのデステージ速度を適応変化させるステップと、
前記ストレージ・デバイスに関連した現在のステージ・アクティビティに応じて前記デステージ速度を適応調整するステップであって、前記調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる、前記デステージ速度を適応調整するステップと、
データを前記調整されたデステージ速度でキャッシュから前記ストレージ・デバイスにデステージし、前記ＮＶＳから前記デステージされたデータを破棄するステップと、
を含む方法。
【請求項２】
前記デステージ速度は、各々の前記ストレージ・デバイスに関連した前記ＮＶＳのデバイス占有率が前記ＮＶＳの最大デバイス占有率を上回らないという制約を条件として、前記ＮＶＳの所望の合計占有率を維持するように適応変化され、全ての前記ストレージ・デバイスへの、前記ＮＶＳ内の使用可能スペースの合計最大割り当ては、前記ＮＶＳ内の使用可能スペースの１００パーセントを上回る、請求項１に記載の方法。
【請求項３】
前記デステージ速度は、
前記ＮＶＳの前記合計占有率が最大合計占有率を上回る場合、前記デステージ速度を最大速度に設定し、
前記ＮＶＳの前記デバイス占有率が最小デバイス占有率を下回る場合、前記デステージ速度を最小速度に設定し、
他の場合には、前記ストレージ・デバイスに関する前記現在のデバイス占有率対前記最大デバイス占有率の比に基づいて前記デステージ速度を設定する、
ことによって適応変化される、請求項２に記載の方法。
【請求項４】
前記デステージ速度は、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅のうちの少なくとも１つを含む現在のステージ・アクティビティに応じて適応調整される、請求項１から３までのいずれか１項に記載の方法。
【請求項５】
前記デステージ速度は、前記ストレージ・デバイスの読み出し／書き込み速度に応じて適応調整される、請求項４に記載の方法。
【請求項６】
前記デステージ速度は、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及び前記ストレージ・デバイスの読み出し／書き込み速度の各々を含む現在のステージ・アクティビティに応じて適応調整される、請求項１に記載の方法。
【請求項７】
前記デステージ速度は、平均して前記ＮＶＳの前記合計占有率を所望の占有率に維持して、前記複数のストレージ・デバイスへのデータ・スループットを増大させるように適応変化され、かつ、ホスト読み出し及び書き込み応答時間を短縮するように適応調整される、請求項１に記載の方法。
【請求項８】
デステージ速度の索引付きテーブルを準備するステップであって、
前記デステージ速度を適応変化させるステップは、前記ストレージ・デバイスに関連した前記ＮＶＳの前記現在のデバイス占有率に基づいて初期索引を計算するステップを含み、
前記デステージ速度を適応調整するステップは、前記ストレージ・デバイスに関連した前記現在のステージ・アクティビティに応じて前記初期索引をインクリメント又はデクリメントするステップを含む、
前記準備するステップと、
前記調整された索引に従って、前記テーブルから前記調整されたデステージ速度を読み出すステップと、
をさらに含む、請求項１から請求項４までのいずれか１項に記載の方法。
【請求項９】
平均して前記ＮＶＳの合計占有率を所望の合計占有率に維持して、前記複数のストレージ・デバイスへのスループットを増大させ、かつ、読み出し及び書き込み応答時間を短縮するように、前記現在のステージ・アクティビティ及び前記索引付きテーブル内のデステージ速度に応じて、前記初期索引のインクリメント又はデクリメントを選択するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
デバイス・アダプタを介して、データをキャッシュ及び不揮発性ストレージ（ＮＶＳ）から複数のストレージ・デバイスにデステージするためのシステムであって、
前記キャッシュ及び前記ＮＶＳ、並びに前記複数のストレージ・デバイスと通信し、請求項１から請求項９までのいずれか１項に記載の方法を実行するように適合される、少なくとも１つのプロセッサを含むシステム
【請求項１１】
デバイス・アダプタを介して、データをキャッシュ及び不揮発性ストレージ（ＮＶＳ）から複数のストレージ・デバイスにデステージするのを容易にするためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータ可読プログラム・コード部分を含み、前記コンピュータ可読プログラム・コード部分は、コンピュータによって実行されるとき、前記コンピュータに、請求項１から請求項９までのいずれか１項に記載の方法のステップを実行させる、前記コンピュータ・プログラム。
【手続補正書】
【提出日】平成24年10月30日(2012.10.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法であって、
前記各ストレージ・デバイスに関連する不揮発性ストレージ（ＮＶＳ）の現在のデバイス占有率に応じて、前記キャッシュからのデータのデステージ速度を適応変化させるステップと、
少なくとも前記各ストレージ・デバイス上の現在のステージ要求の数を含む、前記各ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて前記デステージ速度を適応調整するステップとを有し、
前記調整されたデステージ速度は、前記現在のステージ・アクティビティが低い場合には相対的に高くなり、前記現在のステージ・アクティビティが高い場合には相対的に低くなり、
データを前記調整されたデステージ速度で前記キャッシュから前記各ストレージ・デバイスにデステージし、前記ＮＶＳから前記デステージされたデータを破棄するステップをさらに有する、方法。
【請求項２】
前記デステージ速度は、前記各ストレージ・デバイスに関連する前記ＮＶＳのデバイス占有率が前記ＮＶＳの最大デバイス占有率を上回らないという制約を条件として、前記ＮＶＳの所望の合計占有率を維持するように適応変化され、全ての前記ストレージ・デバイスへの、前記ＮＶＳ内の使用可能スペースの合計最大割り当ては、前記ＮＶＳ内の使用可能スペースの１００パーセントを上回る、請求項１に記載の方法。
【請求項３】
前記デステージ速度は、
前記ＮＶＳの前記合計占有率が最大合計占有率を上回る場合、前記デステージ速度を最大速度に設定し、
前記ＮＶＳの前記デバイス占有率が最小デバイス占有率を下回る場合、前記デステージ速度を最小速度に設定し、
他の場合には、前記各ストレージ・デバイスに関する前記現在のデバイス占有率対前記最大デバイス占有率の比に基づいて前記デステージ速度を設定する、
ことによって適応変化される、請求項２に記載の方法。
【請求項４】
前記デステージ速度は、前記デバイス・アダプタ上の現在のステージ要求の数、前記デバイス・アダプタの使用帯域幅及び前記各ストレージ・デバイスの読み出し／書き込み速度のうちの少なくとも１つをさらに含む前記現在のステージ・アクティビティに応じて適応調整される、請求項１ないし請求項３のいずれか１項に記載の方法。
【請求項５】
前記デステージ速度は、前記デバイス・アダプタ上の現在のステージ要求の数、前記デバイス・アダプタの使用帯域幅及び前記各ストレージ・デバイスの読み出し／書き込み速度の各々をさらに含む前記現在のステージ・アクティビティに応じて適応調整される、請求項１に記載の方法。
【請求項６】
デステージ速度の索引付きテーブルを準備するステップをさらに有し、
前記デステージ速度を適応変化させるステップは、前記各ストレージ・デバイスに関連する前記ＮＶＳの前記現在のデバイス占有率に基づいて初期索引を計算するステップを含み、
前記デステージ速度を適応調整するステップは、前記各ストレージ・デバイスに関連する前記現在のステージ・アクティビティに応じて前記初期索引をインクリメント又はデクリメントするステップを含み、
前記調整された索引に従って、前記テーブルから前記調整されたデステージ速度を読み出すステップをさらに有する、請求項１ないし請求項４のいずれか１項に記載の方法。
【請求項７】
デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするためのシステムであって、
前記キャッシュ及び不揮発性ストレージ（ＮＶＳ）、並びに前記複数のストレージ・デバイスと通信し、請求項１ないし請求項６のいずれか１項に記載の方法を実行するように適合される、少なくとも１つのプロセッサを備えるシステム
【請求項８】
請求項１ないし請求項６のいずれか１項に記載の方法をコンピュータに実行させるためのコンピュータ・プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに関し、より具体的には、ストレージ・コントローラにおけるデステージ・タスクの管理に関する。
【背景技術】
【０００２】
Ｉｎｔｅｒｎａｔｉｏｎａｌ  ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏ  ｒｐｏｒａｔｉｏｎ（ＩＢＭ（登録商標））のＥｎｔｅｒｐｒｉｓｅ  Ｓｔｏ  ｒａｇｅ  Ｓｅｒｖｅｒのようなハイエンド・ストレージ・コントローラは、ネットワーク化されたホストから、直接アクセス・ストレージ・デバイス（direct access storage device、ＤＡＳＤ）、独立ディスク冗長アレイ（Redundant Array of Independent Disks）（ＲＡＩＤアレイ）、及び単純ディスク束（Just a Bunch of Disks、ＪＢＯＤ）などのストレージ・デバイスのプールへの入力／出力（Ｉ／Ｏ）要求を管理する。ストレージ・コントローラは、ネットワーク上で１つ又は複数のホストと通信するための１つ又は複数のホスト・バス・アダプタ（ＨＢＡ）カードと、ストレージ・デバイスと通信するためのデバイス・アダプタ（ＤＡ）とを含む。ストレージ・コントローラはまた、キャッシュ・メモリと、バッテリ・バックアップ式ランダム・アクセス・メモリで構成され得る不揮発性ストレージ・デバイス（non-volatile storage device、ＮＶＳ）とを含む。
【０００３】
キャッシングは、Ｉ／Ｏ遅延（1atency）を隠蔽する際の基本的な技術であり、ストレージ・コントローラ、ファイル・システム、及びオペレーティング・システムにおいて広く用いられている。Ｓｔｏｒａｇｅ  Ｎｅｔｗｏｒｋｉｎｇ  Ｉｎｄｕｓｔｒｙ  Ａｓｓｏｃｉａｔｉｏｎ（ＳＮＩＡ）は、キャッシュを「低速メモリ又はデバイスとの間でデータを読み書きするのに必要とされる有効時間を短縮するために用いられる高速メモリ又はストレージ・デバイス」と定義する。以下に、キャッシュ技術が、ストレージ・コントローラの文脈において論じられ、そこでは、高速であるが比較的高価なランダム・アクセス・メモリが、低速であるが比較的安価なディスク又はストレージ・デバイスのためのキャッシュとして用いられる。キャッシュ・メモリは、メモリからの読み出しデータ・アクセス要求を処理し、変更されたデータのバッファリングを提供するために外部ストレージからインページされた（ステージされた）データへの高速アクセスのために用いられる。書き込み要求は、キャッシュに書き込まれ、ＮＶＳ内にミラーリングされ、次いで外部ストレージ・デバイスに書き込まれる（デステージされる）。
【０００４】
読み出しキャッシュ（read cache）管理は、良く研究されている分野である。この文脈においては、多数のキャッシュ置換技術が存在し、例えば、ＬＲＵ、ＣＬＯＣＫ、ＦＢＲ、ＬＲＵ−２、２Ｑ、ＬＲＦＵ、ＬＩＲＳ、ＭＱ、ＡＲＣ、及びＣＡＲを参照されたい。
【０００５】
書き込みキャッシュ（write cache）管理は、発展途上の分野である。ＮＶＳは、高速書き込みを可能にするために導入されたものである。一般に、ＮＶＳがない場合、一貫性、正確さ、耐久性、及び持続性を確実にするために、あらゆるデータ書き込みをストレージ・デバイスに直接、同期式に書き込む（デステージする）必要がある。さもなければ、サーバの故障によりキャッシュが失われ、データの損失を招く可能性がある。一般に、ホスト書き込みの速度はストレージ・デバイスの速度を上回るので、ＮＶＳがなければ、データ転送が妨げられる。ＮＶＳは、キャッシュへの高速書き込みを可能にし、これらの書き込みは、ＮＶＳにミラーリングされ、外部ストレージ・デバイスに転送するまでＮＶＳ内に安全に格納される。データは、後でキャッシュから非同期式にデステージされ（そして、ＮＶＳから破棄され）、従って、ストレージ・デバイスの書き込み遅延を隠蔽する。キャッシュ及びＮＶＳは、典型的には、複数のストレージ・デバイスを対象とした更新を格納する。書き込みに対する低遅延の継続を保証するために、典型的には、ＮＶＳ内のデータを排出して（drain）、常に入ってくる書き込みのための幾らかの空きスペースがあることを確実にする必要があり、さもなければ、以後の書き込みが事実上同期式になり、そのことはホスト書き込みのための応答時間に悪影響を及ぼすことがある。一方、書き込みがあまりにも積極的に排出される場合、典型的にはＮＶＳの平均使用量が少なくなるので、一般に、書き込みキャッシングの利点を十分に生かすことができない。キャッシュはＮＶＳよりも安価で遥かに大きいので、ＮＶＳは、書き込みデータをデステージする際のボトルネックとなる。
【０００６】
幾つかのデステージング技術は、線形閾値化（1inear thresholding）スキームを用いて、特定のストレージ・デバイスに関連するＮＶＳのデバイス占有率を制限することにより、単一のストレージ・デバイスの故障が全てのデバイスに影響を及ぼすのを防止する。他の技術は、ＮＶＳの合計占有率及び各ストレージ・デバイスに関連するデバイス占有率に基づいて、ストレージ・デバイスへのデステージ速度を動的に変化させる。新しい書き込みの速度に関係なく全速力で書き込むことは、一般に、性能上理想的なことではなく、これにより、ストレージ・コントローラから得ることができる最大書き込みスループット（throughput）が低下する。望ましい動作は、ＮＶＳを満杯にすることなくＮＶＳが大きく占有された状態を保持しながら、単に、入ってくる書き込みロード（即ち、書き込み要求）に遅れずについていくことである。ＮＶＳのデバイス占有率が高いほど、書き込みキャッシュがより効率的になる。というのは、かかる状況では、ＮＶＳは同じ論理アドレスへのより多くの書き込みを吸収することができ、従って、ストレージ・デバイスへのデータのスループットがより効率的になるからである。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、ストレージ・コントローラにおけるデステージ・タスクの動的管理の方法、システム、及びコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００８】
上記のことを考慮して、１つ又は複数のプロセッサにより、デバイス・アダプタを介して書き込みキャッシュからストレージ・デバイスのプールへのデータ転送を容易にするための方法、システム、及びコンピュータ・プログラムが提供される。プロセッサは、特定のストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率及びそのストレージ・デバイスに関連するステージ・アクティビティ（stage activity）に基づいて、デステージ速度を適応変化させる。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。これらの因子は、一般に、キャッシュ・ミスの場合に読み出し応答時間と関連し、通常、デステージ速度の動的管理とは関連しない。この組み合わせは、ＮＶＳの所望の合計占有率を維持すると同時に、読み出し及び書き込み応答時間性能を向上させる。この手法は、異なるタイプの作業負荷（読み出し、書き込み、逐次的な、ランダムな）、異なるタイプのストレージ・デバイス、及び異なるデバイス速度にわたって、全体の読み出し及び書き込み性能を向上させる。
【０００９】
本発明の一実施形態によると、各ストレージ・デバイスについて、プロセッサは、特定のストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率に応じて、キャッシュからのデータのデステージ速度を適応変化させる。プロセッサは、ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、デステージ速度を適応調整する。現在のステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージし、ＮＶＳからそのデータを破棄する。
【００１０】
プロセッサは、特定のストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率及びそのストレージ・デバイスに関連するステージ・アクティビティに基づいて、デステージ速度を適応変化させ、ＮＶＳの所望の合計占有率及びストレージ・デバイスへのスループットを、維持すると同時に、読み出し及び書き込み応答時間を改善することができる。スループットは、ホストからキャッシュ／ストレージまで測定され、これはキャッシュからストレージへのスループットに依存する。読み出し／書き込み時間は、ホストの観点から測定される。
【００１１】
プロセッサは、ＮＶＳの合計占有率が高閾値（最大合計占有率）を上回る場合にはデステージ速度を最大値に設定することができ、ＮＶＳのデバイス占有率が低閾値（最小デバイス占有率）を下回る場合にはデステージ速度を最小値に設定することができる。これらの閾値は固定されてもよく、又は作業負荷によって変化してもよい。あらゆる単一ストレージ・デバイスに関連するＮＶＳのデバイス占有率を、最大デバイス占有率に制限するように、プロセッサを構成することができる。
【００１２】
プロセッサは、デステージ速度の索引付きテーブルを備えることができる。プロセッサは、ストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率に基づいて、初期索引を計算し、そのストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、初期索引をインクリメント又はデクリメントすることができる。プロセッサは、索引付きテーブルから調整されたデステージ速度を読み出す。
【００１３】
本発明の別の実施形態によると、各ストレージ・デバイスについて、プロセッサは、ＮＶＳの所望の合計占有率を維持し、複数のストレージ・デバイスへの書き込みスループットを増加させるように、キャッシュからのデータのデステージ速度を適応変化させる。プロセッサは、各ストレージ・デバイスに関連するＮＶＳのデバイス占有率を、最大デバイス占有率を上回らないように制限するように構成される。全てのストレージ・デバイスに対するＮＶＳ内の使用可能スペースの合計最大割り当ては、ＮＶＳ内の使用可能スペースの１００パーセントを超える。プロセッサは、ＮＶＳの合計占有率が最大合計占有率を上回る場合にはデステージ速度を最大値に設定し、ＮＶＳのデバイス占有率が最小デバイス占有率を下回る場合にはデステージ速度を最小値に設定し、他の場合には、現在のデバイス占有率対最大デバイス占有率の比に基づいてデステージ速度を設定することにより、デステージ速度を適応変化させる。プロセッサは、少なくともストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅（場合によっては、デバイス・アダプタのステージ・アクティビティ、並びにストレージ・デバイスの読み出し／書き込み速度も同様に）を含む、ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、デステージ速度を適応調整して、読み出し及び書き込み応答時間を短縮する。調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージし、ＮＶＳからそのデータを破棄する。
【００１４】
プロセッサは、デステージ速度が最小索引に関する最小速度から最大索引に関する最大速度まで増加するデステージ速度の索引付きテーブルを備えることができる。プロセッサは、ストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率に基づいて初期索引を計算することによってデステージ速度を適応変化させ、ＮＶＳの合計占有率が最大合計占有率を上回る場合には、初期索引を最大索引に設定し、ＮＶＳのデバイス占有率が最小デバイス占有率を下回る場合には、初期索引を最小索引に設定し、他の場合には、現在のデバイス占有率対最大デバイス占有率の比に基づいて初期索引を設定する。プロセッサは、ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、初期索引をインクリメント又はデクリメントすることによって、デステージ速度を適応調整し、ストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅が相対的に高い場合には、索引をデクリメントし、或いは、ストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅が相対的に低い場合には、索引をインクリメントする。プロセッサは、調整された索引に従って、テーブルから調整されたデステージ速度を読み出す。            
【００１５】
関連するシステム及びコンピュータ・プログラムの実施形態も開示され、付加的な利点を与える。
【００１６】
ここで本発明の実施形態を、単なる例証として、添付の図面を参照しながら説明する。
【図面の簡単な説明】
【００１７】
【図１】本発明による装置及び方法を実装することができるストレージ・システムの一実施例を示す高レベルのブロック図である。
【図２】データをキャッシュからデステージする方法の実施形態を示す高レベルのフローチャートである。
【図３】複数のストレージ・デバイスに関連するＮＶＳのデバイス占有率を示す図である。
【図４】特定のストレージ・デバイスに関連するステージ・アクティビティを示す、ストレージ・システムの一部分の図である。
【図５】（ａ）及び（ｂ）は、ストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率及び現在のステージ・アクティビティの両方に基づいた、デステージ速度の動的管理を示すプロットである。
【図６】データをキャッシュからデステージする方法の一実施形態を示すフローチャートである。
【図７】データをキャッシュからデステージする方法の一実施形態を示すフローチャートである。
【図８】ストレージ・デバイスのステージ・アクティビティに従ったデステージ速度の動的管理を用いた場合と用いない場合の応答時間性能を比較するプロットである。
【図９】ストレージ・デバイスのステージ・アクティビティに従ったデステージ速度の動的管理を用いた場合と用いない場合の応答時間性能を比較するプロットである。
【発明を実施するための形態】
【００１８】
上記を鑑みて、プロセッサ又は複数プロセッサにより、デバイス・アダプタを介して書き込みキャッシュからストレージ・デバイスのプールへのデータ転送を容易にするための種々の方法、システム、及びコンピュータ・プログラムの実施形態が提供される。プロセッサは、特定のストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率及びそのストレージ・デバイスに関連するステージ・アクティビティに基づいて、デステージ速度を適応変化させる。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。これらの因子は、一般に、キャッシュ・ミスの場合の読み出し応答時間と関連し、通常、デステージ速度の動的管理とは関連しない。この組み合わせは、ＮＶＳの所望の合計占有率及びストレージ・デバイスへのスループットを維持すると同時に、読み出し／書き込み応答時間を改善する。スループットは、ホストからキャッシュ／ストレージまで測定され、これはキャッシュからストレージへのスループットに依存する。読み出し／書き込み時間は、ホストの観点から測定される。この手法は、異なるタイプの作業負荷（読み出し、書き込み、逐次的な、ランダム）、異なるタイプのストレージ・デバイス、及び異なるデバイス速度にわたって、全体の読み出し及び書き込み性能を向上させる。
【００１９】
コンピュータ・ネットワーク・アーキテクチャは、ネットワークによって相互接続された１つ又は複数のコンピュータを含むことができる。ネットワークは、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、イントラネット等を含むことができる。特定の実施形態において、コンピュータは、クライアント・コンピュータ及びサーバ・コンピュータの両方を含むことができる。一般に、クライアント・コンピュータは通信セッションを開始できるのに対して、サーバ・コンピュータはクライアント・コンピュータからの要求を待つことができる。特定の実施形態において、コンピュータ及び／又はサーバは、１つ又は複数の内部又は外部の直接接続型（direct-attached）ストレージ・デバイス（例えば、ハードディスク・ドライブ、ソリッドステート・ドライブ、テープ・ドライブなど）に接続することができる。これらのコンピュータ及び直接接続型ストレージ・デバイスは、ＡＴＡ、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、ファイバ・チャネル等のようなプロトコルを用いて通信することができる。コンピュータの一部又は全ては、ストレージ・デバイスから取り出されたデータを格納するためのキャッシュを含むことができる。
【００２０】
コンピュータ・ネットワーク・アーキテクチャは、特定の実施形態において、サーバの背後に、ストレージ・エリア・ネットワーク（ＳＡＮ）又はＬＡＮ（例えば、ネットワーク接続型（network-attached）ストレージを用いるとき）のようなストレージ・ネットワークを含む。このネットワークは、サーバを、別個のハードディスク・ドライブ又はソリッドステート・ドライブ、ハードディスク・ドライブ又はソリッドステート・ドライブのアレイ、テープ・ドライブ、テープ・ライブラリ、ＣＤ−ＲＯＭライブラリ等のような１つ又は複数のストレージ・システムに接続することができる。ネットワークがＳＡＮである場合、サーバ及びストレージ・システムは、ファイバ・チャネル（ＦＣ）のようなネットワーク化標準を用いて通信することができる。
【００２１】
図１は、ＳＡＮｌＯ２に接続されたストレージ・システム１００の一実施形態を示す。ストレージ・システム１００は、ＲＡＩＤアレイのようなハードディスク・ドライブ（ＨＤＤ）及び／又はソリッドステート・ドライブ（ＳＤＤ）のアレイを含む。特定の実施形態において、デステージング技術は、こうしたストレージ・システム１００内で実装することができるので、ストレージ・システム１００の内部コンポーネントが示されるが、それらは、他のストレージ・システム１００にも適用可能である。図示したように、ストレージ・システム１００は、ストレージ・コントローラ１０４、１つ又は複数のスイッチ１０６、及びハードディスク・ドライブ１０８又はソリッドステート・ドライブ１０８のような１つ又は複数のストレージ・デバイス１０８を含む。ストレージ・コントローラ１０４は、１つ又は複数のホスト（例えば、オープン・システム及び／又はメインフレーム・サーバ）が１つ又は複数のストレージ・デバイス１０８内のデータにアクセスするのを可能にする。
【００２２】
選択された実施形態において、ストレージ・コントローラ１０４は、１つ又は複数のサーバ１１０を含む。ストレージ・コントローラ１０４はまた、それぞれホスト・デバイス及びストレージ・デバイス１０８に接続するためのホスト・アダプタ１１２及びデバイス・アダプタ１１３を含むこともできる。複数のサーバ１１０ａ、１１０ｂは、データが接続されたホストに対して常に利用可能であることを確実にするために、冗長性をもたらすことができる。従って、１つのサーバ１１０ａが故障しても、他のサーバ１１０ｂは機能できるままであり、Ｉ／Ｏは、ホストとストレージ・デバイス１０８との間で継続可能であることを保証する。このプロセスは「フェイルオーバー（failover）」と呼ぶことができる。
【００２３】
図１に示されるものと類似したアーキテクチャを有するストレージ・コントローラ１０４の一例が、ＩＢＭ  ＤＳ８０００（商標）エンタープライズ・ストレージ・システムである。ＤＳ８０００（商標）は、連続動作をサポートするように設計されたディスク・ストレージを提供する、高性能大容量ストレージ・コントローラである。ＤＳ８０００（商標）シリーズのモデルは、ＩＢＭのＰＯＷＥＲ５（商標）サーバ１１０ａ、１１０ｂを使用することができ、ＩＢＭの仮想化エンジン技術と統合することができる。しかしながら、本明細書で開示されるキャッシング装置及び方法は、ＩＢＭ  ＤＳ８０００（商標）エンタープライズ・ストレージ・システム１００に限定されるものではなく、製造業者、製品名、又はシステムに関連するコンポーネント若しくはコンポーネント名に関係なく、同等の又は類似のストレージ・システムにおいて実装することができる。さらに、本発明の１つ又は複数の実施形態から恩恵を受けることができるいずれのシステムも本発明の範囲内に入るものと見なされる。従って、ＩＢＭ  ＤＳ８０００（商標）は、一例として提示したものにすぎず、限定することを意図したものではない。
【００２４】
選択された実施形態において、各サーバ１１０は、１つ又は複数のプロセッサ１１４（例えば、ｎウェイ（n-way）対称型マルチプロセッサ）と、メモリ１１６とを含むことができる。メモリ１１６は、揮発性メモリ（例えば、ＲＡＭ）、及び不揮発性メモリ（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ハードディスク、フラッシュメモリ等）を含むことができる。揮発性メモリ及び不揮発性メモリは、特定の実施形態においては、プロセッサ１１４上で実行され、ストレージ・デバイス１０８内のデータにアクセスするために用いられるソフトウェア・モジュールを格納することができる。サーバ１１０は、これらのソフトウェア・モジュールの少なくとも１つのインスタンスをホストすることができる。これらのソフトウェア・モジュールは、ストレージ・デバイス１０８内の論理ボリュームへの全ての読み出し及び書き込み要求を管理することができる。
【００２５】
メモリ１１６は、揮発性キャッシュ１１８を含む。ホスト（例えば、オープン・システム又はメインフレーム・サーバ）が読み出し動作を実行するたびに、サーバ１１０は、ストレージ・デバイス１０８からデータをフェッチし、そのデータが再度要求された場合にデータをキャッシュ１１８内に保存する。データがホストによって再度要求される場合、サーバ１１０は、そのデータを、ストレージ・デバイス１０８からフェッチする代わりに、キャッシュ１１８からフェッチすることができ、時間及びリソースの両方を節約する。これは、キャッシュ・ヒットと呼ばれる。
【００２６】
キャッシュ・ミス（トラックが現在キャッシュ内に存在しない）であるホスト読み出しの場合、ホスト読み出しが切断され、データはストレージ・デバイスからキャッシュにステージされ、次いでホスト読み出しが再接続され、データがキャッシュからホストに読み出される。データをストレージ・デバイスからキャッシュにステージするのにかかる時間は、ストレージ・デバイスを構成するドライブ（ＨＤＤ、ＳＤＤ）の読み出し／書き込み速度、各デバイス・アダプタに構成されたストレージ・デバイスの数、各デバイス・アダプタに構成されたストレージ・デバイスのタイプの混合、デバイス・アダプタの全使用帯域幅（ステージ及びデステージ・タスク）、並びにストレージ・デバイス及びデバイス・アダプタに課せられるステージ及びデステージ・タスクの現在の数を含む幾つかの因子に応じて、大きく変化し得る。一実施形態において、各ストレージ・デバイスは、ＲＡＩＤであり、これは「ランク（rank）」と呼ぶことができる。ＲＡＩＤは、例えば、１、５、６、１０などの多数のタイプと、例えば、７ｋ、１０ｋ、１５ｋ及びＳＤＤなどの異なるディスクＲＰＭ速度とを有する。読み出し応答時間は、キャッシュ・ミスの可能性、及びキャッシュ・ミスの場合に、データをストレージ・デバイスからキャッシュにステージするのにかかる時間によって、部分的に決定される。
【００２７】
メモリ１１６はまた、不揮発性ストレージ（ＮＶＳ）１２０を含む。ホストが書き込み動作を実行するとき、サーバ１１０は、ホスト書き込みが完了したと考えられる時点で、データをキャッシュ１１８及びＮＶＳ１２０の両方に書き込む。後の時点で、サーバは、データをキャッシュ１１８からストレージ・デバイスにデステージし、ＮＶＳ１２０からデータを破棄する（データのバッテリ・バックアップ・コピーはもはや必要とされないので）。データは、一般に、ＮＶＳを満杯にすることなくＮＶＳが大きく占有された状態を保持しながら、入ってくる書き込みロード（即ち、書き込み要求）に遅れずについていくのに十分な速度でデステージされる。ＮＶＳが満杯になった場合、キャッシュ書き込みミスの可能性が増大する。ＮＶＳのデバイス占有率が高いほど、書き込みキャッシュがより効率的になる。というのは、かかる状況では、ＮＶＳは同じ論理アドレスへのより多くの書き込みを吸収することができ、従って、ストレージ・デバイスへのデータのスループットがより効率的になるからである。
【００２８】
プロセッサ１１４は、ソフトウェア・モジュールを実行して、ストレージ・コントローラにおけるデステージ・タスクを動的に管理するように、より具体的には、そのストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率及びストレージ・デバイスに関連するステージ・アクティビティの両方に応じて、ストレージ・デバイスに関するデステージ速度を適合させるように構成される。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。ストレージ・デバイスのステージ・アクティビティのファクタリング（factoring）は、スループット・レベルを保持しながら、読み出し／書き込み応答時間を改善する。より具体的には、ホストの書き込み応答時間は、条件が許せば、ＮＶＳを積極的に空にすることによって改善することができ、読み出し応答時間は、条件が要求するときに、ＮＶＳを控えめに（conservatively）空にすることによって改善することができる。
【００２９】
ここで図２を参照すると、デステージ・タスクの動的管理の方法は、各ストレージ・デバイスについて、プロセッサが、そのストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率に従って、キャッシュからのデータのデステージ速度を適応変化させること（２００）を含む。プロセッサは、そのストレージ・デバイスに関連する現在のステージ・アクティビティに従って、デステージ速度を適応調整する（２０２）。現在のステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びそのストレージ・デバイスの読み出し／書き込み速度のうちの１つ又は複数を含む。調整されたデステージ速度は、ステージ・アクティビティが低い場合は相対的に高くなり、ステージ・アクティビティが高い場合は相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからそのストレージ・デバイスにデステージし（２０４）、ＮＶＳからデータを破棄する。
【００３０】
現在のデバイス占有率及びステージ・アクティビティの関数としてのデステージ速度は、所与のコンピューティング環境における全体の読み出し／書き込み性能を最適にするように適切に選択される。より具体的には、デステージ速度は、平均読み出し及び書き込み応答時間を短縮しながら、高スループットを保持するように選択される。デバイス占有率の関数としての初期デステージ速度は、高い、低い、又は名目デステージ速度に設定することができ、現在のステージ・アクティビティの関数として上方に、下方に、又は上下に調整することができる。デステージ速度は、式として又はテーブルの形で与えることができる。一実施形態において詳述されるように、デバイス占有率及びステージ・アクティビティを用いて、デステージ速度のテーブルへの索引を計算し、調整することができる。
【００３１】
図３は、ＮＶＳの部分３０２ａ〜３０２ｅ内に、それぞれストレージ・デバイス１０８ａ〜１０８ｅのプールに関するホスト書き込みのためのデータ３００を格納する、ＮＶＳ１２０の一実施形態を示す。各ストレージ・デバイスは、ＮＶＳ１２０内に、そのストレージ・デバイスに関連する現在のデバイス占有率を有する。一般に、現在のデバイス占有率が大きいほど、そのストレージ・デバイスに関する、ＮＶＳを空にするためのデステージ速度が高くなる。
【００３２】
いずれか１つのストレージ・デバイスの現在のデバイス占有率は、無制約（ＮＶＳの１００％を占めることが許容される）にしてもよく、又は最大デバイス占有率（例えば、２５％）を上回らないように強制してもよい。後者の技術は、ＮＶＳの一部分を各ストレージ・デバイスに割り当てることを保証し、その結果、１つのストレージ・デバイスの故障又は処理の遅延が生じた場合でも、他のストレージ・デバイスに対する更新がＮＶＳ内にキャッシュされなくなるという状況を回避することができる。最大デバイス占有率は、幾つかのストレージ・デバイスの間で一様であってもなくてもよく、固定されていてもいなくてもよい。例えば、最大デバイス占有率は、複数のストレージ・デバイスのストレージ容量の加重平均として、又は複数のストレージ・デバイス上のバックグランド処理の加重平均として計算することができる。最大デバイス占有率は、全てのストレージ・デバイスへのＮＶＳ内の使用可能スペースの合計最大割り当てが、ＮＶＳ内の使用可能スペースの１００％を上回るように確立することができる。例えば、５個のストレージ・デバイスの各々に最大デバイス占有率が割り当てられた場合、合計最大割り当ては１２５％となる。これは、ストレージ・デバイスの一部が、常にその最大デバイス占有率を使用しているわけではないという統計的仮定に基づいている。最大デバイス占有率が指定された場合、デステージ速度は、その最大デバイス占有率に対する現在のデバイス占有率に基づいて適切に変化される。
【００３３】
プロセッサは、デステージ速度を適応変化させるために、他の占有パラメータを考慮することができる。ＮＶＳの合計占有率が最大合計占有率を上回る場合、プロセッサは、デステージ速度を最大値に設定することができる。このテストは、ＮＶＳが満杯であり、一般に回避されるべき書き込みキャッシュ・ミスを引き起こし得ることのインジケータとなる。従って、プロセッサは、全てのストレージ・デバイスに関するデステージ速度をその最大値に設定して、所望の合計占有率に戻るようにＮＶＳを排出する。例えば、ＮＶＳの所望の合計占有率が９０％であり、そしてＮＶＳの実際の合計占有率が９５％を上回る場合には、プロセッサは、最高速度でデステージすることができる。ＮＶＳのデバイス占有率が最小デバイス占有率を下回る場合、プロセッサは、そのストレージ・デバイスに関するデステージ速度を最小値（例えば、ゼロ）に設定することができる。このテストは、ＮＶＳが特定のストレージ・デバイスに関して、ストレージ・デバイスへのスループット効率を低下させる、空きすぎ状態であることのインジケータとなる。例えば、特定のストレージ・デバイスに関連するデバイス占有率が１０％より下に下がると、プロセスは、そのストレージ・デバイスへのデータのデステージングを一時停止することができる。最大合計占有率は、固定してもしなくてもよい。例えば、最大合計占有率は作業負荷と共に変化し得る。最小デバイス占有率は固定してもしなくてもよく、複数のストレージ・デバイスにわたって一様であってもなくてもよい。
【００３４】
図４は、ストレージ・デバイスに関連する種々のステージ・アクティビティ因子（activity factor）を示すための、デバイス・アダプタ１１３、スイッチ１０６、並びにストレージ・デバイス１０８ａ〜１０８ｃを含むストレージ・システム１００の一部分を示す。第１のステージ・アクティビティ因子は、ストレージ・デバイスのステージ・アクティビティ４００である。この因子は、ストレージ・デバイスからの現在のステージ（読み出し）アクティビティの尺度である。第２のステージ・アクティビティ因子は、デバイス・アダプタのステージ・アクティビティ４０２である。この因子は、全てのストレージ・デバイスからのデバイス・アダプタによる現在のステージ（読み出し）アクティビティの尺度である。第３のステージ・アクティビティ因子は、デバイス・アダプタの使用帯域幅４０４である。この因子は、全てのストレージ・デバイスとの間のデバイス・アダプタによる現在のステージ（読み出し）及びデステージ（書き込み）アクティビティの尺度である。第４のステージ・アクティビティ因子は、ストレージ・デバイスの読み出し／書き込み速度４０６である。この因子は、ストレージ・デバイスが、どれだけ速くデータを読み出し／書き込みできるかの尺度である。
【００３５】
前述のように、これらの因子は一般に、読み出しキャッシュ・ミスの場合の読み出し応答時間に関連する。これらの因子は、通常、データのデステージングとは関連せず、具体的には、デステージ速度を適応調整するためには用いられない。ストレージ・デバイスのステージ・アクティビティにおけるファクタリングは、スループットのレベルを維持しながら、読み出し／書き込み応答時間を改善する。より具体的には、ホスト書き込み応答時間は、条件が許せば、ＮＶＳを積極的に空にすることによって改善することができ、読み出し応答時間は、条件が要求するときに、ＮＶＳを控えめに空にすることによって改善することができる。この技術は、書き込み又は読み出しキャッシュ・ミスの数を減らすのに特に有効である。僅かな減少でも全体の応答時間に多大な影響を及ぼす。
【００３６】
図５（ａ）及び図５（ｂ）は、現在のデバイス占有率及びステージ・アクティビティをデステージ速度に関連付けるための１つの実施形態の例証である。デステージ速度の索引付きテーブル５００が、メモリ内に格納される。デステージ速度は、最小の索引（例えば、ゼロ）に関する最小速度（例えば、ゼロ）から増大し、最大の索引（例えば、１３）に関する最大速度（例えば、６０）まで増大する。このテーブルは、所与のコンピューティング環境に関する式又は数値分折から適切に生成される。図示のように、デステージ速度は索引に対して非線形である。これは典型的ではあるが必須ではない。プロセッサは、現在のデバイス占有率に基づいて、初期索引を計算する。プロセッサは、ステージ・アクティビティ因子の１つ又は複数によって与えられるような現在のステージ・アクティビティに基づいて、初期索引を調整する。プロセッサは、調整された初期索引を用いて、テーブル５００から調整されたデステージ速度を読み出す。
【００３７】
この特定の実施形態において、初期索引は、ストレージ・デバイスに関連するＮＶＳの現在のデバイス占有率に基づいて、名目値５０２に設定される。プロセッサは、ステージ・アクティビティに基づいて、この名目値をインクリメント又はデクリメントする。ステージ・アクティビティが高い場合、デステージ速度を低下させて、ステージ・アクティビティに関するより多くのリソースを提供し、ステージ・アクティビティが低い場合、デステージ速度を増大させて、より迅速にＮＶＳを排出する。代替的に、プロセッサは、現在のデバイス占有率に基づいて、初期索引を高い（低い）値に設定し、ステージ・アクティビティに基づいて、デクリメント（インクリメント）のみを行うことができる。効果は同じである。ＮＶＳの合計占有率が最大合計占有率閾値を上回る場合、プロセッサは、索引を最大値５０４に設定することができる。同様に、ＮＶＳのデバイス占有率が最小デバイス占有率を下回る場合、プロセッサは、索引を最小値５０６に設定することができる。これらの極端な場合のいずれにおいても、ステージ・アクティビティを考慮しなくてもよい。
【００３８】
図６は、各ストレージ・デバイスに関するデステージ速度を、そのストレージ・デバイスに関連するＮＶＳのデバイス占有率及びステージ・アクティビティの両方に基づいて動的に管理するための１つの実施形態のフローチャートである。この実施形態において、初期索引は、ＮＶＳのデバイス占有率に基づいて名目値に設定され、ステージ・アクティビティ因子の各々に基づいてインクリメント又はデクリメントされる。ＮＶＳの合計占有率が閾値ＴＨＩ（最大合計占有率）を上回る場合、プロセッサは、索引を最大索引に設定して終了する（６００）。ＮＶＳのデバイス占有率が閾値ＴＨ２（最小デバイス占有率）を下回る場合、プロセッサは、索引を最小索引に設定して終了する（６０２）。他の場合には、プロセッサは、現在のデバイス占有率対最大デバイス占有率の比と索引の数との積に等しくなるように、初期索引を設定する（６０４）。この実施形態において、初期索引は、最大デバイス占有率に正規化された現在のデバイス占有率に直線的に比例する。デバイス占有率から索引への他のマッピングを用いることもできる。
【００３９】
プロセッサは、１つ又は複数のステージ・アクティビティ因子の各々をチェックし、それに応じて索引をインクリメント又はデクリメントする。プロセッサは、ストレージ・デバイス上の現在のステージ要求をチェックする（６０６）。ステージ要求の数が低閾値ＴＨ３を下回る場合、プロセッサは、初期索引をインクリメントする（６０８）。ステージ要求の数が高閾値ＴＨ４を上回る場合、プロセッサは、初期索引をデクリメントする（６１０）。プロセッサは、デバイス・アダプタの現在の使用帯域幅をチェックする（６１２）。使用帯域幅が低閾値ＴＨ５を下回る場合、プロセッサは、初期索引をインクリメントする（６１４）。使用帯域幅が高閾値ＴＨ６を上回る場合、プロセッサは、初期索引をデクリメントする（６１６）。プロセッサは、デバイス・アダプタ上の現在のステージ要求をチェックする（６１８）。ステージ要求の数が低閾値ＴＨ７を下回る場合、プロセッサは、初期索引をインクリメントする（６２０）。ステージ要求の数が高閾値ＴＨ８を上回る場合、プロセッサは、初期索引をデクリメントする（６２２）。プロセッサは、ストレージ・デバイスの速度をチェックする（６２４）。デバイス速度が高い場合、プロセッサは索引をインクリメントする（６２６）。デバイス速度が低い場合、プロセッサは索引をデクリメントする（６２８）。ステージ・アクティビティ因子の各々に対して索引がインクリメント又はデクリメントされる量は、コンピューティング環境によって決まり、環境の計算又は数値分析によって設定することができる。調整された索引が最大索引を上回る場合、プロセッサは、最大索引と等しくなるように調整された索引を設定し、調整された索引が最小索引を下回る場合、プロセッサは、最小索引と等しくなるように調整された索引を設定する（６３０）。
【００４０】
索引が、６００及び６０２の閾値化プロセスによって、又は６０４乃至６３０の現在のデバイス占有率及びステージ・アクティビティに従って設定されると、プロセッサは、索引を用いて、テーブルから調整されたデステージ速度を抽出する（６３２）。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージする（６３４）。この技術は、プール内の各ストレージ・デバイスに関するデステージ速度を決定するために用いられる。条件が変化したとき、この技術を繰り返して、各ストレージ・デバイスに関するデステージ速度を更新する。
【００４１】
図７は、特定のコンピューティング環境内の各ストレージ・デバイスについてのデステージ速度を、そのストレージ・デバイスに関連するＮＶＳのデバイス占有率及びステージ・アクティビティの両方に基づいて動的に管理するための１つの実施形態のフローチャートである。この実施形態において、初期索引は、デバイス占有率に基づいて低値に設定され、ステージ・アクティビティ因子のテストされた組み合わせに基づいてインクリメントされる。ＮＶＳの合計占有率が９０％を上回る場合、プロセッサは、索引を最大索引に設定して終了する（７００）。デバイス占有率が１０％を下回る場合、プロセッサは、索引をゼロに設定して終了する（７０２）。他の場合には、プロセッサは、現在のデバイス占有率対最大デバイス占有率の比と索引の数との積と等しくなるように、初期索引を設定する（７０４）。デバイス・アダプタ上の使用帯域幅が７０％を下回る場合、プロセッサは、索引を、ストレージ・デバイスがＨＤＤである場合にはプラス２だけインクリメントし、ストレージ・デバイスがＳＤＤである場合にはプラス４だけインクリメントする（７０６）。ストレージ・デバイス上のステージ・アクティビティが１０を下回り、デバイス・アダプタ上のステージ・アクティビティが４０を下回る場合、プロセッサは、索引をプラス２だけインクリメントする（７０８）。閾値のパーセンテージ及び索引のインクリメント量は、代表的なものにすぎない。コンピューティング環境に応じて、他の閾値及びインクリメント、並びにステージ・アクティビティ因子の異なる組み合わせを用いることができる。索引が最大索引を上回る場合、プロセッサは、最大索引と等しくなるように索引を設定する（７１０）。プロセッサは、索引を用いて、テーブルから調整されたデステージ速度を抽出する（７１２）。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージする（７１４）。
【００４２】
図８及び図９は、ステージ・アクティビティに部分的に基づいたキャッシング技術の動的管理を用いた場合と用いない場合のキャッシング技術の性能を比較するプロットである。基準手法（baseline approach）はＮＶＳのデバイス占有率のみに基づいてデステージ速度を管理し、一方、本発明の実施形態は、ＮＶＳのデバイス占有率をステージ・アクティビティと組み合わせる。図８は、ステージ・アクティビティを用いた場合（実線）８００及び用いない場合（破線）８０２の、１分当たりの平均応答時間（読み出し／書き込み）対ＤＢトランザクションの数をプロットしたものである。ユーザ数及びトランザクション／分が増加するにつれて、ＮＶＳのデバイス占有率とステージ・アクティビティを組み合わせたキャッシュ管理は、より良好な応答時間をもたらす。環境が過負荷状態となる「屈曲点」は右にシフトする。図９は、ステージ・アクティビティを用いた場合８０４と用いない場合８０６の、１分当たりの２８８，０００のユーザ、約３５，０００ＤＢトランザクションにおける、読み出しカウント・バケットの分布である。短い読み出しのパーセンテージは、２つの技術においてほぼ等しい。ステージ・アクティビティにおけるファクタリングは、少量ではあるが長い読み出しのパーセンテージを減らす。しかしながら、長い読み出しにおける僅かな改善でも、それらの長い読み出しのためのサービス時間における大きな改善をもたらす。この例においては、排除された３００ミリ秒を上回る０．１１％の読み出しにより、それらの読み出しによるサービス時間のパーセンテージが約４パーセントだけ減少した。
【００４３】
通常は読み出しキャッシュ・ミスの場合の読み出し応答時間とのみ関連しているステージ・アクティビティ因子を、ＮＶＳのデバイス占有率と組み合わせることによって、動的キャッシュ管理の技術が、異なるタイプの作業負荷（読み出し、書き込み、逐次的な、ランダムな）、異なるタイプのストレージ・デバイス、及び異なる速度にわたって、全体の読み出し／書き込み性能を向上させる。より具体的には、ステージ・アクティビティが許容するときに、ストレージ・デバイスへのデステージ速度を増加させることによって、ホストの書き込み応答時間が改善され、ステージ・アクティビティが要求するときに、デステージ速度を低下させることによって、スループットを犠牲にすることなく、読み出し応答時間が改善される。
【００４４】
．
当業者であれば認識するように、本発明の態様は、システム、方法、又はコンピュータ・プログラムとして具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又は、ソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に、「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラムの形を取ることができる。
【００４５】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限られるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はクラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のいずれかの適切な組み合わせが挙げられる。本明細書の文脈では、コンピュータ可読ストレージ媒体とは、命令実行システム、装置若しくはデバイスによって又はこれらと接続して用いるために、プログラムを収容又は格納することができるいずれかの有形媒体とすることができる。
【００４６】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限られるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。本発明の態様に関する動作を実行するためのプログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、ユーザのコンピュータ上で完全に実行される場合もあり、ユーザのコンピュータ上で部分的に実行される場合もあり、独立したソフトウェア・パッケージとして実行される場合もあり、ユーザのコンピュータ上で部分的に実行され、遠隔コンピュータ上で部分的に実行される場合もあり、又は遠隔コンピュータ若しくはサーバ上で完全に実行される場合もある。一番最後のシナリオの場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部のコンピュータへの接続がなされる場合もある（例えば、インタネット・サービス・プロバイダを用いたインターネットを通じて）。
【００４７】
本発明の態様は、本発明の実施形態による方法、装置（システム）、及びコンピュータ・プログラムのフローチャート及び／又はブロック図を参照して、後述される。フローチャート及び／又はブロック図の各ブロック、並びにフローチャート及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを生産し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を生成するようにすることができる。
【００４８】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図．の１つ又は複数のブロック内で指定された機能／動作を実装するための命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードし、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実行させて、コンピュータ実施プロセスを生成し、それにより、コンピュータ又は他のプログラム可能データ処理装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００４９】
上記の図面におけるフローチャート及び／又はブロック図は、１本発明の様々な実施形態による、システム、方法及びコンピュータ・プログラムの可能な実装形態のアーキテクチャ、機能及び動作を示すものである。この点で、フローチャート又はブロック図における各ブロックは、モジュール、セグメント又はコードの一部を表すことができ、これらは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む。幾つかの代替的な実装形態においては、ブロックに記された機能が図面に記された順序通りに行われない場合があることにも留意されたい。例えば、連続して示された２つのブロックが、実際には実質的に同時に実行されることがあり、これらのブロックが、関与する機能に応じて、ときとして逆順で実行されることもある。ブロック図及び／又はフローチャートにおける各ブロック、並びにブロック図及び／又はフローチャートにおけるブロックの組み合わせは、指定された機能若しくは動作を行う専用ハードウェア・ベースのシステム又は専用のハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意されたい。
【００５０】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図するものではない。本明細書で用いられるとき、単数形「１つの」及び「その」は、そうでないことが示されていない限り、複数形も含むことが意図されている。本明細書で用いられるとき、「含む」及び／又は「含んでいる」という用語は、提示された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を特定するものであるが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらのグループの存在又は追加を排除するものではないことがさらに理解されるであろう。
【００５１】
特許請求の範囲における全ての「手段又はステップと機能との組合せ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作及び均等物は、その機能を、明確に特許請求されているように他の特許請求された要素と組み合わせて実行するための、いかなる構造、材料又は動作をも含むことが意図される。本発明の説明は、例示及び説明の目的で提示されたものであるが、網羅的であることを意図するものではなく、本発明を開示された形態に限定することを意図するものでもない。本発明の範囲及び精神から逸脱することのない多くの変更及び変形が、当業者には明らかであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するため、及び、当業者が本発明を種々の変更を有する種々の実施形態について企図される特定の使用に適したものとして理解することを可能にするために、選択及び記載された。
【符号の説明】
【００５２】
１００：ストレージ・システム
１０２：ストレージ・エリア・ネットワーク（ＳＡＮ）
１０４：ストレージ・コントローラ
１０６：スイッチ
１０８、１０８ａ〜１０８ｅ：ストレージ・デバイス
１１０、１１０ａ、１１０ｂ：サーバ
１１２：ホスト・アダプタ
１１３：デバイス・アダプタ
１１４：プロセッサ
１１６：メモリ
１１８：キャッシュ
１２０：不揮発性ストレージ（ＮＶＳ）
３００：データ
３０２ａ〜３０２ｅ：ＮＶＳの部分
４００：ストレージ・デバイスのステージ・アクティビティ
４０２：デバイス・アダプタのステージ・アクティビティ
４０４：デバイス・アダプタの使用帯域幅
４０６：ストレージ・デバイスの読み出し／書き込み速度
５００：デステージ速度の索引付きテーブル
５０２：名目値
５０４：最大値
５０６：最小値
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2013511081.tif 000012
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2013511081.tif 000013
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2013511081.tif 000014
【手続補正書】
【提出日】平成25年1月24日(2013.1.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法であって、
前記各ストレージ・デバイスに関連する不揮発性ストレージ（ＮＶＳ）の現在のデバイス占有率に応じて、前記キャッシュからのデータのデステージ速度を適応変化させるステップと、
少なくとも前記各ストレージ・デバイス上の現在のステージ要求の数を含む、前記各ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて前記デステージ速度を適応調整するステップとを有し、
前記調整されたデステージ速度は、前記現在のステージ・アクティビティが低い場合には相対的に高くなり、前記現在のステージ・アクティビティが高い場合には相対的に低くなり、
データを前記調整されたデステージ速度で前記キャッシュから前記各ストレージ・デバイスにデステージし、前記ＮＶＳから前記デステージされたデータを破棄するステップをさらに有する、方法。
【請求項２】
前記デステージ速度は、前記各ストレージ・デバイスに関連する前記ＮＶＳのデバイス占有率が前記ＮＶＳの最大デバイス占有率を上回らないという制約を条件として、前記ＮＶＳの所望の合計占有率を維持するように適応変化され、全ての前記ストレージ・デバイスへの、前記ＮＶＳ内の使用可能スペースの合計最大割り当ては、前記ＮＶＳ内の使用可能スペースの１００パーセントを上回る、請求項１に記載の方法。
【請求項３】
前記デステージ速度は、
前記ＮＶＳの前記合計占有率が最大合計占有率を上回る場合、前記デステージ速度を最大速度に設定し、
前記ＮＶＳの前記デバイス占有率が最小デバイス占有率を下回る場合、前記デステージ速度を最小速度に設定し、
他の場合には、前記各ストレージ・デバイスに関する前記現在のデバイス占有率対前記最大デバイス占有率の比に基づいて前記デステージ速度を設定する、
ことによって適応変化される、請求項２に記載の方法。
【請求項４】
前記デステージ速度は、前記デバイス・アダプタ上の現在のステージ要求の数、前記デバイス・アダプタの使用帯域幅及び前記各ストレージ・デバイスの読み出し／書き込み速度のうちの少なくとも１つをさらに含む前記現在のステージ・アクティビティに応じて適応調整される、請求項１ないし請求項３のいずれか１項に記載の方法。
【請求項５】
前記デステージ速度は、前記デバイス・アダプタ上の現在のステージ要求の数、前記デバイス・アダプタの使用帯域幅及び前記各ストレージ・デバイスの読み出し／書き込み速度の各々をさらに含む前記現在のステージ・アクティビティに応じて適応調整される、請求項１に記載の方法。
【請求項６】
デステージ速度の索引付きテーブルを準備するステップをさらに有し、
前記デステージ速度を適応変化させるステップは、前記各ストレージ・デバイスに関連する前記ＮＶＳの前記現在のデバイス占有率に基づいて初期索引を計算するステップを含み、
前記デステージ速度を適応調整するステップは、前記各ストレージ・デバイスに関連する前記現在のステージ・アクティビティに応じて前記初期索引をインクリメント又はデクリメントするステップを含み、
前記調整された索引に従って、前記テーブルから前記調整されたデステージ速度を読み出すステップをさらに有する、請求項１ないし請求項４のいずれか１項に記載の方法。
【請求項７】
デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするためのシステムであって、
前記キャッシュ及び不揮発性ストレージ（ＮＶＳ）、並びに前記複数のストレージ・デバイスと通信し、請求項１ないし請求項６のいずれか１項に記載の方法を実行するように適合される、少なくとも１つのプロセッサを備えるシステム。
【請求項８】
請求項１ないし請求項６のいずれか１項に記載の方法をコンピュータに実行させるためのコンピュータ・プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
International Business Machines Corporation（ＩＢＭ（登録商標））のEnterprise Storage Serverのようなハイエンド・ストレージ・コントローラは、ネットワーク化されたホストから、直接アクセス・ストレージ・デバイス（direct access storage device、ＤＡＳＤ）、独立ディスク冗長アレイ（Redundant Array of Independent Disks）（ＲＡＩＤアレイ）、及び単純ディスク束（Just a Bunch of Disks、ＪＢＯＤ）などのストレージ・デバイスのプールへの入力／出力（Ｉ／Ｏ）要求を管理する。ストレージ・コントローラは、ネットワーク上で１つ又は複数のホストと通信するための１つ又は複数のホスト・バス・アダプタ（ＨＢＡ）カードと、ストレージ・デバイスと通信するためのデバイス・アダプタ（ＤＡ）とを含む。ストレージ・コントローラはまた、キャッシュ・メモリと、バッテリ・バックアップ式ランダム・アクセス・メモリで構成され得る不揮発性ストレージ・デバイス（non-volatile storage device、ＮＶＳ）とを含む。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
図１は、ＳＡＮ１０２に接続されたストレージ・システム１００の一実施形態を示す。ストレージ・システム１００は、ＲＡＩＤアレイのようなハードディスク・ドライブ（ＨＤＤ）及び／又はソリッドステート・ドライブ（ＳＤＤ）のアレイを含む。特定の実施形態において、デステージング技術は、こうしたストレージ・システム１００内で実装することができるので、ストレージ・システム１００の内部コンポーネントが示されるが、それらは、他のストレージ・システム１００にも適用可能である。図示したように、ストレージ・システム１００は、ストレージ・コントローラ１０４、１つ又は複数のスイッチ１０６、及びハードディスク・ドライブ１０８又はソリッドステート・ドライブ１０８のような１つ又は複数のストレージ・デバイス１０８を含む。ストレージ・コントローラ１０４は、１つ又は複数のホスト（例えば、オープン・システム及び／又はメインフレーム・サーバ）が１つ又は複数のストレージ・デバイス１０８内のデータにアクセスするのを可能にする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
図７は、特定のコンピューティング環境内の各ストレージ・デバイスについてのデステージ速度を、そのストレージ・デバイスに関連するＮＶＳのデバイス占有率及びステージ・アクティビティの両方に基づいて動的に管理するための１つの実施形態のフローチャートである。この実施形態において、初期索引は、デバイス占有率に基づいて低値に設定され、ステージ・アクティビティ因子のテストされた組み合わせに基づいてインクリメントされる。ＮＶＳの合計占有率が９０％を上回る場合、プロセッサは、索引を最大索引に設定して終了する（７００）。デバイス占有率が１０％を下回る場合、プロセッサは、索引をゼロに設定して終了する（７０２）。他の場合には、プロセッサは、現在のデバイス占有率対最大デバイス占有率の比と索引の数との積と等しくなるように、初期索引を設定する（７０４）。デバイス・アダプタ上の使用帯域幅が７０％を下回る場合、プロセッサは、索引を、ストレージ・デバイスがＨＤＤである場合にはプラス２だけインクリメントし、ストレージ・デバイスがＳＤＤである場合にはプラス４だけインクリメントする（７０６）。ストレージ・デバイス上の現在のステージ要求の数が１０を下回り、デバイス・アダプタ上の現在のステージ要求の数が４０を下回る場合、プロセッサは、索引をプラス２だけインクリメントする（７０８）。閾値のパーセンテージ及び索引のインクリメント量は、代表的なものにすぎない。コンピューティング環境に応じて、他の閾値及びインクリメント、並びにステージ・アクティビティ因子の異なる組み合わせを用いることができる。索引が最大索引を上回る場合、プロセッサは、最大索引と等しくなるように索引を設定する（７１０）。プロセッサは、索引を用いて、テーブルから調整されたデステージ速度を抽出する（７１２）。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージする（７１４）。
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2013511081.tif 000015
【国際調査報告】
2013511081.tif 000016
2013511081.tif 000017
2013511081.tif 000018