JP2019531559A - ストレージシステム内に入力/出力帯域を割り当てるシステムと方法 - Google Patents

ストレージシステム内に入力/出力帯域を割り当てるシステムと方法 Download PDF

Info

Publication number
JP2019531559A
JP2019531559A JP2019520403A JP2019520403A JP2019531559A JP 2019531559 A JP2019531559 A JP 2019531559A JP 2019520403 A JP2019520403 A JP 2019520403A JP 2019520403 A JP2019520403 A JP 2019520403A JP 2019531559 A JP2019531559 A JP 2019531559A
Authority
JP
Japan
Prior art keywords
input
output
amount
application
bandwidth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019520403A
Other languages
English (en)
Other versions
JP6730522B2 (ja
Inventor
ポールザガード・スダカール
ワカレ・プラサナ
ペンドハーカー・ニランジャン
Original Assignee
ベリタス テクノロジーズ エルエルシー
ベリタス テクノロジーズ エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ベリタス テクノロジーズ エルエルシー, ベリタス テクノロジーズ エルエルシー filed Critical ベリタス テクノロジーズ エルエルシー
Publication of JP2019531559A publication Critical patent/JP2019531559A/ja
Application granted granted Critical
Publication of JP6730522B2 publication Critical patent/JP6730522B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ストレージシステム内に入力/出力帯域を割り当てる開示のコンピュータ実装方法は、(1)所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、(2)上記アプリケーションから、上記ストレージシステム上で入力/出力操作を実行する要求を受信するステップと、(3)入力/出力操作の遂行に関連するレイテンシの量を特定するステップと、(4)入力/出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力/出力操作で消費される入力/出力帯域の量を計算するステップと、(5)アプリケーションに割り当てられた割り当て済みの入力/出力帯域の量から、入力/出力操作で消費された入力/出力帯域の量を差し引くステップと、(6)アプリケーションに割り当てられた残りの入力/出力帯域の量からの帯域を、アプリケーションによる将来の入力/出力要求に割り当てるステップとを含み得る。様々な別の方法、システム、及びコンピュータ可読媒体もまた開示される。

Description

デジタルストレージシステムは、様々なコンピューティングシステム向けの統合サービスを提供する。例えば、企業は、基幹コンピューティングシステムのバックアップイメージを管理するために、ストレージシステムを稼働させることができる。他のストレージシステムには、データベース管理からコンテンツホスティングにわたる様々なオンラインアクティビティで使用されるデータベースをホストするものもある。より大規模なストレージシステムは、大抵の場合、システム容量、需要、及び/又は、該当するサービス水準合意に基づいて、種々のアプリケーション/エンティティ間でストレージシステム帯域を割り当てるために様々なサービス品質システムを使用して、こうしたアプリケーション/エンティティ用のデータをホスト、且つ/又は、管理することができる。
あいにく、これまでのサービス品質システムは、要求される操作のサイズだけを基に、ストレージシステム上で入力/出力操作を実行する「コスト」を評価することが多い。例えば、従来のサービス品質システムは、64KBの入力/出力操作が32KBの動作のサイズの2倍であることにより、大抵の場合、64KBの入力/出力操作は、32KBの動作として実行するのに2倍の「コスト」がかかると仮定する。しかし、実際の操作の影響は、その規模に比例して増減するわけではないため、従来のサービス品質システムでは、大量の処理帯域が無駄になる恐れが出る。それ故、本開示は、ストレージシステムにおいて入力/出力帯域を割り当てるための改善されたシステムと方法に対する必要性を認め、これを対象とする。
以下でより詳細に説明するように、入力/出力操作の規模のみではなく、このような入力/出力操作の実際の影響(例えば、生じるレイテンシ)に基づいて、ストレージシステム内で入力/出力帯域を割り当てる種々のシステムと方法について、述べる。一例において、このようなタスクを実行するためのコンピュータ実装方法は、(i)所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、(ii)アプリケーションから、ストレージシステム上で入力/出力操作を実行する要求を受信するステップと、(iii)この入力/出力操作の遂行に関連するレイテンシの量を特定するステップと、(iv)入力/出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力/出力操作で消費される入力/出力帯域の量を計算するステップと、(v)アプリケーションに割り当てられた割り当て済みの入力/出力帯域の量から、入力/出力操作で消費された入力/出力帯域の量を差し引くステップと、(vi)アプリケーションに割り当てられた残りの入力/出力帯域量からの帯域を、アプリケーションによる将来の入力/出力要求に割り当てるステップとを、含む。
一例では、入力/出力操作の遂行に関連するレイテンシ量を特定することには、入力/出力操作の完了にかかる時間量を測定することが、含まれ得る。付加的、又は、代替的に、入力/出力操作の遂行に関連するレイテンシ量を特定することには、入力/出力操作のサイズが一連の入力/出力操作からなる群を含むかどうかに少なくとも部分的に基づいて、入力/出力操作で生じるレイテンシの推定量を計算することが、含まれ得る。幾つかの実施例において、レイテンシの推定量の計算には、入力/出力操作と類似した過去の入力/出力操作の観測に基づいて、レイテンシの推定量を計算することが、含まれ得る。
幾つかの例では、アプリケーションに割り当てられた入力/出力帯域の割り当て済み量から引かれる入力/出力操作で消費される入力/出力帯域の量は、入力/出力操作のサイズだけではなく、入力/出力操作で生じるレイテンシにも比例し得る。
幾つかの実施例において、アプリケーションから要求を受信することには、複数の入力/出力操作を実行する要求を受信することが、含まれ得る。このような実施例において、アプリケーションから要求を受信することには、複数の入力/出力操作を単一の入力/出力操作として処理することが、含まれ得る。例えば、入力/出力操作を単一の入力/出力操作として処理することには、入力/出力操作が消費する入力/出力帯域の合計を計算すること、入力/出力操作が消費する入力/出力帯域の合計量を差し引くことが、含まれ得る。
開示のコンピュータ実装方法は、ストレージシステム上で様々な入力/出力動作を実行する要求を受信できる。幾つかの例において、アプリケーションからの要求には、(i)バックアップ操作、(ii)復元操作、(iii)復旧操作、及び/又は、(iv)複製操作を実行するための要求が、含まれ得る。
幾つかの例において、割り当て済みの入力/出力帯域量をアプリケーションに割り当てることには、ストレージシステムから入力/出力帯域を要求するアプリケーションの数と、入力/出力操作を実行するためのストレージシステムの容量の双方を基に、割り当て済みの入力/出力帯域量を割り当てることが、含まれ得る。幾つかの実施例において、アプリケーションに割り当てられた残りの入力/出力帯域量からの帯域をアプリケーションによる将来の入力/出力要求に割り当てることには、このアプリケーションに将来の入力/出力操作を実行するのに十分な入力/出力帯域量が残っていないと判断したことを受けて、アプリケーションがストレージシステムにおいて少なくとも1つの将来の入力/出力操作を実行することを防止することが、含まれ得る。
幾つかの実施例において、上記方法を実装するシステムは、(i)メモリに記憶され、所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てる割当モジュールと、(ii)メモリに記憶され、アプリケーションから、ストレージシステム上で入力/出力操作を実行する要求を受信する受信モジュールと、(iii)メモリに記憶され、上記入力/出力操作の遂行に関連するレイテンシの量を特定する特定モジュールと、(iv)メモリに記憶され、入力/出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力/出力操作で消費される入力/出力帯域の量を計算する計算モジュールと、(v)メモリに記憶され、アプリケーションに割り当てられた割り当て済みの入力/出力帯域の量から、入力/出力操作で消費された入力/出力帯域の量を差し引く減算モジュールと、(vi)割当モジュール、受信モジュール、特定モジュール、計算モジュール、及び、減算モジュールを実行するように構成された少なくとも1つの物理プロセッサとを、含み得る。割当モジュールはまた、アプリケーションに割り当てられた残りの入力/出力帯域量からの帯域を、アプリケーションからの将来の入力/出力要求に割り当てることもできる。
幾つかの例では、上記方法は、非一時的コンピュータ可読媒体上でコンピュータ可読命令として符号化されてもよい。例えば、コンピュータ可読媒体は、1つ以上のコンピュータ実行可能命令を含み、この命令は、コンピュータ装置の少なくとも1つのプロセッサによって実行された際、このコンピュータ装置に対して、(i)所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、(ii)アプリケーションから、ストレージシステム上で入力/出力操作を実行する要求を受信するステップと、(iii)この入力/出力操作の遂行に関連するレイテンシの量を特定するステップと、(iv)入力/出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力/出力操作で消費される入力/出力帯域の量を計算するステップと、(v)アプリケーションに割り当てられた割り当て済みの入力/出力帯域の量から、入力/出力操作で消費された入力/出力帯域の量を差し引くステップと、(vi)アプリケーションに割り当てられた残りの入力/出力帯域量からの帯域を、アプリケーションによる将来の入力/出力要求に割り当てるステップとを、実行させる。
上記で述べた実施例のいずれかからの機能を、本明細書で説明する一般原理に従って互いに組み合わせて使用してもよい。これらの及び他の実施例、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
添付の図面は、幾つかの例示的な実施例を例解し、かつ本明細書の一部である。以下の説明とともに、これらの図面は、本開示の種々の原理を実証及び説明する。
ストレージシステムに入力/出力帯域を割り当てるための例示的システムのブロック図である。 ストレージシステムに入力/出力帯域を割り当てるための別の例示的システムのブロック図である。 ストレージシステムに入力/出力帯域を割り当てるための例示的方法の流れ図である。 例示的な順次要求のブロック図である。 ストレージシステムに入力/出力帯域を割り当てるための例示的コンピューティングシステムのブロック図である。
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施例は、種々の修正及び代替的な形態が可能であるが、具体的な実施例が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施例、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
本開示は、全般に、ストレージシステムに入力/出力帯域を割り当てるためのシステムと方法を対象とする。以下でより詳細に説明するように、操作サイズのみではなく、システムの影響にも基づいて入力/出力帯域をアプリケーションに割り当てることで、開示のシステムと方法は、ストレージシステムが利用できる実際の帯域を効率よく使用できる。例えば、8KBの入力/出力操作では、4msのレイテンシがストレージシステムに発生し、256KBの操作では、レイテンシが6msになり得る。256KBの操作で送られるデータ量が32倍であっても、レイテンシは、8KBの操作の50%しか発生しないこともある。それ故、こうしたアプリケーションから出された入力/出力要求のサイズのみに基づいて、アプリケーションに帯域を割り当てる従来のサービス品質システムは、ストレージシステムが利用できる実際の帯域をフルに活用していない可能性がある。代わりに、入力/出力操作の実際の影響(例えば、発生するレイテンシ)に基づいて帯域を割り当てることで、開示のシステムと方法は、こうしたシステムが利用できる処理帯域をより十分に利用できるようにすることで、ストレージシステムの機能を改善することができる。
これから、図1〜図2を参照しながら、ストレージシステムに入力/出力帯域を割り当てるための例示的なシステムについて、詳述する。対応するコンピュータ実装方法についての詳細な説明もまた、図3に関連して提供される。例示的な順次要求に関する詳細な説明は、図4と関連して提供し、入力/出力帯域を割り当てるための他の例示的システムの詳細な説明は、図5と関連して提供する。
図1は、ストレージシステムに入力/出力帯域を割り当てるための例示的システム100のブロック図である。この図で例示されるように、システム100は、1つ以上のタスクを実行するための1つ以上のモジュール102を含んでもよい。例えば、以下でより詳細に説明するように、システム100は、割当モジュール104、受信モジュール106、特定モジュール108、計算モジュール110、並びに、減算モジュール112を含み得る。別個の要素として例解されるが、図1のモジュール102のうちの1つ以上は、単一のモジュール又はアプリケーションの一部を表し得る。
幾つか実施例では、図1のモジュール102の1つ以上は、コンピュータ装置で実行される際、コンピュータ装置に対して、1つ以上のタスクを実行させられる1つ以上のソフトウェアアプリケーション又はプログラムに相当し得る。例えば、以下でより詳細に説明するように、1つ以上のモジュール102は、図2で例示する装置(例えば、ストレージシステム206)等の1つ以上のコンピュータ装置上で実行するよう、記憶、構成されたモジュールに相当し得る。図1のモジュール102の1つ以上はまた、1つ以上のタスクを実施するように構成された1つ以上の専用コンピュータの全て、又は一部にも相当し得る。
図1で示されているように、例示的システム100はまた、メモリ140など、1つ以上のメモリデバイスも含み得る。メモリ140は、データ及び/又はコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性の記憶装置や媒体を概して表す。一例では、メモリ140は、モジュール102の1つ以上を記憶、ロード、且つ/又は維持できる。メモリ140の例としては、限定されないが、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、光ディスクドライブ、キャッシュ、これら1つ以上の変形形態、若しくは組み合わせ、又は任意の他の好適なストレージメモリが挙げられる。
図1に示されているように、例示的なシステム100はまた、物理プロセッサ130など、1つ以上の物理プロセッサも含み得る。物理プロセッサ130は、全般に、コンピュータ可読命令を解釈及び/又は実行することができる任意のタイプ又は形式のハードウェア実装処理装置に相当する。一例では、物理プロセッサ130は、メモリ140に記憶されているモジュール102の1つ以上にアクセス、且つ/又は、変更できる。付加的に又は代替的に、物理プロセッサ130は、ストレージシステムに入力/出力帯域を割り当てし易くする1つ以上のモジュール102を実行できる。物理プロセッサ130の例には、限定されないが、マイクロプロセッサ、マイクロコントローラ、中央処理装置(CPU)、ソフトコアプロセッサを実装しているフィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、これらのうちの1つ以上の一部、これらの1つ以上の変形形態、あるいは、組み合わせ、又は、任意の他の好適な物理プロセッサが挙げられる。
図1で示すように、システム100は、1つ以上の記憶装置を含み得る。一般に、記憶装置116は、デジタル情報を記憶できる任意の種類、あるいは、形態のコンピューティングハードウェアや記憶媒体に相当する。記憶装置116の例には、限定されないが、ハードドライブディスク、ソリッドステートドライブ、フラッシュドライブ、これらの1つ以上の組み合わせ(例えば、アレイ)、又は、デジタル情報を記憶するための他の任意の適切な媒体が挙げられる。
図1の例示的なシステム100は、様々な態様で実装され得る。例えば、例示的なシステム100の全て、又はその一部は、図2の例示的なシステム200の部分を表し得る。図2で見られるように、システム200は、ストレージシステム206を含み得る。一例では、モジュール102の機能の全部、又は、その一部は、ストレージシステム206、及び/又は、他の適切な任意のコンピューティングシステムによって実行できる。以下でより詳細に説明するように、図1の1つ以上のモジュール102により、ストレージシステム206の少なくとも1つ以上のプロセッサで実行されると、ストレージシステム206は、アプリケーションによって実行される操作のサイズだけでなく、それらのアプリケーションがストレージシステムの機能に与える実際の影響を基に、帯域をアプリケーションに割り当てることができる。
全般に、ストレージシステム206は、入力/出力操作を実行しようとするアプリケーションに操作帯域を割り当てられる任意の種類、あるいは、形態のコンピュータ装置に相当する。例えば、ストレージシステム206は、エンドポイント装置に関するバックアップ情報と回復情報を格納するサーバのシステムを含み得る。こうした例では、ストレージシステム206で管理されるデータは、コンピュータ装置上のシステム復旧アプリケーションによって使用されることがある。他の例として、ストレージシステム206は、インターネットなどのネットワークを介してストレージシステム機能を提供するクラウドストレージソリューションの一部を含み、且つ/又は、その一部として機能できる。こうした例では、ストレージシステム206で管理されるデータは、オンラインストアや広告サービスなどのウェブベースのアプリケーション用のデータベースとして機能可能である。更に、記憶システム206は、記憶装置116などのデータを記憶するための1つ以上の記憶装置を含み得る。ストレージシステム206の他の例には、限定されないが、何らかのソフトウェアアプリケーションを実行し、且つ/又は、様々なストレージ、データベース、及び/又は、ウェブサービスを提供するように構成されたストレージサーバ、データベースサーバ、アプリケーションサーバ、及び/又は、ウェブサーバが、挙げられる。図2では、単一エンティティとして例示されるが、ストレージシステム206は、互いに連動して機能、且つ/又は、動作する複数のサーバを含む、且つ/又は、これに相当し得る。
全般に、アプリケーション210は、その意図された標準操作の一環として、ストレージシステム206等のストレージシステムを利用する任意の種類、あるいは、形態のソフトウェアに相当する。例えば、アプリケーション210は、ストレージシステム206で記憶されたシステムイメージを複数のエンドポイント装置に複製するシステムイメージ展開アプリケーションに相当し得る。付加的、又は、代替的に、アプリケーション210は、コンピュータ装置に格納されている情報をストレージシステム206へと定期的にバックアップするファイル整合性アプリケーションに相当し得る。こうした例では、アプリケーション210は、ストレージシステム206に格納されている情報を使用して、コンピュータ装置202用の復元、及び/又は、復旧操作を実行することもできる。また、アプリケーション210は、ストレージシステム206を通じて、データを格納するサーバ上で実行される被ホストアプリケーションに相当し得る。これらの例では、ストレージシステム206はサーバの一部として組み込まれていてもよい。
一般に、入力/出力操作214は、ストレージシステム206からデータを読み取るか、あるいは、データをストレージシステムに書き込む任意の操作に相当する。バックアップ操作などの一部のプロシージャは、様々な入力/出力操作から構成されている場合もある。例えば、バックアップ操作は、ストレージシステム206に数百のファイルを書き込むことを要求することがあり得る。以下でより詳細に説明するように、入力/出力操作に関するこうしたバッチ要求は、「順次要求」と称することもある。入力/出力操作は、更なる要求を処理するために処理時間を消費し、且つ/又は、ストレージシステムの機能を遅らせることもある。本明細書では、他の入力/出力操作を処理するためのストレージシステムの性能に対するこうした影響を、全般に、「レイテンシ」と称する。
多くの他の装置又はサブシステムは、図1のコンピューティングシステム100及び/又は図2のコンピューティングシステム200に接続され得る。一方、図1及び図2に示す構成要素や装置の全てが、本明細書において説明及び/又は例示される実施例を実践するために存在する必要があるわけではない。上記で述べた装置やサブシステムはまた、図2に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム100及び200はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書で開示される例示的な実施例の1つ以上は、コンピュータ可読媒体上に、コンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び/又はコンピュータ制御論理とも称される)としてコード化され得る。
「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定されないが、搬送波などの伝送タイプ媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク)、光記憶媒体(例えば、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及びBLU−RAY(登録商標)ディスク)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュ媒体)などの非一時的タイプ媒体、並びに他の分散システムが挙げられる。
図3は、ストレージシステムに入力/出力帯域を割り当てるための例示的コンピュータ実装方法300の流れ図である。図3で示す工程は、図1のシステム100、図2のシステム200、及び/又は、これらの1つ以上の変形形態、若しくは組み合わせを含む任意の好適なコンピュータ実行可能コード及び/又はコンピューティングシステムによって実施され得る。一例では、図3に示されている工程のそれぞれは、複数の副工程を含む及び/又はそれらによって表される構造を有するアルゴリズムに相当し得るものであり、これらの例を以下に詳細に示す。
図3で図示されるように、本明細書記載のシステムの1つ以上は、ステップ302で、所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てられる。例えば、割当モジュール104は、図2のストレージシステム206の一部として、サービス水準合意に従って、ストレージシステム206上で入力/出力操作214を実行することを要求するアプリケーション210に割当済み帯域208を割り当てることができる。
本書では、「サービス水準合意」という語句は、全般に、ストレージシステムサービスプロバイダと個人や組織の顧客との間のサービスプロバイダーに代わって一定量のストレージシステム帯域を顧客に提供する確約を記述する形式化された任意の合意を称する。ストレージシステムプロバイダは、サービス品質システムを使用して、このプロバイダが確実にサービス水準合意を順守できるようにすることができる。例えば、ストレージシステムサービスプロバイダは、毎月の確保されたデータ転送量の他に、毎秒一定量の入出力スループットを顧客に保証することができる。サービス品質システムは、各サービス水準合意の規定が確実に満たされるよう、全ての顧客からの帯域要求をサービス水準合意と両立させることが可能である。例えば、月々のデータ転送上限をまだ超えていない顧客は、月々のデータ転送上限を超えた顧客よりも大きいか、あるいは、高い優先順位の帯域割り当てを受けられる。具体例を挙げると、本明細書記載のシステムと方法は、サービス水準合意の水準が低い顧客が実行するアプリケーションよりも、サービス水準合意水準の高い顧客が実行するアプリケーションに対して、「クレジット」をより多く割り当てることができる。
割当モジュール104は、入力/出力動作を実行するトレージシステムの容量と、入力/出力動作の実行を要求するアプリケーションの数とのバランスを取ることを試行できる。幾つかの実施例において、割当モジュール104は、ストレージシステム206からの入力/出力帯域を要求するアプリケーションの数、及び、入力/出力操作を実行するストレージシステム206の容量の双方に基づいて、割り当てられた帯域208を割り当てることで、割り当てられた帯域208をアプリケーション210に割り当てることができる。幾つかの例において、割当モジュール104は、ある量の処理時間を各アプリケーションに割り当てるだけで良い。具体例として、ストレージシステム206上で入力/出力操作を実行することを要求する2つのアプリケーションが絡むシステムでは、割当モジュール104は、毎秒500ミリ秒の処理時間を各アプリケーションに割り当てることができる。幾つかの実施例において、割当モジュール104は、様々な要因に基づいて、より高い優先度か、あるいは、1ティックあたりの処理時間をより多く、特定アプリケーションに与えることができる。これらの因子には、アプリケーションの管理者が重要、又は高優先度として操作を指定すること、ストレージサービスの加入者がいわゆるサービス水準合意に従って、帯域増加の料金を支払うこと、あるいは、各アプリケーションに割り当てるべき処理時間を決定するのに適した他の任意のメトリック等が、含まれ得る。
以下でより詳細に説明するように、付加的、又は、代替的に、割当モジュール104は、ストレージシステム206上で動作する各アプリケーションに一定数の「クレジット」を割り当てることにより、アプリケーションに帯域を割り当てることができる。各クレジットは、一定量の帯域、一定量の許容発生レイテンシ、あるいは、入力/出力帯域割り当てを測定するのに適切な他の任意の測定基準に相当し得る。モジュール102の他の要素は、アプリケーションがストレージシステム206上で動作する場合は常に、アプリケーションに割り当てられた残高からクレジットを差し引くことができる。
本明細書で述べるシステムの1つ以上は、図3のステップ304において、ストレージシステム上で入力/出力操作を実行する要求をアプリケーションから受信できる。例えば、受信モジュール106は、図2のストレージシステム206の一部として、記憶装置116上で入力/出力操作214を実行する要求212をアプリケーション210から受信できる。
受信モジュール106は、アプリケーション210から様々な要求を受信できる。例えば、受信モジュール106は、単一の入力/出力操作を実行する要求を受信することができる。具体的には、アプリケーション210は、単一ファイルをストレージシステム206に書き込む要求を供給できる。あるいは、アプリケーション210は、単一ファイルをストレージシステム206から読み取る要求を供給できる。
幾つかの実施例において、受信モジュール106は、複数の入力/出力操作を実行する要求を受信することができる。こうした要求は、ストレージシステム206との間で複数のファイルの読み取り、且つ/又は、書き込みを求めることができる。例えば、要求は、バックアップ操作、復元操作、復旧操作、複製操作、及び/又は、複数の読み出し/書き込み操作から成る任意の他の操作を実行する要求で良い。以下でより詳細に説明するように、これらの順次要求を処理することは、各要求内の情報を受け入れ、その解析に関連する処理時間などの様々な要因により、各構成要素の入力/出力操作が個々の要求として処理される場合よりも、オーバーヘッド処理時間が少なくなり得る。
図3に戻ると、ステップ306で、本明細書記載のシステムの1つ以上は、入力/出力操作の遂行に関連するレイテンシ量を特定できる。例えば、特定モジュール108は、図2のストレージシステム206の一部として、入力/出力操作214の遂行に関連するレイテンシ218の量を特定できる。
特定モジュール108は、様々な方法で、入力/出力操作214の遂行に関連するレイテンシ量を特定できる。幾つかの実施例において、特定モジュール108は、入力/出力操作の完了にかかる実際の時間量を測定することで、入力/出力操作の遂行に関連するレイテンシ量を特定できる。例えば、特定モジュール108は、ストレージシステム206が入力/出力操作214を開始する際と、ストレージシステム206が入力/出力操作214を完了する際に測定することで、入力/出力操作214の遂行に関連するレイテンシ量を特定できる。次いで、特定モジュール108は、入力/出力操作214の遂行により生じる総レイテンシ量として、開始時間と停止時間との差を処理できる。
付加的、又は、代替的に、特定モジュール108は、入力/出力操作で生じる推定レイテンシ量を算出することで、入力/出力操作の遂行に関連するレイテンシ量を特定できる。例えば、特定モジュール108は、数学的処理を利用して、所与の入力/出力操作で生じるレイテンシ量を推定できる。幾つかの例において、上記数学的処理は、様々な入力/出力操作によって生じるレイテンシの過去の観測に基づいてもよい。具体的には、算出されたレイテンシから、任意の所与の入力/出力操作で生じる実際のレイテンシの精確な推定が確実にもたらされるよう、特定モジュール108は、種々の入力/出力操作で生じるレイテンシを更に観測することにより、数学的処理で使用される変数を更新できる。例えば、数学的処理で、8KBの入力/出力操作が、4msのレイテンシをもたらすが、本明細書記載のシステムと方法により、8KBの操作が5msのレイテンシを引き起こすことを観測すると仮定する場合、特定モジュール108は、観測された情報に基づいて、数学的処理で使用する変数を更新できる。具体例を挙げると、特定モジュール108は、操作のサイズにこの操作の完了にかかる時間を乗算し、これを操作の転送速度で除算することで、正規化された操作のレイテンシを計算することができる。付加的、又は、代替的に、特定モジュール108は、特定操作とサイズが同じ操作について算出された正規化後のレイテンシに基づいて、特性操作のレイテンシを推定できる。以下で詳細に説明するようにモジュール102の他の要素は、入力/出力操作214の遂行時に、アプリケーション210に割り当てられた帯域について、この割り当てられた帯域に対してどれだけコストをかけるかを決定する一環として、基準レイテンシ(つまり、所定の種類、及び/又は、サイズの入力/出力操作で計算された正規化レイテンシ)と合わせて、使用できる。
幾つかの実施例において、特定モジュール108は、入力/出力操作と類似した過去の入力/出力操作の観測に基づいて、レイテンシの推定量を計算することで、推定されたレイテンシ量を計算できる。例えば、特定モジュール108は、特定の記憶装置への256KBの読み出し要求が、8msのレイテンシをもたらし、別の記憶装置への256KBの読み取り要求が、7.5msのレイテンシをもたらすと判定できる。これに応じて、特定モジュール108は、第1記憶装置への次の256KBの読み出し要求が、8msのレイテンシをもたらし、第2記憶装置への次の256KBの読み取り要求が、7.5msのレイテンシをもたらすと推定できる。2つの例示的な入力/出力操作が、容量が同じデータ転送を要求しているにもかかわらず、ストレージシステム内で生じるレイテンシが異なることに留意されたい。
付加的、又は、代替的に、特定モジュール108は、入力/出力操作が、順次入出力動作を必要としているか、且つ/又は、これらから構成されているかに少なくとも部分的に基づいて、入力/出力操作で生じるレイテンシを計算することができる。順次入力/出力操作を必要とする、且つ/又は、この操作から構成された要求は、順次要求と称する場合もある。順次要求の実例は、図4で提供されている。図4で見られるように、要求212は、ストレージシステム206に様々なファイルをバックアップするバックアップ操作を実行する一環として、入力/出力操作214、406、408を実行するための要求を含み得る。要求212の一部である各入力/出力操作は、異なるファイルに適用することができる。図4の例において、これらの操作は、それぞれファイル識別子414、416、418に相当するファイルを対象とする。しかしながら、入力/出力操作214、406、408は、より大きな同じ要求(つまり、バックアップ操作)の一部として供給されたので、本明細書記載のシステム及び方法は、こうした操作を順次操作、あるいは、順次要求として扱うことができる。つまり、ストレージシステム206は、個々に供給される類似の3つの入力/出力操作よりも効率的に、しかも、システムへの影響を抑えて、入力/出力操作214、406、及び408を処理できる可能性がある。かくして、以下でより詳細に説明するように、本明細書記載のシステム及び方法は、非効率的な要求を送信するアプリケーションよりも効率的な方法で要求を送信するアプリケーションに割り当てられた帯域について、これらの要求の中身が、本来、同じである場合でも、少ない帯域に「コストをかける」ことができる。
幾つかの例において、受信モジュール106は、複数の入力/出力操作を単一の入力/出力操作として処理することで、要求をアプリケーションから受信できる。開示のシステムと方法に関する幾つかの実施例は、要求のサイズに基づいて、要求がストレージシステムにもたらす影響を推定できる。より大規模な要求、及び、順次要求は、略無作為に送られるより小規模な複数の要求よりも効率的に、ストレージシステムの容量を利用することができる。従って、受信モジュール106は、順次操作、あるいは、要求の一部として送られた入力/出力操作を、より大規模な単一の入力/出力操作として処理することができる。図4を再び参照して、具体例を挙げると、受信モジュール106は、要求212を送ったアプリケーションに入力/出力帯域を割り当てるために、入力/出力操作214、406、408をより大規模な単一の操作の一部として扱うことができる。
図4と関連して述べたように、バックアップ、復元、複製等の特定操作は、ストレージシステム206上で順次入力/出力操作を実行することができる。更に、操作で生じるレイテンシは、操作のサイズと直接比例しないことがあり、更に、順次操作では、個別、あるいは、無作為に要求された操作よりもレイテンシが少ない場合もある。それ故、本明細書記載のシステムと方法は、順次操作を要求したアプリケーションに帯域を割り当てるために、より大規模な単一操作として順次操作を処理することができる。具体例を挙げると、一連の順次操作は、8KBごとに4つの入力/出力操作を実行する要求を含み得る。順次操作が要求するオーバーヘッド処理時間が少なく、更に、無作為に送られた同量の操作要求よりも少ないレイテンシをもたらすことにより、本明細書で記載のシステムと方法は、単一の32KB入力/出力操作と同様に、8KBごとに4つの順次操作の集合で生じるレイテンシを推定することができる。更に、本明細書で述べるシステムと方法は、本明細書の方法以外の任意の適切な方法で、入力/出力操作を組み合わせることができる。
幾つかの実施例において、特定モジュール108は、要求される入力/出力操作と類似した過去の入力/出力操作の観測に基づいて、レイテンシの推定量を計算できる。例えば、異なる物理記憶媒体を対象とするが、本来、同一である2つの入力/出力操作(例えば、同じストレージシステムを通じて、同じネットワークを介して、同じファイルを転送すること)により、異なる量のレイテンシが生じる場合もある。具体例を挙げると、256KBファイルをハードドライブディスクに送る入力/出力操作では、まったく同じファイルをソリッドステートドライブに転送する入力/出力操作とは、発生するレイテンシが異なる場合がある。従って、特定モジュール108は、ハードドライブディスクを対象とする256KBのファイル転送を、このハードドライブディスクを対象とする過去の256KB操作に少なくとも部分的に基づいて、推定可能であり、更に、ソリッドステートドライブを対象とする256KBファイル転送を、このソリッドステートドライブを対象とする256KB操作に基づいて、推定できる。
図3のステップ308で、本明細書記載のシステムの1つ以上は、入力/出力操作の遂行に関連するレイテンシの量に少なくとも部分的に基づいて、入力/出力操作で消費される入力/出力帯域の量を計算できる。例えば、計算モジュール110は、図2のストレージシステム206の一部として、入力/出力操作214の遂行に関連するレイテンシ218の量に少なくとも部分的に基づいて、入力/出力操作214で消費される入力/出力帯域の量を計算できる。
計算モジュール110は、種々の方法で、消費した入力/出力帯域を計算できる。幾つかの例において、計算モジュール110は、入力/出力操作214の遂行で生じたレイテンシを、消費した入力/出力帯域として使用するだけで良い。あるいは、計算モジュール110は、特定モジュール108が推定、且つ/又は、観測したレイテンシをクレジットへと変換できる。例えば、計算モジュール110は、特定の基準サイズの操作で生じたレイテンシに関するクレジットを計算できる。具体例を挙げると、計算モジュール110は、1クレジットと同等の8KBの操作で生じるレイテンシを計数できる。基準操作の2倍のレイテンシをストレージシステム206にもたらす入力/出力操作は、アプリケーションに2クレジットの「コストがかかる」恐れがある。記載のクレジットシステムが、入力/出力操作のサイズではなく、入力/出力操作で生じるレイテンシに基づいてコストを計算することに留意されたい。とはいえ、上記のように、基準操作の何倍も大きい操作では、発生するレイテンシの増加が、比較的少ない。計算モジュールは、入力/出力操作により、分数クレジット(例えば、2.1クレジット)のコストがかかることを判定し、このコストを次に大きい整数へと四捨五入し(例えば、2.5クレジットを3クレジットに四捨五入する)、あるいは、他の適切な任意の数学処理を使用して、ストレージシステム206の任意の所与の入力/出力操作のクレジットコストを決定できる。
特定モジュール108が入力/出力操作214について正規化されたレイテンシを特定する実施例において、計算モジュール110は、この正規化されたレイテンシを過去に算出した基準レイテンシと併用して、入力/出力操作214の実行にかかるクレジットコストを決定できる。例えば、計算モジュール110は、入力/出力操作214の正規化されたレイテンシを基準レイテンシで除算して、入力/出力操作214のクレジットコストを決定できる。具体例を挙げると、特定モジュール108は、1クレジットにかかるコストとして、4ms^2の基準レイテンシを過去に規定している場合がある。次に、特定モジュール108は、入力/出力操作214の正規化されたレイテンシが、6ms^2であると特定できる。計算モジュール110は、6ms^2を4ms^2で除算して、入力/出力操作214が遂行するのに1.5クレジットのコストがかかることを決定できる。注意すべき点として、この例の計算では、基準レイテンシ、及び、正規化されたレイテンシの計算で使用される操作のサイズは関係なく、つまり、本明細書で述べるシステムと方法は、入力/出力帯域を割り当てるために、6ms^2の正規化されたレイテンシをもたらす256KB操作と同じように、6ms^2の正規化されたレイテンシをもたらす8KB操作を処理できる。
ステップ310で、本明細書記載のシステムの1つ以上は、アプリケーションに割り当てられた割り当て済みの入力/出力帯域量から、入力/出力操作で消費された入力/出力帯域量を差し引くことができる。例えば、減算モジュール112は、図2のストレージシステム206の一部として、割り当て済みの帯域208から、入力/出力操作214で消費された入力/出力帯域量を差し引くことができる。
減算モジュール112は、種々の方法で、消費した入力/出力帯域を減算できる。例えば、本明細書で述べるシステムと方法は、ストレージシステム206に対する操作を実行する各アプリケーションに割り当てられた帯域のデータベースを保守することができる。計算モジュール110と関連して述べたように、このデータベースは、「クレジット」の残高、あるいは、アプリケーションに割り当てられた帯域に関する他の表記を含み得る。例えば、減算モジュール112は、アプリケーション210に割り当てられたクレジット残高から消費したクレジットを減算してから、アプリケーション210に割り当てられた残りの帯域量でデータベースを更新するだけで良い。
幾つかの実施例において、特定モジュール108、及び/又は、計算モジュール110は、ストレージシステム206が要求を遂行する前に、特定の入力/出力操作で消費された帯域を推定できる。こうした実施例において、モジュール102の1つ以上の要素は、アプリケーション210に、要求された入力/出力操作を実行するのに十分なクレジットが残っていることを検証できる。以下でより詳細に説明するように、割当モジュール104は、アプリケーション210が入力/出力操作214を実行するのに割り当てられた残りの帯域が不十分であることに基づいて、ストレージシステム206が要求212を遂行することを防止できる。割当モジュール104により、アプリケーション210が入力/出力操作を実行することを防止する場合において、減算モジュール112は、中断された操作について、アプリケーション210からクレジットを差し引くことを防止できる。
モジュール102の他の要素については、減算モジュール112は、帯域をアプリケーション210へと割り当てるために、大規模な単一入力/出力操作として幾つかの入力/出力操作を処理できる。例えば、減算モジュール112は、入力/出力操作が消費した全入力/出力帯域量を計算してから、入力/出力操作で消費された全入力/出力帯域量を割り当てた帯域208から減算できる。
幾つかの実施例において、複数のアプリケーションは、ストレージシステム206で動作できる。図5を参照すると、アプリケーション210は、ストレージシステム206上で入力/出力操作を実行可能である。別のアプリケーションとして、アプリケーション510もまた、ストレージシステム206上で入力/出力操作を実行することができる。この例において、割当モジュール104は、割り当てられた帯域208をアプリケーション210に割り当て、割り当てられた帯域508をアプリケーション510に割り当てることができる。アプリケーション210は、ストレージシステム206上で入力/出力操作214を実行することができ、アプリケーション510は、ストレージシステム206上で順次操作514を実行可能である。以前に詳細に説明したように、モジュール102の1つ以上の要素は、入力/出力帯域使用量を決定するために、こうした順次操作をより大規模な単一動作として扱うことができる。特定モジュール108は、入力/出力操作214、及び、順次操作514に関連するレイテンシを特定可能であり、計算モジュール110は、各操作に関連する帯域使用量を計算することができる。次に、減算モジュール112は、割り当てられた帯域208から、入力/出力操作214に関連する帯域使用量を減算し、更に、割り当てられた帯域508から、順次操作514に関連する帯域利用量を減算できる。
図3のステップ312で、本明細書記載のシステムの1つ以上は、アプリケーションに割り当てられた残りの入力/出力帯域量からの帯域を、アプリケーションからの将来の入力/出力要求に割り当てることもできる。例えば、割当モジュール104は、図2のストレージシステム206の一部として、アプリケーションに割り当てられた残りの入力/出力帯域量からの帯域を、アプリケーション210からの将来の入力/出力要求に割り当てることもできる。つまり、図3のステップ302と合わせて述べたように、割当モジュール104がアプリケーション210をリフレッシュするか、あるいは、追加帯域をこのアプリケーションに割当てるまで、残りの入力/出力帯域量は、アプリケーション210が取るべき許容できる残りの動作に相当し得る。
幾つかの例では、要求212を遂行するためのアプリケーション210に残っている入力/出力帯域の割当が、不十分である場合がある。こうした例において、割当モジュール104は、要求された入力/出力操作を実行するためのアプリケーション210に残っている入力/出力帯域の割当が、不十分であると判定されたことを受けて、アプリケーション210が要求212において要求された少なくとも1つの入力/出力操作を実行することを防止することができる。例えば、ストレージシステム206への入力/出力操作を実行するための推定された帯域コストをカバーするのに十分なクレジットがアプリケーション210にない場合(計算モジュール110に関連して説明)、割当モジュール104は、アプリケーション210がその特定の入力/出力操作を実行すること防止できる。割当モジュール104、及び/又は、減算モジュール112は、アプリケーション210が入力/出力操作を阻止された場合、アプリケーション210からのクレジットの差し引きを止めることができる。
図1〜5と関連して以前に述べたように、ストレージシステムは、クレジットシステムを通じて、アプリケーションの帯域利用を追跡し、そのアプリケーションが要求する入力/出力操作の遂行により生じる実際の処理時間、及び/又は、レイテンシを基に、アプリケーションによるクレジット割り当てからクレジットを差し引くことができる。開示のシステムと方法では、操作のサイズではなく、実際のシステムへの影響に基づいて、アプリケーションに帯域を割り当てることにより、ストレージシステムは、利用できる処理帯域をより十分に利用可能であり、かくして、ストレージシステムが所与の時間に処理できる要求の数が増加する。
更に、本明細書で述べるシステムと方法は、帯域を種々のアプリケーションに割り当てるために、ストレージシステムが大規模な単一要求として、アプリケーションからのバルク要求、あるいは、順次要求を処理できるようにすることで、ストレージシステムの効率を一層良くすることができる。順次入力/出力操作は、個別に、且つ/又は、無作為に送られた操作要求に関連する処理オーバーヘッドの大部分を解消できるので、同量のデータを転送しても、ストレージシステムが更なる入力/出力操作を処理する能力に与える影響は少なくなる。やはり、操作サイズのみに基づくのではなく、実際のシステム影響にも基づくこうした帯域計算によって、ストレージシステムは、入力/出力操作を実行するために利用できる容量をより十分に活用することができる。
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施例を記載するが、本明細書において説明及び/又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び/又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア(又はこれらの任意の組み合わせ)構成を使用して、個々に、及び/又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例として見なされるべきである。
幾つかの例において、図1の例示的なシステム100の全て、あるいは、一部は、クラウドコンピューティング又はネットワークベース環境の一部に相当し得る。クラウドコンピューティング環境は、インターネットを介して、種々のサービスやアプリケーションを提供し得る。こうしたクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ、あるいは、他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
種々の実施例において、図1の例示的なシステム100の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるモジュールは、本明細書において説明される機能のうちの1つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム(例えば、サーバ)を構成し得る。例えば、本明細書において説明されるモジュールのうちの1つ以上は、2つ以上のクライアント(例えば、顧客)が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客(即ち、テナント)間でアプリケーション、オペレーティングシステム、処理システム、及び/又は記憶システムを共有し得る。本明細書において説明されるモジュールの1つ以上はまた、ある顧客が別の顧客のデータ及び/又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び/又は構成情報を分割し得る。
種々の実施例によれば、図1の例示的なシステム100の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び/又はデータは、仮想マシン内に存在し得る、及び/又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ(例えば、ハイパーバイザ)によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。
幾つかの例では、図1の例示的なシステム100の全て又は一部は、モバイルコンピューティング環境の一部を表し得る。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス(例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス)、これらのうちの1つ以上の変形形態、若しくは組み合わせ、又は任意の他の好適なモバイルコンピューティングデバイスを含む、広範なモバイルコンピューティングデバイスによって実装され得る。一部の例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間における1つのフォアグラウンドアプリケーションのみの提示、遠隔管理特性、タッチスクリーン特性、場所及び移動データ(例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される)、システムレベルの構成への修正を制限する、及び/又は第3者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する(例えば、承認されたアプリケーションストアのみから得る)能力などを制限する、制限されたプラットフォームを含む、1つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び/又はモバイルコンピューティング環境と相互作用し得る。
本明細書において説明及び/又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び/又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び/又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの1つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
種々の実施例が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び/又は例解されているが、これらの例示的な実施例のうちの1つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体によらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施例はまた、あるタスクを実施するモジュールを使用して、実装され得る。これらのモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。幾つか実施例では、こうしたモジュールは、本明細書において開示される例示的な実施例の1つ以上を実施するように、コンピューティングシステムを構成し得る。
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、網羅的であることを意図するものでも、開示されたいずれかの正確な形態に限定されることを意図するものでもない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施例は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
別途記載されない限り、「〜に接続される(connected to)」及び「〜に連結される(coupled to)」という用語(及びそれらの派生語)は、本明細書及び請求項において使用される際、直接的及び間接的(即ち、他の要素又は構成要素を介した)接続の両方を許容するとして解釈されるものとする。加えて、「1つ(a)」又は「1つ(an)」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも1つ(at least one of)」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む(including)」及び「有する(having)」という用語(及びそれらの派生語)は、本明細書及び請求項において使用される際、「備える(comprising)」という語と同義的であり、かつ同じ意味を有する。

