JP5270801B2 - デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法、システム及びコンピュータ・プログラム - Google Patents

デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法、システム及びコンピュータ・プログラム Download PDF

Info

Publication number
JP5270801B2
JP5270801B2 JP2012538366A JP2012538366A JP5270801B2 JP 5270801 B2 JP5270801 B2 JP 5270801B2 JP 2012538366 A JP2012538366 A JP 2012538366A JP 2012538366 A JP2012538366 A JP 2012538366A JP 5270801 B2 JP5270801 B2 JP 5270801B2
Authority
JP
Japan
Prior art keywords
nvs
speed
occupancy
destage
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012538366A
Other languages
English (en)
Other versions
JP2013511081A (ja
Inventor
グプタ、ロケシュ、モハン
アッシュ、ケビン、ジョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013511081A publication Critical patent/JP2013511081A/ja
Application granted granted Critical
Publication of JP5270801B2 publication Critical patent/JP5270801B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、コンピュータ・システムに関し、より具体的には、ストレージ・コントローラにおけるデステージ・タスクの管理に関する。
International Business Machines Corporation(IBM(登録商標))のEnterprise Storage Serverのようなハイエンド・ストレージ・コントローラは、ネットワーク化されたホストから、直接アクセス・ストレージ・デバイス(direct access storage device、DASD)、独立ディスク冗長アレイ(Redundant Array of Independent Disks)(RAIDアレイ)、及び単純ディスク束(Just a Bunch of Disks、JBOD)などのストレージ・デバイスのプールへの入力/出力(I/O)要求を管理する。ストレージ・コントローラは、ネットワーク上で1つ又は複数のホストと通信するための1つ又は複数のホスト・バス・アダプタ(HBA)カードと、ストレージ・デバイスと通信するためのデバイス・アダプタ(DA)とを含む。ストレージ・コントローラはまた、キャッシュ・メモリと、バッテリ・バックアップ式ランダム・アクセス・メモリで構成され得る不揮発性ストレージ・デバイス(non-volatile storage device、NVS)とを含む。
キャッシングは、I/O遅延(1atency)を隠蔽する際の基本的な技術であり、ストレージ・コントローラ、ファイル・システム、及びオペレーティング・システムにおいて広く用いられている。Storage Networking Industry Association(SNIA)は、キャッシュを「低速メモリ又はデバイスとの間でデータを読み書きするのに必要とされる有効時間を短縮するために用いられる高速メモリ又はストレージ・デバイス」と定義する。以下に、キャッシュ技術が、ストレージ・コントローラの文脈において論じられ、そこでは、高速であるが比較的高価なランダム・アクセス・メモリが、低速であるが比較的安価なディスク又はストレージ・デバイスのためのキャッシュとして用いられる。キャッシュ・メモリは、メモリからの読み出しデータ・アクセス要求を処理し、変更されたデータのバッファリングを提供するために外部ストレージからインページされた(ステージされた)データへの高速アクセスのために用いられる。書き込み要求は、キャッシュに書き込まれ、NVS内にミラーリングされ、次いで外部ストレージ・デバイスに書き込まれる(デステージされる)。
読み出しキャッシュ(read cache)管理は、良く研究されている分野である。この文脈においては、多数のキャッシュ置換技術が存在し、例えば、LRU、CLOCK、FBR、LRU−2、2Q、LRFU、LIRS、MQ、ARC、及びCARを参照されたい。
書き込みキャッシュ(write cache)管理は、発展途上の分野である。NVSは、高速書き込みを可能にするために導入されたものである。一般に、NVSがない場合、一貫性、正確さ、耐久性、及び持続性を確実にするために、あらゆるデータ書き込みをストレージ・デバイスに直接、同期式に書き込む(デステージする)必要がある。さもなければ、サーバの故障によりキャッシュが失われ、データの損失を招く可能性がある。一般に、ホスト書き込みの速度はストレージ・デバイスの速度を上回るので、NVSがなければ、データ転送が妨げられる。NVSは、キャッシュへの高速書き込みを可能にし、これらの書き込みは、NVSにミラーリングされ、外部ストレージ・デバイスに転送するまでNVS内に安全に格納される。データは、後でキャッシュから非同期式にデステージされ(そして、NVSから破棄され)、従って、ストレージ・デバイスの書き込み遅延を隠蔽する。キャッシュ及びNVSは、典型的には、複数のストレージ・デバイスを対象とした更新を格納する。書き込みに対する低遅延の継続を保証するために、典型的には、NVS内のデータを排出して(drain)、常に入ってくる書き込みのための幾らかの空きスペースがあることを確実にする必要があり、さもなければ、以後の書き込みが事実上同期式になり、そのことはホスト書き込みのための応答時間に悪影響を及ぼすことがある。一方、書き込みがあまりにも積極的に排出される場合、典型的にはNVSの平均使用量が少なくなるので、一般に、書き込みキャッシングの利点を十分に生かすことができない。キャッシュはNVSよりも安価で遥かに大きいので、NVSは、書き込みデータをデステージする際のボトルネックとなる。
幾つかのデステージング技術は、線形閾値化(1inear thresholding)スキームを用いて、特定のストレージ・デバイスに関するNVSのデバイス占有率を制限することにより、単一のストレージ・デバイスの故障が全てのデバイスに影響を及ぼすのを防止する。他の技術は、NVSの合計占有率及び各ストレージ・デバイス関連するデバイス占有率に基づいて、ストレージ・デバイスへのデステージ速度を動的に変化させる。新しい書き込み速度に関係なく全速力で書き込むことは、一般に、性能上理想的なことではなく、これにより、ストレージ・コントローラから得ることができる最大書き込みスループット(throughput)が低下する。望ましい動作は、NVSを満杯にすることなくNVSが大きく占有された状態を保持しながら、単に、入ってくる書き込みロード(即ち、書き込み要求)に遅れずについていくことである。NVSのデバイス占有率が高いほど、書き込みキャッシュがより効率的になる。というのは、かかる状況では、NVSは同じ論理アドレスへのより多くの書き込みを吸収することができ、従って、ストレージ・デバイスへのデータのスループットがより効率的になるからである。
本発明は、ストレージ・コントローラにおけるデステージ・タスクの動的管理の方法、システム、及びコンピュータ・プログラムを提供する。
上記のことを考慮して、1つ又は複数のプロセッサにより、デバイス・アダプタを介して書き込みキャッシュからストレージ・デバイスのプールへのデータ転送を容易にするための方法、システム、及びコンピュータ・プログラムが提供される。プロセッサは、特定のストレージ・デバイスに関連するNVSの現在のデバイス占有率及びそのストレージ・デバイスに関連するステージ・アクティビティ(stage activity)に基づいて、デステージ速度を適応変化させる。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し/書き込み速度のうちの1つ又は複数を含む。これらの因子は、一般に、キャッシュ・ミスの場合に読み出し応答時間と関連し、通常、デステージ速度の動的管理とは関連しない。この組み合わせは、NVSの所望の合計占有率を維持すると同時に、読み出し及び書き込み応答時間性能を向上させる。この手法は、異なるタイプの作業負荷(読み出し、書き込み、逐次的な、ランダムな)、異なるタイプのストレージ・デバイス、及び異なるデバイス速度にわたって、全体の読み出し及び書き込み性能を向上させる。
本発明の一実施形態によると、各ストレージ・デバイスについて、プロセッサは、特定のストレージ・デバイスに関連するNVSの現在のデバイス占有率に応じて、キャッシュからのデータのデステージ速度を適応変化させる。プロセッサは、ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、デステージ速度を適応調整する。現在のステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し/書き込み速度のうちの1つ又は複数を含む。調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージし、NVSからそのデータを破棄する。
プロセッサは、特定のストレージ・デバイスに関連するNVSの現在のデバイス占有率及びそのストレージ・デバイスに関連するステージ・アクティビティに基づいて、デステージ速度を適応変化させ、NVSの所望の合計占有率及びストレージ・デバイスへのスループットを、維持すると同時に、読み出し及び書き込み応答時間を改善することができる。スループットは、ホストからキャッシュ/ストレージまで測定され、これはキャッシュからストレージへのスループットに依存する。読み出し/書き込み時間は、ホストの観点から測定される。
プロセッサは、NVSの合計占有率が高閾値(最大合計占有率)を上回る場合にはデステージ速度を最大値に設定することができ、NVSデバイス占有率が低閾値(最小デバイス占有率)を下回る場合にはデステージ速度を最小値に設定することができる。これらの閾値は固定されてもよく、又は作業負荷によって変化してもよい。あらゆる単一ストレージ・デバイスに関するNVSのデバイス占有率を、最大デバイス占有率に制限するように、プロセッサを構成することができる。
プロセッサは、デステージ速度の索引付きテーブルを備えることができる。プロセッサは、ストレージ・デバイスに関するNVSの現在のデバイス占有率に基づいて、初期索引を計算し、そのストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、初期索引をインクリメント又はデクリメントすることができる。プロセッサは、索引付きテーブルから調整されたデステージ速度を読み出す。
本発明の別の実施形態によると、各ストレージ・デバイスについて、プロセッサは、NVSの所望の合計占有率を維持し、複数のストレージ・デバイスへの書き込みスループットを増加させるように、キャッシュからのデータのデステージ速度を適応変化させる。プロセッサは、各ストレージ・デバイスに関するNVSのデバイス占有率を、最大デバイス占有率を上回らないように制限するように構成される。全てのストレージ・デバイスに対するNVS内の使用可能スペースの合計最大割り当ては、NVS内の使用可能スペースの100パーセントを超える。プロセッサは、NVSの合計占有率が最大合計占有率を上回る場合にはデステージ速度を最大値に設定し、NVSのデバイス占有率が最小デバイス占有率を下回る場合にはデステージ速度を最小値に設定し、他の場合には、現在のデバイス占有率対最大デバイス占有率の比に基づいてデステージ速度を設定することにより、デステージ速度を適応変化させる。プロセッサは、少なくともストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅(場合によっては、デバイス・アダプタのステージ・アクティビティ、並びにストレージ・デバイスの読み出し/書き込み速度も同様に)を含む、ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて、デステージ速度を適応調整して、読み出し及び書き込み応答時間を短縮する。調整されたデステージ速度は、ステージ・アクティビティが低い場合には相対的に高くなり、ステージ・アクティビティが高い場合には相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージし、NVSからそのデータを破棄する。
プロセッサ、デステージ速度が最小索引に関する最小速度から最大索引に関する最大速度まで増加するデステージ速度の索引付きテーブルを備えることができる。プロセッサは、ストレージ・デバイスに関するNVSの現在のデバイス占有率に基づいて初期索引を計算することによってデステージ速度を適応変化させ、NVSの合計占有率が最大合計占有率を上回る場合には、初期索引を最大索引に設定し、NVSのデバイス占有率が最小デバイス占有率を下回る場合には、初期索引を最小索引に設定し、他の場合には、現在のデバイス占有率対最大デバイス占有率の比に基づいて初期索引を設定する。プロセッサは、ストレージ・デバイスに関する現在のステージ・アクティビティに応じて、初期索引をインクリメント又はデクリメントすることによって、デステージ速度を適応調整し、ストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅が相対的に高い場合には、索引をデクリメントし、或いは、ストレージ・デバイスのステージ・アクティビティ及びデバイス・アダプタの使用帯域幅が相対的に低い場合には、索引をインクリメントする。プロセッサは、調整された索引に従って、テーブルから調整されたデステージ速度を読み出す。
関連するシステム及びコンピュータ・プログラムの実施形態も開示され、付加的な利点を与える。
ここで本発明の実施形態を、単なる例証として、添付の図面を参照しながら説明する。
本発明による装置及び方法を実装することができるストレージ・システムの一実施例を示す高レベルのブロック図である。 データをキャッシュからデステージする方法の実施形態を示す高レベルのフローチャートである。 複数のストレージ・デバイスに関するNVSのデバイス占有率を示す図である。 特定のストレージ・デバイスに関連するステージ・アクティビティを示す、ストレージ・システムの一部分の図である。 (a)及び(b)は、ストレージ・デバイスに関連するNVSの現在のデバイス占有率及び現在のステージ・アクティビティの両方に基づいた、デステージ速度の動的管理を示すプロットである。 データをキャッシュからデステージする方法の一実施形態を示すフローチャートである。 データをキャッシュからデステージする方法の一実施形態を示すフローチャートである。 ストレージ・デバイスのステージ・アクティビティに従ったデステージ速度の動的管理を用いた場合と用いない場合の応答時間性能を比較するプロットである。 ストレージ・デバイスのステージ・アクティビティに従ったデステージ速度の動的管理を用いた場合と用いない場合の応答時間性能を比較するプロットである。
上記を鑑みて、プロセッサ又は複数プロセッサにより、デバイス・アダプタを介して書き込みキャッシュからストレージ・デバイスのプールへのデータ転送を容易にするための種々の方法、システム、及びコンピュータ・プログラムの実施形態が提供される。プロセッサは、特定のストレージ・デバイスに関連するNVSの現在のデバイス占有率及びそのストレージ・デバイスに関連するステージ・アクティビティに基づいて、デステージ速度を適応変化させる。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し/書き込み速度のうちの1つ又は複数を含む。これらの因子は、一般に、キャッシュ・ミスの場合の読み出し応答時間と関連し、通常、デステージ速度の動的管理とは関連しない。この組み合わせは、NVSの所望の合計占有率及びストレージ・デバイスへのスループットを維持すると同時に、読み出し/書き込み応答時間を改善する。スループットは、ホストからキャッシュ/ストレージまで測定され、これはキャッシュからストレージへのスループットに依存する。読み出し/書き込み時間は、ホストの観点から測定される。この手法は、異なるタイプの作業負荷(読み出し、書き込み、逐次的な、ランダム)、異なるタイプのストレージ・デバイス、及び異なるデバイス速度にわたって、全体の読み出し及び書き込み性能を向上させる。
コンピュータ・ネットワーク・アーキテクチャは、ネットワークによって相互接続された1つ又は複数のコンピュータを含むことができる。ネットワークは、例えば、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、イントラネット等を含むことができる。特定の実施形態において、コンピュータは、クライアント・コンピュータ及びサーバ・コンピュータの両方を含むことができる。一般に、クライアント・コンピュータは通信セッションを開始できるのに対して、サーバ・コンピュータはクライアント・コンピュータからの要求を待つことができる。特定の実施形態において、コンピュータ及び/又はサーバは、1つ又は複数の内部又は外部の直接接続型(direct-attached)ストレージ・デバイス(例えば、ハードディスク・ドライブ、ソリッドステート・ドライブ、テープ・ドライブなど)に接続することができる。これらのコンピュータ及び直接接続型ストレージ・デバイスは、ATA、SATA、SCSI、SAS、ファイバ・チャネル等のようなプロトコルを用いて通信することができる。コンピュータの一部又は全ては、ストレージ・デバイスから取り出されたデータを格納するためのキャッシュを含むことができる。
コンピュータ・ネットワーク・アーキテクチャは、特定の実施形態において、サーバの背後に、ストレージ・エリア・ネットワーク(SAN)又はLAN(例えば、ネットワーク接続型(network-attached)ストレージを用いるとき)のようなストレージ・ネットワークを含む。このネットワークは、サーバを、別個のハードディスク・ドライブ又はソリッドステート・ドライブ、ハードディスク・ドライブ又はソリッドステート・ドライブのアレイ、テープ・ドライブ、テープ・ライブラリ、CD−ROMライブラリ等のような1つ又は複数のストレージ・システムに接続することができる。ネットワークがSANである場合、サーバ及びストレージ・システムは、ファイバ・チャネル(FC)のようなネットワーク化標準を用いて通信することができる。
図1は、SAN12に接続されたストレージ・システム100の一実施形態を示す。ストレージ・システム100は、RAIDアレイのようなハードディスク・ドライブ(HDD)及び/又はソリッドステート・ドライブ(SDD)のアレイを含む。特定の実施形態において、デステージング技術は、こうしたストレージ・システム100内で実装することができるので、ストレージ・システム100の内部コンポーネントが示されるが、それらは、他のストレージ・システム100にも適用可能である。図示したように、ストレージ・システム100は、ストレージ・コントローラ104、1つ又は複数のスイッチ106、及びハードディスク・ドライブ108又はソリッドステート・ドライブ108のような1つ又は複数のストレージ・デバイス108を含む。ストレージ・コントローラ104は、1つ又は複数のホスト(例えば、オープン・システム及び/又はメインフレーム・サーバ)が1つ又は複数のストレージ・デバイス108内のデータにアクセスするのを可能にする。
選択された実施形態において、ストレージ・コントローラ104は、1つ又は複数のサーバ110を含む。ストレージ・コントローラ104はまた、それぞれホスト・デバイス及びストレージ・デバイス108に接続するためのホスト・アダプタ112及びデバイス・アダプタ113を含むこともできる。複数のサーバ110a、110bは、データが接続されたホストに対して常に利用可能であることを確実にするために、冗長性をもたらすことができる。従って、1つのサーバ110aが故障しても、他のサーバ110bは機能できるままであり、I/Oは、ホストとストレージ・デバイス108との間で継続可能であることを保証する。このプロセスは「フェイルオーバー(failover)」と呼ぶことができる。
図1に示されるものと類似したアーキテクチャを有するストレージ・コントローラ104の一例が、IBM DS8000(商標)エンタープライズ・ストレージ・システムである。DS8000(商標)は、連続動作をサポートするように設計されたディスク・ストレージを提供する、高性能大容量ストレージ・コントローラである。DS8000(商標)シリーズのモデルは、IBMのPOWER5(商標)サーバ110a、110bを使用することができ、IBMの仮想化エンジン技術と統合することができる。しかしながら、本明細書で開示されるキャッシング装置及び方法は、IBM DS8000(商標)エンタープライズ・ストレージ・システム100に限定されるものではなく、製造業者、製品名、又はシステム関連するコンポーネント若しくはコンポーネント名に関係なく、同等の又は類似のストレージ・システムにおいて実装することができる。さらに、本発明の1つ又は複数の実施形態から恩恵を受けることができるいずれのシステムも本発明の範囲内に入るものと見なされる。従って、IBM DS8000(商標)は、一例として提示したものにすぎず、限定することを意図したものではない。
選択された実施形態において、各サーバ110は、1つ又は複数のプロセッサ114(例えば、nウェイ(n-way)対称型マルチプロセッサ)と、メモリ116とを含むことができる。メモリ116は、揮発性メモリ(例えば、RAM)、及び不揮発性メモリ(例えば、ROM、EPROM、EEPROM、ハードディスク、フラッシュメモリ等)を含むことができる。揮発性メモリ及び不揮発性メモリは、特定の実施形態においては、プロセッサ114上で実行され、ストレージ・デバイス108内のデータにアクセスするために用いられるソフトウェア・モジュールを格納することができる。サーバ110は、これらのソフトウェア・モジュールの少なくとも1つのインスタンスをホストすることができる。これらのソフトウェア・モジュールは、ストレージ・デバイス108内の論理ボリュームへの全ての読み出し及び書き込み要求を管理することができる。
メモリ116は、揮発性キャッシュ118を含む。ホスト(例えば、オープン・システム又はメインフレーム・サーバ)が読み出し動作を実行するたびに、サーバ110は、ストレージ・デバイス108からデータをフェッチし、そのデータが再度要求された場合にデータをキャッシュ118内に保存する。データがホストによって再度要求され場合、サーバ110は、そのデータを、ストレージ・デバイス108からフェッチする代わりに、キャッシュ118からフェッチすることができ、時間及びリソースの両方を節約する。これは、キャッシュ・ヒットと呼ばれる。
キャッシュ・ミス(トラックが現在キャッシュ内に存在しない)であるホスト読み出しの場合、ホスト読み出しが切断され、データはストレージ・デバイスからキャッシュにステージされ、次いでホスト読み出しが再接続され、データがキャッシュからホストに読み出される。データをストレージ・デバイスからキャッシュにステージするのにかかる時間は、ストレージ・デバイスを構成するドライブ(HDD、SDD)の読み出し/書き込み速度、各デバイス・アダプタに構成されたストレージ・デバイスの数、各デバイス・アダプタに構成されたストレージ・デバイスのタイプの混合、デバイス・アダプタの全使用帯域幅(ステージ及びデステージ・タスク)、並びにストレージ・デバイス及びデバイス・アダプタに課せられるステージ及びデステージ・タスクの現在の数を含む幾つかの因子に応じて、大きく変化し得る。一実施形態において、各ストレージ・デバイスは、RAIDであり、これは「ランク(rank)」と呼ぶことができる。RAIDは、例えば、1、5、6、10などの多数のタイプと、例えば、7k、10k、15k及びSDDなどの異なるディスクRPM速度とを有する。読み出し応答時間は、キャッシュ・ミスの可能性、及びキャッシュ・ミスの場合に、データをストレージ・デバイスからキャッシュにステージするのにかかる時間によって、部分的に決定される。
メモリ116はまた、不揮発性ストレージ(NVS)120を含む。ホストが書き込み動作を実行するとき、サーバ110は、ホスト書き込みが完了したと考えられる時点で、データをキャッシュ118及びNVS120の両方に書き込む。後の時点で、サーバは、データをキャッシュ118からストレージ・デバイスにデステージし、NVS120からデータを破棄する(データのバッテリ・バックアップ・コピーはもはや必要とされないので)。データは、一般に、NVSを満杯にすることなくNVSが大きく占有された状態を保持しながら、入ってくる書き込みロード(即ち、書き込み要求)に遅れずについていくのに十分な速度でデステージされる。NVSが満杯になった場合、キャッシュ書き込みミスの可能性が増大する。NVSのデバイス占有率が高いほど、書き込みキャッシュがより効率的になる。というのは、かかる状況では、NVSは同じ論理アドレスへのより多くの書き込みを吸収することができ、従って、ストレージ・デバイスへのデータのスループットがより効率的になるからである。
プロセッサ114は、ソフトウェア・モジュールを実行して、ストレージ・コントローラにおけるデステージ・タスクを動的に管理するように、より具体的には、そのストレージ・デバイスに関するNVSの現在のデバイス占有率及びストレージ・デバイスに関連するステージ・アクティビティの両方に応じて、ストレージ・デバイスに関するデステージ速度を適合させるように構成される。ステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びストレージ・デバイスの読み出し/書き込み速度のうちの1つ又は複数を含む。ストレージ・デバイスのステージ・アクティビティのファクタリング(factoring)は、スループット・レベルを保持しながら、読み出し/書き込み応答時間を改善する。より具体的には、ホストの書き込み応答時間は、条件が許せば、NVSを積極的に空にすることによって改善することができ、読み出し応答時間は、条件が要求するときに、NVSを控えめに(conservatively)空にすることによって改善することができる。
ここで図2を参照すると、デステージ・タスクの動的管理の方法各ストレージ・デバイスについて、プロセッサが、そのストレージ・デバイスに関するNVSの現在のデバイス占有率に従って、キャッシュからのデータのデステージ速度を適応変化させること(200)を含む。プロセッサは、そのストレージ・デバイスに関連する現在のステージ・アクティビティに従って、デステージ速度を適応調整する(202)。現在のステージ・アクティビティは、ストレージ・デバイスのステージ・アクティビティ、デバイス・アダプタのステージ・アクティビティ、デバイス・アダプタの使用帯域幅、及びそのストレージ・デバイスの読み出し/書き込み速度のうちの1つ又は複数を含む。調整されたデステージ速度は、ステージ・アクティビティが低い場合は相対的に高くなり、ステージ・アクティビティが高い場合は相対的に低くなる。プロセッサは、データを、調整されたデステージ速度でキャッシュからそのストレージ・デバイスにデステージし(204)、NVSからデータを破棄する。
現在のデバイス占有率及びステージ・アクティビティの関数としてのデステージ速度は、所与のコンピューティング環境における全体の読み出し/書き込み性能を最適にするように適切に選択される。より具体的には、デステージ速度は、平均読み出し及び書き込み応答時間を短縮しながら、高スループットを保持するように選択される。デバイス占有率の関数としての初期ステージ速度は、高い、低い、又は名目デステージ速度に設定することができ、現在のステージ・アクティビティの関数として上方に、下方に、又は上下に調整することができる。デステージ速度は、式として又はテーブルの形で与えることができる。一実施形態において詳述されるように、デバイス占有率及びステージ・アクティビティを用いて、デステージ速度のテーブルへの索引を計算し、調整することができる。
図3は、NVSの部分302a〜302e内に、それぞれストレージ・デバイス108a〜108eのプールに関するホスト書き込みのためのデータ300を格納する、NVS120の一実施形態を示す。各ストレージ・デバイスは、NVS120内に、そのストレージ・デバイスに関連する現在のデバイス占有率を有する。一般に、現在のデバイス占有率が大きいほど、そのストレージ・デバイスに関する、NVSを空にするためのデステージ速度が高くなる。
いずれか1つのストレージ・デバイスの現在のデバイス占有率は、無制約(NVSの100%を占めることが許容される)にしてもよく、又は最大デバイス占有率(例えば、25%)を上回らないように強制してもよい。後者の技術は、NVSの一部分を各ストレージ・デバイスに割り当てることを保証し、その結果、1つのストレージ・デバイスの故障又は処理の遅延が生じた場合でも、他のストレージ・デバイスに対する更新がNVS内にキャッシュされなくなるという状況を回避することができる。最大デバイス占有率は、幾つかのストレージ・デバイスの間で一様であってもなくてもよく、固定されていてもいなくてもよい。例えば、最大デバイス占有率は、複数のストレージ・デバイスのストレージ容量の加重平均として、又は複数のストレージ・デバイス上のバックグランド処理の加重平均として計算することができる。最大デバイス占有率は、全てのストレージ・デバイスへのNVS内の使用可能スペースの合計最大割り当てが、NVS内の使用可能スペースの100%を上回るように確立することができる。例えば、5個のストレージ・デバイスの各々に最大デバイス占有率が割り当てられた場合、合計最大割り当ては125%となる。これは、ストレージ・デバイスの一部が、常にその最大デバイス占有率を使用しているわけではないという統計的仮定に基づいている。最大デバイス占有率が指定された場合、デステージ速度は、その最大デバイス占有率に対する現在のデバイス占有率に基づいて適切に変化される。
プロセッサは、デステージ速度を適応変化させるために、他の占有パラメータを考慮することができる。NVSの合計占有率が最大合計占有率を上回る場合、プロセッサは、デステージ速度を最大値に設定することができる。このテストは、NVSが満杯であり、一般に回避されるべき書き込みキャッシュ・ミスを引き起こし得ることのインジケータとなる。従って、プロセッサは、全てのストレージ・デバイスに関するデステージ速度をその最大値に設定して、所望の合計占有率に戻るようにNVSを排出する。例えば、NVSの所望の合計占有率が90%であり、そしてNVSの実際の合計占有率が95%を上回る場合には、プロセッサは、最高速度でデステージすることができる。NVSのデバイス占有率が最小デバイス占有率を下回る場合、プロセッサは、そのストレージ・デバイスに関するデステージ速度を最小値(例えば、ゼロ)に設定することができる。このテストは、NVSが特定のストレージ・デバイスに関して、ストレージ・デバイスへのスループット効率を低下させる、空きすぎ状態であることのインジケータとなる。例えば、特定のストレージ・デバイスに関するデバイス占有率が10%より下に下がると、プロセスは、そのストレージ・デバイスへのデータのデステージングを一時停止することができる。最大合計占有率は、固定してもしなくてもよい。例えば、最大合計占有率は作業負荷と共に変化し得る。最小デバイス占有率は固定してもしなくてもよく、複数のストレージ・デバイスにわたって一様であってもなくてもよい。
図4は、ストレージ・デバイスに関連する種々のステージ・アクティビティ因子(activity factor)を示すための、デバイス・アダプタ113、スイッチ106、並びにストレージ・デバイス108a〜108cを含むストレージ・システム100の一部分を示す。第1のステージ・アクティビティ因子は、ストレージ・デバイスのステージ・アクティビティ400である。この因子は、ストレージ・デバイスからの現在のステージ(読み出し)アクティビティの尺度である。第2のステージ・アクティビティ因子は、デバイス・アダプタのステージ・アクティビティ402である。この因子は、全てのストレージ・デバイスからのデバイス・アダプタによる現在のステージ(読み出し)アクティビティの尺度である。第3のステージ・アクティビティ因子は、デバイス・アダプタの使用帯域幅404である。この因子は、全てのストレージ・デバイスとの間のデバイス・アダプタによる現在のステージ(読み出し)及びデステージ(書き込み)アクティビティの尺度である。第4のステージ・アクティビティ因子は、ストレージ・デバイスの読み出し/書き込み速度406である。この因子は、ストレージ・デバイスが、どれだけ速くデータを読み出し/書き込みできるかの尺度である。
前述のように、これらの因子は一般に、読み出しキャッシュ・ミスの場合の読み出し応答時間に関連する。これらの因子は、通常、データのデステージングとは関連せず、具体的には、デステージ速度を適応調整するためには用いられない。ストレージ・デバイスのステージ・アクティビティにおけるファクタリングは、スループットのレベルを維持しながら、読み出し/書き込み応答時間を改善する。より具体的には、ホスト書き込み応答時間は、条件が許せば、NVSを積極的に空にすることによって改善することができ、読み出し応答時間は、条件が要求するときに、NVSを控えめに空にすることによって改善することができる。この技術は、書き込み又は読み出しキャッシュ・ミスの数を減らすのに特に有効である。僅かな減少でも全体の応答時間に多大な影響を及ぼす。
図5(a)及び図5(b)は、現在のデバイス占有率及びステージ・アクティビティをデステージ速度に関連付けるための1つの実施形態の例証である。デステージ速度の索引付きテーブル500が、メモリ内に格納される。デステージ速度は、最小の索引(例えば、ゼロ)に関する最小速度(例えば、ゼロ)から増大し、最大の索引(例えば、13)に関する最大速度(例えば、60)まで増大する。このテーブルは、所与のコンピューティング環境に関する式又は数値分折から適切に生成される。図示のように、デステージ速度は索引に対して非線形である。これは典型的ではあるが必須ではない。プロセッサは、現在のデバイス占有率に基づいて、初期索引を計算する。プロセッサは、ステージ・アクティビティ因子の1つ又は複数によって与えられるような現在のステージ・アクティビティに基づいて、初期索引を調整する。プロセッサは、調整された初期索引を用いて、テーブル500から調整されたデステージ速度を読み出す。
この特定の実施形態において、初期索引は、ストレージ・デバイスに関するNVSの現在のデバイス占有率に基づいて、名目値502に設定される。プロセッサは、ステージ・アクティビティに基づいて、この名目値をインクリメント又はデクリメントする。ステージ・アクティビティが高い場合、デステージ速度を低下させて、ステージ・アクティビティに関するより多くのリソースを提供し、ステージ・アクティビティが低い場合、デステージ速度を増大させて、より迅速にNVSを排出する。代替的に、プロセッサは、現在のデバイス占有率に基づいて、初期索引を高い(低い)値に設定し、ステージ・アクティビティに基づいて、デクリメント(インクリメント)のみを行うことができる。効果は同じである。NVSの合計占有率が最大合計占有率閾値を上回る場合、プロセッサは、索引を最大値504に設定することができる。同様に、NVSのデバイス占有率が最小デバイス占有率を下回る場合、プロセッサは、索引を最小値506に設定することができる。これらの極端な場合のいずれにおいても、ステージ・アクティビティを考慮しなくてもよい。
図6は、各ストレージ・デバイスに関するデステージ速度を、そのストレージ・デバイスに関するNVSのデバイス占有率及びステージ・アクティビティの両方に基づいて動的に管理するための1つの実施形態のフローチャートである。この実施形態において、初期索引は、NVSのデバイス占有率に基づいて名目値に設定され、ステージ・アクティビティ因子の各々に基づいてインクリメント又はデクリメントされる。NVSの合計占有率が閾値THI(最大合計占有率)を上回る場合、プロセッサは、索引を最大索引に設定して終了する(600)。NVSのデバイス占有率が閾値TH2(最小デバイス占有率)を下回る場合、プロセッサは、索引を最小索引に設定して終了する(602)。他の場合には、プロセッサは、現在のデバイス占有率対最大デバイス占有率の比と索引の数との積に等しくなるように、初期索引を設定する(604)。この実施形態において、初期索引は、最大デバイス占有率に正規化された現在のデバイス占有率に直線的に比例する。デバイス占有率から索引への他のマッピングを用いることもできる。
プロセッサは、1つ又は複数のステージ・アクティビティ因子の各々をチェックし、それに応じて索引をインクリメント又はデクリメントする。プロセッサは、ストレージ・デバイス上の現在のステージ要求をチェックする(606)。ステージ要求の数が低閾値TH3を下回る場合、プロセッサは、初期索引をインクリメントする(608)。ステージ要求の数が高閾値TH4を上回る場合、プロセッサは、初期索引をデクリメントする(610)。プロセッサは、デバイス・アダプタの現在の使用帯域幅をチェックする(612)。使用帯域幅が低閾値TH5を下回る場合、プロセッサは、初期索引をインクリメントする(614)。使用帯域幅が高閾値TH6を上回る場合、プロセッサは、初期索引をデクリメントする(616)。プロセッサは、デバイス・アダプタ上の現在のステージ要求をチェックする(618)。ステージ要求の数が低閾値TH7を下回る場合、プロセッサは、初期索引をインクリメントする(620)。ステージ要求の数が高閾値TH8を上回る場合、プロセッサは、初期索引をデクリメントする(622)。プロセッサは、ストレージ・デバイスの速度をチェックする(624)。デバイス速度が高い場合、プロセッサは索引をインクリメントする(626)。デバイス速度が低い場合、プロセッサは索引をデクリメントする(628)。ステージ・アクティビティ因子の各々に対して索引がインクリメント又はデクリメントされる量は、コンピューティング環境によって決まり、環境の計算又は数値分析によって設定することができる。調整された索引が最大索引を上回る場合、プロセッサは、最大索引と等しくなるように調整された索引を設定し、調整された索引が最小索引を下回る場合、プロセッサは、最小索引と等しくなるように調整された索引を設定する(630)。
索引が、600及び602の閾値化プロセスによって、又は604乃至630の現在のデバイス占有率及びステージ・アクティビティに従って設定されると、プロセッサは、索引を用いて、テーブルから調整されたデステージ速度を抽出する(632)。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージする(634)。この技術は、プール内のストレージ・デバイスに関するデステージ速度を決定するために用いられる。条件が変化したとき、この技術を繰り返して、ストレージ・デバイスに関するデステージ速度を更新する。
図7は、特定のコンピューティング環境内の各ストレージ・デバイスについてのデステージ速度を、そのストレージ・デバイスに関連するNVSのデバイス占有率及びステージ・アクティビティの両方に基づいて動的に管理するための1つの実施形態のフローチャートである。この実施形態において、初期索引は、デバイス占有率に基づいて低値に設定され、ステージ・アクティビティ因子のテストされた組み合わせに基づいてインクリメントされる。NVSの合計占有率が90%を上回る場合、プロセッサは、索引を最大索引に設定して終了する(700)。デバイス占有率が10%を下回る場合、プロセッサは、索引をゼロに設定して終了する(702)。他の場合には、プロセッサは、現在のデバイス占有率対最大デバイス占有率の比と索引の数との積と等しくなるように、初期索引を設定する(704)。デバイス・アダプタ上の使用帯域幅が70%を下回る場合、プロセッサは、索引を、ストレージ・デバイスがHDDである場合にはプラス2だけインクリメントし、ストレージ・デバイスがSDDである場合にはプラス4だけインクリメントする(706)。ストレージ・デバイス上の現在のステージ要求の数が10を下回り、デバイス・アダプタ上の現在のステージ要求の数が40を下回る場合、プロセッサは、索引をプラス2だけインクリメントする(708)。閾値のパーセンテージ及び索引のインクリメント量は、代表的なものにすぎない。コンピューティング環境に応じて、他の閾値及びインクリメント、並びにステージ・アクティビティ因子の異なる組み合わせを用いることができる。索引が最大索引を上回る場合、プロセッサは、最大索引と等しくなるように索引を設定する(710)。プロセッサは、索引を用いて、テーブルから調整されたデステージ速度を抽出する(712)。プロセッサは、データを、調整されたデステージ速度でキャッシュからストレージ・デバイスにデステージする(714)。
図8及び図9は、ステージ・アクティビティに部分的に基づいたキャッシング技術の動的管理を用いた場合と用いない場合のキャッシング技術の性能を比較するプロットである。基準手法(baseline approach)はNVSのデバイス占有率のみに基づいてデステージ速度を管理し、一方、本発明の実施形態は、NVSのデバイス占有率をステージ・アクティビティと組み合わせる。図8は、ステージ・アクティビティを用いた場合(実線)800及び用いない場合(破線)802の、1分当たりの平均応答時間(読み出し/書き込み)対DBトランザクションの数をプロットしたものである。ユーザ数及びトランザクション/分が増加するにつれて、NVSのデバイス占有率とステージ・アクティビティを組み合わせたキャッシュ管理は、より良好な応答時間をもたらす。環境が過負荷状態となる「屈曲点」は右にシフトする。図9は、ステージ・アクティビティを用いた場合804と用いない場合806の、1分当たりの288,000のユーザ、約35,000DBトランザクションにおける、読み出しカウント・バケットの分布である。短い読み出しのパーセンテージは、2つの技術においてほぼ等しい。ステージ・アクティビティにおけるファクタリングは、少量ではあるが長い読み出しのパーセンテージを減らす。しかしながら、長い読み出しにおける僅かな改善でも、それらの長い読み出しのためのサービス時間における大きな改善をもたらす。この例においては、排除された300ミリ秒を上回る0.11%の読み出しにより、それらの読み出しによるサービス時間のパーセンテージが約4パーセントだけ減少した。
通常は読み出しキャッシュ・ミスの場合の読み出し応答時間とのみ関連しているステージ・アクティビティ因子を、NVSのデバイス占有率と組み合わせることによって、動的キャッシュ管理の技術が、異なるタイプの作業負荷(読み出し、書き込み、逐次的な、ランダムな)、異なるタイプのストレージ・デバイス、及び異なる速度にわたって、全体の読み出し/書き込み性能を向上させる。より具体的には、ステージ・アクティビティが許容するときにストレージ・デバイスへのデステージ速度を増加させることによって、ホストの書き込み応答時間が改善され、ステージ・アクティビティが要求するときに、デステージ速度を低下させることによって、スループットを犠牲にすることなく読み出し応答時間が改善される。

当業者であれば認識するように、本発明の態様は、システム、方法、又はコンピュータ・プログラムとして具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又は、ソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に、「回路」、「モジュール」、又は「システム」と呼ぶことができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラムの形を取ることができる。
1つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限られるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はクラッシュメモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のいずれかの適切な組み合わせが挙げられる。本明細書の文脈では、コンピュータ可読ストレージ媒体とは、命令実行システム、装置若しくはデバイスによって又はこれらと接続して用いるために、プログラムを収容又は格納することができるいずれかの有形媒体とすることができる。
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限られるものではないが、無線、有線、光ファイバ・ケーブル、RF等、又は上記のいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。本発明の態様に関する動作を実行するためのプログラム・コードは、Java(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、ユーザのコンピュータ上で完全に実行される場合もあり、ユーザのコンピュータ上で部分的に実行される場合もあり、独立したソフトウェア・パッケージとして実行される場合もあり、ユーザのコンピュータ上で部分的に実行され、遠隔コンピュータ上で部分的に実行される場合もあり、又は遠隔コンピュータ若しくはサーバ上で完全に実行される場合もある。一番最後のシナリオの場合、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部のコンピュータへの接続がなされる場合もある(例えば、インタネット・サービス・プロバイダを用いたインターネットを通じて)。
本発明の態様は、本発明の実施形態による方法、装置(システム)、及びコンピュータ・プログラムのフローチャート及び/又はブロック図を参照して、後述される。フローチャート及び/又はブロック図の各ブロック、並びにフローチャート及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを生産し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を生成するようにすることができる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図.の1つ又は複数のブロック内で指定された機能/動作を実装するための命令を含む製品を製造するようにすることもできる。コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードし、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実行させて、コンピュータ実施プロセスを生成し、それにより、コンピュータ又は他のプログラム可能データ処理装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。
上記の図面におけるフローチャート及び/又はブロック図は、1本発明の様々な実施形態による、システム、方法及びコンピュータ・プログラムの可能な実装形態のアーキテクチャ、機能及び動作を示すものである。この点で、フローチャート又はブロック図における各ブロックは、モジュール、セグメント又はコードの一部を表すことができ、これらは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む。幾つかの代替的な実装形態においては、ブロックに記された機能が図面に記された順序通りに行われない場合があることにも留意されたい。例えば、連続して示された2つのブロックが、実際には実質的に同時に実行されることがあり、これらのブロックが、関与する機能に応じて、ときとして逆順で実行されることもある。ブロック図及び/又はフローチャートにおける各ブロック、並びにブロック図及び/又はフローチャートにおけるブロックの組み合わせは、指定された機能若しくは動作を行う専用ハードウェア・ベースのシステム又は専用のハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意されたい。
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図するものではない。本明細書で用いられるとき、単数形「1つの」及び「その」は、そうでないことが示されていない限り、複数形も含むことが意図されている。本明細書で用いられるとき、「含む」及び/又は「含んでいる」という用語は、提示された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を特定するものであるが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらのグループの存在又は追加を排除するものではないことがさらに理解されるであろう。
特許請求の範囲における全ての「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、その機能を、明確に特許請求されているように他の特許請求された要素と組み合わせて実行するための、いかなる構造、材料又は動作をも含むことが意図される。本発明の説明は、例示及び説明の目的で提示されたものであるが、網羅的であることを意図するものではなく、本発明を開示された形態に限定することを意図するものでもない。本発明の範囲及び精神から逸脱することのない多くの変更及び変形が、当業者には明らかであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するため、及び、当業者が本発明を種々の変更を有する種々の実施形態について企図される特定の使用に適したものとして理解することを可能にするために、選択及び記載された。
100:ストレージ・システム
102:ストレージ・エリア・ネットワーク(SAN)
104:ストレージ・コントローラ
106:スイッチ
108、108a〜108e:ストレージ・デバイス
110、110a、110b:サーバ
112:ホスト・アダプタ
113:デバイス・アダプタ
114:プロセッサ
116:メモリ
118:キャッシュ
120:不揮発性ストレージ(NVS)
300:データ
302a〜302e:NVSの部分
400:ストレージ・デバイスのステージ・アクティビティ
402:デバイス・アダプタのステージ・アクティビティ
404:デバイス・アダプタの使用帯域幅
406:ストレージ・デバイスの読み出し/書き込み速度
500:デステージ速度の索引付きテーブル
502:名目値
504:最大値
506:最小値

Claims (8)

  1. デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法であって、
    前記各ストレージ・デバイスに関連する不揮発性ストレージ(NVS)の現在のデバイス占有率に応じて、前記キャッシュからのデータのデステージ速度を適応変化させるステップと、
    少なくとも前記各ストレージ・デバイス上の現在のステージ要求の数を含む、前記各ストレージ・デバイスに関連する現在のステージ・アクティビティに応じて前記デステージ速度を適応調整するステップとを有し、
    前記調整されたデステージ速度は、前記現在のステージ・アクティビティが低い場合には相対的に高くなり、前記現在のステージ・アクティビティが高い場合には相対的に低くなり、
    データを前記調整されたデステージ速度で前記キャッシュから前記各ストレージ・デバイスにデステージし、前記NVSから前記デステージされたデータを破棄するステップをさらに有する、方法。
  2. 前記デステージ速度は、前記各ストレージ・デバイスに関連する前記NVSのデバイス占有率が前記NVSの最大デバイス占有率を上回らないという制約を条件として、前記NVSの所望の合計占有率を維持するように適応変化され、全ての前記ストレージ・デバイスへの、前記NVS内の使用可能スペースの合計最大割り当ては、前記NVS内の使用可能スペースの100パーセントを上回る、請求項1に記載の方法。
  3. 前記デステージ速度は、
    前記NVSの前記合計占有率が最大合計占有率を上回る場合、前記デステージ速度を最大速度に設定し、
    前記NVSの前記デバイス占有率が最小デバイス占有率を下回る場合、前記デステージ速度を最小速度に設定し、
    他の場合には、前記各ストレージ・デバイスに関する前記現在のデバイス占有率対前記最大デバイス占有率の比に基づいて前記デステージ速度を設定する、
    ことによって適応変化される、請求項2に記載の方法。
  4. 前記デステージ速度は、前記デバイス・アダプタ上の現在のステージ要求の数、前記デバイス・アダプタの使用帯域幅及び前記各ストレージ・デバイスの読み出し/書き込み速度のうちの少なくとも1つをさらに含む前記現在のステージ・アクティビティに応じて適応調整される、請求項1ないし請求項3のいずれか1項に記載の方法。
  5. 前記デステージ速度は、前記デバイス・アダプタ上の現在のステージ要求の数、前記デバイス・アダプタの使用帯域幅及び前記各ストレージ・デバイスの読み出し/書き込み速度の各々をさらに含む前記現在のステージ・アクティビティに応じて適応調整される、請求項1に記載の方法。
  6. デステージ速度の索引付きテーブルを準備するステップをさらに有し、
    前記デステージ速度を適応変化させるステップは、前記各ストレージ・デバイスに関連する前記NVSの前記現在のデバイス占有率に基づいて初期索引を計算するステップを含み、
    前記デステージ速度を適応調整するステップは、前記各ストレージ・デバイスに関連する前記現在のステージ・アクティビティに応じて前記初期索引をインクリメント又はデクリメントするステップを含み、
    前記調整された索引に従って、前記テーブルから前記調整されたデステージ速度を読み出すステップをさらに有する、請求項1ないし請求項4のいずれか1項に記載の方法。
  7. デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするためのシステムであって、
    前記キャッシュ及び不揮発性ストレージ(NVS)、並びに前記複数のストレージ・デバイスと通信し、請求項1ないし請求項6のいずれか1項に記載の方法を実行するように適合される、少なくとも1つのプロセッサを備えるシステム
  8. 請求項1ないし請求項6のいずれか1項に記載の方法をコンピュータに実行させるためのコンピュータ・プログラム。
JP2012538366A 2010-02-01 2011-01-05 デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法、システム及びコンピュータ・プログラム Active JP5270801B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/697,385 US8478945B2 (en) 2010-02-01 2010-02-01 Dynamic management of destage tasks in a storage controller
US12/697,385 2010-02-01
PCT/EP2011/050101 WO2011092045A1 (en) 2010-02-01 2011-01-05 Dynamic management of destage tasks in a storage controller

Publications (2)

Publication Number Publication Date
JP2013511081A JP2013511081A (ja) 2013-03-28
JP5270801B2 true JP5270801B2 (ja) 2013-08-21

Family

ID=43857651

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012538366A Active JP5270801B2 (ja) 2010-02-01 2011-01-05 デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法、システム及びコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US8478945B2 (ja)
EP (1) EP2531922B1 (ja)
JP (1) JP5270801B2 (ja)
CN (1) CN102770848B (ja)
CA (1) CA2780220C (ja)
WO (1) WO2011092045A1 (ja)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
WO2011102429A1 (ja) * 2010-02-19 2011-08-25 国立大学法人 東京工業大学 ストレージ装置、その制御方法およびシステム管理プログラム
US8402226B1 (en) * 2010-06-18 2013-03-19 Emc Corporation Rate proportional cache write-back in a storage server
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8806122B2 (en) 2011-05-23 2014-08-12 International Business Machines Corporation Caching data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8799578B2 (en) * 2011-05-23 2014-08-05 International Business Machines Corporation Managing unmodified tracks maintained in both a first cache and a second cache
US8793436B2 (en) 2011-05-23 2014-07-29 International Business Machines Corporation Cache management of tracks in a first cache and a second cache for a storage
TWI447643B (zh) * 2011-06-17 2014-08-01 Mstar Semiconductor Inc 資料存取方法以及可存取資料的電子裝置
CN102279714B (zh) * 2011-08-26 2014-03-26 上海文广科技(集团)有限公司 Io请求控制方法和装置
US9262321B2 (en) 2011-11-17 2016-02-16 International Business Machines Corporation Adjustment of destage rate based on read and write response time requirements
US8838905B2 (en) 2011-11-17 2014-09-16 International Business Machines Corporation Periodic destages from inside and outside diameters of disks to improve read response time via traversal of a spatial ordering of tracks
JP5674634B2 (ja) 2011-12-28 2015-02-25 株式会社東芝 コントローラ、記憶装置およびプログラム
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9552297B2 (en) 2013-03-04 2017-01-24 Dot Hill Systems Corporation Method and apparatus for efficient cache read ahead
US8930619B2 (en) * 2012-05-29 2015-01-06 Dot Hill Systems Corporation Method and apparatus for efficiently destaging sequential I/O streams
US9684455B2 (en) 2013-03-04 2017-06-20 Seagate Technology Llc Method and apparatus for sequential stream I/O processing
US9053038B2 (en) 2013-03-05 2015-06-09 Dot Hill Systems Corporation Method and apparatus for efficient read cache operation
US9507524B1 (en) 2012-06-15 2016-11-29 Qlogic, Corporation In-band management using an intelligent adapter and methods thereof
CN103514111A (zh) * 2012-06-21 2014-01-15 华为技术有限公司 一种Cache的替换方法及装置
US9342463B2 (en) * 2012-09-20 2016-05-17 International Business Machines Corporation Management of destage tasks with large number of ranks
US9122576B2 (en) 2012-09-28 2015-09-01 International Business Machines Corporation Fuzzy counters for NVS to reduce lock contention
US9703527B2 (en) * 2012-12-31 2017-07-11 Sandisk Technologies Llc Storage device and method for reallocating storage device resources based on an estimated fill level of a host buffer
US9152563B2 (en) 2013-03-04 2015-10-06 Dot Hill Systems Corporation Method and apparatus for processing slow infrequent streams
US9158687B2 (en) 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US20140337598A1 (en) * 2013-05-07 2014-11-13 Lsi Corporation Modulation of flash programming based on host activity
US9423978B2 (en) * 2013-05-08 2016-08-23 Nexgen Storage, Inc. Journal management
JP6366717B2 (ja) * 2013-09-27 2018-08-01 インテル・コーポレーション 複数のデバイスにわたる複数のメモリリソースを構成するための技術
US9632945B2 (en) * 2013-11-12 2017-04-25 International Business Machines Corporation Destage grouping for sequential fast write tracks
US9298397B2 (en) 2013-11-12 2016-03-29 Globalfoundries Inc. Nonvolatile storage thresholding for ultra-SSD, SSD, and HDD drive intermix
JP2015111334A (ja) * 2013-12-06 2015-06-18 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
US9454305B1 (en) 2014-01-27 2016-09-27 Qlogic, Corporation Method and system for managing storage reservation
US9423980B1 (en) 2014-06-12 2016-08-23 Qlogic, Corporation Methods and systems for automatically adding intelligent storage adapters to a cluster
US9436654B1 (en) 2014-06-23 2016-09-06 Qlogic, Corporation Methods and systems for processing task management functions in a cluster having an intelligent storage adapter
US9477424B1 (en) 2014-07-23 2016-10-25 Qlogic, Corporation Methods and systems for using an intelligent storage adapter for replication in a clustered environment
US9460017B1 (en) 2014-09-26 2016-10-04 Qlogic, Corporation Methods and systems for efficient cache mirroring
EP3021209A1 (en) * 2014-11-14 2016-05-18 Dot Hill Systems Corporation Method and apparatus for processing slow infrequent streams
EP3021208B1 (en) * 2014-11-14 2019-01-09 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9483207B1 (en) 2015-01-09 2016-11-01 Qlogic, Corporation Methods and systems for efficient caching using an intelligent storage adapter
CN106293503B9 (zh) * 2015-06-23 2019-06-28 株式会社东芝 磁盘装置及控制方法
US9959052B1 (en) * 2015-09-17 2018-05-01 Western Digital Technologies, Inc. Media based cache for data storage device
US10628331B2 (en) * 2016-06-01 2020-04-21 International Business Machines Corporation Demote scan processing to demote tracks from cache
US10956322B2 (en) 2016-06-02 2021-03-23 International Business Machines Corporation Storage drive dependent track removal in a cache for storage
US11169731B2 (en) * 2016-10-31 2021-11-09 International Business Machines Corporation Managing storage resources in a dispersed storage network
US10664170B2 (en) * 2016-12-14 2020-05-26 Microsoft Technology Licensing, Llc Partial storage of large files in distinct storage systems
US10162756B2 (en) * 2017-01-18 2018-12-25 Intel Corporation Memory-efficient last level cache architecture
US10481800B1 (en) * 2017-04-28 2019-11-19 EMC IP Holding Company LLC Network data management protocol redirector
US10929034B2 (en) 2018-05-08 2021-02-23 International Business Machines Corporation Allocation of task control blocks in a storage controller for staging and destaging based on storage rank response time
US11321133B2 (en) 2018-06-08 2022-05-03 International Business Machines Corporation Determining an allocation of stage and destage tasks by using a machine learning module
CN109032503B (zh) * 2018-06-14 2021-04-16 浙江大华存储科技有限公司 一种固态硬盘数据迁移带宽的流控方法及装置
US10628241B2 (en) 2018-07-31 2020-04-21 International Business Machines Corporation Determining when to send message to computing node to process items by training a machine learning module
US10747596B2 (en) 2018-07-31 2020-08-18 International Business Machines Corporation Determining when to send message to a computing node to process items using a machine learning module
US10901906B2 (en) 2018-08-07 2021-01-26 International Business Machines Corporation Write data allocation in storage system
US11222265B2 (en) * 2018-10-25 2022-01-11 International Business Machines Corporation Perform destages of tracks with holes in a storage system by training a machine learning module
US10901904B2 (en) 2018-10-25 2021-01-26 International Business Machines Corporation Using a machine learning module to perform destages of tracks with holes in a storage system
US10740238B2 (en) 2018-11-12 2020-08-11 International Business Machines Corporation Dynamically determining cache destage rates for multiple storage arrays
US10795602B1 (en) * 2019-05-31 2020-10-06 International Business Machines Corporation Selectively destaging data updates from write caches across data storage locations
US11151053B2 (en) * 2019-08-07 2021-10-19 International Business Machines Corporation Increasing data read and/or write heat tracking resolution in storage devices having cache architecture

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2017458C (en) * 1989-07-24 2000-10-10 Jonathan R. Engdahl Intelligent network interface circuit
JPH064401A (ja) 1992-06-19 1994-01-14 Fujitsu Ltd メモリアクセス回路
JP3335030B2 (ja) 1995-03-13 2002-10-15 株式会社タクマ プーリ用クリーニング機構を備えたチェーンコンベア装置及びコンベアプーリのクリーニング方法
US5751292A (en) 1995-06-06 1998-05-12 Hewlett-Packard Company Texture mapping method and system
JPH09244955A (ja) * 1996-03-11 1997-09-19 Toshiba Corp キャッシュメモリ制御方法及びその装置
US6775738B2 (en) 2001-08-17 2004-08-10 International Business Machines Corporation Method, system, and program for caching data in a storage controller
US6785771B2 (en) 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
JP4322068B2 (ja) 2003-03-07 2009-08-26 富士通株式会社 ストレージシステム及びそのデイスク負荷バランス制御方法
US7191207B2 (en) 2003-06-11 2007-03-13 International Business Machines Corporation Apparatus and method to dynamically allocate bandwidth in a data storage and retrieval system
JP4508608B2 (ja) 2003-11-13 2010-07-21 株式会社日立製作所 統合キャッシュを備えた記憶装置アダプタ
US7899754B2 (en) * 2004-12-03 2011-03-01 International Business Machines Corporation Enablement of system features with improved feature key
US7539815B2 (en) 2004-12-29 2009-05-26 International Business Machines Corporation Method, system and circuit for managing task queues in a disk device controller
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
JP5076418B2 (ja) 2006-09-19 2012-11-21 ソニー株式会社 共有メモリ装置

Also Published As

Publication number Publication date
CA2780220A1 (en) 2011-08-04
JP2013511081A (ja) 2013-03-28
CN102770848A (zh) 2012-11-07
EP2531922B1 (en) 2013-09-18
EP2531922A1 (en) 2012-12-12
CN102770848B (zh) 2015-12-16
US8478945B2 (en) 2013-07-02
US20110191534A1 (en) 2011-08-04
WO2011092045A1 (en) 2011-08-04
CA2780220C (en) 2018-03-13

Similar Documents

Publication Publication Date Title
JP5270801B2 (ja) デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法、システム及びコンピュータ・プログラム
US8886880B2 (en) Write cache management method and apparatus
US8972661B2 (en) Dynamically adjusted threshold for population of secondary cache
US8930619B2 (en) Method and apparatus for efficiently destaging sequential I/O streams
US8095738B2 (en) Differential caching mechanism based on media I/O speed
JP2015518987A (ja) フラッシュストレージのためのi/oアクセスパターンの特殊化
US11151035B2 (en) Cache hit ratios for selected volumes within a storage system
US20150169450A1 (en) Method and apparatus for processing slow infrequent streams
US7870335B2 (en) Host adaptive seek technique environment
EP2988222B1 (en) Method and apparatus for efficiently destaging sequential i/o streams
US9298397B2 (en) Nonvolatile storage thresholding for ultra-SSD, SSD, and HDD drive intermix
Kim et al. Flash-Conscious Cache Population for Enterprise Database Workloads.
US11163698B2 (en) Cache hit ratios for selected volumes using synchronous I/O
KR102264544B1 (ko) 데이터 생성 또는 소비에 기반하여 캐시된 입출력 데이터를 필터링하는 방법
US11169919B2 (en) Cache preference for selected volumes within a storage system
US11237730B2 (en) Favored cache status for selected volumes within a storage system
US11620226B2 (en) Non-favored volume cache starvation prevention
US11176052B2 (en) Variable cache status for selected volumes within a storage system
US11663144B2 (en) LRU list reorganization for favored and unfavored volumes

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130124

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130213

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130321

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130509

R150 Certificate of patent or registration of utility model

Ref document number: 5270801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150