JP6640242B2 - ハイブリッドストレージシステム内のサービス品質を改善するためのシステム及び方法 - Google Patents

ハイブリッドストレージシステム内のサービス品質を改善するためのシステム及び方法 Download PDF

Info

Publication number
JP6640242B2
JP6640242B2 JP2017549674A JP2017549674A JP6640242B2 JP 6640242 B2 JP6640242 B2 JP 6640242B2 JP 2017549674 A JP2017549674 A JP 2017549674A JP 2017549674 A JP2017549674 A JP 2017549674A JP 6640242 B2 JP6640242 B2 JP 6640242B2
Authority
JP
Japan
Prior art keywords
application
cycle
storage device
storage system
operations
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.)
Active
Application number
JP2017549674A
Other languages
English (en)
Other versions
JP2018514027A (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 JP2018514027A publication Critical patent/JP2018514027A/ja
Application granted granted Critical
Publication of JP6640242B2 publication Critical patent/JP6640242B2/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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/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/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Description

ハイブリッドストレージシステムは、しばしば、異なるタイプ及び/又は速度のストレージデバイスを含む。例えば、ハイブリッドストレージシステムは、ネットワーク内で動作する様々な仮想マシン(VM)によって使用されるデータを記憶する1つ若しくは2つ以上の高速ストレージデバイス(キャッシュ等)及び/又は1つ若しくは2つ以上の低速ストレージデバイス(ディスクなど)を含むことがある。この例では、VMが、ハイブリッドストレージシステムによってサービスされる様々な入力/出力(I/O)動作(読取り及び/又書込み等)を開始してもよい。
VMからハイブリッドストレージシステムまでのそのようなI/O動作の送達は、サービス品質(QoS)機能によって制御されてもよい。例えば、従来のQoS機能は、毎秒、VMからハイブリッドストレージシステムまで数千のI/O動作を送達し得る。この例では、従来のQoS機能は、高速ストレージデバイスが特定の数のI/O動作をサービスし、低速ストレージデバイスが残りのI/O動作をサービスするという仮定の下に、いくつのI/O動作をハイブリッドストレージシステムに送達するべきかについて決定し得る。残念ながら、従来のQoS機能は、どのI/O動作が高速デバイス又は低速でデバイスによってサービスされることになるかを到着の時点で正確に知る方法を有しないので、低速ストレージデバイスに対する高速ストレージデバイスによってサービスされるI/O動作の数ついての従来のQoS機能の仮定は、不正確であったり及び/又はハイブリッドストレージシステム内での待ち時間問題につながったりすることがある。
例えば、従来のQoS機能は、I/O動作をVMからハイブリッドストレージシステムまで特定の速度で送達し得る。これらのI/O動作の全てではないにしても、その多くが高速ストレージデバイスによってサービスされる場合には、ハイブリッドストレージシステムは、非常に短い待ち時間の期間を示すことがあり、そのために、場合によっては、ハイブリッドストレージシステムがそのようなI/O動作をより一層高速でもサービスできるという誤った印象を従来のQoS機能に与えることがある。その結果、従来のQoS機能がI/O動作についての送達速度を増加させることにより、I/O動作の一部が高速ストレージデバイス内のストレージ空間を急速に満たして、残りのI/O動作が低速ストレージデバイスをスキップすることを強制され、それにより、場合によっては、非常に長い待ち時間につながることがある。待ち時間におけるこれらの前後する変化は、従来のQoS機能にI/O動作のための送達速度を繰返し及び/又は不安定に変更させることがある。
本開示は、それ故に、ハイブリッドストレージシステム内のQoSを改善するためのシステム及び方法に対するニーズを認識し、これを対象にする。
下記でより詳細に説明するように、本開示は、ハイブリッドストレージシステム内のサービス品質を改善するための様々なシステム及び方法を説明するが、その改善は、ハイブリッドストレージシステム内の異なるタイプのストレージデバイスによって取り扱われる基準I/Oスループットサイクルを監視し、次いで、基準I/Oスループットサイクル中に異なるタイプのストレージデバイスによって取り扱われるI/O動作の量に少なくとも部分的に基づいて後続のI/Oスループットサイクルを調節することによる。
一例では、ハイブリッドストレージシステム内のサービス品質を改善するためのコンピュータ実装方法は、(1)ある期間にわたって、少なくとも1つのアプリケーション(例えば、少なくとも1つのVM)と関連したI/Oスループットを取り扱う第1及び第2のタイプのストレージデバイスを含むハイブリッドストレージシステムの少なくとも1つの性能測定を監視すること、(2)監視される性能測定に少なくとも部分的に基づいて、その期間にわたって第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量を決定すること、(3)第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度を決定すること、次いで、(4)アプリケーションが後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のI/Oスループットを調節することを含んでもよい。
いくつかの例では、方法は、また、その期間にわたってアプリケーションと関連した第1のタイプのストレージデバイスで実施されるI/O動作の数をカウントすることを含んでもよい。それに付加して又はその代替として、方法は、その期間にわたってアプリケーションと関連した第2のタイプのストレージデバイスで実施されるI/O動作の数をカウントすることを更に含んでもよい。
いくつかの例では、第1のタイプのストレージデバイスは、高速ストレージデバイスを含んでも及び/又は表してもよく、そして、第2のタイプのストレージデバイスは、低速ストレージデバイスを含んでも及び/又は表してもよい。そのような例では、方法は、また、その期間にわたって低速ストレージデバイスに対する高速ストレージデバイスによってサービスされたI/Oスループットのパーセンテージを決定することを含んでもよい。それに付加して又はその代替として、方法は、高速ストレージデバイスによってサービスされるI/Oスループットのパーセンテージを、アプリケーションが後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度を計算するために使用される式に組み込むことを含んでもよい。
いくつかの例では、方法は、また、その期間にわたってハイブリッドストレージシステムによって取り扱われるI/Oスループットに寄与する少なくとも1つの別のアプリケーションに対するアプリケーションの優先順位レベルを識別することを含んでもよい。そのような例では、方法は、アプリケーションが、第2のタイプのストレージデバイスに対する第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量、及び別のアプリケーションに対するアプリケーションの優先順位レベルに少なくとも部分的に基づいて、後続の期間にわたって後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度を決定することを更に含んでもよい。それに付加して又はその代替として、方法は、第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量及びアプリケーションの優先順位レベルを、アプリケーションが後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度を計算するために使用される式に組み込むことを含んでもよい。
いくつかの例では、方法は、また、第2のタイプのストレージデバイスに対する第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量に少なくとも部分的に基づいて、もう1つのアプリケーションが後続の期間にわたってハイブリッドストレージシステムに送達される後続のI/Oスループットに寄与することを許容される速度を決定することを含んでもよい。そのような例では、方法は、別のアプリケーションがハイブリッドストレージシステムに送達される後続のI/Oスループットに寄与することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたって別のアプリケーションと関連した後続のI/Oスループットを調節することを更に含んでもよい。
いくつかの例では、方法は、また、アプリケーションに、アプリケーションが後続の期間中に後続のI/Oスループットに寄与することを許容されるI/O動作の近似量に対応するI/Oクレジットの数を割り当てることを含んでもよい。そのような例では、方法は、ハイブリッドストレージシステムが、後続の期間中にアプリケーションと関連したI/Oクレジットの数を上回る数のI/O動作を取り扱わないことを保証することを更に含んでもよい。
いくつかの例では、方法は、また、アプリケーションが後続の期間にわたってハイブリッドストレージシステムに割り当てられたI/Oクレジットの数を上回る数のI/O動作を送達することを防止することを含んでもよい。それに付加して又はその代替として、方法は、ハイブリッドストレージシステムが後続の期間中にアプリケーションと関連して割り当てられたI/Oクレジットの数を上回る数のI/O動作を実施することを防止することを含んでもよい。
別の例では、上記の方法を実装するためのシステムは、(1)少なくとも1つのアプリケーションと関連したI/Oスループットを取り扱う第1及び第2のタイプのストレージデバイスを含むハイブリッドストレージシステムについての少なくとも1つの性能測定を監視する、メモリに記憶された監視モジュールと、(2)(A)監視される性能測定に少なくとも部分的に基づいて、ある期間にわたって第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量を決定し、次いで、(B)第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度を決定する、メモリに記憶された決定モジュールと、(3)アプリケーションが後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のI/Oスループットを調節する調節モジュールと、(4)監視モジュール、決定モジュール、及び調節モジュールを実行する少なくとも1つのプロセッサとを備えてもよい。
いくつかの例では、上記の方法は、非一過性コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、1つ若しくは2つ以上のコンピュータ実行可能命令を含んでもよく、この命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されるときに、コンピューティングデバイスに、(1)ある期間にわたって、少なくとも1つのアプリケーションと関連したI/Oスループットを取り扱う第1及び第2のタイプのストレージデバイスを含むハイブリッドストレージシステムについての少なくとも1つの性能測定を監視すること、(2)監視される性能測定に少なくとも部分的に基づいて、その期間にわたって第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量を決定すること、(3)第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度を決定すること、次いで、(4)アプリケーションが後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のI/Oスループットを調節することを行わせてもよい。
上記で述べた実施形態のうちのいずれかからの機能は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
添付の図面は、いくつかの例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明とともに、これらの図面は、本開示の種々の原理を実証及び説明する。
ハイブリッドストレージシステム内のサービス品質を改善するための例示的なシステムのブロック図である。 ハイブリッドストレージシステム内のサービス品質を改善するための更なる例示的なシステムのブロック図である。 ハイブリッドストレージシステム内のサービス品質を改善するための例示的な方法の流れ図である。 ハイブリッドストレージシステム内のサービス品質を改善するための更なる例示的なシステムのブロック図である。 I/Oスループットサイクルについての例示的な情報の説明図である。 I/Oスループットサイクルについての例示的な情報の説明図である。 I/Oスループットサイクルについての例示的な情報の説明図である。 本明細書で説明された及び/又は例示された実施形態のうちの1つ若しくは2つ以上を実装できる例示的なコンピューティングシステムのブロック図である。 本明細書で説明された及び/又は例示された実施形態のうちの1つ若しくは2つ以上を実装できる例示的なコンピューティングネットワークのブロック図である。
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施形態は、種々の修正及び代替的な形態が可能であるが、具体的な実施形態が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施形態は、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
例示的な実施形態の詳細な説明
本開示は、ハイブリッドストレージシステム内のサービス品質を改善するためにシステム及び方法に概して向けられる。下記でより詳細に説明するように、ある期間にわたってI/Oスループットサイクルを監視することによって、本明細書で説明する様々なシステム及び方法は、I/O動作がその期間中にハイブリッドストレージシステム内の異なるタイプのストレージデバイスによって何回サービスされたかについて決定してもよい。I/O動作がこのように異なるタイプのストレージデバイスによって何回サービスされたかについて決定すると、本明細書で説明するシステム及び方法は、後続の期間にわたってアプリケーション(VM等)から生じるI/O動作についての実質的に安定した送達速度を決定するための基準及び/又は履歴基準値としてI/O動作のその数を使用し得る。
更に、このようにそのようなアプリケーションから生じるI/O動作についての実質的に安定した送達速度を決定することによって、本明細書で説明するシステム及び方法は、ハイブリッドストレージシステムが高度に変動する待ち時間及び/又は待ち時間振動の期間を表明及び/又は提示することを防止できてもよい。それに付加して又はその代替として、本明細書で説明するシステム及び方法は、ハイブリッドストレージシステムが特定のリソースを誤用することを防止できてもよい。例えば、本明細書で説明するシステム及び方法は、ハイブリッドストレージシステムが特定のリソース(I/O毎秒(IOPS)、計算能力、及び/又はバンド幅等)関する優先順位逆転を回避することを可能にしてもよい。
下記において、図1、図2、及び図4によって、ハイブリッドストレージシステム内のサービス品質を改善するための例示的なシステムについての詳細な説明を提供する。対応するコンピュータ実装方法についての詳細な説明は、図3と関連して提供される。I/Oスループットサイクルについての例示的な情報についての詳細な説明は、図5〜図7に関連して提供される。それに加えて、本明細書で説明する実施形態のうちの1つ若しくは2つ以上を実装できる例示的なコンピューティングシステム及びネットワークアーキテクチャについての詳細な説明は、図8及び図9と関連してそれぞれ提供される。
図1は、ハイブリッドストレージシステム内のサービス品質を改善するための例示的なシステム100のブロック図である。この図に示すように、例示的なシステム100は、1つ若しくは2つ以上のタスクを実施するための1つ若しくは2つ以上のモジュール102を含んでもよい。例えば、そして、下記により詳細に説明するように、例示的なシステム100は、少なくとも1つのアプリケーションと関連したI/Oスループットを取り扱うハイブリッドストレージシステムについての少なくとも1つの性能測定を監視する監視モジュール104を含んでもよい。例示的なシステム100は、また、監視される性能測定に少なくとも部分的に基づいて、その期間にわたって第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量を決定する決定モジュール106を含んでもよい。決定モジュール106は、第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度を更に決定してもよい。
それに加えて、そして、下記により詳細に説明するように、例示的なシステム100は、アプリケーションが後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のI/Oスループットを調節する調節モジュール108を含んでもよい。別個の要素として示されるけれども、図1のモジュール102のうちの1つ若しくは2つ以上は、単一のモジュール又はアプリケーション(QoSアプリケーション及び/又はQoS機能等)の複数部分を表してもよい。
特定の実施形態において、図1のモジュール102のうちの1つ若しくは2つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、1つ若しくは2つ以上のタスクを実施させてもよい1つ若しくは2つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、そして、下記でより詳細に説明するように、モジュール102のうちの1つ若しくは2つ以上は、1つ若しくは2つ以上のコンピューティングデバイス、例えば、図2に示すデバイス(例えば、コンピューティングデバイス202(1)〜(N)、及び/又はストレージデバイス206(1)〜(N))、図8のコンピューティングシステム810、及び/又は図9の例示的なネットワークアーキテクチャ900の部分等において動作するように記憶及び構成されたソフトウェアモジュールを表してもよい。図1のモジュール102のうちの1つ若しくは2つ以上は、また、1つ若しくは2つ以上のタスクを実施するように構成された1つ若しくは2つ以上の特殊目的のコンピュータの全て又は部分を表してもよい。
図1の例示的なシステム100は、様々な態様で実装されてもよい。例えば、例示的なシステム100の全て又は一部分は、図2の例示的なシステム200の部分を表してもよい。図2に示すように、システム200は、ネットワーク204を介してハイブリッドストレージシステム214と通信する1つ若しくは2つ以上のコンピューティングデバイス202(1)〜(N)を含んでもよい。この例では、ハイブリッドストレージシステム214は、異なるタイプ及び/又は速度の1つ若しくは2つ以上のストレージデバイス206(1)〜(N)を含んでもよい。例えば、ストレージデバイス206(1)は、比較的高速のストレージデバイス、例えば、ソリッドステートドライブ(SSD)、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、及び/又は独立した複数のディスクからなる冗長配列(RAID)コントローラキャッシュを含んでも及び/又は表してもよい。それに付加して又はその代替として、ストレージデバイス206(N)は、RAID及び/又はハードディスクドライブ(HDD)等の比較的低速のストレージデバイスを含んでも及び/又は表してもよい。
一例では、1つ若しくは2つ以上のコンピューティングデバイス202(1)〜(N)は、1つ若しくは2つ以上のモジュール102によってプログラムされてもよい。それに付加して又はその代替として、1つ若しくは2つ以上のストレージデバイス206(1)〜(N)は、1つ若しくは2つ以上のモジュール102によってプログラムされてもよい。
一例では、1つ若しくは2つ以上のコンピューティングデバイス202(1)〜(N)は、1つ若しくは2つ以上のアプリケーション208(1)〜(N)を実行及び/又は起動してもよい。例えば、コンピューティングデバイス202(1)は、アプリケーション208(1)を実行及び/又は起動してもよい。それに付加して又はその代替として、コンピューティングデバイス202(N)は、アプリケーション208(2)〜(N)を実行及び/又は起動してもよい。
一例では、アプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上は、I/Oスループット210を生成及び/又は始動し、次いで、それらを、ネットワーク204を介してストレージデバイス206(1)〜(N)のうちの1つ若しくは2つ以上に送信及び/又は送達してもよい。この例では、ストレージデバイス206(1)〜(N)のうちの1つ若しくは2つ以上は、I/Oスループット210を受信及び/又は取得してもよく、次いで対応するアプリケーションと関連したI/Oスループット210を取り扱い、サービスし、実施し及び/又は処理してもよい。例えば、ストレージデバイス206(1)は、I/Oスループット210の部分212(1)を取り扱い、サービスし、実施し、及び/又は処理してもよい。逆に、ストレージデバイス206(N)は、I/Oスループット210の部分212(N)を取り扱い、サービスし、実施し、及び/又は処理してもよい。
一実施形態では、図1のモジュール102のうちの1つ若しくは2つ以上が、コンピューティングデバイス202(1)〜(N)及び/又はストレージデバイス206(1)〜(N)の少なくとも1つのプロセッサによって実行されるとき、コンピューティングデバイス202(1)〜(N)及び/又はストレージデバイス206(1)〜(N)のうちの少なくとも1つがハイブリッドストレージシステム内のQoSを改善することを可能にする。例えば、そして、下記でより詳細に説明するように、モジュール102のうちの1つ若しくは2つ以上は、コンピューティングデバイス202(1)〜(N)及び/又はストレージデバイス206(1)〜(N)のうちの少なくとも1つに、(1)ある期間にわたって、アプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上と関連したI/Oスループット210を取り扱う異なるタイプのストレージデバイス206(1)〜(N)を含むハイブリッドストレージシステム214についての少なくとも1つの性能測定を監視することと、(2)監視される性能測定に少なくとも部分的に基づいて、その期間にわたってストレージデバイス206(N)に対してストレージデバイス206(1)によって取り扱われるI/Oスループット210の近似量を決定することと、(3)ストレージデバイス206(N)に対してストレージデバイス206(1)によって取り扱われるI/Oスループット210の近似量に少なくとも部分的に基づいて、対応するアプリケーションが後続の期間にわたって後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度を決定することと、次いで、(4)対応するアプリケーションが後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたって対応するアプリケーションと関連した後続のI/Oスループットを調節することとを行わせる。
コンピューティングデバイス202(1)〜(N)は、それぞれ、任意のタイプ又は形式のコンピュータ実行可能命令を読み取ることが可能なコンピューティングデバイスを概して表す。コンピューティングデバイス202(1)〜(N)の例として、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、個人情報機器(PDA)、マルチメディアプレイヤー、組込みシステム、ウェアラブルデバイス(例えば、スマートウォッチ、スマートグラス等)、ゲーム機、これらのうちの1つ若しくは2つ以上のものの変形、これらのものうちの1つ若しくは2つ以上のものの組合せ、図8の例示的なコンピューティングシステム810、又は任意の別の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
ハイブリッドストレージシステム214は、異なるタイプ及び/又は速度のストレージデバイスを含む任意のタイプ又は形式のストレージシステム及び/又は環境を概して表す。一例では、ハイブリッドストレージシステム214は、階層ストレージシステムとして集合的に動作するストレージデバイス206(1)〜(N)を含んでもよい。この例では、ストレージデバイス206(1)〜(N)は、高速ストレージデバイス(SSD、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、及び/又はRAIDコントローラキャッシュ等)と、低速ストレージデバイス(RAID及び/又はHDD)との任意の組合せを含んでも及び/又は表してもよい。図2に示すように、ハイブリッドストレージシステム214は、ネットワーク204の後方に存在しても及び/又は位置してもよい。その代替として、図2のネットワーク204の後方に存在する及び/又は位置するように示されるけれども、ハイブリッドストレージデバイス214は、ネットワーク204内に存在しても及び/又は位置してもよく、及び/又はネットワーク204に組み込まれたローカルストレージを表してもよい。
ストレージデバイス206(1)〜(N)は、それぞれ、アプリケーションによって使用されるデータを記憶できる及び/又はそのようなアプリケーションと関連したI/Oスループットをサービスできる任意のタイプ又は形式の装置及び/又は機構を概して表す。ストレージデバイス206(1)〜(N)の例としては、SSD、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、RAIDコントローラキャッシュ、RAID、HDD、仮想ディスク、これらのうちの1つ若しくは2つ以上のものの変形、これらのうちの1つ若しくは2つ以上のものの組合せ、図8の例示的なコンピューティングシステム810、又は任意の別の好適なストレージデバイスが挙げられるが、これらに限定されない。
ネットワーク204は、通信又はデータ転送を容易にすることが可能な任意の媒体又はアーキテクチャを概して表す。ネットワーク204の例としては、イントラネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、インターネット、電力線通信(PLC)、セルラネットワーク(例えば、汎欧州デジタル移動電話方式(GSM(登録商標))ネットワーク)、図9の例示的なネットワークアーキテクチャ900等が挙げられるが、これらに限定されない。ネットワーク204は、無線又は有線接続を使用して、通信又はデータ転送を容易にし得る。一実施形態では、ネットワーク204は、コンピューティングデバイス202(1)〜(N)及び/又はストレージデバイス206(1)〜(N)の中での通信を容易にしてもよい。コンピューティングデバイス202(1)〜(N)、ストレージデバイス206(1)〜(N)、及びネットワーク204は、図2において別個の存在として示されるけれども、1つ若しくは2つ以上のコンピューティングデバイス202(1)〜(N)、及び/又はストレージデバイス206(1)〜(N)が、その代替として、ネットワーク204の複数部分を含んでも及び/又は表してもよい。
アプリケーション208(1)〜(N)は、物理及び/又は仮想コンピューティング環境において動作することができる任意のタイプ又は形式のソフトウェア、アプリケーション、及び/又はプログラムを概して表す。いくつかの例では、アプリケーション208(1)〜(N)は、ストレージデバイス206(1)〜(N)内でデータをアップロード、ダウンロード、記憶及び/又はアクセスするためにI/Oスループット210を生成及び/又は送信してもよい。アプリケーション208(1)〜(N)の例としては、VM、仮想ストレージアプライアンス、フロー、ソフトウェアモジュール、及び/又はこれらのうちの1つ若しくは2つ以上のものにおいて動作するプログラム、これらのうちの1つ若しくは2つ以上のものの変形、これらのうちの1つ若しくは2つ以上のものの組合せ、又は任意の別の好適なアプリケーションが挙げられるが、これらに限定されない。
I/Oスループット210は、アプリケーションによって開始されるか、及び/又はハイブリッドストレージシステムによってサービスされる任意のタイプ又は形式のデータ転送、データアクセス、及び/又はデータ操作を概して表す。一例では、I/Oスループット210は、特定の期間にわたって及び/又は特定のI/Oサイクル中に、ハイブリッドストレージシステム214内でデータを読み取る、書き込む、記憶する、アクセスする、及び/又は操作するために1つ若しくは2つ以上のアプリケーション208(1)〜(N)によって始動される様々なI/O動作を含んでも及び/又は表してもよい。この例では、I/Oスループット210は、特定の期間にわたって及び/又は特定のI/Oサイクル中に、1つ若しくは2つ以上のアプリケーション208(1)〜(N)と関連してハイブリッドストレージシステム214によって実施及び/又は処理されるいくつかのI/O動作を含んでも及び/又は表してもよい。
図3は、ハイブリッドストレージシステム内のサービス品質を改善するための例示的なコンピュータ実装方法300の流れ図である。図3に示すステップは、任意の好適なコンピュータ実行可能なコード及び/又はコンピューティングシステムによって実施されてもよい。いくつかの実施形態では、図3に示すステップは、図1のシステム100、図2のシステム200、図8のコンピューティングシステム810、及び/又は図9の例示的なネットワークアーキテクチャ900の部分の構成要素のうちの1つ若しくは2つ以上によって実施されてもよい。
図3に示すように、ステップ302では、本明細書で説明するシステムのうちの1つ若しくは2つ以上が、ある期間にわたって少なくとも1つのアプリケーションと関連したI/Oスループットを取り扱うハイブリッドストレージシステムの少なくとも1つの性能測定を監視してもよい。例えば、監視モジュール104は、図2のコンピューティングデバイス202の部分として、ある期間にわたってハイブリッドストレージシステム214の少なくとも1つの性能測定を監視してもよい。この例では、ハイブリッドストレージシステム214は、その期間にわたってアプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上と関連したI/Oスループット210を取り扱い、サービスし、実施し、及び/又は処理してもよい。
用語「性能測定」は、ハイブリッドストレージシステムに関して本明細書で使用されるとき、ハイブリッドストレージシステムの性能を示唆又は表示する任意のタイプ又は形式の測定、統計、及び/又は計量を概して指す。そのような性能測定の例としては、ハイブリッドストレージシステムに到達するIOPSの数、ハイブリッドストレージシステムによってサービスされるIOPSの数、ハイブリッドストレージシステムによって提示される待ち時間の量、ハイブリッドストレージシステムに送達されるI/Oスループットの量、これらのうちの1つ若しくは2つ以上のものの変形、これらのうちの1つ若しくは2つ以上のものの組合せ、又は任意の別の好適な性能測定が挙げられるが、これらに限定されない。
本明細書で説明するシステムは、様々な態様及び/又は局面でステップ302を実施してもよい。いくつかの例では、監視モジュール104は、I/Oスループット210の特定の部分を取り扱う特定のストレージデバイスを識別することによって、ハイブリッドストレージシステム214の性能測定を監視してもよい。例えば、監視モジュール104は、ストレージデバイス206(1)がI/Oスループット210の部分212(1)をサービスすること、及び/又はストレージデバイス206(N)がI/Oスループット210の部分212(N)をサービスすることを認知及び/又は決定してもよい。従って、監視モジュール104は、I/Oスループット210の部分212(1)のサービスを完了したときにストレージデバイス206(1)を識別すること、及び/又はI/Oスループット210の部分212(N)のサービスを完了したときにストレージデバイス206(N)を識別することが可能であってもよい。
それに付加して又はその代替として、監視モジュール104は、I/Oスループット210の特定の部分の処理時間に少なくとも部分的に基づいてI/Oスループット210の特定の部分を取り扱うストレージデバイスのタイプを推測することによって、ハイブリッドストレージシステム214の性能測定を監視してもよい。一例では、監視モジュール104は、時間ベース閾値を適用することによって、I/Oスループット210の特定の部分を取り扱うストレージデバイスのタイプを推測してもよい。例えば、監視モジュール104は、I/Oスループット210の部分212(1)に含まれるか及び/又はそれによって表されるそれぞれのI/O動作が、1ミリ秒未満で処理及び/又はサービスされたことを決定してもよい。この例では、処理及び/又はサービスされるのに1ミリ秒未満を要する全てのI/O動作は、ハイブリッドストレージシステム214内の高速ストレージデバイス(SSD及び/又はキャッシュ等)に対応してもよい。従って、I/Oスループット210の部分212(1)に含まれるか及び/又はそれによって表されるそれぞれのI/O動作が、1ミリ秒未満で処理及び/又はサービスされてから、監視モジュール104は、I/Oスループット210の部分212(1)が、ハイブリッドストレージデバイス214内の高速ストレージデバイスによって処理及び/又はサービスされたことを推測してもよい。
同様の例では、監視モジュール104は、I/Oスループット210の部分212(N)に含まれるか及び/又はそれによって表されるそれぞれのI/O動作が1ミリ秒超で処理及び/又はサービスされたことを決定してもよい。この例では、処理及び/又はサービスされるのに1ミリ秒超を要する全てのI/O動作は、ハイブリッドストレージシステム214内の低速ストレージデバイス(HDD等)に対応してもよい。従って、I/Oスループット210の部分212(N)に含まれるか及び/又はそれによって表されるそれぞれのI/O動作が1ミリ秒未満で処理及び/又はサービスされてから、監視モジュール104は、I/Oスループット210の部分212(N)が、ハイブリッドストレージデバイス214内の低速ストレージデバイスによって処理及び/又はサービスされたことを推測してもよい。
特定の例として、図2のハイブリッドストレージシステム214を監視する間に、監視モジュール104は、特定の期間にわたってハイブリッドストレージシステム214内の高速ストレージデバイスで実施されるI/O動作の数をカウントしてもよい。例えば、監視モジュール104は、1秒間のI/Oサイクル中にハイブリッドストレージシステム214内のストレージデバイス206(1)で実施される10,000IOPSをカウントしてもよい。それに付加して又はその代替として、監視モジュール104は、同一の期間にわたってハイブリッドストレージシステム214内の低速ストレージデバイスで実施されるI/O動作の数をカウントしてもよい。例えば、監視モジュール104は、その同一の1秒間のI/Oサイクルにわたってハイブリッドストレージシステム214内のストレージデバイス206(N)で実施される200IOPSをカウントしてもよい。監視モジュール104は、1秒間のI/Oサイクル毎の初めにこれらのカウントをリセットしてもよい。
いくつかの例では、監視モジュール104は、高速ストレージデバイスで実施されるI/O動作の数をカウントするためにハイブリッドストレージシステム214内の高速ストレージデバイスを識別しなくてもよい。言い換えると、I/O動作が任意の高速ストレージデバイス(例えば、任意のSSD、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、及び/又はRAIDコントローラキャッシュ)によって処理及び/又はサービスされる限り、監視モジュール104は、I/O動作を処理及び/又はサービスした高速ストレージデバイスの実際のタイプ及び/又は同一性を無視してもよい。
特定の例として、図4のハイブリッドストレージシステム214を監視している間、監視モジュール104は、特定の期間にわたって図4の高速ストレージデバイス406(1)、406(2)、及び/又は406(3)のうちの1つで実施されるI/Oスループット210に含まれるか及び/又はそれによって表されるI/O動作の数をカウントしてもよい。監視モジュール104は、また、特定の期間にわたって図4の低速ストレージデバイス408で実施されるI/Oスループット210に含まれるか及び/又はそれによって表されるI/O動作の数をカウントしてもよい。この例では、監視モジュール104は、高速ストレージデバイス406(1)〜(3)で実施されたI/O動作を低速ストレージデバイス408で実施されたI/O動作と区別してもよい。しかし、監視モジュール104は、高速ストレージデバイス406(1)〜(3)のうちの1つで実施されたI/O動作を高速ストレージデバイス406(1)〜(3)のうちの任意の別の1つで実施されたI/O動作と区別しなくてもよい。
図3に戻って、ステップ304では、本明細書で説明するシステムのうちの1つ若しくは2つ以上のものは、監視された性能測定に少なくとも部分的に基づいて、その期間にわたって第2のタイプのストレージデバイスに対して第1のタイプのストレージデバイスによって取り扱われるI/Oスループットの近似量を決定してもよい。例えば、決定モジュール106は、図2のコンピューティングデバイス202の部分として、その期間にわたってストレージデバイス206(N)に対してストレージデバイス206(1)によって取り扱われたI/Oスループット210の近似の又は正確な量を決定してもよい。この例では、決定モジュール106は、監視された性能測定に少なくとも部分的に基づいてこの決定を行うか及び/又はそれに到達してもよい。
本明細書で説明するシステムは、様々な態様及び/又は局面でステップ304を実施してもよい。いくつかの例では、決定モジュール106は、特定の数のI/O動作が、ハイブリッドストレージシステム214内の特定のタイプのストレージデバイスによってサービス及び/又は処理されたことを決定してもよい。例えば、決定モジュール106は、I/Oスループット210に含まれるか及び/又はそれによって表されるI/O動作の約50%が、ハイブリッドストレージシステム214内の高速ストレージデバイス及び/又は低速ストレージデバイスによってサービス又は処理されたことを決定してもよい。言い換えると、I/Oスループット210のキャッシュ利用率は、約50%であった(I/Oスループット210の50%がキャッシュ又はSSDヒットであったことを意味する)。用語「キャッシュ利用率」は、本明細書で使用されるとき、ハイブリッドストレージシステム内の低速ストレージデバイスに対して高速ストレージデバイスによって取り扱われた、処理された、及び又はサービスされた任意の量のI/Oスループットを概して指す。
別の例では、決定モジュール106は、I/Oスループット210に含まれるか及び/又はそれによって表されるI/O動作の約100%が、ハイブリッドストレージシステム214内の高速ストレージデバイス又は低速ストレージデバイスによってサービス及び/又は処理されたことを決定してもよい。その代替として、決定モジュール106は、I/Oスループット210に含まれるか及び/又はそれによって表されるI/O動作の約0%がハイブリッドストレージシステム214内の高速ストレージデバイス又は低速ストレージデバイスによってサービス及び/又は処理されたことを決定してもよい。
いくつかの例では、決定モジュール106は、その期間中にハイブリッドストレージシステム214によって表明又は提示された応答待ち時間の関数として、I/Oスループット210を決定してもよい。そのような例では、I/Oスループット210は、その期間中のハイブリッドストレージシステム214の総容量を含んでも及び/又は表してもよい。一例では、I/Oスループット210は、作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム214内で生じる特定の偏差及び/又は分散を吸収することができる指数移動平均として表わされてフォーマット化されてもよい。
それに付加して又はその代替として、決定モジュール106は、I/Oスループット210を使用して指数移動平均を計算、再計算、及び/又は修正してもよい。このように指数移動平均を計算、再計算、及び/又は修正することによって、決定モジュール106は、I/Oスループットの特定の偏差及び/又は分散が有用点を越えて計算を歪めることがないように保証してもよい。
特別な例として、決定モジュール106は、I/Oスループット210がアプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上から生じる約10200IOPSを含むか及び/又は表すことを決定してもよい。この例では、決定モジュール106は、10000IOPSが、1秒間のI/Oサイクル中にハイブリッドストレージシステム214内のストレージデバイス206(1)で実施されたときに観測されたことを決定してもよい。決定モジュール106は、また、200IOPSが、その同じ1秒間のI/Oサイクル中にハイブリッドストレージシステム214内のストレージデバイス206(N)で実施されたときに観測されたことを決定してもよい。それに付加して又はそれの代替として、決定モジュール106は、その1秒間のI/Oサイクル中に、IOPSのうちの50%がストレージデバイス206(1)によって実施され、そして、IOPSのうちの別の50%がストレージデバイス206(N)によって実施されたことを決定及び/又は仮定してもよい。
それに加えて、決定モジュール106は、その1秒間のI/Oサイクル中にハイブリッドストレージシステム214で実施されたI/Oスループットの特定の量を使用して、指数移動平均を計算、再計算、及び/又は修正してもよい。一例では、関係する指数移動平均を計算するための式は、次式で表されてもよい。CapacityTotal=Hits(High Speed)×Capacity(High Speed)+Hits(Low Speed)×Capacity(Low Speed)。この例では、「CapacityTotal」は、ハイブリッドストレージシステム214の総容量を表してもよく、「HitsHigh Speed」は、ハイブリッドストレージシステム214内の高速ストレージデバイスによって実施されたIOPSのパーセンテージを表してもよく、「CapacityHigh Speed」は、ハイブリッドストレージシステム214内の低速ストレージデバイスのそれぞれの容量を表してもよく、「HitsLow Speed」は、ハイブリッドストレージシステム214内の低速ストレージデバイスによって実施されたIOPSのパーセンテージを表してもよく、そして、「CapacityLow Speed」は、ハイブリッドストレージシステム214内の低速ストレージデバイスのそれぞれの容量を表してもよい。例えば、上記の統計値をこの式に適用することによって、決定モジュール106は次のように決定してもよい。
CapacityTotal=50%×10000+50%×200=5,100IOPS
指数移動平均をこのように使用することによって、決定モジュール106は、作業負荷の急速な変化に対してハイブリッドストレージシステム214の作業負荷傾向を反映するQoS決定を行うことができてもよい。言い換えると、この指数移動平均は、大部分、作業負荷傾向に追従するか及び/又は急速な作業負荷変化を吸収してもよく、それにより、この指数移動平均に少なくとも部分的に基づいて、そして、作業負荷の特定の偏差及び/又は分散にもかかわらず、決定モジュール106が安定したQoS決定をすることを可能にする。
図3に戻って、ステップ306では、本明細書で説明するシステムのうちの1つ若しくは2つ以上のものは、第1のタイプのストレージデバイスによって取り扱われたI/Oスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のI/Oスループットを送達することを許容される速度を決定してもよい。例えば、決定モジュール106は、図2のコンピューティングデバイス202の部分として、アプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上が、後続の期間にわたって後続のI/Oスループット(必ずしも図2に示されない)を送達することを許容される速度を決定する。用語「速度」は、本明細書で使用されるとき、アプリケーションがI/O動作を送信及び/又は送達する速度及び/又は周波数についてのなんらかの程度、又はアプリケーションがある期間にわたってハイブリッドストレージシステムに送信又は送達することを許容されるI/Oスループットについてのなんらかの最大量を概して指す。
一例では、速度は、アプリケーション208(1)が後続の期間にわたってI/Oスループットをハイブリッドストレージシステム214に送信又は送達することを許容される平均の速度又は周波数を表しても又はそれらに対応してもよい。それに付加して又はその代替として、速度は、アプリケーション208(1)が後続の期間にわたってハイブリッドストレージシステム214に送信及び/又は送達することを許容されるI/Oスループットの最大量を表しても及び/又はそれに対応してもよい。
本明細書で説明するシステムは、様々な態様及び/又は局面でステップ306を実施してもよい。いくつかの例では、決定モジュール106は、前の期間中に高速ストレージデバイス及び/又は低速ストレージデバイスによってサービスされたI/Oスループット210のパーセンテージに少なくとも部分的に基づいて、後続の期間中にアプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上から生じる後続のI/O動作についての送達速度を決定してもよい。例えば、決定モジュール106は、高速ストレージデバイスによってサービスされたI/Oスループット210のパーセンテージを、アプリケーション208(1)が次の1秒間のI/Oサイクル中に後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度を計算するために使用される式に組み込んでもよい。
それに付加して又はその代替として、決定モジュール106は、アプリケーション208(2)〜(N)に対するアプリケーション208(1)の優先順位レベルを識別してもよい。決定モジュール106は、次いで、高速ストレージデバイスによってサービスされるI/Oスループット210の近似量と、アプリケーション208(2)〜(N)に対するアプリケーション208(1)の優先順位レベルとに少なくとも部分的に基づいて、アプリケーション208(1)が後続の期間中に後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度を決定してもよい。例えば、決定モジュール106は、アプリケーション208(1)の高速ストレージデバイスによってサービスされるI/Oスループット210の近似量と優先順位レベルとを、アプリケーション208(1)が次の1秒間のI/Oサイクル中に後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度を計算するために使用される式に組み込んでもよい。この例では、決定モジュール106は、アプリケーション208(1)〜(N)のそれぞれに対応する優先順位レベルを表す重みを適用することによって、それらの優先順位レベルに基づいてアプリケーション208(1)〜(N)をスケーリングしてもよい。
一例では、決定モジュール106は、後続の期間中にアプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上から生じる後続のI/O動作についての送達速度を、その後続の期間にアプリケーション208(1)〜(N)に割り当てられるI/Oクレジットに少なくとも部分的に基づいて決定し得る。例えば、決定モジュール106は、アプリケーション208(1)が次の1秒間のI/Oサイクル中に後続のI/Oスループットに寄与することを許容されるI/O動作の近似の又は正確な量に対応する特定の数のI/Oクレジットを割り当ててもよい。用語「I/Oクレジット」、又は単に「クレジット」とは、本明細書で使用されるとき、ハイブリッドストレージシステムに関するアプリケーションに割り当てられる及び/又はクレジットされるI/O処理パワー、バンド幅、及び/又は作業負荷の一部分についてのなんらかの表現を概して指す。
特定の例として、決定モジュール106は、図5のI/Oサイクル500についての情報に少なくとも部分的に基づいて、アプリケーション208(1)〜(N)に割り当てるためのI/Oクレジットの数を計算してもよい。図5に示すように、I/Oサイクル500についての情報は、I/Oサイクルの継続期間(この例では、「1秒間」)、I/Oスループットに寄与するアプリケーションの全て(この例では、「VM1」、「VM2」、「VM3」及び「VM4」)、それらのアプリケーションの優先順位レベル(この例では、「4(VM4)→最高優先順位」、「3(VM3)」、「2(VM2)」及び「1(VM1)→最低優先順位)、それらのアプリケーションの総キャッシュ利用率(この例では、「100」)、それらのアプリケーション内でのそれぞれのアプリケーションの個々のキャッシュ利用率(この例では、「10(VM4)」、「20(VM3)」、「30(VM2)」及び「40(VM1)」)、ユーザによって指定されたキャッシュ利用率のパーセンテージ(この例では、100%」)、及び、I/Oサイクル中のハイブリッドストレージシステム214の総容量(この例では、「200IOPS」)を識別してもよい。一例では、総キャッシュ利用率及び/又は個々のキャッシュ利用率は、作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム214内で生じる特定の偏差及び/又は分散を吸収できる指数移動平均として表わされてフォーマット化されてもよい。
決定モジュール106は、優先順位レベルとスケーリング因子との積の合計を総キャッシュ利用率に等しく設定することによってアプリケーションの優先順位レベルについてのスケーリング因子を決定してもよい。一例では、アプリケーションの優先順位レベルに対するスケーリング因子を決定するための式は、次のように表現されてもよい。
Figure 0006640242
この例では、「Cache UtilizationTotal」は、前のI/Oサイクル中にキャッシュ及び/又はSSDヒットをもたらすアプリケーション208(1)〜(N)から生じるI/O動作の総数を表してもよく、「Priority LevelApplication(i)」は、アプリケーション208(1)〜(N)に割り当てられた優先順位レベルを表してもよく、「Scaling Factor」は、アプリケーション208(1)〜(N)をそれらに割り当てられた優先順位レベルに基づいてスケーリング及び/又は重み付けするために使用される任意の数又は式を表してもよい。例えば、図5のI/Oサイクル500についての情報をこの式に適用することによって、決定モジュール106は、次のように決定してもよい。100=1y+2y+3y+4y=10y、及び/又はy=10(式中、「y」はスケーリング因子を表現する)。一例では、「Cache UtilizationTotal」は、アプリケーション208(1)〜(N)の全てを網羅し、作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム214内に生じる特定の偏差及び/又は分散を吸収できる指数移動平均として表されてフォーマット化されてもよい。
更に、決定モジュール106は、スケーリング因子をアプリケーションの優先順位レベルに掛けることによって、アプリケーションの優先順位レベルをスケーリングしてもよい。一例では、アプリケーションのそれぞれに対する優先順位重みをスケーリングするための式が、次のように表されてもよい。Scaled Priority WeightApplication=Priority LevelApplication×Scaling Factor。この例では、「Scaled Priority WeightApplication」は、アプリケーションの割り当てられた優先順位レベルに基づいてアプリケーション208(1)〜(N)内の特定アプリケーションに適用されるスケーリングされた優先順位重みを表してもよく、「Priority LevelApplication」は、アプリケーション208(1)〜(N)内の特定のアプリケーションに割り当てられた優先順位レベルを表してもよく、そして、「Scaling Factor」は、アプリケーション208(1)〜(N)をそれらの割り当てられた優先順位レベルに基づいてスケーリング及び/又は重み付けするために使用されるなんらかの数又は式を表してもよい。例えば、図5のI/Oサイクル500についての情報をこの式に適用することによって、決定モジュール106は、次のように決定してもよい。Scaled Priority WeightVM1=1×10=10、Scaled Priority WeightVM2=2×10=20、Scaled Priority WeightVM3=3×10=30、及び/又はScaled Priority WeightVM4=4×10=40
それに付加して又はその代替として、決定モジュール106は、ハイブリッドストレージシステム214の総容量とスケーリングされた優先順位重みの全てと総キャッシュ利用率との合計に対するそのアプリケーションのスケーリングされた優先順位重みとキャッシュ利用率の合計とを掛けることによって、それぞれのアプリケーションに割り当てるためのI/Oクレジットの数を計算してもよい。一例では、I/Oクレジットの数を計算するための式は、次のように表されてもよい。
Figure 0006640242
この例では、「CreditsApplication」は、次のI/Oサイクルのためのアプリケーション208(1)〜(N)内の特定のアプリケーションに割り当てられたクレジット(又はIOPS)の数を表してもよく、「CapacityTotal」は、ハイブリッドストレージシステム214の総容量を表してもよく、「Scaled Priority WeightApplication」は、アプリケーションの割り当てられた優先順位レベルに基づいてアプリケーション208(1)〜(N)内の特定のアプリケーションに適用されるスケーリングされた優先順位重みを表してもよく、「Cache UtilizationApplication」は、前のI/Oサイクル中にキャッシュ及び/又はSSDヒットをもたらす特定のアプリケーションから生じるI/O動作の数を表してもよく、「User−specified Percentage of Cache」は、次のI/Oサイクルのためにユーザによって選択されるキャッシュ利用率(総キャッシュ利用率又は個々のキャッシュ利用率のいずれか)を表してもよく、「Scaled Priority WeightTotal」は、アプリケーション208(1)〜(N)に適用されるスケーリングされた優先順位重みの総量を表してもよく、「Cache UtilizationTotal」は、前のI/Oサイクル中にキャッシュ及び/又はSSDヒットをもたらしたアプリケーション208(1)〜(N)から生じるI/O動作の総数を表してもよい。例えば、図5のI/Oサイクル500についての情報をこの式に適用することによって、決定モジュール106は、次のように決定してもよい。
Figure 0006640242
一例では、「Cache UtilizationApplication」は、アプリケーションに固有であり、そして作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム214内に生じる特定の偏差及び/又は分散を吸収できる指数移動平均として表されてフォーマット化されてもよい。
決定モジュール106は、次いで、アプリケーション208(1)〜(N)が次の1秒間のI/Oサイクル中に後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度を計算してもよい。この例では、速度を計算するための式は、次のように表されてもよい。
Figure 0006640242
例えば、図5のI/Oサイクル500についての情報をこの式に適用することによって、決定モジュール106は、次のように決定してもよい。
Figure 0006640242
別の特定の例のように、決定モジュール106は、図6のI/Oサイクル600についての情報に少なくとも部分的に基づいてアプリケーション208(1)〜(N)に割り当てるためのI/Oクレジットの数を計算してもよい。図6に示すように、I/Oサイクル600についての情報は、I/Oサイクルの継続期間(この例では、「1秒間」)、I/Oスループットに寄与するアプリケーションの全て(この例では、「VM1」、「VM2」、「VM3」、「VM4」、及び「VM5)、それらのアプリケーションの優先順位レベル(この例では、「4(VM5)→最高優先順位」、「3(VM3)」、「2(VM2)」、「2(VM2)」及び「1(VM1)→最低優先順位)、それらのアプリケーションの総キャッシュ利用率(この例では、「29000」)、それらのアプリケーション内のそれぞれのアプリケーションの個々のキャッシュ利用率(この例では、「4000(VM5)」、「8000(VM4)」、「5000(VM3)」、「2000(VM2)」、及び「10000(VM1))、ユーザによって指定されたキャッシュ利用率のパーセンテージ(この例では、「100%」)、及びI/Oサイクル中のハイブリッドストレージシステム214の総容量(この例では、「40000IOPS」)を識別してもよい。
この例では、図6のI/Oサイクル600についての情報を
Figure 0006640242
に適用することによって、決定モジュール106は、次のように決定してもよい。29000=1y+2y+2y+3y+4y=12y、及び/又はy約2416(式中、「y」は、スケーリング因子を表す)。それに加えて、図6のI/Oサイクル600についての情報をScaled Priority WeightApplication=Priority LevelApplication×Scaling Factorに適用することによって、決定モジュール106は、次のように決定してもよい。Scaled Priority WeightVM1=1×2416=2416、Scaled Priority WeightVM2=2×2416=4832、Scaled Priority WeightVM3=2×2416=4832、Scaled Priority WeightVM4=3×2416=7248、及び/又はScaled Priority WeightVM5=4×2416=9664。更に、図6のI/Oサイクル600についての情報を
Figure 0006640242
に適用することによって、決定モジュール106は、次のように決定してもよい。
Figure 0006640242
決定モジュール106は、次いで、アプリケーション208(1)〜(N)が次の1秒間のI/Oサイクル中に後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度を計算してもよい。例えば、図6のI/Oサイクル600についての情報を
Figure 0006640242
に適用することによって、決定モジュール106は、次のように決定してもよい。
Figure 0006640242
更なる特定の例として、決定モジュール106は、図7のI/Oサイクル700についての情報に少なくとも部分的に基づいてアプリケーション208(1)〜(N)に割り当てるためのI/Oクレジットの数を計算してもよい。図7に示すように、I/Oサイクル700についての情報は、I/Oサイクルの継続期間(この例では、「1秒間」)、I/Oスループットに寄与するアプリケーションの全て(この例では、「VM1」、「VM2」、「VM3」、「VM4」、及び「VM5)、それらのアプリケーションの優先順位レベル(この例では、「4(VM5)→「最高優先順位」、「3(VM3)」、「2(VM2)」、「2(VM2)」、及び「1(VM1)→最低優先順位」)、それらのアプリケーションの総キャッシュ利用率(この例では、「29000」)、それらのアプリケーション内のそれぞれのアプリケーションの個々のキャッシュ利用率(この例では、「4000(VM5)」、8000(VM4)」、「5000(VM3)」、「2000(VM2)」、及び「10000(VM1)」)、ユーザによって指定されたキャッシュ利用率のパーセンテージ(この例では、「50%」)、及び、I/Oサイクル中のハイブリッドストレージシステム214の総容量(この例では、「40000IOPS」)を識別してもよい。
この例では、図7のI/Oサイクル700についての情報を
Figure 0006640242
に適用することによって、決定モジュール106は、次のように決定してもよい。29000=1y+2y+2y+3y+4y=12y、及び/又はy約2416(式中、「y」はスケーリング因子を表す)。更に、図7のI/Oサイクル700についての情報をScaled Priority WeightApplication=Priority LevelApplication×Scaling factorに適用することによって、決定モジュール106は、次のように決定してもよい。Scaled Priority WeightVM1=1×2416=2416、Scaled Priority WeightVM2=2×2416=4832、Scaled Priority WeightVM3=2×2416=4832、Scaled Priority WeightVM4=3×2416=7248、及び/又はScaled Priority WeightVM5=4×2416=9664。更に、図7のI/Oサイクル700についての情報を
Figure 0006640242
に適用することによって、決定モジュール106は、次のように決定してもよい。
Figure 0006640242
決定モジュール106は、次いで、アプリケーション208(1)〜(N)が次の1秒間のI/Oサイクル中に後続のI/Oスループットをハイブリッドストレージシステム214に送達することを許容される速度を計算してもよい。例えば、図6のI/Oサイクル600についての情報を
Figure 0006640242
に適用することによって、決定モジュール106は、次のように決定してもよい。
Figure 0006640242
このようにアプリケーション208(1)〜(N)に割り当てるためのI/Oクレジットの数を計算することによって、決定モジュール106は、変化するI/Oサイクル全体でアプリケーション208(1)〜(N)に対する合理的に正しい伝送速度及び/又はバンド幅シェアを維持するQoS決定をすることが可能であってもよい。更に、このようにアプリケーション208(1)〜(N)に割り当てるためにクレジットの数を計算することによって、決定モジュール106は、最低優先順位アプリケーションが最高キャッシュ利用率を有し、及び/又は最高優先順位アプリケーションが最低キャッシュ利用率を有するという可能性が低い事象においてさえソースの優先順位逆転を回避することが可能であり得る。
図3に戻って、ステップ308では、本明細書で説明するシステムのうちの1つ若しくは2つ以上は、アプリケーションが後続のI/Oスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のI/Oスループットを調節する。例えば、調節モジュール108は、図2のコンピューティングデバイス202の部分として、速度に少なくとも部分的に基づいて後続の期間にわたって1つ若しくは2つ以上のアプリケーション208(1)〜(N)と関連した後続のI/Oスループットを調節及び/又は制御してもよい。
本明細書で説明するシステムは、様々な態様及び/又は局面でステップ308を実施してもよい。いくつかの例では、調節モジュール108は、ハイブリッドストレージシステム214が後続の期間中にアプリケーション208(1)〜(N)のうちの任意のものと関連したI/O動作の特定の数を超過して取り扱わないことを保証にすることによって、後続のI/Oスループットを制御してもよい。例えば、調節モジュール108は、アプリケーション208(1)に、アプリケーション208(1)が次の1秒間のI/Oサイクル中に後続のI/Oスループットに寄与することを許容されるI/O動作の近似量に対応する数のI/Oクレジットを割り当ててもよい。このようにI/Oクレジットの数をアプリケーション208(1)に割り当てることによって、調節モジュール108は、ハイブリッドストレージシステム214が、次の1秒間のI/Oサイクル中に割り当てられたI/Oクレジットの数を上回っている数のアプリケーション208(1)から生じるI/O動作をサービス及び/又は処理しないことを保証してもよい。
一例では、調節モジュール108は、アプリケーション208(1)が、割り当てられたI/Oクレジットの数を上回る数のI/O動作を次の1秒間のI/Oサイクルにわたってハイブリッドストレージシステム214に送達することを防止してもよい。それに付加して又はその代替として、調節モジュール108は、ハイブリッドストレージシステム214が次の1秒間のI/Oサイクル中に割り当てられたI/Oクレジットの数を上回っている数のアプリケーション208(1)から生じるI/O動作を実施することを防止してもよい。
いくつかの例では、本明細書で説明するシステム及び方法は、ステップ302、304、306、及び308のうちの1つ若しくは2つ以上を繰り返すことにより、実質的に連続する基礎(例えば、I/Oサイクル毎)においてハイブリッドストレージシステム214及び/又はアプリケーション208(1)〜(N)の特性(I/Oスループット、I/Oクレジット、及び/又は送達速度等)を再評価してもよい。例えば、次の1秒間のI/Oサイクル中に、監視モジュール104は、ハイブリッドストレージシステム214の少なくとも1つの性能測定を監視してもよい。この例では、決定モジュール106は、次の1秒間のI/Oサイクル中にストレージデバイス206(N)に対してストレージデバイス206(1)によって取り扱われるI/Oスループットの近似の又は正確な量を決定してもよい。決定モジュール106は、次いで、この量に少なくとも部分的に基づいて、アプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上が、後の1秒間のI/Oサイクル中にハイブリッドストレージシステム214に更なるI/Oスループットを送達することを許容される速度を決定してもよい。最後に、調節モジュール108は、その後の1秒間のI/Oサイクル中にアプリケーション208(1)〜(N)のうちの1つ若しくは2つ以上と関連した更なるI/Oスループットを調節してもよい。
図3の例示的な方法300と関連して上記で説明したように、QoSアプリケーションは、1秒間の期間にわたってハイブリッドストレージシステムのI/Oスループットを監視してもよい。このようにハイブリッドストレージシステムのI/Oスループットを監視することによって、QoSアプリケーションは、I/O動作がSSD又はキャッシュによってサービスされた回数、及びI/O動作がその1秒間の期間中にディスクによってサービスされた回数を決定してもよい。このようにI/O動作がこれらの異なるタイプのストレージデバイスによってサービスされた回数を決定すると、QoSアプリケーションは、次の1秒間の期間にわたって特定のアプリケーションから生じるI/O動作に対してI/Oクレジットを割り当て及び/又は実質的に安定した送達速度を決定するために、基準及び/又は履歴基準値としてそのI/O動作の数を使用してもよい。QoSは、それぞれの1秒間の期間中に又はその前にアプリケーションに割り当てられるI/Oクレジットを再評価し続けてもよい。
図8は、本明細書において説明及び/又は例示される実施形態のうちの1つ若しくは2つ以上を実装することが可能な例示的なコンピューティングシステム810のブロック図である。例えば、コンピューティングシステム810の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書において説明されるステップのうちの1つ若しくは2つ以上(図3に例示するステップのうちの1つ若しくは2つ以上等)を実施してもよいか及び/又は実施するための手段であってもよい。コンピューティングシステム810の全て又は一部分は、また、本明細書において説明及び/又は例示する任意の他のステップ、方法、又はプロセスを実施してもよいか及び/又は実施するための手段であってもよい。
コンピューティングシステム810は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサコンピューティングデバイス又はシステムを広く表す。コンピューティングシステム810の例としては、限定することなく、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散コンピューティングシステム、ハンドヘルドデバイス、又は任意の他のコンピューティングシステム又はデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム810は、少なくとも1つのプロセッサ814、及びシステムメモリ816を含んでもよい。
プロセッサ814は、データを処理すること、又は命令を解釈及び実行することが可能な任意のタイプ又は形式の物理処理ユニット(例えば、ハードウェア実装中央処理ユニット)を概して表す。特定の実施形態において、プロセッサ814は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ814に、本明細書において説明及び/又は例示する例示的な実施形態のうちの1つ若しくは2つ以上の機能を実施させてもよい。
システムメモリ816は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は非揮発性ストレージデバイス若しくは媒体を概して表す。システムメモリ816の例としては、限定することなく、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、特定の実施形態においては、コンピューティングシステム810は、揮発性メモリユニット(例えば、システムメモリ816等)、及び非揮発性ストレージデバイス(例えば、以下で詳細に説明するような1次ストレージデバイス832等)の両方を含んでもよい。一実施例において、図1からのモジュール102のうちの1つ若しくは2つ以上は、システムメモリ816にロードされてもよい。
ある実施形態において、例示的なコンピューティングシステム810は、また、プロセッサ814及びシステムメモリ816に加えて、1つ若しくは2つ以上の構成要素又は要素を含んでもよい。例えば、図8に示すように、コンピューティングシステム810は、メモリコントローラ818と、入力/出力(I/O)コントローラ820と、通信インターフェース822とを含んでもよく、これらのそれぞれは、通信インフラストラクチャ812を介して相互接続されてもよい。通信インフラストラクチャ812は、コンピューティングデバイスの1つ若しくは2つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ812の例としては、限定することなく、通信バス(業界標準アーキテクチャ(ISA)、周辺構成要素相互接続(PCI)、PCIエクスプレス(PCIe)、又は類似のバス等)、及びネットワークが挙げられる。
メモリコントローラ818は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム810の1つ若しくは2つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ818は、通信インフラストラクチャ812を介して、プロセッサ814、システムメモリ816、及びI/Oコントローラ820間の通信を制御してもよい。
I/Oコントローラ820は、コンピューティングデバイスの入出力機能を調整及び/又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、I/Oコントローラ820は、プロセッサ814、システムメモリ816、通信インターフェース822、表示アダプタ826、入力インターフェース830、及びストレージインターフェース834等のコンピューティングシステム810の1つ若しくは2つ以上の要素間のデータの転送を制御してもよく、又は容易にしてもよい。
通信インターフェース822は、例示的なコンピューティングシステム810と、1つ若しくは2つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態では、通信インターフェース822は、コンピューティングシステム810と、追加のコンピューティングシステムを含む私的又は公的ネットワークとの間の通信を容易にしてもよい。通信インターフェース822の例としては、限定することなく、有線ネットワークインターフェース(ネットワークインターフェースカード等)、無線ネットワークインターフェース(無線ネットワークインターフェースカード等)、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース822は、インターネット等のネットワークへの直接的なリンクを介して、遠隔サーバへの直接的な接続を提供してもよい。通信インターフェース822は、また、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワーク等)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
ある実施形態において、通信インターフェース822はまた、外部バス又は通信チャネルを介して、コンピューティングシステム810と、1つ若しくは2つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されるホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース(SCSI)ホストアダプタ、ユニバーサルシリアルバス(USB)ホストアダプタ、米国電気電子技術者協会(IEEE)1394ホストアダプタ、アドバンストテクノロジーアタッチメント(ATA)、パラレルATA(PATA)、シリアルATA(SATA)、及びエクスターナルSATA(eSATA)ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット(登録商標)アダプタなどが挙げられる。通信インターフェース822は、また、コンピューティングシステム810が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース822は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
図8に示すように、コンピューティングシステム810は、また、表示アダプタ826を介して、通信インフラストラクチャ812に連結される少なくとも1つの表示デバイス824を含んでもよい。表示デバイス824は、表示アダプタ826によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ826は、表示デバイス824上に表示するために、通信インフラストラクチャ812から(又は当該技術分野において既知のように、フレームバッファから)、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
図8に示すように、例示的なコンピューティングシステム810は、また、入力インターフェース830を介して、通信インフラストラクチャ812に連結される少なくとも1つの入力デバイス828を含んでもよい。入力デバイス828は、コンピュータ又はヒトのいずれかによって生成された入力を、例示的なコンピューティングシステム810に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス828の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
図8に示すように、例示的なコンピューティングシステム810は、また、ストレージインターフェース834を介して、通信インフラストラクチャ812に連結される1次ストレージデバイス832及びバックアップストレージデバイス833を含んでもよい。ストレージデバイス832及び833は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。例えば、ストレージデバイス832及び833は、磁気ディスクドライブ(例えば、HDD)、SSD、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であってもよい。ストレージインターフェース834は、コンピューティングシステム810のストレージデバイス832及び833と、他の構成要素との間でデータを転送するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。
特定の実施形態では、ストレージデバイス832及び833は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取るように、及び/又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。ストレージデバイス832及び833は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム810にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、ストレージデバイス832及び833は、ソフトウェア、データ、他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。ストレージデバイス832及び833は、コンピューティングシステム810の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
多くの他のデバイス又はサブシステムが、コンピューティングシステム810に接続されてもよい。逆に、図8に示す構成要素及びデバイスの全てが、本明細書において説明及び/又は例示する実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムは、また、図8に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム810は、また、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの1つ若しくは2つ以上は、コンピュータ可読媒体上に、コンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)としてコード化され得る。「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波等の伝送タイプ媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク)、光記憶媒体(例えば、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及びBLU−RAYディスク)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュ媒体)等の非一時的タイプ媒体、並びに他の分散システムが挙げられる。
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム810にロードされてもよい。次いで、コンピュータ可読媒体上に記憶されたコンピュータプログラムの全て又は一部分は、システムメモリ816及び/又はストレージデバイス832及び833の種々の部分に記憶されてもよい。プロセッサ814によって実行されるとき、コンピューティングシステム810にロードされたコンピュータプログラムは、本明細書において説明及び/又は例示する例示的な実施形態のうちの1つ若しくは2つ以上の機能をプロセッサ814に実施させてもよく及び/又はそれらを実施するための手段であってもよい。更に、又は代替的に、本明細書において説明及び/又は例解される例示的な実施形態のうちの1つ若しくは2つ以上は、ファームウェア及び/又はハードウェアにおいて実装され得る。例えば、コンピューティングシステム810は、本明細書において開示される例示的な実施形態のうちの1つ若しくは2つ以上を実装するように適合された特定用途向け集積回路(ASIC)として構成されてもよい。
図9は、クライアントシステム910、920、及び930、並びにサーバ940及び945がネットワーク950に連結されてもよい例示的なネットワークアーキテクチャ900のブロック図である。上記で詳述されたように、ネットワークアーキテクチャ900の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書において開示される工程のうちの1つ若しくは2つ以上(図3に例示する工程のうちの1つ若しくは2つ以上等)を実施してもよく、及び/又は実施するための手段であってもよい。ネットワークアーキテクチャ900の全て又は一部分は、また、本開示において記載された他の工程及び機能を実施するために使用されてもよく、及び/又は実施するための手段であってもよい。
クライアントシステム910、920、及び930は、図8の例示的なコンピューティングシステム810等の任意のタイプ又は形式のコンピューティングデバイス又はシステムを概して表す。同様に、サーバ940及び945は、種々のデータベースサービスを提供するように、及び/又はあるソフトウェアアプリケーションを動作させるように構成されたアプリケーションサーバ又はデータベースサーバ等のコンピューティングデバイス又はシステムを概して表す。ネットワーク950は、例えば、イントラネット、WAN、LAN、PAN、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを概して表す。一例では、クライアントシステム910、920、及び/又はは930、並びに/或いはサーバ940及び/又は945は、図1からのシステム100の全て又は一部分を含んでもよい。
図9に示すように、1つ若しくは2つ以上のストレージデバイス960(1)〜(N)は、サーバ940に直接取設されてもよい。同様に、1つ若しくは2つ以上のストレージデバイス970(1)〜(N)は、サーバ945に直接取設されてもよい。ストレージデバイス960(1)〜(N)及びストレージデバイス970(1)〜(N)は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。特定の実施形態では、ストレージデバイス960(1)〜(N)及びストレージデバイス970(1)〜(N)は、ネットワークファイルシステム(NFS)、サーバメッセージブロック(SMB)、又は共通インターネットファイルシステム(CIFS)等の種々のプロトコルを使用して、サーバ940及び945と通信するように構成されたネットワーク接続型記憶(NAS)デバイスを表してもよい。
サーバ940及び945は、また、ストレージエリアネットワーク(SAN)ファブリック980に接続されてもよい。SANファブリック980は、複数のストレージデバイス間の通信を容易にすることが可能な任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。SANファブリック980は、サーバ940及び945と、複数のストレージデバイス990(1)〜(N)及び/又は知的ストレージアレイ995との間の通信を容易にしてもよい。SANファブリック980は、また、デバイス990(1)〜(N)及びアレイ995が、クライアントシステム910、920、及び930にローカルに取設されたデバイスとして見えるような態様で、ネットワーク950並びにサーバ940及び945を介して、クライアントシステム910、920、及び930と、ストレージデバイス990(1)〜(N)及び/又は知的記憶アレイ995との間の通信を容易にしてもよい。ストレージデバイス960(1)〜(N)及びストレージデバイス970(1)〜(N)と同様に、ストレージデバイス990(1)〜(N)及び知的ストレージアレイ995は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。
特定の実施形態では、図8の例示的なコンピューティングシステム810を参照すると、図8の通信インターフェース822等の通信インターフェースは、それぞれのクライアントシステム910、920、及び930と、ネットワーク950との間の接続性を提供するために使用されてもよい。クライアントシステム910、920、及び930は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ940又は945上の情報にアクセスすることが可能であってもよい。かかるソフトウェアは、クライアントシステム910、920、及び930が、サーバ940、サーバ945、ストレージデバイス960(1)〜(N)、ストレージデバイス970(1)〜(N)、ストレージデバイス990(1)〜(N)、又は知的ストレージアレイ995によってホストされるデータにアクセスすることを可能にしてもよい。図9は、データを交換するためのネットワーク(インターネット等)の使用を描写するが、本明細書において説明及び/又は例示する実施形態は、インターネット又はいずれの特定のネットワークベースの環境にも限定されない。
少なくとも1つの実施形態において、本明細書で開示される例示的な実施形態のうちの1つ若しくは2つ以上の全て又は一部分は、コンピュータプログラムとしてコード化されてもよく、サーバ940、サーバ945、ストレージデバイス960(1)〜(N)、ストレージデバイス970(1)〜(N)、ストレージデバイス990(1)〜(N)、知的記憶アレイ995、又はこれらの任意の組み合わせにロードされ、これらによって実行されてもよい。本明細書において開示される例示的な実施形態のうちの1つ若しくは2つ以上の全て又は一部分は、また、コンピュータプログラムとしてコード化され、サーバ940内に記憶され、サーバ945によって実行され、ネットワーク950を通じてクライアントシステム910、920、及び930に分散されてもよい。
上記で詳述したように、コンピューティングシステム810及び/又はネットワークアーキテクチャ900の1つ若しくは2つ以上の構成要素は、単独又は他の要素との組合せのいずれかで、ハイブリッドストレージシステム内のサービス品質を改善するための例示的な方法の1つ若しくは2つ以上のステップを実施してもよく、及び/又は実施するための手段であってもよい。
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び/又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び/又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア(又はこれらの任意の組み合わせ)構成を使用して、個々に、及び/又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例示的であると見なされるべきである。
いくつかの例では、図1の例示的なシステム100の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
種々の実施形態において、図1の例示的なシステム100の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるソフトウェアモジュールは、本明細書において説明される機能のうちの1つ若しくは2つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム(例えば、サーバ)を構成し得る。例えば、本明細書において説明されるソフトウェアモジュールのうちの1つ若しくは2つ以上は、2つ若しくは3つ以上のクライアント(例えば、顧客)が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客(即ち、テナント)間でアプリケーション、オペレーティングシステム、処理システム、及び/又は記憶システムを共有し得る。本明細書において説明されるモジュールのうちの1つ若しくは2つ以上はまた、ある顧客が別の顧客のデータ及び/又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び/又は構成情報を分割し得る。
種々の実施形態によると、図1の例示的なシステム100の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び/又はデータは、仮想マシン内に存在し得る、及び/又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ(例えば、ハイパーバイザ)によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。更に、又は代替的に、本明細書において説明されるモジュール及び/又はデータは、仮想化層内に存在し得る、及び/又はそこで実行し得る。本明細書において使用される際、「仮想化層」という用語は、概して、オペレーティングシステム環境に重なる、及び/又はそれから抽象化される、任意のデータ層及び/又はアプリケーション層を指す。仮想化層は、仮想化層を、根本的な基本オペレーティングシステムの一部であるかのように提示する、ソフトウェア仮想化ソリューション(例えば、ファイルシステムフィルタ)によって、管理され得る。例えば、ソフトウェア仮想化ソリューションは、最初は基本ファイルシステム及び/又はレジストリ内の場所に向けられた呼び出しを、仮想化層内の場所にリダイレクトし得る。
一部の実施例において、図1の例示的なシステム100の全て又は一部分は、モバイルコンピューティング環境の一部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス(例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス)などを含む、広範なモバイルコンピューティングデバイスによって実装され得る。一部の実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に1つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ(例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される)、システムレベルの構成への修正を制限する、及び/又は第3者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する(例えば、承認されたアプリケーションストアのみから得る)能力などを制限する、制限されたプラットフォームを含む、1つ若しくは2つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び/又はモバイルコンピューティング環境と相互作用し得る。
加えて、図1の例示的なシステム100の全て又は一部分は、情報管理のための1つ若しくは2つ以上のシステムの一部分を表し得る、それらの相互作用し得る、それらによって生成されるデータを消費し得る、及び/又はそれらによって消費されるデータを生成し得る。本明細書において使用される際、「情報管理」という用語は、データの保護、組織化、及び/又は記憶を指し得る。情報管理のためのシステムの例としては、限定することなく、記憶システム、バックアップシステム、アーカイバルシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどが挙げられ得る。
一部の実施形態において、図1の例示的なシステム100の全て又は一部分は、情報セキュリティのための1つ若しくは2つ以上のシステムの一部分を表し得る、それらによって保護されるデータを生成し得る、及び/又はそれらと通信し得る。本明細書において使用される際、「情報セキュリティ」という用語は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例としては、限定することなく、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、アイデンティティ認証システム、アクセス制御システム、暗号化システム、ポリシーコンプライアンスシステム、侵入検出及び防止システム、電子ディスカバリシステムなどが挙げられ得る。
一部の実施例によると、図1の例示的なシステム100の全て又は一部分は、エンドポイントセキュリティのための1つ若しくは2つ以上のシステムの一部分を表し得る、それらと通信し得る、及び/又はそれらから保護を受け得る。本明細書において使用される際、「エンドポイントセキュリティ」という用語は、不法及び/又は違法な使用、アクセス、及び/又は制御からのエンドポイントシステムの保護を指し得る。エンドポイント保護のためのシステムの例としては、限定することなく、マルウェア対策システム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどが挙げられ得る。
本明細書において説明及び/又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び/又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び/又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの1つ若しくは2つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び/又は例解されているが、これらの例示的な実施形態のうちの1つ若しくは2つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するソフトウェアモジュールを使用して、実装され得る。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。一部の実施形態において、これらのソフトウェアモジュールは、本明細書において開示される例示的な実施形態のうちの1つ若しくは2つ以上を実施するように、コンピューティングシステムを構成し得る。
加えて、本明細書において説明されるモジュールのうちの1つ若しくは2つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を、ある形態から別の形態に変換し得る。例えば、本明細書で列挙されるモジュールのうちの1つ若しくは2つ以上は、変換されるべきI/Oスループットを受信し、I/Oスループットを変換し、変換の結果を出力することにより後続のI/Oスループットについての送達速度を決定し、変換の結果を使用して後続のI/Oスループットを調節し、そして、将来の使用のために変換の結果を記憶してもよい。それに付加して又はその代替として、本明細書において列挙されるモジュールのうちの1つ若しくは2つ以上は、コンピューティングデバイス上で実行すること、コンピューティングデバイス上にデータを記憶すること、及び/又はそうでなければ、コンピューティングデバイスと相互作用することによって、物理コンピューティングデバイスのプロセッサ、揮発性メモリ、非揮発性メモリ、及び/又は任意の他の部分を1つの形式からもう1つの形式に変換してもよい。
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、包括的であること、又は開示されるいかなる正確な形態にも限定されることを意図されない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
別途記載されない限り、「〜に接続される(connected to)」及び「〜に連結される(coupled to)」という用語(及びそれらの派生語)は、本明細書及び請求項において使用される際、直接的及び間接的(即ち、他の要素又は構成要素を介した)接続の両方を許容するとして解釈されるものとする。加えて、「a」又は「an」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも1つ(at least one of)」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む(including)」及び「有する(having)」という用語(及びそれらの派生語)は、本明細書及び請求項において使用される際、「備える(comprising)」という語と同義的であり、かつ同じ意味を有する。