Claims (20)

  1. ストレージシステム内に入力/出力帯域を割り当てるコンピュータ実装方法において、前記方法の少なくとも一部は、少なくとも1つのプロセッサを含むコンピュータ装置により実行され、前記方法は、
    所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、
    前記アプリケーションから、前記ストレージシステム上で入力/出力操作を実行する要求を受信するステップと、
    前記入力/出力操作の遂行に関連するレイテンシの量を特定するステップと、
    前記入力/出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力/出力操作で消費される入力/出力帯域の量を計算するステップと、
    前記アプリケーションに割り当てられた前記割り当て済みの入力/出力帯域の量から、前記入力/出力操作で消費された前記入力/出力帯域の量を差し引くステップと、
    前記アプリケーションに割り当てられた前記残りの入力/出力帯域の量からの帯域を、前記アプリケーションによる将来の入力/出力要求に割り当てるステップと、を含む、方法。
  2. 前記入力/出力操作の遂行に関連する前記レイテンシの量を特定するステップは、前記入力/出力操作の完了にかかる時間の量を測定するステップを含む、請求項1に記載の方法。
  3. 前記入力/出力操作の遂行に関連する前記レイテンシの量を特定するステップは、前記入力/出力操作が複数の一連の入力/出力操作を含むかどうかに少なくとも部分的に基づいて、前記入力/出力操作で生じるレイテンシの推定量を計算するステップを含む、請求項1に記載の方法。
  4. 前記レイテンシの推定量を計算するステップは、前記入力/出力操作と類似した過去の入力/出力操作の観測に基づいて、前記レイテンシの推定量を計算するステップを含む、請求項3に記載の方法。
  5. 前記アプリケーションに割り当てられた前記割り当て済みの入力/出力帯域の量から差し引かれる前記入力/出力操作で消費される前記入力/出力帯域の量は、前記入力/出力操作のサイズだけではなく、前記入力/出力操作で生じるレイテンシにも比例する、請求項1に記載の方法。
  6. 前記アプリケーションから前記要求を受信するステップは、複数の入力/出力操作を実行する要求を受信するステップを含む、請求項1に記載の方法。
  7. 前記アプリケーションから前記要求を受信するステップは、前記複数の入力/出力操作を単一の入力/出力操作として処理するステップを含む、請求項6に記載の方法。
  8. 前記複数の入力/出力操作を単一の入力/出力操作として処理するステップは、
    前記複数の入力/出力操作で消費された全入力/出力帯域量を計算するステップと、
    前記複数の入力/出力操作で消費された前記全入力/出力帯域量を差し引くステップと、を含む、請求項7に記載の方法。
  9. 前記アプリケーションからの前記要求は、
    バックアップ操作と、
    復元操作と、
    復旧操作と、
    複製操作と、の少なくとも1つを実行する要求を含む、請求項1に記載の方法。
  10. 前記割り当て済みの入力/出力帯域の量を前記アプリケーションに割り当てるステップは、前記ストレージシステムから入力/出力帯域を要求するアプリケーションの数と、入力/出力操作を実行するための前記ストレージシステムの容量の双方を基に、前記割り当て済みの入力/出力帯域の量を割り当てるステップを含む、請求項1に記載の方法。
  11. 前記アプリケーションに割り当てられた残りの前記入力/出力帯域の量からの帯域を前記アプリケーションによる将来の入力/出力要求に割り当てるステップは、前記アプリケーションに将来の入力/出力操作を実行するのに十分な入力/出力帯域の量が残っていないと判断したことを受けて、前記アプリケーションが前記ストレージシステムにおいて少なくとも1つの前記将来の入力/出力操作を実行することを防止するステップを含む、請求項1に記載の方法。
  12. ストレージシステム内に入力/出力帯域を割り当てるシステムにおいて、
    メモリに記憶され、所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てる割当モジュールと、
    メモリに記憶され、前記アプリケーションから、前記ストレージシステム上で入力/出力操作を実行する要求を受信する受信モジュールと、
    メモリに記憶され、前記入力/出力操作の遂行に関連するレイテンシの量を特定する特定モジュールと、
    メモリに記憶され、前記入力/出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力/出力操作で消費される入力/出力帯域の量を計算する計算モジュールと、
    メモリに記憶され、前記アプリケーションに割り当てられた前記割り当て済みの入力/出力帯域の量から、前記入力/出力操作で消費された前記入力/出力帯域の量を差し引く減算モジュールと、
    前記割当モジュール、前記受信モジュール、前記特定モジュール、前記計算モジュール、及び、前記減算モジュールを実行するように構成された少なくとも1つの物理プロセッサと、を含む、システム。
  13. 前記割当モジュールは、前記アプリケーションに割り当てられた残りの前記入力/出力帯域の量からの帯域を、前記アプリケーションによる将来の入力/出力要求に割り当てる、請求項12に記載のシステム。
  14. 前記特定モジュールは、前記入力/出力操作の完了にかかる時間量を測定することで、前記入力/出力操作の遂行に関連する前記レイテンシの量を特定する、請求項12に記載のシステム。
  15. 前記特定モジュールは、前記入力/出力操作が複数の一連の入力/出力操作を含むかどうかに少なくとも部分的に基づいて、前記入力/出力操作で生じるレイテンシの推定量を計算することで、前記入力/出力操作の遂行に関連する前記レイテンシの量を特定する、請求項12に記載のシステム。
  16. 前記特定モジュールは、前記入力/出力操作と類似した過去の入力/出力操作の観測に基づいて、前記レイテンシの推定量を計算することで、前記推定されたレイテンシ量を計算する、請求項15に記載のシステム。
  17. 前記アプリケーションに割り当てられた前記割り当て済みの入力/出力帯域の量から差し引かれる前記入力/出力操作で消費される前記入力/出力帯域の量は、前記入力/出力操作のサイズだけではなく、前記入力/出力操作で生じるレイテンシにも比例する、請求項12に記載のシステム。
  18. 前記受信モジュールは、複数の入力/出力操作を実行する要求を受信することで、前記アプリケーションから前記要求を受信する、請求項12に記載のシステム。
  19. 前記アプリケーションからの前記要求は、
    バックアップ操作と、
    復元操作と、
    復旧操作と、
    複製操作と、の少なくとも1つを実行する要求を含む、請求項12に記載のシステム。
  20. 1つ以上のコンピュータ可読命令を含む非一時的コンピュータ可読媒体であって、前記命令が、コンピュータ装置の少なくとも1つのプロセッサによって実行される時、前記コンピュータ装置に対して、
    所定のサービス水準合意に従って、割り当てられた量の入力/出力帯域をストレージシステム上で動作するアプリケーションに割り当てるステップと、
    前記アプリケーションから、前記ストレージシステム上で入力/出力操作を実行する要求を受信するステップと、
    前記入力/出力操作の遂行に関連するレイテンシの量を特定するステップと、
    前記入力/出力操作の遂行に関連する前記レイテンシの量に少なくとも部分的に基づいて、前記入力/出力操作で消費される入力/出力帯域の量を計算するステップと、
    前記アプリケーションに割り当てられた前記割り当て済みの入力/出力帯域の量から、前記入力/出力操作で消費された前記入力/出力帯域の量を差し引くステップと、
    前記アプリケーションに割り当てられた前記残りの入力/出力帯域の量からの帯域を、前記アプリケーションによる将来の入力/出力要求に割り当てるステップと、を実行させる、非一時的コンピュータ可読媒体。
