(58)【調査した分野】(Int.Cl.,DB名)
記憶システムにおいて、1つ以上の記憶装置に対するデータの読出または書込を行なうよう入力/出力(I/O)要求を受取るステップを含み、前記I/O要求は、前記1つ以上の記憶装置内における前記読出または書込されるべきデータの位置を示す物理特性を含み、さらに、
前記記憶システムによって受取られる複数の前記I/O要求を前記記憶システム内においてキューに入れるステップと、
前記記憶システムが、前記記憶システムにおいてキューに入れられている待ち状態のI/O要求を処理する準備ができているときに、前記記憶システム内の記憶サーバが、前記キューに入れられている複数の前記I/O要求から、前記複数の前記I/O要求における特定のI/O要求に関連付けられる1つ以上の論理特性に少なくとも一部に基づいて処理すべきある特定のI/O要求を選択するステップとを含み、
前記1つ以上の論理特性は、前記物理特性とは異なり、前記1つ以上の論理特性は、前記I/O要求を伴う要求メタデータの形式で前記記憶システムに送られ、
前記1つ以上の論理特性は、前記特定のI/O要求のうちの少なくとも第1のI/O要求に対して、
前記第1のI/O要求に関連付けられるデータベース名と、
作業を分類化し、前記第1のI/O要求に関連づけられる作業負荷タイプと、
前記第1のI/O要求を出すために前記第1のI/O要求側で使用される通信セッションに関連付けられるユーザ名とのうちの少なくとも1つを示すものを含み、さらに、
前記記憶サーバが前記ある特定のI/O要求を選択することに応答して、前記ある特定のI/O要求に含まれる特定の物理特性によって示される位置においてデータの読出または書込を行なうことによって、前記ある特定のI/O要求を処理するステップを含み、
1つ以上の計算装置によって実行される、方法。
1つ以上のデータベースサーバから1つ以上の選択ポリシーを受取るステップをさらに含み、前記1つ以上の選択ポリシーは、前記記憶システムに対して、前記キューに入れられている複数の前記I/O要求から前記処理すべきある特定のI/O要求をどのように選択するかを示す、請求項1に記載の方法。
前記記憶システムが、前記複数のI/O要求を、前記複数の前記I/O要求における前記特定のI/O要求に関連付けられる前記1つ以上の論理特性に基づいた1つ以上のグループにグループ化するステップと、
前記記憶システムが、前記1つ以上の選択ポリシーを適用して、前記1つ以上のグループのうち、前記ある特定のI/O要求を選択する、ある特定のグループを識別するステップとをさらに含む、請求項2に記載の方法。
前記1つ以上のデータベースサーバから、前記1つ以上の選択ポリシーとともに、前記1つ以上の選択ポリシーがどのようにして複数の段階にわたって適用されることになるかを示すポリシー対段階割当データを受取るステップをさらに含み、前記1つ以上の選択ポリシーは複数のポリシーを含み、前記方法はさらに、
少なくとも前記ポリシー対段階割当データに基づいて、前記1つ以上の選択ポリシーのうち、前記複数の段階のうちの1つ以上の第1の段階中に適用する1つ以上の第1のポリシーを識別するステップと、
前記1つ以上の第1の段階中に、前記識別された1つ以上の第1のポリシーを適用することによって、前記キューに入れられている複数のI/O要求をフィルタ処理し、それによって、フィルタ処理されたI/O要求の組を与えるステップと、
少なくとも前記ポリシー対段階割当データに基づいて、前記1つ以上の選択ポリシーのうち、前記複数の段階の最終段階中に適用する最終ポリシーを識別するステップと、
前記複数の段階の最終段階中に、前記ポリシー対段階割当データに基づいて、前記最終ポリシーを適用することによって、前記フィルタ処理されたI/O要求の組から前記ある特定のI/O要求を選択するステップとを含む、請求項2に記載の方法。
前記1つ以上の第1のポリシーを識別するステップまたは前記最終ポリシーを識別するステップは、さらに、少なくとも一部が、直前の段階の後、どのI/O要求が、前記キューに入れられている複数のI/O要求からフィルタ処理されないままであるかに基づく、請求項4に記載の方法。
前記ポリシー対段階割当データは、前記1つ以上の第1のポリシーのうちのある第1のポリシーはデータベース名によって一部グループ化されるI/O要求に基づくこと、および前記最終ポリシーは作業負荷タイプまたは消費側グループによって一部グループ化されるI/O要求に基づくことを示す、請求項4に記載の方法。
前記1つ以上のデータベースサーバから、1つ以上の選択ポリシーとともに、どの選択ポリシーが前記記憶システムにおいてどのディスクに適用されることになるかを示すポリシー対ディスク割当データを受取るステップをさらに含む、請求項2に記載の方法。
前記1つ以上の選択ポリシーとともに、前記記憶システムに格納される複数のデータベースのうち、前記1つ以上の選択ポリシーが当てはまるある特定のデータベースを示すデータを受取るステップと、
前記記憶システムが前記1つ以上の選択ポリシーを前記ある特定のデータベースと関連して格納するステップと、
前記記憶システムが、前記処理すべきある特定のI/O要求を、一部、前記ある特定のI/O要求を選択する第1のグループのI/O要求を識別することによって、選択するステップとをさらに含み、前記第1のグループを識別するステップは、前記1つ以上の選択ポリシーの少なくとも1つを、前記ある特定のデータベースにアクセスするI/O要求の組に適用するステップを含む、請求項2に記載の方法。
前記ある特定のデータベースにアクセスする前記I/O要求の組を、少なくとも1つの論理特性に基づいて、どのようにして、前記第1のグループを含む、複数のグループに分割するかを示すデータを受取るステップをさらに含み、前記1つ以上の選択ポリシーは、どのようにして、前記複数のグループから、前記ある特定のI/O要求を選択するグループを識別するかを示す、請求項10に記載の方法。
前記記憶システムが前記I/O要求の前記論理特性に基づいてスケジューリングポリシーを動的に調整するステップをさらに含み、前記スケジューリングポリシーは、前記記憶システムが待ち状態のI/O要求を処理する準備がいつできるかを示す、請求項1に記載の方法。
前記入力/出力要求を異なるグループに分類する前記論理は、前記1つ以上のデータベースサーバが前記入力/出力要求を出したデータベース動作に関連付けられる論理特性を、特定の論理特性と特定のグループとの間の1つ以上のマッピングと比較することによって、前記入力/出力要求が前記グループのうちのどれに分類されるかを選択するように構成される、請求項17に記載のシステム。
前記入力/出力要求を異なるグループに分類する前記論理は、前記1つ以上のデータベースサーバが前記入力/出力要求を出したデータベース動作に関連付けられる論理特性を、特定の論理特性と特定のグループとの間の1つ以上のマッピングと比較することによって、前記入力/出力要求が前記グループのうちのどれに分類されるかを選択するように構成され、
前記1つ以上のマッピングは、前記1つ以上のデータベースサーバが前記記憶システムにデータを格納した異なる論理データベースに関連付けられる異なるマッピングを含み、
前記入力/出力要求を異なるグループに分類する前記論理は、さらに、前記異なるマッピングのうちのどれを利用して、どの入力/出力要求を分類するかを、前記入力/出力要求によって目標とされるデータが前記論理データベースのうちのどれに関係するかに基づいて選択するように構成される、請求項17に記載のシステム。
前記1つ以上のデータベースサーバおよび/または前記記憶システムにあり、前記グループに対してリソース割当ディレクティブを指定するディレクティブを受取る論理をさらに含み、前記リソース割当ディレクティブは、具体的なグループに対して利用されるべきリソース割当のパーセンテージまたはどの具体的なグループが他の具体的なグループに先行するかを示す優先順位レベルの一方または両方を示し、
特定の入力/出力要求の処理を優先順位付けすることは前記リソース割当ディレクティブに基づいて処理を優先することを含む、請求項17に記載のシステム。
前記記憶システムは、前記記憶システムが入力/出力要求の待機キューを維持する1つ以上のメモリを含み、前記待機キューは、前記1つ以上のメモリ内における別個の構造、および/または前記1つ以上のメモリ内における論理キューであり、
前記待機キューは、前記1つ以上のデータベースサーバが前記記憶システムにデータを格納した複数の論理データベースの各論理データベースに対して1つ以上のキューを含み、各それぞれの論理データベースに対する前記1つ以上のキューは、前記論理データベースに関係する前記グループの各々に対して少なくとも1つのキューを含み、
特定の入力/出力要求の処理を優先順位付けすることは、処理すべき次の入力/出力要求を前記待機キューのどれから繰り返し選択することを含む、請求項17に記載のシステム。
前記記憶システムは、前記記憶システムが入力/出力要求の待機キューを維持する1つ以上のメモリを含み、前記待機キューは、前記1つ以上のメモリ内における別個の構造、および/または前記1つ以上のメモリ内における論理キューであり、
前記待機キューは、前記1つ以上のデータベースサーバが前記記憶システムにデータを格納した複数の論理データベースの各論理データベースに対して1つ以上のキューを含み、各それぞれの論理データベースに対する前記1つ以上のキューは、前記論理データベースに関係する前記グループのある組からのあるグループと前記入力/出力要求が関係するある作業負荷がどのように重要であるかの分類の組との各可能な組合わせに対して少なくとも1つのキューを含み、
特定の入力/出力要求の処理を優先順位付けすることは、処理すべき次の入力/出力要求を前記待機キューのどれから繰り返し選択することを含む、請求項17に記載のシステム。
前記記憶システムは第1の記憶システムであり、前記第1の記憶システムと同じ態様において構成される複数の記憶システムをさらに含む、請求項17に記載のシステム。
前記論理特性は、前記1つ以上のデータベースサーバが前記入力/出力要求を出した前記データベース動作に関連付けられるサービス識別子を含む、請求項17に記載のシステム。
前記論理特性は、前記1つ以上のデータベースサーバが前記入力/出力要求を出した前記データベース動作に関連付けられるユーザ識別子を含む、請求項17に記載のシステム。
前記論理特性は、前記1つ以上のデータベースサーバが前記入力/出力要求を出した前記データベース動作に関連付けられるプログラム名を含む、請求項17に記載のシステム。
前記論理特性は、前記1つ以上のデータベースサーバが前記入力/出力要求を出した前記データベース動作に関連付けられる目的識別子を含む、請求項17に記載のシステム。
前記論理特性は、前記1つ以上のデータベースサーバが前記入力/出力要求を出した前記データベース動作に関連付けられるデー夕ベース動作統計を含む、請求項17に記載のシステム。
【発明を実施するための形態】
【0010】
詳細な説明
以下の記載においては、説明のため、多数の具体的な詳細を、この発明の十分な理解を与えるために述べる。しかしながら、この発明はこれらの具体的な詳細なしに実施されてもよいことは明らかである。他の例では、周知の構造および装置が、ブロック図において、この発明を不要に不明瞭にすることを回避するために、示される。
【0011】
全体的概要
I/O要求が記憶システムによってI/O要求の1つ以上の論理特性に少なくとも部分的に基づいて処理されるシーケンスを記憶システム内において管理するための技術がここに記載される。この論理特性は、たとえば、I/O要求が提出されたユーザの識別情報、I/O要求を提出したサービス、I/O要求により目標とされるデータベース、I/O要求がマッピングする消費側グループを示すもの、I/O要求が出された理由、I/O要求の優先順位カテゴリなどを含んでもよい。そのような論理特性は、基本的に、I/O要求によって目標とされるデータの記憶位置、およびI/O要求によって指定されるI/O動作に関与するデータの量などのような、I/O要求の物理的特性とは異なる。
【0012】
ここに記載されるストレージ内I/O管理技術は、I/O要求を記憶システムに出すI/O要求側内において実行される任意の管理の代わりに、またはそれに加えて用いられてもよい。ここで用いられるとおりでは、「I/O要求側」は、I/O要求を記憶システムに出す任意のエンティティを指す。I/O要求側は、たとえば、データベースアプリケー
ションから受取られるデータベースコマンドに応答してI/O要求を出すデータベースサーバであってもよい。しかしながら、ここに記載される技術はどのような特定のタイプのI/O要求側にも限定されるものではない。
【0013】
記憶システムは、記憶システム内の記憶装置に向けられるすべてのI/O要求を取扱うため、記憶システムは、それらの記憶装置に向けられたI/O要求をどのようにスケジュールするかについてのインテリジェントスケジューリング判断をなすよう、I/O要求側よりもよい状況にある。たとえば、記憶システムは、ある特定の記憶装置を目標とする高優先順位I/O要求および同じ記憶装置を目標とする低優先順位I/O要求が、異なるI/O要求側から来て、2つの異なるデータベースを目標としても、高優先順位I/O要求を低優先順位I/O要求よりも前に取扱うべきであると判断することができる。
【0014】
記憶システム内に含まれ、I/O要求を管理するための論理は、ここにおいては、記憶システムの「記憶サーバ」と称される。記憶サーバは、ソフトウェアが記憶システムの一部であるプロセッサにおいて実行されること、ハードワイヤード論理、またはソフトウェアとハードウェアとの任意の組合せによって実現されてもよい。記憶サーバによって受取られてはいるが、まだ出されてはいない(たとえば記憶システムの出力キューに加えられている)I/O要求は、ここにおいては、「待ち状態のI/O要求」と称される。記憶装置に出されてはいるが、まだ完了してはいないI/O要求は、ここにおいては、「未処理のI/O要求」と称される。
【0015】
I/O要求に関連付けられる作業の論理特性は従来は記憶システムには利用可能ではない。したがって、1つの実施例においては、I/O要求の論理特性は、記憶システムに対し、他のエンティティから、「要求メタデータ」の形式で通信される。たとえば、1つの実施例においては、I/O要求側は記憶サーバに対して要求メタデータをI/O要求とともに与える。上で説明されるように、要求メタデータは、I/O要求によって表現される作業についての論理特性を指定する。それらの論理特性、スケジューリングポリシー、および選択ポリシーに基づいて、記憶サーバは各I/O要求をいつ出すべきかを判断する。以下においてより詳細に記載されることになるように、記憶サーバは、即座にI/O要求を出してもよく、または遅らせて出すために要求をキューに入れてもよい。
【0016】
1つの実施例では、1つより多いI/O要求が待ち状態にあり、スケジューリングポリシーが、I/O要求が出されるべきであることを示す場合、どの待ち状態のI/O要求が出されるべきかは、1つ以上の選択ポリシーによって判断される。選択ポリシーにおいて指定されるさまざまなポリシーを段階的に適用してもよい。各段階中において、選択に対する候補であると考慮される待ち状態のI/O要求の数は、その段階に属するポリシーに基づいて低減される。待ち状態のI/O要求からなる、わずかに1つの空ではない待機キューが候補として残る場合、記憶サーバは、処理のために、その待機キューの先頭にあるI/O要求を選択する。
【0017】
選択ポリシーにおいて指定されてもよいポリシーの例は以下を含む:
・記憶性能容量の70%はデータ倉庫ファイナンスに割当てられるべきであり、記憶性能容量の30%はデータ倉庫セールスに割当てられるべきである。
・プロダクションデータベースはテストおよび開発データベースを超える優先順位を有するべきである。
・OLTP作業負荷はメンテナンス作業負荷を超える優先順位を有するべきである。
【0018】
例示的システム
図1は、ここに記載されるI/O要求管理技術が実現されてもよいシステムのブロック図である。
図1を参照して、記憶システム100は、いくつかの異なるアプリケーション
130、132、134、136および138によって用いられるデータに対するストレージを提供する。それらのアプリケーションは、コマンドをI/O要求側120、122および124に送ることにより、記憶システム100を間接的に利用する。たとえば、アプリケーション130、132、134、136および138はさまざまなデータベースアプリケーションであってもよく、I/O要求側120、122および124は、データベースコマンドに応答して、記憶装置104および106にわたって広がるデータベースに格納されるデータを格納し、検索し、操作するデータベースサーバであってもよい。
【0019】
示される実施例では、アプリケーション130および132はI/O要求側120と対話し、アプリケーション134はI/O要求側122と対話し、アプリケーション136および138はI/O要求側124と対話する。実際の実現例では、I/O要求側と同時に対話するアプリケーションの数およびタイプは変動してもよい。
【0020】
上で言及したように、I/O要求側120、122および124は、何らかの形式の内部I/O要求スケジューリングポリシーを実現してもよい。しかしながら、それらの内部ポリシーは、たとえば、いつI/O要求側120およびI/O要求側122の双方が記憶装置104を目標とするI/O要求を提出するかをインテリジェントにスケジューリングすることを保証しはしない。そのような状況下でI/O要求をインテリジェントに管理するためには、ポリシーを記憶サーバ102に登録し、記憶サーバ102はそれらのポリシーを入来I/O要求に適用する。
【0021】
スケジューリングポリシーおよび選択ポリシー
1つの実施例に従うと、記憶サーバ102内には2つの別々のポリシー、つまりスケジューリングポリシーと選択ポリシーとがある。スケジューリングポリシーは、I/Oがいつ出されるべきかを判断する。たとえば、スケジューリングポリシーは、スループットを妥当に高く保つことに向けられているかもしれない。この場合には、記憶サーバ102は、相対的に大きな数の未処理I/Oを許すであろう。I/Oは、一旦この制限にヒットするとキューに入れられるにすぎないであろう。別の例は、レイテンシを妥当に低く保つことに向けられるスケジューリングポリシーであろう。この場合では、記憶サーバ102は、相対的に小さな数の未処理I/Oを許すであろう。いずれの場合においても、一旦この制限にヒットすると、任意の新たなI/Oがキューに入れられるであろう。未処理I/Oの数(ディスク上の現在のI/O負荷)があるレベルに達すると、「飽和」が生ずる。
【0022】
スケジューリングポリシーに基づいて、記憶サーバ102がI/O要求を出すと判断すると、記憶サーバ102は選択ポリシーに基づいてどのI/Oを出すべきかを判断する。ここに記載される技術は任意の選択ポリシーとともに用いられてもよい。説明のため、さまざまなタイプの選択ポリシーを以下に記載する。しかしながら、ここに記載される技術は、用いられる選択ポリシーのタイプには依存しない。典型的には、記憶サーバ102によって実現される選択ポリシーは、たとえば、記憶が用いられることになる態様次第である。
【0023】
典型的には、記憶が複数のデータベースによって共有される状況においては、選択ポリシーは、I/O要求によって目標とされるデータベースに基づいてI/O要求を選び取るためのポリシーを含むことになる。以下においてより詳細に記載されるように、データベースを選び取るポリシーは、比率に基づくか、優先順位に基づくか、それら2つのハイブリッドであり得る。
【0024】
他方、記憶が1つのデータベースによって用いられる場合、選択ポリシーは、I/O要求を、そのI/O要求に関連付けられる作業負荷に基づいて選び取るためのポリシーを含んでもよい。この作業負荷に基づく選択ポリシーも、比率に基づくか、優先順位に基づく
か、またはそれら2つのハイブリッドであり得る。
【0025】
最後に、記憶が複数のデータベースによって共有され、それらデータベースがそれらの中に複数の作業負荷を有する場合には、選択ポリシーは2段階プランを伴ってもよく、そこにおいては、プランの第1段階はデータベースを選択し、プランの第2段階はそのデータベース内において作業負荷を選択する。
【0026】
1つの実施例に従うと、ここに記載される技術は、スケジューリングポリシーおよび選択ポリシーと並んで、記憶システム内の各記憶装置に独立して適用される。したがって、記憶システム内に12個のディスクがある場合には、負荷設定、キューなどはディスク毎に指定される。ディスク毎の負荷設定、キューおよびポリシーは有用であり、なぜならば、すべてのディスクは同じ記憶システムによって管理される一方で、各ディスクは他のディスクとは独立して動作するからである。
【0027】
スケジューリングポリシー
上で言及したように、記憶サーバ102は、記憶システムが目標の最適負荷に達する点まで、I/O要求を記憶システムに出す。ここで用いられるとおりでは、「負荷」という用語は、未処理の、未完了のI/O要求の全コストを指す。個々のI/O要求のコストは、そのI/O要求が記憶システムリソースを利用する時間量によって判断される。したがって、少量のデータを読むI/O要求は大量のデータを読むI/O要求よりもはるかに低いコストを有し、なぜならば、それははるかにより短い時間の間ディスクI/Oリソースを占有するからである。
【0028】
1つの実施例に従うと、I/O要求のコストは記憶システムを較正することにより予め定められる。一旦目標負荷に達すると、記憶システムは後のすべてのI/O要求をキューに入れる。十分なI/O要求が完了し、記憶システムがその目標負荷の下にあるときは、記憶サーバは選択ポリシーを用いて十分なI/O要求を選択して記憶システムをその目標負荷に戻す。
【0029】
目標負荷の設定は記憶システムの性能特性を決める。目標負荷が低い場合、I/O要求のレイテンシは低いことになる。目標負荷が増加するにつれ、記憶のスループットは増大し、よりよいI/Oスループットへと至る。これは、記憶システムはより高い負荷においてのほうがより効率よく働くからである。しかしながら、I/Oのレイテンシは、その増大した負荷のため、減少することになる。
【0030】
目標負荷のサイズは、ここにおいては、「負荷設定」と称される。スケジューリングポリシーにより実現される負荷設定は数多くの異なる態様で確立され得る。たとえば、負荷設定は、たいていの人々にとって十分働くべきであるあるレベルにおいてハードコード化され得る。代替的に、負荷設定は、記憶システムが、レイテンシ、スループットまたはそれら2つの間の妥協点に関して最適化されるべきかどうかを指定する記憶管理者によって設定され得る。別の例としては、負荷設定は、記憶サーバにより、各作業負荷を見ることによって自動的に判断され得る。メタデータおよび他の作業負荷特性を用いて、記憶サーバは、作業負荷がレイテンシまたはスループットに対して最適化されるよう好まれるであろうかどうかを判断し得る。記憶サーバは、選択ポリシーを用いて、各作業負荷の優先を重み付けし、全体の負荷設定を決定してもよい。たとえば、高優先順位データベースの優先は低優先順位データベースの優先よりも多く重み付けされるであろう。
【0031】
負荷設定が記憶サーバによって自動的に判断されるシステムにおいては、記憶システムは、登録される選択ポリシーおよび/または要求メタデータにおいて反映されるように、記憶システムの使用特性に基づいてスケジューリングポリシーを選択してもよい。したが
って、記憶システムによって受取られるI/O要求が、主に、スループット集約型となる傾向であるデータ倉庫動作に対する場合には、記憶システムは、それはより高い負荷設定を有するというスケジューリングポリシーを選択してもよい。たとえば、記憶システムは、記憶システムの出力I/Oキューが任意の所与の時間において81メガバイトI/O要求までを含むことを可能にするよう構成されてもよい。より高い負荷設定によって、より大量のI/Oが記憶システム内の記憶装置に出され、記憶装置を可能な限りビジーに保つことを可能にする。
【0032】
他方、I/O要求の大半がOLTP作業負荷に対してである場合には、より低い負荷設定を伴うスケジューリングポリシーを選択して、スループットよりもレイテンシに対して最適化を行なうようにしてもよい。より低い負荷設定のため、I/O要求は、より短い時間の間、記憶装置をタイアップすることになる。記憶装置は、より短い時間の間タイアップされることになるので、記憶装置は、新たに到着する高優先順位I/O要求を処理するよう、より利用可能となることになる。したがって、それらの高優先順位I/O要求を発生させた動作を実行しているユーザは、より少ない記憶システムレイテンシを経験することになる。
【0033】
1つの実施例に従うと、記憶システムは、記憶システムに登録される選択ポリシーおよび/または要求に伴う要求メタデータに基づいて、全体の作業負荷の特性を判断する。たとえば、ある選択ポリシーは、記憶システムが用いられているアプリケーションはデータ倉庫アプリケーションである旨を示してもよい。代替的に、選択ポリシーは、アプリケーションのタイプを示さないかもしれないが、I/O要求とともに受取られる要求メタデータは、I/O要求の大半はデータ倉庫アプリケーションからである旨を示すかもしれない。
【0034】
たとえ、選択ポリシーが、記憶システムを用いている作業負荷の性質を示しているときでも、記憶サーバは、要求メタデータを用いて、各作業負荷のどれほどが実際にストレージを使用しているかどうかを判断してもよい。たとえば、ある選択ポリシーは、記憶システムが2つのOLTPアプリケーションおよび2つの倉庫アプリケーションによって用いられている旨を示してもよい。この情報のみに基づくと、最適な負荷設定がどのようであろうかは不明瞭であるかもしれない。しかしながら、記憶サーバによって実際に受取られるI/O要求の90%が2つのOLTPアプリケーションからである場合、記憶システムは、OLTPアプリケーションに対して最適化される負荷設定を選択してもよい。
【0035】
1つの実施例に従うと、負荷設定選択処理を周期的に繰返し、作業負荷が変更するにつれ、負荷設定が動的に変更し得る。たとえば、1つの実施例では、選択処理は、最後の5秒などのような、ある特定の時間期間内に記憶システムによって受取られたI/O要求に基づいてなされてもよい。その期間中に受取られるI/O要求によって表現される作業負荷は、前の期間において受取られたI/O要求において表現される作業負荷とは大きく異なるかもしれない。次いで、負荷設定を変更して、最も最近の負荷設定選択動作の結果を反映させる。したがって、記憶サーバが主にデータ倉庫動作に対して用いられる期間中においては、負荷設定はスループットに対して自動的に最適化されることになり、同じ記憶システムが主にOLTP動作に対して用いられる期間中においては、負荷設定は低減されたレイテンシに対して自動的に最適化されることになる。
【0036】
要求メタデータ
選択ポリシーを実現するために、記憶サーバ102はそれが受取るI/O要求についての情報を知ることを必要とする。たとえば、選択ポリシーが、I/O要求に関連付けられる作業負荷に基づく場合、記憶サーバ102は、I/O要求が属する作業負荷を知ることが必要である。1つの実施例に従うと、選択ポリシーを実現するよう記憶サーバ102に
よって必要とされる情報は、記憶サーバ102に対し、要求に伴う「要求メタデータ」として与えられる。I/O要求に伴うメタデータ、およびどのようにそのメタデータが記憶サーバ102によって用いられてI/Oスケジューリングについてインテリジェントな判断をなすかは、この後より詳細に記載する。
【0037】
待機キュー
記憶システム100が、スケジューリングポリシーによって支配されるキャパシティの下で動作しているとき、記憶サーバ102はI/O要求をキューに入れない。特に、記憶システムのキャパシティが飽和しない限り、記憶サーバ102によって受取られるI/O要求は即座に処理される。I/O要求の処理は、たとえば、I/O要求を出力I/Oキューに置くことによって行なわれてもよい。しかしながら、I/O要求が記憶システム100を飽和し始める毎に、記憶サーバ102は、受取られたI/O要求を待機キューに入れることによって、入来するI/O要求の実行を遅らせることになる。
【0038】
たとえば、プロダクションデータベースおよびテストデータベースが記憶システム100を共有している場合、プロダクションデータベースを目標とするI/O要求に対して優先順位を与える選択ポリシーが構成され得る。この場合、テストデータベース負荷がプロダクションデータベースパフォーマンスに影響を与えるであろう毎に、記憶サーバ102は、プロダクションデータベースI/Oパフォーマンスが影響を受けないようにI/O要求をスケジューリングすることになる。これは、テストデータベースI/O要求が、プロダクションデータベースI/Oパフォーマンスを乱すことなく処理され得るまで、待機キューに入れられることになることを意味する。
【0039】
遅延されるI/O要求が置かれる待機キューは、I/O要求に伴う要求メタデータによって示される論理特性に基づく。スケジューリングポリシーによって、追加のI/O要求が出されるべきである旨が示されると、記憶サーバ102は、登録される選択ポリシー、およびI/O要求がある待機キューに基づいて、どの遅延されたI/O要求を処理すべきかを選択する。
【0040】
比率に基づく選択ポリシー
1つの実施例に従うと、記憶サーバ102に登録される選択ポリシーは、比率に基づくポリシー、優先順位に基づくポリシー、およびハイブリッドポリシーを含んでもよい。比率に基づくポリシーは、異なる論理特性を有する要求間の負荷を、それら論理特性に割当てられる比率に基づいて割当てるポリシーである。たとえば、比率に基づくあるポリシーに対する基礎として用いられることになる論理特性は、I/O要求によって目標とされるデータベースであると仮定する(「目標とされるデータベース特性」)。さらに、5つのデータベースDB1、DB2、DB3、DB4およびDB5が記憶装置104および106に格納されると仮定する。比率に基づくポリシーは、記憶サーバ102は負荷を5つのデータベース間において以下のように割当てるべきである旨を指定してもよい:
DB1=50%,DB2=20%,DB3=20%,DB4=5%およびDB5=5%。
【0041】
この比率に基づくポリシーに基づいて、記憶サーバ102は、待ち状態のI/Oをあるシーケンスで処理して、自身の割当比率よりも下であるデータベースを目標とするI/O要求が、自身の割当比率より上であるデータベースを目標とするI/O要求の前に処理されることを確実にする。
【0042】
1つの実施例では、記憶サーバ102は、さまざまなデータベースに割当てられる比率に基づいて、「さらに遅れた」判断をなしてもよい。たとえば、記憶サーバ102が処理すべき別のI/O要求を選択する用意があるとき、DB2、DB4およびDB5が待ち状
態のI/O要求を有すると仮定する。これらの状況下では、記憶サーバ102は、DB2、DB4およびDB5のうちのどれがそのそれぞれの割当においてさらに遅れているかを判断する。説明のため、DB2は負荷の22%を既に用いており、DB4は4%を用いており、DB5は3%を用いていると仮定する。このような状況下では、記憶サーバ102は、DB5を目標とする待ち状態のI/O要求を選択するであろう。
【0043】
比率に基づくポリシーは、より高い優先順位のエンティティがより大きな量の帯域幅を受取ることを確実にし、その一方で、いずれのエンティティも完全には漏れないことを確実にするのに有用である。上記の例では、DB2はDB5よりも概してより重要であり、なぜならば、DB2は負荷の20%を割当てられ(、一方、DB5はわずか5%を割当てられ)ているからである。しかしながら、DB2は、既に、負荷のうちのその割当てられた部分より多くを使用しているため、DB5からのI/O要求がDB2からのI/O要求の前に処理された。
【0044】
確率を用いる、比率に基づいたポリシー
上に記載される実施例においては、比率に基づくポリシーは、どのデータベースがそれ自体の負荷割当に関して「さらに遅れている」かを追跡することによって実現される。残念なことに、「さらに遅れている」の判断は、どのI/O要求が以前に出されたかを追跡することのオーバヘッドを生じさせる。このオーバヘッドを回避するためには、記憶サーバ102は、単に、比率に基づくポリシーによって、I/O要求が選択される「確率」として指定される負荷割当を取扱い得る。
【0045】
たとえば、データベースDB1、DB2、DB3、DB4およびDB5の各々は少なくとも1つの待ち状態のI/O要求を有すると仮定する。これらの条件下では、データベースのすべてが選択候補となるであろう。その結果、所与のデータベースが選択される確率は、そのデータベースが割当てられる負荷のパーセンテージに等しくなる。具体的には、記憶サーバ102がDB1を目標とするI/O要求を選択するであろう50%の確率があり、記憶サーバ102がDB2を目標とするI/O要求を選択するであろう20%の確率があるであろう、などとなる。
【0046】
他方、DB2およびDB5のみが待ち状態のI/O要求を有する場合には、DB2およびDB5が唯一の選択候補となるであろう。DB2は20%の負荷割当を有し、DB5は5%の負荷割当を有する。これらの状況下では、DB2およびDB5の相対的な負荷割当は、DB2を目標とするI/O要求が選択される80%の確率、およびDB5を目標とするI/O要求が選択される20%の確率をもたらす結果となるであろう。
【0047】
一旦さまざまな選択候補に対して確率が判断されると、記憶サーバ102はそれらの確率に基づいてI/O要求選択を行なう。確率に基づくI/O要求の選択の1つの態様は、ある範囲のサブ範囲を選択候補の各々に割当てることを伴い、そこにおいては、各選択候補に割当てられるサブ範囲のサイズは、その選択候補が選択されることになる確率によって判断される。
【0048】
たとえば、範囲は1〜100であると仮定する。さらに、唯一のI/O要求候補は、DB2を目標とするI/O要求、およびDB5を目標とするI/O要求であると仮定する。これらの状況下においては、DB2は80%の選択確率を有するであろう。したがって、DB2を目標とするI/O要求はサブ範囲1〜80(つまり全範囲の80%)を割当てられてもよい。他方、DB5は20%の選択確率を有することになり、したがって、サブ範囲81〜100(つまり全範囲の20%)を割当てられてもよい。
【0049】
各選択候補が範囲内のサブ範囲を割当てられた後、記憶サーバ102はその範囲におい
て乱数を生成してもよい。乱数が入るサブ範囲は、記憶サーバ102がどの選択候補を選択するかを決定する。したがって、この例においては、乱数が1と80との間に入る場合、DB2を目標とするI/O要求が選択されることになる。他方、乱数が81と100との間に入る場合には、DB5を目標とするI/O要求が選択されることになる。
【0050】
優先順位に基づくポリシー
優先順位に基づくポリシーは、相対的な重要度を、候補I/O要求の論理特性の値に割当てるポリシーである。たとえば、優先順位に基づくポリシーに対する基礎として用いられることになる論理特性は、目標とされるデータベース特性である、と仮定する。データベースDB1、DB2、DB3、DB4およびDB5に対してデータを格納する記憶システムにおいては、目標とされるデータベース特性の考えられ得る値はDB1、DB2、DB3、DB4およびDB5である。その結果、目標とされるデータベース特性を用いる、優先順位に基づくポリシーは、DB1、DB2、DB3、DB4およびDB5を目標とするI/O要求はそれぞれ第1の優先順位、第2の優先順位、第3の優先順位、第4の優先順位および第5の優先順位を有する旨を指定してもよい。
【0051】
優先順位に基づくポリシーが用いられる場合、より高い優先順位の論理特性値に関連付けられる待ち状態のI/O要求がある限り、より低い優先順位の論理特性値を有するI/O要求は処理されない。したがって、DB1を目標とするI/O要求が待ち状態である限り、DB2、DB3、DB4およびDB5を目標とするI/O要求は記憶サーバ102によっては選択されないことになる。他方、DB5を目標とするI/O要求は、DB1、DB2、DB3およびDB4のいずれかを目標とする待ち状態のI/O要求がなくなるまで、記憶サーバ102によっては選択されないことになる。優先順位に基づくポリシーは、より低い優先順位の論理特性に関連付けられるI/O要求は、より高い優先順位の論理特性に関連付けられるI/O要求の実行に対してけっして悪影響を与えないことを保証する。
【0052】
ハイブリッドポリシー
ハイブリッドポリシーは、優先順位レベルおよび比率の両方を組込むポリシーである。具体的には、複数の論理特性を各優先順位レベルに割当てもよい。各優先順位レベル内においては、比率を論理特性の各々に割当てる。たとえば、DB1、DB2およびDB3を目標とするI/O要求は、すべて、第1の優先順位レベルに割当てられてもよい。第1の優先順位レベル内においては、DB1、DB2およびDB3を目標とするI/O要求は、それぞれ、比率50、40および10を割当てられてもよい。DB4およびDB5を目標とするI/O要求は第2の優先順位レベルに割当てられてもよい。第2の優先順位レベル内においては、DB4およびDB5を目標とするI/O要求はそれぞれ比率70および30を割当てられてもよい。
【0053】
この例に従うと、記憶サーバ102は、負荷を、DB1、DB2およびDB3を目標とするI/O要求間において、それらのそれぞれの比率に従って割当てることになる。待ち状態のI/O要求のいずれかがDB1、DB2またはDB3を目標とする限り、記憶サーバ102は、DB4またはDB5を目標とするいずれのI/O要求も処理しはしない。DB1、DB2またはDB3を目標とする待ち状態のI/O要求がない場合には、負荷を、DB4およびDB5を目標とするI/O要求間において、それぞれ、比率70および30に基づいて割当てることになる。
【0054】
データベース選択ポリシー
上に与えられる例に記載されるように、I/O要求が向けられるデータベースは、ポリシーの基礎として用いられてもよい1つの論理特性である。目標とされるデータベース特性に基づくI/O要求間における選択に対するポリシーは、ここにおいては、「データベ
ース選択ポリシー」と称される。データベース選択ポリシーの例は:
・記憶性能容量の70%はデータ倉庫ファイナンスに割当てられるべきであり、記憶性能容量の30%はデータ倉庫セールスに割当てられるべきである
・プロダクションデータベースはテストおよび開発データベースを超える優先順位を有するべきである
を含む。
【0055】
データベース選択ポリシーは単純であってもよく、または複雑であってもよい。表1は3レベルハイブリッドデータベース選択ポリシーを示す。
【0057】
表1を参照して、それは5つのデータベースを含むシステムに対するデータベース選択ポリシーを示す。第1の優先順位レベルにおいては、セールスプロダクションデータ倉庫は負荷の80%を割当てられ、ファイナンスプロダクションデータ倉庫は負荷の20%を割当てられる。これら2つのレベル1データベースのいずれかが待ち状態のI/Oを有する限り、記憶サーバは他の3つのデータベースのいずれに関してもI/Oを出しはしない。レベル1データベースに関してI/O要求が待ち状態にないときのみ、カスタマーサービススタンバイデータベースを目標とするI/O要求が記憶サーバによって出力I/Oキューに追加されることになる。同様に、レベル1またはレベル2データベースに対してI/O要求が待ち状態にないときのみ、負荷は、セールステストデータベースおよびセールス開発データベースを目標とするI/O要求間において50/50で分割されることになる。
【0058】
消費側グループ選択ポリシー
データベースは、しばしば、多くのタイプの作業負荷を有する。これらの作業負荷は、それらの実行要件およびそれらが出すI/Oの量において異なるかもしれない。「消費側グループ」は、ある特定の作業負荷を含むグループセッションに対し、ある態様を与える。たとえば、あるデータベースが4つの異なるアプリケーションに対するデータを格納する場合、4つの消費側グループを、各アプリケーションに対するセッションに対して1つ、作成することができる。同様に、あるデータ倉庫が、重要なクエリ、通常のクエリ、およびETL(抽出、変換およびローディング)などの、3つのタイプの作業負荷を有する場合、消費側グループは各タイプの作業負荷毎に作成され得る。
【0059】
したがって、I/O要求の「消費側グループ」は、そのI/O要求の1つ以上の他の論理特性の値から導出されるI/O要求の論理特性である。1つの実施例においては、I/O要求が属する消費側グループは、論理特性値を消費側グループにマッピングする「論理特性値対消費側グループ」マッピングに基づく。たとえば、あるI/O要求の消費側グループは以下の論理特性値:(1)サービス識別子、(2)ユーザ識別子、(3)プログラム名、(4)目的識別子、および(5)I/O要求を提出した動作についての統計のうちの1つ以上から導出されてもよい。
【0060】
図2を参照して、この図は、この発明のある実施例に従って、論理特性値と消費側グループとの間におけるマッピングを示すブロック図である。
図2に示されるマッピングにおいては、優先順位DSS、DSSおよびメンテナンスの、3つの消費側グループが定義されている。示されるマッピングに従うと、優先順位DSS消費側グループは、サービスが「PRIORITY(優先順位)」であるかまたはユーザ名が「LARRY」であるすべてのI/O要求を含む。DSS消費側グループは、ユーザ名が「DEV」であるかまたはクエリが1時間を超えて実行されているすべてのI/O要求を含む。メンテナンス消費側グループは、クライアントプログラム名が「ETL」であるかまたはI/O要求の機能が「BACKUP」であるすべてのI/O要求を含む。
【0061】
消費側グループメンバーシップが論理特性値対消費側グループマッピングによって定義される場合、ある1つのI/O要求は、いくつかの異なる消費側グループにマッピングする論理特性値を有してもよい。たとえば、あるI/O要求は、「LARRY」のユーザ識別子、「DEV」のクライアントプログラム識別子、および「BACKUP」の目的識別子を有してもよい。1つの実施例に従うと、論理特性値対消費側グループマッピングは、あるI/O要求の論理特性値が複数の消費側グループにマッピングする状況をどのように解決するかを示す。たとえば、ある論理特性値対消費側グループマッピングは、ユーザ名が最も上位の論理特性値であり、それに、サービス、プログラム統計、機能、および最後にクライアントプログラムが続く旨を示してもよい。そのような選択ポリシーのもとでは、「LARRY」のユーザ識別子、「DEV」のクライアントプログラム識別子、および「BACKUP」の目的識別子を有するI/O要求は、優先順位DSS消費側グループにマッピングされるであろう。
【0062】
ある論理特性値対消費側グループマッピングは、さらに、「デフォルト」消費側グループを有してもよい。1つの実施例では、I/O要求の論理特性値のいずれも、どのような他の消費側グループにもマッピングしない場合、そのI/O要求は、デフォルト消費側グループに属するものとして取扱われる。
【0063】
データベース選択ポリシーと同様に、消費側グループポリシーは、比率に基づいてもよく、優先順位に基づいてもよく、またはハイブリッドであってもよい。あるハイブリッド消費側グループポリシーを表2に示す:
【0065】
表2に示されるハイブリッド消費側グループポリシーに従うと、優先順位DSS消費側グループにマッピングするI/O要求は負荷の80%を割当てられ、一方、メンテナンス消費側グループにマッピングするI/O要求は負荷の20%を割当てられる。DSS消費側グループにマッピングするI/O要求が記憶サーバによって出されるのは、他の2つの消費側グループのいずかに属する待ち状態のI/O要求がないときのみである。
【0066】
1つの実施例では、I/O要求側は、論理特性値対消費側グループマッピングを用いて、それらのI/O要求が属する消費側グループを判断し、それらが各I/O要求とともに送る要求メタデータにおいて消費側グループ識別子を含む。消費側グループ識別子が要求メタデータに含まれる実施例では、消費側グループが導出される論理特性がさらに要求メタデータに含まれる必要はない。
【0067】
ある代替的実施例では、I/O要求の消費側グループは、I/O要求側から記憶システムによって受取られる要求メタデータに直接は示されない。その代わり、論理特性値対消費側グループマッピングを記憶システムに与え、記憶システム内の記憶サーバは、各I/O要求の消費側グループを、(a)要求メタデータに反映される論理特性値、および(b)論理特性値対消費側グループマッピングに基づいて判断する。
【0068】
カテゴリ選択ポリシー
1つの実施例に従うと、I/O要求の1つの論理特性は、ここにおいては、I/O要求の「カテゴリ」と称される。典型的には、I/O要求のカテゴリは、そのI/O要求に関連付けられる作業負荷のタイプを示す。たとえば、あるカテゴリ選択ポリシーは、重要、いくらか重要、重要でない、の3つのカテゴリを定義してもよい。
【0069】
カテゴリ選択ポリシーは、I/O要求候補間における選択を、それらI/O要求候補が属するカテゴリに基づいて行なうためのポリシーを示す。データベース選択ポリシーおよび消費側グループに基づくポリシーと同様に、カテゴリ選択ポリシーは、比率に基づいてもよく、優先順位に基づいてもよく、またはハイブリッドであってもよい。たとえば、優先順位に基づくあるカテゴリ選択ポリシーは、重要なI/O要求は最も高い優先順位を有し、いくらか重要なI/O要求は中程度の優先順位を有し、重要でないI/O要求は低い優先順位を有する旨を指定してもよい。
【0070】
ポリシー対段階割当
上において言及したように、記憶サーバは選択ポリシーにおいて指定されるポリシーを段階的に適用してもよい。どのポリシーを各段階に割当てるかの選択は、それ自体、選択ポリシーに示されてもよいポリシー判断である。
図3は、ポリシーが段階1、段階2および段階3の3つの段階に割当てられている選択ポリシー300を示すブロック図である。特に、優先順位に基づくカテゴリ選択ポリシーが段階1に割当てられ、ハイブリッドデータベース選択ポリシーが段階2に割当てられ、ハイブリッド消費側グループ選択ポリシー
が段階3に割当てられている。
【0071】
段階2のハイブリッドデータベース選択ポリシー内においては、第1の優先順位レベルはDB1、DB2およびDB3を含み、第2の優先順位レベルはDB4およびDB5を含む。第1の優先順位レベル内においては、DB1、DB2およびDB3は、それぞれ、割当比率50%、40%および10%に関連付けられる。第2の優先順位レベル内においては、DB4およびDB5は両方とも50%の割当比率に関連付けられる。
【0072】
同様に、段階3のハイブリッド消費側グループ選択ポリシー内においては、第1の優先順位レベルは消費側グループ1および消費側グループ2を含み、第2の優先順位レベルは消費側グループ3を含む。第1の優先順位レベル内においては、消費側グループ1および2は、それぞれ、割当比率80%および20%に関連付けられる。第2の優先順位レベル内においては、消費側グループ3は100%の割当比率を有する。
【0073】
ある段階における選択ポリシーが適用された後も候補であり続ける待ち状態のI/O要求は、ここにおいては、その段階の「生き残り」と称される。たとえば、
図3の選択ポリシー300に従うと、カテゴリ1に属する待ち状態のI/O要求がある場合、段階1の生き残りは、カテゴリ1に属する待ち状態のI/O要求しか含まないということになる。
【0074】
他方、カテゴリ1に属する待ち状態のI/O要求がなく、しかしながら、カテゴリ2に属する少なくとも1つの待ち状態のI/O要求がある場合、段階1の生き残りは、カテゴリ2に属する待ち状態のI/O要求しか含まないということになる。最後に、カテゴリ1または2に属する待ち状態のI/O要求がない場合、段階1の生き残りは、カテゴリ3に属する待ち状態のI/O要求しか含まないということになる。
【0075】
その後の段階のポリシーは、前の段階の生き残りにしか適用されない。したがって、選択ポリシー300において段階2に割当てられるハイブリッドデータベース選択ポリシーは、段階1の生き残りに対してのみしか適用されない。同様に、段階3に割当てられるハイブリッド消費側グループ選択ポリシーは、段階2の生き残りに対してのみしか適用されない。生き残りのすべてが同じ待機キューに属するまで、さまざまな段階が適用され続ける。次いで、その待機キューの先頭にあるI/O要求が、実行のために選択される。
【0076】
段階をシーケンスで適用するため、早期の段階において適用されるポリシーは、究極的なI/O要求選択に対し、後の段階において適用されるポリシーよりも大きな影響を有する。その結果、より上位の論理特性を取扱うポリシーは、一般に、より下位の論理特性を取扱うポリシーよりも早い段階に割当てられる。
【0077】
たとえば、さまざまなデータベースのユーザが記憶システムの負荷を占有しないようお互いを信用するような状況においては、目標とされるデータベース特性はより下位の論理特性となる。その結果、選択ポリシーは、どのようなデータベース選択ポリシーも有さないかもしれず、または、データベース選択ポリシーをI/O要求選択処理における後の段階に割当ててもよい。
【0078】
他方、さまざまなデータベースのユーザが負荷を占有しようと試みるかもしれないような状況においては、目標とされるデータベース特性は最も上位の論理特性であってもよい。これらの状況下では、データベース選択ポリシーは、データベース間における同意されえる帯域幅割当を確実に維持するよう記憶サーバによって実行される第1の段階に割当てられてもよい。
【0079】
生き残りグループに従うポリシー
上に与えられる例においては、記憶サーバによって後の段階において適用されるポリシーは、どの待ち状態のI/O要求が前の段階を生き残ったかに関係ない。しかしながら、1つの実施例によると、ある後の段階において適用するポリシーは、前の段階を生き抜いたI/O要求のグループ次第であってもよい。どのI/O要求が前の段階を生き延びたかに依存するポリシーは、ここにおいては、生き残りグループに従うポリシーと称される。
【0080】
たとえば、
図3の段階2は5つの考えられ得る結果を有する。具体的には、段階2はデータベース選択ポリシーを適用するため、
図3の段階2の生き残りは、5つのデータベースのうちのたった1つを目標とするI/O要求であることになる。1つの実施例では、
図3の段階3に示されるハイブリッド消費側グループ選択ポリシーは、DB1を目標とするI/O要求に当てはまるだけであってもよい。段階3は、段階2を生き延びるI/O要求が他のデータベースのうちの1つを目標とするI/O要求である場合は、完全に異なるポリシーを有してもよい。
【0081】
図4を参照して、
図4は、選択ポリシー300に類似する、段階2の5つの考えられ得る生き残りグループの各々に対して別個の段階3ポリシーがある選択ポリシー400を示すブロック図である。1つのデータベースを目標とするI/O要求に対する段階3ポリシーは、別のデータベースを目標とするI/O要求に対する段階3ポリシーと完全に異なっていてもよい。たとえば、DB1を目標とするI/O要求に当てはまる段階3ポリシーは、ある特定の論理特性値対消費側グループマッピングに基づいて判断される3つの消費側グループに基づいてもよく、一方、DB2を目標とするI/O要求に当てはまる段階3ポリシーは、異なる論理特性値対消費側グループマッピングに基づいて判断される5つの消費側グループに基づいてもよい。
【0082】
ある特定の段階において当てはまるポリシーは、どのI/O要求が前の段階を生き延びるかに依存してもよいため、選択ポリシーは任意に洗練され得る。たとえば、
図5は、選択ポリシー500の各段階の考えられ得る生き残りグループと、後の段階において記憶サーバにより適用されるポリシーとの間における関係を示す。
【0083】
図5を参照して、段階1はカテゴリに基づく選択ポリシーを適用する。段階1によって生ずる考えられ得る生き残りグループは、(a)カテゴリ1に属するI/O要求、(b)カテゴリ2に属するI/O要求、および(c)カテゴリ1に属するI/O要求を含む。段階1が、カテゴリ1に属するI/O要求を生じさせる場合においては、記憶サーバはデータベース選択ポリシー1を段階2中に適用することになる。段階1が、カテゴリ2に属するI/O要求を生じさせる場合においては、記憶サーバはデータベース選択ポリシー2を段階2中において適用することになる。段階1が、カテゴリ3に属するI/O要求を生じさせる場合には、記憶サーバは消費側グループ選択ポリシー1を段階2中に適用することになる。
【0084】
データベース選択ポリシー1の考えられ得る生き残りグループは、(a)DB1を目標とするカテゴリ1I/O要求、および(b)DB2を目標とするカテゴリ1I/O要求を含む。DB1を目標とするカテゴリ1I/O要求が段階2を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー2を段階3中に適用することになる。DB2を目標とするカテゴリ1I/O要求が段階2を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー3を段階3中に適用することになる。
【0085】
データベース選択ポリシー2の考えられ得る生き残りグループは、(a)DB1を目標とするカテゴリ2I/O要求、および(b)DB2を目標とするカテゴリ2I/O要求を含む。DB1を目標とするカテゴリ2I/O要求が段階2を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー4を段階3中に適用することになる。DB2を
目標とするカテゴリ2I/O要求が段階2を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー5を段階3中に適用することになる。
【0086】
消費側グループ選択ポリシー1の考えられ得る生き残りグループは、(a)消費側グループ1(CG1)にマッピングするカテゴリ3I/O要求、(b)消費側グループ2(CG2)にマッピングするカテゴリ3I/O要求、および(c)カテゴリグループ3(CG3)にマッピングするカテゴリ3I/O要求を含む。CG1にマッピングするカテゴリ3I/O要求が段階2を生き延びる場合においては、記憶サーバはデータベース選択ポリシー3を段階3中に適用することになる。CG2にマッピングするカテゴリ3I/O要求が段階2を生き延びる場合においては、記憶サーバはデータベース選択ポリシー4を段階3中に適用することになる。CG3にマッピングするカテゴリ3I/O要求が段階2を生き延びる場合においては、記憶サーバはデータベース選択ポリシー5を段階3中に適用することになる。
【0087】
図5は、後の段階で適用されるポリシーが、どのI/O要求が前の段階を生き延びるかに基づいてどのように異なり得るかの単なる一例である。選択ポリシーにおいて確立されるポリシー関係は任意に複雑であってよい。たとえば、ある結果の集合が与えられるとして、記憶サーバはポリシーの3段階のみを適用し、一方、他の結果はポリシーの5段階の適用を必要としてもよい。
【0088】
データベース特化消費側グループ
図5に示されるように、各データベースはそれ自体の消費側グループ選択ポリシーを有してもよい。さらに、1つのデータベースに対する消費側グループ選択ポリシーは、他のデータベースによって用いられる論理特性値対消費側グループマッピングとは全体的に異なる属性対消費側グループマッピングに基づいてもよい。たとえば、
図5においては、消費側グループ選択ポリシー2は表2に示されるハイブリッドポリシーであってもよく、一方、消費側グループ選択ポリシー3は、CG1:90%、CG2:8%、CG3:1%、CG4:1%の比率に基づくポリシーである。
【0089】
この例においては、消費側グループ選択ポリシーは、消費側グループの数およびポリシーの構造の両方に関して異なる。異なる消費側グループポリシーは、さらに、消費側グループがどのように定義されるかに関して異なってもよい。たとえば、あるI/O要求が優先順位DSS、メンテナンス、またはDSSに属するかどうかを判断するのに用いられる属性対消費側グループマッピングは、I/O要求がCG1、CG2、CG3またはCG4に属するかどうかを判断するのに用いられる属性対消費側グループマッピングと完全に異なっていてもよい。
【0090】
1つの実施例に従うと、一旦消費側グループが作成されると、ポリシーが、セッションがどのように消費側グループにマッピングされるかを指定するために作成される。セッションは、消費側グループに対して、たとえばセッション属性に基づいてマッピングされ得る。これらのセッション属性は、たとえば、ユーザ名、データベースに接続するのにセッションが用いたサービス、クライアントマシン、クライアントプログラム名、クライアントユーザ名、などを含んでもよい。あるユーザが消費側グループを各アプリケーション毎に作成しており、各アプリケーションは専用のサービスを有する場合、ユーザはマッピングポリシーをサービス名に基づいて作成し得る。ユーザがある消費側グループをある特定のユーザの集合に専用としたい場合には、ユーザはマッピングポリシーをそれらのユーザ名に基づいて作成する。上で言及したように、ある消費側グループに明示的には割当てられないセッションはデフォルト消費側グループに置かれてもよい。
【0091】
選択ポリシーを作成する
上で言及したように、選択ポリシーは、I/Oリソースを消費側グループ間でどのように割当てるかを指定するポリシーを含んでもよい。1つの実施例では、選択ポリシーは、あるパーセンテージまたはあるレベルからなる各消費側グループ毎のリソース割当ディレクティブを含む。1つの実施例では、ユーザは8つまでのレベルを指定してもよい。レベル2の消費側グループは、レベル1において割当てられなかったかまたはレベル1において消費側グループによって消費されなかったリソースを得る。同様に、レベル3の消費側グループは、何らかの割当がレベル1または2から残っている場合にのみリソースを割当てられる。同じポリシーがレベル4〜8に当てはまる。複数のレベルは、ある優先順位付け態様を与えるのみならず、どのようにしてすべての主なおよび残りのリソースが用いられることになるかを明示的に指定する態様を与える。ユーザは、パーセンテージ、優先順位、またはそれら2つの組合せを用いて、リソースを消費側グループにわたって割当てる選択ポリシーを構築し得る。
【0092】
選択ポリシーを可能化および変更する
1つの実施例に従うと、ユーザがあるデータベースにおいてあるデータベース選択ポリシーを設定すると、その選択ポリシーのある記述が、そのデータベースに関してデータを格納するよう用いられる各記憶システムに対して自動的に送られる。ある環境においては、複数のサーバが同じデータベースに対するアクセスを共有する。そのような環境においては、ある特定のデータベースに対するアクセスを共有するクラスタにあるすべてのデータベースサーバは同じ選択ポリシーに設定される。新たな記憶システムがそのデータベースに追加される場合、または既存の記憶システムを再起動させる場合には、データベースの現在の選択ポリシーは記憶システムに自動的に送られる。選択ポリシーは、データベースサーバおよびセルの両方においてリソースを管理するために用いられる。
【0093】
1つの実施例に従うと、選択ポリシーは動的に変更され得る。さまざまなタイプのイベントによって選択ポリシー変更がトリガされてもよい。たとえば、ある選択ポリシーは、1日の時間に基づいて変更することにより、異なる選択ポリシーが、日中においてよりも、夜間において効力があるようにしてもよい。他の例としては、ある選択ポリシー変動は週末中に生じてもよく、または、会計年度の終わりなどのような、1年のうちのある特定の時期に生じてもよい。
【0094】
待機キュー
上で言及したように、遅延されるI/O要求は記憶システム100内の待機キューに置かれる。これらの待機キューはさまざまな態様で実現されてもよい。1つの実施例では、遅延されるI/O要求はそれらの「選択グループ」に基づいてキューに入れられ、各選択グループはある別個のキューを有する。この文脈においては、ある選択グループは、効力があるポリシーによって同じと扱われるI/O要求のグループである。たとえば、効力がある唯一のポリシーは表2に示される消費側グループポリシーであると仮定する。このポリシーは3つの消費側グループ、つまり優先順位DSS、メンテナンス、およびDSSを確立する。ある選択ポリシーがこれらのポリシーのみを含む場合には、記憶システムは、1つが3つの消費側グループの各々に与えられる、3つの待機キューを有するのみであろう。優先順位DSSにマッピングする特性値を有するすべての遅延されるI/O要求は、(それらが目標とするデータベースなどのような)他の特性に関わりなく、優先順位DSSキューに格納されることになる。同様に、メンテナンスおよびDSS消費側グループにマッピングするすべての遅延されるI/O要求は、それらが有するかもしれない他の特性値に関わりなく、それらの消費側グループに対応する待機キューに入れられるであろう。
【0095】
より複雑な選択ポリシーにおいては、消費側グループよりも有意に多い選択グループがあってもよい。たとえば、
図3に示される選択ポリシー300においては、カテゴリ、目標データベースおよび消費側グループは、すべて、どのようにI/O要求が取扱われるか
に対してある影響を有する。したがって、各(カテゴリ、目標データベース、消費側グループ)組合せは、それ自体の待機キューを有してもよい別個の選択グループを表現する。具体的には、(カテゴリ1、DB1、消費側グループ1)は1つの待機キューを有するであろうし、(カテゴリ1、DB1、消費側グループ2)は別の待機キューを有するであろう。選択ポリシー300は、3つのカテゴリ、5つのデータベースおよび3つの消費側グループを確立するため、選択グループ(およびしたがって待機キュー)の総数は3×5×3=45となるであろう。
【0096】
段階に基づく選択グループの選択
上で言及したように、記憶サーバが、処理すべき遅延されたI/O要求を選択しているとき、記憶サーバは選択ポリシーのポリシーを段階的に適用する。各段階は、生き残る選択グループの数を低減する。たった1つの選択グループが生き残ると、記憶サーバは、その選択グループに対応する待機キューの先頭にあるI/O要求を選択する。たとえば、選択ポリシー300を実現するある記憶システムが飽和されず、処理すべき遅延されたI/O要求を選択しなければならないと仮定する。さらに、唯一の空でない待機キューは、選択グループ:(カテゴリ2、DB1、消費側グループ1)、(カテゴリ2、DB2、消費側グループ2)、(カテゴリ2、DB2、消費側グループ3)、(カテゴリ3、DB2、消費側グループ1)、および(カテゴリ2、DB4、消費側グループ3)に対応すると仮定する。
【0097】
これらの状況下では、カテゴリ2に関連付けられる選択グループのみが段階1を生き残り、なぜならば、カテゴリ2はカテゴリ3よりも高い優先順位を有し、カテゴリ1に関連づけられる空でない選択グループはないからである。したがって、段階1の後、生き残る選択グループは:(カテゴリ2、DB1、消費側グループ1)、(カテゴリ2、DB2、消費側グループ2)、(カテゴリ2、DB2、消費側グループ3)、および(カテゴリ2、DB4、消費側グループ3)であろう。
【0098】
段階2中において、記憶サーバは、DB1またはDB2のどちらがそのI/O割当を達成することにおいて最も遅れているかを判断するであろう。DB4は考慮には入れられず、なぜならば、ポリシーは、いずれの遅延されるI/OもDB1、DB2またはDB3を目標とはしない場合にのみDB4を考慮する、と示しているからである。DB2がそのI/O割当を達成することにおいて最も遅れていると仮定して、段階2を生き延びる選択グループは、(カテゴリ2、DB2、消費側グループ2)および(カテゴリ2、DB2、消費側グループ3)であろう。
【0099】
段階3中においては、記憶サーバは、消費側グループ2を選択するであろうと考えられ、なぜならば、ポリシーは、いずれの待機中のI/O要求も消費側グループ1および2に対応しない場合にのみ消費側グループ3を考慮する、と示しているからである。その結果、段階3の後、唯一残る選択グループは(カテゴリ2、DB2、消費側グループ2)である。したがって、記憶サーバは、選択グループ(カテゴリ2、DB2、消費側グループ2)に対応する待機キューの先頭にあるI/O要求を選択するであろう。
【0100】
上に与えられる例においては、1つの空でない選択グループが残る前に、すべての3つの段階を適用しなければならなかった。しかしながら、どの選択グループが空でないかによって、段階のすべてよりも少ない数の段階を適用する必要があってもよい。たとえば、空でない選択グループは、(カテゴリ1、DB5、消費側グループ3)、(カテゴリ2、DB1、消費側グループ1)、(カテゴリ2、DB2、消費側グループ2)、(カテゴリ2、DB2、消費側グループ3)、(カテゴリ3、DB2、消費側グループ1)、および(カテゴリ2、DB4、消費側グループ3)を含む状況を考える。この状況においては、選択ポリシー300の段階1の後、唯一生き残る選択グループは(カテゴリ1、DB5、
消費側グループ3)であろうと考えられ、なぜならば、これは、待機中のI/O要求がカテゴリ1に関連付けられる唯一の空でない選択グループであるからである。その結果、段階1の後、記憶サーバは、(カテゴリ1、DB5、消費側グループ3)に関連付けられるキューの先頭にあるI/O要求を単に選択するであろう。
【0101】
論理待機キュー
記憶サーバが待ち状態のI/O要求を入れるキューは実際の別個のデータ構造である必要はない。具体的には、記憶サーバは、単に、(1)各待ち状態のI/O要求の論理特性、および(2)I/O要求が記憶システムによって受取られた時間を追跡してもよい。同じ論理特性を有する待ち状態のI/O要求は、同じ選択グループに属し、したがって、同じ論理キューに属するものとして取扱われるが、どのような別途のキュー構造もその選択グループに対しては用いられない。
【0102】
別々のキュー構造ではなく、論理待機キューを用いるある実施例では、I/O要求が受取られる時間を用いて各論理キューの順序を示してもよい。したがって、各選択グループ毎に、最も早い到着時間を有する待ち状態のI/O要求は、選択グループの論理キューの先頭にあるものとして取扱われる。代替的に、すべての待ち状態のI/O要求を単一の待機キューに格納してもよい。各選択グループ毎に、その単一の待機キューの先頭に最も近い待ち状態のI/O要求を、その選択グループに対する論理待機キューの先頭にあるとして取扱ってもよい。
【0103】
ハードウェア概要
ある実施例に従うと、ここに記載される技術は1つ以上の特殊用途計算装置によって実現される。それら特殊用途計算装置は、それらの技術を実行するようハードワイヤードであってもよく、またはそれらの技術を実行するよう永続的にプログラミングされる1つ以上のアプリケーション特化集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのようなデジタル電子装置を含んでもよく、またはファームウェア、メモリ、他のストレージもしくは組合せにおけるプログラム命令に従ってそれらの技術を実行するようプログラミングされる1つ以上の汎用ハードウェアプロセッサを含んでもよい。そのような特殊用途計算装置は、さらに、それらの技術を達成するようカスタムプログラミングを伴う、カスタムハードワイヤード論理、ASICまたはFPGAを組合わせてもよい。特殊用途計算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯型装置、ネットワーク化装置、またはそれらの技術を実現するようハードワイヤードおよび/またはプログラム論理を組込む任意の他の装置であってもよい。
【0104】
たとえば、
図6は、この発明の実施例が実現されてもよいコンピュータシステム600を例示するブロック図である。コンピュータシステム600は、情報をやりとりするためのバス602または他の通信機構と、バス602に結合され、情報を処理するためのハードワイヤプロセッサ604とを含む。ハードワイヤプロセッサ604はたとえば汎用マイクロプロセッサであってもよい。
【0105】
コンピュータシステム600は、バス602に結合され、プロセッサ604によって実行されるべき命令および情報を格納するための、ランダムアクセスメモリ(RAM)または他のダイナミック記憶装置などの主メモリ606も含む。主メモリ606は、プロセッサ604によって実行されるべき命令の実行中に一時的変数または他の中間情報を格納するためにも使用されてよい。そのような命令は、プロセッサ604にとってアクセス可能な記憶媒体に格納されると、コンピュータシステム600を、それらの命令に指定される演算を実行するようカスタマイズされる特殊用途マシンにする。
【0106】
コンピュータシステム600は、さらに、バス602に結合され、プロセッサ604のために静的情報および命令を格納するためのリードオンリメモリ(ROM)608または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置610が、情報および命令を格納するために設けられバス602に結合される。
【0107】
コンピュータシステム600は、コンピュータユーザに情報を表示するための、陰極線管(CRT)などのディスプレイ612にバス602を介して結合されてもよい。アルファベット数字および他のキーを含む入力装置614が、プロセッサ604に情報およびコマンド選択を通信するためにバス602に結合される。他のタイプのユーザ入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御616であり、プロセッサ604に方向情報およびコマンド選択を通信し、かつディスプレイ612上でカーソル移動を制御する。この入力装置は、典型的には、装置が平面における位置を特定することを可能にする、第1の軸(たとえばx)および第2の軸(たとえばy)の2つの軸において2つの自由度を有する。
【0108】
コンピュータシステム600は、コンピュータシステムとの組合せでコンピュータシステム600を特殊用途マシンにするかまたはプログラムする、カスタマイズされたハードワイヤード論理、1つ以上のASICもしくはFPGA、ファームウェア、および/またはプログラム論理を用いて、ここに記載される技術を実現してもよい。ある実施例に従うと、ここに記載される技術は、プロセッサ604が主メモリ606に含まれる1つ以上の命令の1つ以上のシーケンスを実行すること応答して、コンピュータシステム600により実行される。そのような命令は、記憶装置610などの別の記憶媒体から主メモリ606に読込まれてもよい。主メモリ606に含まれる命令のシーケンスの実行により、プロセッサ604は、ここに記載された処理ステップを行なう。代替的実施例では、ソフトウェア命令の代わりに、またはこれと組合わせて、ハードワイヤード回路系が用いられてもよい。
【0109】
ここで用いられる「記憶媒体」という用語は、マシンをある特定の態様で動作させるデータおよび/または命令を格納する任意の媒体のことを指す。そのような媒体は、不揮発性媒体および/または揮発性媒体を含み得る。不揮発性媒体は、たとえば、記憶装置610などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、主メモリ606などのダイナミックメモリを含む。記憶媒体の一般的な形態は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、CD−ROM、任意の他の光学データ記憶媒体、孔のパターンを備える任意の物理的媒体、RAM、PROM、およびEPROM、FLASH−EPROM、NVRAM,任意の他のメモリチップまたはカートリッジを含む。
【0110】
記憶媒体は、伝送媒体とは区別されるが、それとの関連で用いられてもよい。伝送媒体は、情報を記憶媒体間で転送することに加わる。たとえば、伝送媒体は、バス602を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線通信および赤外線データ通信の際生成されるものなど、音波または光波の形もとり得る。
【0111】
さまざまな形態の媒体が、1つ以上の命令の1つ以上のシーケンスをプロセッサ604に搬送し実行するのに関係し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスクまたはソリッドステートドライブ上に担持され得る。遠隔コンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線を介して命令を送信することができる。コンピュータシステム600に局在するモデムは、電話線でデータを受取り、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器が、赤外線信号で搬送されるデータを受信することができ、適切な回路系が、データをバス60
2に与えることができる。バス602は、データを主メモリ606に搬送し、プロセッサ604は命令をそこから検索し実行する。主メモリ606によって受取られた命令は、任意で、プロセッサ604によって実行される前または後のいずれかに記憶装置610上に格納されてもよい。
【0112】
コンピュータシステム600は、バス602に結合される通信インターフェイス618も含む。通信インターフェイス618は、ローカルネットワーク622に接続されるネットワークリンク620に結合する双方向のデータ通信を提供する。たとえば、通信インターフェイス618は、データ通信接続を対応するタイプの電話線に与えるよう、統合サービスデジタル網(ISDN)カード、ケーブルモデム、衛星モデムまたはモデムであってもよい。別の例として、通信インターフェイス618は、データ通信接続を互換可能なローカルエリアネットワーク(LAN)に与えるよう、LANカードであってもよい。ワイヤレスリンクが実現されてもよい。任意のそのような実現化例において、通信インターフェイス618は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送信および受信する。
【0113】
ネットワークリンク620は、典型的には、1つ以上のネットワークを介してデータ通信を他のデータ装置に与える。たとえば、ネットワークリンク620は、ローカルネットワーク622を介してホストコンピュータ624またはインターネットサービスプロバイダ(ISP)626によって操作されるデータ機器への接続を与えてもよい。ISP626は、次いで、現在通常「インターネット」628と呼ばれているワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク622およびインターネット628はどちらも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を使用する。さまざまなネットワークを介する信号と、コンピュータシステム600へおよびこれからデジタルデータを搬送する、ネットワークリンク620上および通信インターフェイス618を介する信号とは、伝送媒体の例示の形である。
【0114】
コンピュータシステム600は、ネットワーク、ネットワークリンク620および通信インターフェイス618を介して、プログラムコードを含む、メッセージを送信しかつデータを受信することができる。インターネットの例では、サーバ630は、インターネット628、ISP626、ローカルネットワーク622および通信インターフェイス618を介してアプリケーションプログラムのための要求されたコードを送信するかもしれない。
【0115】
受取られたコードは、受取られたときにプロセッサ604によって実行されてもよく、および/または後の実行のために記憶装置610もしくは他の不揮発性記憶部に格納されてもよい。
【0116】
前述の明細書において、この発明の実施例を、実現例ごとに異なってもよい数多くの具体的な詳細を参照して記載した。したがって、この発明が何であるか、および何が出願人によってこの発明であるよう意図されるかを唯一かつ排他的に示すものは、この出願から、具体的な形で出る、任意の後の訂正を含む請求項の組である。そのような請求項に含まれる文言に対してここに明示的に述べられるすべての定義は、請求項において用いられるそのような文言の意味を支配することになる。したがって、請求項に明示的に記載されない限定、要素、特性、特徴、利点および属性は、その請求項の範囲をいかようにも限定すべきではない。明細書および図面は、したがって、限定の意味ではなく例示的な意味にみなされるべきものである。