(57)【要約】【課題】データストレージシステムのサービス品質コントローラなどを提供する。【解決手段】複数のストレージシステムの仕事負荷についての要求に優先順位が付けられて、ストレージデバイスキュー（１１８）へ選択的に転送され、優先順位に従って、その目標キュー深度が、要求の待ち時間値に応じて調整され、維持される。この待ち時間値は、各仕事負荷について要求の到着時刻と完了時刻との差に基づいて計算される。要求への優先順位の付与は、要求の監視された到着時刻とその仕事負荷の目標待ち時間とに基づいて、要求の目標デッドラインを計算することにより行われる。待ち時間を削減のために、仕事負荷の目標待ち時間がその計算値よりも小さい場合に、目標キュー深度を削減することができる。スループットを増加させるために、各仕事負荷の目標待ち時間が、その計算値よりも大きい場合に、目標キュー深度が増加される。
2006521640.tif 000002
【特許請求の範囲】
【請求項１】
データストレージのサービス品質方法であって、
複数の仕事負荷のそれぞれについての複数の要求に優先順位を付けることと、
前記優先順位を付けることに従って前記要求をキュー（１１８）に選択的に転送することであって、前記キュー（１１８）を目標キュー深度に維持し、完了した要求は前記キュー（１１８）から削除される、前記要求をキューに選択的に転送することと、
前記要求の待ち時間値に応じて前記目標キュー深度を調整することであって、前記待ち時間値は、複数の前記要求の到着時刻と完了時刻との差に基づいて計算されることと
を含むサービス品質方法。
【請求項２】
前記優先順位を付けることは、
要求の目標デッドラインを計算すること
を含む請求項１に記載のサービス品質方法。
【請求項３】
期限が経過した目標デッドラインを有するあらゆる要求を、前記キュー（１１８）に転送すること
をさらに含む請求項２に記載のサービス品質方法。
【請求項４】
期限が経過した目標デッドラインを有するあらゆる要求を前記転送することは、
到達キュー深度が、前記目標キュー深度を超える場合であっても実行される
請求項３に記載のサービス品質方法。
【請求項５】
前記要求の到着時刻を監視すること
をさらに含む請求項２に記載のサービス品質方法。
【請求項６】
前記要求の前記仕事負荷は、
目標待ち時間
を有し、
前記要求の前記目標デッドラインを前記計算することは、
前記仕事負荷の前記目標待ち時間を、前記要求の前記到着時刻と組み合わせること
を含む
請求項５に記載のサービス品質方法。
【請求項７】
ある時間間隔の間、前記仕事負荷の要求を開始することであって、前記仕事負荷の要求レートを求めること
をさらに含む請求項６に記載のサービス品質方法。
【請求項８】
前記要求レートに基づいて、前記目標待ち時間を調整すること
をさらに含む請求項７に記載のサービス品質方法。
【請求項９】
前記計算された待ち時間値は、目標待ち時間を有する仕事負荷用であり、
前記目標キュー深度を前記調整することは、
前記仕事負荷の前記目標待ち時間が前記計算された待ち時間値よりも小さいときに、前記目標キュー深度を削減すること
を含む
請求項１に記載のサービス品質方法。
【請求項１０】
前記計算された待ち時間値は、目標待ち時間を有する仕事負荷用であり、
各仕事負荷は、
目標待ち時間及び計算された待ち時間値
を有し、
前記目標キュー深度値を前記調整することは、
各目標待ち時間が計算された各待ち時間値よりも大きいときに、前記目標キュー深度を増加させること
を含む請求項１に記載のサービス品質方法。
【請求項１１】
ストレージシステムのサービス品質装置（１０４）であって、
複数の仕事負荷から要求を受け取る複数の入力キュー（１１０）であって、各仕事負荷は、対応する前記入力キュー（１１０）に割り当てられ、各入力キューの要求は優先順位が付けられる複数の入力キューと、
各仕事負荷の要求の性能値を監視するモニタ（１１４）と、
前記入力キュー（１１０）からストレージデバイスキュー（１１８）へ前記要求を選択的に転送するスケジューラ（１１２）であって、前記ストレージデバイスキュー（１１８）の目標深度に従い、最も高い優先順位の前記要求を選択して、前記ストレージデバイスキュー（１１８）へ転送するスケジューラと、
各仕事負荷の前記要求の前記性能値に従って、前記ストレージデバイスキュー（１１８）の前記目標深度を調整するコントローラ（１１６）と
を有するサービス品質装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージシステムに関する。
より詳細には、本発明は、サービス品質（ＱｏＳ）についてのデータストレージシステムの制御に関する。
【０００２】
この出願は、２００３年３月２７日に出願された「Data Storage System Emulation」という発明の名称の米国出願第１０／４００，２３２号に関連したものである。
この米国出願の内容は、参照により本明細書に援用される。
【背景技術】
【０００３】
［発明の背景］
技術の進歩といった要因により、コンピュータハードウェアのコストの削減、及び、デジタルデータの量を増加させるワールドワイドウェブの成長が、世界規模で起こっている。
例えば、企業、行政、及び家庭におけるコンピュータシステムは、テキスト形式及び他の文書形式のデータ、データベース、マルチメディアファイル、電子メール通信、ウェブページ、トランザクションレコード等を生成するのに使用される。
その結果、データストレージ要求は、非常に大きなものとなり、次第に増大している。
【０００４】
データストレージシステムは、この増加する要求により推進されて、より大きく、且つより複雑になっている。
例えば、現代のデータセンタは、数十個の大きなアレイならびに数千個の論理ボリューム及びファイルシステムを含む場合がある。
このようなデータセンタは、大きな組織、さらには複数の組織のストレージ要求に役立つことができる。
【０００５】
組織が、そのデータ記憶及び管理の要求をストレージサービスプロバイダ（ＳＳＰ）に外部委託することがますます増加している。
ＳＳＰは、その顧客に利用可能とするストレージを自身のディスクアレイ上に割り当てる。
組織は、機器を購入し、適切な人材を雇うことによって内部で自身のストレージ要求を満たすことができると同時に、その別々の部門にストレージサービスを提供するためのＳＳＰモデルに内部で従うこともできる。
【０００６】
各顧客が受け取るサービスレベルを、例えば容量、可用性、及び性能レベルの点で指定できることが望ましい。
しかしながら、これは、各顧客、キャッシュ空間、ディスク、バス、ネットワーク帯域幅等のストレージ資源、及び、ストレージコントローラのプロセスサイクルを得るために競争するＳＳＰに独自の負荷を提供することから、ＳＳＰとの関連で困難になる可能性がある。
さらに、ストレージシステムは、通常、要求の発生元にかかわらず、すべての要求に対してベストエフォート型のサービスを提供するように設計される。
【０００７】
各仕事負荷が十分なサービスを受け取ることを確実にすることを試みる１つの手法は、過剰な容量及び帯域幅を有するストレージシステムを過剰供給することである。
しかしながら、この技法は、追加された資源がシステムのコストを増加させるので、一般にコスト効率が良くない。
別の手法は、各仕事負荷に別々の物理資源（例えば、１つ又は複数の専用ディスクアレイ）を割り当てることである。
この技法は、追加される容量又は帯域幅を一般に任意の増加量で追加できない代わりに、仕事負荷の要件が変化すると、広範囲の再構成が必要とされる場合がある点で、柔軟性に欠ける傾向がある。
【特許文献１】米国特許第６１７００４２号
【特許文献２】米国特許第６４３４６３１号
【特許文献３】米国特許第５６８０５３９号
【特許文献４】米国特許第６１５７９６３号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、特定の仕事負荷が、複数の仕事負荷をハンドリングするストレージシステムから受け取るサービスレベルを指定できる改善された機能が必要とされている。
本発明が対象とするのはこの目的である。
【課題を解決するための手段】
【０００９】
［発明の概要］
本発明は、データストレージシステムのサービス品質コントローラ及び関連した方法である。
１態様では、本発明は、データストレージのサービス品質方法及びサービス品質装置を提供する。
複数のストレージシステムの仕事負荷のそれぞれについての要求に優先順位が付けられる。
これらの要求は、ストレージデバイスキューを目標キュー深度に維持するために、その優先順位に従ってストレージデバイスキューへ選択的に転送される。
この目標キュー深度は、要求の待ち時間値に応じて調整される。この待ち時間値は、各仕事負荷について要求の到着時刻と完了時刻との差に基づいて計算される。
【００１０】
要求に優先順位を付けることは、要求の監視された到着時刻と仕事負荷の目標待ち時間とに基づいて要求の目標デッドラインを計算することにより行うことができる。
仕事負荷の目標待ち時間は、その仕事負荷の要求レートに基づくことができる。
待ち時間を削減するために、仕事負荷の目標待ち時間がその計算された待ち時間値よりも小さい場合に、目標キュー深度を削減することができる。
スループットを増加させるために、各仕事負荷の目標待ち時間が、計算された各待ち時間値よりも大きい場合に、目標キュー深度を増加させることができる。
要求をデバイスキューに上記転送した結果として、デバイスキューは到達キュー深度を有する。
したがって、目標キュー深度値を増加させることは、到達キュー深度が目標キュー深度によって制限される場合に実行することができる。
【００１１】
別の態様では、各仕事負荷が複数の要求を含んでいた場合に、関数が、複数の仕事負荷のそれぞれについて許容可能な待ち時間の統計値を指定する。
要求は、スケジューリングされて、データストレージデバイスへ転送され、監視された待ち時間統計値は、各仕事負荷の許容可能な待ち時間統計値の範囲内に概ね維持される。
各要求の目標デッドラインに従って要求に優先順位を付けることによって、それら要求をスケジューリングすることができる。
データストレージデバイスにおいて目標キュー深度を維持するために、要求を転送することができる。
仕事負荷の許容可能な待ち時間統計値が、監視された待ち時間統計値よりも小さい場合に、目標キュー深度を削減することができる。
さらに、許容可能な各待ち時間統計値が、監視された各待ち時間統計値よりも大きい場合に、目標キュー深度を増加させることができる。
【００１２】
本発明のこれらの態様及び他の態様は、本明細書でより詳細に説明される。
【発明を実施するための最良の形態】
【００１３】
［好ましい実施の形態の詳細な説明］
本発明は、データストレージシステムのサービス品質コントローラ及び関連した方法を提供する。
本発明は、ホストからの入出力（Ｉ／Ｏ）要求を途中で捕捉して、それらＩ／Ｏ要求をストレージデバイスへ転送すると同時に、それらＩ／Ｏ要求が転送されるレートを選択的に調節することによって、１つ又は複数のホストと１つ又は複数のストレージデバイスとの間の仮想化レベルを追加する。
各要求は、ストレージデバイスへの配信についてスケジューリングされると同時に、その完了が監視される。
完了した要求から得られた統計的な情報に基づいて、その後、各仕事負荷の所望の性能を維持しようとして、スケジューリングを変更することができる。
本発明は、一定の性能分離（performance isolation）を提供して、或る仕事負荷が経験する性能が他の仕事負荷の変動による影響をあまり受けず、性能目標が満たされることをより確実にする。
ストレージ資源間で複数の仕事負荷をバランスさせることによって、資源が効率的に利用される。
【００１４】
図１は、本発明の１態様によるデータストレージ管理システム１００を示している。
このシステム１００は、容量計画器（capacity planner）１０２、サービス品質コントローラ１０４、及び１つ又は複数のハードディスクアレイ等のストレージデバイス（複数可）１０６を含む。
【００１５】
容量計画器１０２は、１つ又は複数の仕事負荷の仕様を入力として受け取る。
例えば、システムアドミニストレータがこの入力を提供することができる。
仕事負荷の仕様は、例えば、各仕事負荷によって必要とされる複数のストア（すなわち、仮想化されたストレージ空間）、及び、各仕事負荷によって必要とされる容量（すなわち、ストレージ空間の量）を含むことができる。
これに加えて、要求生成速度に基づく許容可能なＩ／Ｏ要求待ち時間等の仕事負荷の性能目標もシステム１００に入力することができる。
容量計画器１０２は、デバイス１０６にストアを割り当てることによって、各仕事負荷のストレージをストレージデバイス１０６に割り当て、また、デバイス１０６が仕事負荷の集約した要求を満たすのに十分な容量及び帯域幅を確実に有するようにする。
この割り当ては、仕事負荷の変化する要件及びデバイス１０６の構成の変更を満たすように定期的に変更することができる。
容量計画器１０２は、容量計画ステップを実行するようにプログラミングされた汎用コンピュータシステムとして実施することができる。
容量計画器によって示されたデバイス１０６の物理構成は、例えば、システムアドミニストレータが実行することができる。
【００１６】
１態様では、容量計画器１０２は、２００１年１０月２３日に出願された「Automated System Adaptation Technique Particularly for Data Storage Systems」という発明の名称の米国特許出願第１０／０４６，４６３号に従って動作する。
この米国特許出願の内容は、参照により本明細書に援用される。
この計画器１０２では、仕事負荷の下でのストレージデバイス１０６のオペレーションを解析すること、その解析に基づいて新たな設計を生成すること、及び、その新たな設計に既存のシステムを移行させることを含む一連のステップが、繰り返しループで実行される。
これらのタスクをプログラムとして繰り返すことによって、容量計画は、過剰供給されることなく、仕事負荷をサポートする容量計画に収束する。
【００１７】
別の態様では、容量計画器１０２は、２００１年８月７日に出願された「Simultaneous Array Configuration and Store Assignment for a Data Storage System」という発明の名称の米国特許出願第０９／９２４，７３５号に従って動作する。
この米国特許出願の内容は、参照により本明細書に援用される。
この計画器１０２では、複数のノードを有するデータ構造体が、コンピュータ可読メモリに記憶される。
それらのノードの少なくともいくつかは、各属性を有する物理的なデータストレージデバイス１０６に対応する。
仕事負荷によって使用される複数のデータストアは、それぞれ、入力として提供される容量要件や帯域幅要件等のデータストレージ要件を有する。
これらのデータストアは、再帰的に階層に割り当てられ、各ノードにおいて、ストアの要件が属性のいずれも上回らないことがチェックされる。
ストアが割り当てられている間、ストアによりよく適合するように階層を変更することができる。
どの属性にも違反しない可能な割り当てを、システムの目標に従って互いに比較することができる。
【００１８】
図１のシステム１００に使用される上述した容量計画器１０２は例示である。
したがって、別の計画器を選択できることは明らかである。
さらに、この容量計画は、従来の手動による技法に従って実行することもできる。
【００１９】
ホストシステム１０８は、例えば、１つ又は複数のアプリケーションが実行されて、それらのアプリケーションがストレージデバイス１０６に対するＩ／Ｏ要求（すなわち、読み出しオペレーション及び書き込みオペレーション）を生成するコンピュータシステムを含むことができる。
各仕事負荷は、１つ又は複数のホスト１０８、及び／又は、１つ又は複数のホスト１０８で実行されているアプリケーションによって生成された一続きのＩ／Ｏ要求を含む。
例えば、特定の仕事負荷は、ホスト１０８のうちの単一のホストによって、又は、ホスト１０８のうちのいくつかで実行されている特定のアプリケーションによって生成された要求のすべてから成ることがある。
別の例として、ホスト又はアプリケーションによって生成された要求は、読み出し要求及び書き込み要求に分割することができる。
この場合、読み出し要求が或る仕事負荷を表し、書き込み要求が別の仕事負荷を表す。
【００２０】
サービス品質コントローラ１０４は、１つ又は複数のホストシステム１０８によって生成されたＩ／Ｏ要求を受け取る。
これに応答して、コントローラ１０４は、ストレージデバイス１０６と通信して、それらの要求を完了する。
これに加えて、コントローラ１０４は、容量計画器１０２からストレージ割り当て情報を受け取ることもできる。
コントローラ１０４は、このストレージ割り当て情報を使用して、各要求が属する特定の仕事負荷を特定することができる。
コントローラ１０４が仕事負荷の性能目標を満たすのに使用可能でない場合、コントローラ１０４は、過負荷アラームを通信すること等によって、容量計画器１０２に信号で伝えることができる。
これが行われると、容量計画器１０２は、デバイス１０６にストアを再割り当てすること、デバイス１０６を、より多くの容量及び／又は帯域幅を有する他のデバイスと交換すること、又はデバイス１０６の個数又はデバイス１０６のコンポーネントの個数を増加させてデバイス１０６の全体の容量及び／又は帯域幅を増加させること等によって、適切な動作を取ることができる。
【００２１】
各仕事負荷の性能目標は、１対の曲線によって指定することができる。
この１対の曲線の各曲線は、時間ウィンドウｗの期間で平均化されて提供された要求レートの関数としての読み出し待ち時間及び書き込み待ち時間を指定する。
図２Ａ及び図２Ｂは、仕事負荷の例示の性能要件を示している。
より具体的には、図２Ａは、横軸に、毎秒のＩ／Ｏの個数による読み出し要求の発行レートを有し、縦軸に、ミリ秒による上限の最大待ち時間（期間ｗで平均されたもの）を有するグラフを示している。
待ち時間は、所与の要求を処理するのに必要とされる時間である。
この待ち時間は、コントローラ１０４がホスト１０８から要求を受信した時と、ストレージデバイス１０６がその要求を完了した時との間に経過した時間として計測することができる。
図２Ａに示すように、読み出し要求レートが毎秒１０個のＩ／Ｏ未満である場合、１０ｍｓの最大待ち時間が認められる。
読み出し要求レートが毎秒１０個のＩ／Ｏと２０個のＩ／Ｏとの間である場合、１５ｍｓの最大待ち時間が認められ、読み出し要求レートが毎秒２０個のＩ／Ｏと３０個のＩ／Ｏとの間である場合、２０ｍｓの最大待ち時間が認められる。
これに加えて、読み出し要求レートが毎秒３０個のＩ／Ｏと４０個のＩ／Ｏとの間である場合、２５ｍｓの最大待ち時間が認められる。
必要ではないが、Ｉ／Ｏ要求レートが毎秒４０個のＩ／Ｏを超える場合、待ち時間に対して制限は与えられない。
【００２２】
図２Ｂは、書き込み要求の待ち時間の制限のグラフを示している。
図２Ｂに示すように、書き込み要求レートが毎秒１０個のＩ／Ｏ未満である場合、２０ｍｓの最大待ち時間が認められる。
書き込み要求レートが毎秒１０個のＩ／Ｏと２０個のＩ／Ｏとの間である場合、３０ｍｓの最大遅延時間が認められ、書き込み要求レートが毎秒２０個のＩ／Ｏと３０個のＩ／Ｏとの間である場合、４０ｍｓの最大待ち時間が認められる。
これに加えて、書き込み要求レートが毎秒３０個のＩ／Ｏと４０個のＩ／Ｏとの間である場合、５０ｍｓの最大待ち時間が認められる。
図２Ａと同様に、Ｉ／Ｏ要求レートが毎秒４０個のＩ／Ｏを超える場合、待ち時間に対して制限は与えられない。
読み出し要求についての図２Ａに示す性能要件と書き込み要求についての図２Ｂに示す性能要件とは異なるが、同じ要件が双方に適用される場合があることは明らかであろう。
さらに、待ち時間の制限をより少なく指定することもできるし、より多く指定することもできる。
例えば、図３は、毎秒４０個のＩ／Ｏ未満のすべての要求レートに対して、２０ｍｓの単一の待ち時間制限が適用されるグラフを示している。
【００２３】
一般に、これらの２つの曲線は、３要素のベクトル（vector of triples）（（ｒ１，ｔｒ１，ｔｗ１），（ｒ２，ｔｒ２，ｔｗ２），…，（ｒｎ，ｔｒｎ，ｔｗｎ））として表すことができる。
ここで、０＜ｒ１＜…＜ｒｎであり、ｒは要求レートであり、ｔｒは読み出し要求の最大待ち時間であり、ｔｗは書き込み要求の最大待ち時間である。
ｒｎを超える要求レートについての待ち時間には制限が与えられないので、これは、ｔｒｎ＋１＝ｔｗｎ＋１＝∞として表すことができる。
したがって、図２Ａの曲線及び図２Ｂの曲線は、（（１０ＩＯ／ｓ，１０ｍｓ，２０ｍｓ），（２０ＩＯ／ｓ，１５ｍｓ，３０ｍｓ），（３０ＩＯ／ｓ，２０ｍｓ，４０ｍｓ），（４０ＩＯ／ｓ，２５ｍｓ，５０ｍｓ））として表すことができる。
【００２４】
時間は、ｗのウィンドウ（エポック（epoch））に分割することができる。
各ウィンドウｗは、約１秒程度の長さとすることができるが、別のウィンドウの長さを選択することもできる。
したがって、最大待ち時間を超えるかどうかを判断するために、計測された待ち時間は、ｗの期間にわたって平均化される。
したがって、全Ｉ／Ｏ要求のうち読み出し要求の割合がｆｒである仕事負荷が性能要件を満たすには、どの時間ウィンドウｗｉの平均待ち時間も、前のウィンドウｗにわたる平均要求レートがｒｉよりも小さい場合に、ｆｒ＊ｔｒｉ＋（１−ｆｒ）ｔｗｉを超えるべきではない。
この公式は、仕事負荷が読み出しのみである場合には待ち時間の限度がｔｒｉであることを意味し、仕事負荷が書き込みのみである場合には待ち時間の限度がｔｗｉであることを意味し、仕事負荷が読み出し／書き込みの混合したものである場合には待ち時間の限度が２つの限度を線形補間したものであることを意味する。
しかしながら、計測された待ち時間をこのように組み合わせる必要はない。
特に、仕事負荷が、観測された読み出し待ち時間又は観測された書き込み待ち時間によって支配される場合には、例えば、要求の調節は、その一方又は他方のみに基づくことができる。
また、待ち時間の目標が読み出し要求及び書き込み要求について同じである場合、それぞれについて観測された待ち時間を区別する必要もない。
【００２５】
一般に、仕事負荷の性能目標は、その仕事負荷の計測可能な特性の任意の組に基づいた、必要とされる待ち時間を特定する任意の計算可能な関数とすることができる。
例えば、待ち時間は、Ｉ／Ｏサイズの関数又はＩ／Ｏサイズの組み合わせとして、且つ、要求が読み出しであるのか、それとも書き込みであるのかで指定することができる。
この関数は、数学関数とすることもできるし、この場合のように、テーブルによって指定することもできる。
読み出し及び書き込みの性能目標は、ここでは、単一の目的関数に組み合わされるが、それら性能目標は別々にしておくこともできる。
例えば、仕事負荷からの読み出し要求及び書き込み要求は、別々の入力キューに入れることができ、別々の待ち時間の限度を各キューに関連付けることができる。
同様に、他の基準に基づいて、要求を別々の入力キューに分離することもできる。
例えば、性能目標が、小さなＩ／Ｏ（例えば、６４ＫＢ未満）及び大きなＩ／Ｏ（例えば、６４ＫＢ以上）について別々の待ち時間関数を指定する場合、大きなＩ／Ｏ要求及び小さなＩ／Ｏ要求を別々の入力キューに分離することができ、対応する性能要件をそれらＩ／Ｏ要求に別々に適用することができ、それによって、それらＩ／Ｏ要求を別々の仕事負荷として扱うことができる。
【００２６】
図４は、図１のサービス品質ストレージコントローラ１０４の１実施の形態をより詳細に示している。
コントローラ１０４は、入力キュー１１０、Ｉ／Ｏスケジューラ１１２、Ｉ／Ｏモニタ１１４、及びＩ／Ｏコントローラ１１６を含む。
キュー１１０は、バッファとして構成されたメモリデバイスによって実施することができる一方、スケジューラ１１２、モニタ１１４、及びコントローラ１１６は、汎用若しくは専用のハードウェア及び／又はソフトウェアによって実施することができる。
【００２７】
また、図４は、従来通りストレージシステムの一部であり、したがって、デバイス１０６に含まれるデバイスキュー１１８も示している。
ＱｏＳコントローラ１０４がない場合、要求は、ホスト１０８からデバイスキュー１１８へ直接非知的に配信される。
デバイスキュー１１８からの要求の削除及びデバイスキュー１１８内での要求のソートは、デバイス１０６の制御下で行うことができ、したがって、デバイスキュー１１８は、ＱｏＳコントローラ１０４から独立して動作する。
例えば、一般のストレージデバイス（デバイス１０６で使用できる）は、デバイスキュー１１８の要求の中でそれら要求をソートするための、デバイスの製造者に独自の方式を実施することができる。
したがって、本発明は、商用のストレージデバイスと互換性を有する。
一方、ＱｏＳコントローラ１０４は、デバイスキュー１１８への要求の流れを制御する。
【００２８】
（例えば、ホスト１０８から）ＱｏＳコントローラ１０４に到着した要求は、入力キュー１１０に入れられる。
入力キュー１１０では、各仕事負荷からの要求は、好ましくは、キュー１００のうちの特定の１つに割り当てられる。
Ｉ／Ｏモニタ１１４及びＩ／Ｏコントローラ１１６からの繰り返される入力に基づいて、スケジューラ１１２は、デバイスキュー１１８の目標のキュー深度値、及び、スケジューラ１１２が維持しようと試みる仕事負荷ごとの待ち時間目標値を保持する。
【００２９】
スケジューラ１１２は、各仕事負荷についての要求に、その同じ仕事負荷における他の要求に対して優先順位を付ける。
これは、アーリストデッドラインファースト（ＥＤＦ（earliest deadline first））スケジューリングを使用して行うことができる。
このＥＤＦスケジューリングでは、仕事負荷Ｗｋからの要求のデッドラインは、その要求の到着時刻ａｒｒｉｖａｌＴｉｍｅ（Ｗｋ）に、その仕事負荷の待ち時間目標値ｌａｔｅｎｃｙＴａｒｇｅｔ（Ｗｋ）を加えたものとして計算される。
したがって、仕事負荷Ｗｋからの要求のデッドラインは、ａｒｒｉｖａｌＴｉｍｅ（Ｗｋ）＋ｌａｔｅｎｃｙＴａｒｇｅｔ（Ｗｋ）として計算することができる。
この仕事負荷のデッドラインは、その仕事負荷における最も古い保留中の要求と同じであると考えられる。
【００３０】
スケジューラ１１２は、デバイスキュー１１８を定期的にポーリングして、その時点のキュー深度（すなわち、キュー１１８において保留中の要求の個数）を求める。
代替的に、例えば、デバイス１０６がデバイスキュー１１８の深度の報告をサポートしていない場合に、スケジューラ１１２は、モニタ１１４からのＩ／Ｏ要求の到着及び完了の情報に基づいて現在のデバイスキュー深度を計算することもできる。
好ましくは、キュー深度は、定期的に（例えば、１ｍｓごとに）ポーリングされ、また、Ｉ／Ｏ要求の完了時にもポーリングされる。
仕事負荷からの要求は、指定された状況下でデバイスキュー１１８へ転送される。
すなわち、デバイスキュー１１８の現在の深度がＩ／Ｏコントローラ１１６によって指定された目標値よりも小さい場合に、要求をデバイスキュー１１８へ転送することができる。
この場合、スケジューラ１１２は、最も早いデッドラインを有する仕事負荷を選択して、その対応するキュー１１０の最初の要求（すなわち、最も早いデッドラインを有する要求）をデバイスキュー１１８へ転送する。
スケジューラ１１２は、デバイスキュー１１８の現在の深度が目標深度に達するまで、次の最も早いデッドラインを有する仕事負荷を選択するステップ、及び、その仕事負荷の最初の要求をデバイスキュー１１８へ転送するステップを繰り返す。
このように、デバイスキュー１１８をその目標深度に維持するために、要求は、入力キュー１１０において優先順位付けされて、要求のうち最も高い優先順位の要求がデバイスキュー１１８へ転送される。
また、要求のデッドラインがすでに経過している時も、その要求をデバイスキュー１１８へ転送することができる。
期限が経過したすべての要求は、たとえ、この要求をデバイスキュー１１８へ転送することによって、デバイスキュー１１８の深度がその目標深度を超えさせることになっても、デバイスキュー１１８へ転送されることが好ましい。
これによって、新たに到着した、小さな待ち時間要件を有する仕事負荷の要求に直ちに対応することができる。
【００３１】
Ｉ／Ｏモニタ１１４は、Ｉ／Ｏ要求の到着及び完了を監視する。
より具体的には、モニタ１１４は、各仕事負荷についての新たな読み出し要求及び書き込み要求の、ＱｏＳコントローラ１０４への到着レートを監視することができ、また、この情報をＩ／Ｏコントローラ１１６へ報告することもできる。
性能目標が要求レートに基づいて最大待ち時間を指定できることを思い出されたい。
したがって、各仕事負荷の目標待ち時間は、その時点の要求レートに基づいて定期的に求めることができる。
より具体的には、性能目標が（（ｒ１，ｔｒ１，ｔｗ１），（ｒ２，ｔｒ２，ｔｗ２），…，（ｒｎ，ｔｒｎ，ｔｗｎ））として与えられる場合、読み出し要求及び書き込み要求を含む仕事負荷Ｗｋの待ち時間目標値は、次のように計算することができる。
latencyTarget（Wk） ＝ fr*tri＋（1−fr）twi，if ri−1?readRate（Wk）＋writeRate（Wk）＜ri
ここで、ｒｅａｄＲａｔｅ（Ｗｋ）は仕事負荷Ｗｋの読み出し要求レートであり、ｗｒｉｔｅＲａｔｅ（Ｗｋ）は仕事負荷Ｗｋの書き込み要求レートであり、ｒ０＝０、ｒｎ＋１＝∞、ｔｒｎ＋１＝ｔｗｎ＋１＝∞である。
目標値は、好ましくは、Ｐ＝０．０５秒ごとに定期的に求められて報告される。
ただし、別の期間Ｐを選択できることは明らかである。
【００３２】
Ｉ／Ｏモニタ１１４は、要求到着レートを監視することに加えて、好ましくは、要求がＱｏＳコントローラ１０４内に受信されると、各Ｉ／Ｏ要求の到着時刻も監視する。
これに加えて、モニタ１１４は、デバイス１０６によって報告された各要求の完了時刻も監視する。
モニタ１１４は、これから、各要求の待ち時間及び各仕事負荷の（ｗの期間にわたる）平均待ち時間を計算することができる。
この平均待ち時間は、次に、コントローラ１１６に報告される。
待ち時間の平均値は、好ましくは、Ｐ＝０．０５秒ごとに定期的に計算されて報告される。
ただし、別の期間を選択できることは明らかである。
【００３３】
コントローラ１１６は、平均待ち時間情報に応じて、デバイスキュー１１８の目標深度を調整することができる。
この制御は、デバイスキュー１１８の深度を削減すると、デバイス１０６における待ち時間が削減されることにつながるが、スループットも削減されることにつながるという仮定に基づいている。
逆に言えば、デバイスキュー１１８の深度を増加させると、待ち時間が増加することにつながり、スループットも増加することにつながる。
この仮定は、ほとんどのディスク及びディスクアレイに当てはまると予想される。
【００３４】
コントローラ１１６は、デバイスキュー１１８をフル（すなわち、その目標深度に）維持しようと試みる。
これは、デバイスキュー１１８に多くの要求を有すると、デバイス１０６の利用が改善され、したがって、スループットが最大になるからである。
しかしながら、デバイスキュー１１８にあまりにも多くの要求を有すると、待ち時間が許容できないものとなるおそれがある。
例えば、仕事負荷が小さな待ち時間を要求する場合、デバイスキュー１１８に多くの要求を有することは、仕事負荷からの次の要求が、キュー１１８の他の多くの未処理の要求と競合することを意味し、したがって、その要求は、キュー１１８が有する未処理の要求が少ない場合よりも遅く（大きな待ち時間で）完了することを意味する。
このように、デバイスキュー１１８をその目標深度に維持することは、待ち時間が過大になることなく、ストレージデバイス１０６の利用を最大にすることにつながる。
目標キュー深度は、このバランスを維持するように調整される。
【００３５】
特定のインプリメンテーションでは、コントローラ１１６は、各仕事負荷の現在の目標待ち時間を、前の期間中に計測されたその平均待ち時間と比較して、デバイスキュー１１８の目標深度を調整する。
いずれかの仕事負荷が、その前の計測された待ち時間よりも小さな新しい目標待ち時間を有すると、そのデバイスキュー１１８の目標深度は削減される。
目標深度の削減量は、好ましくは、各仕事負荷についての目標待ち時間と計測された待ち時間との差の中で最大の差に比例する。
例えば、２つの仕事負荷Ｗ１及びＷ２を有するシステムにおいて、仕事負荷Ｗ１の新たな目標待ち時間が、その計測された値よりも１０％小さく、且つ、仕事負荷Ｗ２の新たな目標待ち時間が、その計測された目標値よりも５％小さい場合、デバイスキュー１１８の目標深度は、好ましくは、デバイスキュー１１８の前の目標深度から１０％だけ削減される。
しかしながら、デバイスキュー１１８の目標値の削減は、別の方法で求めることもできることは明らかである。
例えば、削減量は、仕事負荷の２つ又は３つ以上についての目標値と計測された値との差から統計的に（例えば、平均化することによって）求めることができる。
逆に言えば、新たな目標待ち時間のすべてが、仕事負荷のすべてについて計測された待ち時間よりも長い場合、デバイスキュー１１８の目標深度は、より大きなスループットを可能にさせるために増加させることができる。
例えば、目標深度は、所定の乗数によって増加させることができる。
例えば、乗数が０．１である場合、目標深度は、その前の値の１１０％に増加される。
ただし、別の乗数を選択することもできる。
デバイスキュー１１８の目標深度を増加させると、実際の到達キュー深度がその目標深度によって制限された場合にのみ、スループットが増加すると予想される。
したがって、目標深度を増加させるかどうかは、到達キュー深度が目標深度によって制限されたかどうかに基づいて決定することができる。
これらの条件のいずれも当てはまらない場合には、デバイスキュー１１８の目標深度は変更しないでおくことができる。
【００３６】
このように、コントローラ１１６は、非線形フィードバックを実施して、デバイスの目標深度を調整することができる。
形式的に、上述したフィードバック方式は、以下によって表すことができる。
【００３７】
【数１】
2006521640.tif 000003
【００３８】
ここで、Ｑｎｅｗは、デバイスキュー１１８の新たな目標深度であり、Ｑｏｌｄは、デバイスキュー１１８の前の目標深度であり、Ｑｍａｘは、前の期間に到達したデバイスキュー１１８の最大深度であり、Ｌ（Ｗｋ）は、仕事負荷Ｗｋの計測された平均待ち時間であり、εは、所定の小さな正の値（例えば、０．１）である。
最初に、目標キュー深度は、初期値（例えば、２００エントリー）に設定される。
【００３９】
上記のように、データストレージのサービス品質システム及びサービス品質方法を説明してきた。
本発明は、一定の性能分離を提供して、或る仕事負荷が経験する性能が他の仕事負荷の変動による影響をあまり受けず、性能目標が満たされることをより確実にする。
ストレージ資源間で複数の仕事負荷をバランスさせることによって、資源が効率的に利用される。
【００４０】
上記は、本発明の特定の実施の形態に関するものであるが、本発明の原理及び精神から逸脱することなく、これらの実施の形態に変更を行えることが当業者には理解されよう。
本発明の範囲は、添付の特許請求の範囲によって画定される。
【図面の簡単な説明】
【００４１】
【図１】本発明の１態様によるデータストレージ管理システムを示す図である。
【図２Ａ】仕事負荷の例示の性能要件を示す図である。
【図２Ｂ】仕事負荷の例示の性能要件を示す図である。
【図３】単一の待ち時間制限がしきい値未満のすべての要求レートに適用される代替的な例示の性能要件を示す図である。
【図４】本発明の１態様によるサービス品質ストレージコントローラを示す図である。
【符号の説明】
【００４２】
１０２・・・容量計画器，
１０４・・・ＱｏＳコントローラ，
１０６・・・ストレージ，
１０８・・・ホスト，
１１０・・・入力キュー，
１１２・・・Ｉ／Ｏスケジューラ，
１１４・・・Ｉ／Ｏモニタ，
１１６・・・Ｉ／Ｏコントローラ，
【図１】
2006521640.tif 000004
【図２Ａ】
2006521640.tif 000005
【図２Ｂ】
2006521640.tif 000006
【図３】
2006521640.tif 000007
【図４】
2006521640.tif 000008
【国際調査報告】
2006521640.tif 000009
2006521640.tif 000010
2006521640.tif 000011