(57)【要約】  ストレージシステム内に入力／出力帯域を割り当てる開示のコンピュータ実装方法は、（１）所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、（２）上記アプリケーションから、上記ストレージシステム上で入力／出力操作を実行する要求を受信するステップと、（３）入力／出力操作の遂行に関連するレイテンシの量を特定するステップと、（４）入力／出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力／出力操作で消費される入力／出力帯域の量を計算するステップと、（５）アプリケーションに割り当てられた割り当て済みの入力／出力帯域の量から、入力／出力操作で消費された入力／出力帯域の量を差し引くステップと、（６）アプリケーションに割り当てられた残りの入力／出力帯域の量からの帯域を、アプリケーションによる将来の入力／出力要求に割り当てるステップとを含み得る。様々な別の方法、システム、及びコンピュータ可読媒体もまた開示される。
2019531559.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステム内に入力／出力帯域を割り当てるコンピュータ実装方法において、前記方法の少なくとも一部は、少なくとも１つのプロセッサを含むコンピュータ装置により実行され、前記方法は、
所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、
前記アプリケーションから、前記ストレージシステム上で入力／出力操作を実行する要求を受信するステップと、
前記入力／出力操作の遂行に関連するレイテンシの量を特定するステップと、
前記入力／出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力／出力操作で消費される入力／出力帯域の量を計算するステップと、
前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から、前記入力／出力操作で消費された前記入力／出力帯域の量を差し引くステップと、
前記アプリケーションに割り当てられた前記残りの入力／出力帯域の量からの帯域を、前記アプリケーションによる将来の入力／出力要求に割り当てるステップと、を含む、方法。
【請求項２】
前記入力／出力操作の遂行に関連する前記レイテンシの量を特定するステップは、前記入力／出力操作の完了にかかる時間の量を測定するステップを含む、請求項１に記載の方法。
【請求項３】
前記入力／出力操作の遂行に関連する前記レイテンシの量を特定するステップは、前記入力／出力操作が複数の一連の入力／出力操作を含むかどうかに少なくとも部分的に基づいて、前記入力／出力操作で生じるレイテンシの推定量を計算するステップを含む、請求項１に記載の方法。
【請求項４】
前記レイテンシの推定量を計算するステップは、前記入力／出力操作と類似した過去の入力／出力操作の観測に基づいて、前記レイテンシの推定量を計算するステップを含む、請求項３に記載の方法。
【請求項５】
前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から差し引かれる前記入力／出力操作で消費される前記入力／出力帯域の量は、前記入力／出力操作のサイズだけではなく、前記入力／出力操作で生じるレイテンシにも比例する、請求項１に記載の方法。
【請求項６】
前記アプリケーションから前記要求を受信するステップは、複数の入力／出力操作を実行する要求を受信するステップを含む、請求項１に記載の方法。
【請求項７】
前記アプリケーションから前記要求を受信するステップは、前記複数の入力／出力操作を単一の入力／出力操作として処理するステップを含む、請求項６に記載の方法。
【請求項８】
前記複数の入力／出力操作を単一の入力／出力操作として処理するステップは、
前記複数の入力／出力操作で消費された全入力／出力帯域量を計算するステップと、
前記複数の入力／出力操作で消費された前記全入力／出力帯域量を差し引くステップと、を含む、請求項７に記載の方法。
【請求項９】
前記アプリケーションからの前記要求は、
バックアップ操作と、
復元操作と、
復旧操作と、
複製操作と、の少なくとも１つを実行する要求を含む、請求項１に記載の方法。
【請求項１０】
前記割り当て済みの入力／出力帯域の量を前記アプリケーションに割り当てるステップは、前記ストレージシステムから入力／出力帯域を要求するアプリケーションの数と、入力／出力操作を実行するための前記ストレージシステムの容量の双方を基に、前記割り当て済みの入力／出力帯域の量を割り当てるステップを含む、請求項１に記載の方法。
【請求項１１】
前記アプリケーションに割り当てられた残りの前記入力／出力帯域の量からの帯域を前記アプリケーションによる将来の入力／出力要求に割り当てるステップは、前記アプリケーションに将来の入力／出力操作を実行するのに十分な入力／出力帯域の量が残っていないと判断したことを受けて、前記アプリケーションが前記ストレージシステムにおいて少なくとも１つの前記将来の入力／出力操作を実行することを防止するステップを含む、請求項１に記載の方法。
【請求項１２】
ストレージシステム内に入力／出力帯域を割り当てるシステムにおいて、
メモリに記憶され、所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てる割当モジュールと、
メモリに記憶され、前記アプリケーションから、前記ストレージシステム上で入力／出力操作を実行する要求を受信する受信モジュールと、
メモリに記憶され、前記入力／出力操作の遂行に関連するレイテンシの量を特定する特定モジュールと、
メモリに記憶され、前記入力／出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力／出力操作で消費される入力／出力帯域の量を計算する計算モジュールと、
メモリに記憶され、前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から、前記入力／出力操作で消費された前記入力／出力帯域の量を差し引く減算モジュールと、
前記割当モジュール、前記受信モジュール、前記特定モジュール、前記計算モジュール、及び、前記減算モジュールを実行するように構成された少なくとも１つの物理プロセッサと、を含む、システム。
【請求項１３】
前記割当モジュールは、前記アプリケーションに割り当てられた残りの前記入力／出力帯域の量からの帯域を、前記アプリケーションによる将来の入力／出力要求に割り当てる、請求項１２に記載のシステム。
【請求項１４】
前記特定モジュールは、前記入力／出力操作の完了にかかる時間量を測定することで、前記入力／出力操作の遂行に関連する前記レイテンシの量を特定する、請求項１２に記載のシステム。
【請求項１５】
前記特定モジュールは、前記入力／出力操作が複数の一連の入力／出力操作を含むかどうかに少なくとも部分的に基づいて、前記入力／出力操作で生じるレイテンシの推定量を計算することで、前記入力／出力操作の遂行に関連する前記レイテンシの量を特定する、請求項１２に記載のシステム。
【請求項１６】
前記特定モジュールは、前記入力／出力操作と類似した過去の入力／出力操作の観測に基づいて、前記レイテンシの推定量を計算することで、前記推定されたレイテンシ量を計算する、請求項１５に記載のシステム。
【請求項１７】
前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から差し引かれる前記入力／出力操作で消費される前記入力／出力帯域の量は、前記入力／出力操作のサイズだけではなく、前記入力／出力操作で生じるレイテンシにも比例する、請求項１２に記載のシステム。
【請求項１８】
前記受信モジュールは、複数の入力／出力操作を実行する要求を受信することで、前記アプリケーションから前記要求を受信する、請求項１２に記載のシステム。
【請求項１９】
前記アプリケーションからの前記要求は、
バックアップ操作と、
復元操作と、
復旧操作と、
複製操作と、の少なくとも１つを実行する要求を含む、請求項１２に記載のシステム。
【請求項２０】
１つ以上のコンピュータ可読命令を含む非一時的コンピュータ可読媒体であって、前記命令が、コンピュータ装置の少なくとも１つのプロセッサによって実行される時、前記コンピュータ装置に対して、
所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、
前記アプリケーションから、前記ストレージシステム上で入力／出力操作を実行する要求を受信するステップと、
前記入力／出力操作の遂行に関連するレイテンシの量を特定するステップと、
前記入力／出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力／出力操作で消費される入力／出力帯域の量を計算するステップと、
前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から、前記入力／出力操作で消費された前記入力／出力帯域の量を差し引くステップと、
前記アプリケーションに割り当てられた前記残りの入力／出力帯域の量からの帯域を、前記アプリケーションによる将来の入力／出力要求に割り当てるステップと、を実行させる、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルストレージシステムは、様々なコンピューティングシステム向けの統合サービスを提供する。例えば、企業は、基幹コンピューティングシステムのバックアップイメージを管理するために、ストレージシステムを稼働させることができる。他のストレージシステムには、データベース管理からコンテンツホスティングにわたる様々なオンラインアクティビティで使用されるデータベースをホストするものもある。より大規模なストレージシステムは、大抵の場合、システム容量、需要、及び／又は、該当するサービス水準合意に基づいて、種々のアプリケーション／エンティティ間でストレージシステム帯域を割り当てるために様々なサービス品質システムを使用して、こうしたアプリケーション／エンティティ用のデータをホスト、且つ／又は、管理することができる。
【０００２】
あいにく、これまでのサービス品質システムは、要求される操作のサイズだけを基に、ストレージシステム上で入力／出力操作を実行する「コスト」を評価することが多い。例えば、従来のサービス品質システムは、６４ＫＢの入力／出力操作が３２ＫＢの動作のサイズの２倍であることにより、大抵の場合、６４ＫＢの入力／出力操作は、３２ＫＢの動作として実行するのに２倍の「コスト」がかかると仮定する。しかし、実際の操作の影響は、その規模に比例して増減するわけではないため、従来のサービス品質システムでは、大量の処理帯域が無駄になる恐れが出る。それ故、本開示は、ストレージシステムにおいて入力／出力帯域を割り当てるための改善されたシステムと方法に対する必要性を認め、これを対象とする。
【発明の概要】
【０００３】
以下でより詳細に説明するように、入力／出力操作の規模のみではなく、このような入力／出力操作の実際の影響（例えば、生じるレイテンシ）に基づいて、ストレージシステム内で入力／出力帯域を割り当てる種々のシステムと方法について、述べる。一例において、このようなタスクを実行するためのコンピュータ実装方法は、（ｉ）所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、（ｉｉ）アプリケーションから、ストレージシステム上で入力／出力操作を実行する要求を受信するステップと、（ｉｉｉ）この入力／出力操作の遂行に関連するレイテンシの量を特定するステップと、（ｉｖ）入力／出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力／出力操作で消費される入力／出力帯域の量を計算するステップと、（ｖ）アプリケーションに割り当てられた割り当て済みの入力／出力帯域の量から、入力／出力操作で消費された入力／出力帯域の量を差し引くステップと、（ｖｉ）アプリケーションに割り当てられた残りの入力／出力帯域量からの帯域を、アプリケーションによる将来の入力／出力要求に割り当てるステップとを、含む。
【０００４】
一例では、入力／出力操作の遂行に関連するレイテンシ量を特定することには、入力／出力操作の完了にかかる時間量を測定することが、含まれ得る。付加的、又は、代替的に、入力／出力操作の遂行に関連するレイテンシ量を特定することには、入力／出力操作のサイズが一連の入力／出力操作からなる群を含むかどうかに少なくとも部分的に基づいて、入力／出力操作で生じるレイテンシの推定量を計算することが、含まれ得る。幾つかの実施例において、レイテンシの推定量の計算には、入力／出力操作と類似した過去の入力／出力操作の観測に基づいて、レイテンシの推定量を計算することが、含まれ得る。
【０００５】
幾つかの例では、アプリケーションに割り当てられた入力／出力帯域の割り当て済み量から引かれる入力／出力操作で消費される入力／出力帯域の量は、入力／出力操作のサイズだけではなく、入力／出力操作で生じるレイテンシにも比例し得る。
【０００６】
幾つかの実施例において、アプリケーションから要求を受信することには、複数の入力／出力操作を実行する要求を受信することが、含まれ得る。このような実施例において、アプリケーションから要求を受信することには、複数の入力／出力操作を単一の入力／出力操作として処理することが、含まれ得る。例えば、入力／出力操作を単一の入力／出力操作として処理することには、入力／出力操作が消費する入力／出力帯域の合計を計算すること、入力／出力操作が消費する入力／出力帯域の合計量を差し引くことが、含まれ得る。
【０００７】
開示のコンピュータ実装方法は、ストレージシステム上で様々な入力／出力動作を実行する要求を受信できる。幾つかの例において、アプリケーションからの要求には、（ｉ）バックアップ操作、（ｉｉ）復元操作、（ｉｉｉ）復旧操作、及び／又は、（ｉｖ）複製操作を実行するための要求が、含まれ得る。
【０００８】
幾つかの例において、割り当て済みの入力／出力帯域量をアプリケーションに割り当てることには、ストレージシステムから入力／出力帯域を要求するアプリケーションの数と、入力／出力操作を実行するためのストレージシステムの容量の双方を基に、割り当て済みの入力／出力帯域量を割り当てることが、含まれ得る。幾つかの実施例において、アプリケーションに割り当てられた残りの入力／出力帯域量からの帯域をアプリケーションによる将来の入力／出力要求に割り当てることには、このアプリケーションに将来の入力／出力操作を実行するのに十分な入力／出力帯域量が残っていないと判断したことを受けて、アプリケーションがストレージシステムにおいて少なくとも１つの将来の入力／出力操作を実行することを防止することが、含まれ得る。
【０００９】
幾つかの実施例において、上記方法を実装するシステムは、（ｉ）メモリに記憶され、所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てる割当モジュールと、（ｉｉ）メモリに記憶され、アプリケーションから、ストレージシステム上で入力／出力操作を実行する要求を受信する受信モジュールと、（ｉｉｉ）メモリに記憶され、上記入力／出力操作の遂行に関連するレイテンシの量を特定する特定モジュールと、（ｉｖ）メモリに記憶され、入力／出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力／出力操作で消費される入力／出力帯域の量を計算する計算モジュールと、（ｖ）メモリに記憶され、アプリケーションに割り当てられた割り当て済みの入力／出力帯域の量から、入力／出力操作で消費された入力／出力帯域の量を差し引く減算モジュールと、（ｖｉ）割当モジュール、受信モジュール、特定モジュール、計算モジュール、及び、減算モジュールを実行するように構成された少なくとも１つの物理プロセッサとを、含み得る。割当モジュールはまた、アプリケーションに割り当てられた残りの入力／出力帯域量からの帯域を、アプリケーションからの将来の入力／出力要求に割り当てることもできる。
【００１０】
幾つかの例では、上記方法は、非一時的コンピュータ可読媒体上でコンピュータ可読命令として符号化されてもよい。例えば、コンピュータ可読媒体は、１つ以上のコンピュータ実行可能命令を含み、この命令は、コンピュータ装置の少なくとも１つのプロセッサによって実行された際、このコンピュータ装置に対して、（ｉ）所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、（ｉｉ）アプリケーションから、ストレージシステム上で入力／出力操作を実行する要求を受信するステップと、（ｉｉｉ）この入力／出力操作の遂行に関連するレイテンシの量を特定するステップと、（ｉｖ）入力／出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力／出力操作で消費される入力／出力帯域の量を計算するステップと、（ｖ）アプリケーションに割り当てられた割り当て済みの入力／出力帯域の量から、入力／出力操作で消費された入力／出力帯域の量を差し引くステップと、（ｖｉ）アプリケーションに割り当てられた残りの入力／出力帯域量からの帯域を、アプリケーションによる将来の入力／出力要求に割り当てるステップとを、実行させる。
【００１１】
上記で述べた実施例のいずれかからの機能を、本明細書で説明する一般原理に従って互いに組み合わせて使用してもよい。これらの及び他の実施例、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【図面の簡単な説明】
【００１２】
添付の図面は、幾つかの例示的な実施例を例解し、かつ本明細書の一部である。以下の説明とともに、これらの図面は、本開示の種々の原理を実証及び説明する。
【図１】ストレージシステムに入力／出力帯域を割り当てるための例示的システムのブロック図である。
【図２】ストレージシステムに入力／出力帯域を割り当てるための別の例示的システムのブロック図である。
【図３】ストレージシステムに入力／出力帯域を割り当てるための例示的方法の流れ図である。
【図４】例示的な順次要求のブロック図である。
【図５】ストレージシステムに入力／出力帯域を割り当てるための例示的コンピューティングシステムのブロック図である。
【００１３】
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施例は、種々の修正及び代替的な形態が可能であるが、具体的な実施例が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施例、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
【発明を実施するための最良の形態】
【００１４】
本開示は、全般に、ストレージシステムに入力／出力帯域を割り当てるためのシステムと方法を対象とする。以下でより詳細に説明するように、操作サイズのみではなく、システムの影響にも基づいて入力／出力帯域をアプリケーションに割り当てることで、開示のシステムと方法は、ストレージシステムが利用できる実際の帯域を効率よく使用できる。例えば、８ＫＢの入力／出力操作では、４ｍｓのレイテンシがストレージシステムに発生し、２５６ＫＢの操作では、レイテンシが６ｍｓになり得る。２５６ＫＢの操作で送られるデータ量が３２倍であっても、レイテンシは、８ＫＢの操作の５０％しか発生しないこともある。それ故、こうしたアプリケーションから出された入力／出力要求のサイズのみに基づいて、アプリケーションに帯域を割り当てる従来のサービス品質システムは、ストレージシステムが利用できる実際の帯域をフルに活用していない可能性がある。代わりに、入力／出力操作の実際の影響（例えば、発生するレイテンシ）に基づいて帯域を割り当てることで、開示のシステムと方法は、こうしたシステムが利用できる処理帯域をより十分に利用できるようにすることで、ストレージシステムの機能を改善することができる。
【００１５】
これから、図１〜図２を参照しながら、ストレージシステムに入力／出力帯域を割り当てるための例示的なシステムについて、詳述する。対応するコンピュータ実装方法についての詳細な説明もまた、図３に関連して提供される。例示的な順次要求に関する詳細な説明は、図４と関連して提供し、入力／出力帯域を割り当てるための他の例示的システムの詳細な説明は、図５と関連して提供する。
【００１６】
図１は、ストレージシステムに入力／出力帯域を割り当てるための例示的システム１００のブロック図である。この図で例示されるように、システム１００は、１つ以上のタスクを実行するための１つ以上のモジュール１０２を含んでもよい。例えば、以下でより詳細に説明するように、システム１００は、割当モジュール１０４、受信モジュール１０６、特定モジュール１０８、計算モジュール１１０、並びに、減算モジュール１１２を含み得る。別個の要素として例解されるが、図１のモジュール１０２のうちの１つ以上は、単一のモジュール又はアプリケーションの一部を表し得る。
【００１７】
幾つか実施例では、図１のモジュール１０２の１つ以上は、コンピュータ装置で実行される際、コンピュータ装置に対して、１つ以上のタスクを実行させられる１つ以上のソフトウェアアプリケーション又はプログラムに相当し得る。例えば、以下でより詳細に説明するように、１つ以上のモジュール１０２は、図２で例示する装置（例えば、ストレージシステム２０６）等の１つ以上のコンピュータ装置上で実行するよう、記憶、構成されたモジュールに相当し得る。図１のモジュール１０２の１つ以上はまた、１つ以上のタスクを実施するように構成された１つ以上の専用コンピュータの全て、又は一部にも相当し得る。
【００１８】
図１で示されているように、例示的システム１００はまた、メモリ１４０など、１つ以上のメモリデバイスも含み得る。メモリ１４０は、データ及び／又はコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性の記憶装置や媒体を概して表す。一例では、メモリ１４０は、モジュール１０２の１つ以上を記憶、ロード、且つ／又は維持できる。メモリ１４０の例としては、限定されないが、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、光ディスクドライブ、キャッシュ、これら１つ以上の変形形態、若しくは組み合わせ、又は任意の他の好適なストレージメモリが挙げられる。
【００１９】
図１に示されているように、例示的なシステム１００はまた、物理プロセッサ１３０など、１つ以上の物理プロセッサも含み得る。物理プロセッサ１３０は、全般に、コンピュータ可読命令を解釈及び／又は実行することができる任意のタイプ又は形式のハードウェア実装処理装置に相当する。一例では、物理プロセッサ１３０は、メモリ１４０に記憶されているモジュール１０２の１つ以上にアクセス、且つ／又は、変更できる。付加的に又は代替的に、物理プロセッサ１３０は、ストレージシステムに入力／出力帯域を割り当てし易くする１つ以上のモジュール１０２を実行できる。物理プロセッサ１３０の例には、限定されないが、マイクロプロセッサ、マイクロコントローラ、中央処理装置（ＣＰＵ）、ソフトコアプロセッサを実装しているフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、これらのうちの１つ以上の一部、これらの１つ以上の変形形態、あるいは、組み合わせ、又は、任意の他の好適な物理プロセッサが挙げられる。
【００２０】
図１で示すように、システム１００は、１つ以上の記憶装置を含み得る。一般に、記憶装置１１６は、デジタル情報を記憶できる任意の種類、あるいは、形態のコンピューティングハードウェアや記憶媒体に相当する。記憶装置１１６の例には、限定されないが、ハードドライブディスク、ソリッドステートドライブ、フラッシュドライブ、これらの１つ以上の組み合わせ（例えば、アレイ）、又は、デジタル情報を記憶するための他の任意の適切な媒体が挙げられる。
【００２１】
図１の例示的なシステム１００は、様々な態様で実装され得る。例えば、例示的なシステム１００の全て、又はその一部は、図２の例示的なシステム２００の部分を表し得る。図２で見られるように、システム２００は、ストレージシステム２０６を含み得る。一例では、モジュール１０２の機能の全部、又は、その一部は、ストレージシステム２０６、及び／又は、他の適切な任意のコンピューティングシステムによって実行できる。以下でより詳細に説明するように、図１の１つ以上のモジュール１０２により、ストレージシステム２０６の少なくとも１つ以上のプロセッサで実行されると、ストレージシステム２０６は、アプリケーションによって実行される操作のサイズだけでなく、それらのアプリケーションがストレージシステムの機能に与える実際の影響を基に、帯域をアプリケーションに割り当てることができる。
【００２２】
全般に、ストレージシステム２０６は、入力／出力操作を実行しようとするアプリケーションに操作帯域を割り当てられる任意の種類、あるいは、形態のコンピュータ装置に相当する。例えば、ストレージシステム２０６は、エンドポイント装置に関するバックアップ情報と回復情報を格納するサーバのシステムを含み得る。こうした例では、ストレージシステム２０６で管理されるデータは、コンピュータ装置上のシステム復旧アプリケーションによって使用されることがある。他の例として、ストレージシステム２０６は、インターネットなどのネットワークを介してストレージシステム機能を提供するクラウドストレージソリューションの一部を含み、且つ／又は、その一部として機能できる。こうした例では、ストレージシステム２０６で管理されるデータは、オンラインストアや広告サービスなどのウェブベースのアプリケーション用のデータベースとして機能可能である。更に、記憶システム２０６は、記憶装置１１６などのデータを記憶するための１つ以上の記憶装置を含み得る。ストレージシステム２０６の他の例には、限定されないが、何らかのソフトウェアアプリケーションを実行し、且つ／又は、様々なストレージ、データベース、及び／又は、ウェブサービスを提供するように構成されたストレージサーバ、データベースサーバ、アプリケーションサーバ、及び／又は、ウェブサーバが、挙げられる。図２では、単一エンティティとして例示されるが、ストレージシステム２０６は、互いに連動して機能、且つ／又は、動作する複数のサーバを含む、且つ／又は、これに相当し得る。
【００２３】
全般に、アプリケーション２１０は、その意図された標準操作の一環として、ストレージシステム２０６等のストレージシステムを利用する任意の種類、あるいは、形態のソフトウェアに相当する。例えば、アプリケーション２１０は、ストレージシステム２０６で記憶されたシステムイメージを複数のエンドポイント装置に複製するシステムイメージ展開アプリケーションに相当し得る。付加的、又は、代替的に、アプリケーション２１０は、コンピュータ装置に格納されている情報をストレージシステム２０６へと定期的にバックアップするファイル整合性アプリケーションに相当し得る。こうした例では、アプリケーション２１０は、ストレージシステム２０６に格納されている情報を使用して、コンピュータ装置２０２用の復元、及び／又は、復旧操作を実行することもできる。また、アプリケーション２１０は、ストレージシステム２０６を通じて、データを格納するサーバ上で実行される被ホストアプリケーションに相当し得る。これらの例では、ストレージシステム２０６はサーバの一部として組み込まれていてもよい。
【００２４】
一般に、入力／出力操作２１４は、ストレージシステム２０６からデータを読み取るか、あるいは、データをストレージシステムに書き込む任意の操作に相当する。バックアップ操作などの一部のプロシージャは、様々な入力／出力操作から構成されている場合もある。例えば、バックアップ操作は、ストレージシステム２０６に数百のファイルを書き込むことを要求することがあり得る。以下でより詳細に説明するように、入力／出力操作に関するこうしたバッチ要求は、「順次要求」と称することもある。入力／出力操作は、更なる要求を処理するために処理時間を消費し、且つ／又は、ストレージシステムの機能を遅らせることもある。本明細書では、他の入力／出力操作を処理するためのストレージシステムの性能に対するこうした影響を、全般に、「レイテンシ」と称する。
【００２５】
多くの他の装置又はサブシステムは、図１のコンピューティングシステム１００及び／又は図２のコンピューティングシステム２００に接続され得る。一方、図１及び図２に示す構成要素や装置の全てが、本明細書において説明及び／又は例示される実施例を実践するために存在する必要があるわけではない。上記で述べた装置やサブシステムはまた、図２に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム１００及び２００はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書で開示される例示的な実施例の１つ以上は、コンピュータ可読媒体上に、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び／又はコンピュータ制御論理とも称される）としてコード化され得る。
【００２６】
「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定されないが、搬送波などの伝送タイプ媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光記憶媒体（例えば、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びＢＬＵ−ＲＡＹ（登録商標）ディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）などの非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【００２７】
図３は、ストレージシステムに入力／出力帯域を割り当てるための例示的コンピュータ実装方法３００の流れ図である。図３で示す工程は、図１のシステム１００、図２のシステム２００、及び／又は、これらの１つ以上の変形形態、若しくは組み合わせを含む任意の好適なコンピュータ実行可能コード及び／又はコンピューティングシステムによって実施され得る。一例では、図３に示されている工程のそれぞれは、複数の副工程を含む及び／又はそれらによって表される構造を有するアルゴリズムに相当し得るものであり、これらの例を以下に詳細に示す。
【００２８】
図３で図示されるように、本明細書記載のシステムの１つ以上は、ステップ３０２で、所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で動作するアプリケーションに割り当てられる。例えば、割当モジュール１０４は、図２のストレージシステム２０６の一部として、サービス水準合意に従って、ストレージシステム２０６上で入力／出力操作２１４を実行することを要求するアプリケーション２１０に割当済み帯域２０８を割り当てることができる。
【００２９】
本書では、「サービス水準合意」という語句は、全般に、ストレージシステムサービスプロバイダと個人や組織の顧客との間のサービスプロバイダーに代わって一定量のストレージシステム帯域を顧客に提供する確約を記述する形式化された任意の合意を称する。ストレージシステムプロバイダは、サービス品質システムを使用して、このプロバイダが確実にサービス水準合意を順守できるようにすることができる。例えば、ストレージシステムサービスプロバイダは、毎月の確保されたデータ転送量の他に、毎秒一定量の入出力スループットを顧客に保証することができる。サービス品質システムは、各サービス水準合意の規定が確実に満たされるよう、全ての顧客からの帯域要求をサービス水準合意と両立させることが可能である。例えば、月々のデータ転送上限をまだ超えていない顧客は、月々のデータ転送上限を超えた顧客よりも大きいか、あるいは、高い優先順位の帯域割り当てを受けられる。具体例を挙げると、本明細書記載のシステムと方法は、サービス水準合意の水準が低い顧客が実行するアプリケーションよりも、サービス水準合意水準の高い顧客が実行するアプリケーションに対して、「クレジット」をより多く割り当てることができる。
【００３０】
割当モジュール１０４は、入力／出力動作を実行するトレージシステムの容量と、入力／出力動作の実行を要求するアプリケーションの数とのバランスを取ることを試行できる。幾つかの実施例において、割当モジュール１０４は、ストレージシステム２０６からの入力／出力帯域を要求するアプリケーションの数、及び、入力／出力操作を実行するストレージシステム２０６の容量の双方に基づいて、割り当てられた帯域２０８を割り当てることで、割り当てられた帯域２０８をアプリケーション２１０に割り当てることができる。幾つかの例において、割当モジュール１０４は、ある量の処理時間を各アプリケーションに割り当てるだけで良い。具体例として、ストレージシステム２０６上で入力／出力操作を実行することを要求する２つのアプリケーションが絡むシステムでは、割当モジュール１０４は、毎秒５００ミリ秒の処理時間を各アプリケーションに割り当てることができる。幾つかの実施例において、割当モジュール１０４は、様々な要因に基づいて、より高い優先度か、あるいは、１ティックあたりの処理時間をより多く、特定アプリケーションに与えることができる。これらの因子には、アプリケーションの管理者が重要、又は高優先度として操作を指定すること、ストレージサービスの加入者がいわゆるサービス水準合意に従って、帯域増加の料金を支払うこと、あるいは、各アプリケーションに割り当てるべき処理時間を決定するのに適した他の任意のメトリック等が、含まれ得る。
【００３１】
以下でより詳細に説明するように、付加的、又は、代替的に、割当モジュール１０４は、ストレージシステム２０６上で動作する各アプリケーションに一定数の「クレジット」を割り当てることにより、アプリケーションに帯域を割り当てることができる。各クレジットは、一定量の帯域、一定量の許容発生レイテンシ、あるいは、入力／出力帯域割り当てを測定するのに適切な他の任意の測定基準に相当し得る。モジュール１０２の他の要素は、アプリケーションがストレージシステム２０６上で動作する場合は常に、アプリケーションに割り当てられた残高からクレジットを差し引くことができる。
【００３２】
本明細書で述べるシステムの１つ以上は、図３のステップ３０４において、ストレージシステム上で入力／出力操作を実行する要求をアプリケーションから受信できる。例えば、受信モジュール１０６は、図２のストレージシステム２０６の一部として、記憶装置１１６上で入力／出力操作２１４を実行する要求２１２をアプリケーション２１０から受信できる。
【００３３】
受信モジュール１０６は、アプリケーション２１０から様々な要求を受信できる。例えば、受信モジュール１０６は、単一の入力／出力操作を実行する要求を受信することができる。具体的には、アプリケーション２１０は、単一ファイルをストレージシステム２０６に書き込む要求を供給できる。あるいは、アプリケーション２１０は、単一ファイルをストレージシステム２０６から読み取る要求を供給できる。
【００３４】
幾つかの実施例において、受信モジュール１０６は、複数の入力／出力操作を実行する要求を受信することができる。こうした要求は、ストレージシステム２０６との間で複数のファイルの読み取り、且つ／又は、書き込みを求めることができる。例えば、要求は、バックアップ操作、復元操作、復旧操作、複製操作、及び／又は、複数の読み出し／書き込み操作から成る任意の他の操作を実行する要求で良い。以下でより詳細に説明するように、これらの順次要求を処理することは、各要求内の情報を受け入れ、その解析に関連する処理時間などの様々な要因により、各構成要素の入力／出力操作が個々の要求として処理される場合よりも、オーバーヘッド処理時間が少なくなり得る。
【００３５】
図３に戻ると、ステップ３０６で、本明細書記載のシステムの１つ以上は、入力／出力操作の遂行に関連するレイテンシ量を特定できる。例えば、特定モジュール１０８は、図２のストレージシステム２０６の一部として、入力／出力操作２１４の遂行に関連するレイテンシ２１８の量を特定できる。
【００３６】
特定モジュール１０８は、様々な方法で、入力／出力操作２１４の遂行に関連するレイテンシ量を特定できる。幾つかの実施例において、特定モジュール１０８は、入力／出力操作の完了にかかる実際の時間量を測定することで、入力／出力操作の遂行に関連するレイテンシ量を特定できる。例えば、特定モジュール１０８は、ストレージシステム２０６が入力／出力操作２１４を開始する際と、ストレージシステム２０６が入力／出力操作２１４を完了する際に測定することで、入力／出力操作２１４の遂行に関連するレイテンシ量を特定できる。次いで、特定モジュール１０８は、入力／出力操作２１４の遂行により生じる総レイテンシ量として、開始時間と停止時間との差を処理できる。
【００３７】
付加的、又は、代替的に、特定モジュール１０８は、入力／出力操作で生じる推定レイテンシ量を算出することで、入力／出力操作の遂行に関連するレイテンシ量を特定できる。例えば、特定モジュール１０８は、数学的処理を利用して、所与の入力／出力操作で生じるレイテンシ量を推定できる。幾つかの例において、上記数学的処理は、様々な入力／出力操作によって生じるレイテンシの過去の観測に基づいてもよい。具体的には、算出されたレイテンシから、任意の所与の入力／出力操作で生じる実際のレイテンシの精確な推定が確実にもたらされるよう、特定モジュール１０８は、種々の入力／出力操作で生じるレイテンシを更に観測することにより、数学的処理で使用される変数を更新できる。例えば、数学的処理で、８ＫＢの入力／出力操作が、４ｍｓのレイテンシをもたらすが、本明細書記載のシステムと方法により、８ＫＢの操作が５ｍｓのレイテンシを引き起こすことを観測すると仮定する場合、特定モジュール１０８は、観測された情報に基づいて、数学的処理で使用する変数を更新できる。具体例を挙げると、特定モジュール１０８は、操作のサイズにこの操作の完了にかかる時間を乗算し、これを操作の転送速度で除算することで、正規化された操作のレイテンシを計算することができる。付加的、又は、代替的に、特定モジュール１０８は、特定操作とサイズが同じ操作について算出された正規化後のレイテンシに基づいて、特性操作のレイテンシを推定できる。以下で詳細に説明するようにモジュール１０２の他の要素は、入力／出力操作２１４の遂行時に、アプリケーション２１０に割り当てられた帯域について、この割り当てられた帯域に対してどれだけコストをかけるかを決定する一環として、基準レイテンシ（つまり、所定の種類、及び／又は、サイズの入力／出力操作で計算された正規化レイテンシ）と合わせて、使用できる。
【００３８】
幾つかの実施例において、特定モジュール１０８は、入力／出力操作と類似した過去の入力／出力操作の観測に基づいて、レイテンシの推定量を計算することで、推定されたレイテンシ量を計算できる。例えば、特定モジュール１０８は、特定の記憶装置への２５６ＫＢの読み出し要求が、８ｍｓのレイテンシをもたらし、別の記憶装置への２５６ＫＢの読み取り要求が、７．５ｍｓのレイテンシをもたらすと判定できる。これに応じて、特定モジュール１０８は、第１記憶装置への次の２５６ＫＢの読み出し要求が、８ｍｓのレイテンシをもたらし、第２記憶装置への次の２５６ＫＢの読み取り要求が、７．５ｍｓのレイテンシをもたらすと推定できる。２つの例示的な入力／出力操作が、容量が同じデータ転送を要求しているにもかかわらず、ストレージシステム内で生じるレイテンシが異なることに留意されたい。
【００３９】
付加的、又は、代替的に、特定モジュール１０８は、入力／出力操作が、順次入出力動作を必要としているか、且つ／又は、これらから構成されているかに少なくとも部分的に基づいて、入力／出力操作で生じるレイテンシを計算することができる。順次入力／出力操作を必要とする、且つ／又は、この操作から構成された要求は、順次要求と称する場合もある。順次要求の実例は、図４で提供されている。図４で見られるように、要求２１２は、ストレージシステム２０６に様々なファイルをバックアップするバックアップ操作を実行する一環として、入力／出力操作２１４、４０６、４０８を実行するための要求を含み得る。要求２１２の一部である各入力／出力操作は、異なるファイルに適用することができる。図４の例において、これらの操作は、それぞれファイル識別子４１４、４１６、４１８に相当するファイルを対象とする。しかしながら、入力／出力操作２１４、４０６、４０８は、より大きな同じ要求（つまり、バックアップ操作）の一部として供給されたので、本明細書記載のシステム及び方法は、こうした操作を順次操作、あるいは、順次要求として扱うことができる。つまり、ストレージシステム２０６は、個々に供給される類似の３つの入力／出力操作よりも効率的に、しかも、システムへの影響を抑えて、入力／出力操作２１４、４０６、及び４０８を処理できる可能性がある。かくして、以下でより詳細に説明するように、本明細書記載のシステム及び方法は、非効率的な要求を送信するアプリケーションよりも効率的な方法で要求を送信するアプリケーションに割り当てられた帯域について、これらの要求の中身が、本来、同じである場合でも、少ない帯域に「コストをかける」ことができる。
【００４０】
幾つかの例において、受信モジュール１０６は、複数の入力／出力操作を単一の入力／出力操作として処理することで、要求をアプリケーションから受信できる。開示のシステムと方法に関する幾つかの実施例は、要求のサイズに基づいて、要求がストレージシステムにもたらす影響を推定できる。より大規模な要求、及び、順次要求は、略無作為に送られるより小規模な複数の要求よりも効率的に、ストレージシステムの容量を利用することができる。従って、受信モジュール１０６は、順次操作、あるいは、要求の一部として送られた入力／出力操作を、より大規模な単一の入力／出力操作として処理することができる。図４を再び参照して、具体例を挙げると、受信モジュール１０６は、要求２１２を送ったアプリケーションに入力／出力帯域を割り当てるために、入力／出力操作２１４、４０６、４０８をより大規模な単一の操作の一部として扱うことができる。
【００４１】
図４と関連して述べたように、バックアップ、復元、複製等の特定操作は、ストレージシステム２０６上で順次入力／出力操作を実行することができる。更に、操作で生じるレイテンシは、操作のサイズと直接比例しないことがあり、更に、順次操作では、個別、あるいは、無作為に要求された操作よりもレイテンシが少ない場合もある。それ故、本明細書記載のシステムと方法は、順次操作を要求したアプリケーションに帯域を割り当てるために、より大規模な単一操作として順次操作を処理することができる。具体例を挙げると、一連の順次操作は、８ＫＢごとに４つの入力／出力操作を実行する要求を含み得る。順次操作が要求するオーバーヘッド処理時間が少なく、更に、無作為に送られた同量の操作要求よりも少ないレイテンシをもたらすことにより、本明細書で記載のシステムと方法は、単一の３２ＫＢ入力／出力操作と同様に、８ＫＢごとに４つの順次操作の集合で生じるレイテンシを推定することができる。更に、本明細書で述べるシステムと方法は、本明細書の方法以外の任意の適切な方法で、入力／出力操作を組み合わせることができる。
【００４２】
幾つかの実施例において、特定モジュール１０８は、要求される入力／出力操作と類似した過去の入力／出力操作の観測に基づいて、レイテンシの推定量を計算できる。例えば、異なる物理記憶媒体を対象とするが、本来、同一である２つの入力／出力操作（例えば、同じストレージシステムを通じて、同じネットワークを介して、同じファイルを転送すること）により、異なる量のレイテンシが生じる場合もある。具体例を挙げると、２５６ＫＢファイルをハードドライブディスクに送る入力／出力操作では、まったく同じファイルをソリッドステートドライブに転送する入力／出力操作とは、発生するレイテンシが異なる場合がある。従って、特定モジュール１０８は、ハードドライブディスクを対象とする２５６ＫＢのファイル転送を、このハードドライブディスクを対象とする過去の２５６ＫＢ操作に少なくとも部分的に基づいて、推定可能であり、更に、ソリッドステートドライブを対象とする２５６ＫＢファイル転送を、このソリッドステートドライブを対象とする２５６ＫＢ操作に基づいて、推定できる。
【００４３】
図３のステップ３０８で、本明細書記載のシステムの１つ以上は、入力／出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力／出力操作で消費される入力／出力帯域の量を計算できる。例えば、計算モジュール１１０は、図２のストレージシステム２０６の一部として、入力／出力操作２１４の遂行に関連するレイテンシ２１８の量に少なくとも部分的に基づいて、入力／出力操作２１４で消費される入力／出力帯域の量を計算できる。
【００４４】
計算モジュール１１０は、種々の方法で、消費した入力／出力帯域を計算できる。幾つかの例において、計算モジュール１１０は、入力／出力操作２１４の遂行で生じたレイテンシを、消費した入力／出力帯域として使用するだけで良い。あるいは、計算モジュール１１０は、特定モジュール１０８が推定、且つ／又は、観測したレイテンシをクレジットへと変換できる。例えば、計算モジュール１１０は、特定の基準サイズの操作で生じたレイテンシに関するクレジットを計算できる。具体例を挙げると、計算モジュール１１０は、１クレジットと同等の８ＫＢの操作で生じるレイテンシを計数できる。基準操作の２倍のレイテンシをストレージシステム２０６にもたらす入力／出力操作は、アプリケーションに２クレジットの「コストがかかる」恐れがある。記載のクレジットシステムが、入力／出力操作のサイズではなく、入力／出力操作で生じるレイテンシに基づいてコストを計算することに留意されたい。とはいえ、上記のように、基準操作の何倍も大きい操作では、発生するレイテンシの増加が、比較的少ない。計算モジュールは、入力／出力操作により、分数クレジット（例えば、２．１クレジット）のコストがかかることを判定し、このコストを次に大きい整数へと四捨五入し（例えば、２．５クレジットを３クレジットに四捨五入する）、あるいは、他の適切な任意の数学処理を使用して、ストレージシステム２０６の任意の所与の入力／出力操作のクレジットコストを決定できる。
【００４５】
特定モジュール１０８が入力／出力操作２１４について正規化されたレイテンシを特定する実施例において、計算モジュール１１０は、この正規化されたレイテンシを過去に算出した基準レイテンシと併用して、入力／出力操作２１４の実行にかかるクレジットコストを決定できる。例えば、計算モジュール１１０は、入力／出力操作２１４の正規化されたレイテンシを基準レイテンシで除算して、入力／出力操作２１４のクレジットコストを決定できる。具体例を挙げると、特定モジュール１０８は、１クレジットにかかるコストとして、４ｍｓ＾２の基準レイテンシを過去に規定している場合がある。次に、特定モジュール１０８は、入力／出力操作２１４の正規化されたレイテンシが、６ｍｓ＾２であると特定できる。計算モジュール１１０は、６ｍｓ＾２を４ｍｓ＾２で除算して、入力／出力操作２１４が遂行するのに１．５クレジットのコストがかかることを決定できる。注意すべき点として、この例の計算では、基準レイテンシ、及び、正規化されたレイテンシの計算で使用される操作のサイズは関係なく、つまり、本明細書で述べるシステムと方法は、入力／出力帯域を割り当てるために、６ｍｓ＾２の正規化されたレイテンシをもたらす２５６ＫＢ操作と同じように、６ｍｓ＾２の正規化されたレイテンシをもたらす８ＫＢ操作を処理できる。
【００４６】
ステップ３１０で、本明細書記載のシステムの１つ以上は、アプリケーションに割り当てられた割り当て済みの入力／出力帯域量から、入力／出力操作で消費された入力／出力帯域量を差し引くことができる。例えば、減算モジュール１１２は、図２のストレージシステム２０６の一部として、割り当て済みの帯域２０８から、入力／出力操作２１４で消費された入力／出力帯域量を差し引くことができる。
【００４７】
減算モジュール１１２は、種々の方法で、消費した入力／出力帯域を減算できる。例えば、本明細書で述べるシステムと方法は、ストレージシステム２０６に対する操作を実行する各アプリケーションに割り当てられた帯域のデータベースを保守することができる。計算モジュール１１０と関連して述べたように、このデータベースは、「クレジット」の残高、あるいは、アプリケーションに割り当てられた帯域に関する他の表記を含み得る。例えば、減算モジュール１１２は、アプリケーション２１０に割り当てられたクレジット残高から消費したクレジットを減算してから、アプリケーション２１０に割り当てられた残りの帯域量でデータベースを更新するだけで良い。
【００４８】
幾つかの実施例において、特定モジュール１０８、及び／又は、計算モジュール１１０は、ストレージシステム２０６が要求を遂行する前に、特定の入力／出力操作で消費された帯域を推定できる。こうした実施例において、モジュール１０２の１つ以上の要素は、アプリケーション２１０に、要求された入力／出力操作を実行するのに十分なクレジットが残っていることを検証できる。以下でより詳細に説明するように、割当モジュール１０４は、アプリケーション２１０が入力／出力操作２１４を実行するのに割り当てられた残りの帯域が不十分であることに基づいて、ストレージシステム２０６が要求２１２を遂行することを防止できる。割当モジュール１０４により、アプリケーション２１０が入力／出力操作を実行することを防止する場合において、減算モジュール１１２は、中断された操作について、アプリケーション２１０からクレジットを差し引くことを防止できる。
【００４９】
モジュール１０２の他の要素については、減算モジュール１１２は、帯域をアプリケーション２１０へと割り当てるために、大規模な単一入力／出力操作として幾つかの入力／出力操作を処理できる。例えば、減算モジュール１１２は、入力／出力操作が消費した全入力／出力帯域量を計算してから、入力／出力操作で消費された全入力／出力帯域量を割り当てた帯域２０８から減算できる。
【００５０】
幾つかの実施例において、複数のアプリケーションは、ストレージシステム２０６で動作できる。図５を参照すると、アプリケーション２１０は、ストレージシステム２０６上で入力／出力操作を実行可能である。別のアプリケーションとして、アプリケーション５１０もまた、ストレージシステム２０６上で入力／出力操作を実行することができる。この例において、割当モジュール１０４は、割り当てられた帯域２０８をアプリケーション２１０に割り当て、割り当てられた帯域５０８をアプリケーション５１０に割り当てることができる。アプリケーション２１０は、ストレージシステム２０６上で入力／出力操作２１４を実行することができ、アプリケーション５１０は、ストレージシステム２０６上で順次操作５１４を実行可能である。以前に詳細に説明したように、モジュール１０２の１つ以上の要素は、入力／出力帯域使用量を決定するために、こうした順次操作をより大規模な単一動作として扱うことができる。特定モジュール１０８は、入力／出力操作２１４、及び、順次操作５１４に関連するレイテンシを特定可能であり、計算モジュール１１０は、各操作に関連する帯域使用量を計算することができる。次に、減算モジュール１１２は、割り当てられた帯域２０８から、入力／出力操作２１４に関連する帯域使用量を減算し、更に、割り当てられた帯域５０８から、順次操作５１４に関連する帯域利用量を減算できる。
【００５１】
図３のステップ３１２で、本明細書記載のシステムの１つ以上は、アプリケーションに割り当てられた残りの入力／出力帯域量からの帯域を、アプリケーションからの将来の入力／出力要求に割り当てることもできる。例えば、割当モジュール１０４は、図２のストレージシステム２０６の一部として、アプリケーションに割り当てられた残りの入力／出力帯域量からの帯域を、アプリケーション２１０からの将来の入力／出力要求に割り当てることもできる。つまり、図３のステップ３０２と合わせて述べたように、割当モジュール１０４がアプリケーション２１０をリフレッシュするか、あるいは、追加帯域をこのアプリケーションに割当てるまで、残りの入力／出力帯域量は、アプリケーション２１０が取るべき許容できる残りの動作に相当し得る。
【００５２】
幾つかの例では、要求２１２を遂行するためのアプリケーション２１０に残っている入力／出力帯域の割当が、不十分である場合がある。こうした例において、割当モジュール１０４は、要求された入力／出力操作を実行するためのアプリケーション２１０に残っている入力／出力帯域の割当が、不十分であると判定されたことを受けて、アプリケーション２１０が要求２１２において要求された少なくとも１つの入力／出力操作を実行することを防止することができる。例えば、ストレージシステム２０６への入力／出力操作を実行するための推定された帯域コストをカバーするのに十分なクレジットがアプリケーション２１０にない場合（計算モジュール１１０に関連して説明）、割当モジュール１０４は、アプリケーション２１０がその特定の入力／出力操作を実行すること防止できる。割当モジュール１０４、及び／又は、減算モジュール１１２は、アプリケーション２１０が入力／出力操作を阻止された場合、アプリケーション２１０からのクレジットの差し引きを止めることができる。
【００５３】
図１〜５と関連して以前に述べたように、ストレージシステムは、クレジットシステムを通じて、アプリケーションの帯域利用を追跡し、そのアプリケーションが要求する入力／出力操作の遂行により生じる実際の処理時間、及び／又は、レイテンシを基に、アプリケーションによるクレジット割り当てからクレジットを差し引くことができる。開示のシステムと方法では、操作のサイズではなく、実際のシステムへの影響に基づいて、アプリケーションに帯域を割り当てることにより、ストレージシステムは、利用できる処理帯域をより十分に利用可能であり、かくして、ストレージシステムが所与の時間に処理できる要求の数が増加する。
【００５４】
更に、本明細書で述べるシステムと方法は、帯域を種々のアプリケーションに割り当てるために、ストレージシステムが大規模な単一要求として、アプリケーションからのバルク要求、あるいは、順次要求を処理できるようにすることで、ストレージシステムの効率を一層良くすることができる。順次入力／出力操作は、個別に、且つ／又は、無作為に送られた操作要求に関連する処理オーバーヘッドの大部分を解消できるので、同量のデータを転送しても、ストレージシステムが更なる入力／出力操作を処理する能力に与える影響は少なくなる。やはり、操作サイズのみに基づくのではなく、実際のシステム影響にも基づくこうした帯域計算によって、ストレージシステムは、入力／出力操作を実行するために利用できる容量をより十分に活用することができる。
【００５５】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施例を記載するが、本明細書において説明及び／又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び／又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア（又はこれらの任意の組み合わせ）構成を使用して、個々に、及び／又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例として見なされるべきである。
【００５６】
幾つかの例において、図１の例示的なシステム１００の全て、あるいは、一部は、クラウドコンピューティング又はネットワークベース環境の一部に相当し得る。クラウドコンピューティング環境は、インターネットを介して、種々のサービスやアプリケーションを提供し得る。こうしたクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ、あるいは、他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【００５７】
種々の実施例において、図１の例示的なシステム１００の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるモジュールは、本明細書において説明される機能のうちの１つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成し得る。例えば、本明細書において説明されるモジュールのうちの１つ以上は、２つ以上のクライアント（例えば、顧客）が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）間でアプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有し得る。本明細書において説明されるモジュールの１つ以上はまた、ある顧客が別の顧客のデータ及び／又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び／又は構成情報を分割し得る。
【００５８】
種々の実施例によれば、図１の例示的なシステム１００の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び／又はデータは、仮想マシン内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ（例えば、ハイパーバイザ）によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。
【００５９】
幾つかの例では、図１の例示的なシステム１００の全て又は一部は、モバイルコンピューティング環境の一部を表し得る。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス（例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス）、これらのうちの１つ以上の変形形態、若しくは組み合わせ、又は任意の他の好適なモバイルコンピューティングデバイスを含む、広範なモバイルコンピューティングデバイスによって実装され得る。一部の例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間における１つのフォアグラウンドアプリケーションのみの提示、遠隔管理特性、タッチスクリーン特性、場所及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する（例えば、承認されたアプリケーションストアのみから得る）能力などを制限する、制限されたプラットフォームを含む、１つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【００６０】
本明細書において説明及び／又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び／又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び／又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの１つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
【００６１】
種々の実施例が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び／又は例解されているが、これらの例示的な実施例のうちの１つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体によらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施例はまた、あるタスクを実施するモジュールを使用して、実装され得る。これらのモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。幾つか実施例では、こうしたモジュールは、本明細書において開示される例示的な実施例の１つ以上を実施するように、コンピューティングシステムを構成し得る。
【００６２】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、網羅的であることを意図するものでも、開示されたいずれかの正確な形態に限定されることを意図するものでもない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施例は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【００６３】
別途記載されない限り、「〜に接続される（connected to）」及び「〜に連結される（coupled to）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、直接的及び間接的（即ち、他の要素又は構成要素を介した）接続の両方を許容するとして解釈されるものとする。加えて、「１つ（a）」又は「１つ（an）」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも１つ（at least one of）」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む（including）」及び「有する（having）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、「備える（comprising）」という語と同義的であり、かつ同じ意味を有する。
【図１】
2019531559.tif 000003
【図２】
2019531559.tif 000004
【図３】
2019531559.tif 000005
【図４】
2019531559.tif 000006
【図５】
2019531559.tif 000007
【手続補正書】
【提出日】平成31年4月14日(2019.4.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージシステム内に入力／出力帯域を割り当てるコンピュータ実装方法において、前記方法の少なくとも一部は、少なくとも１つのプロセッサを含むコンピュータ装置により実行され、前記方法は、
所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で入力／出力操作を実行するアプリケーションに割り当てるステップと、
前記アプリケーションから、前記ストレージシステム上で入力／出力操作を実行する要求を受信するステップと、
前記入力／出力操作の遂行に関連するレイテンシの量を特定するステップであって、前記レイテンシの量は、前記ストレージシステムが前記ストレージシステム上で入力／出力操作を実行する他の要求を遂行する能力にもたらす影響の重大度に相当するステップと、
前記入力／出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力／出力操作で消費される入力／出力帯域の量を計算するステップと、
前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から、前記入力／出力操作で消費された前記入力／出力帯域の量を差し引くステップと、
前記アプリケーションに割り当てられた前記残りの入力／出力帯域の量からの帯域を、前記アプリケーションによる将来の入力／出力要求に割り当てるステップと、を含む、方法。
【請求項２】
前記入力／出力操作の遂行に関連する前記レイテンシの量を特定するステップは、前記入力／出力操作の完了にかかる時間の量を測定するステップを含む、請求項１に記載の方法。
【請求項３】
前記入力／出力操作の遂行に関連する前記レイテンシの量を特定するステップは、前記入力／出力操作が複数の一連の入力／出力操作を含むかどうかに少なくとも部分的に基づいて、前記入力／出力操作で生じるレイテンシの推定量を計算するステップを含む、請求項１に記載の方法。
【請求項４】
前記レイテンシの推定量を計算するステップは、前記入力／出力操作と類似した過去の入力／出力操作の観測に基づいて、前記レイテンシの推定量を計算するステップを含む、請求項３に記載の方法。
【請求項５】
前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から差し引かれる前記入力／出力操作で消費される前記入力／出力帯域の量は、前記入力／出力操作のサイズだけではなく、前記入力／出力操作で生じるレイテンシにも比例する、請求項１に記載の方法。
【請求項６】
前記アプリケーションから前記要求を受信するステップは、複数の入力／出力操作を実行する要求を受信するステップを含む、請求項１に記載の方法。
【請求項７】
前記アプリケーションから前記要求を受信するステップは、前記複数の入力／出力操作を単一の入力／出力操作として処理するステップを含む、請求項６に記載の方法。
【請求項８】
前記複数の入力／出力操作を単一の入力／出力操作として処理するステップは、
前記複数の入力／出力操作で消費された全入力／出力帯域量を計算するステップと、
前記複数の入力／出力操作で消費された前記全入力／出力帯域量を差し引くステップと、を含む、請求項７に記載の方法。
【請求項９】
前記アプリケーションからの前記要求は、
バックアップ操作と、
復元操作と、
復旧操作と、
複製操作と、の少なくとも１つを実行する要求を含む、請求項１に記載の方法。
【請求項１０】
前記割り当て済みの入力／出力帯域の量を前記アプリケーションに割り当てるステップは、前記ストレージシステムから入力／出力帯域を要求するアプリケーションの数と、入力／出力操作を実行するための前記ストレージシステムの容量の双方を基に、前記割り当て済みの入力／出力帯域の量を割り当てるステップを含む、請求項１に記載の方法。
【請求項１１】
前記アプリケーションに割り当てられた残りの前記入力／出力帯域の量からの帯域を前記アプリケーションによる将来の入力／出力要求に割り当てるステップは、前記アプリケーションに前記将来の入力／出力操作を実行するのに十分な入力／出力帯域の量が残っていないと判断したことを受けて、前記アプリケーションが前記ストレージシステムにおいて少なくとも１つの将来の入力／出力操作を実行することを防止するステップを含む、請求項１に記載の方法。
【請求項１２】
ストレージシステム内に入力／出力帯域を割り当てるシステムであって、
メモリに記憶され、所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で入力／出力操作を実行するアプリケーションに割り当てる割当手段と、
メモリに記憶され、前記アプリケーションから、前記ストレージシステム上で入力／出力操作を実行する要求を受信する受信手段と、
メモリに記憶され、前記入力／出力操作の遂行に関連するレイテンシの量を特定する特定手段であって、前記レイテンシの量は、前記ストレージシステムが前記ストレージシステム上で入力／出力操作を実行する他の要求を遂行する能力にもたらす影響の重大度に相当する特定手段と、
メモリに記憶され、前記入力／出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力／出力操作で消費される入力／出力帯域の量を計算する計算手段と、
メモリに記憶され、前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から、前記入力／出力操作で消費された前記入力／出力帯域の量を差し引く差し引き手段と、
受信、特定、計算、及び差し引き用の手段を実行するように構成された少なくとも１つの物理プロセッサと、を含む、システム。
【請求項１３】
前記割当手段は、前記アプリケーションに割り当てられた残りの前記入力／出力帯域量からの帯域を、前記アプリケーションによる将来の入力／出力要求に割り当てる、請求項１２に記載のシステム。
【請求項１４】
前記特定手段は、前記入力／出力操作の完了にかかる時間量を測定することで、前記入力／出力操作の遂行に関連する前記レイテンシの量を特定する、請求項１２に記載のシステム。
【請求項１５】
１つ以上のコンピュータ可読命令を含む非一時的コンピュータ可読媒体であって、前記命令が、コンピュータ装置の少なくとも１つのプロセッサによって実行される時、前記コンピュータ装置に対して、
所定のサービス水準合意に従って、割り当てられた量の入力／出力帯域をストレージシステム上で入力／出力操作を実行するアプリケーションに割り当てるステップと、
前記アプリケーションから、前記ストレージシステム上で入力／出力操作を実行する要求を受信するステップと、
前記入力／出力操作の遂行に関連するレイテンシの量を特定するステップであって、前記レイテンシの量は、前記ストレージシステムが前記ストレージシステム上で入力／出力操作を実行する他の要求を遂行する能力にもたらす影響の重大度に相当するステップと、
前記入力／出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力／出力操作で消費される入力／出力帯域の量を計算するステップと、
前記アプリケーションに割り当てられた前記割り当て済みの入力／出力帯域の量から、前記入力／出力操作で消費された前記入力／出力帯域の量を差し引くステップと、
前記アプリケーションに割り当てられた前記残りの入力／出力帯域の量からの帯域を、前記アプリケーションによる将来の入力／出力要求に割り当てるステップと、を実行させる、非一時的コンピュータ可読媒体。
【国際調査報告】
2019531559.tif 000008
2019531559.tif 000009