(57)【要約】【課題】大規模なストレージ・コントローラの集合で適用可能な、スケーラブルであり性能ベースのボリューム割り振り技法を提供する。【解決手段】ストレージ・システムの相互接続されたコンポーネントを表す複数ノードのグローバル・リソース・ツリーを分析して、各ノードに関するギャップ値を生み出す（たとえばボトムアップ推定）。各ノードに関するギャップ値は、サブツリー内のいかなるノードでの性能およびスペース境界をも超えることなく、そのノードのサブツリー内で割り振り可能な、新しい作業負荷のＧＢ単位の推定量である。さらにグローバル・リソース・ツリーのギャップ値を分析して、ストレージ・システムのボリュームの順序付き割り振りリストを生成する（たとえばトップダウン選択）。このボリュームを、割り振りリストの順にストレージ作業負荷に適用することが可能であり、ギャップ値およびリストは更新される。【選択図】  図４
2010530564.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ・システムに関するグローバル・リソース・ツリーの各ノードについてギャップ値を決定するステップと、
各葉ノードに関する前記ギャップ値による前記葉ノードの順序付けに基づいて、前記ストレージ・システムの前記グローバル・リソース・ツリーの複数の葉ノード上のボリュームの順序付き割り振りリストを生成するステップと、を含み、
各ノードに関する前記ギャップ値が、前記ノードのいかなるサブツリー・ノードの性能およびスペース限界をも超えることなく、前記ノードの１つまたは複数のサブツリー・ノードに割り振り可能な新しい作業負荷の推定量に対応する、
方法。
【請求項２】
各ノードに関する前記ギャップ値が、前記グローバル・リソース・ツリー全体にわたるボトムアップ推定プロセスを通じて決定され、前記複数の葉ノードの前記ボリュームの前記順序付き割り振りリストが、トップダウン選択プロセスから生成される、請求項１に記載の方法。
【請求項３】
前記グローバル・リソース・ツリーのボリュームの前記順序付き割り振りリストの少なくとも一部に作業負荷を割り振った後に、前記ギャップ値を更新するステップと、前記順序付き割り振りリストを再順序付けするステップとの両方をさらに含む、請求項１または２に記載の方法。
【請求項４】
各ノードに関する前記ギャップ値を決定するステップが、ノード特有の性能限界推定を計算するステップを含む、請求項１、２、または３に記載の方法。
【請求項５】
各ノードに関する前記ノード特有の性能限界推定が、各ノードに関する残りの性能容量を計算するステップを含み、
前記残りの性能容量が、残りの使用率値を各ノードに関する名目コストで割ることで決定され、前記名目コストが、各ノードに関する任意の関連する下位ボリュームで使用されるスペースあたりの性能使用率を含む、
請求項４に記載の方法。
【請求項６】
各ノードに関する前記ギャップ値が、親ノードに関する前記ノード特有の性能限界推定と、前記親ノードに対するすべての子ノードに関する前記ノード特有の性能限界推定の合計とのうちの、少ない方として決定される、請求項１から５のいずれか一項に記載の方法。
【請求項７】
各ノードの任意の非葉子ノードが、前記非葉子ノードのギャップ値の減少順に、またはユーザ定義のコスト関数によって、ソートされた順序で処理される、請求項１から６のいずれか一項に記載の方法。
【請求項８】
ストレージ・システムに関する異なる相互接続されたストレージ・コンポーネントに対応する複数のノードを備えるグローバル・リソース・ツリーとして表される、相互接続されたストレージ・コンポーネントの階層と、
前記グローバル・リソース・ツリーの各ノードについてギャップ値を決定するため、および、前記各葉ノードに関する前記ギャップ値による前記葉ノードの順序付けに基づいて、前記グローバル・リソース・ツリーの複数の葉ノード上のボリュームの順序付き割り振りリストを生成するための、プロセッサと、を備え、
各ノードに関するギャップ値が、前記ノードのいかなるサブツリー・ノードの性能およびスペース限界をも超えることなく、前記ノードの１つまたは複数のサブツリー・ノードに割り振り可能な新しい作業負荷の推定量に対応する、
ストレージ・システム。
【請求項９】
各ノードに関するギャップ値が、前記グローバル・リソース・ツリー全体にわたるボトムアップ推定プロセスを通じて決定され、前記複数の葉ノードの前記ボリュームの前記順序付き割り振りリストが、トップダウン選択プロセスから生成される、請求項８に記載のストレージ・システム。
【請求項１０】
各ノードに関する前記ギャップ値を決定することが、ノード特有の性能限界推定を計算することを含む、請求項８または９に記載のストレージ・システム。
【請求項１１】
各ノードに関する前記ノード特有の性能限界推定が、各ノードに関する残りの性能容量を計算することを含み、
前記残りの性能容量が、残りの使用率値を各ノードに関する名目コストで割ることで決定され、前記名目コストが、各ノードに関する任意の関連する下位ボリュームで使用されるスペースあたりの性能使用率を含む、
請求項１０に記載のストレージ・システム。
【請求項１２】
ストレージ・システムに関するグローバル・リソース・ツリーの各ノードについてギャップ値を決定するためのプログラム命令と、
各葉ノードに関する前記ギャップ値による前記葉ノードの順序付けに基づいて、前記ストレージ・システムの前記グローバル・リソース・ツリーの複数の葉ノード上のボリュームの順序付き割り振りリストを生成するためのプログラム命令と、を含み、
各ノードに関する前記ギャップ値が、前記ノードのいかなるサブツリー・ノードの性能およびスペース限界をも超えることなく、前記ノードの１つまたは複数のサブツリー・ノードに割り振り可能な新しい作業負荷の推定量に対応する、
コンピュータ読み取り可能媒体上に具体化されたコンピュータ・プログラム。
【請求項１３】
各ノードに関する前記ギャップ値が、前記グローバル・リソース・ツリー全体にわたるボトムアップ推定プロセスを通じて決定され、前記複数の葉ノードの前記ボリュームの前記順序付き割り振りリストが、トップダウン選択プロセスから生成される、請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記グローバル・リソース・ツリーのボリュームの前記順序付き割り振りリストの少なくとも一部に作業負荷を割り振った後に、前記ギャップ値を更新するため、および前記順序付き割り振りリストを再順序付けするための、プログラム命令をさらに含む、請求項１２または１３に記載のコンピュータ・プログラム。
【請求項１５】
各ノードに関する前記ギャップ値を決定することが、ノード特有の性能限界推定を計算することを含む、請求項１２から１４のいずれか一項に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模なコンピュータ・ストレージ・コントローラの集合に関する。とりわけ本発明は、ストレージ・コントローラの集合における性能ベースのボリューム割り振りに関する。
【背景技術】
【０００２】
性能ベースのボリューム割り振りは、スペースおよび性能の要件に関した作業負荷プロファイル、ならびにストレージ・コントローラの様々なコンポーネントでの現在の性能数（performance number）に基づいて、作業負荷に関するボリュームの割り振り先を決定するタスクである。コントローラ１台あたりのディスク数の増加およびコントローラ数の増加に伴って、ストレージ・サイズが増大を続ける中、このタスクはますます困難になってきている。現在の単一コントローラ・アルゴリズムは、サイズの増大に合わせてスケール変更しないため、大規模な動的ストレージ制御シナリオには適さない。さらに従来のコントローラ・アルゴリズムは、システム・コンポーネント間に大規模なばらつき（variance）を招く。
【０００３】
現在のストレージ・コントローラは、各コンポーネントがその性能制約を有するコンポーネントの階層としてモデル化可能な、高度なデバイスである。ストレージ・コントローラをコンポーネントの階層、すなわちリソース・グラフ・モデルとしてモデル化することによって、ストレージ・コントローラ内のハードウェア・コンポーネント間の依存性をとらえることができる。階層内に過負荷のコンポーネントがないことを保証するために、各コンポーネントに関する現在のスペースおよび性能数が取得され、階層内の単一コンポーネントの過負荷は、そのコンポーネントに関連付けられたストレージ・プールに割り当てられる作業負荷を混乱させる可能性がある。新しい作業負荷に関する作業負荷プロファイルを使用して、新しい作業負荷に関するスペースおよび性能要件を予測することができる。最小および最大の許容または必要論理ボリューム・サイズなどの他の要素も、作業負荷割り当て決定プロセスに影響を与える可能性がある。既存の性能数ならびに作業負荷プロファイルおよび前述の他の要素を考慮に入れて、新しい作業負荷割り当て用のボリュームを作成するために好適なストレージ・コントローラ・コンポーネントを決定することができる。
【０００４】
ストレージ・ボリューム割り振りのための従来のアルゴリズムは非常に低速であり、ストレージ・システム・サイズの増大に合わせてスケール変更されないため、多くの大規模な動的ストレージ・シナリオには不適格である。さらに、システム・コンポーネント間に大幅なばらつきを招く可能性があり、これはストレージ・コントローラのリソース階層内にある一部のコンポーネントへの大量の負荷につながる。他の貪欲（greedy）またはランダム割り当てアルゴリズムは不十分な割り振りにつながり、リソース・グラフ階層内の高位ノードに対する負荷均衡を考慮しないため、結果として不均衡なシステムが生じる。リソース・グラフ階層内の高位ノードは、階層内の低位ノードに比べて大量のそれらの下の作業負荷に対する責務を負うため、これらノードの過負荷は即時にシステム全体の性能低下につながる可能性がある。システムおよび方法の中には、ストレージ制御およびリソース割り振りの領域で開発されてきたものもある。
【０００５】
２００６年９月７日公開のＨｕｎｔｅｒ等による米国特許出願公開第２００６／０２００４００号明細書は、所望の信頼性ポートフォリオに必要なだけのポートフォリオ資産を割り振る信頼性決定エンジンを備える、改良されたリソース割り振りシステムについて開示している。信頼性決定エンジンは、基本信頼性決定エンジンと強固な信頼性決定エンジンとの、２つの信頼性決定エンジンを含む。強固な最適化を使用することによって、最適化されたポートフォリオの感度を決定することができる。シナリオは、ユーザが直接指定するか、またはユーザの選択に応答してシステムが自動的に生成することができる。入力は基本的な基本信頼性決定エンジンに適用され、入力は強固な信頼性決定エンジンに適用される。
【０００６】
２００６年６月２２日公開のＬｅ等による米国特許出願公開第２００６／０１３６６８４号明細書は、データ・ストレージ・システムにおいてアクセス用のデータ・ユニットを作成する方法について開示している。データ・ストレージ・システムは、データ・ユニットを有する複数のストレージ・デバイスを含む。データ・ストレージ・システムのすべてのストレージ・デバイスが同時に電源投入されることはない。この方法は、補助データの作成および格納も含む。補助データは、データ・ユニットのアクセス要求時には電源切断されることになるストレージ・デバイス上で、データ・ユニット用に作成される。補助データはストレージ・デバイス上に格納されるため、結果として補助データは、データ・ユニットがアクセス要求の対象である場合、電源投入されたストレージ・デバイス上で使用可能である確率が高い。
【０００７】
２００１年６月１２日発行のＭｕｌｌｅｒ等による米国特許第６，２４７，０７７号明細書は、高度にスケーラブルな並列処理コンピュータ・システム・アーキテクチャについて開示している。並列処理システムは、アプリケーションを実行するための複数の計算ノードと、それぞれが複数のストレージ・リソースに通信的に結合された複数のＩ／Ｏノードと、任意の計算ノードと任意のＩ／Ｏノードとの間に通信を提供する相互接続ファブリックとを備える。相互接続ファブリックは、計算ノードとＩ／Ｏノードとを接続するためのネットワークを備え、このネットワークは、ｇ（ｌｏｇｂ  Ｎ）を超える交換ノード・ステージに配置構成された複数の交換ノードを備え、ここでｂは交換ノード入出力ポートの合計数であり、ｇ（ｘ）は引数ｘ以上の最小整数を与える天井関数を示し、交換ノード・ステージはそれによって任意のネットワーク入力ポートとネットワーク出力ポートの間に複数のパスを提供する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第２００６／０２００４００号明細書
【特許文献２】米国特許出願公開第２００６／０１３６６８４号明細書
【特許文献３】米国特許第６，２４７，０７７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記に鑑みて、当分野では、分散ストレージ・システム内にストレージ・ボリュームを割り振るための、性能が向上したプログラム、方法、およびシステムが求められている。さらに、こうしたプログラム、方法、およびシステムで、大規模なストレージ・コントローラの集合においてボリュームを割り振るための、スケーラブルであり性能ベースのアルゴリズムを採用することも求められている。これらおよび他のニーズは、以下で詳細に説明するように、本発明によって満たされる。
【課題を解決するための手段】
【００１０】
本発明の諸実施形態は、大規模なストレージ・コントローラの集合で適用可能な、スケーラブルであり性能ベースのボリューム割り振り技法から導出される。本発明の諸実施形態は、ボトムアップ推定プロセスとトップダウン選択プロセスとの組み合わせに基づくものとすることができる一方で、ボリューム割り振り時に（異なる階層レベルにある）システムのすべてのコンポーネントにかかる均衡負荷を生み出す正確さも維持する。したがってこのアルゴリズムは、システム・コンポーネントにその性能限界を超える過負荷がかけられないことを保証する。ストレージ・システムの相互接続されたコンポーネントを表す複数ノードのグローバル・リソース・ツリーを分析して、各ノードに関するギャップ値を生み出すことができる（このステップは、ボトムアップ式で進行する）。各ノードに関するギャップ値は、非葉ノード（non-leaf node）についてのスループット限界または葉ノードについての容量限界に対応する。各ノードに関するギャップ値は、サブツリー内のいかなるノードでの性能およびスペース境界をも超えることなく、そのノードのサブツリー内で割り振り可能な新しい作業負荷のＧＢ単位の推定量を備えることが可能である。さらにグローバル・リソース・ツリーのギャップ値を分析して、ストレージ・システムのボリュームの順序付き割り振りリストを生成する（このステップはトップダウン式で進行する）。このボリュームを、割り振りリストの順にストレージ作業負荷に割り振ることが可能であり、ギャップ値およびリストは更新される。
【００１１】
本発明の典型的な実施形態は、ストレージ・システムに関するグローバル・リソース・ツリーの各ノードについてギャップ値を決定するためのプログラム命令と、各葉ノードに関するギャップ値による葉ノードの順序付けに基づいて、ストレージ・システムのグローバル・リソース・ツリーの複数の葉ノード上のボリュームの順序付き割り振りリストを生成するためのプログラム命令と、を含む、コンピュータ読み取り可能媒体上に具体化されたコンピュータ・プログラムを備える。各ノードに関するギャップ値は、そのノードのいかなるサブツリー・ノードの性能およびスペース限界をも超えることなく、そのノードの１つまたは複数のサブツリー・ノードに割り振り可能な新しい作業負荷の推定量に対応する。各ノードに関するギャップ値は、グローバル・リソース・ツリー全体にわたるボトムアップ推定プロセスを通じて決定可能であり、複数の葉ノードのボリュームの順序付き割り振りリストは、トップダウン選択プロセスから生成可能である。グローバル・リソース・ツリーのボリュームの順序付き割り振りリストの少なくとも一部に作業負荷を割り振った後に、ギャップ値を更新するため、および、順序付き割り振りリストを再順序付けするための、プログラム命令も含めることができる。
【００１２】
他の実施形態では、各ノードに関するギャップ値の決定は、ノード特有の性能限界推定の計算を含むことができる。各ノードに関するノード特有の性能限界の推定は、各ノードに関する残りの性能容量の計算を含むことができる。この場合、残りの性能容量は、残りの使用率値を各ノードに関する名目コスト（nominal cost）で割ることで決定され、ここで名目コストは、各ノードに関する任意の関連する下位ボリュームで使用されるスペースあたりの性能使用率を含む。
【００１３】
本発明の一部の実施形態では、各ノードに関するギャップ値は、親ノードに関するノード特有の性能限界推定と、親ノードに対するすべての子ノードに関するノード特有の性能限界推定の合計とのうちの、少ない方として決定することができる。さらに本発明の一部の実施形態では、各ノードの任意の非葉子ノードを、非葉子ノードのギャップ値の減少順にソートされた順序で処理することができる。別の方法として、各ノードの任意の非葉子ノードを、ユーザ定義のコスト関数によるソート順に処理することもできる。
【００１４】
同様に、本発明の典型的な方法実施形態は、ストレージ・システムに関するグローバル・リソース・ツリーの各ノードについてギャップ値を決定するステップと、各葉ノードに関するギャップ値による葉ノードの順序付けに基づいて、ストレージ・システムのグローバル・リソース・ツリーの複数の葉ノード上のボリュームの順序付き割り振りリストを生成するステップとを含む。各ノードに関するギャップ値は、そのノードのいかなるサブツリー・ノードの性能およびスペース限界をも超えることなく、そのノードの１つまたは複数のサブツリー・ノードに割り振り可能な新しい作業負荷の推定量に対応する。本発明の方法実施形態は、本明細書で説明されるプログラムおよびシステムに従ってさらに変更することができる。
【００１５】
同様に、本発明の典型的なストレージ・システム実施形態は、ストレージ・システムに関する異なる相互接続されたストレージ・コンポーネントに対応する複数のノードを備えるグローバル・リソース・ツリーとして表される、相互接続されたストレージ・コンポーネントの階層と、グローバル・リソース・ツリーの各ノードについてギャップ値を決定するため、および、各葉ノードに関するギャップ値による葉ノードの順序付けに基づいて、グローバル・リソース・ツリーの複数の葉ノード上のボリュームの順序付き割り振りリストを生成するための、プロセッサと、を含む。ここでも、各ノードに関するギャップ値は、そのノードのいかなるサブツリー・ノードの性能およびスペース限界をも超えることなく、そのノードの１つまたは複数のサブツリー・ノードに割り振り可能な新しい作業負荷の推定量に対応する。同様に、本発明のシステム実施形態は、本明細書で説明されるプログラムおよび方法に従ってさらに変更することができる。
【００１６】
次に図面を参照するが、ここで同じ番号は、図面全体を通じて対応する部分を表す。
【図面の簡単な説明】
【００１７】
【図１】ストレージ・システムの様々な相互接続されたハードウェア要素間の依存性のツリー型階層を視覚的に表す、例示的なグローバル・リソース・グラフを示す図である。
【図２】本発明の諸実施形態を実装するために使用可能な、例示的コンピュータ・システムを示す図である。
【図３】本発明の典型的実施形態で採用可能な、典型的な分散コンピュータ・システムを示す図である。
【図４】本発明の実施形態を実装する典型的なストレージ・システムを示す図である。
【図５】本発明のボリューム割り振りアルゴリズム実施形態の例示的諸ステップを示す流れ図である。
【図６】例示的なボトムアップ推定プロセスを示す流れ図である。
【図７】例示的なトップダウン選択プロセスを示す流れ図である。
【図８】本発明の例示的実施形態と他のアルゴリズムとの性能比較を示すグラフである。
【図９】本発明の例示的実施形態と他のアルゴリズムとの性能比較を示すグラフである。
【図１０】本発明の例示的実施形態と他のアルゴリズムとの性能比較を示すグラフである。
【図１１】本発明の例示的実施形態と他のアルゴリズムとの性能比較を示すグラフである。
【図１２】本発明の例示的実施形態と他のアルゴリズムとの性能比較を示すグラフである。
【発明を実施するための形態】
【００１８】
概要
ストレージ・コントローラに新しい作業負荷をかけるには、現在の作業負荷に基づくストレージ・コントローラの集合のうちの様々なコンポーネントの使用可能なスペースおよび性能などの要素について、注意深く考察する必要がある。現在のアルゴリズムは、大規模なストレージ・コントローラの集合について様々なコンポーネントの性能を適切に均衡させる点で、不適当であることが証明できる。コントローラの様々なコンポーネントでのスペースおよび性能負荷を考慮して、複数のストレージ・コントローラに作業負荷ボリュームを与えるための新しいアルゴリズムが提供される。ストレージ・コントローラの集合の様々なコンポーネント全体にわたって負荷を均衡させることに関して、この新しいアルゴリズムが既存のアルゴリズムをしのぐ可能性があり、その結果として、データのボリュームを割り振るためのより高速でスケーラブルなメカニズムが生じることが、実験によって示されている。この方法は、貪欲、ランダム、および現時点で最高の方法と比較すると、（リソース・グラフ階層の様々なレベルで）システム・コンポーネント全体にわたって生じるばらつきを少なくすることが可能であり、これはより良い品質の測度である。新しいアルゴリズムは、リソース・ボリューム割り振りの問題を解決するための他の知られた方法よりもかなり高速な可能性がある。このアルゴリズムの速度は、平均して、以前の最新の方法の３倍から４倍の速さとすることができる。この速度は、ストレージ・システム・サイズが大きくなるにつれて、さらに高速化することができる（たとえば、６倍から９倍）。したがってこの方法は、より高品質の性能ベースのボリューム割り振りに関するより高速でスケーラブルなメカニズムを提供することができる。
【００１９】
図１は、ストレージ・システムの様々な相互接続されたハードウェア要素間での依存性のツリー型階層を視覚的に表す、例示的なグローバル・リソース・グラフ１００を示す。グローバル・リソース・グラフ１００のツリー構造の頂部にあるノードはルート・ノード１０２であり、これに接続された様々なストレージ・コンポーネント１０４Ａ、１０４Ｂ、および１０４Ｃに関するすべてのコントローラを有する。ルート・ノード１０２は、グローバル・リソース・グラフ１００によって表されるストレージ・システムのすべての入出力データのための、中央アクセス・ポイントである。ストレージ・コントローラ１０４Ａ、１０４Ｂ、および１０４Ｃ、ならびにそのそれぞれの下にあるサブツリーは、コントローラ・リソース・グラフと呼ぶことができる。この例では、グローバル・リソース・グラフ１００の最下位の葉ノード（ランク）までの完全な分岐が１つしか示されていないことに留意されたい。葉ノード（ランク）は、アルゴリズムによって割り振られることになるボリュームのうちの１つまたは複数を備えることができることにも留意されたい。共通のルート・ノード１０２の下のコントローラ・リソース・グラフの組み合わせが、グローバル・リソース・グラフ１００を形成する。この例では、ストレージ・コントローラ１０４Ａが、ホスト・システムをストレージ・デバイスに接続するホスト・アダプタ１０６Ａおよび１０６Ｂに通信的に結合される。ホスト・アダプタ１０６Ａは、ストレージ・システムに対する管理を提供するクラスタ１０８Ａに接続される。クラスタ１０８Ａは、クラスタ１０８Ａとストレージ・デバイス１１４Ａ〜１１４Ｇとの間に通信を提供する、デバイス・アダプタ１１０Ａと接続される。ストレージ・プール１１２Ａ、１１２Ｂ、および１１２Ｃは、どのボリュームまたはストレージ・デバイス１１４Ａ〜１１４Ｇがコントローラによって管理されるべきであるかを識別する。当業者であれば理解されるように、示されたグローバル・リソース・グラフ１００は単なる例であり、異なるグラフによって異なるストレージ・システムが表されることを理解されたい。たとえば、特定のストレージ・システム・アーキテクチャに依存して、他のシステムが異なる数のホスト・アダプタにコントローラを結合すること、あるいはデバイス・アダプタがそれらの下で異なる数のプールおよびランクを監視すること、またはその両方が可能である。本発明の諸実施形態で、異なるコンポーネント・レイヤを有するまったく異なるアーキテクチャも実装可能であり、当業者であれば理解されるように、グローバル・リソース・グラフ１００を使用して、特定のハードウェアまたはアーキテクチャにこだわらずに、相互接続されたノードの配置構成の包括的な性能特徴がとらえられる。
【００２０】
本発明の諸実施形態は、ボトムアップ推定プロセスおよびトップダウン選択プロセスという、２つの重要なプロセスを使用して動作することができる。ボトムアップ推定プロセスは、ストレージ・コンポーネントからの性能数と共に使用されるコントローラ・リソース・グラフからのグローバル・リソース・グラフのコンパイルによって駆動される。コントローラ・リソース・グラフからグローバル・リソース・グラフのこの構造が、推定プロセスをボトムアップであるとして特徴付けることができる理由でもある。ボトムアップ構造とは、より小さな、より特異的な情報片がまとめて構成され、より大きなシステムの全体図が形成されるものである。このプロセスは、すべての子ノードが親ノードと同じ量の負荷をサポートできるかどうかを判別するために使用される。すべての子ノードがサポートできる負荷の合計が、親ノードがサポートできる量よりも少ない場合、親ノードに関する推定を、その子ノードがサポートできる負荷の合計の推定まで減らす必要がある。トップダウン選択プロセスは、ボトムアップ推定の分析に基づく。これは、アルゴリズムがグローバル・リソース・グラフの各レベルをトラバースし、最後の最も特異的なノードにボリュームが割り振られるため、「トップダウン」と呼ばれる。
【００２１】
ハードウェア環境
図２は、本発明の諸実施形態を実装するために使用可能な、例示的コンピュータ・システム２００を示す。コンピュータ２０２は、プロセッサ２０４と、ランダム・アクセス・メモリ（ＲＡＭ）などのメモリ２０６とを備える。コンピュータ２０２は、グラフィカル・ユーザ・インターフェース２１８上でウィンドウなどのイメージをユーザに提示するディスプレイ２２２に、動作的に結合される。コンピュータ２０２は、キーボード２１４、マウス・デバイス２１６、プリンタ２２８などの他のデバイスに結合することができる。もちろん、当業者であれば理解されるように、前述のコンポーネントの任意の組み合わせ、または、任意数の異なるコンポーネント、周辺装置、および他のデバイスが、コンピュータ２０２と共に使用可能である。
【００２２】
一般に、コンピュータ２０２は、メモリ２０６内に格納されたオペレーティング・システム２０８（たとえば、ｚ／ＯＳ、ＯＳ／２、ＬＩＮＵＸ、ＵＮＩＸ、ＷＩＮＤＯＷＳ、ＭＡＣ  ＯＳ）の制御の下で動作し、入力およびコマンドを受け入れるため、ならびに、たとえばグラフィカル・ユーザ・インターフェース（ＧＵＩ）モジュール２３２を介して、結果を提示するために、ユーザとインターフェースする。ＧＵＩモジュール２３２は別々のモジュールとして示されているが、ＧＵＩ機能を実行する命令は、オペレーティング・システム２０８、コンピュータ・プログラム２１０内に常駐または分散すること、あるいは、特定用途向けのメモリおよびプロセッサで実装することが可能である。
【００２３】
コンピュータ２０２は、ＣＯＢＯＬ、ＰＬ／１、Ｃ、Ｃ＋＋、ＪＡＶＡ、ＡＤＡ、ＢＡＳＩＣ、ＶＩＳＵＡＬ  ＢＡＳＩＣ、または任意の他のプログラミング言語などの、プログラミング言語で書かれた１つまたは複数のアプリケーション・プログラム２１０を、プロセッサ２０４によって読み取り可能なコードに変換できるようにする、コンパイラ２１２も実装する。完了後、コンピュータ・プログラム２１０は、コンパイラ２１２を使用して生成された関係および論理を使用して、コンピュータ２０２のメモリ２０６内に格納されたデータにアクセスし、これを操作する。コンピュータ２０２は、オプションで、たとえばインターネットまたは他のネットワークを介して、他のコンピュータと通信するための、モデム、衛星リンク、イーサネット・カード、無線リンク、または他のデバイスなどの、外部データ通信デバイス２３０も備える。
【００２４】
オペレーティング・システム２０８、コンピュータ・プログラム２１０、およびコンパイラ２１２を実施する命令は、総称的にフレキシブルディスク２２４として表された、ジップ・ドライブ、フレキシブルディスク２２４、ハード・ドライブ、ＤＶＤ／ＣＤ−ＲＯＭ、デジタル・テープなどの、１つまたは複数の固定または取り外し可能のデータ・ストレージ・デバイスを含むことが可能な、たとえばデータ・ストレージ・デバイス２２０などのコンピュータ読み取り可能媒体内に、確実に記録することができる。さらに、オペレーティング・システム２０８およびコンピュータ・プログラム２１０は、コンピュータ２０２によって読み取りおよび実行された場合、本発明の実装あるいは使用またはその両方に必要なステップをコンピュータ２０２に実行させる、命令を備える。コンピュータ・プログラム２１０あるいはオペレーティング・システム２０８またはその両方の命令は、メモリ２０６内に確実に記録すること、あるいは、データ通信デバイス２３０を介して伝送されるかまたはこれによってアクセスされること、またはその両方も可能である。したがって、本明細書で使用される「製品」、「プログラム・ストレージ・デバイス」、および「コンピュータ・プログラム製品」という用語は、任意のコンピュータ読み取り可能デバイスまたは媒体からアクセス可能あるいは動作可能またはその両方である、コンピュータ・プログラムを包含することが意図される。
【００２５】
本発明の諸実施形態は、一般に、複数の別々のストレージ・デバイスからなるストレージ・システムへのデータ・オブジェクト（すなわちファイル）アクセスを管理する、ソフトウェア・アプリケーション・プログラム２１０を対象とする。プログラム２１０は、単一のコンピュータ２０２内で、または、コンピューティング・デバイスおよびストレージ・デバイスのネットワークを備える分散コンピュータ・システムの一部として、動作可能である。ネットワークは、ローカル・エリア・ネットワークあるいは（たとえばＶＰＮ接続を介した、公衆またはセキュアとすることが可能な）インターネット接続またはその両方を介して接続された、１つまたは複数のコンピュータ／ストレージ・デバイスを包含することができる。
【００２６】
図３は、本発明の典型的実施形態で採用可能な、典型的な分散コンピュータ・システムを示す。こうしたシステム２５０は、ネットワーク２５２内のそれぞれの通信デバイス２３０を介して相互接続された複数のコンピュータ２０２を備える。ネットワーク２５２は、完全に専用（事業所内のローカル・エリア・ネットワークなど）であること、あるいは、ネットワーク２５２の一部またはすべてが公開（インターネット上で動作する仮想私設ネットワーク（ＶＰＮ）を介するなど）で存在することが可能である。さらに、コンピュータ２０２のうちの１つまたは複数は、残りのクライアント・コンピュータ２５６への様々なサービスの提供を容易にするサーバまたはホスト２５４として機能するように、特別に設計することができる。一例では、１つまたは複数のホストをメインフレーム・コンピュータ２５８とし、ここでクライアント・コンピュータ２５６に関する重要な処理が実行できるようにすることが可能である。メインフレーム・コンピュータ２５８は、他のネットワーク化コンピュータ２０２（サーバ２５４あるいはクライアント２５６またはその両方）に関するいくつかのデータベース・プロシージャを実施する要求ハンドラ２６２に結合された、データベース２６０を備えることができる。要求ハンドラ２６２は、ＳＡＮを備えるネットワーク化ストレージ・デバイス２６８へのアクセスを容易にするストレージ／バックアップ・サブシステム２６６を介したデータ・アクセスを指示する、リソース・マネージャ２６４にも結合される。したがって、コンピュータ２５８上のストレージ／バックアップ・サブシステム２６６は、分散ストレージ・システム内のネットワーク化ストレージ・デバイス２６８上に格納された、クライアント・コンピュータ２５６からのバックアップ・データ・オブジェクトを管理する、バックアップ・サーバを備える。ＳＡＮは、別個の物理ストレージ・デバイス２６８Ａ〜２６８Ｃとして示された、直接アクセス・ストレージ・デバイス（ＤＡＳＤ）、光ストレージ、あるいはテープ・ストレージ、またはそれらすべてなどの、デバイスを含む。様々な既知のアクセス方法（たとえばＶＡＳＭ、ＢＳＡＭ、ＱＳＡＭ）が、ストレージ／バックアップ・サブシステム２６６の一部として機能することができる。
【００２７】
図４は、本発明の実施形態を実装する典型的なストレージ・システム２７０を示す。たとえば、ストレージ・システム２７０は、図３の分散コンピュータ・システム２５０内のストレージ／バックアップ・サブシステム２６６およびストレージ・デバイス２６８の一部として動作することができる。本発明の典型的な実装は、ストレージ・サブシステム２７２（たとえば、図３のコンピュータ２５８のストレージ／バックアップ・サブシステム）上で動作するプログラムを備える。ストレージ・サブシステム２７２は、複数のストレージ・デバイス２７４Ａ〜２７４Ｃに結合される。１つのストレージ・デバイス２４７Ａについてのみ詳細に説明するが、他のストレージ・デバイス２７４Ｂ、２７４Ｃも同様に構成可能であることを理解されたい。コントローラ２７６は、ストレージ・デバイス２７４Ａ内でのデータの進行先を指示する。データは、ストレージ・サブシステム２７２を通過するストレージ作業負荷の少なくとも一部である。通常、１つまたは複数のホスト・アダプタ２７８が、１つまたは複数のホスト・アダプタ２７８から入信する入力および出力を処理するクラスタ・プロセッサ複合体２８０に結合されたシステムに対する、外部インターフェースとして動作する。クラスタ・プロセッサ複合体２８０は、ランク２８４Ａ〜Ｅを、それらを制御するシステムに接続する、デバイス・アダプタ２８２Ａおよび２８２Ｂに接続される。ランク２８４Ａ〜Ｅは、データがストレージ・デバイス２７４Ａ内に物理的に格納され、クラスタ・プロセッサ複合体２８０に結合された１つまたは複数のデバイス・アダプタ２８２Ａ、２８２Ｂを介してアクセスされる、物理ディスクを備える。ランク２８４Ａ〜Ｅは、所与のデバイス・アダプタ２８２Ａの下で１つまたは複数のプール２８６Ａ、２８６Ｂに編成することができる。説明したハードウェア・アーキテクチャは単なる例であり、当業者であれば、任意数の異なるデバイス（たとえばコントローラ、ホスト・アダプタ、クラスタ・プロセッサ、デバイス・アダプタ、およびデータ・ボリュームを備える物理ディスク）を、本発明の範囲内の代替アーキテクチャ内でまとめて結合できることを理解されよう。
【００２８】
当業者であれば、本発明の範囲を逸脱することなく、このハードウェア環境に対して多くの変更が可能であることを理解されよう。たとえば当業者であれば、本明細書で説明された本発明の様々な実施形態をサポートおよび実装するための機能要件に合致する、前述のコンポーネントの任意の組み合わせ、あるいは任意数の異なるコンポーネント、周辺装置、および他のデバイスが、本発明と共に使用可能であることを理解されよう。
【００２９】
アルゴリズムの入力および出力
本発明の典型的な実施形態は、データ作業負荷のストレージをストレージ・システムの様々なボリュームに向けて送るように動作する、プログラム化アルゴリズムとして特徴付けることができる。このアルゴリズムは、各ノードの作業負荷プロファイルおよびある種の性能測定を入力情報として必要とし、ボリュームが作業負荷に適用されるべき順序をランク付けしたボリューム・リストを、出力情報として生成する。たとえば、アルゴリズムへの入力は、作業負荷プロファイルおよび（コントローラの各ノードに関する、たとえばスループット・レートなどの性能速度を示す）コントローラ・リソース・グラフを備えることができる。
【００３０】
作業負荷プロファイルは、格納されることになる合計作業負荷サイズ（たとえばＧＢ単位）および各ノードでの名目コスト値などの情報を含むことができる。名目コスト値とは、特定ノードに関連付けられた任意のプールの作業負荷のＧＢあたりの、ノードで経験された性能使用率の増加の測度である。いずれのノードも、リソース・グラフ階層内のそのすべての下位プールに関連付けられる。
【００３１】
コントローラ・リソース・グラフは、ストレージ・システム内の異なるストレージ・コントローラの構造を記述する。この構造は、コントローラ設計に依存して異なるコントローラごとに変化する可能性があり、異なるコントローラは、記述された階層（または任意の代替階層）内で異なる数のコンポーネントを有する。システムの異なるコンポーネントに関する特定の性能数（たとえば、１００％使用率スループット・レート）も、アルゴリズムへの入力として与えられる。
【００３２】
加えて、最大および最小の許容論理ボリューム・サイズも識別可能である。最大および最低のボリューム・サイズ制約は、システム管理者によって、またはシステム内で適用された何らかの他の制約を介して、決定されたものとすることができる。非常に小さいかまたは非常に大きいボリューム・サイズは、おそらく採用不可能であり、小さなボリューム・サイズは過度の断片化につながる可能性があり、大きなボリューム・サイズは結果としてシステム内に不均衡を生じさせる可能性がある。
【００３３】
図５は、本発明のボリューム割り振りアルゴリズム３００実施形態の例示的諸ステップの流れ図である。アルゴリズム３００は、ステップ３０２で、コントローラ・リソース・グラフ（リソース・グラフの各ノードに関する性能値を含む）、作業負荷プロファイル（格納されることになる合計作業負荷サイズおよび各ノードでの名目コスト値を含む）、ならびに、最小および最大ボリューム・サイズの、入力によって開始することができる。ステップ３０４では、ストレージ・システムについて、グローバル・リソース・ツリーの各ノードに関するギャップ値が、たとえばボトムアップ推定プロセスを介して決定される。各ノードに関するギャップ値は、ノードのいかなるサブツリー・ノードの性能およびスペース限界をも超えることなく、ノードの１つまたは複数のサブツリー・ノード内で割り振り可能な、新しい作業負荷の推定量に対応する。次に、ステップ３０６では、ストレージ・システムのグローバル・リソース・ツリーの複数の葉ノード上にあるボリュームの順序付き割り振りリストが、各葉ノードに関するギャップ値による葉ノードの順序付けに基づいて、たとえばトップダウン選択プロセスを介して生成される。最後に、ステップ３０８では、割り振られることになるボリュームの順序付き割り振りリストを、アルゴリズム３００から出力することができる。
【００３４】
前述のように、本発明の諸実施形態は、ストレージ・コントローラの集合に新しい作業負荷を提供するスケーラブルなボリュームに関するアルゴリズムとして実施可能である。より良く均衡のとれた割り振りは、結果として、他の従来のストレージ割り振りアルゴリズムに関連付けられた弱点に陥ることがない。スケーラブルな性能ベースのボリューム割り振り（ＳＰＶＡ）アルゴリズムと呼ぶことのできる例示的なアルゴリズムについての擬似コードを、以下に示す。
【数１】
2010530564.tif 000003
【００３５】
ボトムアップ推定およびトップダウン選択を実行した後の本発明の出力は、割り振られることになるボリュームのリストである。このアルゴリズムの目的は、様々なコンポーネント間に作業負荷を分散させることによる割り振りのためのボリュームの順序付きリストを提供する一方で、これらのコンポーネント全体にわたってすべての負荷の均衡を維持することである。最適化されたプールへのデータの配置は、高位レベルでもストレージ・システム内のデータを処理するため、高位レベルでの性能使用率の増加につながる可能性もある。前述の例示的アルゴリズム３００のボトムアップ推定およびトップダウン選択のプロセスについて、以下の項でさらに詳細に説明する。
【００３６】
ボトムアップ推定プロセス
図６は、ボトムアップ推定プロセス・アルゴリズム４００を示し、ステップ４０２で、単一ルート・ノードの下で入力として与えられたすべてのコントローラ・リソース・グラフを組み合わせることによる、グローバル・リソース・グラフの構成で開始される。グローバル・リソース・グラフのこの構成により、サブツリーとしての異なるストレージ・コントローラに関するリソース・グラフを伴う、ツリー型構造としてのストレージ・システム全体のビューが可能である。このアルゴリズムは、このグローバル・リソース・グラフ上で動作する。階層を表示するためのツリー型構造では、ツリーの頂部が「ルート」ノードと呼ばれ、単一ノードから分岐するノードは単一の「親」ノードの「子」と呼ばれ、ツリーの底部では、子ノードを有する最後のノードが「葉」ノードと呼ばれる。
【００３７】
グローバル・リソース・グラフが作成された後、ステップ４０４で、アルゴリズム４００は、ノードの現在の性能使用率およびそのノードでの名目コストに基づいて、新しい作業負荷の最大許容サイズの推定、すなわちノード特有の性能限界の推定を算出する。アルゴリズムは、グラフ内のすべてのノードのこれらの初期のノード特有の性能限界の推定を、ｌｇａｐ（ｖ）として示し、ここでｖは測定中のノードである。言い換えれば、ｌｇａｐは、あるノードが何ギガバイトの作業負荷を処理できるかを示す。
【００３８】
ｌｇａｐを決定するのに好適な任意の公式が使用可能であるが、このアルゴリズムについては以下の公式が最適である。
【数２】
2010530564.tif 000004
【００３９】
この公式は、ノードの性能使用率およびノードの名目コストを計算に入れ、最小許容ボリューム・サイズに基づいてｌｇａｐを訂正することができる。算出されたｌｇａｐが最小のボリューム・サイズであっても処理できない場合、最小よりも小さいボリューム・サイズは設定できないため、この値はゼロに設定される。この公式は、ノードの性能使用率およびノードの名目コストを計算に入れ、ここで名目コストは、１ＧＢ単位の新しい作業負荷が割り振られた場合、このノードにどれだけの割合の性能使用率が生じるかを表す。名目コストは、相対的なＩＯスループットおよびそれらのノードを通過する帯域幅転送に依存して、ディスク・アダプタ、クラスタ、ランクなどで異なる可能性がある。算出されたｌｇａｐが最小のボリューム・サイズであっても処理するのに不十分である場合、最小よりも小さいボリューム・サイズは設定できないため、この値はゼロに設定される。
【００４０】
ｌｇａｐ値が決定されると、ステップ４０６で値の平滑化が実行できる。アルゴリズム４００は、各ノードのｌｇａｐ値と子ノードのｌｇａｐ値の合計とを比較して、各ノードに関する後行順トラバースを実行することができる。２つの値のうち小さい方が選択され、ここでノードのギャップ値と呼ばれる。リソース・グラフ内の各ノードｖについて、ｇａｐ（ｖ）は、ｖのサブツリー内のいかなるノードでの性能またはスペース境界をも超えることなく、ｖのサブツリー内に入れることのできる新しい作業負荷のＧＢ単位の量である。この論理によれば、グローバル・リソース・グラフのルート・ノードのギャップ値は、システム内で処理可能な合計作業負荷（ＧＢ単位）の良好な推定値でなければならない。
【００４１】
後行順トラバースは、ツリー構造が処理可能な系統的手法を含み、すべてのノードが分析されることを保証する。トラバースはツリーのルート・ノードで開始され、左のノードがｎｕｌｌ値であるかどうかをチェックする。これがｎｕｌｌ値である場合、右のノードがｎｕｌｌ値であるかどうかがチェックされる。すべての子がｎｕｌｌの場合、そのノードにアクセスする（visit）ことができる。左の子がｎｕｌｌでない場合、左のノードで後行順トラバースが実行される。同様に、右のノードがｎｕｌｌでない場合、ここでも後行順トラバースが実行される。すべての後行順トラバースの場合、左のノードが常に最初にチェックされる。一般に、後行順トラバースにおける動作の順序は、左、右、アクセスであり、トラバースを左ノードに適用し、トラバースを右ノードに適用し、それらが完了した場合、現在のノードにアクセスする。
【００４２】
トップダウン選択プロセス
図７は、本発明の例示的実施形態のトップダウン選択部分を表すプロセスを示す。トップダウン選択アルゴリズム５００は、ステップ５０２で、たとえば図６のボトムアップ推定アルゴリズム４００によって生成される、葉ノードの順序付きリストから第１のノードを選択して開始することができる。この第１のノードは、最高のギャップ値を伴うノードであり、最も多くの作業負荷を処理することができる。このノードが選択されると、アルゴリズム５００は、どれだけのボリュームを葉ノードに割り振ることができるかを決定する。ギャップ値は、最小許容ボリューム・サイズよりも大きく、最大許容ボリューム・サイズよりも小さくなければならない。この場合、ステップ５０４で、アルゴリズムは、選択されたノードにできる限り多くのボリュームを割り振る。ステップ５０６で、割り振られることになるボリュームが順序付きリストに追加され、これがアルゴリズムの出力になる。これまでどれだけ割り振られたかを追跡する変数が更新され、すべてのノードに関するギャップ値も更新される。このギャップ値の更新中に、ノードをソート順で維持するリストも割り振り後のギャップ値を反映するように更新される。
【００４３】
それ以上割り振る作業負荷がなくなるまで、または、それらを割り振る場所がなくなるまで、アルゴリズム全体でこのトップダウン選択を再帰的に実行する。前述のように、プロセスの最後のアルゴリズムの出力は、割り振られることになるボリュームのリストである。
【００４４】
ボトムアップ推定プロセスおよびトップダウン選択プロセスの両方を含む本発明の例示的実施形態について、以下でさらに詳細に説明する。上記のセクション３にリストアップされた例示的アルゴリズムが参照される。初期の計算を実行した後、アルゴリズムを割り振りプロセスで開始し、割り振られることになる好適なボリュームを発見するために再帰的に試行することができる。アルゴリズムは、リソース・グラフのルート・レベルから開始し、ｖの好適な子を発見するよう試行しながら、グラフを下方にトラバースすることができる。ｖの子は、ｇａｐ（ｖ）値の減少順に順序付けされたソート順に維持されることが必要である。アルゴリズムは、最高のｇａｐ（ｖ）値を備える子を選択する。ユーザ定義のコスト関数またはポリシー・メカニズムを許可する他のスキームを使用して（すなわち、ｒａｉｄレベルに依存するなど）、どの子ノードを選択するかを決定することもできることに留意されたい。このプロセスは、アルゴリズムがグローバル・リソース・グラフの葉レベルでノードに遭遇するまで、再帰的に実行される。葉レベルでボリュームを割り当てるために、アルゴリズムは、この葉レベルで割り振られることになる好適なボリューム・サイズを決定する。アルゴリズムの例からわかるように、ボリューム・サイズは、最大許容ボリューム・サイズより小さく、最小許容ボリューム・サイズよりも大きくなければならない。さらにボリューム・サイズは、葉ノードでの最小ｇａｐ（ｖ）値および未割り振りの作業負荷サイズ（すなわち、Ｒｅｑｕｉｒｅｄ  ＳｐａｃｅがＡｌｌｏｃａｔｅｄ  Ｓｐａｃｅより小さい）でなければならない。
【００４５】
前述の制約を考慮し、アルゴリズムは、この葉ノード上に（すなわちプール・レベルで）サイズＬ’のボリュームを（たとえば、アルゴリズム例のステップ８のように）割り振る。割り振られたボリュームは、その後、順序付き割り振りリストに追加され、合計割り振りスペースは割り振られたボリュームのサイズだけ増分される。この割り振りの実現可能性は、関連する計算によって保証されることに留意されたい。次のステップ（たとえば、アルゴリズム例のステップ９）は、ｇａｐ（ｖ）値の更新を含む。これは、それぞれの適切な割り振り後にＵｐｄａｔｅＧａｐ（）関数（以下に記載）を使用して実施可能である。割り当てられたボリュームのサイズを使用して、ステップ６で選択された葉ノードｖのそれぞれの祖先に関するｇａｐ（ｖ）値が再計算される。
【００４６】
葉ノードｖのそれぞれの祖先ｕについて、例示的アルゴリズムは、割り振られたボリュームのサイズ（Ｌ’）だけｌｇａｐ値を減分する。ｕのｃｈｉｌｄＳｕｍも同じ値だけ減分され、ｎｅｗｖａｌが最小のｌｇａｐ（ｕ）およびｃｈｉｌｄＳｕｍ（ｕ）として計算される。アルゴリズム例は、ｎｅｗｖａｌが最小ボリューム・サイズ以上である（さもなければゼロに設定される）ことを保証し、ｎｅｗｖａｌの値を新しいｇａｐ（ｕ）値として割り当てる。減分の値は、高位レベルでの計算のために、ｇａｐ（ｕ）引くｎｅｗｖａｌに等しい減分として改訂される。このプロセスは、ルート・レベルで更新が実行されるまで反復的に繰り返される。すべてのギャップ値は、この関数を使用して適切に更新される。ｇａｐ（）値に従ったノードの順序付けを維持するために、以下のＵｐｄａｔｅＧａｐ（）関数は適切な再挿入を実行しなければならない。
【数３】
2010530564.tif 000005
【００４７】
その後アルゴリズムは、必要なスペースが割り振られるまで、または、システム上に割り振り可能な新しい好適なボリュームがない旨をアルゴリズムが決定するまで、ステップ５〜１０を繰り返す。
【００４８】
さらに、ユーザは、ノードを編成するための順序を指定するオプションを有する。本明細書でこれまで説明したように、アルゴリズムにとってのデフォルトは、ギャップ値の減少順にノードをソートすることである。しかしながら、ユーザがそれらを何らかの他の方法で順序付けしたい場合、この順序を調整することができる。擬似コードにおける仮定は、ギャップ値の減少に従って値が順序付けされることである。
【００４９】
既存のアルゴリズムとの推定性能比較
図８から図１２は、本発明の例示的実施形態である、スケーラブルな性能ベースのボリューム割り振り（ＳＰＶＡ）アルゴリズムと、従来の性能ベースの単一コントローラ・アルゴリズム（ＶＰＡ）、貪欲アルゴリズム（その時点での最高の選択肢を選択し、その後の処理が生じる可能性のある後続の問題点を残す）、およびランダム・アルゴリズム（その名前が示唆するように、ボリューム割り振りの割り当てがランダムである）とを、比較する。
【００５０】
図８は、例示的ＳＰＶＡアルゴリズム６００Ａ、従来のＶＰＡアルゴリズム６００Ｂ、貪欲アルゴリズム６００Ｃ、およびランダム・アルゴリズム６００Ｄという、４つのアルゴリズムの、逐次作業負荷配置に関する実行時間を比較する。従来の性能ベースの単一コントローラ・アルゴリズムのみが、作業負荷の数が増加するにつれて、作業負荷の配置に要する時間が影響を受ける。図９は、同じ４つのアルゴリズム、例示的ＳＰＶＡアルゴリズム６０２Ａ、従来のＶＰＡアルゴリズム６０２Ｂ、貪欲アルゴリズム６０２Ｃ、およびランダム・アルゴリズム６０２Ｄの、システム・レベルでの性能使用率のばらつきを比較する。ＳＰＶＡ  ６０２Ａのみが、作業負荷が増加してもばらつきに影響されないアルゴリズムである。図１０は、４つのアルゴリズム、例示的ＳＰＶＡアルゴリズム６０４Ａ、従来のＶＰＡアルゴリズム６０４Ｂ、貪欲アルゴリズム６０４Ｃ、およびランダム・アルゴリズム６０４Ｄの、初期に不均衡であったシステムに関するシステム・レベルでの性能使用率のばらつきを比較する。ここでも、作業負荷が増加するにつれて、ＳＰＶＡ  ６０４Ａを除くすべてのアルゴリズムで高いばらつきが残される。図１１は、４つのアルゴリズム、例示的ＳＰＶＡアルゴリズム６０６Ａ、従来のＶＰＡアルゴリズム６０６Ｂ、貪欲アルゴリズム６０６Ｃ、およびランダム・アルゴリズム６０６Ｄの、逐次作業負荷配置に関する実行時間を比較する。図８とほぼ同様に、コントローラ数の増加によって影響を受けたアルゴリズムはＶＰＡ  ６０６Ｂのみであった。最後に、図１２は、６コントローラを備えたＳＰＶＡ  ６０８Ａおよび１２コントローラを備えたＳＰＶＡ  ６０８Ｂ、ならびに６コントローラを備えたＶＰＡ  ６１０Ａおよび１２コントローラを備えたＶＰＡ  ６１０Ｂを比較する。図に示されるように、作業負荷が増加するにつれて、システム・レベルでの性能使用率のばらつきが影響されたのは、６コントローラおよび１２コントローラを備えたＶＰＡのみであった。６および１２コントローラのＳＰＶＡは、作業負荷数の増加による影響をほとんど受けない。
【００５１】
リソース・グラフ階層内の異なるレベルでの性能使用率のばらつきは、特に、プール・レベル（階層内の最下位レベル）およびストレージ・コントローラまたはシステム・レベル（階層内の上位レベル）で測定することができる。この負荷均衡化特性は、初期に均衡なシステムおよび初期に不均衡なシステムについて観察可能である。
【００５２】
以上で、本発明の好ましい諸実施形態を含む説明を終える。本発明の好ましい実施形態を含む前述の説明は、例示および説明の目的で提示してきた。本発明を網羅すること、または本発明を開示された精密な形に限定することは、意図されていない。前述の教示の範囲内で、多くの変更および変形が可能である。以下の特許請求の範囲で示される発明の概念から逸脱することなく、本発明の追加の変形が考案可能である。
【図１】
2010530564.tif 000006
【図２】
2010530564.tif 000007
【図３】
2010530564.tif 000008
【図４】
2010530564.tif 000009
【図５】
2010530564.tif 000010
【図６】
2010530564.tif 000011
【図７】
2010530564.tif 000012
【図８】
2010530564.tif 000013
【図９】
2010530564.tif 000014
【図１０】
2010530564.tif 000015
【図１１】
2010530564.tif 000016
【図１２】
2010530564.tif 000017
【国際調査報告】
2010530564.tif 000018
2010530564.tif 000019
2010530564.tif 000020