JP2019520403A 2016-10-28 2017-10-26 ストレージシステム内に入力/出力帯域を割り当てるシステムと方法 Active JP6730522B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/337,667 2016-10-28
US15/337,667 US10095422B2 (en) 2016-10-28 2016-10-28 Systems and methods for allocating input/output bandwidth in storage systems
PCT/US2017/058525 WO2018081421A1 (en) 2016-10-28 2017-10-26 Systems and methods for allocating input/output bandwidth in storage systems

Publications (2)

Publication Number Publication Date
JP2019531559A true JP2019531559A (ja) 2019-10-31
JP6730522B2 JP6730522B2 (ja) 2020-07-29

Family

ID=60269981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019520403A Active JP6730522B2 (ja) 2016-10-28 2017-10-26 ストレージシステム内に入力/出力帯域を割り当てるシステムと方法

Country Status (5)

Country Link
US (1) US10095422B2 (ja)
EP (1) EP3532918B1 (ja)
JP (1) JP6730522B2 (ja)
CN (1) CN109844714B (ja)
WO (1) WO2018081421A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452553B1 (en) * 2017-10-16 2019-10-22 Veritas Technologies Llc Systems and methods for distributing cache space
US10481802B1 (en) * 2017-10-16 2019-11-19 EMC IP Holding Company LLC Balancing Mapped RAID background I/O with user I/O via dynamically changing background credits on Mapped RAID system and method
US10635355B1 (en) * 2018-11-13 2020-04-28 Western Digital Technologies, Inc. Bandwidth limiting in solid state drives
US11249667B2 (en) * 2019-09-05 2022-02-15 International Business Machines Corporation Storage performance enhancement
US11481156B1 (en) * 2020-02-26 2022-10-25 Marvell Asia Pte, Ltd. Throughput management of distributed storage system
CN115914140B (zh) * 2023-01-10 2023-06-20 苏州浪潮智能科技有限公司 一种存储数据处理方法、装置、电子设备和存储介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319672A (ja) * 1996-05-30 1997-12-12 Fuji Xerox Co Ltd データ伝送装置および方法
US6108306A (en) * 1997-08-08 2000-08-22 Advanced Micro Devices, Inc. Apparatus and method in a network switch for dynamically allocating bandwidth in ethernet workgroup switches
US6735633B1 (en) * 1999-06-01 2004-05-11 Fast Forward Networks System for bandwidth allocation in a computer network
US7130807B1 (en) * 1999-11-22 2006-10-31 Accenture Llp Technology sharing during demand and supply planning in a network-based supply chain environment
US7260635B2 (en) * 2000-03-21 2007-08-21 Centrisoft Corporation Software, systems and methods for managing a distributed network
US6947998B2 (en) * 2001-03-08 2005-09-20 Broadband Royalty Corporation Method and system for bandwidth allocation tracking in a packet data network
KR100436365B1 (ko) * 2001-06-23 2004-06-18 삼성전자주식회사 비동기전송모드 기반의 트래픽 유형에 따른 지연적응적스케줄링 장치 및 방법
US7257632B2 (en) * 2001-07-30 2007-08-14 Fujitsu Limited Method and apparatus for a bandwidth broker in a packet network
US20040103193A1 (en) * 2002-11-08 2004-05-27 Pandya Suketu J. Response time and resource consumption management in a distributed network environment
US20040153614A1 (en) * 2003-02-05 2004-08-05 Haim Bitner Tape storage emulation for open systems environments
US7818252B2 (en) * 2003-02-20 2010-10-19 Gilat Satellite Networks, Ltd Enforcement of network service level agreements
JP2005084907A (ja) * 2003-09-08 2005-03-31 Sony Corp メモリ帯域制御装置
US8265019B2 (en) * 2007-11-05 2012-09-11 Qualcomm Incorporated Scheduling a mix of best effort (BE) and delay QoS flows
US7738492B2 (en) * 2007-11-19 2010-06-15 Avistar Communications Corporation Network communication bandwidth management
US7877495B2 (en) * 2008-05-29 2011-01-25 Qwest Communications International Inc. Application levels of service over a network
US9325583B2 (en) * 2009-01-27 2016-04-26 Hewlett Packard Enterprise Development Lp Method and system for optimizing network input/output performance
US8195888B2 (en) * 2009-03-20 2012-06-05 Empire Technology Development Llc Multiprocessor cache prefetch with off-chip bandwidth allocation
US8667493B2 (en) * 2010-05-07 2014-03-04 Advanced Micro Devices, Inc. Memory-controller-parallelism-aware scheduling for multiple memory controllers
US8522244B2 (en) * 2010-05-07 2013-08-27 Advanced Micro Devices, Inc. Method and apparatus for scheduling for multiple memory controllers
US9559956B2 (en) * 2011-02-01 2017-01-31 Google Inc. Sharing bandwidth among multiple users of network applications
US9215138B2 (en) * 2012-12-06 2015-12-15 International Business Machines Corporation Determining a system configuration for performing a collective operation on a parallel computer
US9363199B1 (en) * 2013-03-13 2016-06-07 Western Digital Technologies, Inc. Bandwidth management for data services operating on a local network
US9391915B2 (en) * 2013-06-20 2016-07-12 Microsoft Technology Licensing, Llc Controlling bandwidth across multiple users for interactive services
CN103500073B (zh) * 2013-10-08 2016-05-18 浪潮(北京)电子信息产业有限公司 一种数据块迁移方法及装置
US9807434B2 (en) * 2015-09-15 2017-10-31 Arris Enterprises Llc Dynamic bandwidth allocation for non-real time operations

