(57)【特許請求の範囲】
【請求項１】
ハイブリッドストレージシステム内のサービス品質を改善するためのコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施されており、前記方法は、
第１の入力／出力（Ｉ／Ｏ）サイクル中に、少なくとも１つのアプリケーションと関連したＩ／Ｏ動作を取り扱うハイブリッドストレージシステムの少なくとも１つの性能測定を監視することであって、前記ハイブリッドストレージシステムは、
高速ストレージデバイスと、
前記高速ストレージデバイスより低速の低速ストレージデバイスと、
を備える、監視することと、
前記Ｉ／Ｏ動作の処理時間に少なくとも部分的に基づいて、前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記Ｉ／Ｏ動作の量を推測することと、
前記アプリケーションに優先順位レベルを割り当てることと、
前記第１のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムによって取り扱われる前記Ｉ／Ｏ動作に寄与する少なくとも１つの別のアプリケーションに別の優先順位レベルを割り当てることと、
スケーリング因子を前記アプリケーションの優先順位レベルに掛けることによって、前記アプリケーションの優先順位レベルをスケーリングすることと、
スケーリング因子を前記別のアプリケーションの別の優先順位レベルに掛けることによって、前記別のアプリケーションの別の優先順位レベルをスケーリングすることと、
前記アプリケーションが次のＩ／Ｏサイクルである第２のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムに送達することを許容される後続のＩ／Ｏ動作の速度を、計算することであって、
前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われるＩ／Ｏ動作の量、
前記アプリケーションから生じ、前記第１のＩ／Ｏサイクル中に前記高速ストレージデバイスによって取り扱われるＩ／Ｏ動作の量、
前記高速ストレージデバイスのユーザ指定のパーセンテージ、
前記アプリケーションのスケーリングされた優先順位レベル、
前記アプリケーションのスケーリングされた優先順位レベルと前記別のアプリケーションのスケーリングされた別の優先順位レベルとの合計、
前記ハイブリッドストレージシステムの総容量、及び、
前記第２のＩ／Ｏサイクルの期間、
に少なくとも部分的に基づいて、計算することと、及び、
前記第２のＩ／Ｏサイクル中に前記アプリケーションと関連した前記後続のＩ／Ｏ動作を調節することであって、
前記アプリケーションに、前記アプリケーションが前記第２のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムに送達することを許容される前記後続のＩ／Ｏ動作の前記計算された速度に対応するＩ／Ｏクレジットのある数を割り当てることと、
前記第２のＩ／Ｏサイクル中に前記アプリケーションに計算された速度を適用すること、によって調節することと、
を含む、方法。
【請求項２】
前記ハイブリッドストレージシステムの性能測定を監視することは、
前記第１のＩ／Ｏサイクル中に前記アプリケーションと関連した前記高速ストレージデバイスで実施されるＩ／Ｏ動作の数をカウントすることと、
前記第１のＩ／Ｏサイクル中に前記アプリケーションと関連した前記低速ストレージデバイスで実施されるＩ／Ｏ動作の数をカウントすることと、
のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記Ｉ／Ｏ動作の量を推定することは、前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対する前記高速ストレージデバイスによってサービスされた前記Ｉ／Ｏ動作のパーセンテージを決定することを含む、請求項１に記載の方法。
【請求項４】
前記アプリケーションが前記後続のＩ／Ｏ動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を計算することは、前記高速ストレージデバイスによってサービスされる前記Ｉ／Ｏ動作のパーセンテージを前記アプリケーションが前記後続のＩ／Ｏ動作を前記ハイブリッドストレージシステムに送達することを許容される速度を計算するために使用される式に組み込むことを含む、請求項３に記載の方法。
【請求項５】
前記アプリケーションが前記ハイブリッドストレージシステムに送達することを許容される前記後続のＩ／Ｏ動作の速度を計算することは、
前記アプリケーションが前記第２のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムに送達することを許容される前記後続のＩ／Ｏ動作の速度を、
前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記Ｉ／Ｏ動作の量と、
前記別のアプリケーションに割り当てられた別の優先順位レベルに対する前記アプリケーションの優先順位レベルと、
に少なくとも部分的に基づいて減少させること、
を含む、請求項３に記載の方法。
【請求項６】
前記アプリケーションが前記後続のＩ／Ｏ動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を減少させることは、前記第１のＩ／Ｏサイクル中に低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記Ｉ／Ｏ動作の量と、前記アプリケーションに割り当てられた優先順位レベルとを、前記アプリケーションが前記後続のＩ／Ｏ動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を計算するために使用される式に組み込むことを含む、請求項５に記載の方法。
【請求項７】
前記第２のＩ／Ｏサイクル中に前記アプリケーションと関連した前記後続のＩ／Ｏ動作を調節することは、
前記ハイブリッドストレージシステムが前記第２のＩ／Ｏサイクル中に前記アプリケーションと関連した割り当てられたＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を取り扱わないことを保証すること、
を含む、請求項１に記載の方法。
【請求項８】
前記ハイブリッドストレージシステムが前記割り当てられたＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を取り扱わないことを保証することは、
前記アプリケーションが前記第２のＩ／Ｏサイクル中に前記割り当てられたＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を前記ハイブリッドストレージシステムに送達することを防止することと、
前記ハイブリッドストレージシステムが前記第２のＩ／Ｏサイクル中に前記アプリケーションと関連した前記割り当てられたＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を実施することを防止することと、
のうちの少なくとも１つを含む、請求項７に記載の方法。
【請求項９】
前記アプリケーションは、
仮想マシンと、
複数の仮想マシンと、
のうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項１０】
ハイブリッドストレージシステム内のサービス品質を改善するためのシステムであって、前記システムは、
第１の入力／出力（Ｉ／Ｏ）サイクル中に、少なくとも１つのアプリケーションと関連したＩ／Ｏ動作を取り扱うハイブリッドストレージシステムの少なくとも１つの性能測定を監視する、メモリに記憶された監視モジュールであって、前記ハイブリッドストレージシステムは、
高速ストレージデバイスと、
前記高速ストレージデバイスより速度が遅い低速ストレージデバイスと、
を備え、
前記Ｉ／Ｏ動作の処理時間に少なくとも部分的に基づいて、前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記Ｉ／Ｏ動作の量を推測する、監視モジュールと、
メモリに記憶された決定モジュールであって、
前記アプリケーションに優先順位レベルを割り当て、
前記第１のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムによって取り扱われる前記Ｉ／Ｏ動作に寄与する少なくとも１つの別のアプリケーションに別の優先順位レベルを割り当て、
スケーリング因子を前記アプリケーションの優先順位レベルに掛けることによって、前記アプリケーションの優先順位レベルをスケーリングし、
スケーリング因子を前記別のアプリケーションの別の優先順位レベルに掛けることによって、前記別のアプリケーションの別の優先順位レベルをスケーリングし、
前記アプリケーションが次のＩ／Ｏサイクルである第２のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムに送達することを許容される後続のＩ／Ｏ動作の速度を、計算するものであり、
前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われるＩ／Ｏ動作の量、
前記アプリケーションから生じ、前記第１のＩ／Ｏサイクル中に前記高速ストレージデバイスによって取り扱われるＩ／Ｏ動作の量、
前記高速ストレージデバイスのユーザ指定のパーセンテージ、
前記アプリケーションのスケーリングされた優先順位レベル、
前記アプリケーションのスケーリングされた優先順位レベルと前記別のアプリケーションのスケーリングされた別の優先順位レベルとの合計、
前記ハイブリッドストレージシステムの総容量、及び、
前記第２のＩ／Ｏサイクルの期間、
に少なくとも部分的に基づいて計算する、決定モジュールと、
メモリに記憶された調節モジュールであって、
前記第２のＩ／Ｏサイクル中に前記アプリケーションと関連した前記後続のＩ／Ｏ動作を、
前記アプリケーションに、前記アプリケーションが前記第２のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムに送達することを許容される前記後続のＩ／Ｏ動作の前記計算された速度に対応するＩ／Ｏクレジットのある数を割り当てることと、
前記第２のＩ／Ｏサイクル中に前記アプリケーションに計算された速度を適用すること、によって調節する、調節モジュールと、
前記監視モジュール、前記決定モジュール、及び前記調節モジュールを実行する少なくとも１つのプロセッサと、
を備える、システム。
【請求項１１】
前記監視モジュールは、前記ハイブリッドストレージシステムの性能測定を、
前記第１のＩ／Ｏサイクル中に前記アプリケーションと関連して前記高速ストレージデバイスで実施される前記Ｉ／Ｏ動作の数をカウントすることと、
前記第１のＩ／Ｏサイクル中に前記アプリケーションと関連して前記低速ストレージデバイスで実施される前記Ｉ／Ｏ動作の数をカウントすることと、
のうちの少なくとも１つによって監視する、請求項１０に記載のシステム。
【請求項１２】
前記決定モジュールは、前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記Ｉ／Ｏ動作の量を、前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによってサービスされた前記Ｉ／Ｏ動作のパーセンテージを決定することによって減少させる、請求項１０に記載のシステム。
【請求項１３】
前記決定モジュールは、前記アプリケーションが前記後続のＩ／Ｏ動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を、前記高速ストレージデバイスによってサービスされる前記Ｉ／Ｏ動作のパーセンテージを前記アプリケーションが前記後続のＩ／Ｏ動作を前記ハイブリッドストレージシステムに送達することを許容される前記速度を計算するために使用される式に組み込むことによって減少させる、請求項１２に記載のシステム。
【請求項１４】
１つ又は２つ以上のコンピュータ実行可能命令を備える非一過性コンピュータ可読媒体であって、前記命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、前記コンピューティングデバイスに、
第１の入力／出力（Ｉ／Ｏ）サイクル中に、少なくとも１つのアプリケーションと関連したＩ／Ｏ動作を取り扱うハイブリッドストレージシステムの少なくとも１つの性能測定を監視することであって、前記ハイブリッドストレージシステムは、
高速ストレージデバイスと、
前記高速ストレージデバイスより速度が遅い低速ストレージデバイスと、
を備える、監視することと、
前記Ｉ／Ｏ動作の処理時間に少なくとも部分的に基づいて、前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われる前記Ｉ／Ｏ動作の量を推定することと、
前記アプリケーションに優先順位レベルを割り当てることと、
前記第１のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムによって取り扱われる前記Ｉ／Ｏ動作に寄与する少なくとも１つの別のアプリケーションに別の優先順位レベルを割り当てることと、
スケーリング因子を前記アプリケーションの優先順位レベルに掛けることによって、前記アプリケーションの優先順位レベルをスケーリングすることと、
スケーリング因子を前記別のアプリケーションの別の優先順位レベルに掛けることによって、前記別のアプリケーションの別の優先順位レベルをスケーリングすることと、
前記アプリケーションが次のＩ／Ｏサイクルである第２のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムに送達することを許容される後続のＩ／Ｏ動作の速度を、計算することであって、
前記第１のＩ／Ｏサイクル中に前記低速ストレージデバイスに対して前記高速ストレージデバイスによって取り扱われるＩ／Ｏ動作の量、
前記アプリケーションから生じ、前記第１のＩ／Ｏサイクル中に前記高速ストレージデバイスによって取り扱われるＩ／Ｏ動作の量、
前記高速ストレージデバイスのユーザ指定のパーセンテージ、
前記アプリケーションのスケーリングされた優先順位レベル、
前記アプリケーションのスケーリングされた優先順位レベルと前記別のアプリケーションのスケーリングされた別の優先順位レベルとの合計、
前記ハイブリッドストレージシステムの総容量、及び、
前記第２のＩ／Ｏサイクルの期間、
に少なくとも部分的に基づいて、計算することと、及び、
前記第２のＩ／Ｏサイクル中に前記アプリケーションと関連した前記後続のＩ／Ｏ動作を、前記アプリケーションに、前記アプリケーションが前記第２のＩ／Ｏサイクル中に前記ハイブリッドストレージシステムに送達することを許容される前記後続のＩ／Ｏ動作の前記計算された速度に対応するＩ／Ｏクレジットのある数を割り当てること、によって調節することと、
を行わせる、非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ハイブリッドストレージシステムは、しばしば、異なるタイプ及び／又は速度のストレージデバイスを含む。例えば、ハイブリッドストレージシステムは、ネットワーク内で動作する様々な仮想マシン（ＶＭ）によって使用されるデータを記憶する１つ若しくは２つ以上の高速ストレージデバイス（キャッシュ等）及び／又は１つ若しくは２つ以上の低速ストレージデバイス（ディスクなど）を含むことがある。この例では、ＶＭが、ハイブリッドストレージシステムによってサービスされる様々な入力／出力（Ｉ／Ｏ）動作（読取り及び／又書込み等）を開始してもよい。
【０００２】
ＶＭからハイブリッドストレージシステムまでのそのようなＩ／Ｏ動作の送達は、サービス品質（ＱｏＳ）機能によって制御されてもよい。例えば、従来のＱｏＳ機能は、毎秒、ＶＭからハイブリッドストレージシステムまで数千のＩ／Ｏ動作を送達し得る。この例では、従来のＱｏＳ機能は、高速ストレージデバイスが特定の数のＩ／Ｏ動作をサービスし、低速ストレージデバイスが残りのＩ／Ｏ動作をサービスするという仮定の下に、いくつのＩ／Ｏ動作をハイブリッドストレージシステムに送達するべきかについて決定し得る。残念ながら、従来のＱｏＳ機能は、どのＩ／Ｏ動作が高速デバイス又は低速でデバイスによってサービスされることになるかを到着の時点で正確に知る方法を有しないので、低速ストレージデバイスに対する高速ストレージデバイスによってサービスされるＩ／Ｏ動作の数ついての従来のＱｏＳ機能の仮定は、不正確であったり及び／又はハイブリッドストレージシステム内での待ち時間問題につながったりすることがある。
【０００３】
例えば、従来のＱｏＳ機能は、Ｉ／Ｏ動作をＶＭからハイブリッドストレージシステムまで特定の速度で送達し得る。これらのＩ／Ｏ動作の全てではないにしても、その多くが高速ストレージデバイスによってサービスされる場合には、ハイブリッドストレージシステムは、非常に短い待ち時間の期間を示すことがあり、そのために、場合によっては、ハイブリッドストレージシステムがそのようなＩ／Ｏ動作をより一層高速でもサービスできるという誤った印象を従来のＱｏＳ機能に与えることがある。その結果、従来のＱｏＳ機能がＩ／Ｏ動作についての送達速度を増加させることにより、Ｉ／Ｏ動作の一部が高速ストレージデバイス内のストレージ空間を急速に満たして、残りのＩ／Ｏ動作が低速ストレージデバイスをスキップすることを強制され、それにより、場合によっては、非常に長い待ち時間につながることがある。待ち時間におけるこれらの前後する変化は、従来のＱｏＳ機能にＩ／Ｏ動作のための送達速度を繰返し及び／又は不安定に変更させることがある。
【０００４】
本開示は、それ故に、ハイブリッドストレージシステム内のＱｏＳを改善するためのシステム及び方法に対するニーズを認識し、これを対象にする。
【発明の概要】
【０００５】
下記でより詳細に説明するように、本開示は、ハイブリッドストレージシステム内のサービス品質を改善するための様々なシステム及び方法を説明するが、その改善は、ハイブリッドストレージシステム内の異なるタイプのストレージデバイスによって取り扱われる基準Ｉ／Ｏスループットサイクルを監視し、次いで、基準Ｉ／Ｏスループットサイクル中に異なるタイプのストレージデバイスによって取り扱われるＩ／Ｏ動作の量に少なくとも部分的に基づいて後続のＩ／Ｏスループットサイクルを調節することによる。
【０００６】
一例では、ハイブリッドストレージシステム内のサービス品質を改善するためのコンピュータ実装方法は、（１）ある期間にわたって、少なくとも１つのアプリケーション（例えば、少なくとも１つのＶＭ）と関連したＩ／Ｏスループットを取り扱う第１及び第２のタイプのストレージデバイスを含むハイブリッドストレージシステムの少なくとも１つの性能測定を監視すること、（２）監視される性能測定に少なくとも部分的に基づいて、その期間にわたって第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量を決定すること、（３）第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度を決定すること、次いで、（４）アプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のＩ／Ｏスループットを調節することを含んでもよい。
【０００７】
いくつかの例では、方法は、また、その期間にわたってアプリケーションと関連した第１のタイプのストレージデバイスで実施されるＩ／Ｏ動作の数をカウントすることを含んでもよい。それに付加して又はその代替として、方法は、その期間にわたってアプリケーションと関連した第２のタイプのストレージデバイスで実施されるＩ／Ｏ動作の数をカウントすることを更に含んでもよい。
【０００８】
いくつかの例では、第１のタイプのストレージデバイスは、高速ストレージデバイスを含んでも及び／又は表してもよく、そして、第２のタイプのストレージデバイスは、低速ストレージデバイスを含んでも及び／又は表してもよい。そのような例では、方法は、また、その期間にわたって低速ストレージデバイスに対する高速ストレージデバイスによってサービスされたＩ／Ｏスループットのパーセンテージを決定することを含んでもよい。それに付加して又はその代替として、方法は、高速ストレージデバイスによってサービスされるＩ／Ｏスループットのパーセンテージを、アプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度を計算するために使用される式に組み込むことを含んでもよい。
【０００９】
いくつかの例では、方法は、また、その期間にわたってハイブリッドストレージシステムによって取り扱われるＩ／Ｏスループットに寄与する少なくとも１つの別のアプリケーションに対するアプリケーションの優先順位レベルを識別することを含んでもよい。そのような例では、方法は、アプリケーションが、第２のタイプのストレージデバイスに対する第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量、及び別のアプリケーションに対するアプリケーションの優先順位レベルに少なくとも部分的に基づいて、後続の期間にわたって後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度を決定することを更に含んでもよい。それに付加して又はその代替として、方法は、第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量及びアプリケーションの優先順位レベルを、アプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度を計算するために使用される式に組み込むことを含んでもよい。
【００１０】
いくつかの例では、方法は、また、第２のタイプのストレージデバイスに対する第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量に少なくとも部分的に基づいて、もう１つのアプリケーションが後続の期間にわたってハイブリッドストレージシステムに送達される後続のＩ／Ｏスループットに寄与することを許容される速度を決定することを含んでもよい。そのような例では、方法は、別のアプリケーションがハイブリッドストレージシステムに送達される後続のＩ／Ｏスループットに寄与することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたって別のアプリケーションと関連した後続のＩ／Ｏスループットを調節することを更に含んでもよい。
【００１１】
いくつかの例では、方法は、また、アプリケーションに、アプリケーションが後続の期間中に後続のＩ／Ｏスループットに寄与することを許容されるＩ／Ｏ動作の近似量に対応するＩ／Ｏクレジットの数を割り当てることを含んでもよい。そのような例では、方法は、ハイブリッドストレージシステムが、後続の期間中にアプリケーションと関連したＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を取り扱わないことを保証することを更に含んでもよい。
【００１２】
いくつかの例では、方法は、また、アプリケーションが後続の期間にわたってハイブリッドストレージシステムに割り当てられたＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を送達することを防止することを含んでもよい。それに付加して又はその代替として、方法は、ハイブリッドストレージシステムが後続の期間中にアプリケーションと関連して割り当てられたＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を実施することを防止することを含んでもよい。
【００１３】
別の例では、上記の方法を実装するためのシステムは、（１）少なくとも１つのアプリケーションと関連したＩ／Ｏスループットを取り扱う第１及び第２のタイプのストレージデバイスを含むハイブリッドストレージシステムについての少なくとも１つの性能測定を監視する、メモリに記憶された監視モジュールと、（２）（Ａ）監視される性能測定に少なくとも部分的に基づいて、ある期間にわたって第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量を決定し、次いで、（Ｂ）第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度を決定する、メモリに記憶された決定モジュールと、（３）アプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のＩ／Ｏスループットを調節する調節モジュールと、（４）監視モジュール、決定モジュール、及び調節モジュールを実行する少なくとも１つのプロセッサとを備えてもよい。
【００１４】
いくつかの例では、上記の方法は、非一過性コンピュータ可読媒体上にコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、１つ若しくは２つ以上のコンピュータ実行可能命令を含んでもよく、この命令は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるときに、コンピューティングデバイスに、（１）ある期間にわたって、少なくとも１つのアプリケーションと関連したＩ／Ｏスループットを取り扱う第１及び第２のタイプのストレージデバイスを含むハイブリッドストレージシステムについての少なくとも１つの性能測定を監視すること、（２）監視される性能測定に少なくとも部分的に基づいて、その期間にわたって第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量を決定すること、（３）第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度を決定すること、次いで、（４）アプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のＩ／Ｏスループットを調節することを行わせてもよい。
【００１５】
上記で述べた実施形態のうちのいずれかからの機能は、本明細書で説明する一般原理に従って互いと組み合わせて使用されてもよい。これらの及び他の実施形態、特性、及び利点は、添付の図面及び請求項と併せて、以下の詳細な説明を一読することで、より完全に理解されよう。
【図面の簡単な説明】
【００１６】
添付の図面は、いくつかの例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明とともに、これらの図面は、本開示の種々の原理を実証及び説明する。
【図１】ハイブリッドストレージシステム内のサービス品質を改善するための例示的なシステムのブロック図である。
【図２】ハイブリッドストレージシステム内のサービス品質を改善するための更なる例示的なシステムのブロック図である。
【図３】ハイブリッドストレージシステム内のサービス品質を改善するための例示的な方法の流れ図である。
【図４】ハイブリッドストレージシステム内のサービス品質を改善するための更なる例示的なシステムのブロック図である。
【図５】Ｉ／Ｏスループットサイクルについての例示的な情報の説明図である。
【図６】Ｉ／Ｏスループットサイクルについての例示的な情報の説明図である。
【図７】Ｉ／Ｏスループットサイクルについての例示的な情報の説明図である。
【図８】本明細書で説明された及び／又は例示された実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングシステムのブロック図である。
【図９】本明細書で説明された及び／又は例示された実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングネットワークのブロック図である。
【００１７】
図面を通じて、同一の参照文字及び説明は、類似であるが、必ずしも同一ではない要素を示す。本明細書において説明される例示的な実施形態は、種々の修正及び代替的な形態が可能であるが、具体的な実施形態が、図面において、例として示されており、かつ本明細書において詳細に説明される。しかしながら、本明細書において説明される例示的な実施形態は、開示される特定の形態に限定されることを意図されない。むしろ、本開示は、添付の請求項の範囲内にある全ての修正物、同等物、及び代替物を網羅する。
【例示的な実施形態の詳細な説明】
【００１８】
本開示は、ハイブリッドストレージシステム内のサービス品質を改善するためにシステム及び方法に概して向けられる。下記でより詳細に説明するように、ある期間にわたってＩ／Ｏスループットサイクルを監視することによって、本明細書で説明する様々なシステム及び方法は、Ｉ／Ｏ動作がその期間中にハイブリッドストレージシステム内の異なるタイプのストレージデバイスによって何回サービスされたかについて決定してもよい。Ｉ／Ｏ動作がこのように異なるタイプのストレージデバイスによって何回サービスされたかについて決定すると、本明細書で説明するシステム及び方法は、後続の期間にわたってアプリケーション（ＶＭ等）から生じるＩ／Ｏ動作についての実質的に安定した送達速度を決定するための基準及び／又は履歴基準値としてＩ／Ｏ動作のその数を使用し得る。
【００１９】
更に、このようにそのようなアプリケーションから生じるＩ／Ｏ動作についての実質的に安定した送達速度を決定することによって、本明細書で説明するシステム及び方法は、ハイブリッドストレージシステムが高度に変動する待ち時間及び／又は待ち時間振動の期間を表明及び／又は提示することを防止できてもよい。それに付加して又はその代替として、本明細書で説明するシステム及び方法は、ハイブリッドストレージシステムが特定のリソースを誤用することを防止できてもよい。例えば、本明細書で説明するシステム及び方法は、ハイブリッドストレージシステムが特定のリソース（Ｉ／Ｏ毎秒（ＩＯＰＳ）、計算能力、及び／又はバンド幅等）関する優先順位逆転を回避することを可能にしてもよい。
【００２０】
下記において、図１、図２、及び図４によって、ハイブリッドストレージシステム内のサービス品質を改善するための例示的なシステムについての詳細な説明を提供する。対応するコンピュータ実装方法についての詳細な説明は、図３と関連して提供される。Ｉ／Ｏスループットサイクルについての例示的な情報についての詳細な説明は、図５〜図７に関連して提供される。それに加えて、本明細書で説明する実施形態のうちの１つ若しくは２つ以上を実装できる例示的なコンピューティングシステム及びネットワークアーキテクチャについての詳細な説明は、図８及び図９と関連してそれぞれ提供される。
【００２１】
図１は、ハイブリッドストレージシステム内のサービス品質を改善するための例示的なシステム１００のブロック図である。この図に示すように、例示的なシステム１００は、１つ若しくは２つ以上のタスクを実施するための１つ若しくは２つ以上のモジュール１０２を含んでもよい。例えば、そして、下記により詳細に説明するように、例示的なシステム１００は、少なくとも１つのアプリケーションと関連したＩ／Ｏスループットを取り扱うハイブリッドストレージシステムについての少なくとも１つの性能測定を監視する監視モジュール１０４を含んでもよい。例示的なシステム１００は、また、監視される性能測定に少なくとも部分的に基づいて、その期間にわたって第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量を決定する決定モジュール１０６を含んでもよい。決定モジュール１０６は、第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度を更に決定してもよい。
【００２２】
それに加えて、そして、下記により詳細に説明するように、例示的なシステム１００は、アプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のＩ／Ｏスループットを調節する調節モジュール１０８を含んでもよい。別個の要素として示されるけれども、図１のモジュール１０２のうちの１つ若しくは２つ以上は、単一のモジュール又はアプリケーション（ＱｏＳアプリケーション及び／又はＱｏＳ機能等）の複数部分を表してもよい。
【００２３】
特定の実施形態において、図１のモジュール１０２のうちの１つ若しくは２つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに、１つ若しくは２つ以上のタスクを実施させてもよい１つ若しくは２つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、そして、下記でより詳細に説明するように、モジュール１０２のうちの１つ若しくは２つ以上は、１つ若しくは２つ以上のコンピューティングデバイス、例えば、図２に示すデバイス（例えば、コンピューティングデバイス２０２（１）〜（Ｎ）、及び／又はストレージデバイス２０６（１）〜（Ｎ））、図８のコンピューティングシステム８１０、及び／又は図９の例示的なネットワークアーキテクチャ９００の部分等において動作するように記憶及び構成されたソフトウェアモジュールを表してもよい。図１のモジュール１０２のうちの１つ若しくは２つ以上は、また、１つ若しくは２つ以上のタスクを実施するように構成された１つ若しくは２つ以上の特殊目的のコンピュータの全て又は部分を表してもよい。
【００２４】
図１の例示的なシステム１００は、様々な態様で実装されてもよい。例えば、例示的なシステム１００の全て又は一部分は、図２の例示的なシステム２００の部分を表してもよい。図２に示すように、システム２００は、ネットワーク２０４を介してハイブリッドストレージシステム２１４と通信する１つ若しくは２つ以上のコンピューティングデバイス２０２（１）〜（Ｎ）を含んでもよい。この例では、ハイブリッドストレージシステム２１４は、異なるタイプ及び／又は速度の１つ若しくは２つ以上のストレージデバイス２０６（１）〜（Ｎ）を含んでもよい。例えば、ストレージデバイス２０６（１）は、比較的高速のストレージデバイス、例えば、ソリッドステートドライブ（ＳＳＤ）、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、及び／又は独立した複数のディスクからなる冗長配列（ＲＡＩＤ）コントローラキャッシュを含んでも及び／又は表してもよい。それに付加して又はその代替として、ストレージデバイス２０６（Ｎ）は、ＲＡＩＤ及び／又はハードディスクドライブ（ＨＤＤ）等の比較的低速のストレージデバイスを含んでも及び／又は表してもよい。
【００２５】
一例では、１つ若しくは２つ以上のコンピューティングデバイス２０２（１）〜（Ｎ）は、１つ若しくは２つ以上のモジュール１０２によってプログラムされてもよい。それに付加して又はその代替として、１つ若しくは２つ以上のストレージデバイス２０６（１）〜（Ｎ）は、１つ若しくは２つ以上のモジュール１０２によってプログラムされてもよい。
【００２６】
一例では、１つ若しくは２つ以上のコンピューティングデバイス２０２（１）〜（Ｎ）は、１つ若しくは２つ以上のアプリケーション２０８（１）〜（Ｎ）を実行及び／又は起動してもよい。例えば、コンピューティングデバイス２０２（１）は、アプリケーション２０８（１）を実行及び／又は起動してもよい。それに付加して又はその代替として、コンピューティングデバイス２０２（Ｎ）は、アプリケーション２０８（２）〜（Ｎ）を実行及び／又は起動してもよい。
【００２７】
一例では、アプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上は、Ｉ／Ｏスループット２１０を生成及び／又は始動し、次いで、それらを、ネットワーク２０４を介してストレージデバイス２０６（１）〜（Ｎ）のうちの１つ若しくは２つ以上に送信及び／又は送達してもよい。この例では、ストレージデバイス２０６（１）〜（Ｎ）のうちの１つ若しくは２つ以上は、Ｉ／Ｏスループット２１０を受信及び／又は取得してもよく、次いで対応するアプリケーションと関連したＩ／Ｏスループット２１０を取り扱い、サービスし、実施し及び／又は処理してもよい。例えば、ストレージデバイス２０６（１）は、Ｉ／Ｏスループット２１０の部分２１２（１）を取り扱い、サービスし、実施し、及び／又は処理してもよい。逆に、ストレージデバイス２０６（Ｎ）は、Ｉ／Ｏスループット２１０の部分２１２（Ｎ）を取り扱い、サービスし、実施し、及び／又は処理してもよい。
【００２８】
一実施形態では、図１のモジュール１０２のうちの１つ若しくは２つ以上が、コンピューティングデバイス２０２（１）〜（Ｎ）及び／又はストレージデバイス２０６（１）〜（Ｎ）の少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイス２０２（１）〜（Ｎ）及び／又はストレージデバイス２０６（１）〜（Ｎ）のうちの少なくとも１つがハイブリッドストレージシステム内のＱｏＳを改善することを可能にする。例えば、そして、下記でより詳細に説明するように、モジュール１０２のうちの１つ若しくは２つ以上は、コンピューティングデバイス２０２（１）〜（Ｎ）及び／又はストレージデバイス２０６（１）〜（Ｎ）のうちの少なくとも１つに、（１）ある期間にわたって、アプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上と関連したＩ／Ｏスループット２１０を取り扱う異なるタイプのストレージデバイス２０６（１）〜（Ｎ）を含むハイブリッドストレージシステム２１４についての少なくとも１つの性能測定を監視することと、（２）監視される性能測定に少なくとも部分的に基づいて、その期間にわたってストレージデバイス２０６（Ｎ）に対してストレージデバイス２０６（１）によって取り扱われるＩ／Ｏスループット２１０の近似量を決定することと、（３）ストレージデバイス２０６（Ｎ）に対してストレージデバイス２０６（１）によって取り扱われるＩ／Ｏスループット２１０の近似量に少なくとも部分的に基づいて、対応するアプリケーションが後続の期間にわたって後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度を決定することと、次いで、（４）対応するアプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたって対応するアプリケーションと関連した後続のＩ／Ｏスループットを調節することとを行わせる。
【００２９】
コンピューティングデバイス２０２（１）〜（Ｎ）は、それぞれ、任意のタイプ又は形式のコンピュータ実行可能命令を読み取ることが可能なコンピューティングデバイスを概して表す。コンピューティングデバイス２０２（１）〜（Ｎ）の例として、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、個人情報機器（ＰＤＡ）、マルチメディアプレイヤー、組込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラス等）、ゲーム機、これらのうちの１つ若しくは２つ以上のものの変形、これらのものうちの１つ若しくは２つ以上のものの組合せ、図８の例示的なコンピューティングシステム８１０、又は任意の別の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【００３０】
ハイブリッドストレージシステム２１４は、異なるタイプ及び／又は速度のストレージデバイスを含む任意のタイプ又は形式のストレージシステム及び／又は環境を概して表す。一例では、ハイブリッドストレージシステム２１４は、階層ストレージシステムとして集合的に動作するストレージデバイス２０６（１）〜（Ｎ）を含んでもよい。この例では、ストレージデバイス２０６（１）〜（Ｎ）は、高速ストレージデバイス（ＳＳＤ、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、及び／又はＲＡＩＤコントローラキャッシュ等）と、低速ストレージデバイス（ＲＡＩＤ及び／又はＨＤＤ）との任意の組合せを含んでも及び／又は表してもよい。図２に示すように、ハイブリッドストレージシステム２１４は、ネットワーク２０４の後方に存在しても及び／又は位置してもよい。その代替として、図２のネットワーク２０４の後方に存在する及び／又は位置するように示されるけれども、ハイブリッドストレージデバイス２１４は、ネットワーク２０４内に存在しても及び／又は位置してもよく、及び／又はネットワーク２０４に組み込まれたローカルストレージを表してもよい。
【００３１】
ストレージデバイス２０６（１）〜（Ｎ）は、それぞれ、アプリケーションによって使用されるデータを記憶できる及び／又はそのようなアプリケーションと関連したＩ／Ｏスループットをサービスできる任意のタイプ又は形式の装置及び／又は機構を概して表す。ストレージデバイス２０６（１）〜（Ｎ）の例としては、ＳＳＤ、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、ＲＡＩＤコントローラキャッシュ、ＲＡＩＤ、ＨＤＤ、仮想ディスク、これらのうちの１つ若しくは２つ以上のものの変形、これらのうちの１つ若しくは２つ以上のものの組合せ、図８の例示的なコンピューティングシステム８１０、又は任意の別の好適なストレージデバイスが挙げられるが、これらに限定されない。
【００３２】
ネットワーク２０４は、通信又はデータ転送を容易にすることが可能な任意の媒体又はアーキテクチャを概して表す。ネットワーク２０４の例としては、イントラネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラネットワーク（例えば、汎欧州デジタル移動電話方式（ＧＳＭ（登録商標））ネットワーク）、図９の例示的なネットワークアーキテクチャ９００等が挙げられるが、これらに限定されない。ネットワーク２０４は、無線又は有線接続を使用して、通信又はデータ転送を容易にし得る。一実施形態では、ネットワーク２０４は、コンピューティングデバイス２０２（１）〜（Ｎ）及び／又はストレージデバイス２０６（１）〜（Ｎ）の中での通信を容易にしてもよい。コンピューティングデバイス２０２（１）〜（Ｎ）、ストレージデバイス２０６（１）〜（Ｎ）、及びネットワーク２０４は、図２において別個の存在として示されるけれども、１つ若しくは２つ以上のコンピューティングデバイス２０２（１）〜（Ｎ）、及び／又はストレージデバイス２０６（１）〜（Ｎ）が、その代替として、ネットワーク２０４の複数部分を含んでも及び／又は表してもよい。
【００３３】
アプリケーション２０８（１）〜（Ｎ）は、物理及び／又は仮想コンピューティング環境において動作することができる任意のタイプ又は形式のソフトウェア、アプリケーション、及び／又はプログラムを概して表す。いくつかの例では、アプリケーション２０８（１）〜（Ｎ）は、ストレージデバイス２０６（１）〜（Ｎ）内でデータをアップロード、ダウンロード、記憶及び／又はアクセスするためにＩ／Ｏスループット２１０を生成及び／又は送信してもよい。アプリケーション２０８（１）〜（Ｎ）の例としては、ＶＭ、仮想ストレージアプライアンス、フロー、ソフトウェアモジュール、及び／又はこれらのうちの１つ若しくは２つ以上のものにおいて動作するプログラム、これらのうちの１つ若しくは２つ以上のものの変形、これらのうちの１つ若しくは２つ以上のものの組合せ、又は任意の別の好適なアプリケーションが挙げられるが、これらに限定されない。
【００３４】
Ｉ／Ｏスループット２１０は、アプリケーションによって開始されるか、及び／又はハイブリッドストレージシステムによってサービスされる任意のタイプ又は形式のデータ転送、データアクセス、及び／又はデータ操作を概して表す。一例では、Ｉ／Ｏスループット２１０は、特定の期間にわたって及び／又は特定のＩ／Ｏサイクル中に、ハイブリッドストレージシステム２１４内でデータを読み取る、書き込む、記憶する、アクセスする、及び／又は操作するために１つ若しくは２つ以上のアプリケーション２０８（１）〜（Ｎ）によって始動される様々なＩ／Ｏ動作を含んでも及び／又は表してもよい。この例では、Ｉ／Ｏスループット２１０は、特定の期間にわたって及び／又は特定のＩ／Ｏサイクル中に、１つ若しくは２つ以上のアプリケーション２０８（１）〜（Ｎ）と関連してハイブリッドストレージシステム２１４によって実施及び／又は処理されるいくつかのＩ／Ｏ動作を含んでも及び／又は表してもよい。
【００３５】
図３は、ハイブリッドストレージシステム内のサービス品質を改善するための例示的なコンピュータ実装方法３００の流れ図である。図３に示すステップは、任意の好適なコンピュータ実行可能なコード及び／又はコンピューティングシステムによって実施されてもよい。いくつかの実施形態では、図３に示すステップは、図１のシステム１００、図２のシステム２００、図８のコンピューティングシステム８１０、及び／又は図９の例示的なネットワークアーキテクチャ９００の部分の構成要素のうちの１つ若しくは２つ以上によって実施されてもよい。
【００３６】
図３に示すように、ステップ３０２では、本明細書で説明するシステムのうちの１つ若しくは２つ以上が、ある期間にわたって少なくとも１つのアプリケーションと関連したＩ／Ｏスループットを取り扱うハイブリッドストレージシステムの少なくとも１つの性能測定を監視してもよい。例えば、監視モジュール１０４は、図２のコンピューティングデバイス２０２の部分として、ある期間にわたってハイブリッドストレージシステム２１４の少なくとも１つの性能測定を監視してもよい。この例では、ハイブリッドストレージシステム２１４は、その期間にわたってアプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上と関連したＩ／Ｏスループット２１０を取り扱い、サービスし、実施し、及び／又は処理してもよい。
【００３７】
用語「性能測定」は、ハイブリッドストレージシステムに関して本明細書で使用されるとき、ハイブリッドストレージシステムの性能を示唆又は表示する任意のタイプ又は形式の測定、統計、及び／又は計量を概して指す。そのような性能測定の例としては、ハイブリッドストレージシステムに到達するＩＯＰＳの数、ハイブリッドストレージシステムによってサービスされるＩＯＰＳの数、ハイブリッドストレージシステムによって提示される待ち時間の量、ハイブリッドストレージシステムに送達されるＩ／Ｏスループットの量、これらのうちの１つ若しくは２つ以上のものの変形、これらのうちの１つ若しくは２つ以上のものの組合せ、又は任意の別の好適な性能測定が挙げられるが、これらに限定されない。
【００３８】
本明細書で説明するシステムは、様々な態様及び／又は局面でステップ３０２を実施してもよい。いくつかの例では、監視モジュール１０４は、Ｉ／Ｏスループット２１０の特定の部分を取り扱う特定のストレージデバイスを識別することによって、ハイブリッドストレージシステム２１４の性能測定を監視してもよい。例えば、監視モジュール１０４は、ストレージデバイス２０６（１）がＩ／Ｏスループット２１０の部分２１２（１）をサービスすること、及び／又はストレージデバイス２０６（Ｎ）がＩ／Ｏスループット２１０の部分２１２（Ｎ）をサービスすることを認知及び／又は決定してもよい。従って、監視モジュール１０４は、Ｉ／Ｏスループット２１０の部分２１２（１）のサービスを完了したときにストレージデバイス２０６（１）を識別すること、及び／又はＩ／Ｏスループット２１０の部分２１２（Ｎ）のサービスを完了したときにストレージデバイス２０６（Ｎ）を識別することが可能であってもよい。
【００３９】
それに付加して又はその代替として、監視モジュール１０４は、Ｉ／Ｏスループット２１０の特定の部分の処理時間に少なくとも部分的に基づいてＩ／Ｏスループット２１０の特定の部分を取り扱うストレージデバイスのタイプを推測することによって、ハイブリッドストレージシステム２１４の性能測定を監視してもよい。一例では、監視モジュール１０４は、時間ベース閾値を適用することによって、Ｉ／Ｏスループット２１０の特定の部分を取り扱うストレージデバイスのタイプを推測してもよい。例えば、監視モジュール１０４は、Ｉ／Ｏスループット２１０の部分２１２（１）に含まれるか及び／又はそれによって表されるそれぞれのＩ／Ｏ動作が、１ミリ秒未満で処理及び／又はサービスされたことを決定してもよい。この例では、処理及び／又はサービスされるのに１ミリ秒未満を要する全てのＩ／Ｏ動作は、ハイブリッドストレージシステム２１４内の高速ストレージデバイス（ＳＳＤ及び／又はキャッシュ等）に対応してもよい。従って、Ｉ／Ｏスループット２１０の部分２１２（１）に含まれるか及び／又はそれによって表されるそれぞれのＩ／Ｏ動作が、１ミリ秒未満で処理及び／又はサービスされてから、監視モジュール１０４は、Ｉ／Ｏスループット２１０の部分２１２（１）が、ハイブリッドストレージデバイス２１４内の高速ストレージデバイスによって処理及び／又はサービスされたことを推測してもよい。
【００４０】
同様の例では、監視モジュール１０４は、Ｉ／Ｏスループット２１０の部分２１２（Ｎ）に含まれるか及び／又はそれによって表されるそれぞれのＩ／Ｏ動作が１ミリ秒超で処理及び／又はサービスされたことを決定してもよい。この例では、処理及び／又はサービスされるのに１ミリ秒超を要する全てのＩ／Ｏ動作は、ハイブリッドストレージシステム２１４内の低速ストレージデバイス（ＨＤＤ等）に対応してもよい。従って、Ｉ／Ｏスループット２１０の部分２１２（Ｎ）に含まれるか及び／又はそれによって表されるそれぞれのＩ／Ｏ動作が１ミリ秒未満で処理及び／又はサービスされてから、監視モジュール１０４は、Ｉ／Ｏスループット２１０の部分２１２（Ｎ）が、ハイブリッドストレージデバイス２１４内の低速ストレージデバイスによって処理及び／又はサービスされたことを推測してもよい。
【００４１】
特定の例として、図２のハイブリッドストレージシステム２１４を監視する間に、監視モジュール１０４は、特定の期間にわたってハイブリッドストレージシステム２１４内の高速ストレージデバイスで実施されるＩ／Ｏ動作の数をカウントしてもよい。例えば、監視モジュール１０４は、１秒間のＩ／Ｏサイクル中にハイブリッドストレージシステム２１４内のストレージデバイス２０６（１）で実施される１０，０００ＩＯＰＳをカウントしてもよい。それに付加して又はその代替として、監視モジュール１０４は、同一の期間にわたってハイブリッドストレージシステム２１４内の低速ストレージデバイスで実施されるＩ／Ｏ動作の数をカウントしてもよい。例えば、監視モジュール１０４は、その同一の１秒間のＩ／Ｏサイクルにわたってハイブリッドストレージシステム２１４内のストレージデバイス２０６（Ｎ）で実施される２００ＩＯＰＳをカウントしてもよい。監視モジュール１０４は、１秒間のＩ／Ｏサイクル毎の初めにこれらのカウントをリセットしてもよい。
【００４２】
いくつかの例では、監視モジュール１０４は、高速ストレージデバイスで実施されるＩ／Ｏ動作の数をカウントするためにハイブリッドストレージシステム２１４内の高速ストレージデバイスを識別しなくてもよい。言い換えると、Ｉ／Ｏ動作が任意の高速ストレージデバイス（例えば、任意のＳＳＤ、ディスクコントローラキャッシュ、ファイルシステムキャッシュ、ボリュームマネージャキャッシュ、及び／又はＲＡＩＤコントローラキャッシュ）によって処理及び／又はサービスされる限り、監視モジュール１０４は、Ｉ／Ｏ動作を処理及び／又はサービスした高速ストレージデバイスの実際のタイプ及び／又は同一性を無視してもよい。
【００４３】
特定の例として、図４のハイブリッドストレージシステム２１４を監視している間、監視モジュール１０４は、特定の期間にわたって図４の高速ストレージデバイス４０６（１）、４０６（２）、及び／又は４０６（３）のうちの１つで実施されるＩ／Ｏスループット２１０に含まれるか及び／又はそれによって表されるＩ／Ｏ動作の数をカウントしてもよい。監視モジュール１０４は、また、特定の期間にわたって図４の低速ストレージデバイス４０８で実施されるＩ／Ｏスループット２１０に含まれるか及び／又はそれによって表されるＩ／Ｏ動作の数をカウントしてもよい。この例では、監視モジュール１０４は、高速ストレージデバイス４０６（１）〜（３）で実施されたＩ／Ｏ動作を低速ストレージデバイス４０８で実施されたＩ／Ｏ動作と区別してもよい。しかし、監視モジュール１０４は、高速ストレージデバイス４０６（１）〜（３）のうちの１つで実施されたＩ／Ｏ動作を高速ストレージデバイス４０６（１）〜（３）のうちの任意の別の１つで実施されたＩ／Ｏ動作と区別しなくてもよい。
【００４４】
図３に戻って、ステップ３０４では、本明細書で説明するシステムのうちの１つ若しくは２つ以上のものは、監視された性能測定に少なくとも部分的に基づいて、その期間にわたって第２のタイプのストレージデバイスに対して第１のタイプのストレージデバイスによって取り扱われるＩ／Ｏスループットの近似量を決定してもよい。例えば、決定モジュール１０６は、図２のコンピューティングデバイス２０２の部分として、その期間にわたってストレージデバイス２０６（Ｎ）に対してストレージデバイス２０６（１）によって取り扱われたＩ／Ｏスループット２１０の近似の又は正確な量を決定してもよい。この例では、決定モジュール１０６は、監視された性能測定に少なくとも部分的に基づいてこの決定を行うか及び／又はそれに到達してもよい。
【００４５】
本明細書で説明するシステムは、様々な態様及び／又は局面でステップ３０４を実施してもよい。いくつかの例では、決定モジュール１０６は、特定の数のＩ／Ｏ動作が、ハイブリッドストレージシステム２１４内の特定のタイプのストレージデバイスによってサービス及び／又は処理されたことを決定してもよい。例えば、決定モジュール１０６は、Ｉ／Ｏスループット２１０に含まれるか及び／又はそれによって表されるＩ／Ｏ動作の約５０％が、ハイブリッドストレージシステム２１４内の高速ストレージデバイス及び／又は低速ストレージデバイスによってサービス又は処理されたことを決定してもよい。言い換えると、Ｉ／Ｏスループット２１０のキャッシュ利用率は、約５０％であった（Ｉ／Ｏスループット２１０の５０％がキャッシュ又はＳＳＤヒットであったことを意味する）。用語「キャッシュ利用率」は、本明細書で使用されるとき、ハイブリッドストレージシステム内の低速ストレージデバイスに対して高速ストレージデバイスによって取り扱われた、処理された、及び又はサービスされた任意の量のＩ／Ｏスループットを概して指す。
【００４６】
別の例では、決定モジュール１０６は、Ｉ／Ｏスループット２１０に含まれるか及び／又はそれによって表されるＩ／Ｏ動作の約１００％が、ハイブリッドストレージシステム２１４内の高速ストレージデバイス又は低速ストレージデバイスによってサービス及び／又は処理されたことを決定してもよい。その代替として、決定モジュール１０６は、Ｉ／Ｏスループット２１０に含まれるか及び／又はそれによって表されるＩ／Ｏ動作の約０％がハイブリッドストレージシステム２１４内の高速ストレージデバイス又は低速ストレージデバイスによってサービス及び／又は処理されたことを決定してもよい。
【００４７】
いくつかの例では、決定モジュール１０６は、その期間中にハイブリッドストレージシステム２１４によって表明又は提示された応答待ち時間の関数として、Ｉ／Ｏスループット２１０を決定してもよい。そのような例では、Ｉ／Ｏスループット２１０は、その期間中のハイブリッドストレージシステム２１４の総容量を含んでも及び／又は表してもよい。一例では、Ｉ／Ｏスループット２１０は、作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム２１４内で生じる特定の偏差及び／又は分散を吸収することができる指数移動平均として表わされてフォーマット化されてもよい。
【００４８】
それに付加して又はその代替として、決定モジュール１０６は、Ｉ／Ｏスループット２１０を使用して指数移動平均を計算、再計算、及び／又は修正してもよい。このように指数移動平均を計算、再計算、及び／又は修正することによって、決定モジュール１０６は、Ｉ／Ｏスループットの特定の偏差及び／又は分散が有用点を越えて計算を歪めることがないように保証してもよい。
【００４９】
特別な例として、決定モジュール１０６は、Ｉ／Ｏスループット２１０がアプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上から生じる約１０２００ＩＯＰＳを含むか及び／又は表すことを決定してもよい。この例では、決定モジュール１０６は、１００００ＩＯＰＳが、１秒間のＩ／Ｏサイクル中にハイブリッドストレージシステム２１４内のストレージデバイス２０６（１）で実施されたときに観測されたことを決定してもよい。決定モジュール１０６は、また、２００ＩＯＰＳが、その同じ１秒間のＩ／Ｏサイクル中にハイブリッドストレージシステム２１４内のストレージデバイス２０６（Ｎ）で実施されたときに観測されたことを決定してもよい。それに付加して又はそれの代替として、決定モジュール１０６は、その１秒間のＩ／Ｏサイクル中に、ＩＯＰＳのうちの５０％がストレージデバイス２０６（１）によって実施され、そして、ＩＯＰＳのうちの別の５０％がストレージデバイス２０６（Ｎ）によって実施されたことを決定及び／又は仮定してもよい。
【００５０】
それに加えて、決定モジュール１０６は、その１秒間のＩ／Ｏサイクル中にハイブリッドストレージシステム２１４で実施されたＩ／Ｏスループットの特定の量を使用して、指数移動平均を計算、再計算、及び／又は修正してもよい。一例では、関係する指数移動平均を計算するための式は、次式で表されてもよい。ＣａｐａｃｉｔｙＴｏｔａｌ＝Ｈｉｔｓ（Ｈｉｇｈ  Ｓｐｅｅｄ）×Ｃａｐａｃｉｔｙ（Ｈｉｇｈ  Ｓｐｅｅｄ）＋Ｈｉｔｓ（Ｌｏｗ  Ｓｐｅｅｄ）×Ｃａｐａｃｉｔｙ（Ｌｏｗ  Ｓｐｅｅｄ）。この例では、「ＣａｐａｃｉｔｙＴｏｔａｌ」は、ハイブリッドストレージシステム２１４の総容量を表してもよく、「ＨｉｔｓＨｉｇｈ  Ｓｐｅｅｄ」は、ハイブリッドストレージシステム２１４内の高速ストレージデバイスによって実施されたＩＯＰＳのパーセンテージを表してもよく、「ＣａｐａｃｉｔｙＨｉｇｈ  Ｓｐｅｅｄ」は、ハイブリッドストレージシステム２１４内の低速ストレージデバイスのそれぞれの容量を表してもよく、「ＨｉｔｓＬｏｗ  Ｓｐｅｅｄ」は、ハイブリッドストレージシステム２１４内の低速ストレージデバイスによって実施されたＩＯＰＳのパーセンテージを表してもよく、そして、「ＣａｐａｃｉｔｙＬｏｗ  Ｓｐｅｅｄ」は、ハイブリッドストレージシステム２１４内の低速ストレージデバイスのそれぞれの容量を表してもよい。例えば、上記の統計値をこの式に適用することによって、決定モジュール１０６は次のように決定してもよい。
ＣａｐａｃｉｔｙＴｏｔａｌ＝５０％×１００００＋５０％×２００＝５，１００ＩＯＰＳ
【００５１】
指数移動平均をこのように使用することによって、決定モジュール１０６は、作業負荷の急速な変化に対してハイブリッドストレージシステム２１４の作業負荷傾向を反映するＱｏＳ決定を行うことができてもよい。言い換えると、この指数移動平均は、大部分、作業負荷傾向に追従するか及び／又は急速な作業負荷変化を吸収してもよく、それにより、この指数移動平均に少なくとも部分的に基づいて、そして、作業負荷の特定の偏差及び／又は分散にもかかわらず、決定モジュール１０６が安定したＱｏＳ決定をすることを可能にする。
【００５２】
図３に戻って、ステップ３０６では、本明細書で説明するシステムのうちの１つ若しくは２つ以上のものは、第１のタイプのストレージデバイスによって取り扱われたＩ／Ｏスループットの近似量に少なくとも部分的に基づいて、アプリケーションが後続の期間にわたって後続のＩ／Ｏスループットを送達することを許容される速度を決定してもよい。例えば、決定モジュール１０６は、図２のコンピューティングデバイス２０２の部分として、アプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上が、後続の期間にわたって後続のＩ／Ｏスループット（必ずしも図２に示されない）を送達することを許容される速度を決定する。用語「速度」は、本明細書で使用されるとき、アプリケーションがＩ／Ｏ動作を送信及び／又は送達する速度及び／又は周波数についてのなんらかの程度、又はアプリケーションがある期間にわたってハイブリッドストレージシステムに送信又は送達することを許容されるＩ／Ｏスループットについてのなんらかの最大量を概して指す。
【００５３】
一例では、速度は、アプリケーション２０８（１）が後続の期間にわたってＩ／Ｏスループットをハイブリッドストレージシステム２１４に送信又は送達することを許容される平均の速度又は周波数を表しても又はそれらに対応してもよい。それに付加して又はその代替として、速度は、アプリケーション２０８（１）が後続の期間にわたってハイブリッドストレージシステム２１４に送信及び／又は送達することを許容されるＩ／Ｏスループットの最大量を表しても及び／又はそれに対応してもよい。
【００５４】
本明細書で説明するシステムは、様々な態様及び／又は局面でステップ３０６を実施してもよい。いくつかの例では、決定モジュール１０６は、前の期間中に高速ストレージデバイス及び／又は低速ストレージデバイスによってサービスされたＩ／Ｏスループット２１０のパーセンテージに少なくとも部分的に基づいて、後続の期間中にアプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上から生じる後続のＩ／Ｏ動作についての送達速度を決定してもよい。例えば、決定モジュール１０６は、高速ストレージデバイスによってサービスされたＩ／Ｏスループット２１０のパーセンテージを、アプリケーション２０８（１）が次の１秒間のＩ／Ｏサイクル中に後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度を計算するために使用される式に組み込んでもよい。
【００５５】
それに付加して又はその代替として、決定モジュール１０６は、アプリケーション２０８（２）〜（Ｎ）に対するアプリケーション２０８（１）の優先順位レベルを識別してもよい。決定モジュール１０６は、次いで、高速ストレージデバイスによってサービスされるＩ／Ｏスループット２１０の近似量と、アプリケーション２０８（２）〜（Ｎ）に対するアプリケーション２０８（１）の優先順位レベルとに少なくとも部分的に基づいて、アプリケーション２０８（１）が後続の期間中に後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度を決定してもよい。例えば、決定モジュール１０６は、アプリケーション２０８（１）の高速ストレージデバイスによってサービスされるＩ／Ｏスループット２１０の近似量と優先順位レベルとを、アプリケーション２０８（１）が次の１秒間のＩ／Ｏサイクル中に後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度を計算するために使用される式に組み込んでもよい。この例では、決定モジュール１０６は、アプリケーション２０８（１）〜（Ｎ）のそれぞれに対応する優先順位レベルを表す重みを適用することによって、それらの優先順位レベルに基づいてアプリケーション２０８（１）〜（Ｎ）をスケーリングしてもよい。
【００５６】
一例では、決定モジュール１０６は、後続の期間中にアプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上から生じる後続のＩ／Ｏ動作についての送達速度を、その後続の期間にアプリケーション２０８（１）〜（Ｎ）に割り当てられるＩ／Ｏクレジットに少なくとも部分的に基づいて決定し得る。例えば、決定モジュール１０６は、アプリケーション２０８（１）が次の１秒間のＩ／Ｏサイクル中に後続のＩ／Ｏスループットに寄与することを許容されるＩ／Ｏ動作の近似の又は正確な量に対応する特定の数のＩ／Ｏクレジットを割り当ててもよい。用語「Ｉ／Ｏクレジット」、又は単に「クレジット」とは、本明細書で使用されるとき、ハイブリッドストレージシステムに関するアプリケーションに割り当てられる及び／又はクレジットされるＩ／Ｏ処理パワー、バンド幅、及び／又は作業負荷の一部分についてのなんらかの表現を概して指す。
【００５７】
特定の例として、決定モジュール１０６は、図５のＩ／Ｏサイクル５００についての情報に少なくとも部分的に基づいて、アプリケーション２０８（１）〜（Ｎ）に割り当てるためのＩ／Ｏクレジットの数を計算してもよい。図５に示すように、Ｉ／Ｏサイクル５００についての情報は、Ｉ／Ｏサイクルの継続期間（この例では、「１秒間」）、Ｉ／Ｏスループットに寄与するアプリケーションの全て（この例では、「ＶＭ１」、「ＶＭ２」、「ＶＭ３」及び「ＶＭ４」）、それらのアプリケーションの優先順位レベル（この例では、「４（ＶＭ４）→最高優先順位」、「３（ＶＭ３）」、「２（ＶＭ２）」及び「１（ＶＭ１）→最低優先順位）、それらのアプリケーションの総キャッシュ利用率（この例では、「１００」）、それらのアプリケーション内でのそれぞれのアプリケーションの個々のキャッシュ利用率（この例では、「１０（ＶＭ４）」、「２０（ＶＭ３）」、「３０（ＶＭ２）」及び「４０（ＶＭ１）」）、ユーザによって指定されたキャッシュ利用率のパーセンテージ（この例では、１００％」）、及び、Ｉ／Ｏサイクル中のハイブリッドストレージシステム２１４の総容量（この例では、「２００ＩＯＰＳ」）を識別してもよい。一例では、総キャッシュ利用率及び／又は個々のキャッシュ利用率は、作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム２１４内で生じる特定の偏差及び／又は分散を吸収できる指数移動平均として表わされてフォーマット化されてもよい。
【００５８】
決定モジュール１０６は、優先順位レベルとスケーリング因子との積の合計を総キャッシュ利用率に等しく設定することによってアプリケーションの優先順位レベルについてのスケーリング因子を決定してもよい。一例では、アプリケーションの優先順位レベルに対するスケーリング因子を決定するための式は、次のように表現されてもよい。
【００５９】
【数１】
0006640242.tif 000002
この例では、「Ｃａｃｈｅ  ＵｔｉｌｉｚａｔｉｏｎＴｏｔａｌ」は、前のＩ／Ｏサイクル中にキャッシュ及び／又はＳＳＤヒットをもたらすアプリケーション２０８（１）〜（Ｎ）から生じるＩ／Ｏ動作の総数を表してもよく、「Ｐｒｉｏｒｉｔｙ  ＬｅｖｅｌＡｐｐｌｉｃａｔｉｏｎ（ｉ）」は、アプリケーション２０８（１）〜（Ｎ）に割り当てられた優先順位レベルを表してもよく、「Ｓｃａｌｉｎｇ  Ｆａｃｔｏｒ」は、アプリケーション２０８（１）〜（Ｎ）をそれらに割り当てられた優先順位レベルに基づいてスケーリング及び／又は重み付けするために使用される任意の数又は式を表してもよい。例えば、図５のＩ／Ｏサイクル５００についての情報をこの式に適用することによって、決定モジュール１０６は、次のように決定してもよい。１００＝１ｙ＋２ｙ＋３ｙ＋４ｙ＝１０ｙ、及び／又はｙ＝１０（式中、「ｙ」はスケーリング因子を表現する）。一例では、「Ｃａｃｈｅ  ＵｔｉｌｉｚａｔｉｏｎＴｏｔａｌ」は、アプリケーション２０８（１）〜（Ｎ）の全てを網羅し、作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム２１４内に生じる特定の偏差及び／又は分散を吸収できる指数移動平均として表されてフォーマット化されてもよい。
【００６０】
更に、決定モジュール１０６は、スケーリング因子をアプリケーションの優先順位レベルに掛けることによって、アプリケーションの優先順位レベルをスケーリングしてもよい。一例では、アプリケーションのそれぞれに対する優先順位重みをスケーリングするための式が、次のように表されてもよい。Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＡｐｐｌｉｃａｔｉｏｎ＝Ｐｒｉｏｒｉｔｙ  ＬｅｖｅｌＡｐｐｌｉｃａｔｉｏｎ×Ｓｃａｌｉｎｇ  Ｆａｃｔｏｒ。この例では、「Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＡｐｐｌｉｃａｔｉｏｎ」は、アプリケーションの割り当てられた優先順位レベルに基づいてアプリケーション２０８（１）〜（Ｎ）内の特定アプリケーションに適用されるスケーリングされた優先順位重みを表してもよく、「Ｐｒｉｏｒｉｔｙ  ＬｅｖｅｌＡｐｐｌｉｃａｔｉｏｎ」は、アプリケーション２０８（１）〜（Ｎ）内の特定のアプリケーションに割り当てられた優先順位レベルを表してもよく、そして、「Ｓｃａｌｉｎｇ  Ｆａｃｔｏｒ」は、アプリケーション２０８（１）〜（Ｎ）をそれらの割り当てられた優先順位レベルに基づいてスケーリング及び／又は重み付けするために使用されるなんらかの数又は式を表してもよい。例えば、図５のＩ／Ｏサイクル５００についての情報をこの式に適用することによって、決定モジュール１０６は、次のように決定してもよい。Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ１＝１×１０＝１０、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ２＝２×１０＝２０、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ３＝３×１０＝３０、及び／又はＳｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ４＝４×１０＝４０
【００６１】
それに付加して又はその代替として、決定モジュール１０６は、ハイブリッドストレージシステム２１４の総容量とスケーリングされた優先順位重みの全てと総キャッシュ利用率との合計に対するそのアプリケーションのスケーリングされた優先順位重みとキャッシュ利用率の合計とを掛けることによって、それぞれのアプリケーションに割り当てるためのＩ／Ｏクレジットの数を計算してもよい。一例では、Ｉ／Ｏクレジットの数を計算するための式は、次のように表されてもよい。
【００６２】
【数２】
0006640242.tif 000003
【００６３】
この例では、「ＣｒｅｄｉｔｓＡｐｐｌｉｃａｔｉｏｎ」は、次のＩ／Ｏサイクルのためのアプリケーション２０８（１）〜（Ｎ）内の特定のアプリケーションに割り当てられたクレジット（又はＩＯＰＳ）の数を表してもよく、「ＣａｐａｃｉｔｙＴｏｔａｌ」は、ハイブリッドストレージシステム２１４の総容量を表してもよく、「Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＡｐｐｌｉｃａｔｉｏｎ」は、アプリケーションの割り当てられた優先順位レベルに基づいてアプリケーション２０８（１）〜（Ｎ）内の特定のアプリケーションに適用されるスケーリングされた優先順位重みを表してもよく、「Ｃａｃｈｅ  ＵｔｉｌｉｚａｔｉｏｎＡｐｐｌｉｃａｔｉｏｎ」は、前のＩ／Ｏサイクル中にキャッシュ及び／又はＳＳＤヒットをもたらす特定のアプリケーションから生じるＩ／Ｏ動作の数を表してもよく、「Ｕｓｅｒ−ｓｐｅｃｉｆｉｅｄ  Ｐｅｒｃｅｎｔａｇｅ  ｏｆ  Ｃａｃｈｅ」は、次のＩ／Ｏサイクルのためにユーザによって選択されるキャッシュ利用率（総キャッシュ利用率又は個々のキャッシュ利用率のいずれか）を表してもよく、「Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＴｏｔａｌ」は、アプリケーション２０８（１）〜（Ｎ）に適用されるスケーリングされた優先順位重みの総量を表してもよく、「Ｃａｃｈｅ  ＵｔｉｌｉｚａｔｉｏｎＴｏｔａｌ」は、前のＩ／Ｏサイクル中にキャッシュ及び／又はＳＳＤヒットをもたらしたアプリケーション２０８（１）〜（Ｎ）から生じるＩ／Ｏ動作の総数を表してもよい。例えば、図５のＩ／Ｏサイクル５００についての情報をこの式に適用することによって、決定モジュール１０６は、次のように決定してもよい。
【００６４】
【数３】
0006640242.tif 000004
一例では、「Ｃａｃｈｅ  ＵｔｉｌｉｚａｔｉｏｎＡｐｐｌｉｃａｔｉｏｎ」は、アプリケーションに固有であり、そして作業負荷特性に少なくとも部分的に起因してハイブリッドストレージシステム２１４内に生じる特定の偏差及び／又は分散を吸収できる指数移動平均として表されてフォーマット化されてもよい。
【００６５】
決定モジュール１０６は、次いで、アプリケーション２０８（１）〜（Ｎ）が次の１秒間のＩ／Ｏサイクル中に後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度を計算してもよい。この例では、速度を計算するための式は、次のように表されてもよい。
【００６６】
【数４】
0006640242.tif 000005
例えば、図５のＩ／Ｏサイクル５００についての情報をこの式に適用することによって、決定モジュール１０６は、次のように決定してもよい。
【００６７】
【数５】
0006640242.tif 000006
【００６８】
別の特定の例のように、決定モジュール１０６は、図６のＩ／Ｏサイクル６００についての情報に少なくとも部分的に基づいてアプリケーション２０８（１）〜（Ｎ）に割り当てるためのＩ／Ｏクレジットの数を計算してもよい。図６に示すように、Ｉ／Ｏサイクル６００についての情報は、Ｉ／Ｏサイクルの継続期間（この例では、「１秒間」）、Ｉ／Ｏスループットに寄与するアプリケーションの全て（この例では、「ＶＭ１」、「ＶＭ２」、「ＶＭ３」、「ＶＭ４」、及び「ＶＭ５）、それらのアプリケーションの優先順位レベル（この例では、「４（ＶＭ５）→最高優先順位」、「３（ＶＭ３）」、「２（ＶＭ２）」、「２（ＶＭ２）」及び「１（ＶＭ１）→最低優先順位）、それらのアプリケーションの総キャッシュ利用率（この例では、「２９０００」）、それらのアプリケーション内のそれぞれのアプリケーションの個々のキャッシュ利用率（この例では、「４０００（ＶＭ５）」、「８０００（ＶＭ４）」、「５０００（ＶＭ３）」、「２０００（ＶＭ２）」、及び「１００００（ＶＭ１））、ユーザによって指定されたキャッシュ利用率のパーセンテージ（この例では、「１００％」）、及びＩ／Ｏサイクル中のハイブリッドストレージシステム２１４の総容量（この例では、「４００００ＩＯＰＳ」）を識別してもよい。
【００６９】
この例では、図６のＩ／Ｏサイクル６００についての情報を
【００７０】
【数６】
0006640242.tif 000007
に適用することによって、決定モジュール１０６は、次のように決定してもよい。２９０００＝１ｙ＋２ｙ＋２ｙ＋３ｙ＋４ｙ＝１２ｙ、及び／又はｙ約２４１６（式中、「ｙ」は、スケーリング因子を表す）。それに加えて、図６のＩ／Ｏサイクル６００についての情報をＳｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＡｐｐｌｉｃａｔｉｏｎ＝Ｐｒｉｏｒｉｔｙ  ＬｅｖｅｌＡｐｐｌｉｃａｔｉｏｎ×Ｓｃａｌｉｎｇ  Ｆａｃｔｏｒに適用することによって、決定モジュール１０６は、次のように決定してもよい。Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ１＝１×２４１６＝２４１６、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ２＝２×２４１６＝４８３２、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ３＝２×２４１６＝４８３２、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ４＝３×２４１６＝７２４８、及び／又はＳｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ５＝４×２４１６＝９６６４。更に、図６のＩ／Ｏサイクル６００についての情報を
【００７１】
【数７】
0006640242.tif 000008
に適用することによって、決定モジュール１０６は、次のように決定してもよい。
【００７２】
【数８】
0006640242.tif 000009
【００７３】
決定モジュール１０６は、次いで、アプリケーション２０８（１）〜（Ｎ）が次の１秒間のＩ／Ｏサイクル中に後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度を計算してもよい。例えば、図６のＩ／Ｏサイクル６００についての情報を
【００７４】
【数９】
0006640242.tif 000010
に適用することによって、決定モジュール１０６は、次のように決定してもよい。
【００７５】
【数１０】
0006640242.tif 000011
【００７６】
更なる特定の例として、決定モジュール１０６は、図７のＩ／Ｏサイクル７００についての情報に少なくとも部分的に基づいてアプリケーション２０８（１）〜（Ｎ）に割り当てるためのＩ／Ｏクレジットの数を計算してもよい。図７に示すように、Ｉ／Ｏサイクル７００についての情報は、Ｉ／Ｏサイクルの継続期間（この例では、「１秒間」）、Ｉ／Ｏスループットに寄与するアプリケーションの全て（この例では、「ＶＭ１」、「ＶＭ２」、「ＶＭ３」、「ＶＭ４」、及び「ＶＭ５）、それらのアプリケーションの優先順位レベル（この例では、「４（ＶＭ５）→「最高優先順位」、「３（ＶＭ３）」、「２（ＶＭ２）」、「２（ＶＭ２）」、及び「１（ＶＭ１）→最低優先順位」）、それらのアプリケーションの総キャッシュ利用率（この例では、「２９０００」）、それらのアプリケーション内のそれぞれのアプリケーションの個々のキャッシュ利用率（この例では、「４０００（ＶＭ５）」、８０００（ＶＭ４）」、「５０００（ＶＭ３）」、「２０００（ＶＭ２）」、及び「１００００（ＶＭ１）」）、ユーザによって指定されたキャッシュ利用率のパーセンテージ（この例では、「５０％」）、及び、Ｉ／Ｏサイクル中のハイブリッドストレージシステム２１４の総容量（この例では、「４００００ＩＯＰＳ」）を識別してもよい。
【００７７】
この例では、図７のＩ／Ｏサイクル７００についての情報を
【００７８】
【数１１】
0006640242.tif 000012
に適用することによって、決定モジュール１０６は、次のように決定してもよい。２９０００＝１ｙ＋２ｙ＋２ｙ＋３ｙ＋４ｙ＝１２ｙ、及び／又はｙ約２４１６（式中、「ｙ」はスケーリング因子を表す）。更に、図７のＩ／Ｏサイクル７００についての情報をＳｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＡｐｐｌｉｃａｔｉｏｎ＝Ｐｒｉｏｒｉｔｙ  ＬｅｖｅｌＡｐｐｌｉｃａｔｉｏｎ×Ｓｃａｌｉｎｇ  ｆａｃｔｏｒに適用することによって、決定モジュール１０６は、次のように決定してもよい。Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ１＝１×２４１６＝２４１６、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ２＝２×２４１６＝４８３２、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ３＝２×２４１６＝４８３２、Ｓｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ４＝３×２４１６＝７２４８、及び／又はＳｃａｌｅｄ  Ｐｒｉｏｒｉｔｙ  ＷｅｉｇｈｔＶＭ５＝４×２４１６＝９６６４。更に、図７のＩ／Ｏサイクル７００についての情報を
【００７９】
【数１２】
0006640242.tif 000013
に適用することによって、決定モジュール１０６は、次のように決定してもよい。
【００８０】
【数１３】
0006640242.tif 000014
【００８１】
決定モジュール１０６は、次いで、アプリケーション２０８（１）〜（Ｎ）が次の１秒間のＩ／Ｏサイクル中に後続のＩ／Ｏスループットをハイブリッドストレージシステム２１４に送達することを許容される速度を計算してもよい。例えば、図６のＩ／Ｏサイクル６００についての情報を
【００８２】
【数１４】
0006640242.tif 000015
に適用することによって、決定モジュール１０６は、次のように決定してもよい。
【００８３】
【数１５】
0006640242.tif 000016
【００８４】
このようにアプリケーション２０８（１）〜（Ｎ）に割り当てるためのＩ／Ｏクレジットの数を計算することによって、決定モジュール１０６は、変化するＩ／Ｏサイクル全体でアプリケーション２０８（１）〜（Ｎ）に対する合理的に正しい伝送速度及び／又はバンド幅シェアを維持するＱｏＳ決定をすることが可能であってもよい。更に、このようにアプリケーション２０８（１）〜（Ｎ）に割り当てるためにクレジットの数を計算することによって、決定モジュール１０６は、最低優先順位アプリケーションが最高キャッシュ利用率を有し、及び／又は最高優先順位アプリケーションが最低キャッシュ利用率を有するという可能性が低い事象においてさえソースの優先順位逆転を回避することが可能であり得る。
【００８５】
図３に戻って、ステップ３０８では、本明細書で説明するシステムのうちの１つ若しくは２つ以上は、アプリケーションが後続のＩ／Ｏスループットをハイブリッドストレージシステムに送達することを許容される速度に少なくとも部分的に基づいて、後続の期間にわたってアプリケーションと関連した後続のＩ／Ｏスループットを調節する。例えば、調節モジュール１０８は、図２のコンピューティングデバイス２０２の部分として、速度に少なくとも部分的に基づいて後続の期間にわたって１つ若しくは２つ以上のアプリケーション２０８（１）〜（Ｎ）と関連した後続のＩ／Ｏスループットを調節及び／又は制御してもよい。
【００８６】
本明細書で説明するシステムは、様々な態様及び／又は局面でステップ３０８を実施してもよい。いくつかの例では、調節モジュール１０８は、ハイブリッドストレージシステム２１４が後続の期間中にアプリケーション２０８（１）〜（Ｎ）のうちの任意のものと関連したＩ／Ｏ動作の特定の数を超過して取り扱わないことを保証にすることによって、後続のＩ／Ｏスループットを制御してもよい。例えば、調節モジュール１０８は、アプリケーション２０８（１）に、アプリケーション２０８（１）が次の１秒間のＩ／Ｏサイクル中に後続のＩ／Ｏスループットに寄与することを許容されるＩ／Ｏ動作の近似量に対応する数のＩ／Ｏクレジットを割り当ててもよい。このようにＩ／Ｏクレジットの数をアプリケーション２０８（１）に割り当てることによって、調節モジュール１０８は、ハイブリッドストレージシステム２１４が、次の１秒間のＩ／Ｏサイクル中に割り当てられたＩ／Ｏクレジットの数を上回っている数のアプリケーション２０８（１）から生じるＩ／Ｏ動作をサービス及び／又は処理しないことを保証してもよい。
【００８７】
一例では、調節モジュール１０８は、アプリケーション２０８（１）が、割り当てられたＩ／Ｏクレジットの数を上回る数のＩ／Ｏ動作を次の１秒間のＩ／Ｏサイクルにわたってハイブリッドストレージシステム２１４に送達することを防止してもよい。それに付加して又はその代替として、調節モジュール１０８は、ハイブリッドストレージシステム２１４が次の１秒間のＩ／Ｏサイクル中に割り当てられたＩ／Ｏクレジットの数を上回っている数のアプリケーション２０８（１）から生じるＩ／Ｏ動作を実施することを防止してもよい。
【００８８】
いくつかの例では、本明細書で説明するシステム及び方法は、ステップ３０２、３０４、３０６、及び３０８のうちの１つ若しくは２つ以上を繰り返すことにより、実質的に連続する基礎（例えば、Ｉ／Ｏサイクル毎）においてハイブリッドストレージシステム２１４及び／又はアプリケーション２０８（１）〜（Ｎ）の特性（Ｉ／Ｏスループット、Ｉ／Ｏクレジット、及び／又は送達速度等）を再評価してもよい。例えば、次の１秒間のＩ／Ｏサイクル中に、監視モジュール１０４は、ハイブリッドストレージシステム２１４の少なくとも１つの性能測定を監視してもよい。この例では、決定モジュール１０６は、次の１秒間のＩ／Ｏサイクル中にストレージデバイス２０６（Ｎ）に対してストレージデバイス２０６（１）によって取り扱われるＩ／Ｏスループットの近似の又は正確な量を決定してもよい。決定モジュール１０６は、次いで、この量に少なくとも部分的に基づいて、アプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上が、後の１秒間のＩ／Ｏサイクル中にハイブリッドストレージシステム２１４に更なるＩ／Ｏスループットを送達することを許容される速度を決定してもよい。最後に、調節モジュール１０８は、その後の１秒間のＩ／Ｏサイクル中にアプリケーション２０８（１）〜（Ｎ）のうちの１つ若しくは２つ以上と関連した更なるＩ／Ｏスループットを調節してもよい。
【００８９】
図３の例示的な方法３００と関連して上記で説明したように、ＱｏＳアプリケーションは、１秒間の期間にわたってハイブリッドストレージシステムのＩ／Ｏスループットを監視してもよい。このようにハイブリッドストレージシステムのＩ／Ｏスループットを監視することによって、ＱｏＳアプリケーションは、Ｉ／Ｏ動作がＳＳＤ又はキャッシュによってサービスされた回数、及びＩ／Ｏ動作がその１秒間の期間中にディスクによってサービスされた回数を決定してもよい。このようにＩ／Ｏ動作がこれらの異なるタイプのストレージデバイスによってサービスされた回数を決定すると、ＱｏＳアプリケーションは、次の１秒間の期間にわたって特定のアプリケーションから生じるＩ／Ｏ動作に対してＩ／Ｏクレジットを割り当て及び／又は実質的に安定した送達速度を決定するために、基準及び／又は履歴基準値としてそのＩ／Ｏ動作の数を使用してもよい。ＱｏＳは、それぞれの１秒間の期間中に又はその前にアプリケーションに割り当てられるＩ／Ｏクレジットを再評価し続けてもよい。
【００９０】
図８は、本明細書において説明及び／又は例示される実施形態のうちの１つ若しくは２つ以上を実装することが可能な例示的なコンピューティングシステム８１０のブロック図である。例えば、コンピューティングシステム８１０の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書において説明されるステップのうちの１つ若しくは２つ以上（図３に例示するステップのうちの１つ若しくは２つ以上等）を実施してもよいか及び／又は実施するための手段であってもよい。コンピューティングシステム８１０の全て又は一部分は、また、本明細書において説明及び／又は例示する任意の他のステップ、方法、又はプロセスを実施してもよいか及び／又は実施するための手段であってもよい。
【００９１】
コンピューティングシステム８１０は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサコンピューティングデバイス又はシステムを広く表す。コンピューティングシステム８１０の例としては、限定することなく、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散コンピューティングシステム、ハンドヘルドデバイス、又は任意の他のコンピューティングシステム又はデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム８１０は、少なくとも１つのプロセッサ８１４、及びシステムメモリ８１６を含んでもよい。
【００９２】
プロセッサ８１４は、データを処理すること、又は命令を解釈及び実行することが可能な任意のタイプ又は形式の物理処理ユニット（例えば、ハードウェア実装中央処理ユニット）を概して表す。特定の実施形態において、プロセッサ８１４は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ８１４に、本明細書において説明及び／又は例示する例示的な実施形態のうちの１つ若しくは２つ以上の機能を実施させてもよい。
【００９３】
システムメモリ８１６は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は非揮発性ストレージデバイス若しくは媒体を概して表す。システムメモリ８１６の例としては、限定することなく、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必須ではないが、特定の実施形態においては、コンピューティングシステム８１０は、揮発性メモリユニット（例えば、システムメモリ８１６等）、及び非揮発性ストレージデバイス（例えば、以下で詳細に説明するような１次ストレージデバイス８３２等）の両方を含んでもよい。一実施例において、図１からのモジュール１０２のうちの１つ若しくは２つ以上は、システムメモリ８１６にロードされてもよい。
【００９４】
ある実施形態において、例示的なコンピューティングシステム８１０は、また、プロセッサ８１４及びシステムメモリ８１６に加えて、１つ若しくは２つ以上の構成要素又は要素を含んでもよい。例えば、図８に示すように、コンピューティングシステム８１０は、メモリコントローラ８１８と、入力／出力（Ｉ／Ｏ）コントローラ８２０と、通信インターフェース８２２とを含んでもよく、これらのそれぞれは、通信インフラストラクチャ８１２を介して相互接続されてもよい。通信インフラストラクチャ８１２は、コンピューティングデバイスの１つ若しくは２つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ８１２の例としては、限定することなく、通信バス（業界標準アーキテクチャ（ＩＳＡ）、周辺構成要素相互接続（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は類似のバス等）、及びネットワークが挙げられる。
【００９５】
メモリコントローラ８１８は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム８１０の１つ若しくは２つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ８１８は、通信インフラストラクチャ８１２を介して、プロセッサ８１４、システムメモリ８１６、及びＩ／Ｏコントローラ８２０間の通信を制御してもよい。
【００９６】
Ｉ／Ｏコントローラ８２０は、コンピューティングデバイスの入出力機能を調整及び／又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ８２０は、プロセッサ８１４、システムメモリ８１６、通信インターフェース８２２、表示アダプタ８２６、入力インターフェース８３０、及びストレージインターフェース８３４等のコンピューティングシステム８１０の１つ若しくは２つ以上の要素間のデータの転送を制御してもよく、又は容易にしてもよい。
【００９７】
通信インターフェース８２２は、例示的なコンピューティングシステム８１０と、１つ若しくは２つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態では、通信インターフェース８２２は、コンピューティングシステム８１０と、追加のコンピューティングシステムを含む私的又は公的ネットワークとの間の通信を容易にしてもよい。通信インターフェース８２２の例としては、限定することなく、有線ネットワークインターフェース（ネットワークインターフェースカード等）、無線ネットワークインターフェース（無線ネットワークインターフェースカード等）、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース８２２は、インターネット等のネットワークへの直接的なリンクを介して、遠隔サーバへの直接的な接続を提供してもよい。通信インターフェース８２２は、また、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワーク等）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
【００９８】
ある実施形態において、通信インターフェース８２２はまた、外部バス又は通信チャネルを介して、コンピューティングシステム８１０と、１つ若しくは２つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されるホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース（ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ホストアダプタ、米国電気電子技術者協会（ＩＥＥＥ）１３９４ホストアダプタ、アドバンストテクノロジーアタッチメント（ＡＴＡ）、パラレルＡＴＡ（ＰＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、及びエクスターナルＳＡＴＡ（ｅＳＡＴＡ）ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット（登録商標）アダプタなどが挙げられる。通信インターフェース８２２は、また、コンピューティングシステム８１０が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース８２２は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
【００９９】
図８に示すように、コンピューティングシステム８１０は、また、表示アダプタ８２６を介して、通信インフラストラクチャ８１２に連結される少なくとも１つの表示デバイス８２４を含んでもよい。表示デバイス８２４は、表示アダプタ８２６によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ８２６は、表示デバイス８２４上に表示するために、通信インフラストラクチャ８１２から（又は当該技術分野において既知のように、フレームバッファから）、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
【０１００】
図８に示すように、例示的なコンピューティングシステム８１０は、また、入力インターフェース８３０を介して、通信インフラストラクチャ８１２に連結される少なくとも１つの入力デバイス８２８を含んでもよい。入力デバイス８２８は、コンピュータ又はヒトのいずれかによって生成された入力を、例示的なコンピューティングシステム８１０に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス８２８の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
【０１０１】
図８に示すように、例示的なコンピューティングシステム８１０は、また、ストレージインターフェース８３４を介して、通信インフラストラクチャ８１２に連結される１次ストレージデバイス８３２及びバックアップストレージデバイス８３３を含んでもよい。ストレージデバイス８３２及び８３３は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。例えば、ストレージデバイス８３２及び８３３は、磁気ディスクドライブ（例えば、ＨＤＤ）、ＳＳＤ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であってもよい。ストレージインターフェース８３４は、コンピューティングシステム８１０のストレージデバイス８３２及び８３３と、他の構成要素との間でデータを転送するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。
【０１０２】
特定の実施形態では、ストレージデバイス８３２及び８３３は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取るように、及び／又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。ストレージデバイス８３２及び８３３は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム８１０にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、ストレージデバイス８３２及び８３３は、ソフトウェア、データ、他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。ストレージデバイス８３２及び８３３は、コンピューティングシステム８１０の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
【０１０３】
多くの他のデバイス又はサブシステムが、コンピューティングシステム８１０に接続されてもよい。逆に、図８に示す構成要素及びデバイスの全てが、本明細書において説明及び／又は例示する実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムは、また、図８に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム８１０は、また、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を採用してもよい。例えば、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上は、コンピュータ可読媒体上に、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化され得る。「コンピュータ可読媒体」という用語は、本明細書において使用される際、概して、コンピュータ可読命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定することなく、搬送波等の伝送タイプ媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光記憶媒体（例えば、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びＢＬＵ−ＲＡＹディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）等の非一時的タイプ媒体、並びに他の分散システムが挙げられる。
【０１０４】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム８１０にロードされてもよい。次いで、コンピュータ可読媒体上に記憶されたコンピュータプログラムの全て又は一部分は、システムメモリ８１６及び／又はストレージデバイス８３２及び８３３の種々の部分に記憶されてもよい。プロセッサ８１４によって実行されるとき、コンピューティングシステム８１０にロードされたコンピュータプログラムは、本明細書において説明及び／又は例示する例示的な実施形態のうちの１つ若しくは２つ以上の機能をプロセッサ８１４に実施させてもよく及び／又はそれらを実施するための手段であってもよい。更に、又は代替的に、本明細書において説明及び／又は例解される例示的な実施形態のうちの１つ若しくは２つ以上は、ファームウェア及び／又はハードウェアにおいて実装され得る。例えば、コンピューティングシステム８１０は、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成されてもよい。
【０１０５】
図９は、クライアントシステム９１０、９２０、及び９３０、並びにサーバ９４０及び９４５がネットワーク９５０に連結されてもよい例示的なネットワークアーキテクチャ９００のブロック図である。上記で詳述されたように、ネットワークアーキテクチャ９００の全て又は一部分は、単独又は他の要素との組合せのいずれかで、本明細書において開示される工程のうちの１つ若しくは２つ以上（図３に例示する工程のうちの１つ若しくは２つ以上等）を実施してもよく、及び／又は実施するための手段であってもよい。ネットワークアーキテクチャ９００の全て又は一部分は、また、本開示において記載された他の工程及び機能を実施するために使用されてもよく、及び／又は実施するための手段であってもよい。
【０１０６】
クライアントシステム９１０、９２０、及び９３０は、図８の例示的なコンピューティングシステム８１０等の任意のタイプ又は形式のコンピューティングデバイス又はシステムを概して表す。同様に、サーバ９４０及び９４５は、種々のデータベースサービスを提供するように、及び／又はあるソフトウェアアプリケーションを動作させるように構成されたアプリケーションサーバ又はデータベースサーバ等のコンピューティングデバイス又はシステムを概して表す。ネットワーク９５０は、例えば、イントラネット、ＷＡＮ、ＬＡＮ、ＰＡＮ、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを概して表す。一例では、クライアントシステム９１０、９２０、及び／又はは９３０、並びに／或いはサーバ９４０及び／又は９４５は、図１からのシステム１００の全て又は一部分を含んでもよい。
【０１０７】
図９に示すように、１つ若しくは２つ以上のストレージデバイス９６０（１）〜（Ｎ）は、サーバ９４０に直接取設されてもよい。同様に、１つ若しくは２つ以上のストレージデバイス９７０（１）〜（Ｎ）は、サーバ９４５に直接取設されてもよい。ストレージデバイス９６０（１）〜（Ｎ）及びストレージデバイス９７０（１）〜（Ｎ）は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。特定の実施形態では、ストレージデバイス９６０（１）〜（Ｎ）及びストレージデバイス９７０（１）〜（Ｎ）は、ネットワークファイルシステム（ＮＦＳ）、サーバメッセージブロック（ＳＭＢ）、又は共通インターネットファイルシステム（ＣＩＦＳ）等の種々のプロトコルを使用して、サーバ９４０及び９４５と通信するように構成されたネットワーク接続型記憶（ＮＡＳ）デバイスを表してもよい。
【０１０８】
サーバ９４０及び９４５は、また、ストレージエリアネットワーク（ＳＡＮ）ファブリック９８０に接続されてもよい。ＳＡＮファブリック９８０は、複数のストレージデバイス間の通信を容易にすることが可能な任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ＳＡＮファブリック９８０は、サーバ９４０及び９４５と、複数のストレージデバイス９９０（１）〜（Ｎ）及び／又は知的ストレージアレイ９９５との間の通信を容易にしてもよい。ＳＡＮファブリック９８０は、また、デバイス９９０（１）〜（Ｎ）及びアレイ９９５が、クライアントシステム９１０、９２０、及び９３０にローカルに取設されたデバイスとして見えるような態様で、ネットワーク９５０並びにサーバ９４０及び９４５を介して、クライアントシステム９１０、９２０、及び９３０と、ストレージデバイス９９０（１）〜（Ｎ）及び／又は知的記憶アレイ９９５との間の通信を容易にしてもよい。ストレージデバイス９６０（１）〜（Ｎ）及びストレージデバイス９７０（１）〜（Ｎ）と同様に、ストレージデバイス９９０（１）〜（Ｎ）及び知的ストレージアレイ９９５は、データ及び／又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。
【０１０９】
特定の実施形態では、図８の例示的なコンピューティングシステム８１０を参照すると、図８の通信インターフェース８２２等の通信インターフェースは、それぞれのクライアントシステム９１０、９２０、及び９３０と、ネットワーク９５０との間の接続性を提供するために使用されてもよい。クライアントシステム９１０、９２０、及び９３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ９４０又は９４５上の情報にアクセスすることが可能であってもよい。かかるソフトウェアは、クライアントシステム９１０、９２０、及び９３０が、サーバ９４０、サーバ９４５、ストレージデバイス９６０（１）〜（Ｎ）、ストレージデバイス９７０（１）〜（Ｎ）、ストレージデバイス９９０（１）〜（Ｎ）、又は知的ストレージアレイ９９５によってホストされるデータにアクセスすることを可能にしてもよい。図９は、データを交換するためのネットワーク（インターネット等）の使用を描写するが、本明細書において説明及び／又は例示する実施形態は、インターネット又はいずれの特定のネットワークベースの環境にも限定されない。
【０１１０】
少なくとも１つの実施形態において、本明細書で開示される例示的な実施形態のうちの１つ若しくは２つ以上の全て又は一部分は、コンピュータプログラムとしてコード化されてもよく、サーバ９４０、サーバ９４５、ストレージデバイス９６０（１）〜（Ｎ）、ストレージデバイス９７０（１）〜（Ｎ）、ストレージデバイス９９０（１）〜（Ｎ）、知的記憶アレイ９９５、又はこれらの任意の組み合わせにロードされ、これらによって実行されてもよい。本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上の全て又は一部分は、また、コンピュータプログラムとしてコード化され、サーバ９４０内に記憶され、サーバ９４５によって実行され、ネットワーク９５０を通じてクライアントシステム９１０、９２０、及び９３０に分散されてもよい。
【０１１１】
上記で詳述したように、コンピューティングシステム８１０及び／又はネットワークアーキテクチャ９００の１つ若しくは２つ以上の構成要素は、単独又は他の要素との組合せのいずれかで、ハイブリッドストレージシステム内のサービス品質を改善するための例示的な方法の１つ若しくは２つ以上のステップを実施してもよく、及び／又は実施するための手段であってもよい。
【０１１２】
上述の開示は、具体的なブロック図、フローチャート、及び実施例を使用して、種々の実施形態を記載するが、本明細書において説明及び／又は例解される各ブロック図の構成要素、フローチャートの工程、動作、及び／又は構成要素は、広範なハードウェア、ソフトウェア、又はファームウェア（又はこれらの任意の組み合わせ）構成を使用して、個々に、及び／又は集合的に実装され得る。加えて、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャを実装して、同じ機能性を達成することができるため、事実上、例示的であると見なされるべきである。
【０１１３】
いくつかの例では、図１の例示的なシステム１００の全て又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【０１１４】
種々の実施形態において、図１の例示的なシステム１００の全て又は一部分は、クラウドベースのコンピューティング環境内のマルチテナンシーを容易にし得る。換言すると、本明細書において説明されるソフトウェアモジュールは、本明細書において説明される機能のうちの１つ若しくは２つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成し得る。例えば、本明細書において説明されるソフトウェアモジュールのうちの１つ若しくは２つ以上は、２つ若しくは３つ以上のクライアント（例えば、顧客）が、サーバ上で実行されているアプリケーションを共有することを可能にするように、サーバをプログラムし得る。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）間でアプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有し得る。本明細書において説明されるモジュールのうちの１つ若しくは２つ以上はまた、ある顧客が別の顧客のデータ及び／又は構成情報にアクセスすることができないように、各顧客に対して、マルチテナントアプリケーションのデータ及び／又は構成情報を分割し得る。
【０１１５】
種々の実施形態によると、図１の例示的なシステム１００の全て又は一部分は、仮想環境内で実装され得る。例えば、本明細書において説明されるモジュール及び／又はデータは、仮想マシン内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想マシン」という用語は、概して、仮想マシンマネージャ（例えば、ハイパーバイザ）によって、コンピューティングハードウェアから抽象化される任意のオペレーティングシステム環境を指す。更に、又は代替的に、本明細書において説明されるモジュール及び／又はデータは、仮想化層内に存在し得る、及び／又はそこで実行し得る。本明細書において使用される際、「仮想化層」という用語は、概して、オペレーティングシステム環境に重なる、及び／又はそれから抽象化される、任意のデータ層及び／又はアプリケーション層を指す。仮想化層は、仮想化層を、根本的な基本オペレーティングシステムの一部であるかのように提示する、ソフトウェア仮想化ソリューション（例えば、ファイルシステムフィルタ）によって、管理され得る。例えば、ソフトウェア仮想化ソリューションは、最初は基本ファイルシステム及び／又はレジストリ内の場所に向けられた呼び出しを、仮想化層内の場所にリダイレクトし得る。
【０１１６】
一部の実施例において、図１の例示的なシステム１００の全て又は一部分は、モバイルコンピューティング環境の一部分を表し得る。モバイルコンピューティング環境は、モバイル電話、タブレットコンピュータ、電子書籍リーダ、パーソナルデジタルアシスタント、ウェアラブルコンピューティングデバイス（例えば、頭部装着型ディスプレイ、スマートウォッチなどを有するコンピューティングデバイス）などを含む、広範なモバイルコンピューティングデバイスによって実装され得る。一部の実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間に１つのフォアグラウンドアプリケーションのみを提示すること、遠隔管理特性、タッチスクリーン特性、場所及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力、アプリケーションのインストールを制限する（例えば、承認されたアプリケーションストアのみから得る）能力などを制限する、制限されたプラットフォームを含む、１つ若しくは２つ以上の異なる特性を含み得る。本明細書において説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【０１１７】
加えて、図１の例示的なシステム１００の全て又は一部分は、情報管理のための１つ若しくは２つ以上のシステムの一部分を表し得る、それらの相互作用し得る、それらによって生成されるデータを消費し得る、及び／又はそれらによって消費されるデータを生成し得る。本明細書において使用される際、「情報管理」という用語は、データの保護、組織化、及び／又は記憶を指し得る。情報管理のためのシステムの例としては、限定することなく、記憶システム、バックアップシステム、アーカイバルシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどが挙げられ得る。
【０１１８】
一部の実施形態において、図１の例示的なシステム１００の全て又は一部分は、情報セキュリティのための１つ若しくは２つ以上のシステムの一部分を表し得る、それらによって保護されるデータを生成し得る、及び／又はそれらと通信し得る。本明細書において使用される際、「情報セキュリティ」という用語は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例としては、限定することなく、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、アイデンティティ認証システム、アクセス制御システム、暗号化システム、ポリシーコンプライアンスシステム、侵入検出及び防止システム、電子ディスカバリシステムなどが挙げられ得る。
【０１１９】
一部の実施例によると、図１の例示的なシステム１００の全て又は一部分は、エンドポイントセキュリティのための１つ若しくは２つ以上のシステムの一部分を表し得る、それらと通信し得る、及び／又はそれらから保護を受け得る。本明細書において使用される際、「エンドポイントセキュリティ」という用語は、不法及び／又は違法な使用、アクセス、及び／又は制御からのエンドポイントシステムの保護を指し得る。エンドポイント保護のためのシステムの例としては、限定することなく、マルウェア対策システム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどが挙げられ得る。
【０１２０】
本明細書において説明及び／又は例解される工程のプロセスパラメータ及び順序は、例として示されるに過ぎず、所望に応じて変化させることができる。例えば、本明細書において例解及び／又は説明される工程は、特定の順序で図示又は考察されるが、これらの工程は、必ずしも例解又は考察される順序で実施される必要はない。本明細書において説明及び／又は例解される種々の例示的な方法もまた、本明細書において説明若しくは例解される工程のうちの１つ若しくは２つ以上を省略し得るか、又は開示されるものに加えて追加の工程を含み得る。
【０１２１】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈で、本明細書において説明及び／又は例解されているが、これらの例示的な実施形態のうちの１つ若しくは２つ以上は、分散を実際に行うために使用される特定のタイプのコンピュータ可読媒体にかかわらず、様々な形態のプログラム製品として分散され得る。本明細書において開示される実施形態はまた、あるタスクを実施するソフトウェアモジュールを使用して、実装され得る。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含み得る。一部の実施形態において、これらのソフトウェアモジュールは、本明細書において開示される例示的な実施形態のうちの１つ若しくは２つ以上を実施するように、コンピューティングシステムを構成し得る。
【０１２２】
加えて、本明細書において説明されるモジュールのうちの１つ若しくは２つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、ある形態から別の形態に変換し得る。例えば、本明細書で列挙されるモジュールのうちの１つ若しくは２つ以上は、変換されるべきＩ／Ｏスループットを受信し、Ｉ／Ｏスループットを変換し、変換の結果を出力することにより後続のＩ／Ｏスループットについての送達速度を決定し、変換の結果を使用して後続のＩ／Ｏスループットを調節し、そして、将来の使用のために変換の結果を記憶してもよい。それに付加して又はその代替として、本明細書において列挙されるモジュールのうちの１つ若しくは２つ以上は、コンピューティングデバイス上で実行すること、コンピューティングデバイス上にデータを記憶すること、及び／又はそうでなければ、コンピューティングデバイスと相互作用することによって、物理コンピューティングデバイスのプロセッサ、揮発性メモリ、非揮発性メモリ、及び／又は任意の他の部分を１つの形式からもう１つの形式に変換してもよい。
【０１２３】
先述の説明は、当業者が、本明細書において開示される例示的な実施形態の種々の態様を最良に利用することを可能にするために提供されている。この例示的な説明は、包括的であること、又は開示されるいかなる正確な形態にも限定されることを意図されない。多くの修正及び改変が、本開示の趣旨及び範囲から逸脱することなく、可能である。本明細書において開示される実施形態は、全ての点において、例解的であり、制限的ではないと見なされるべきである。本開示の範囲を判定する上では、添付の請求項及びそれらの同等物を参照するべきである。
【０１２４】
別途記載されない限り、「〜に接続される（connected to）」及び「〜に連結される（coupled to）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、直接的及び間接的（即ち、他の要素又は構成要素を介した）接続の両方を許容するとして解釈されるものとする。加えて、「ａ」又は「ａｎ」という用語は、本明細書及び請求項において使用される際、「〜のうちの少なくとも１つ（at least one of）」を意味するとして解釈されるものとする。最後に、使用を容易にするために、「含む（including）」及び「有する（having）」という用語（及びそれらの派生語）は、本明細書及び請求項において使用される際、「備える（comprising）」という語と同義的であり、かつ同じ意味を有する。
【図１】
0006640242.tif 000017
【図２】
0006640242.tif 000018
【図３】
0006640242.tif 000019
【図４】
0006640242.tif 000020
【図５】
0006640242.tif 000021
【図６】
0006640242.tif 000022
【図７】
0006640242.tif 000023
【図８】
0006640242.tif 000024
【図９】
0006640242.tif 000025