(57)【特許請求の範囲】
【請求項１】
記憶システムにおいて、１つ以上の記憶装置に対するデータの読出または書込を行うよう入力／出力（Ｉ／Ｏ）要求を受けるステップを含み、前記Ｉ／Ｏ要求は、前記１つ以上の記憶装置内における前記読出または書込されるべきデータの位置を示す物理特性を含み、さらに、
前記記憶システムによって受取られる複数のＩ／Ｏ要求を前記記憶システム内においてキューに入れるステップと、
前記記憶システムが、前記記憶システムにおいてキューに入れられている待ち状態のＩ／Ｏ要求を処理する準備ができているときに、前記記憶システム内の記憶サーバが、前記キューに入れられている前記複数のＩ／Ｏ要求から、前記複数のＩ／Ｏ要求における特定のＩ／Ｏ要求に関連付けられる１つ以上の論理特性に少なくとも部分的に基づいて処理すべきある特定のＩ／Ｏ要求を選択するステップとを含み、
前記１つ以上の論理特性は、前記物理特性とは異なり、
前記１つ以上の論理特性は、前記特定のＩ／Ｏ要求のうちの少なくとも第１のＩ／Ｏ要求に対して、
前記第１のＩ／Ｏ要求に関連付けられ、かつ前記第１のＩ／Ｏ要求によって目標とされるデータベース、
作業を分類化し、前記第１のＩ／Ｏ要求に関連づけられる作業負荷タイプ、
複数の消費側を含み、前記第１のＩ／Ｏ要求に関連付けられる消費側グループ、
前記第１のＩ／Ｏ要求を出すために前記第１のＩ／Ｏ要求側で使用される通信セッションに関連付けられるユーザ名、
前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出したサービス、および
前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出した目的、のうちの少なくとも１つを示すものを含み、さらに、
前記記憶サーバが前記特定のＩ／Ｏ要求を選択したことに応答して、前記特定のＩ／Ｏ要求を処理するステップと、
前記記憶システムが１つ以上の選択ポリシーを受取るステップと、
前記記憶サーバが、前記１つ以上の選択ポリシーの各々に示されるポリシーを用いて、前記複数のＩ／Ｏ要求のうちのどれが処理のために選択されるべきかを選択するステップと、
前記記憶サーバは前記ポリシーを複数のシーケンス段階に適用し、
前記Ｉ／Ｏ要求のうち、同様の論理特性を有する要求はある選択グループに属し、
前記複数のＩ／Ｏ要求は複数の選択グループに対応し、
前記記憶サーバによって前記複数の段階のうちのある後の段階において適用されるポリシーは、前記複数の選択グループのうちのどの選択グループが１つ以上の前の段階を生き延びるかに少なくとも部分的に基づく、方法。
【請求項２】
前記ポリシーは、比率に基づく１つ以上のポリシー、または優先順位に基づく１つ以上のポリシー、または比率に基づくポリシーと優先順位に基づくポリシーとからなる１つ以上のハイブリッドポリシーを含む、請求項１に記載の方法。
【請求項３】
複数の消費側グループが論理特性値対消費側グループマッピングにおいて指定され、
前記１つ以上の論理特性は、前記特定のＩ／Ｏ要求に関連付けられる消費側グループを含む、請求項１に記載の方法。
【請求項４】
前記記憶システムが前記論理特性値対消費側グループマッピングを受取るステップと、
前記記憶サーバが、前記特定のＩ／Ｏ要求の要求メタデータ、および前記論理特性値対消費側グループマッピングに基づいて、前記特定のＩ／Ｏ要求が属する消費側グループを判断するステップとをさらに含み、
前記記憶システムが前記特定のＩ／Ｏ要求に関する要求メタデータを受取るステップをさらに含み、
前記要求メタデータは消費側グループ識別子を含み、さらに、
前記記憶サーバが、前記消費側グループ識別子の値に少なくとも部分的に基づいて前記特定のＩ／Ｏ要求を選択するステップを含む、請求項３に記載の方法。
【請求項５】
前記記憶システムにおいて、前記第１のＩ／Ｏ要求を提出している前記第１のＩ／Ｏ要求側から、前記第１のＩ／Ｏ要求に関連付けられる１つ以上の論理特性に対する第１の値を受取るステップと、
前記記憶システムにおいて、第２のＩ／Ｏ要求を提出している第２のＩ／Ｏ要求側から、前記第２のＩ／Ｏ要求に関連付けられる１つ以上の論理特性に対する第２の値を受取るステップとをさらに含み、
前記記憶サーバは、前記第１の値と前記第２の値とに少なくとも部分的に基づいて、前記第１のＩ／Ｏ要求と前記第２のＩ／Ｏ要求とのうちのどちらを最初に処理すべきかを判断し、
前記第１のＩ／Ｏ要求側は第１のデータベースサーバであり、前記第２のＩ／Ｏ要求側は第２のデータベースサーバである、請求項１に記載の方法。
【請求項６】
前記１つ以上の論理特性は、前記記憶システム内に格納される複数のデータベースのうちどのデータベースが前記第１のＩ／Ｏ要求によって目標とされるかを含み、
前記１つ以上の論理特性は、前記第１のＩ／Ｏ要求側が応答して前記第１のＩ／Ｏ要求を出した前記通信セッションに関連付けられる前記ユーザ名を含み、前記ユーザ名は、前記第１のＩ／Ｏ要求をもたらした動作を要求することを担ったユーザに対応し、
前記１つ以上の論理特性は、前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出した前記作業負荷タイプを含む、請求項１に記載の方法。
【請求項７】
前記記憶システムが、前記１つ以上の選択ポリシーからの情報に少なくとも部分的に基づいて、負荷設定を判断するステップと、
前記記憶システムが、前記負荷設定に基づいて、前記キューに入れられている複数のＩ／Ｏ要求をいつ処理すべきかを判断するステップとをさらに含む、請求項１に記載の方法。
【請求項８】
前記記憶システムが、前記記憶システムにより受取られるＩ／Ｏ要求に関連付けられる論理特性を、前記Ｉ／Ｏ要求に伴う要求メタデータに基づいて判断するステップと、
前記記憶システムが、前記記憶システムによって受取られるＩ／Ｏ要求に関連付けられる論理特性に少なくとも部分的に基づいて、負荷設定を判断するステップと、
前記記憶システムが、前記負荷設定に基づいて、前記キューに入れられている複数のＩ／Ｏ要求をいつ処理すべきかを判断するステップとをさらに含み、
前記論理特性を判断するステップおよび前記負荷設定を判断するステップは、前記記憶システムがどのように用いられているかに基づいて、負荷を動的に変動させるために周期的に繰返される、請求項１に記載の方法。
【請求項９】
方法であって、
記憶システムに対して、入力／出力（Ｉ／Ｏ）要求側によって、１つ以上の記憶装置に対するデータの読出または書込を行うようＩ／Ｏ要求を提出するステップを含み、前記Ｉ／Ｏ要求は、前記１つ以上の記憶装置内における前記読出または書込されるべきデータの位置を示す物理特性を含み、さらに、
前記記憶システムに対し、前記Ｉ／Ｏ要求側によって、前記Ｉ／Ｏ要求の１つ以上の論理特性に対する値を提出することにより、前記記憶システム内の記憶サーバが、前記１つ以上の論理特性に基づいて、Ｉ／Ｏ要求を優先順位付けできるようにするステップを含み、
前記１つ以上の論理特性は、前記物理特性とは異なり、
前記１つ以上の論理特性は、少なくとも第１のＩ／Ｏ要求に対して、
前記第１のＩ／Ｏ要求に関連付けられ、かつ前記第１のＩ／Ｏ要求によって目標とされるデータベース、
作業を分類化し、前記第１のＩ／Ｏ要求に関連づけられる作業負荷タイプ、
複数の消費側を含み、前記第１のＩ／Ｏ要求に関連付けられる消費側グループ、
前記第１のＩ／Ｏ要求を出すために前記第１のＩ／Ｏ要求側で使用される通信セッションに関連付けられるユーザ名、
前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出したサービス、および
前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出した目的、のうちの少なくとも１つを示すものを含み、
前記Ｉ／Ｏ要求側はデータベースサーバであり、前記方法は、さらに、どのＩ／Ｏ要求を処理すべきかを選択する際に前記記憶サーバが適用するポリシーを示す選択ポリシーを、前記データベースサーバが前記記憶システムに送るステップを含み、
前記記憶システムは複数のデータベースのためにデータを格納し、前記ポリシーはデータベース選択ポリシーを含み、
前記記憶サーバは前記ポリシーを複数のシーケンス段階に適用し、
前記Ｉ／Ｏ要求のうち、同様の論理特性を有する要求はある選択グループに属し、
前記複数のＩ／Ｏ要求は複数の選択グループに対応し、
前記記憶サーバによって前記複数の段階のうちのある後の段階において適用されるポリシーは、前記複数の選択グループのうちのどの選択グループが１つ以上の前の段階を生き延びるかに少なくとも部分的に基づく、方法。
【請求項１０】
１つ以上のプロセッサによって実行されると、請求項１〜９のいずれかに記載のステップの実行を引起す命令を含む、コンピュータ読取可能記憶媒体。
【請求項１１】
システムであって、
１つ以上のデータベースを表すデータを格納する１つ以上のブロック化された記憶装置と、
入力／出力（Ｉ／Ｏ）要求に応答して、前記１つ以上のブロック化された記憶装置に対してデータの読出または書込を行なう記憶サーバとを含み、前記Ｉ／Ｏ要求は、前記１つ以上の記憶装置内における前記読出または書込されるべきデータの位置を示す物理特性を含み、さらに、
前記記憶サーバに結合され、データベースアプリケーションからデータベースコマンドを受取り、前記データベースコマンドに応答してＩ／Ｏ要求を前記記憶サーバに送るデータベースサーバを含み、
前記データベースサーバは、前記Ｉ／Ｏ要求に関連付けられる論理特性を、前記Ｉ／Ｏ要求との関連において、前記記憶サーバに送るよう構成されており、
前記論理特性は、前記物理特性とは異なり、
１つ以上の論理特性は、前記Ｉ／Ｏ要求のうちの少なくとも第１のＩ／Ｏ要求に対して、
前記第１のＩ／Ｏ要求に関連付けられ、かつ前記第１のＩ／Ｏ要求によって目標とされるデータベース、
作業を分類化し、前記第１のＩ／Ｏ要求に関連づけられる作業負荷タイプ、
複数の消費側を含み、前記第１のＩ／Ｏ要求に関連付けられる消費側グループ、
前記第１のＩ／Ｏ要求を出すために前記第１のＩ／Ｏ要求側で使用される通信セッションに関連付けられるユーザ名、
前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出したサービス、および
前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出した目的、のうちの少なくとも１つを示すものを含み、
前記記憶サーバは前記Ｉ／Ｏ要求をキューに入れるよう構成されており、
前記記憶サーバは、さらに、Ｉ／Ｏ要求に関連付けられる論理特性に少なくとも部分的に基づいた順序でＩ／Ｏ要求を処理するよう構成され、
前記システムが１つ以上の選択ポリシーを受取り、
前記記憶サーバが、前記１つ以上の選択ポリシーの各々に示されるポリシーを用いて、前記複数のＩ／Ｏ要求のうちのどれが処理のために選択されるべきかを選択し、
前記記憶サーバは前記ポリシーを複数のシーケンス段階に適用し、
前記Ｉ／Ｏ要求のうち、同様の論理特性を有する要求はある選択グループに属し、
前記複数のＩ／Ｏ要求は複数の選択グループに対応し、
前記記憶サーバによって前記複数の段階のうちのある後の段階において適用されるポリシーは、前記複数の選択グループのうちのどの選択グループが１つ以上の前の段階を生き延びるかに少なくとも部分的に基づく、システム。
【請求項１２】
前記１つ以上の論理特性は、前記第１のＩ／Ｏ要求に関連付けられ、かつ前記第１のＩ／Ｏ要求に伴う要求メタデータによって特定されるデータベースを含む、請求項１に記載の方法。
【請求項１３】
前記１つ以上の論理特性は、作業を分類化し、前記第１のＩ／Ｏ要求を出した第１のＩ／Ｏ要求側によって実行される作業負荷タイプを含む、請求項１に記載の方法。
【請求項１４】
前記１つ以上の論理特性は、複数の消費側を含み、前記第１のＩ／Ｏ要求に関連付けられる消費側グループを含む、請求項１に記載の方法。
【請求項１５】
前記１つ以上の論理特性は、前記第１のＩ／Ｏ要求側が応答して前記第１のＩ／Ｏ要求を出した通信セッションに関連付けられるユーザ名を含む、請求項１に記載の方法。
【請求項１６】
前記１つ以上の論理特性は、前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出したサービスを含む、請求項１に記載の方法。
【請求項１７】
前記１つ以上の論理特性は、前記第１のＩ／Ｏ要求側が前記第１のＩ／Ｏ要求を出した目的を含む、請求項１に記載の方法。
【請求項１８】
前記１つ以上の論理特性は、前記第１のＩ／Ｏ要求に関連付けられるデータベースと、
作業を分類化し、前記第１のＩ／Ｏ要求を出した第１のＩ／Ｏ要求側によって実行される作業負荷タイプを含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は記憶要求管理に関し、より特定的には、Ｉ／Ｏ要求の記憶側管理に関する。
【背景技術】
【０００２】
背景
データベースシステムの主な役割は、データオブジェクトのハイレベルの抽象的な宣言、ならびにそれらオブジェクトの操作および検索を変換することである。理想的には、それらの宣言および操作は、データベースシステムによって、単純な、線形アドレス指定される、ブロック化される、永続的な記憶装置に送られるＩ／Ｏ要求に効率よく変換される。しばしば、データベースシステムはそのような変換を複数のアプリケーションに対して実行しなければならない。それらのアプリケーションは、異なるユーザおよびスキーマセキュリティレベル、アプリケーションタイプ、データベースセッションタイプ、ならびにＩ／Ｏ要求の優先順位およびクラスにわたって、複数のデータベースを用いるかもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
多くの状況において、Ｉ／Ｏ要求が記憶システムに送られる順序はシステムの効率に影響する。たとえば、小さい高優先順位Ｉ／Ｏ要求および大きい低優先順位Ｉ／Ｏ要求の両方が記憶システムに送られる必要がある場合、データベースサーバにとって、大きい低優先順位Ｉ／Ｏ要求を小さい高優先順位Ｉ／Ｏ要求の前に送ることは効率的ではないであろう。
【０００４】
Ｉ／Ｏ要求がインテリジェントな態様で記憶システムに送られることを確実にするために、さまざまな技術が開発されてきた。たとえば、ここに引用により援用される、“Management Of Shared Storage I/O Resources”と題される米国特許出願第１１／７１６，３６４号には、Ｉ／Ｏ要求をデータベースサーバ内においてキューに入れ、それらの要求を記憶システムに対してインテリジェントな態様で出す技術が記載されている。しかしながら、データベースサーバにＩ／Ｏ要求をインテリジェントな態様で出させることは、記憶システムによるＩ／Ｏ要求の最適な取扱を確実にはしない。
【０００５】
具体的には、記憶システムは、典型的には、Ｉ／Ｏ要求を先入れ先出し（ＦＩＦＯ）に基づいて取扱う。記憶システムがＦＩＦＯ処理から逸脱する程度まで、その逸脱は、ディスク効率を改善するようＩ／Ｏ要求を再順序付けすることを伴う。そのような再順序付けは、Ｉ／Ｏ要求の後ろにある目的に対してはどのような考慮も払われずに実行される。その結果、複数のデータベースサーバが複数のデータベースについてのＩ／Ｏ要求を同じ記憶システムに送っているとき（またはある記憶システム内の同じ記憶装置に送っているとき）、その記憶システムは、最後には、各個々のデータベースサーバは独立してそのＩ／Ｏ要求を記憶システムに対して最適なシーケンスで出しているけれども、より低優先順位のＩ／Ｏ要求を処理してからより高優先順位のＩ／Ｏ要求を処理することになるかもしれない。
【０００６】
複数のタイプの作業負荷およびデータベースはしばしばストレージを共有する。残念なことに、複数のタイプの作業負荷およびデータベースを共有されるストレージにおいて実行することは、しばしば、アプリケーションと混合された作業負荷との間においてパフォーマンスおよび応答時間の問題へと至る。たとえば、１つのプロダクションデータ倉庫における大きな並列クエリは、別のプロダクションデータ倉庫における重要なクエリの実行に影響し得る。さらに、データ倉庫におけるデータ負荷は、さらに同じデータ倉庫において実行される重要なクエリの実行に影響し得る。これらの問題は、記憶システムに対するオーバープロビジョン（過剰投資）によって軽減することが可能であるが、これは、共有されるストレージのコスト削減の恩恵を減ずる。重要でないタスクをオフピーク時間にスケジュールすることも可能であるが、この手作業処理は面倒である。それは、データベースが、自分たちの活動を調整しないような異なる管理者を有する場合、不可能となる。
【０００７】
このセクションに記載されるアプローチは、追求され得るアプローチではあるが、以前に構想または追求されたことがあるアプローチでは必ずしもない。したがって、そうではないと示されるのでなければ、このセクションに記載されるアプローチのいずれも単にそれらのこのセクションにおける包含により先行技術として適格である、と仮定されるべきではない。
【０００８】
この発明を、同様の参照番号は同様の要素を示す添付の図面を参照して、限定的にではなく、例示的に説明する。
【図面の簡単な説明】
【０００９】
【図１】複数のＩ／Ｏ要求側から要求を受取り、複数のＩ／Ｏ要求側からのＩ／Ｏ要求をインテリジェントに順序付けるよう構成される記憶サーバのブロック図である。
【図２】この発明のある実施例に従って、さまざまな要求メタデータ値が消費側グループにどのようにマッピングされてもよいかを示すブロック図である。
【図３】この発明のある実施例に従う、３段階選択ポリシーのブロック図である。
【図４】この発明のある実施例に従う、生き残りに従うポリシーを説明するブロック図である。
【図５】この発明のある実施例に従う、生き残りに従うポリシーの２段階を示すブロック図である。
【図６】この発明の実施例が実施されてもよい計算装置のブロック図である。
【発明を実施するための形態】
【００１０】
詳細な説明
以下の記載においては、説明のため、多数の具体的な詳細を、この発明の十分な理解を与えるために述べる。しかしながら、この発明はこれらの具体的な詳細なしに実施されてもよいことは明らかである。他の例では、周知の構造および装置が、ブロック図において、この発明を不要に不明瞭にすることを回避するために、示される。
【００１１】
全体的概要
Ｉ／Ｏ要求が記憶システムによってＩ／Ｏ要求の１つ以上の論理特性に少なくとも部分的に基づいて処理されるシーケンスを記憶システム内において管理するための技術がここに記載される。この論理特性は、たとえば、Ｉ／Ｏ要求が提出されたユーザの識別情報、Ｉ／Ｏ要求を提出したサービス、Ｉ／Ｏ要求により目標とされるデータベース、Ｉ／Ｏ要求がマッピングする消費側グループを示すもの、Ｉ／Ｏ要求が出された理由、Ｉ／Ｏ要求の優先順位カテゴリなどを含んでもよい。そのような論理特性は、基本的に、Ｉ／Ｏ要求によって目標とされるデータの記憶位置、およびＩ／Ｏ要求によって指定されるＩ／Ｏ動作に関与するデータの量などのような、Ｉ／Ｏ要求の物理的特性とは異なる。
【００１２】
ここに記載されるストレージ内Ｉ／Ｏ管理技術は、Ｉ／Ｏ要求を記憶システムに出すＩ／Ｏ要求側内において実行される任意の管理の代わりに、またはそれに加えて用いられてもよい。ここで用いられるとおりでは、「Ｉ／Ｏ要求側」は、Ｉ／Ｏ要求を記憶システムに出す任意のエンティティを指す。Ｉ／Ｏ要求側は、たとえば、データベースアプリケーションから受取られるデータベースコマンドに応答してＩ／Ｏ要求を出すデータベースサーバであってもよい。しかしながら、ここに記載される技術はどのような特定のタイプのＩ／Ｏ要求側にも限定されるものではない。
【００１３】
記憶システムは、記憶システム内の記憶装置に向けられるすべてのＩ／Ｏ要求を取扱うため、記憶システムは、それらの記憶装置に向けられたＩ／Ｏ要求をどのようにスケジュールするかについてのインテリジェントスケジューリング判断をなすよう、Ｉ／Ｏ要求側よりもよい状況にある。たとえば、記憶システムは、ある特定の記憶装置を目標とする高優先順位Ｉ／Ｏ要求および同じ記憶装置を目標とする低優先順位Ｉ／Ｏ要求が、異なるＩ／Ｏ要求側から来て、２つの異なるデータベースを目標としても、高優先順位Ｉ／Ｏ要求を低優先順位Ｉ／Ｏ要求よりも前に取扱うべきであると判断することができる。
【００１４】
記憶システム内に含まれ、Ｉ／Ｏ要求を管理するための論理は、ここにおいては、記憶システムの「記憶サーバ」と称される。記憶サーバは、ソフトウェアが記憶システムの一部であるプロセッサにおいて実行されること、ハードワイヤード論理、またはソフトウェアとハードウェアとの任意の組合せによって実現されてもよい。記憶サーバによって受取られてはいるが、まだ出されてはいない（たとえば記憶システムの出力キューに加えられている）Ｉ／Ｏ要求は、ここにおいては、「待ち状態のＩ／Ｏ要求」と称される。記憶装置に出されてはいるが、まだ完了してはいないＩ／Ｏ要求は、ここにおいては、「未処理のＩ／Ｏ要求」と称される。
【００１５】
Ｉ／Ｏ要求に関連付けられる作業の論理特性は従来は記憶システムには利用可能ではない。したがって、１つの実施例においては、Ｉ／Ｏ要求の論理特性は、記憶システムに対し、他のエンティティから、「要求メタデータ」の形式で通信される。たとえば、１つの実施例においては、Ｉ／Ｏ要求側は記憶サーバに対して要求メタデータをＩ／Ｏ要求とともに与える。上で説明されるように、要求メタデータは、Ｉ／Ｏ要求によって表現される作業についての論理特性を指定する。それらの論理特性、スケジューリングポリシー、および選択ポリシーに基づいて、記憶サーバは各Ｉ／Ｏ要求をいつ出すべきかを判断する。以下においてより詳細に記載されることになるように、記憶サーバは、即座にＩ／Ｏ要求を出してもよく、または遅らせて出すために要求をキューに入れてもよい。
【００１６】
１つの実施例では、１つより多いＩ／Ｏ要求が待ち状態にあり、スケジューリングポリシーが、Ｉ／Ｏ要求が出されるべきであることを示す場合、どの待ち状態のＩ／Ｏ要求が出されるべきかは、１つ以上の選択ポリシーによって判断される。選択ポリシーにおいて指定されるさまざまなポリシーを段階的に適用してもよい。各段階中において、選択に対する候補であると考慮される待ち状態のＩ／Ｏ要求の数は、その段階に属するポリシーに基づいて低減される。待ち状態のＩ／Ｏ要求からなる、わずかに１つの空ではない待機キューが候補として残る場合、記憶サーバは、処理のために、その待機キューの先頭にあるＩ／Ｏ要求を選択する。
【００１７】
選択ポリシーにおいて指定されてもよいポリシーの例は以下を含む：
・記憶性能容量の７０％はデータ倉庫ファイナンスに割当てられるべきであり、記憶性能容量の３０％はデータ倉庫セールスに割当てられるべきである。
・プロダクションデータベースはテストおよび開発データベースを超える優先順位を有するべきである。
・ＯＬＴＰ作業負荷はメンテナンス作業負荷を超える優先順位を有するべきである。
【００１８】
例示的システム
図１は、ここに記載されるＩ／Ｏ要求管理技術が実現されてもよいシステムのブロック図である。図１を参照して、記憶システム１００は、いくつかの異なるアプリケーション１３０、１３２、１３４、１３６および１３８によって用いられるデータに対するストレージを提供する。それらのアプリケーションは、コマンドをＩ／Ｏ要求側１２０、１２２および１２４に送ることにより、記憶システム１００を間接的に利用する。たとえば、アプリケーション１３０、１３２、１３４、１３６および１３８はさまざまなデータベースアプリケーションであってもよく、Ｉ／Ｏ要求側１２０、１２２および１２４は、データベースコマンドに応答して、記憶装置１０４および１０６にわたって広がるデータベースに格納されるデータを格納し、検索し、操作するデータベースサーバであってもよい。
【００１９】
示される実施例では、アプリケーション１３０および１３２はＩ／Ｏ要求側１２０と対話し、アプリケーション１３４はＩ／Ｏ要求側１２２と対話し、アプリケーション１３６および１３８はＩ／Ｏ要求側１２４と対話する。実際の実現例では、Ｉ／Ｏ要求側と同時に対話するアプリケーションの数およびタイプは変動してもよい。
【００２０】
上で言及したように、Ｉ／Ｏ要求側１２０、１２２および１２４は、何らかの形式の内部Ｉ／Ｏ要求スケジューリングポリシーを実現してもよい。しかしながら、それらの内部ポリシーは、たとえば、いつＩ／Ｏ要求側１２０およびＩ／Ｏ要求側１２２の双方が記憶装置１０４を目標とするＩ／Ｏ要求を提出するかをインテリジェントにスケジューリングすることを保証しはしない。そのような状況下でＩ／Ｏ要求をインテリジェントに管理するためには、ポリシーを記憶サーバ１０２に登録し、記憶サーバ１０２はそれらのポリシーを入来Ｉ／Ｏ要求に適用する。
【００２１】
スケジューリングポリシーおよび選択ポリシー
１つの実施例に従うと、記憶サーバ１０２内には２つの別々のポリシー、つまりスケジューリングポリシーと選択ポリシーとがある。スケジューリングポリシーは、Ｉ／Ｏがいつ出されるべきかを判断する。たとえば、スケジューリングポリシーは、スループットを妥当に高く保つことに向けられているかもしれない。この場合には、記憶サーバ１０２は、相対的に大きな数の未処理Ｉ／Ｏを許すであろう。Ｉ／Ｏは、一旦この制限にヒットするとキューに入れられるにすぎないであろう。別の例は、レイテンシを妥当に低く保つことに向けられるスケジューリングポリシーであろう。この場合では、記憶サーバ１０２は、相対的に小さな数の未処理Ｉ／Ｏを許すであろう。いずれの場合においても、一旦この制限にヒットすると、任意の新たなＩ／Ｏがキューに入れられるであろう。未処理Ｉ／Ｏの数（ディスク上の現在のＩ／Ｏ負荷）があるレベルに達すると、「飽和」が生ずる。
【００２２】
スケジューリングポリシーに基づいて、記憶サーバ１０２がＩ／Ｏ要求を出すと判断すると、記憶サーバ１０２は選択ポリシーに基づいてどのＩ／Ｏを出すべきかを判断する。ここに記載される技術は任意の選択ポリシーとともに用いられてもよい。説明のため、さまざまなタイプの選択ポリシーを以下に記載する。しかしながら、ここに記載される技術は、用いられる選択ポリシーのタイプには依存しない。典型的には、記憶サーバ１０２によって実現される選択ポリシーは、たとえば、記憶が用いられることになる態様次第である。
【００２３】
典型的には、記憶が複数のデータベースによって共有される状況においては、選択ポリシーは、Ｉ／Ｏ要求によって目標とされるデータベースに基づいてＩ／Ｏ要求を選び取るためのポリシーを含むことになる。以下においてより詳細に記載されるように、データベースを選び取るポリシーは、比率に基づくか、優先順位に基づくか、それら２つのハイブリッドであり得る。
【００２４】
他方、記憶が１つのデータベースによって用いられる場合、選択ポリシーは、Ｉ／Ｏ要求を、そのＩ／Ｏ要求に関連付けられる作業負荷に基づいて選び取るためのポリシーを含んでもよい。この作業負荷に基づく選択ポリシーも、比率に基づくか、優先順位に基づくか、またはそれら２つのハイブリッドであり得る。
【００２５】
最後に、記憶が複数のデータベースによって共有され、それらデータベースがそれらの中に複数の作業負荷を有する場合には、選択ポリシーは２段階プランを伴ってもよく、そこにおいては、プランの第１段階はデータベースを選択し、プランの第２段階はそのデータベース内において作業負荷を選択する。
【００２６】
１つの実施例に従うと、ここに記載される技術は、スケジューリングポリシーおよび選択ポリシーと並んで、記憶システム内の各記憶装置に独立して適用される。したがって、記憶システム内に１２個のディスクがある場合には、負荷設定、キューなどはディスク毎に指定される。ディスク毎の負荷設定、キューおよびポリシーは有用であり、なぜならば、すべてのディスクは同じ記憶システムによって管理される一方で、各ディスクは他のディスクとは独立して動作するからである。
【００２７】
スケジューリングポリシー
上で言及したように、記憶サーバ１０２は、記憶システムが目標の最適負荷に達する点まで、Ｉ／Ｏ要求を記憶システムに出す。ここで用いられるとおりでは、「負荷」という用語は、未処理の、未完了のＩ／Ｏ要求の全コストを指す。個々のＩ／Ｏ要求のコストは、そのＩ／Ｏ要求が記憶システムリソースを利用する時間量によって判断される。したがって、少量のデータを読むＩ／Ｏ要求は大量のデータを読むＩ／Ｏ要求よりもはるかに低いコストを有し、なぜならば、それははるかにより短い時間の間ディスクＩ／Ｏリソースを占有するからである。
【００２８】
１つの実施例に従うと、Ｉ／Ｏ要求のコストは記憶システムを較正することにより予め定められる。一旦目標負荷に達すると、記憶システムは後のすべてのＩ／Ｏ要求をキューに入れる。十分なＩ／Ｏ要求が完了し、記憶システムがその目標負荷の下にあるときは、記憶サーバは選択ポリシーを用いて十分なＩ／Ｏ要求を選択して記憶システムをその目標負荷に戻す。
【００２９】
目標負荷の設定は記憶システムの性能特性を決める。目標負荷が低い場合、Ｉ／Ｏ要求のレイテンシは低いことになる。目標負荷が増加するにつれ、記憶のスループットは増大し、よりよいＩ／Ｏスループットへと至る。これは、記憶システムはより高い負荷においてのほうがより効率よく働くからである。しかしながら、Ｉ／Ｏのレイテンシは、その増大した負荷のため、減少することになる。
【００３０】
目標負荷のサイズは、ここにおいては、「負荷設定」と称される。スケジューリングポリシーにより実現される負荷設定は数多くの異なる態様で確立され得る。たとえば、負荷設定は、たいていの人々にとって十分働くべきであるあるレベルにおいてハードコード化され得る。代替的に、負荷設定は、記憶システムが、レイテンシ、スループットまたはそれら２つの間の妥協点に関して最適化されるべきかどうかを指定する記憶管理者によって設定され得る。別の例としては、負荷設定は、記憶サーバにより、各作業負荷を見ることによって自動的に判断され得る。メタデータおよび他の作業負荷特性を用いて、記憶サーバは、作業負荷がレイテンシまたはスループットに対して最適化されるよう好まれるであろうかどうかを判断し得る。記憶サーバは、選択ポリシーを用いて、各作業負荷の優先を重み付けし、全体の負荷設定を決定してもよい。たとえば、高優先順位データベースの優先は低優先順位データベースの優先よりも多く重み付けされるであろう。
【００３１】
負荷設定が記憶サーバによって自動的に判断されるシステムにおいては、記憶システムは、登録される選択ポリシーおよび／または要求メタデータにおいて反映されるように、記憶システムの使用特性に基づいてスケジューリングポリシーを選択してもよい。したがって、記憶システムによって受取られるＩ／Ｏ要求が、主に、スループット集約型となる傾向であるデータ倉庫動作に対する場合には、記憶システムは、それはより高い負荷設定を有するというスケジューリングポリシーを選択してもよい。たとえば、記憶システムは、記憶システムの出力Ｉ／Ｏキューが任意の所与の時間において８１メガバイトＩ／Ｏ要求までを含むことを可能にするよう構成されてもよい。より高い負荷設定によって、より大量のＩ／Ｏが記憶システム内の記憶装置に出され、記憶装置を可能な限りビジーに保つことを可能にする。
【００３２】
他方、Ｉ／Ｏ要求の大半がＯＬＴＰ作業負荷に対してである場合には、より低い負荷設定を伴うスケジューリングポリシーを選択して、スループットよりもレイテンシに対して最適化を行なうようにしてもよい。より低い負荷設定のため、Ｉ／Ｏ要求は、より短い時間の間、記憶装置をタイアップすることになる。記憶装置は、より短い時間の間タイアップされることになるので、記憶装置は、新たに到着する高優先順位Ｉ／Ｏ要求を処理するよう、より利用可能となることになる。したがって、それらの高優先順位Ｉ／Ｏ要求を発生させた動作を実行しているユーザは、より少ない記憶システムレイテンシを経験することになる。
【００３３】
１つの実施例に従うと、記憶システムは、記憶システムに登録される選択ポリシーおよび／または要求に伴う要求メタデータに基づいて、全体の作業負荷の特性を判断する。たとえば、ある選択ポリシーは、記憶システムが用いられているアプリケーションはデータ倉庫アプリケーションである旨を示してもよい。代替的に、選択ポリシーは、アプリケーションのタイプを示さないかもしれないが、Ｉ／Ｏ要求とともに受取られる要求メタデータは、Ｉ／Ｏ要求の大半はデータ倉庫アプリケーションからである旨を示すかもしれない。
【００３４】
たとえ、選択ポリシーが、記憶システムを用いている作業負荷の性質を示しているときでも、記憶サーバは、要求メタデータを用いて、各作業負荷のどれほどが実際にストレージを使用しているかどうかを判断してもよい。たとえば、ある選択ポリシーは、記憶システムが２つのＯＬＴＰアプリケーションおよび２つの倉庫アプリケーションによって用いられている旨を示してもよい。この情報のみに基づくと、最適な負荷設定がどのようであろうかは不明瞭であるかもしれない。しかしながら、記憶サーバによって実際に受取られるＩ／Ｏ要求の９０％が２つのＯＬＴＰアプリケーションからである場合、記憶システムは、ＯＬＴＰアプリケーションに対して最適化される負荷設定を選択してもよい。
【００３５】
１つの実施例に従うと、負荷設定選択処理を周期的に繰返し、作業負荷が変更するにつれ、負荷設定が動的に変更し得る。たとえば、１つの実施例では、選択処理は、最後の５秒などのような、ある特定の時間期間内に記憶システムによって受取られたＩ／Ｏ要求に基づいてなされてもよい。その期間中に受取られるＩ／Ｏ要求によって表現される作業負荷は、前の期間において受取られたＩ／Ｏ要求において表現される作業負荷とは大きく異なるかもしれない。次いで、負荷設定を変更して、最も最近の負荷設定選択動作の結果を反映させる。したがって、記憶サーバが主にデータ倉庫動作に対して用いられる期間中においては、負荷設定はスループットに対して自動的に最適化されることになり、同じ記憶システムが主にＯＬＴＰ動作に対して用いられる期間中においては、負荷設定は低減されたレイテンシに対して自動的に最適化されることになる。
【００３６】
要求メタデータ
選択ポリシーを実現するために、記憶サーバ１０２はそれが受取るＩ／Ｏ要求についての情報を知ることを必要とする。たとえば、選択ポリシーが、Ｉ／Ｏ要求に関連付けられる作業負荷に基づく場合、記憶サーバ１０２は、Ｉ／Ｏ要求が属する作業負荷を知ることが必要である。１つの実施例に従うと、選択ポリシーを実現するよう記憶サーバ１０２によって必要とされる情報は、記憶サーバ１０２に対し、要求に伴う「要求メタデータ」として与えられる。Ｉ／Ｏ要求に伴うメタデータ、およびどのようにそのメタデータが記憶サーバ１０２によって用いられてＩ／Ｏスケジューリングについてインテリジェントな判断をなすかは、この後より詳細に記載する。
【００３７】
待機キュー
記憶システム１００が、スケジューリングポリシーによって支配されるキャパシティの下で動作しているとき、記憶サーバ１０２はＩ／Ｏ要求をキューに入れない。特に、記憶システムのキャパシティが飽和しない限り、記憶サーバ１０２によって受取られるＩ／Ｏ要求は即座に処理される。Ｉ／Ｏ要求の処理は、たとえば、Ｉ／Ｏ要求を出力Ｉ／Ｏキューに置くことによって行なわれてもよい。しかしながら、Ｉ／Ｏ要求が記憶システム１００を飽和し始める毎に、記憶サーバ１０２は、受取られたＩ／Ｏ要求を待機キューに入れることによって、入来するＩ／Ｏ要求の実行を遅らせることになる。
【００３８】
たとえば、プロダクションデータベースおよびテストデータベースが記憶システム１００を共有している場合、プロダクションデータベースを目標とするＩ／Ｏ要求に対して優先順位を与える選択ポリシーが構成され得る。この場合、テストデータベース負荷がプロダクションデータベースパフォーマンスに影響を与えるであろう毎に、記憶サーバ１０２は、プロダクションデータベースＩ／Ｏパフォーマンスが影響を受けないようにＩ／Ｏ要求をスケジューリングすることになる。これは、テストデータベースＩ／Ｏ要求が、プロダクションデータベースＩ／Ｏパフォーマンスを乱すことなく処理され得るまで、待機キューに入れられることになることを意味する。
【００３９】
遅延されるＩ／Ｏ要求が置かれる待機キューは、Ｉ／Ｏ要求に伴う要求メタデータによって示される論理特性に基づく。スケジューリングポリシーによって、追加のＩ／Ｏ要求が出されるべきである旨が示されると、記憶サーバ１０２は、登録される選択ポリシー、およびＩ／Ｏ要求がある待機キューに基づいて、どの遅延されたＩ／Ｏ要求を処理すべきかを選択する。
【００４０】
比率に基づく選択ポリシー
１つの実施例に従うと、記憶サーバ１０２に登録される選択ポリシーは、比率に基づくポリシー、優先順位に基づくポリシー、およびハイブリッドポリシーを含んでもよい。比率に基づくポリシーは、異なる論理特性を有する要求間の負荷を、それら論理特性に割当てられる比率に基づいて割当てるポリシーである。たとえば、比率に基づくあるポリシーに対する基礎として用いられることになる論理特性は、Ｉ／Ｏ要求によって目標とされるデータベースであると仮定する（「目標とされるデータベース特性」）。さらに、５つのデータベースＤＢ１、ＤＢ２、ＤＢ３、ＤＢ４およびＤＢ５が記憶装置１０４および１０６に格納されると仮定する。比率に基づくポリシーは、記憶サーバ１０２は負荷を５つのデータベース間において以下のように割当てるべきである旨を指定してもよい：
ＤＢ１＝５０％，ＤＢ２＝２０％，ＤＢ３＝２０％，ＤＢ４＝５％およびＤＢ５＝５％。
【００４１】
この比率に基づくポリシーに基づいて、記憶サーバ１０２は、待ち状態のＩ／Ｏをあるシーケンスで処理して、自身の割当比率よりも下であるデータベースを目標とするＩ／Ｏ要求が、自身の割当比率より上であるデータベースを目標とするＩ／Ｏ要求の前に処理されることを確実にする。
【００４２】
１つの実施例では、記憶サーバ１０２は、さまざまなデータベースに割当てられる比率に基づいて、「さらに遅れた」判断をなしてもよい。たとえば、記憶サーバ１０２が処理すべき別のＩ／Ｏ要求を選択する用意があるとき、ＤＢ２、ＤＢ４およびＤＢ５が待ち状態のＩ／Ｏ要求を有すると仮定する。これらの状況下では、記憶サーバ１０２は、ＤＢ２、ＤＢ４およびＤＢ５のうちのどれがそのそれぞれの割当においてさらに遅れているかを判断する。説明のため、ＤＢ２は負荷の２２％を既に用いており、ＤＢ４は４％を用いており、ＤＢ５は３％を用いていると仮定する。このような状況下では、記憶サーバ１０２は、ＤＢ５を目標とする待ち状態のＩ／Ｏ要求を選択するであろう。
【００４３】
比率に基づくポリシーは、より高い優先順位のエンティティがより大きな量の帯域幅を受取ることを確実にし、その一方で、いずれのエンティティも完全には漏れないことを確実にするのに有用である。上記の例では、ＤＢ２はＤＢ５よりも概してより重要であり、なぜならば、ＤＢ２は負荷の２０％を割当てられ（、一方、ＤＢ５はわずか５％を割当てられ）ているからである。しかしながら、ＤＢ２は、既に、負荷のうちのその割当てられた部分より多くを使用しているため、ＤＢ５からのＩ／Ｏ要求がＤＢ２からのＩ／Ｏ要求の前に処理された。
【００４４】
確率を用いる、比率に基づいたポリシー
上に記載される実施例においては、比率に基づくポリシーは、どのデータベースがそれ自体の負荷割当に関して「さらに遅れている」かを追跡することによって実現される。残念なことに、「さらに遅れている」の判断は、どのＩ／Ｏ要求が以前に出されたかを追跡することのオーバヘッドを生じさせる。このオーバヘッドを回避するためには、記憶サーバ１０２は、単に、比率に基づくポリシーによって、Ｉ／Ｏ要求が選択される「確率」として指定される負荷割当を取扱い得る。
【００４５】
たとえば、データベースＤＢ１、ＤＢ２、ＤＢ３、ＤＢ４およびＤＢ５の各々は少なくとも１つの待ち状態のＩ／Ｏ要求を有すると仮定する。これらの条件下では、データベースのすべてが選択候補となるであろう。その結果、所与のデータベースが選択される確率は、そのデータベースが割当てられる負荷のパーセンテージに等しくなる。具体的には、記憶サーバ１０２がＤＢ１を目標とするＩ／Ｏ要求を選択するであろう５０％の確率があり、記憶サーバ１０２がＤＢ２を目標とするＩ／Ｏ要求を選択するであろう２０％の確率があるであろう、などとなる。
【００４６】
他方、ＤＢ２およびＤＢ５のみが待ち状態のＩ／Ｏ要求を有する場合には、ＤＢ２およびＤＢ５が唯一の選択候補となるであろう。ＤＢ２は２０％の負荷割当を有し、ＤＢ５は５％の負荷割当を有する。これらの状況下では、ＤＢ２およびＤＢ５の相対的な負荷割当は、ＤＢ２を目標とするＩ／Ｏ要求が選択される８０％の確率、およびＤＢ５を目標とするＩ／Ｏ要求が選択される２０％の確率をもたらす結果となるであろう。
【００４７】
一旦さまざまな選択候補に対して確率が判断されると、記憶サーバ１０２はそれらの確率に基づいてＩ／Ｏ要求選択を行なう。確率に基づくＩ／Ｏ要求の選択の１つの態様は、ある範囲のサブ範囲を選択候補の各々に割当てることを伴い、そこにおいては、各選択候補に割当てられるサブ範囲のサイズは、その選択候補が選択されることになる確率によって判断される。
【００４８】
たとえば、範囲は１〜１００であると仮定する。さらに、唯一のＩ／Ｏ要求候補は、ＤＢ２を目標とするＩ／Ｏ要求、およびＤＢ５を目標とするＩ／Ｏ要求であると仮定する。これらの状況下においては、ＤＢ２は８０％の選択確率を有するであろう。したがって、ＤＢ２を目標とするＩ／Ｏ要求はサブ範囲１〜８０（つまり全範囲の８０％）を割当てられてもよい。他方、ＤＢ５は２０％の選択確率を有することになり、したがって、サブ範囲８１〜１００（つまり全範囲の２０％）を割当てられてもよい。
【００４９】
各選択候補が範囲内のサブ範囲を割当てられた後、記憶サーバ１０２はその範囲において乱数を生成してもよい。乱数が入るサブ範囲は、記憶サーバ１０２がどの選択候補を選択するかを決定する。したがって、この例においては、乱数が１と８０との間に入る場合、ＤＢ２を目標とするＩ／Ｏ要求が選択されることになる。他方、乱数が８１と１００との間に入る場合には、ＤＢ５を目標とするＩ／Ｏ要求が選択されることになる。
【００５０】
優先順位に基づくポリシー
優先順位に基づくポリシーは、相対的な重要度を、候補Ｉ／Ｏ要求の論理特性の値に割当てるポリシーである。たとえば、優先順位に基づくポリシーに対する基礎として用いられることになる論理特性は、目標とされるデータベース特性である、と仮定する。データベースＤＢ１、ＤＢ２、ＤＢ３、ＤＢ４およびＤＢ５に対してデータを格納する記憶システムにおいては、目標とされるデータベース特性の考えられ得る値はＤＢ１、ＤＢ２、ＤＢ３、ＤＢ４およびＤＢ５である。その結果、目標とされるデータベース特性を用いる、優先順位に基づくポリシーは、ＤＢ１、ＤＢ２、ＤＢ３、ＤＢ４およびＤＢ５を目標とするＩ／Ｏ要求はそれぞれ第１の優先順位、第２の優先順位、第３の優先順位、第４の優先順位および第５の優先順位を有する旨を指定してもよい。
【００５１】
優先順位に基づくポリシーが用いられる場合、より高い優先順位の論理特性値に関連付けられる待ち状態のＩ／Ｏ要求がある限り、より低い優先順位の論理特性値を有するＩ／Ｏ要求は処理されない。したがって、ＤＢ１を目標とするＩ／Ｏ要求が待ち状態である限り、ＤＢ２、ＤＢ３、ＤＢ４およびＤＢ５を目標とするＩ／Ｏ要求は記憶サーバ１０２によっては選択されないことになる。他方、ＤＢ５を目標とするＩ／Ｏ要求は、ＤＢ１、ＤＢ２、ＤＢ３およびＤＢ４のいずれかを目標とする待ち状態のＩ／Ｏ要求がなくなるまで、記憶サーバ１０２によっては選択されないことになる。優先順位に基づくポリシーは、より低い優先順位の論理特性に関連付けられるＩ／Ｏ要求は、より高い優先順位の論理特性に関連付けられるＩ／Ｏ要求の実行に対してけっして悪影響を与えないことを保証する。
【００５２】
ハイブリッドポリシー
ハイブリッドポリシーは、優先順位レベルおよび比率の両方を組込むポリシーである。具体的には、複数の論理特性を各優先順位レベルに割当てもよい。各優先順位レベル内においては、比率を論理特性の各々に割当てる。たとえば、ＤＢ１、ＤＢ２およびＤＢ３を目標とするＩ／Ｏ要求は、すべて、第１の優先順位レベルに割当てられてもよい。第１の優先順位レベル内においては、ＤＢ１、ＤＢ２およびＤＢ３を目標とするＩ／Ｏ要求は、それぞれ、比率５０、４０および１０を割当てられてもよい。ＤＢ４およびＤＢ５を目標とするＩ／Ｏ要求は第２の優先順位レベルに割当てられてもよい。第２の優先順位レベル内においては、ＤＢ４およびＤＢ５を目標とするＩ／Ｏ要求はそれぞれ比率７０および３０を割当てられてもよい。
【００５３】
この例に従うと、記憶サーバ１０２は、負荷を、ＤＢ１、ＤＢ２およびＤＢ３を目標とするＩ／Ｏ要求間において、それらのそれぞれの比率に従って割当てることになる。待ち状態のＩ／Ｏ要求のいずれかがＤＢ１、ＤＢ２またはＤＢ３を目標とする限り、記憶サーバ１０２は、ＤＢ４またはＤＢ５を目標とするいずれのＩ／Ｏ要求も処理しはしない。ＤＢ１、ＤＢ２またはＤＢ３を目標とする待ち状態のＩ／Ｏ要求がない場合には、負荷を、ＤＢ４およびＤＢ５を目標とするＩ／Ｏ要求間において、それぞれ、比率７０および３０に基づいて割当てることになる。
【００５４】
データベース選択ポリシー
上に与えられる例に記載されるように、Ｉ／Ｏ要求が向けられるデータベースは、ポリシーの基礎として用いられてもよい１つの論理特性である。目標とされるデータベース特性に基づくＩ／Ｏ要求間における選択に対するポリシーは、ここにおいては、「データベース選択ポリシー」と称される。データベース選択ポリシーの例は：
・記憶性能容量の７０％はデータ倉庫ファイナンスに割当てられるべきであり、記憶性能容量の３０％はデータ倉庫セールスに割当てられるべきである
・プロダクションデータベースはテストおよび開発データベースを超える優先順位を有するべきである
を含む。
【００５５】
データベース選択ポリシーは単純であってもよく、または複雑であってもよい。表１は３レベルハイブリッドデータベース選択ポリシーを示す。
【００５６】
【表１】
0005484471.tif 000002
【００５７】
表１を参照して、それは５つのデータベースを含むシステムに対するデータベース選択ポリシーを示す。第１の優先順位レベルにおいては、セールスプロダクションデータ倉庫は負荷の８０％を割当てられ、ファイナンスプロダクションデータ倉庫は負荷の２０％を割当てられる。これら２つのレベル１データベースのいずれかが待ち状態のＩ／Ｏを有する限り、記憶サーバは他の３つのデータベースのいずれに関してもＩ／Ｏを出しはしない。レベル１データベースに関してＩ／Ｏ要求が待ち状態にないときのみ、カスタマーサービススタンバイデータベースを目標とするＩ／Ｏ要求が記憶サーバによって出力Ｉ／Ｏキューに追加されることになる。同様に、レベル１またはレベル２データベースに対してＩ／Ｏ要求が待ち状態にないときのみ、負荷は、セールステストデータベースおよびセールス開発データベースを目標とするＩ／Ｏ要求間において５０／５０で分割されることになる。
【００５８】
消費側グループ選択ポリシー
データベースは、しばしば、多くのタイプの作業負荷を有する。これらの作業負荷は、それらの実行要件およびそれらが出すＩ／Ｏの量において異なるかもしれない。「消費側グループ」は、ある特定の作業負荷を含むグループセッションに対し、ある態様を与える。たとえば、あるデータベースが４つの異なるアプリケーションに対するデータを格納する場合、４つの消費側グループを、各アプリケーションに対するセッションに対して１つ、作成することができる。同様に、あるデータ倉庫が、重要なクエリ、通常のクエリ、およびＥＴＬ（抽出、変換およびローディング）などの、３つのタイプの作業負荷を有する場合、消費側グループは各タイプの作業負荷毎に作成され得る。
【００５９】
したがって、Ｉ／Ｏ要求の「消費側グループ」は、そのＩ／Ｏ要求の１つ以上の他の論理特性の値から導出されるＩ／Ｏ要求の論理特性である。１つの実施例においては、Ｉ／Ｏ要求が属する消費側グループは、論理特性値を消費側グループにマッピングする「論理特性値対消費側グループ」マッピングに基づく。たとえば、あるＩ／Ｏ要求の消費側グループは以下の論理特性値：（１）サービス識別子、（２）ユーザ識別子、（３）プログラム名、（４）目的識別子、および（５）Ｉ／Ｏ要求を提出した動作についての統計のうちの１つ以上から導出されてもよい。
【００６０】
図２を参照して、この図は、この発明のある実施例に従って、論理特性値と消費側グループとの間におけるマッピングを示すブロック図である。図２に示されるマッピングにおいては、優先順位ＤＳＳ、ＤＳＳおよびメンテナンスの、３つの消費側グループが定義されている。示されるマッピングに従うと、優先順位ＤＳＳ消費側グループは、サービスが「ＰＲＩＯＲＩＴＹ（優先順位）」であるかまたはユーザ名が「ＬＡＲＲＹ」であるすべてのＩ／Ｏ要求を含む。ＤＳＳ消費側グループは、ユーザ名が「ＤＥＶ」であるかまたはクエリが１時間を超えて実行されているすべてのＩ／Ｏ要求を含む。メンテナンス消費側グループは、クライアントプログラム名が「ＥＴＬ」であるかまたはＩ／Ｏ要求の機能が「ＢＡＣＫＵＰ」であるすべてのＩ／Ｏ要求を含む。
【００６１】
消費側グループメンバーシップが論理特性値対消費側グループマッピングによって定義される場合、ある１つのＩ／Ｏ要求は、いくつかの異なる消費側グループにマッピングする論理特性値を有してもよい。たとえば、あるＩ／Ｏ要求は、「ＬＡＲＲＹ」のユーザ識別子、「ＤＥＶ」のクライアントプログラム識別子、および「ＢＡＣＫＵＰ」の目的識別子を有してもよい。１つの実施例に従うと、論理特性値対消費側グループマッピングは、あるＩ／Ｏ要求の論理特性値が複数の消費側グループにマッピングする状況をどのように解決するかを示す。たとえば、ある論理特性値対消費側グループマッピングは、ユーザ名が最も上位の論理特性値であり、それに、サービス、プログラム統計、機能、および最後にクライアントプログラムが続く旨を示してもよい。そのような選択ポリシーのもとでは、「ＬＡＲＲＹ」のユーザ識別子、「ＤＥＶ」のクライアントプログラム識別子、および「ＢＡＣＫＵＰ」の目的識別子を有するＩ／Ｏ要求は、優先順位ＤＳＳ消費側グループにマッピングされるであろう。
【００６２】
ある論理特性値対消費側グループマッピングは、さらに、「デフォルト」消費側グループを有してもよい。１つの実施例では、Ｉ／Ｏ要求の論理特性値のいずれも、どのような他の消費側グループにもマッピングしない場合、そのＩ／Ｏ要求は、デフォルト消費側グループに属するものとして取扱われる。
【００６３】
データベース選択ポリシーと同様に、消費側グループポリシーは、比率に基づいてもよく、優先順位に基づいてもよく、またはハイブリッドであってもよい。あるハイブリッド消費側グループポリシーを表２に示す：
【００６４】
【表２】
0005484471.tif 000003
【００６５】
表２に示されるハイブリッド消費側グループポリシーに従うと、優先順位ＤＳＳ消費側グループにマッピングするＩ／Ｏ要求は負荷の８０％を割当てられ、一方、メンテナンス消費側グループにマッピングするＩ／Ｏ要求は負荷の２０％を割当てられる。ＤＳＳ消費側グループにマッピングするＩ／Ｏ要求が記憶サーバによって出されるのは、他の２つの消費側グループのいずかに属する待ち状態のＩ／Ｏ要求がないときのみである。
【００６６】
１つの実施例では、Ｉ／Ｏ要求側は、論理特性値対消費側グループマッピングを用いて、それらのＩ／Ｏ要求が属する消費側グループを判断し、それらが各Ｉ／Ｏ要求とともに送る要求メタデータにおいて消費側グループ識別子を含む。消費側グループ識別子が要求メタデータに含まれる実施例では、消費側グループが導出される論理特性がさらに要求メタデータに含まれる必要はない。
【００６７】
ある代替的実施例では、Ｉ／Ｏ要求の消費側グループは、Ｉ／Ｏ要求側から記憶システムによって受取られる要求メタデータに直接は示されない。その代わり、論理特性値対消費側グループマッピングを記憶システムに与え、記憶システム内の記憶サーバは、各Ｉ／Ｏ要求の消費側グループを、（ａ）要求メタデータに反映される論理特性値、および（ｂ）論理特性値対消費側グループマッピングに基づいて判断する。
【００６８】
カテゴリ選択ポリシー
１つの実施例に従うと、Ｉ／Ｏ要求の１つの論理特性は、ここにおいては、Ｉ／Ｏ要求の「カテゴリ」と称される。典型的には、Ｉ／Ｏ要求のカテゴリは、そのＩ／Ｏ要求に関連付けられる作業負荷のタイプを示す。たとえば、あるカテゴリ選択ポリシーは、重要、いくらか重要、重要でない、の３つのカテゴリを定義してもよい。
【００６９】
カテゴリ選択ポリシーは、Ｉ／Ｏ要求候補間における選択を、それらＩ／Ｏ要求候補が属するカテゴリに基づいて行なうためのポリシーを示す。データベース選択ポリシーおよび消費側グループに基づくポリシーと同様に、カテゴリ選択ポリシーは、比率に基づいてもよく、優先順位に基づいてもよく、またはハイブリッドであってもよい。たとえば、優先順位に基づくあるカテゴリ選択ポリシーは、重要なＩ／Ｏ要求は最も高い優先順位を有し、いくらか重要なＩ／Ｏ要求は中程度の優先順位を有し、重要でないＩ／Ｏ要求は低い優先順位を有する旨を指定してもよい。
【００７０】
ポリシー対段階割当
上において言及したように、記憶サーバは選択ポリシーにおいて指定されるポリシーを段階的に適用してもよい。どのポリシーを各段階に割当てるかの選択は、それ自体、選択ポリシーに示されてもよいポリシー判断である。図３は、ポリシーが段階１、段階２および段階３の３つの段階に割当てられている選択ポリシー３００を示すブロック図である。特に、優先順位に基づくカテゴリ選択ポリシーが段階１に割当てられ、ハイブリッドデータベース選択ポリシーが段階２に割当てられ、ハイブリッド消費側グループ選択ポリシーが段階３に割当てられている。
【００７１】
段階２のハイブリッドデータベース選択ポリシー内においては、第１の優先順位レベルはＤＢ１、ＤＢ２およびＤＢ３を含み、第２の優先順位レベルはＤＢ４およびＤＢ５を含む。第１の優先順位レベル内においては、ＤＢ１、ＤＢ２およびＤＢ３は、それぞれ、割当比率５０％、４０％および１０％に関連付けられる。第２の優先順位レベル内においては、ＤＢ４およびＤＢ５は両方とも５０％の割当比率に関連付けられる。
【００７２】
同様に、段階３のハイブリッド消費側グループ選択ポリシー内においては、第１の優先順位レベルは消費側グループ１および消費側グループ２を含み、第２の優先順位レベルは消費側グループ３を含む。第１の優先順位レベル内においては、消費側グループ１および２は、それぞれ、割当比率８０％および２０％に関連付けられる。第２の優先順位レベル内においては、消費側グループ３は１００％の割当比率を有する。
【００７３】
ある段階における選択ポリシーが適用された後も候補であり続ける待ち状態のＩ／Ｏ要求は、ここにおいては、その段階の「生き残り」と称される。たとえば、図３の選択ポリシー３００に従うと、カテゴリ１に属する待ち状態のＩ／Ｏ要求がある場合、段階１の生き残りは、カテゴリ１に属する待ち状態のＩ／Ｏ要求しか含まないということになる。
【００７４】
他方、カテゴリ１に属する待ち状態のＩ／Ｏ要求がなく、しかしながら、カテゴリ２に属する少なくとも１つの待ち状態のＩ／Ｏ要求がある場合、段階１の生き残りは、カテゴリ２に属する待ち状態のＩ／Ｏ要求しか含まないということになる。最後に、カテゴリ１または２に属する待ち状態のＩ／Ｏ要求がない場合、段階１の生き残りは、カテゴリ３に属する待ち状態のＩ／Ｏ要求しか含まないということになる。
【００７５】
その後の段階のポリシーは、前の段階の生き残りにしか適用されない。したがって、選択ポリシー３００において段階２に割当てられるハイブリッドデータベース選択ポリシーは、段階１の生き残りに対してのみしか適用されない。同様に、段階３に割当てられるハイブリッド消費側グループ選択ポリシーは、段階２の生き残りに対してのみしか適用されない。生き残りのすべてが同じ待機キューに属するまで、さまざまな段階が適用され続ける。次いで、その待機キューの先頭にあるＩ／Ｏ要求が、実行のために選択される。
【００７６】
段階をシーケンスで適用するため、早期の段階において適用されるポリシーは、究極的なＩ／Ｏ要求選択に対し、後の段階において適用されるポリシーよりも大きな影響を有する。その結果、より上位の論理特性を取扱うポリシーは、一般に、より下位の論理特性を取扱うポリシーよりも早い段階に割当てられる。
【００７７】
たとえば、さまざまなデータベースのユーザが記憶システムの負荷を占有しないようお互いを信用するような状況においては、目標とされるデータベース特性はより下位の論理特性となる。その結果、選択ポリシーは、どのようなデータベース選択ポリシーも有さないかもしれず、または、データベース選択ポリシーをＩ／Ｏ要求選択処理における後の段階に割当ててもよい。
【００７８】
他方、さまざまなデータベースのユーザが負荷を占有しようと試みるかもしれないような状況においては、目標とされるデータベース特性は最も上位の論理特性であってもよい。これらの状況下では、データベース選択ポリシーは、データベース間における同意されえる帯域幅割当を確実に維持するよう記憶サーバによって実行される第１の段階に割当てられてもよい。
【００７９】
生き残りグループに従うポリシー
上に与えられる例においては、記憶サーバによって後の段階において適用されるポリシーは、どの待ち状態のＩ／Ｏ要求が前の段階を生き残ったかに関係ない。しかしながら、１つの実施例によると、ある後の段階において適用するポリシーは、前の段階を生き抜いたＩ／Ｏ要求のグループ次第であってもよい。どのＩ／Ｏ要求が前の段階を生き延びたかに依存するポリシーは、ここにおいては、生き残りグループに従うポリシーと称される。
【００８０】
たとえば、図３の段階２は５つの考えられ得る結果を有する。具体的には、段階２はデータベース選択ポリシーを適用するため、図３の段階２の生き残りは、５つのデータベースのうちのたった１つを目標とするＩ／Ｏ要求であることになる。１つの実施例では、図３の段階３に示されるハイブリッド消費側グループ選択ポリシーは、ＤＢ１を目標とするＩ／Ｏ要求に当てはまるだけであってもよい。段階３は、段階２を生き延びるＩ／Ｏ要求が他のデータベースのうちの１つを目標とするＩ／Ｏ要求である場合は、完全に異なるポリシーを有してもよい。
【００８１】
図４を参照して、図４は、選択ポリシー３００に類似する、段階２の５つの考えられ得る生き残りグループの各々に対して別個の段階３ポリシーがある選択ポリシー４００を示すブロック図である。１つのデータベースを目標とするＩ／Ｏ要求に対する段階３ポリシーは、別のデータベースを目標とするＩ／Ｏ要求に対する段階３ポリシーと完全に異なっていてもよい。たとえば、ＤＢ１を目標とするＩ／Ｏ要求に当てはまる段階３ポリシーは、ある特定の論理特性値対消費側グループマッピングに基づいて判断される３つの消費側グループに基づいてもよく、一方、ＤＢ２を目標とするＩ／Ｏ要求に当てはまる段階３ポリシーは、異なる論理特性値対消費側グループマッピングに基づいて判断される５つの消費側グループに基づいてもよい。
【００８２】
ある特定の段階において当てはまるポリシーは、どのＩ／Ｏ要求が前の段階を生き延びるかに依存してもよいため、選択ポリシーは任意に洗練され得る。たとえば、図５は、選択ポリシー５００の各段階の考えられ得る生き残りグループと、後の段階において記憶サーバにより適用されるポリシーとの間における関係を示す。
【００８３】
図５を参照して、段階１はカテゴリに基づく選択ポリシーを適用する。段階１によって生ずる考えられ得る生き残りグループは、（ａ）カテゴリ１に属するＩ／Ｏ要求、（ｂ）カテゴリ２に属するＩ／Ｏ要求、および（ｃ）カテゴリ１に属するＩ／Ｏ要求を含む。段階１が、カテゴリ１に属するＩ／Ｏ要求を生じさせる場合においては、記憶サーバはデータベース選択ポリシー１を段階２中に適用することになる。段階１が、カテゴリ２に属するＩ／Ｏ要求を生じさせる場合においては、記憶サーバはデータベース選択ポリシー２を段階２中において適用することになる。段階１が、カテゴリ３に属するＩ／Ｏ要求を生じさせる場合には、記憶サーバは消費側グループ選択ポリシー１を段階２中に適用することになる。
【００８４】
データベース選択ポリシー１の考えられ得る生き残りグループは、（ａ）ＤＢ１を目標とするカテゴリ１Ｉ／Ｏ要求、および（ｂ）ＤＢ２を目標とするカテゴリ１Ｉ／Ｏ要求を含む。ＤＢ１を目標とするカテゴリ１Ｉ／Ｏ要求が段階２を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー２を段階３中に適用することになる。ＤＢ２を目標とするカテゴリ１Ｉ／Ｏ要求が段階２を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー３を段階３中に適用することになる。
【００８５】
データベース選択ポリシー２の考えられ得る生き残りグループは、（ａ）ＤＢ１を目標とするカテゴリ２Ｉ／Ｏ要求、および（ｂ）ＤＢ２を目標とするカテゴリ２Ｉ／Ｏ要求を含む。ＤＢ１を目標とするカテゴリ２Ｉ／Ｏ要求が段階２を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー４を段階３中に適用することになる。ＤＢ２を目標とするカテゴリ２Ｉ／Ｏ要求が段階２を生き延びる場合においては、記憶サーバは消費側グループ選択ポリシー５を段階３中に適用することになる。
【００８６】
消費側グループ選択ポリシー１の考えられ得る生き残りグループは、（ａ）消費側グループ１（ＣＧ１）にマッピングするカテゴリ３Ｉ／Ｏ要求、（ｂ）消費側グループ２（ＣＧ２）にマッピングするカテゴリ３Ｉ／Ｏ要求、および（ｃ）カテゴリグループ３（ＣＧ３）にマッピングするカテゴリ３Ｉ／Ｏ要求を含む。ＣＧ１にマッピングするカテゴリ３Ｉ／Ｏ要求が段階２を生き延びる場合においては、記憶サーバはデータベース選択ポリシー３を段階３中に適用することになる。ＣＧ２にマッピングするカテゴリ３Ｉ／Ｏ要求が段階２を生き延びる場合においては、記憶サーバはデータベース選択ポリシー４を段階３中に適用することになる。ＣＧ３にマッピングするカテゴリ３Ｉ／Ｏ要求が段階２を生き延びる場合においては、記憶サーバはデータベース選択ポリシー５を段階３中に適用することになる。
【００８７】
図５は、後の段階で適用されるポリシーが、どのＩ／Ｏ要求が前の段階を生き延びるかに基づいてどのように異なり得るかの単なる一例である。選択ポリシーにおいて確立されるポリシー関係は任意に複雑であってよい。たとえば、ある結果の集合が与えられるとして、記憶サーバはポリシーの３段階のみを適用し、一方、他の結果はポリシーの５段階の適用を必要としてもよい。
【００８８】
データベース特化消費側グループ
図５に示されるように、各データベースはそれ自体の消費側グループ選択ポリシーを有してもよい。さらに、１つのデータベースに対する消費側グループ選択ポリシーは、他のデータベースによって用いられる論理特性値対消費側グループマッピングとは全体的に異なる属性対消費側グループマッピングに基づいてもよい。たとえば、図５においては、消費側グループ選択ポリシー２は表２に示されるハイブリッドポリシーであってもよく、一方、消費側グループ選択ポリシー３は、ＣＧ１：９０％、ＣＧ２：８％、ＣＧ３：１％、ＣＧ４：１％の比率に基づくポリシーである。
【００８９】
この例においては、消費側グループ選択ポリシーは、消費側グループの数およびポリシーの構造の両方に関して異なる。異なる消費側グループポリシーは、さらに、消費側グループがどのように定義されるかに関して異なってもよい。たとえば、あるＩ／Ｏ要求が優先順位ＤＳＳ、メンテナンス、またはＤＳＳに属するかどうかを判断するのに用いられる属性対消費側グループマッピングは、Ｉ／Ｏ要求がＣＧ１、ＣＧ２、ＣＧ３またはＣＧ４に属するかどうかを判断するのに用いられる属性対消費側グループマッピングと完全に異なっていてもよい。
【００９０】
１つの実施例に従うと、一旦消費側グループが作成されると、ポリシーが、セッションがどのように消費側グループにマッピングされるかを指定するために作成される。セッションは、消費側グループに対して、たとえばセッション属性に基づいてマッピングされ得る。これらのセッション属性は、たとえば、ユーザ名、データベースに接続するのにセッションが用いたサービス、クライアントマシン、クライアントプログラム名、クライアントユーザ名、などを含んでもよい。あるユーザが消費側グループを各アプリケーション毎に作成しており、各アプリケーションは専用のサービスを有する場合、ユーザはマッピングポリシーをサービス名に基づいて作成し得る。ユーザがある消費側グループをある特定のユーザの集合に専用としたい場合には、ユーザはマッピングポリシーをそれらのユーザ名に基づいて作成する。上で言及したように、ある消費側グループに明示的には割当てられないセッションはデフォルト消費側グループに置かれてもよい。
【００９１】
選択ポリシーを作成する
上で言及したように、選択ポリシーは、Ｉ／Ｏリソースを消費側グループ間でどのように割当てるかを指定するポリシーを含んでもよい。１つの実施例では、選択ポリシーは、あるパーセンテージまたはあるレベルからなる各消費側グループ毎のリソース割当ディレクティブを含む。１つの実施例では、ユーザは８つまでのレベルを指定してもよい。レベル２の消費側グループは、レベル１において割当てられなかったかまたはレベル１において消費側グループによって消費されなかったリソースを得る。同様に、レベル３の消費側グループは、何らかの割当がレベル１または２から残っている場合にのみリソースを割当てられる。同じポリシーがレベル４〜８に当てはまる。複数のレベルは、ある優先順位付け態様を与えるのみならず、どのようにしてすべての主なおよび残りのリソースが用いられることになるかを明示的に指定する態様を与える。ユーザは、パーセンテージ、優先順位、またはそれら２つの組合せを用いて、リソースを消費側グループにわたって割当てる選択ポリシーを構築し得る。
【００９２】
選択ポリシーを可能化および変更する
１つの実施例に従うと、ユーザがあるデータベースにおいてあるデータベース選択ポリシーを設定すると、その選択ポリシーのある記述が、そのデータベースに関してデータを格納するよう用いられる各記憶システムに対して自動的に送られる。ある環境においては、複数のサーバが同じデータベースに対するアクセスを共有する。そのような環境においては、ある特定のデータベースに対するアクセスを共有するクラスタにあるすべてのデータベースサーバは同じ選択ポリシーに設定される。新たな記憶システムがそのデータベースに追加される場合、または既存の記憶システムを再起動させる場合には、データベースの現在の選択ポリシーは記憶システムに自動的に送られる。選択ポリシーは、データベースサーバおよびセルの両方においてリソースを管理するために用いられる。
【００９３】
１つの実施例に従うと、選択ポリシーは動的に変更され得る。さまざまなタイプのイベントによって選択ポリシー変更がトリガされてもよい。たとえば、ある選択ポリシーは、１日の時間に基づいて変更することにより、異なる選択ポリシーが、日中においてよりも、夜間において効力があるようにしてもよい。他の例としては、ある選択ポリシー変動は週末中に生じてもよく、または、会計年度の終わりなどのような、１年のうちのある特定の時期に生じてもよい。
【００９４】
待機キュー
上で言及したように、遅延されるＩ／Ｏ要求は記憶システム１００内の待機キューに置かれる。これらの待機キューはさまざまな態様で実現されてもよい。１つの実施例では、遅延されるＩ／Ｏ要求はそれらの「選択グループ」に基づいてキューに入れられ、各選択グループはある別個のキューを有する。この文脈においては、ある選択グループは、効力があるポリシーによって同じと扱われるＩ／Ｏ要求のグループである。たとえば、効力がある唯一のポリシーは表２に示される消費側グループポリシーであると仮定する。このポリシーは３つの消費側グループ、つまり優先順位ＤＳＳ、メンテナンス、およびＤＳＳを確立する。ある選択ポリシーがこれらのポリシーのみを含む場合には、記憶システムは、１つが３つの消費側グループの各々に与えられる、３つの待機キューを有するのみであろう。優先順位ＤＳＳにマッピングする特性値を有するすべての遅延されるＩ／Ｏ要求は、（それらが目標とするデータベースなどのような）他の特性に関わりなく、優先順位ＤＳＳキューに格納されることになる。同様に、メンテナンスおよびＤＳＳ消費側グループにマッピングするすべての遅延されるＩ／Ｏ要求は、それらが有するかもしれない他の特性値に関わりなく、それらの消費側グループに対応する待機キューに入れられるであろう。
【００９５】
より複雑な選択ポリシーにおいては、消費側グループよりも有意に多い選択グループがあってもよい。たとえば、図３に示される選択ポリシー３００においては、カテゴリ、目標データベースおよび消費側グループは、すべて、どのようにＩ／Ｏ要求が取扱われるかに対してある影響を有する。したがって、各（カテゴリ、目標データベース、消費側グループ）組合せは、それ自体の待機キューを有してもよい別個の選択グループを表現する。具体的には、（カテゴリ１、ＤＢ１、消費側グループ１）は１つの待機キューを有するであろうし、（カテゴリ１、ＤＢ１、消費側グループ２）は別の待機キューを有するであろう。選択ポリシー３００は、３つのカテゴリ、５つのデータベースおよび３つの消費側グループを確立するため、選択グループ（およびしたがって待機キュー）の総数は３×５×３＝４５となるであろう。
【００９６】
段階に基づく選択グループの選択
上で言及したように、記憶サーバが、処理すべき遅延されたＩ／Ｏ要求を選択しているとき、記憶サーバは選択ポリシーのポリシーを段階的に適用する。各段階は、生き残る選択グループの数を低減する。たった１つの選択グループが生き残ると、記憶サーバは、その選択グループに対応する待機キューの先頭にあるＩ／Ｏ要求を選択する。たとえば、選択ポリシー３００を実現するある記憶システムが飽和されず、処理すべき遅延されたＩ／Ｏ要求を選択しなければならないと仮定する。さらに、唯一の空でない待機キューは、選択グループ：（カテゴリ２、ＤＢ１、消費側グループ１）、（カテゴリ２、ＤＢ２、消費側グループ２）、（カテゴリ２、ＤＢ２、消費側グループ３）、（カテゴリ３、ＤＢ２、消費側グループ１）、および（カテゴリ２、ＤＢ４、消費側グループ３）に対応すると仮定する。
【００９７】
これらの状況下では、カテゴリ２に関連付けられる選択グループのみが段階１を生き残り、なぜならば、カテゴリ２はカテゴリ３よりも高い優先順位を有し、カテゴリ１に関連づけられる空でない選択グループはないからである。したがって、段階１の後、生き残る選択グループは：（カテゴリ２、ＤＢ１、消費側グループ１）、（カテゴリ２、ＤＢ２、消費側グループ２）、（カテゴリ２、ＤＢ２、消費側グループ３）、および（カテゴリ２、ＤＢ４、消費側グループ３）であろう。
【００９８】
段階２中において、記憶サーバは、ＤＢ１またはＤＢ２のどちらがそのＩ／Ｏ割当を達成することにおいて最も遅れているかを判断するであろう。ＤＢ４は考慮には入れられず、なぜならば、ポリシーは、いずれの遅延されるＩ／ＯもＤＢ１、ＤＢ２またはＤＢ３を目標とはしない場合にのみＤＢ４を考慮する、と示しているからである。ＤＢ２がそのＩ／Ｏ割当を達成することにおいて最も遅れていると仮定して、段階２を生き延びる選択グループは、（カテゴリ２、ＤＢ２、消費側グループ２）および（カテゴリ２、ＤＢ２、消費側グループ３）であろう。
【００９９】
段階３中においては、記憶サーバは、消費側グループ２を選択するであろうと考えられ、なぜならば、ポリシーは、いずれの待機中のＩ／Ｏ要求も消費側グループ１および２に対応しない場合にのみ消費側グループ３を考慮する、と示しているからである。その結果、段階３の後、唯一残る選択グループは（カテゴリ２、ＤＢ２、消費側グループ２）である。したがって、記憶サーバは、選択グループ（カテゴリ２、ＤＢ２、消費側グループ２）に対応する待機キューの先頭にあるＩ／Ｏ要求を選択するであろう。
【０１００】
上に与えられる例においては、１つの空でない選択グループが残る前に、すべての３つの段階を適用しなければならなかった。しかしながら、どの選択グループが空でないかによって、段階のすべてよりも少ない数の段階を適用する必要があってもよい。たとえば、空でない選択グループは、（カテゴリ１、ＤＢ５、消費側グループ３）、（カテゴリ２、ＤＢ１、消費側グループ１）、（カテゴリ２、ＤＢ２、消費側グループ２）、（カテゴリ２、ＤＢ２、消費側グループ３）、（カテゴリ３、ＤＢ２、消費側グループ１）、および（カテゴリ２、ＤＢ４、消費側グループ３）を含む状況を考える。この状況においては、選択ポリシー３００の段階１の後、唯一生き残る選択グループは（カテゴリ１、ＤＢ５、消費側グループ３）であろうと考えられ、なぜならば、これは、待機中のＩ／Ｏ要求がカテゴリ１に関連付けられる唯一の空でない選択グループであるからである。その結果、段階１の後、記憶サーバは、（カテゴリ１、ＤＢ５、消費側グループ３）に関連付けられるキューの先頭にあるＩ／Ｏ要求を単に選択するであろう。
【０１０１】
論理待機キュー
記憶サーバが待ち状態のＩ／Ｏ要求を入れるキューは実際の別個のデータ構造である必要はない。具体的には、記憶サーバは、単に、（１）各待ち状態のＩ／Ｏ要求の論理特性、および（２）Ｉ／Ｏ要求が記憶システムによって受取られた時間を追跡してもよい。同じ論理特性を有する待ち状態のＩ／Ｏ要求は、同じ選択グループに属し、したがって、同じ論理キューに属するものとして取扱われるが、どのような別途のキュー構造もその選択グループに対しては用いられない。
【０１０２】
別々のキュー構造ではなく、論理待機キューを用いるある実施例では、Ｉ／Ｏ要求が受取られる時間を用いて各論理キューの順序を示してもよい。したがって、各選択グループ毎に、最も早い到着時間を有する待ち状態のＩ／Ｏ要求は、選択グループの論理キューの先頭にあるものとして取扱われる。代替的に、すべての待ち状態のＩ／Ｏ要求を単一の待機キューに格納してもよい。各選択グループ毎に、その単一の待機キューの先頭に最も近い待ち状態のＩ／Ｏ要求を、その選択グループに対する論理待機キューの先頭にあるとして取扱ってもよい。
【０１０３】
ハードウェア概要
ある実施例に従うと、ここに記載される技術は１つ以上の特殊用途計算装置によって実現される。それら特殊用途計算装置は、それらの技術を実行するようハードワイヤードであってもよく、またはそれらの技術を実行するよう永続的にプログラミングされる１つ以上のアプリケーション特化集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのようなデジタル電子装置を含んでもよく、またはファームウェア、メモリ、他のストレージもしくは組合せにおけるプログラム命令に従ってそれらの技術を実行するようプログラミングされる１つ以上の汎用ハードウェアプロセッサを含んでもよい。そのような特殊用途計算装置は、さらに、それらの技術を達成するようカスタムプログラミングを伴う、カスタムハードワイヤード論理、ＡＳＩＣまたはＦＰＧＡを組合わせてもよい。特殊用途計算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯型装置、ネットワーク化装置、またはそれらの技術を実現するようハードワイヤードおよび／またはプログラム論理を組込む任意の他の装置であってもよい。
【０１０４】
たとえば、図６は、この発明の実施例が実現されてもよいコンピュータシステム６００を例示するブロック図である。コンピュータシステム６００は、情報をやりとりするためのバス６０２または他の通信機構と、バス６０２に結合され、情報を処理するためのハードワイヤプロセッサ６０４とを含む。ハードワイヤプロセッサ６０４はたとえば汎用マイクロプロセッサであってもよい。
【０１０５】
コンピュータシステム６００は、バス６０２に結合され、プロセッサ６０４によって実行されるべき命令および情報を格納するための、ランダムアクセスメモリ（ＲＡＭ）または他のダイナミック記憶装置などの主メモリ６０６も含む。主メモリ６０６は、プロセッサ６０４によって実行されるべき命令の実行中に一時的変数または他の中間情報を格納するためにも使用されてよい。そのような命令は、プロセッサ６０４にとってアクセス可能な記憶媒体に格納されると、コンピュータシステム６００を、それらの命令に指定される演算を実行するようカスタマイズされる特殊用途マシンにする。
【０１０６】
コンピュータシステム６００は、さらに、バス６０２に結合され、プロセッサ６０４のために静的情報および命令を格納するためのリードオンリメモリ（ＲＯＭ）６０８または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置６１０が、情報および命令を格納するために設けられバス６０２に結合される。
【０１０７】
コンピュータシステム６００は、コンピュータユーザに情報を表示するための、陰極線管（ＣＲＴ）などのディスプレイ６１２にバス６０２を介して結合されてもよい。アルファベット数字および他のキーを含む入力装置６１４が、プロセッサ６０４に情報およびコマンド選択を通信するためにバス６０２に結合される。他のタイプのユーザ入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御６１６であり、プロセッサ６０４に方向情報およびコマンド選択を通信し、かつディスプレイ６１２上でカーソル移動を制御する。この入力装置は、典型的には、装置が平面における位置を特定することを可能にする、第１の軸（たとえばｘ）および第２の軸（たとえばｙ）の２つの軸において２つの自由度を有する。
【０１０８】
コンピュータシステム６００は、コンピュータシステムとの組合せでコンピュータシステム６００を特殊用途マシンにするかまたはプログラムする、カスタマイズされたハードワイヤード論理、１つ以上のＡＳＩＣもしくはＦＰＧＡ、ファームウェア、および／またはプログラム論理を用いて、ここに記載される技術を実現してもよい。ある実施例に従うと、ここに記載される技術は、プロセッサ６０４が主メモリ６０６に含まれる１つ以上の命令の１つ以上のシーケンスを実行すること応答して、コンピュータシステム６００により実行される。そのような命令は、記憶装置６１０などの別の記憶媒体から主メモリ６０６に読込まれてもよい。主メモリ６０６に含まれる命令のシーケンスの実行により、プロセッサ６０４は、ここに記載された処理ステップを行なう。代替的実施例では、ソフトウェア命令の代わりに、またはこれと組合わせて、ハードワイヤード回路系が用いられてもよい。
【０１０９】
ここで用いられる「記憶媒体」という用語は、マシンをある特定の態様で動作させるデータおよび／または命令を格納する任意の媒体のことを指す。そのような媒体は、不揮発性媒体および／または揮発性媒体を含み得る。不揮発性媒体は、たとえば、記憶装置６１０などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、主メモリ６０６などのダイナミックメモリを含む。記憶媒体の一般的な形態は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、ＣＤ−ＲＯＭ、任意の他の光学データ記憶媒体、孔のパターンを備える任意の物理的媒体、ＲＡＭ、ＰＲＯＭ、およびＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ，任意の他のメモリチップまたはカートリッジを含む。
【０１１０】
記憶媒体は、伝送媒体とは区別されるが、それとの関連で用いられてもよい。伝送媒体は、情報を記憶媒体間で転送することに加わる。たとえば、伝送媒体は、バス６０２を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線通信および赤外線データ通信の際生成されるものなど、音波または光波の形もとり得る。
【０１１１】
さまざまな形態の媒体が、１つ以上の命令の１つ以上のシーケンスをプロセッサ６０４に搬送し実行するのに関係し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスクまたはソリッドステートドライブ上に担持され得る。遠隔コンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線を介して命令を送信することができる。コンピュータシステム６００に局在するモデムは、電話線でデータを受取り、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器が、赤外線信号で搬送されるデータを受信することができ、適切な回路系が、データをバス６０２に与えることができる。バス６０２は、データを主メモリ６０６に搬送し、プロセッサ６０４は命令をそこから検索し実行する。主メモリ６０６によって受取られた命令は、任意で、プロセッサ６０４によって実行される前または後のいずれかに記憶装置６１０上に格納されてもよい。
【０１１２】
コンピュータシステム６００は、バス６０２に結合される通信インターフェイス６１８も含む。通信インターフェイス６１８は、ローカルネットワーク６２２に接続されるネットワークリンク６２０に結合する双方向のデータ通信を提供する。たとえば、通信インターフェイス６１８は、データ通信接続を対応するタイプの電話線に与えるよう、統合サービスデジタル網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデムまたはモデムであってもよい。別の例として、通信インターフェイス６１８は、データ通信接続を互換可能なローカルエリアネットワーク（ＬＡＮ）に与えるよう、ＬＡＮカードであってもよい。ワイヤレスリンクが実現されてもよい。任意のそのような実現化例において、通信インターフェイス６１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送信および受信する。
【０１１３】
ネットワークリンク６２０は、典型的には、１つ以上のネットワークを介してデータ通信を他のデータ装置に与える。たとえば、ネットワークリンク６２０は、ローカルネットワーク６２２を介してホストコンピュータ６２４またはインターネットサービスプロバイダ（ＩＳＰ）６２６によって操作されるデータ機器への接続を与えてもよい。ＩＳＰ６２６は、次いで、現在通常「インターネット」６２８と呼ばれているワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク６２２およびインターネット６２８はどちらも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を使用する。さまざまなネットワークを介する信号と、コンピュータシステム６００へおよびこれからデジタルデータを搬送する、ネットワークリンク６２０上および通信インターフェイス６１８を介する信号とは、伝送媒体の例示の形である。
【０１１４】
コンピュータシステム６００は、ネットワーク、ネットワークリンク６２０および通信インターフェイス６１８を介して、プログラムコードを含む、メッセージを送信しかつデータを受信することができる。インターネットの例では、サーバ６３０は、インターネット６２８、ＩＳＰ６２６、ローカルネットワーク６２２および通信インターフェイス６１８を介してアプリケーションプログラムのための要求されたコードを送信するかもしれない。
【０１１５】
受取られたコードは、受取られたときにプロセッサ６０４によって実行されてもよく、および／または後の実行のために記憶装置６１０もしくは他の不揮発性記憶部に格納されてもよい。
【０１１６】
前述の明細書において、この発明の実施例を、実現例ごとに異なってもよい数多くの具体的な詳細を参照して記載した。したがって、この発明が何であるか、および何が出願人によってこの発明であるよう意図されるかを唯一かつ排他的に示すものは、この出願から、具体的な形で出る、任意の後の訂正を含む請求項の組である。そのような請求項に含まれる文言に対してここに明示的に述べられるすべての定義は、請求項において用いられるそのような文言の意味を支配することになる。したがって、請求項に明示的に記載されない限定、要素、特性、特徴、利点および属性は、その請求項の範囲をいかようにも限定すべきではない。明細書および図面は、したがって、限定の意味ではなく例示的な意味にみなされるべきものである。
【図１】
0005484471.tif 000004
【図３】
0005484471.tif 000005
【図４】
0005484471.tif 000006
【図５】
0005484471.tif 000007
【図６】
0005484471.tif 000008
【図２】
0005484471.tif 000009