Claims (14)

  1. ハイブリッドストレージシステム内のサービス品質を改善するためのコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも1つのプロセッサを備えるコンピューティングデバイスによって実施されており、前記方法は、
    第1の入力/出力(I/O)サイクル中に、少なくとも1つのアプリケーションと関連したI/O動作を取り扱うハイブリッドストレージシステムの少なくとも1つの性能測定を監視することであって、前記ハイブリッドストレージシステムは、
    高速ストレージデバイスと、
    前記高速ストレージデバイスより低速の低速ストレージデバイスと、
    を備える、監視することと、
    前記I/O動作の処理時間に少なくとも部分的に基づいて、前記第1のI/Oサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記I/O動作の量を推測することと、
    前記アプリケーションに優先順位レベルを割り当てることと、
    前記第1のI/Oサイクル中に前記ハイブリッドストレージシステムによって取り扱われる前記I/O動作に寄与する少なくとも1つの別のアプリケーションに別の優先順位レベルを割り当てることと、
    スケーリング因子を前記アプリケーションの優先順位レベルに掛けることによって、前記アプリケーションの優先順位レベルをスケーリングすることと、
    スケーリング因子を前記別のアプリケーションの別の優先順位レベルに掛けることによって、前記別のアプリケーションの別の優先順位レベルをスケーリングすることと、
    前記アプリケーションが次のI/Oサイクルである第2のI/Oサイクル中に前記ハイブリッドストレージシステムに送達することを許容される後続のI/O動作の速度を計算することであって、
    前記第1のI/Oサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われるI/O動作の量、
    前記アプリケーションから生じ、前記第1のI/Oサイクル中に前記高速ストレージデバイスによって取り扱われるI/O動作の量、
    前記高速ストレージデバイスのユーザ指定のパーセンテージ、
    前記アプリケーションのスケーリングされた優先順位レベル、
    前記アプリケーションのスケーリングされた優先順位レベルと前記別のアプリケーションのスケーリングされた別の優先順位レベルとの合計、
    前記ハイブリッドストレージシステムの総容量、及び、
    前記第2のI/Oサイクルの期間、
    に少なくとも部分的に基づいて、計算することと、及び、
    前記第2のI/Oサイクル中に前記アプリケーションと関連した前記後続のI/O動作を調節することであって、
    前記アプリケーションに、前記アプリケーションが前記第2のI/Oサイクル中前記ハイブリッドストレージシステムに送達することを許容される前記後続のI/O動作の前記計算された速度に対応するI/Oクレジットのある数を割り当てることと、
    前記第2のI/Oサイクル中に前記アプリケーションに計算された速度を適用すること、によって調節することと、
    を含む、方法。
  2. 前記ハイブリッドストレージシステムの性能測定を監視することは、
    前記第1のI/Oサイクル中に前記アプリケーションと関連した前記高速ストレージデバイスで実施されるI/O動作の数をカウントすることと、
    前記第1のI/Oサイクル中に前記アプリケーションと関連した前記低速ストレージデバイスで実施されるI/O動作の数をカウントすることと、
    のうちの少なくとも1つを含む、請求項1に記載の方法。
  3. 前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記I/O動作の量を推定することは、前記第1のI/Oサイクル中に前記低速ストレージデバイスに対する前記高速ストレージデバイスによってサービスされた前記I/O動作のパーセンテージを決定することを含む、請求項1に記載の方法。
  4. 前記アプリケーションが前記後続のI/O動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を計算することは、前記高速ストレージデバイスによってサービスされる前記I/O動作のパーセンテージを前記アプリケーションが前記後続のI/O動作を前記ハイブリッドストレージシステムに送達することを許容される速度を計算するために使用される式に組み込むことを含む、請求項3に記載の方法。
  5. 前記アプリケーションが記ハイブリッドストレージシステムに送達することを許容される前記後続のI/O動作の速度を計算することは、
    前記アプリケーションが前記第2のI/Oサイクル中前記ハイブリッドストレージシステムに送達することを許容される前記後続のI/O動作の速度を、
    前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記I/O動作の量と、
    前記別のアプリケーションに割り当てられた別の優先順位レベルに対する前記アプリケーションの優先順位レベルと、
    に少なくとも部分的に基づいて減少させること、
    を含む、請求項3に記載の方法。
  6. 前記アプリケーションが前記後続のI/O動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を減少させることは、前記第1のI/Oサイクル中に低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記I/O動作の量と、前記アプリケーションに割り当てられた優先順位レベルとを、前記アプリケーションが前記後続のI/O動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を計算するために使用される式に組み込むことを含む、請求項5に記載の方法。
  7. 前記第2のI/Oサイクル中に前記アプリケーションと関連した前記後続のI/O動作を調節することは、
    前記ハイブリッドストレージシステムが前記第2のI/Oサイクル中に前記アプリケーションと関連した割り当てられたI/Oクレジットの数を上回る数のI/O動作を取り扱わないことを保証すること、
    を含む、請求項1に記載の方法。
  8. 前記ハイブリッドストレージシステムが前記割り当てられたI/Oクレジットの数を上回る数のI/O動作を取り扱わないことを保証することは、
    前記アプリケーションが前記第2のI/Oサイクル中に前記割り当てられたI/Oクレジットの数を上回る数のI/O動作を前記ハイブリッドストレージシステムに送達することを防止することと、
    前記ハイブリッドストレージシステムが前記第2のI/Oサイクル中に前記アプリケーションと関連した前記割り当てられたI/Oクレジットの数を上回る数のI/O動作を実施することを防止することと、
    のうちの少なくとも1つを含む、請求項7に記載の方法。
  9. 前記アプリケーションは、
    仮想マシンと、
    複数の仮想マシンと、
    のうちの少なくとも1つを備える、請求項1に記載の方法。
  10. ハイブリッドストレージシステム内のサービス品質を改善するためのシステムであって、前記システムは、
    第1の入力/出力(I/O)サイクル中に、少なくとも1つのアプリケーションと関連したI/O動作を取り扱うハイブリッドストレージシステムの少なくとも1つの性能測定を監視する、メモリに記憶された監視モジュールであって、前記ハイブリッドストレージシステムは、
    高速ストレージデバイスと、
    前記高速ストレージデバイスより速度が遅い低速ストレージデバイスと、
    を備え、
    前記I/O動作の処理時間に少なくとも部分的に基づいて、前記第1のI/Oサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記I/O動作の量を推測する、監視モジュールと、
    メモリに記憶された決定モジュールであって、
    前記アプリケーションに優先順位レベルを割り当て、
    前記第1のI/Oサイクル中に前記ハイブリッドストレージシステムによって取り扱われる前記I/O動作に寄与する少なくとも1つの別のアプリケーションに別の優先順位レベルを割り当て、
    スケーリング因子を前記アプリケーションの優先順位レベルに掛けることによって、前記アプリケーションの優先順位レベルをスケーリングし、
    スケーリング因子を前記別のアプリケーションの別の優先順位レベルに掛けることによって、前記別のアプリケーションの別の優先順位レベルをスケーリングし、
    前記アプリケーションが次のI/Oサイクルである第2のI/Oサイクル中に前記ハイブリッドストレージシステムに送達することを許容される後続のI/O動作の速度を計算するものであり、
    前記第1のI/Oサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われるI/O動作の量、
    前記アプリケーションから生じ、前記第1のI/Oサイクル中に前記高速ストレージデバイスによって取り扱われるI/O動作の量、
    前記高速ストレージデバイスのユーザ指定のパーセンテージ、
    前記アプリケーションのスケーリングされた優先順位レベル、
    前記アプリケーションのスケーリングされた優先順位レベルと前記別のアプリケーションのスケーリングされた別の優先順位レベルとの合計、
    前記ハイブリッドストレージシステムの総容量、及び、
    前記第2のI/Oサイクルの期間、
    に少なくとも部分的に基づいて計算する、決定モジュールと、
    メモリに記憶された調節モジュールであって、
    前記第2のI/Oサイクル中に前記アプリケーションと関連した前記後続のI/O動作を、
    前記アプリケーションに、前記アプリケーションが前記第2のI/Oサイクル中前記ハイブリッドストレージシステムに送達することを許容される前記後続のI/O動作の前記計算された速度に対応するI/Oクレジットのある数を割り当てることと、
    前記第2のI/Oサイクル中に前記アプリケーションに計算された速度を適用すること、によって調節する、調節モジュールと、
    前記監視モジュール、前記決定モジュール、及び前記調節モジュールを実行する少なくとも1つのプロセッサと、
    を備える、システム。
  11. 前記監視モジュールは、前記ハイブリッドストレージシステムの性能測定を、
    前記第1のI/Oサイクル中に前記アプリケーションと関連して前記高速ストレージデバイスで実施される前記I/O動作の数をカウントすることと、
    前記第1のI/Oサイクル中に前記アプリケーションと関連して前記低速ストレージデバイスで実施される前記I/O動作の数をカウントすることと、
    のうちの少なくとも1つによって監視する、請求項10に記載のシステム。
  12. 前記決定モジュールは、前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記I/O動作の量を、前記第1のI/Oサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによってサービスされた前記I/O動作のパーセンテージを決定することによって減少させる、請求項10に記載のシステム。
  13. 前記決定モジュールは、前記アプリケーションが前記後続のI/O動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を、前記高速ストレージデバイスによってサービスされる前記I/O動作のパーセンテージを前記アプリケーションが前記後続のI/O動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を計算するために使用される式に組み込むことによって減少させる、請求項12に記載のシステム。
  14. 1つ又は2つ以上のコンピュータ実行可能命令を備える非一過性コンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
    第1の入力/出力(I/O)サイクル中に、少なくとも1つのアプリケーションと関連したI/O動作を取り扱うハイブリッドストレージシステムの少なくとも1つの性能測定を監視することであって、前記ハイブリッドストレージシステムは、
    高速ストレージデバイスと、
    前記高速ストレージデバイスより速度が遅い低速ストレージデバイスと、
    を備える、監視することと、
    前記I/O動作の処理時間に少なくとも部分的に基づいて、前記第1のI/Oサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記I/O動作の量を推定することと、
    前記アプリケーションに優先順位レベルを割り当てることと、
    前記第1のI/Oサイクル中に前記ハイブリッドストレージシステムによって取り扱われる前記I/O動作に寄与する少なくとも1つの別のアプリケーションに別の優先順位レベルを割り当てることと、
    スケーリング因子を前記アプリケーションの優先順位レベルに掛けることによって、前記アプリケーションの優先順位レベルをスケーリングすることと、
    スケーリング因子を前記別のアプリケーションの別の優先順位レベルに掛けることによって、前記別のアプリケーションの別の優先順位レベルをスケーリングすることと、
    前記アプリケーションが次のI/Oサイクルである第2のI/Oサイクル中に前記ハイブリッドストレージシステムに送達することを許容される後続のI/O動作の速度を計算することであって、
    前記第1のI/Oサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われるI/O動作の量、
    前記アプリケーションから生じ、前記第1のI/Oサイクル中に前記高速ストレージデバイスによって取り扱われるI/O動作の量、
    前記高速ストレージデバイスのユーザ指定のパーセンテージ、
    前記アプリケーションのスケーリングされた優先順位レベル、
    前記アプリケーションのスケーリングされた優先順位レベルと前記別のアプリケーションのスケーリングされた別の優先順位レベルとの合計、
    前記ハイブリッドストレージシステムの総容量、及び、
    前記第2のI/Oサイクルの期間、
    に少なくとも部分的に基づいて、計算することと、及び、
    前記第2のI/Oサイクル中に前記アプリケーションと関連した前記後続のI/O動作を、前記アプリケーションに、前記アプリケーションが前記第2のI/Oサイクル中前記ハイブリッドストレージシステムに送達することを許容される前記後続のI/O動作の前記計算された速度に対応するI/Oクレジットのある数を割り当てること、によって調節することと、
    を行わせる、非一過性コンピュータ可読媒体。
