【文献】
HAROLD S. STONE,MULTIPROCESSOR SCHEDULING WITH THE AID OF NETWORK FLOW ALGORITHMS,IEEE TRANSACTIONS ON SOFTWARE ENGINEERING,1977年 1月,Volume SE-3, Issue 1,pp.85-93
(58)【調査した分野】(Int.Cl.,DB名)
データ・アーカイブ管理スケジューリングを継続的に最適化する方法であって、アーカイブ管理システムが、ジョブ・スケジューラ、アーカイブ管理タスク、およびデータ・アーカイブを含み、前記方法は、
前記ジョブ・スケジューラが入力を前記アーカイブ管理システムから受領するステップであって、前記入力が、タスク情報、レプリカ配置データ、インフラストラクチャ・トポロジ・データ、およびリソース・パフォーマンス・データを含み、
前記タスク情報は、タスクを実行するために必要なオブジェクトへの個別のアクセス・パス、オブジェクトに対して実行される個別の動作、およびタスク・スケジューリングに有用なシステム属性を含み、
前記レプリカ配置データは、ディザスタ・リカバリの目的で作成された、前記データ・アーカイブ内のプライマリ・データのレプリカのアドレスを含み、
インフラストラクチャ・トポロジ・データは、前記アーカイブ管理システムが前記データ・アーカイブ内のストレージ・デバイス・ボリュームにどのように接続されているかを表し、
前記リソース・パフォーマンス・データは、前記アーカイブ管理システムのリソースのパフォーマンス・メトリックを含む、
前記受領するステップと、
前記ジョブ・スケジューラが前記受領された入力からフロー・ネットワークをモデル化するステップであって、前記フロー・ネットワークは前記アーカイブ管理システムのコンテンツおよびリソースを表し、前記フロー・ネットワークは有向グラフとして定義され、前記フロー・ネットワークは複数の頂点を有し、前記複数の頂点は複数のレベル(レベル0〜レベルn−1、但しnは整数)に編成され、前記複数のレベルに編成された各頂点が、出ていくフローのみを有するソース頂点(レベル0)、少なくとも1つの前記アーカイブ管理タスクに関連付けられた少なくとも1つのタスク頂点、前記少なくとも1つの前記アーカイブ管理タスクを実行するために必要なストレージ・デバイス・ボリュームに関連付けられた少なくとも1つのボリューム頂点、前記少なくとも1つの前記アーカイブ管理タスクを実行するために必要なコンピューティング・サーバに関連付けられた少なくとも1つのサーバ頂点、前記少なくとも1つの前記アーカイブ管理タスクを実行する少なくとも1つのワーカ・プログラムに関連付けられた少なくとも1つのワーカ頂点、及び入ってくるフローのみを有するシンク頂点(レベルn−1)を含み、且つ、前記各頂点が前記レベル(レベル0〜レベルn−1)順にレベルkからレベルk+1への有効辺(但し、k=0〜n−2)で接続されており、各有効辺は当該各有効辺を通過するフローの量を制限する容量を有し、前記フロー・ネットワークは前記有効辺に従って前記ソース頂点から前記シンク頂点へのパスを有し、前記パスは、前記タスクを、前記ストレージ・デバイス・ボリューム、前記サーバ及び前記ワーカを用いて実行する為のジョブ・スケジュールを表す、前記モデル化するステップと、
前記ジョブ・スケジューラが、前記各有効辺のリソースのスループットを表す個別の重みに時間Tの係数を乗算し、当該乗算の各結果を最も近い整数値に切り捨てて前記各有効辺の容量を調節し、前記各有効辺の容量を調節された容量を備える前記フロー・ネットワークに対して、エドモンズ・カープのアルゴリズムを用いて最大フロー問題を解き、ここで当該最大フロー計算の結果の最大フローがタスクの総数Nと等しければ、当該総数Nのタスク全てが前記時間T内で完了可能であり、前記各有効辺の容量を調節された容量を備える前記フロー・ネットワークの前記レベル0から前記レベルn−1へのパスのうち、前記総数Nのタスクの全てを完了できる候補スケジュールを探し、当該候補スケジュールのうちから最小の時間値T*を備える候補スケジュールを最適初期スケジュールとして発見するステップと、
前記ジョブ・スケジューラが、前記発見された最適初期スケジュールを、当該最適初期スケジュールを実行するために前記アーカイブ管理システムに転送するステップと、
前記ジョブ・スケジューラが、前記転送された最適初期スケジュールの動作の監視結果を、前記アーカイブ管理システムから受領するステップと、
前記ジョブ・スケジューラが、前記受領された監視結果を分析して、当該分析の結果をヒューリスティク・メトリックに適用して、前記最適初期スケジュールを動的に最適化し、調節済みスケジュールを作成するステップと、
前記ジョブ・スケジューラが、前記調節済みスケジュールを実行するために、前記調節済みスケジュールを前記アーカイブ管理システムに転送するステップであって、その結果、前記アーカイブ管理システムは、前記転送された調節済みスケジュールの動作の新たな監視結果を生成する、前記転送するステップと、
前記ジョブ・スケジューラが、前記監視結果を受領するステップ、前記調節済みスケジュールを作成するステップ、および前記調節済みスケジュールを転送するステップを繰り返し行うステップであって、当該繰り返しによって前記調節済みスケジュールのパフォーマンスを最適化する、前記繰り返し行うステップと
を含む、前記方法。
プロセッサと、前記プロセッサに結合されたコンピュータ可読メモリ・ユニットとを含むコンピュータ・システムであって、前記コンピュータ可読メモリ・ユニットは、前記プロセッサによって実行されるとデータ・アーカイブ管理スケジューリングを継続的に最適化する方法を実装する命令を含み、前記方法は、請求項1〜6のいずれか一項に記載された方法の各ステップを含む、前記コンピュータ・システム。
【発明を実施するための形態】
【0013】
図1は、本発明の実施形態による、データ・アーカイブ管理スケジューリングを継続的に最適化するアーカイブ管理システム10を示す。
【0014】
アーカイブ管理システム10は、データ・アーカイブ50、アーカイブ管理タスク60、ジョブ・スケジューラ入力70、およびジョブ・スケジューラ100を含む。アーカイブ管理システム10は、データ・アーカイブ50を利用して企業組織のユーザにデータ/コンピューティング・サービスを提供する企業組織において用いられる。企業組織の例は、特に、データ・センタなどとされ得る。データ/コンピューティング・サービスの例は、特に、データ・アーカイバルおよびプロビジョニング、データ・バックアップ、ビジネス・インテリジェンス(BI:business intelligence)のデータ・マイニングなどとされ得る。本明細書では、「コンテンツ」という用語は、アーカイブ管理システム10のソフトウェア/データ・コンポーネントを示す。管理情報において、コンテンツ管理は主として、データ・アーカイブ50内の大量のデータの保持および利用に関する。
【0015】
本明細書では、「リソース」という用語は、アーカイブ管理システム10の物理的デバイス/ハードウェアを示す。管理情報において、リソース管理の主な目的は、リソースをフォールト・トラレントに保つことによって、サービスの可用性を最大化することである。従来のディザスタ・リカバリ(DR:disaster recovery)技術が、リカバリ・ポイント目標(RPO)、リカバリ時間目標(RTO)などのサービス要件による様々なリソース構成に利用される。リソースの例は、特に、サーバ、ストレージ・デバイス、ネットワーク帯域幅をサポートする通信機器などとされ得る。アーカイブ管理システム10において用いられるサーバは、高度な仮想化、管理、および信頼性サービスをサポートするエンタープライズ・レベル・サーバである。サーバの一例は、特に、VMware(R)ESX/ESXiサーバ・インフラストラクチャなどとされ得る(VMwareは、VMware,Inc.の米国における登録商標)。アーカイブ管理システム10において用いられるストレージ・デバイスは、データ・コンテンツ、仮想化カーネル、および関連のあるファイルを記憶する永続ストレージ・デバイスである。
【0016】
エンタープライズ・データ/コンピューティング・サービスは、ユーザによって要求される実際のデータ/コンピューティング・サービスに加えて実行されなければならない、大量のメンテナンス・アクティビティを必要とする。データ/コンピューティング・サービスは、ユーザと企業組織との間のサービス取り決めに規定された特定のパフォーマンス要件レベルを満たさなければならないため、メンテナンス・アクティビティは通常、ユーザからのサービス需要がより低い期間中に実行される。しかし、企業組織は、サービスをユーザに長時間利用可能にすることも要求されるため、サービスをユーザに提供しないメンテナンス・アクティビティ専用の時間ウィンドウを設定することは、現実的ではない。データ・アーカイブ50内のますます増大するデータ量に対し必要なメンテナンス・アクティビティを限られた時間内で実行することは、アーカイブ管理システム10に必須である。
【0017】
データ・アーカイブ50は、データ/コンピューティング・サービス用のソフトウェア・アプリケーションおよびデータ・コンテンツを記憶する。
【0018】
アーカイブ管理タスク60は、ジョブ・スケジューラ100によってスケジュールされる通りにアーカイブ管理/メンテナンス・アクティビティを実行するプロセスである。アーカイブ管理/メンテナンス・アクティビティの例は、特に、プロビジョニング、ディザスタ・リカバリ(DR)メンテナンス、サービス要件順守、様々なDR技術のバックアップ動作、コンテンツ構文解析およびキーワード・ルックアップを必要とする新たに生成されたデータ・コンテンツのインデックスの更新、非アクティブ・データを低コスト・ストレージ層に移動する階層型ストレージ管理(HSM)などとされ得る。
【0019】
ジョブ・スケジューラ入力70は、タスク情報、レプリカ配置データ、インフラストラクチャ・トポロジ・データ、およびリソース・パフォーマンス・データを含む。
【0020】
タスク情報は、タスクを実行するために必要なオブジェクトへの個別のアクセス・パス、オブジェクトに対して実行される個別の動作、およびオブジェクト・サイズなどのタスク・スケジューリングに有用なシステム属性を含む。タスクは、特に、コンテンツ・アーカイビング、インデックス付け、ビジネス・インテリジェンス(BI)を目的としたデータ・マイニングの機能を、プライマリ・データ、並びにディザスタ・リカバリのために作成されるレプリカに関して、利用可能なストレージ・サーバ・ネットワーク・リソースを用いて実行する。すべてのタスクは、比較的均一な量のリソースを必要とする。
【0021】
レプリカ配置データは、ディザスタ・リカバリの目的で作成された、データ・アーカイブ50内のプライマリ・データのレプリカのアドレスを含む。
【0022】
インフラストラクチャ・トポロジ・データは、サーバがどのようにデータ・アーカイブ50内のストレージ・デバイス・ボリュームに接続されているかを表し、これは、データ・アーカイブ50の構成要素を介する、サーバとストレージ・デバイス・ボリュームとの間のパスである。インフラストラクチャ・トポロジ・データは、管理データを収集および維持する、データ・アーカイブ50の一部によって収集される。インフラストラクチャ・トポロジ・データは、5つ組<ホスト名,イニシエータ・ポートWWN,ファブリックWWN,ターゲット・ポートWWN,ボリューム>で表され、ホスト名は、サーバに関する第1の識別子であり、イニシエータ・ポートWWN(World Wide Name:ワールド・ワイド・ネーム)は、初期ポートに関する第2の識別子であり、ファブリックWWNは、ネットワーク・ファブリックに関する第3の識別子であり、ターゲット・ポートWWNは、ターゲット・ポートに関する第4の識別子であり、ボリュームは、ストレージ・デバイス・ボリュームに関する第5の識別子である。ワールド・ワイド・ネーム(WWN)またはワールド・ワイド識別子(WWID)は、ファイバ・チャネルまたはSCSIストレージ・ネットワークにおける一意の識別子である。各WWNは、電気電子技術者協会(IEEE)の組織的に一意な識別子(OUI)から得られる先頭の三(3)バイトと、ベンダ提供情報から得られる次の五(5)バイトとを組み合わせた八(8)バイト数である。WWNは、イーサネット(R)媒体アクセス制御(MAC)アドレスと似て、デバイスに組み込まれている。ネットワーク・ファブリックは、電気通信の分野で使用されるように、ネットワーク・ノードが1つ以上のネットワーク・スイッチを介して相互に接続されるネットワーク・トポロジを示す。
【0023】
リソース・パフォーマンス・データは、クロック速度、タスク・パー・セカンド、バイト・パー・セカンドなどのリソースのパフォーマンス・メトリックを含む。個別のパフォーマンス・データの絶対的精度よりも、ストレージ・デバイスとサーバとの間の相対的パフォーマンスに関するリソース・パフォーマンス・データの精度の方が、最適スケジューリング・ソリューション150の精度に影響する。
【0024】
ジョブ・スケジューラ100は、ジョブ・スケジューラ入力70からコンテンツ・リソース分析モデル110を作成し、コンテンツ・リソース分析モデル110を用いて最適スケジューリング・ソリューション150を動的かつ継続的に生成する。ジョブ・スケジューラ100によって実行されるステップの詳細に関しては、下記
図4の記載を参照されたい。本明細書では「スケジューリング・ソリューション」、「スケジュール」、および「ジョブ・スケジュール」という用語は、置き換え可能なように使用される。
【0025】
コンテンツ・リソース分析モデル110は、ジョブ・スケジューラ100内にある、アーカイブ管理システム10の分析モデルである。コンテンツ・リソース分析モデル110は、ジョブ・スケジューラ100が、アーカイブ管理タスク60の動作を継続的に最適化して、初期スケジュールおよび少なくとも1つの動的に調節されたスケジュールを含む最適スケジューリング・ソリューション150を生成できるようにする。
【0026】
従来のシステム分析モデリングでは、リソースおよびコンテンツは別々にモデル化および管理される。従来のリソース管理情報はシステムのデバイスに焦点を合わせ、デバイスの過去のパフォーマンス統計を利用して、総ワークロードの関数としてデバイスの飽和を予測する。従来のコンテンツ管理情報は、ソフトウェア・アプリケーションおよび関連データに焦点を合わせ、アーカイブ管理タスク60の意思決定プロセスを単純化する。
【0027】
従来のシステム分析モデリングとは対照的に、本発明の方法は、コンテンツ・リソース分析モデル110においてリソースおよびコンテンツ両方を統合して、ディザスタ・リカバリおよびデータ保護を可能にし、リソース利用と、コンテンツ中心のアーカイブ管理タスク60との両方を最適化する。本発明の方法は、従来のデータ集中型のジョブ・スケジューリングのように新たなレプリカを作成せずに、存在するレプリカの中の既存のデータ冗長性およびストレージ・パスを利用する。本発明の一実施形態では、本発明の方法は、全体的なパフォーマンス向上のために、アーカイブ管理システム10全体にわたりアーカイブ管理タスク60を動的に最適化するようシステム・パラメータを操作する。本発明の別の実施形態では、本発明の方法は、パフォーマンスがアーカイブ管理システム10の全般的なパフォーマンスに重要である選択されたメンテナンス・タスクに、アプリケーション特有のパラメータを利用する。
【0028】
本発明の方法は、アーカイビング、コンプライアンス、ビジネス・インテリジェンス・クエリのデータ演算および計算を並列化するため、アプリケーション・コンテンツ情報を発見してブロック・レベル・スナップショットおよびミラーリング詳細と相互に関連付けるため、プライマリ・データを他の従来のブックキーピング動作に利用可能にすることによってプライマリ・データに対するアーカイビング・ワークロードを制限するため、並びにローカル・サイトおよびリモート・サイトの両方に存在するレプリカを活用するために利用される。
【0029】
図2は、本発明の実施形態による、上記
図1のアーカイブ管理システムのジョブ・スケジューラによって作成されるコンテンツ・リソース分析モデルのフロー・ネットワーク110Eの実施形態を示す。
【0030】
フロー・ネットワーク110Eは、個別の頂点グループを示す八(8)つのレベルを含む。フロー・ネットワーク110Eはさらに、LEVEL_kからLEVEL_k+1への有向辺を含み、k=0..6である。
【0031】
ソース・レベルLEVEL_0 L0は、フロー・ネットワーク110Eのソース頂点を含む。第1のレベルLEVEL_1 L1は、個別のタスクまたはタスク・セットを表す少なくとも1つのタスク頂点(task vertex)を含む。L1の各タスク頂点は、ソース頂点から入ってくる個別の辺(edge)を有する。
【0032】
LEVEL_0のソース頂点からLEVEL_1のタスク頂点V11への第1の辺E01は、タスク頂点V11に関連するタスクを実行するのに必要な時間の単位を示す時間容量(t)を有する。本発明の一実施形態では、時間容量(t)は、LEVEL_1のすべてのタスクに関して均一に1に割り当てられる。本発明の別の実施形態では、時間容量(t)は、個別のタスクを処理するのに必要な様々な時間を反映するために、LEVEL_1の各タスクに関連する個別の処理時間に割り当てられる。
【0033】
第2のレベルLEVEL_2 L2は、ストレージ・デバイスの個別のボリュームを表す少なくとも1つのボリューム頂点(volume vertex)を含む。第3のレベルLEVEL_3 L3は、前記少なくとも1つのボリューム頂点を含む。ボリュームは、ボリューム頂点の対であるLEVEL_2のV21およびLEVEL_3のV31によって表される。
【0034】
LEVEL_1のタスク頂点V11から第1のボリューム頂点V21への第2の辺E12は、そのボリュームが、タスク頂点V11によって表されるタスクを実行するのに必要なファイルの最新のコピーを記憶することを示す。第2の辺E12は、タスク頂点V11によって表されるタスクのボリューム使用の単位を示す、一(1)の容量を有する。
【0035】
第1のボリューム頂点V21から第2のボリューム頂点V31への第3の辺E23は、頂点V21およびV31の対によって表されるボリュームがサポートできるタスクの数を示す、ボリューム・スループット容量を有する。
【0036】
第4のレベルLEVEL_4 L4は、個別のサーバを表す少なくとも1つのサーバ頂点(server vertex)を含む。第5のレベルLEVEL_5 L5は、前記少なくとも1つのサーバ頂点を含む。サーバは、サーバ頂点の対であるLEVEL_4のV41およびLEVEL_5のV51によって表される。
【0037】
第2のボリューム頂点V31から第1のサーバ頂点V41への第4の辺E34は、V21およびV31のボリュームが、V41およびV51のサーバに、通信チャネルを介して物理的に接続されていることを示す。第4の辺E34は、V21およびV31のボリュームと、V41およびV51のサーバとの間の通信チャネルのスループットを示す通信容量を有する。通信チャネルは、ファブリック、ネットワーク、およびその組み合わせとされ得る。第4の辺E34はさらに、迅速なストレージ・エリア・ネットワーク(SAN:Storage Area Network)パス構成を可能にするために、V21およびV31のボリュームと、V41およびV51のサーバとの間の通信チャネルのパス情報を有する。
【0038】
第1のサーバ頂点V41から第2のサーバ頂点V51への第5の辺E45は、V41およびV51のサーバの計算スループットを示すサーバ・スループット容量を有し、これには利用可能な処理サイクルおよびメモリが含まれる。
【0039】
第6のレベルLEVEL_6 L6は、ワーカ若しくはソフトウェア・アプリケーションまたはその両方を表すワーカ頂点(worker vertex)V61を含む少なくとも1つのワーカ頂点を含む。
【0040】
第2のサーバ頂点V51からワーカ頂点V61への第6の辺E56は、V41およびV51のサーバが、ワーカ頂点61によって表されるワーカをホストすることを示す。第6の辺E56は、V41およびV51のサーバ上で実行されるワーカの数を示すホスト容量を有する。
【0041】
シンク・レベルLEVEL_7 L7は、フロー・ネットワーク110Eのシンク頂点(Sink Vertex)を含む。第6のレベルLEVEL_6の各ワーカ頂点は、第7の辺E67と類似した、シンク頂点へと出ていく辺を有する。ワーカ頂点V61からシンク頂点への第7の辺E67は、無限容量を有する。
【0042】
定義に従ってフロー・ネットワークを作成するステップに関しては、下記
図5の説明を参照されたい。
【0043】
図3は、本発明の実施形態による、上記
図1のアーカイブ管理システムによって実行されるデータ・アーカイブ管理スケジューリングを継続的に最適化する方法を示すフローチャートである。
【0044】
ステップ11において、アーカイブ管理システムは、スケジューリングに必要な情報を収集して、収集された情報をジョブ・スケジューラ入力としてジョブ・スケジューラに提供する。本明細書では、「ジョブ・スケジューラ入力」および「入力」という用語は、置き換え可能なように使用される。入力は、集合的にコンテンツと呼ばれるアプリケーションおよびデータと、アーカイブ管理システムの計算および通信リソースとを記述する。入力は、タスク情報、レプリカ配置データ、インフラストラクチャ・トポロジ・データ、およびリソース・パフォーマンス・データを含む。インフラストラクチャ・トポロジ・データの詳細に関しては、上記
図1の説明を参照されたい。
【0045】
図3のステップ11に応答してジョブ・スケジューラによって実行される動作に関しては、下記
図4のステップ205〜220の説明を参照されたい。ステップ11を実行した後、アーカイブ管理システムはステップ12に移る。
【0046】
本発明の一実施形態では、アーカイブ管理システムは、IBM(R)文書解析・認識(DARE)システムである。レプリカ配置データは、ディザスタ・リカバリ(DR)オーケストレータによって収集され、インフラストラクチャ・トポロジ・データは、TotalStorage(R)プロダクティビティ・センタ(TPC)データベースから読み出される。DRオーケストレータおよびTPCデータベースは、IBM(R)文書解析・認識(DARE)システムのデータ・アーカイブのコンポーネントである。(IBMおよびTotalStorageは、米国におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である)。
【0047】
ステップ12において、アーカイブ管理システムは、下記
図4のステップ220に応答して、ジョブ・スケジューラから初期スケジュールを受領する。続いて、アーカイブ管理システムはステップ13に移る。
【0048】
ステップ13〜ステップ17を含むアーカイブ管理システムのループが、アーカイブ管理システムがジョブ・スケジューラから受領した各スケジュールに関して実行される。
【0049】
ステップ13において、アーカイブ管理システムは、少なくとも1つの実際のストレージ・エリア・ネットワーク(SAN)パスを作成して、ユーザ・インターフェイスとリソースとの間のデータおよび制御パスを確立する。アーカイブ管理システムは、下記
図4のステップ210においてジョブ・スケジューラによって作成されるフロー・ネットワークのパスから、前記少なくとも1つのSANパスを作成し、これはリソースの物理的接続性を示す。続いて、アーカイブ管理システムはステップ14に移る。
【0050】
本発明の一実施形態では、SANパスは、IBM(R)文書解析・認識(DARE)システムのサーバ・ストレージ・ネットワーク・リソースから、IBM TotalStorage(R)プロダクティビティ・センタ(TPC)ウェブ・アプリケーション・プログラミング・インターフェイス(API:Application Programming Interface)へ作成される。同じ実施形態において、上記
図2のフロー・ネットワーク内のLEVEL_2〜LEVEL_6のパスが、ゾーニングおよびマスキングを用いて、ボリューム・サーバ・ワーカSANパスへと変換される。TPC Web APIを介して提供されるユーザ入力は、ゾーニング・パラメータ<イニシエータ・ポートWWN,ファブリックWWN,ターゲット・ポートWWN>およびマスキング・パラメータ<イニシエータ・ポートWWN,ターゲット・ポートWWN,ボリューム>を含む。
【0051】
ステップ14において、アーカイブ管理システムは、仮想マシンを展開し、受領されたスケジュールを実行する。受領されたスケジュールは、ループの第1の反復では、ステップ12において受領された初期スケジュールであり、ループの後の反復では、ステップ17において受領された調節済みスケジュールである。受領されたスケジュール内の各アーカイブ管理タスクは、動作のために個別の仮想マシンに割り当てられる。本発明の一実施形態において、IBM(R)文書解析・認識(DARE)システムは、受領されたスケジュールを、インデックス付けする仮想マシンをVMware(R)制御に展開することによって仮想化する。アーカイブ管理システムは、ステップ15に移る。
【0052】
ステップ15において、アーカイブ管理システムは、受領されたスケジュールを開始して、アーカイブ管理タスクを実行する。続いて、アーカイブ管理システムはステップ16に移る。
【0053】
ステップ16において、アーカイブ管理システムは、受領されたスケジュールに従ってアーカイブ管理タスクを実行する間、アーカイブ管理タスクの動作を監視する。アーカイブ管理システムは、監視結果をジョブ・スケジューラに提供する。
図3のステップ16に応答してジョブ・スケジューラによって実行される動作に関しては、下記
図4のステップ225〜235の説明を参照されたい。ステップ16を実行した後、アーカイブ管理システムはステップ17に移る。
【0054】
ステップ17において、アーカイブ管理システムは、下記
図4のステップ235に応答して、動的に調節されたスケジュールをジョブ・スケジューラから受領する。続いて、アーカイブ管理システムは、ステップ13に戻り、調節済みスケジュールを処理する。
【0055】
図4は、本発明の実施形態による、アーカイブ管理システムのジョブ・スケジューラによって実行される、最適化されたデータ・アーカイブ管理スケジュールを作成する方法を示すフローチャートである。
【0056】
ステップ205において、ジョブ・スケジューラは、上記
図3のステップ11に応答して、アーカイブ管理システムの情報収集コンポーネントから、タスク情報、レプリカ配置データ、インフラストラクチャ・トポロジ・データ、およびリソース・パフォーマンス・データを含むスケジューリング情報を入力として受領する。インフラストラクチャ・トポロジ・データは、サーバのホスト名と、ストレージ・デバイスのボリュームとの間の個別の可能なパスを表す、少なくとも1つの5つ組<ホスト名,イニシエータ・ポートWWN,ファブリックWWN,ターゲット・ポートWWN,ボリューム>である。リソース・パフォーマンス・データは、サーバ・クロック速度、ストレージ・デバイス・クロック速度、およびサーバとストレージ・デバイスとの間のデータ転送レートを含む。続いて、ジョブ・スケジューラはステップ210に移る。
【0057】
本発明の一実施形態では、ジョブ・スケジューラは、アーカイブ管理システムに対しスケジュールされるべきタスクのセットを含むジョブの処理の準備が整うと、ウェブ・サービス・コールを呼び出して、そのタスクのセットに関するタスク情報をリクエストする。タスク情報の構成要素に関しては、上記
図1の説明を参照されたい。
【0058】
ステップ210において、ジョブ・スケジューラは、入力を用いてフロー・ネットワークを作成する。フロー・ネットワークは、アーカイブ管理システムのコンテンツおよびリソースの両方を表す、上記
図1のコンテンツ・リソース分析モデルの実施形態である。フロー・ネットワークは、均一であり無関連である並列マシンをモデル化する。フロー・ネットワークにおける最適なマッピングは、アーカイブ管理タスクを実行する時間に関して最適なスケジューリング・ソリューションに対応する。フロー・ネットワークを作成するステップに関しては、下記
図5のステップ305〜320を参照されたい。続いて、ジョブ・スケジューラはステップ215に移る。
【0059】
本発明の一実施形態では、ジョブ・スケジューラは、3つの基本的な前提を用いる。第1の前提は、各タスクは、個別のタスクのワークロードの特徴にかかわらず、或る単位量の処理時間がかかるということであり、これは、計算バウンドまたはデータ演算バウンドのいずれかとされ得る。第1の前提は、すべてのタスクが均一なスループットを有するということを意味する。第1の前提は、以下ステップ215の最大フロー計算が任意にタスク・グループを分けることを防ぐ。第2の前提は、すべてのパフォーマンス入力が、単位時間当たりのタスクの静的な達成可能スループットとして合計されることが可能であるということである。第3の前提は、各タスクが、タスクがレプリケートされたボリュームにて処理可能か否かを示す2進値を有するということである。
【0060】
ステップ215では、ジョブ・スケジューラが、最大フロー計算を用いて、フロー・ネットワークにおける最適な静的マッピングである初期スケジュールを計算する。最適な静的マッピングは、フロー・ネットワーク内の最小容量値を備えるLEVEL_1からLEVEL_6のパスである。ステップ215の後、ジョブ・スケジューラはステップ220に移る。
【0061】
ステップ215は、複数のサブ・ステップを含む。第1に、ジョブ・スケジューラは、各辺、Edge(LEVEL_2,LEVEL_3)、Edge(LEVEL_3,LEVEL_4)、またはEdge(LEVEL_4,LEVEL_5)の、リソースのスループットを表す個別の重みに、Tとして示される時間の係数を乗算する。第2に、ジョブ・スケジューラは、乗算の各結果を最も近い整数値に切り捨て、前記各辺の容量を調節する。第3に、ジョブ・スケジューラは、前記各辺の調節された容量を備えるフロー・ネットワークに対して一連の最大フロー計算を実行する。最大フロー計算の結果の最大フローが、Nとして示されるタスクの総数と等しければ、Nのタスクすべてが、時間T内で完了可能である。第4に、ジョブ・スケジューラは、フロー・ネットワークのパスから候補スケジュールを生成する。第5に、ジョブ・スケジューラは、Nのタスクすべてを同じく完了できる候補スケジュールを探し、最適スケジュールである、最小の時間値T*を備えるスケジュールを発見する。
【0062】
本発明の一実施形態では、ジョブ・スケジューラは、エドモンズ・カープのアルゴリズムを用いて最大フローを計算する。同じ実施形態において、ジョブ・スケジューラは、二分検索を用いて最適スケジュールの候補スケジュールを探す。
【0063】
本発明の一実施形態において、最適スケジュールを計算する時間の上限値は、タスクの総数にプライマリ・ボリューム容量を乗算したもの、すなわち(N×容量
プライマリ)であり、それに基づき、すべてのタスクが、個別のタスクのプライマリ・ボリューム上で実行可能である。本発明の別の実施形態では、最適スケジュールを計算する時間の上限は、タスクの総数にボリューム容量を乗算したのと等しい値の中の最大値、すなわち、MAX
k=1..N(N×容量
volume_k)であり、これは、タスク用に選択され得る任意のボリュームを一般化する。
【0064】
ジョブ・スケジューラは、様々な技術を用いてステップ215を最適化し得る。第1の最適化技術は、タスク集約であり、この場合、LEVEL_1の各頂点が、個別のタスクではなくタスク・セットを表す。edge(LEVEL_1,LEVEL_2)およびedge(LEVEL_2,LEVEL_3)すべてを含むLEVEL_1〜LEVEL_3の個別の辺の容量は、タスク・セット内のタスクの数と等しい値にセットされる。LEVEL_2およびLEVEL_3の各ボリュームは、前記各ボリュームが、個別のタイム・スタンプの時間より前に変更されたすべてのファイルの最新のコピーを保持するよう、個別のタイム・スタンプを有する。タスク集約およびボリューム・タイムスタンプに関し、タスク・セットの数はボリュームの数と等しい。タスク・セットおよびボリュームの両方が、各タスク・セットを完了するための処理時間によって順序付けられる場合、第iのタスク・セットからは(j≦i)の第jのボリュームのみに対するマッピングがあり、iおよびjは正の整数である。タスク集約は、頂点および辺の数を減らすため、ジョブ・スケジューラがステップ215において最適スケジュールを計算するのに費やす時間がより短くなる。
【0065】
ステップ215の第2の最適化は、最小数のワーカ・ボリューム・マッピングを備えるスケジュールが最適スケジュールとして選択される、最小コスト法である。最小時間値T*を得た後に、ジョブ・スケジューラが、最小コスト最大フロー・アルゴリズムを実行し、LEVEL_2のボリューム頂点に入ってくる辺それぞれが、コスト値を有する。結果として、ジョブ・スケジューラは、最小時間値T*および最小数のワーカ・ボリューム・マッピングの両方を満たす最適スケジュールを発見する。
【0066】
ステップ220において、ジョブ・スケジューラは、展開のためにアーカイブ管理システムに初期スケジュールを提供する。
図4のステップ220に応答して実行されるアーカイブ管理システムの動作に関しては、上記
図3のステップ12〜16の説明を参照されたい。続いて、ジョブ・スケジューラはステップ225に移る。
【0067】
ステップ225〜ステップ235を含むジョブ・スケジューラのループは、継続的な最適化のためにジョブ・スケジューラが作成する各スケジュールに関して実行される。
【0068】
ステップ225において、ジョブ・スケジューラは、現在のスケジュールによって実行された動作の監視結果を受領する。現在のスケジュールとは、ループの第1の反復では、ステップ215において計算された初期スケジュールであり、ループの後の反復では、ステップ235において計算された調節済みスケジュールである。続いて、ジョブ・スケジューラはステップ230に移る。
【0069】
ステップ230において、ジョブ・スケジューラは、ステップ225において受領された監視結果に従って現在のスケジュールを調節し、パフォーマンスを最適化する。続いて、ジョブ・スケジューラはステップ235に移る。
【0070】
アーカイブ管理システムの挙動についての3つの基本的な前提に基づき静的かつ最適であるステップ215の初期スケジュールとは対照的に、ジョブ・スケジューラはステップ230において、ヒューリスティクスを利用し、現在のスケジュールの実際のパフォーマンス監視結果に従って現在のスケジュールを動的に最適化する。ジョブ・スケジューラは、タスク内のファイルのサイズなどのパフォーマンス監視データから得られたメトリックに基づき、タスクを実行するのに必要なリソースの量、タスクのスループットなどに関して、LEVEL_1の各タスクの特性を反映するために、個別の容量を前記各タスクに割り当てる。アーカイブ管理システムの過去の挙動を表す監視結果は、アーカイブ管理システムの将来の挙動を予測するには不十分であるため、ジョブ・スケジューラは、最適化にヒューリスティクスを用いる。
【0071】
初期スケジュールを調節するループの第1の反復では、ジョブ・スケジューラは、静的である初期スケジュールを、アーカイブ管理システムの現在の状態に従って動作の動的なセットへと変換する。ジョブ・スケジューラは、タスクのグループを中央リポジトリに入れ、ワーカが利用可能なリソースを有するときに、オンデマンドで各タスクをスケジュールする。ワーカに割り当てられるグループ内のタスクは、所定のヒューリスティック・メトリック(heuristic metric)に従って順序付けられ、ワーカがタスクを実行するのに必要なリソースを得て新たなタスクを要求すると、最高のヒューリスティック・メトリックを備える第1のタスクがスケジュールされる。ヒューリスティック・メトリックの例は、特に、タスクの容量、タスクの出次数、総ボリューム負荷、最小ボリューム負荷などとされ得る。タスクの容量は、ファイル長を含むメトリックに従って動的または静的に計算される。タスクの出次数は、タスクの実行に用いることが可能なボリュームの数を示す。第1のタスクが第2のタスクよりも大きな出次数を有する場合、ジョブ・スケジューラが、第2のタスクよりも先に第1のタスクを選ぶ可能性がより高くなる。総ボリューム負荷は、タスクを処理し得るすべてのボリュームに対する累積負荷を示す。総ボリューム負荷は、フロー・ネットワークにおいてタスクと接続されているすべてのボリュームの入次数の合計と同じである。第1のタスクが第2のタスクよりも小さな総ボリューム負荷を有する場合、ジョブ・スケジューラが、第2のタスクよりも先に第1のタスクを選ぶ可能性がより高くなる。最小ボリューム負荷は、タスクを処理し得る、負荷が最小のボリュームに対する負荷を示す。最小ボリューム負荷は、フロー・ネットワークにおいてタスクと接続されているすべてのボリュームの最小入次数と同じである。第1のタスクが第2のタスクよりも小さな最小ボリューム負荷を有する場合、ジョブ・スケジューラが、第2のタスクよりも先に第1のタスクを選ぶ可能性がより高くなる。ヒューリスティック・メトリックおよびシステム・パフォーマンスは、システムからのフィードバックに従って動的に更新されることが可能である。
【0072】
ステップ235において、ジョブ・スケジューラは、ステップ230からの調節済みスケジュールをアーカイブ管理システムに提供する。次にジョブ・スケジューラは、ステップ225に戻り、継続的かつ動的に、調節済みスケジュールのパフォーマンスを最適化する。
【0073】
図5は、本発明の実施形態による、上記
図4のステップ210においてジョブ・スケジューラによって実行される、コンテンツ・リソース分析モデルの実施形態としてのフロー・ネットワークを作成する方法を示すフローチャートである。
【0074】
フロー・ネットワークは、各辺を通過するフローの量を制限する容量を各辺が有する、有向グラフとして定義される。フロー・ネットワークの頂点は、出ていくフローのみを有するソースと、入ってくるフローのみを有するシンクとを含む。ソースとシンクとの間の任意の頂点は、個別の入ってくるフローおよび出ていくフローを有する。フロー・ネットワークは、典型的には、道路交通システム、管内の流体、電気回路内の電流、ノードのネットワーク中のデータ・トラフィックの進行などをモデル化するために使用される。本発明の一実施形態では、エドモンズ・カープの最大フロー計算などの計算アルゴリズムをサポートする従来のグラフ・ライブラリが、フロー・ネットワーク・モデリングに利用される。従来のグラフ・ライブラリの例は、特に、Java(R)ユニバーサル・ネットワーク/グラフ(JUNG:Java Universal Network/Graph)フレームワーク、LEMONオープン・ソース・グラフ・ライブラリ、およびBoostグラフ・ライブラリ(BGL:Boost Graph Library)などとされ得る(Javaは、Sun Microsystems,Inc.の米国における登録商標である)。
【0075】
ステップ305において、ジョブ・スケジューラは、上記
図2の定義に従い、LEVEL_1〜LEVEL_6の個別の頂点定義の通りにフロー・ネットワーク・モデルの各レベルにおけるセットアップされた頂点を作成する。続いて、ジョブ・スケジューラはステップ310に移る。
【0076】
ステップ310において、ジョブ・スケジューラは、個別の辺定義Edge(LEVEL_k,LEVEL_k+1)、k=1..5の通りに、LEVEL_kの頂点からLEVEL_k+1の頂点への有向辺を作成する。続いて、ジョブ・スケジューラはステップ315に移る。
【0077】
ステップ315において、ジョブ・スケジューラは、Edge(LEVEL_k,LEVEL_k+1)、k=1..5それぞれの容量定義の通りに、ステップ310において作成されたすべての辺に対して個別の辺の容量を割り当てる。続いて、ジョブ・スケジューラはステップ320に移る。
【0078】
ステップ320において、ジョブ・スケジューラは、LEVEL_1のタスクからLEVEL_6のワーカまで、フロー・ネットワーク内のパスを作成し、これは、LEVEL_1のタスクを、LEVEL_2およびLEVEL_3のボリューム、LEVEL_4およびLEVEL_5のサーバ、並びにLEVEL_6のワーカを用いて実行するためのジョブ・スケジュールを表す。
【0079】
図6は、本発明の実施形態による、データ・アーカイブ管理スケジューリングを継続的に最適化するために使用されるコンピュータ・システム90を示す。
【0080】
コンピュータ・システム90は、プロセッサ91、プロセッサ91に結合された入力デバイス92、プロセッサ91に結合された出力デバイス93、並びにプロセッサ91にそれぞれ結合されたメモリ・デバイス94および95を含むコンピュータ可読メモリ・ユニットを含む。入力デバイス92は、特に、キーボード、マウス、キーパッド、タッチ・スクリーン、音声認識デバイス、センサ、ネットワーク・インターフェイス・カード(NIC)、ボイス/ビデオ・オーバ・インターネット・プロトコル(VOIP)アダプタ、ワイヤレス・アダプタ、電話アダプタ、専用回線アダプタなどであってもよい。出力デバイス93は、特に、プリンタ、プロッタ、コンピュータ画面、磁気テープ、リムーバブル・ハード・ディスク、フレキシブル・ディスク、NIC、VOIPアダプタ、ワイヤレス・アダプタ、電話アダプタ、専用回線アダプタ、可聴信号若しくは視覚信号またはその両方のジェネレータ、発光ダイオード(LED)などであってもよい。メモリ・デバイス94および95は、特に、キャッシュ、ダイナミック・ランダム・アクセス・メモリ(DRAM)、読み取り専用メモリ(ROM)、ハード・ディスク、フレキシブル・ディスク、磁気テープ、コンパクト・ディスク(CD)またはデジタル・ビデオ・ディスク(DVD)などの光学式ストレージなどであってもよい。メモリ・デバイス95は、コンピュータ・コード97を含み、これは、コンピュータ実行可能命令を含むコンピュータ・プログラムである。コンピュータ・コード97は、特に、本発明に従ってデータ・アーカイブ管理スケジューリングを継続的に最適化するために使用されるアルゴリズムを含む。プロセッサ91は、コンピュータ・コード97を実行する。メモリ・デバイス94は、入力データ96を含む。入力データ96は、コンピュータ・コード97によって必要とされる入力を含む。出力デバイス93は、コンピュータ・コード97からの出力を表示する。メモリ・デバイス94および95のいずれかまたは両方(または
図6に示されていない1つ以上のさらなるメモリ・デバイス)は、コンピュータ可読プログラムが具現化されている、若しくは他のデータが記憶されている、またはその両方のコンピュータ使用可能ストレージ媒体(またはコンピュータ可読ストレージ媒体若しくはプログラム・ストレージ・デバイス)として使用されてもよく、コンピュータ可読プログラムは、コンピュータ・コード97を含む。概して、コンピュータ・システム90のコンピュータ・プログラム製品(または代わりに製造品)は、前記コンピュータ使用可能ストレージ媒体(または前記プログラム・ストレージ・デバイス)を含むとよい。
【0081】
本発明のコンポーネントはいずれも、本発明のデータ収集ルールの通りにウェブ・インターフェイスを動的に構築するプロセスに関してコンピューティング・インフラストラクチャを展開または統合することを提案するサービス・プロバイダによる、展開、管理、サービス提供などが可能である。したがって、本発明は、コンピュータ可読コードをコンピューティング・システム(例えばコンピューティング・システム90)に統合、ホスト、維持、および展開することを含む、コンピュータ・インフラストラクチャをサポートするプロセスを開示し、コードは、コンピューティング・システムとともに、データ・アーカイブ管理スケジューリングを継続的に最適化する方法を実行することができる。
【0082】
別の実施形態では、本発明は、契約、宣伝、若しくは手数料、またはそのいずれかの組み合わせに基づき本発明のプロセス・ステップを実行するビジネス方法を提供する。すなわち、ソリューション・インテグレータなどのサービス・プロバイダは、本発明のデータ・アーカイブ管理スケジューリングを継続的に最適化するプロセスの、作成、維持、サポートなどを行うことを提案することができる。この場合、サービス・プロバイダは、1以上の顧客に対して本発明のプロセス・ステップを実行するコンピュータ・インフラストラクチャの作成、維持、サポートなどを行うことができる。見返りとして、サービス・プロバイダは、契約若しくは手数料の取り決め若しくはその両方に従って顧客(単数または複数)から支払いを受領すること、若しくは1つ以上のサード・パーティに対する宣伝コンテンツの販売からの支払いを受領すること、またはその両方を行うことができる。
【0083】
図6は、コンピュータ・システム90を、ハードウェアおよびソフトウェアの特定の構成として示すが、当業者には周知であると考えられるハードウェアおよびソフトウェアの任意の構成が、
図6の特定のコンピュータ・システム90と関連して上記に記載された目的のために利用され得る。例えば、メモリ・デバイス94および95は、独立したメモリ・デバイスではなく、単一のメモリ・デバイスの一部であってもよい。
【0084】
当業者であれば当然のことであるが、本発明は、システム、方法またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本願明細書においてすべて概して「回路」、「モジュール」若しくは「システム」と呼ばれることもある、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとり得る。さらに、本発明は、任意の有形の表現媒体において具現化されたコンピュータ使用可能プログラム・コードを有する該媒体において具現化された、コンピュータ・プログラム製品の形態をとってもよい。
【0085】
1つ以上のコンピュータ使用可能またはコンピュータ可読媒体(単数または複数)94、95の任意の組み合わせが利用され得る。コンピュータ使用可能媒体またはコンピュータ可読媒体という用語は、コンピュータ使用可能/可読ストレージ媒体94、95を集合的に指す。コンピュータ使用可能またはコンピュータ可読媒体94、95は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線、若しくは半導体システム、装置、デバイス、または前述のものの任意の適切な組み合わせとすることもできる。コンピュータ可読媒体94、95のより具体的な例(包括的でないリスト)には、1つ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光学式ストレージ・デバイス、磁気ストレージ・デバイス、または前述のものの任意の適切な組み合わせが含まれるであろう。なお、プログラムは、例えば紙または他の媒体の光学式走査により電子的に獲得され、続いて必要に応じコンパイル、解釈、または適切な方法により別の形で処理され、続いてコンピュータ・メモリに記憶されることが可能であるため、コンピュータ使用可能またはコンピュータ可読媒体94、95は、プログラムが印刷される紙または別の適切な媒体とすることさえもできる。この文書の文脈では、コンピュータ使用可能またはコンピュータ可読媒体94、95は、命令実行システム、装置またはデバイスによって、またはそれに関連して使用されるプログラムを含むこと、または記憶することができる任意の媒体としてよい。
【0086】
本発明の動作を実行するコンピュータ・コード97は、Java(R)、Smalltalk(R)、C++または同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語若しくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。コンピュータ・コード97は、スタンド・アロン・ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されることも、部分的にユーザのコンピュータ上で実行されることも、または部分的にユーザのコンピュータ上で、かつ部分的にリモート・コンピュータ上で実行されることも、または完全にリモート・コンピュータ若しくはサーバ上で実行されることもできる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介してリモート・コンピュータがユーザのコンピュータに接続されてもよく、または、(例えば、インターネット・サービス・プロバイダを使用しインターネットを介して)外部コンピュータに接続されてもよい。
【0087】
本発明は、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図若しくはブロック図またはその両方を参照して記載されている。当然のことながら、フローチャート図若しくはブロック図またはその両方の各ブロック、およびフローチャート図若しくはブロック図またはその両方の複数ブロックの組み合わせは、コンピュータ・プログラム命令により実装可能である。「コンピュータ・プログラム命令」という用語は、本明細書では「コンピュータ・コード97」という用語と置き換え可能である。マシンを生じるよう、当該コンピュータ・プログラム命令が、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサにより実行されて、フローチャート若しくはブロック図またはその両方のブロック若しくは複数ブロックにおいて指定された機能/動作を実装する手段を作り出すようにすることもできる。
【0088】
さらに、特定の形で機能するようコンピュータまたはその他のプログラム可能データ処理装置に指示することができる当該コンピュータ・プログラム命令は、コンピュータ可読媒体94、95に記憶されて、コンピュータ可読媒体に記憶されたこの命令が、フローチャート若しくはブロック図またはその両方のブロック若しくは複数ブロックにおいて指定された機能/動作を実装する命令手段を含む製品を生じるようにすることもできる。
【0089】
さらに、コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能データ処理装置にロードされて、コンピュータまたはその他のプログラム可能装置上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスを生じさせ、コンピュータまたはその他のプログラム可能装置上で実行される命令が、フローチャート若しくはブロック図またはその両方のブロック若しくは複数ブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。
【0090】
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性および動作を示す。この関連で、フローチャートまたはブロック図内の各ブロックは、指定の論理機能(単数または複数)を実装する1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すこともできる。なお、さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている2つのブロックが実際には事実上同時に実行されてもよく、または、各ブロックが逆順で実行されることがあってもよい。なお、さらに、ブロック図若しくはフローチャート図またはその両方の各ブロック、およびブロック図若しくはフローチャート図またはその両方の複数ブロックの組み合わせは、指定の機能若しくは動作を実行する専用ハードウェア・ベース・システム、または専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができる。
【0091】
特許請求の範囲のミーンズ・プラス・ファンクション構成要素またはステップ・プラス・ファンクション構成要素すべての対応する構造、材料、動作、および等価物は、明確に請求されている他の請求される構成要素とともに機能を実行する任意の構造、材料、または動作を含むものとする。本発明の記載は、例証および説明のために示されたものであるが、包括的であることも、開示された形態の発明に限定されることも目的としていない。当業者には、本発明の範囲から逸脱することのない、多数の変更および変形が明らかであろう。実施形態は、本発明の原理および実際の応用を最もよく説明して、当業者が、意図される特定の用途に適する様々な変更を用いた様々な実施形態に関して、本発明を理解できるように選ばれ、記載された。