Also Published As

Publication number Publication date
EP3532918A1 (en) 2019-09-04
US10095422B2 (en) 2018-10-09
CN109844714A (zh) 2019-06-04
US20180121102A1 (en) 2018-05-03
EP3532918B1 (en) 2023-10-18
JP6730522B2 (ja) 2020-07-29
WO2018081421A1 (en) 2018-05-03
CN109844714B (zh) 2022-08-09

Similar Documents

Publication Publication Date Title
JP6730522B2 (ja) ストレージシステム内に入力/出力帯域を割り当てるシステムと方法
Shastri et al. HotSpot: automated server hopping in cloud spot markets
US10469565B2 (en) Management of unreturned system pool resources
US9575657B2 (en) Dataset replica migration
US10241681B2 (en) Management of physical extents for space efficient storage volumes
US10216429B2 (en) Performing post-processing operations for log file writes
US10944581B2 (en) Increasing processing capacity of processor cores during initial program load processing
US11573946B2 (en) Management of memory usage using usage analytics
US20170220263A1 (en) Management of extents for space efficient storage volumes by reusing previously allocated extents
US10884818B2 (en) Increasing processing capacity of virtual machines
US10884845B2 (en) Increasing processing capacity of processor cores during initial program load processing
CN111066005A (zh) 响应于经由总线接口上的i/o操作产生的高速缓存命中对元数据道的异步更新
US10613896B2 (en) Prioritizing I/O operations
US10587527B1 (en) Systems and methods for apportioning bandwidth in storage systems
US10938891B2 (en) Reducing cloud application execution latency
US20140229937A1 (en) Resource allocation based on revalidation and invalidation rates
US10789008B2 (en) Reducing write collisions in data copy
US10990434B2 (en) Increasing processing capacity of virtual machines for an abnormal event
US10657079B1 (en) Output processor for transaction processing system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190414

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190414

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190423

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200522

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200609

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200702

R150 Certificate of patent or registration of utility model

Ref document number: 6730522

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250