JP2017549674A 2015-03-31 2016-03-28 ハイブリッドストレージシステム内のサービス品質を改善するためのシステム及び方法 Active JP6640242B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/673,898 2015-03-31
US14/673,898 US10198192B2 (en) 2015-03-31 2015-03-31 Systems and methods for improving quality of service within hybrid storage systems
PCT/US2016/024589 WO2016160743A1 (en) 2015-03-31 2016-03-28 Systems and methods for improving quality of service within hybrid storage systems

Publications (2)

Publication Number Publication Date
JP2018514027A JP2018514027A (ja) 2018-05-31
JP6640242B2 true JP6640242B2 (ja) 2020-02-05

Family

ID=55750464

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017549674A Active JP6640242B2 (ja) 2015-03-31 2016-03-28 ハイブリッドストレージシステム内のサービス品質を改善するためのシステム及び方法

Country Status (5)

Country Link
US (1) US10198192B2 (ja)
EP (1) EP3278208A1 (ja)
JP (1) JP6640242B2 (ja)
AU (1) AU2016243416B2 (ja)
WO (1) WO2016160743A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201517121D0 (en) * 2015-09-28 2015-11-11 Provost Fellows & Scholars College Of The Holy Undivided Trinity Of Queen Elizabeth Near Dublin Method and system for computing bandwidth requirement in a cellular network
KR102505855B1 (ko) * 2016-01-11 2023-03-03 삼성전자 주식회사 가중치 기반 멀티-큐 가능 리소스 공유 방법
US10852951B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for improving I/O performance by introducing extent pool level I/O credits and user I/O credits throttling on Mapped RAID
KR102641520B1 (ko) * 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
US11595204B2 (en) * 2019-06-04 2023-02-28 EMC IP Holding Company LLC Adaptive re-keying in a storage system
CN110727400A (zh) * 2019-09-05 2020-01-24 深圳平安通信科技有限公司 用于分布式存储系统的流量控制方法、装置、设备和介质
US11409439B2 (en) 2020-11-10 2022-08-09 Samsung Electronics Co., Ltd. Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device
JP7001847B1 (ja) * 2021-01-06 2022-01-20 株式会社日立製作所 情報処理システムおよびバースティング制御方法
US11698914B1 (en) * 2021-12-10 2023-07-11 Amazon Technologies, Inc. Serverless managed bulk import on a global NoSQL database with selective back pressure

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5420983A (en) * 1992-08-12 1995-05-30 Digital Equipment Corporation Method for merging memory blocks, fetching associated disk chunk, merging memory blocks with the disk chunk, and writing the merged data
KR20070054266A (ko) * 2001-01-24 2007-05-28 텔레비게이션 인크 이동 환경을 위한 실시간 항법 시스템
JP2004050978A (ja) * 2002-07-19 2004-02-19 Honda Motor Co Ltd タイヤの線形領域判定装置及びタイヤの線形領域判定プログラム、並びに車両の運転操作装置及びステアバイワイヤ車両の転舵制御方法
US7117324B2 (en) 2002-10-18 2006-10-03 International Business Machines Corporation Simultaneous data backup in a computer system
US7240115B2 (en) * 2002-12-10 2007-07-03 International Business Machines Corporation Programmatically allocating memory among competing services in a distributed computing environment
US7127568B2 (en) * 2003-01-23 2006-10-24 Hitachi, Ltd. Throttling in storage systems
JP4066833B2 (ja) * 2003-02-18 2008-03-26 日本電気株式会社 ディスクアレイ制御装置及び方法並びにディスクアレイ制御プログラム
US20050286863A1 (en) * 2004-06-23 2005-12-29 Howarth Rolf M Reliable capture of digital video images for automated indexing, archiving and editing
JP2006350780A (ja) * 2005-06-17 2006-12-28 Hitachi Ltd キャッシュ割当制御方法
US20070079103A1 (en) * 2005-10-05 2007-04-05 Yasuyuki Mimatsu Method for resource management in a logically partitioned storage system
TWI305244B (en) * 2006-07-17 2009-01-11 Delta Electronics Inc Fan, motor and bearing structure
US7844839B2 (en) * 2006-12-07 2010-11-30 Juniper Networks, Inc. Distribution of network communications based on server power consumption
US9467505B2 (en) 2010-08-27 2016-10-11 Vmware, Inc. Saturation detection and admission control for storage devices
US8862845B2 (en) * 2010-12-06 2014-10-14 Xiotech Corporation Application profiling in a data storage array
US9026759B2 (en) * 2011-11-21 2015-05-05 Hitachi, Ltd. Storage system management apparatus and management method
US20130185531A1 (en) * 2012-01-17 2013-07-18 Hitachi, Ltd. Method and apparatus to improve efficiency in the use of high performance storage resources in data center
US20140130055A1 (en) * 2012-02-14 2014-05-08 Aloke Guha Systems and methods for provisioning of storage for virtualized applications
US9244742B2 (en) * 2012-05-31 2016-01-26 Vmware, Inc. Distributed demand-based storage quality of service management using resource pooling
EP2864862B1 (en) * 2012-07-18 2020-01-01 Hitachi, Ltd. Storage system and storage control method
US9608886B2 (en) * 2012-08-26 2017-03-28 At&T Intellectual Property I, L.P. Methods, systems, and products for monitoring domain name servers
US20140189204A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
US9274966B1 (en) * 2013-02-20 2016-03-01 Western Digital Technologies, Inc. Dynamically throttling host commands to disk drives
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US20150081981A1 (en) * 2013-09-19 2015-03-19 Netapp, Inc. Generating predictive cache statistics for various cache sizes
JP6131170B2 (ja) * 2013-10-29 2017-05-17 株式会社日立製作所 計算機システム、及びデータ配置制御方法
US9405572B2 (en) * 2014-04-07 2016-08-02 International Business Machines Corporation Optimized resource allocation and management in a virtualized computing environment
US9442669B2 (en) 2014-08-06 2016-09-13 International Business Machines Corporation Cost-effective IAAS (infrastructure-as-a-service) cloud storage based on adaptive virtual disks (AVD)
US10067800B2 (en) * 2014-11-06 2018-09-04 Vmware, Inc. Peripheral device sharing across virtual machines running on different host computing systems
US9582309B2 (en) * 2014-12-09 2017-02-28 Vmware, Inc. Allocating cost of disk usage to a linked clone virtual machine based on a parameter of usage

Also Published As

Publication number Publication date
AU2016243416B2 (en) 2019-01-17
AU2016243416A1 (en) 2017-10-26
US10198192B2 (en) 2019-02-05
WO2016160743A1 (en) 2016-10-06
US20160291882A1 (en) 2016-10-06
JP2018514027A (ja) 2018-05-31
EP3278208A1 (en) 2018-02-07

Similar Documents

Publication Publication Date Title
JP6640242B2 (ja) ハイブリッドストレージシステム内のサービス品質を改善するためのシステム及び方法
US9122503B1 (en) Systems and methods for adaptive throttling of input/output requests in a virtual environment
US9760392B1 (en) Adaptive throttling in hybrid storage environments
US20170147399A1 (en) Policy-based virtual machine selection during an optimization cycle
US8498966B1 (en) Systems and methods for adaptively performing backup operations
US9626120B1 (en) Systems and methods for dynamically adjusting batch request sizes
US10380023B2 (en) Optimizing the management of cache memory
US9317207B2 (en) Cache migration
US9285999B2 (en) Cache migration
US11500577B2 (en) Method, electronic device, and computer program product for data processing
US9823857B1 (en) Systems and methods for end-to-end quality of service control in distributed systems
JP6677803B2 (ja) 頻繁に使用されるイメージセグメントをキャッシュからプロビジョニングするためのシステム及び方法
US10587527B1 (en) Systems and methods for apportioning bandwidth in storage systems
US11436123B2 (en) Application execution path tracing for inline performance analysis
US10452553B1 (en) Systems and methods for distributing cache space
US10956084B2 (en) Drive utilization in multi-tiered systems with read-intensive flash
EP3318025B1 (en) Systems and methods for scalable network buffer management
US9733865B2 (en) Delay mechanism on fibre channel
US11144427B2 (en) Storage system performance models based on empirical component utilization
US11513861B2 (en) Queue management in solid state memory
JP2023184233A (ja) モデル学習システム及び方法
CN118210443A (zh) 存储装置及其执行的方法
US9158669B2 (en) Presenting enclosure cache as local cache in an enclosure attached server

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170922

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170922

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20171013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190604

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: 20191203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191225

R150 Certificate of patent or registration of utility model

Ref document number: 6640242

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250