(57)【特許請求の範囲】
【請求項１】
データを記憶するように構成された複数のストレージデバイスを含むデータ記憶媒体と、
前記データ記憶媒体に結合されたデータストレージコントローラと、
を備え、前記データストレージコントローラは、
前記データ記憶媒体を対象とする読み込み及び書き込み要求を受け取り、
前記読み込み及び書き込み要求を、前記複数のストレージデバイスによって処理されるようにスケジュールし、
前記複数のストレージデバイスのうちの１又はそれ以上による、相対的に長い応答レイテンシ又は相対的に低いスループットの少なくとも一方を含む可変パフォーマンスを含む予定外の挙動の発生を最小化するために１又はそれ以上の事前対応動作をスケジュールする、
ように構成され、
前記１又はそれ以上の事前対応動作をスケジュールすることは、前記ストレージデバイスが予定外のキャッシュフラッシュ動作を行うことを防ぐためにキャッシュフラッシュ動作をスケジュールすることを含む、
ことを特徴とするコンピュータシステム。
【請求項２】
前記ストレージコントローラは、最近のＩ／Ｏ要求の履歴に少なくとも部分的に基づいて１又はそれ以上の事前対応動作をスケジュールするように構成される、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記事前対応動作は、前記複数のデバイスのうちの１又はそれ以上が相対的に長い応答レイテンシを示す状態に入るようにする、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項４】
前記複数のストレージデバイスは、ソリッドステートストレージデバイスであり、前記事前対応動作は、キャッシュフラッシュ動作、セキュアな消去動作、トリム動作、スリープ動作、休止動作、パワーオン及びオフ動作、及びリセット動作のうちの１又はそれ以上を含む、
ことを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
所与のデバイスが未知の状態にある時に、前記所与のデバイスの予定外の挙動が前記所与のデバイスにより示される、
ことを特徴とする請求項２に記載のコンピュータシステム。
【請求項６】
前記事前対応動作は、前記複数のデバイスのうちのあるデバイスを既知の状態に入れるように構成される、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
前記ストレージデバイスは、少なくとも１つのＲＡＩＤグループを含み、前記ストレージコントローラは、前記ＲＡＩＤグループ内の前記複数のデバイスのうちのＮ個を超えないデバイスが、スケジュールされた長いレイテンシ動作を常に行っているように相対的に長いレイテンシ動作をスケジュールするように構成される、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項８】
所与の時点に前記デバイスのうちのＮ個を超えないデバイスが使用中である時に再構成読み込みを行うことができ、所与の時点に前記デバイスのうちのＮ個を超えるデバイスが使用中である時には再構成読み込みを行わなくてよい、
ことを特徴とする請求項７に記載のコンピュータシステム。
【請求項９】
前記コントローラは、
前記複数のデバイスのうちの所与のデバイスが予定外の挙動を示していることを検出し、
前記所与のデバイスによる前記予定外の挙動の前記発生を検出したことに応答して、１又はそれ以上の反応的動作をスケジュールする、
ようにさらに構成され、前記１又はそれ以上の反応的動作は、前記所与のデバイスを既知の状態に入れるように構成される、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項１０】
前記コントローラは、
前記複数のストレージデバイスのうちの所与のストレージデバイスの状態をモニタし、
事前対応動作がない場合に予定外の挙動が行われる可能性があると予測したことに応答して、前記所与のストレージデバイスの前記事前対応動作をスケジュールする、
ように構成されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項１１】
前記コントローラは、前記１又はそれ以上の事前対応動作を不定期にスケジュールするように構成される、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項１２】
前記ストレージコントローラは、長いレイテンシ動作がスケジュールされていたことを検出したことに応答して、所与のストレージデバイス上で前記長いレイテンシ動作に後続して１又はそれ以上の事前対応動作をスケジュールするように構成される、
ことを特徴とする請求項１に記載のコンピュータシステム。
【請求項１３】
コンピューティングシステムで使用するための方法であって、
データを記憶するように構成された複数のストレージデバイスを含むデータ記憶媒体を対象とする読み込み及び書き込み要求を受け取るステップと、
前記読み込み及び書き込み要求を、前記複数のストレージデバイスによって処理されるようにスケジュールするステップと、
前記複数のストレージデバイスのうちの１又はそれ以上による、相対的に長い応答レイテンシ又は相対的に低いスループットの少なくとも一方を含む可変パフォーマンスを含む予定外の挙動の発生を最小化するために１又はそれ以上の事前対応動作をスケジュールするステップと、
を含み、
前記１又はそれ以上の事前対応動作をスケジュールするステップは、前記ストレージデバイスが予定外のキャッシュフラッシュ動作を行うことを防ぐためにキャッシュフラッシュ動作をスケジュールすることを含む、
ことを特徴とする方法。
【請求項１４】
プログラム命令を含むコンピュータ可読記憶媒体であって、前記プログラム命令は、処理デバイスによる実行時に、
データを記憶するように構成された複数のストレージデバイスを含むデータ記憶媒体を対象とする読み込み及び書き込み要求を受け取り、
前記読み込み及び書き込み要求を、前記複数のストレージデバイスによって処理されるようにスケジュールし、
前記複数のストレージデバイスのうちの１又はそれ以上による、相対的に長い応答レイテンシ又は相対的に低いスループットの少なくとも一方を含む可変パフォーマンスを含む予定外の挙動の発生を最小化するために１又はそれ以上の事前対応動作をスケジュールする、ように動作可能であり、
前記１又はそれ以上の事前対応動作をスケジュールすることは、前記ストレージデバイスが予定外のキャッシュフラッシュ動作を行うことを防ぐためにキャッシュフラッシュ動作をスケジュールすることを含む、
ことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークに関し、より詳細には、コンピューティングデータストレージシステムに関する。
【背景技術】
【０００２】
コンピュータのメモリストレージ及びデータ帯域幅が増すと、企業が管理するデータの量及び複雑性も増す。通常、データセンターなどの大規模分散型ストレージシステムは、多くの業務を実行する。分散型ストレージシステムは、１又はそれ以上のネットワークにより相互接続された複数のクライアントコンピュータに結合することができる。分散型ストレージシステムのいずれかの部分が不良を起こし、又は利用できなくなった場合には、企業活動が損なわれ、又は完全に停止する恐れがある。このような分散型ストレージシステムは、データの利用可能性及び高パフォーマンス機能のための基準を高く維持しようと努める。
【０００３】
ストレージシステム自体の内部では、一般に、ファイルシステム及びストレージデバイスレベルの入力／出力（Ｉ／Ｏ）スケジューラが、どのように動作を実行すべきかに関する段階を提供することに加え、読み込み及び書き込み動作の順序を決定する。例えば、ストレージデバイスにとっては、非順次的読み込み及び書き込み動作の方が、順次的読み込み及び書き込み動作よりも（時間及び／又はリソースなどの観点から）実行にコストが掛かることがある。従って、Ｉ／Ｏスケジューラは、非順次的動作を低減しようと試みることができる。また、Ｉ／Ｏスケジューラは、スタベーションの防止、要求のマージング及びプロセス間の公平性などのその他の機能を提供することもできる。
【０００４】
ストレージデバイス間では、少なくとも読み込み及び書き込み応答時間が大幅に異なることがある。このような差異は、技術自体の特性と考えることができる。従って、選択したデータストレージデバイスに関連する技術及び機構は、効果的なＩ／Ｏスケジューリングを行うために使用する方法を決定することができる。例えば、多くの現在のアルゴリズムは、ハードディスクドライブ（ＨＤＤ）を利用するシステムに合わせて開発されたものである。ＨＤＤは、各々が磁気媒体で被覆された１又はそれ以上の回転ディスクを含む。これらのディスクは、毎分数千回転の速さで回転する。また、この回転ディスク上への磁気読み込み／書き込み装置の位置付けには、電磁アクチュエータが関与する。この装置の機械的及び電気機械的設計が、Ｉ／Ｏ特性に影響を与える。残念ながら、摩擦、摩耗、振動及び機械的不均衡によって信頼性問題が生じるとともに、ＨＤＤのＩ／Ｏ特性が影響を受けることがある。多くの現在のＩ／Ｏスケジューラは、ＨＤＤの入力／出力（Ｉ／Ｏ）特性を考慮するように設計されている。
【０００５】
別のタイプの記憶媒体の例に、ソリッドステートドライブ（ＳＳＤ）がある。ＳＳＤは、ＨＤＤとは対照的に、永続データの記憶に磁気媒体装置ではなく固体メモリを利用する。固体メモリは、フラッシュメモリセルを含むことができる。フラッシュメモリは、ハードドライブの特徴とは異なるいくつかの特徴を有する。例えば、一般に、フラッシュメモリセルは、書き換え又は再プログラム前に大きなブロック単位で消去される。一般的には、フラッシュメモリも、チップ、パッケージ、平面及びブロックなどの複雑な構成で構築される。選択した構成のサイズ及び並列性、時間に伴うフラッシュメモリの損耗性、（単複の）デバイスの相互接続及び転送速度は全てが異なり得る。また、このようなデバイスは、デバイス上の記憶を管理するためのフラッシュ変換層（ＦＴＬ）を含むこともできる。ＦＴＬが利用するアルゴリズムは様々であり、デバイスの挙動及び／又はパフォーマンスのばらつきの一因となることもある。従って、一般に、フラッシュベースのＳＳＤを記憶に使用するシステムでは、特性の異なるハードドライブなどのシステムに合わせて設計されたＩ／Ｏスケジューラを利用しながら高いパフォーマンス及び予測可能なレイテンシを実現できない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記に鑑み、複数のストレージデバイス間で読み込み及び書き込み動作を効果的にスケジュールするためのシステム及び方法が望まれている。
【課題を解決するための手段】
【０００７】
複数のソリッドステートストレージデバイス間で読み込み及び書き込み動作を効果的にスケジュールするためのコンピュータシステム及び方法の様々な実施形態を開示する。
【０００８】
１つの実施形態では、コンピュータシステムが、ネットワークを介して読み込み及び書き込み要求を受け取るように結合された１又はそれ以上のデータストレージアレイにネットワークを介して読み込み及び書き込み要求を伝達するように構成された複数のクライアントコンピュータを備える。複数のストレージデバイス上の複数の記憶位置を含む（単複の）データストレージアレイを企図する。様々な実施形態では、このストレージデバイスが、データの記憶及び保護を行うための独立ドライブ冗長アレイ（ＲＡＩＤ）構成で構成される。データストレージデバイスは、フラッシュメモリセルなどの、データ記憶のための固体メモリ技術を含むことができる。対応するストレージデバイスの特性を使用して、ストレージデバイスへのＩ／Ｏ要求をスケジュールする。特性としては、Ｉ／Ｏ要求の予測応答時間、デバイス寿命、いずれかの対応するキャッシュサイズ、アクセス速度、エラー率、現在のＩ／Ｏ要求、完了したＩ／Ｏ要求などを挙げることができる。
【０００９】
１つの実施形態では、Ｉ／Ｏスケジューラが、読み込み及び書き込み要求を受け取り、この読み込み及び書き込み要求を、複数のストレージデバイスによって処理されるようにスケジュールするよう構成される。これらのストレージデバイスは、提供される動作に応じて異なるレイテンシを示すことがあり、期待又は希望されるパフォーマンスとは異なるパフォーマンスを様々な時点で引き起こす予定外又は予想外の挙動を示すこともある。様々な実施形態では、これらの挙動が、デバイスは正しく機能している（すなわち、エラー状態ではない）ものの、レイテンシ及び／又はスループットに基づいて期待又は希望するレベルよりも低いレベルで単純に行われている挙動に対応する。このような挙動及びパフォーマンスを、「可変パフォーマンス」挙動と呼ぶことができる。これらの可変パフォーマンス挙動は、例えば、フラッシュベースのメモリ技術などの技術によって示されることがある。デバイスによるこのような挙動の発生を抑えるために、１つの実施形態では、スケジューラが、ある時間帯に１又はそれ以上のストレージデバイス上で事前対応動作をスケジュールするように構成される。一般に、この事前対応動作は、デバイスが予定外の挙動を示す可能性を低減することができる。いくつかの実施形態では、スケジューラが、デバイス及びシステムの状態をモニタし、予定外の挙動が迫っており、又は別様に発生しそうであるという予測に基づいて、所与のデバイスの事前対応動作をスケジュールする。いくつかの実施形態では、スケジューラが、ストレージデバイスの事前対応動作を不定期にスケジュールすることができる。
【００１０】
以下の説明及び添付図面を検討すると、これらの及びその他の実施形態が明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】ネットワークアーキテクチャの１つの実施形態を示す汎用ブロック図である。
【図２】コンピューティングシステムの１つの実施形態による概念モデルを示す図である。
【図３】データストレージサブシステム上における予想外の可変Ｉ／Ｏ応答時間を低減するようにＩ／Ｏスケジューリングを調整する方法の１つの実施形態を示す汎用フロー図である。
【図４】ストレージデバイスに発行された動作を分離する方法の１つの実施形態を示す汎用フロー図である。
【図５】ストレージサブシステム内のストレージデバイスの挙動を特徴付けるモデルを作成する方法の１つの実施形態を示す汎用フロー図である。
【図６】ストレージサブシステムの１つの実施形態を示す汎用ブロック図である。
【図７】デバイスユニットの別の実施形態を示す汎用ブロック図である。
【図８】状態テーブルの別の実施形態を示す汎用ブロック図である。
【図９】データストレージサブシステム上における予想外の可変Ｉ／Ｏ応答時間を低減するようにＩ／Ｏスケジューリングを調整する方法の１つの実施形態を示す汎用フロー図である。
【図１０】共有データストレージ上における効率的なレイテンシによる読み込み動作を維持する方法の１つの実施形態を示す汎用フロー図である。
【図１１】可変Ｉ／Ｏ応答時間を示すストレージデバイスの数を低減する方法の１つの実施形態を示す汎用フロー図である。
【図１２】共有データストレージ上における効率的なレイテンシによる読み込み動作を維持する方法の１つの実施形態を示す汎用フロー図である。
【発明を実施するための形態】
【００１２】
本発明は様々な修正及び代替形態が可能であるが、図面には特定の実施形態を一例として示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではなく、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全ての修正物、同等物及び代替物を含むことを意図するものであると理解されたい。
【００１３】
以下の説明では、本発明を完全に理解できるように数多くの具体的な詳細を示す。しかしながら、当業者であれば、これらの具体的な詳細を伴わずに本発明を実施できると認識するであろう。いくつかの例では、本発明を曖昧にしないように、周知の回路、構造、信号、コンピュータプログラム命令及び技術については詳細に示していない。
【００１４】
図１を参照すると、ネットワークアーキテクチャ１００の１つの実施形態の汎用ブロック図を示している。後述するように、ネットワークアーキテクチャ１００の１つの実施形態は、ネットワーク１８０を介して互いに、及びデータストレージアレイ１２０ａ〜１２０ｂに相互接続されたクライアントコンピュータシステム１１０ａ〜１１０ｂを含む。ネットワーク１８０は、スイッチ１４０を介して第２のネットワーク１９０に結合することができる。このネットワーク１９０を介して、クライアントコンピュータシステム１１０ｃが、クライアントコンピュータシステム１１０ａ〜１１０ｂ及びデータストレージアレイ１２０ａ〜１２０ｂに結合される。また、ネットワーク１９０は、スイッチ１５０を介してインターネット１６０又はその他の外部ネットワークに結合することもできる。
【００１５】
なお、代替の実施形態では、クライアントコンピュータ及びサーバ、スイッチ、ネットワーク、データストレージアレイ及びデータストレージデバイスの数及びタイプが、図１に示すものに限定されない。１又はそれ以上のクライアントは、様々な時点でオフラインで動作することができる。また、動作中、ユーザがネットワークアーキテクチャ１００への接続、切断及び再接続を行うと、個々のクライアントコンピュータの接続タイプは変化することがある。さらに、本説明では、一般にネットワーク接続されたストレージについて検討するが、本明細書で説明するシステム及び方法は、直接接続されたストレージシステムに適用することもでき、説明する方法の１つ又はそれ以上の態様を実行するように構成されたホストオペレーティングシステムを含むこともできる。数多くのこのような代替案が可能であり、企図される。図１に示す構成要素の各々のさらなる説明を手短に行う。まず、データストレージアレイ１２０ａ〜１２０ｂにより提供される機能のいくつかの概要について説明する。
【００１６】
ネットワークアーキテクチャ１００では、データストレージアレイ１２０ａ〜１２０ｂの各々を、クライアントコンピュータシステム１１０ａ〜１１０ｃなどの異なるサーバ及びコンピュータ間のデータの共有に使用することができる。また、データストレージアレイ１２０ａ〜１２０ｂを、ディスクのミラーリング、バックアップ及び復元、保存データの保管及び検索、並びにストレージデバイス間のデータ移行に使用することもできる。代替の実施形態では、クラスタを形成するために、１又はそれ以上のクライアントコンピュータシステム１１０ａ〜１１０ｃを、高速ローカルエリアネットワーク（ＬＡＮ）を介して互いにリンクさせることができる。このようなクライアントは、データストレージアレイ１２０ａ〜１２０ｂの１つに存在するクラスタ共有ボリュームなどのストレージリソースを共有することができる。
【００１７】
データストレージアレイ１２０ａ〜１２０ｂの各々は、データ記憶のためのストレージサブシステム１７０を含む。ストレージサブシステム１７０は、複数のストレージデバイス１７６ａ〜１７６ｍを含むことができる。これらのストレージデバイス１７６ａ〜１７６ｍは、クライアントコンピュータシステム１１０ａ〜１１０ｃにデータ記憶サービスを提供することができる。ストレージデバイス１７６ａ〜１７６ｍの各々は、データ記憶を行うための特定の技術及び機構を使用する。これらのストレージデバイス１７６ａ〜１７６ｍの各々で使用されるタイプの技術及び機構を少なくとも部分的に使用して、ストレージデバイス１７６ａ〜１７６ｍの各々との間の読み込み及び書き込み動作の制御及びスケジュールに使用するアルゴリズムを決定することができる。これらのアルゴリズムで使用されるロジックを、基本オペレーティングシステム（ＯＳ）１１６、ファイルシステム１４０、ストレージサブシステムコントローラ１７４内の１又はそれ以上のグローバルＩ／Ｏスケジューラ１７８、又はストレージデバイス１７６ａ〜１７６ｍの各々における制御ロジックなどのうちの１又はそれ以上に含めることができる。また、本明細書で説明するロジック、アルゴリズム及び制御機構は、ハードウェア及び／又はソフトウェアを含むことができる。
【００１８】
ストレージデバイス１７６ａ〜１７６ｍの各々は、読み込み及び書き込み要求を受け取るとともに、各々をアレイ内の行及び列としてアドレス指定可能な複数のデータス記憶位置を含むように構成することができる。１つの実施形態では、ストレージデバイス１７６ａ〜１７６ｍ内のデータ記憶位置を、論理的で冗長なストレージコンテナ又はＲＡＩＤアレイ（低価格／独立ディスク冗長アレイ）内に配置することができる。いくつかの実施形態では、ストレージデバイス１７６ａ〜１７６ｍの各々が、従来のハードディスクドライブ（ＨＤＤ）とは異なる技術をデータ記憶に利用することができる。例えば、ストレージデバイス１７６ａ〜１７６ｍの１又はそれ以上は、永続データを記憶するための固体メモリから成るストレージを含み、又はこれにさらに結合することができる。他の実施形態では、ストレージデバイス１７６ａ〜１７６ｍの１又はそれ以上が、スピン注入法、磁気抵抗メモリ（ＭＲＡＭ）法、シングルディスク、メモリスタ、相変化メモリ又はその他の記憶技術などの他の技術を使用するストレージを含み、又はこれにさらに結合することができる。これらの異なる記憶方法及び技術により、ストレージデバイス間で異なるＩ／Ｏ特性が生じ得る。
【００１９】
１つの実施形態では、含まれる固体メモリが、ソリッドステートドライブ（ＳＳＤ）技術を含む。通常、ＳＳＤ技術は、フラッシュメモリセルを利用する。当業で周知のように、フラッシュメモリセルは、フローティングゲート内に捕捉され蓄積された電子の範囲に基づく二進値を保持する。完全に消去されたフラッシュメモリセルは、フローティングゲート内に電子を全く又は最低数しか蓄積していない。消去されたフラッシュメモリセルには、シングルレベルセル（ＳＬＣ）フラッシュの二進１などの特定の二進値が関連付けられる。マルチレベルセル（ＭＬＣ）フラッシュでは、消去されたフラッシュメモリセルに二進値１１が関連付けられる。フラッシュメモリセル内の制御ゲートに所与の閾値電圧よりも高い電圧を印加した後、このフラッシュメモリセルは、フローティングゲート内に所与の範囲の電子を捕捉する。従って、プログラムされた（書き込まれた）フラッシュメモリセルには、ＳＬＣフラッシュの二進０などの別の特定の二進値が関連付けられる。ＭＬＣフラッシュセルでは、制御ゲートに印加された電圧に応じて、プログラムされたメモリセルに複数の二進値の１つを関連付けることができる。
【００２０】
ＨＤＤ技術とＳＤＤ技術の間の技術及び機構の違いにより、データストレージデバイス１７６ａ〜１７６ｍの入力／出力（Ｉ／Ｏ）特性に違いが生じることがある。一般的に言えば、ＳＳＤ技術では、読み込みアクセスレイテンシタイムがＨＤＤ技術よりも短い。しかしながら、一般にＳＳＤの書き込みパフォーマンスは、その読み込みパフォーマンスよりも遅く、ＳＳＤ内の自由なプログラマブルブロックの利用可能性によって大きく影響を受けることがある。ＳＳＤの書き込みパフォーマンスは、ＳＳＤの読み込みパフォーマンスに比べて大幅に遅いので、読み込みと同様のレイテンシを予想する特定の機能又は動作に関する問題が生じることがある。また、長い書き込みレイテンシが読み込みレイテンシに影響を与えることにより、スケジューリングがより困難になる場合がある。従って、データストレージアレイ１２０ａ〜１２０ｂの各々では、Ｉ／Ｏスケジューリングに異なるアルゴリズムが使用されることがある。
【００２１】
１つの実施形態では、読み込み動作及び書き込み動作などの異なるタイプの動作のレイテンシが異なる場合、Ｉ／Ｏスケジューリングのアルゴリズムが、これらの動作を分離して、スケジューリングのためにこれらを別個に処理することができる。例えば、ストレージデバイス１７６ａ〜１７６ｍの１又はそれ以上において、デバイス自体が書き込み動作を内部キャッシュに記憶することなどによってバッチ処理することができる。これらのキャッシュが所与の占有率閾値に達した時に、又は他の何らかの時点で、対応するストレージデバイス１７６ａ〜１７６ｍが、キャッシュをフラッシュすることができる。一般的には、これらのキャッシュフラッシュにより、予測できない時点で読み込み及び／又は書き込みに追加のレイテンシが加わることがあり、これにより動作を効果的にスケジュールするのが困難になる。従って、Ｉ／Ｏスケジューラは、このようなキャッシュフラッシュがいつ発生し得るかを予測するために、キャッシュのサイズ又は測定したアイドル時間などのストレージデバイスの特性を利用することができる。１又はそれ以上のストレージデバイス１７６ａ〜１７６ｍの各々の特性が分かると、より効果的なＩ／Ｏスケジューリングを行うことができる。１つの実施形態では、グローバルＩ／Ｏスケジューラ１７８が、ストレージデバイス１７６ａ〜１７６ｍの１又はそれ以上のうちの所与のデバイスが予想外の時点でＩ／Ｏ要求に対して長い応答時間を示していることを検出することができる。これに応答して、グローバルＩ／Ｏスケジューラ１７８は、この所与のデバイスに予想される挙動を再開させるために、このデバイスに所与の動作をスケジュールすることができる。１つの実施形態では、このような動作を、キャッシュフラッシュコマンド、トリムコマンド、又は消去コマンドなどとすることができる。以下、入出力スケジューリングに関するさらなる詳細について説明する。
【００２２】
ネットワークアーキテクチャの構成要素
繰り返すが、図示のように、ネットワークアーキテクチャ１００は、ネットワーク１８０及び１９０を介して互いに及びデータストレージアレイ１２０ａ〜１２０ｂに相互接続されたクライアントコンピュータシステム１１０ａ〜１１０ｃを含む。ネットワーク１８０及び１９０は、無線接続、直接ローカルエリアネットワーク（ＬＡＮ）接続、インターネットなどの広域ネットワーク（ＷＡＮ）接続、ルータ、ストレージエリアネットワーク及びイーサネット（登録商標）などを含む様々な技術を含むことができる。ネットワーク１８０及び１９０は、１又はそれ以上のＬＡＮを含むことができ、これらは無線であってもよい。ネットワーク１８０及び１９０は、リモートダイレクトメモリアクセス（ＲＤＭＡ）ハードウェア及び／又はソフトウェア、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）ハードウェア及び／又はソフトウェア、ルータ、リピータ、スイッチ及び／又はグリッドなどをさらに含むことができる。ネットワーク１８０及び１９０内では、ファイバチャネル、ファイバチャネルオーバーイーサネット（ＦＣｏＥ）及びｉＳＣＳＩなどのプロトコルを使用することができる。スイッチ１４０は、ネットワーク１８０及び１９０の両方に関連するプロトコルを利用することができる。ネットワーク１９０は、伝送制御プロトコル（ＴＣＰ）及びインターネットプロトコル（ＩＰ）、すなわちＴＣＰ／ＩＰなどの、インターネット１６０に使用される通信プロトコルの組と整合することができる。スイッチ１５０は、ＴＣＰ／ＩＰスイッチとすることができる。
【００２３】
クライアントコンピュータシステム１１０ａ〜１１０ｃは、デスクトップパソコン（ＰＣ）、サーバ、サーバファーム、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、サーバ、携帯情報端末（ＰＤＡ）及びスマートフォンなどのあらゆる数の固定又はモバイルコンピュータを表す。一般的に言えば、クライアントコンピュータシステム１１０ａ〜１１０ｃは、１又はそれ以上のプロセッサコアを備えた１又はそれ以上のプロセッサを含む。各プロセッサコアは、所定の汎用命令セットに従って命令を実行するための回路を含む。例えば、ｘ８６命令セットアーキテクチャを選択することができる。或いは、Ａｌｐｈａ（登録商標）、ＰｏｗｅｒＰＣ（登録商標）、ＳＰＡＲＣ（登録商標）又はその他のいずれの汎用命令セットアーキテクチャを選択してもよい。プロセッサコアは、データ及びコンピュータプログラム命令を求めてキャッシュメモリサブシステムにアクセスすることができる。キャッシュサブシステムは、ランダムアクセスメモリ（ＲＡＭ）及びストレージデバイスを含む記憶階層に結合することができる。
【００２４】
クライアントコンピュータシステム内の各プロセッサコア及び記憶階層は、ネットワークインターフェイスに接続することができる。クライアントコンピュータシステム１１０ａ〜１１０ｃの各々は、ハードウェア構成要素に加え、記憶階層内に記憶された基本オペレーティングシステム（ＯＳ）を含むことができる。この基本ＯＳは、例えば、ＭＳ−ＤＯＳ（登録商標）、ＭＳ−ＷＩＮＤＯＷＳ（登録商標）、ＯＳ／２（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）、ＡＩＸ（登録商標）又はＤＡＲＴなどの様々なオペレーティングシステムのいずれかを表すことができる。従って、基本ＯＳは、エンドユーザに様々なサービスを提供するとともに、様々なプログラムの実行をサポートするソフトウェアフレームワークを提供することができる。また、クライアントコンピュータシステム１１０ａ〜１１０ｃの各々は、バーチャルマシン（ＶＭ）をサポートするために使用されるハイパーバイザを含むことができる。当業者には周知のように、デスクトップ及びサーバ内で仮想化を使用して、ＯＳなどのソフトウェアをシステムのハードウェアから完全に又は部分的に分離することができる。仮想化により、エンドユーザに、各々が独自のリソースを有する同じ機械上で複数のＯＳが実行されているという錯覚を与え、データストレージアレイ１２０ａ〜１２０ｂの各々におけるストレージデバイス１７６ａ〜１７６ｍ上に構築された論理記憶エンティティ（ＬＵＮなど）にアクセスできるようにすることができる。
【００２５】
データストレージアレイ１２０ａ〜１２０ｂの各々は、クライアントコンピュータシステム１１０ａ〜１１０ｃなどの異なるサーバ間のデータの共有に使用することができる。データストレージアレイ１２０ａ〜１２０ｂの各々は、データを記憶するためのストレージサブシステム１７０を含む。ストレージサブシステム１７０は、複数のストレージデバイス１７６ａ〜１７６ｍを含むことができる。これらのストレージデバイス１７６ａ〜１７６ｍの各々は、ＳＳＤとすることができる。コントローラ１７４は、受け取った読み込み／書き込み要求を処理するためのロジックを含むことができる。例えば、少なくともコントローラ１７４において、手短に上述したアルゴリズムを実行することができる。受け取った書き込み要求などのバッチ動作には、ランダムアクセスメモリ（ＲＡＭ）１７２を使用することができる。様々な実施形態では、書き込み動作（又はその他の動作）をバッチ処理する際に、不揮発性ストレージ（ＮＶＲＡＭなど）を使用することができる。
【００２６】
記憶媒体１３０に記憶された基本ＯＳ１３２、ファイルシステム１３４、いずれかのＯＳドライバ（図示せず）及びその他のソフトウェアは、ファイルへのアクセスを可能にする機能を提供し、これらの機能を管理することができる。基本ＯＳ１３４及びＯＳドライバは、記憶媒体１３０上に記憶された、受け取った要求に対応する１又はそれ以上のメモリアクセス動作をストレージサブシステム１７０内で行うようにプロセッサ１２２により実行可能なプログラム命令を含むことができる。図１に示すシステムは、一般に１又はそれ以上のファイルサーバ及び／又はブロックサーバを含むことができる。
【００２７】
データストレージアレイ１２０ａ〜１２０ｂの各々は、ネットワークインターフェイス１２４を使用してネットワーク１８０に接続することができる。１つの実施形態では、クライアントコンピュータシステム１１０ａ〜１１０ｃと同様に、ネットワークインターフェイス１２４の機能をネットワークアダプタカード上に含めることができる。ネットワークインターフェイス１２４の機能は、ハードウェア及びソフトウェアの両方を使用して実装することができる。ネットワークインターフェイス１２４のネットワークカードによる実装上には、ランダムアクセスメモリ（ＲＡＭ）及び読み取り専用メモリ（ＲＯＭ）の両方を含めることができる。１又はそれ以上の特定用途向け集積回路（ＡＳＩＣ）を使用して、ネットワークインターフェイス１２４の機能を提供することができる。
【００２８】
１つの実施形態では、Ｉ／Ｏパフォーマンスを最適化しようと努めるデータストレージモデルを作成することができる。１つの実施形態では、このモデルが、ストレージシステム内のストレージデバイスの特性に少なくとも部分的に基づく。例えば、ソリッドステートストレージ技術を利用するストレージシステムでは、特定のデバイスの特性を使用してこのデバイスのためのモデルを作成し、このモデルが、対応するＩ／Ｏスケジューリングアルゴリズムを通知する機能を果たすことができる。例えば、使用中の特定のストレージデバイスが、読み込みレイテンシに比べて相対的に長い書き込みレイテンシを示す場合、スケジューリング動作においてこのような特性を考慮することができる。なお、相対的に長いと考えるか、それとも短いと考えるかは、特定のシステム、処理中のデータのタイプ、処理するデータの量、又はデータのタイミングなどによって異なることがある。一般的に言えば、システムは、短い又は長いレイテンシを構成するものが何であるか、及び／又はこれらの２つの有意な違いを構成するものが何であるかを判断するようにプログラム可能である。
【００２９】
一般的に言えば、デバイス又はコンピューティングシステムのために開発されるあらゆるモデルが不完全となる。多くの場合、現実のシステムで所与のシステムを完全にモデル化するには、考慮すべき変数が単純に多すぎる。場合によっては、完全ではないが価値のあるモデルを開発することが可能な場合もある。以下でより詳細に説明するように、デバイスの特性に基づいてストレージデバイスをモデル化する実施形態を説明する。様々な実施形態では、デバイスがどのように挙動し得るかに関するいくつかの予測に基づいてＩ／Ｏスケジューリングが行われる。装置の挙動によっては、デバイスの特性の理解に基づいて、他の挙動より予測しやすいものもある。最適なＩ／Ｏパフォーマンスのための動作をより効果的にスケジュールするには、システムの挙動をより確実に制御することが望ましい。予想外の、又は予測できない装置の挙動は、動作のスケジューリングをより困難にする。従って、システム内の予測不能な又は予想外の挙動を最小化しようと努めるアルゴリズムを開発する。
【００３０】
図２は、モデル化中のデバイス又はシステム、及びこのデバイス又はシステム内の予測不能な挙動を最小化するために使用する方法の概念図である。第１のブロック２００に、理想的なシナリオを示す。ブロック２００には、システム２０４及びこのシステムのモデル２０２を示している。１つの実施形態では、このシステムを、単一のデバイスのシステムとすることができる。或いは、このシステムは、多くのデバイス及び／又は構成要素を含むこともできる。上述したように、モデル２０２は、モデル化しようとするシステム２０４の完全なモデルではない場合もある。にもかかわらず、モデル２０２は、このモデルのために関心のある挙動を捕捉する。１つの実施形態では、モデル２０２が、コンピューティングストレージシステムをモデル化しようとすることができる。理想的なシナリオ２００では、システム２０４の実際の挙動が、モデル２０２の挙動と「揃って」いる。換言すれば、一般に、システム２０４の挙動は、モデル２０２が捕捉しようとする挙動に適合する。システム挙動２０４がモデル２０２の挙動と一致している間は、このシステム挙動は、一般に予測しやすいと思われる。従って、システム内の動作（例えば、読み込み及び書き込み動作）のスケジューリングを、より効果的に行うことができる。
【００３１】
例えば、読み込み応答時間を最適化することが望まれる場合、システムの他の挙動が比較的予測しやすい場合には、よりタイムリーに読み込みが行われるように読み込みをスケジュールすることが可能である。一方、システムの挙動が比較的予測しにくい場合には、必要時に結果を提供するように読み込みをスケジュールする能力の信頼度が低下する。ブロック２１０に、システム挙動（小さい方の円）がこのシステム（大きい方の円）のモデルの挙動と揃っていないシナリオを示す。この場合、このシステムは、モデルから外れる挙動を示している。従って、システム挙動の予測可能性が低くなり、動作をスケジューリングする効果が下がることがある。例えば、ストレージシステム内で固体メモリデバイスを使用し、これらのデバイスが、より長いレイテンシで要求を処理するアクションを開始し得る場合、そのデバイスに対してスケジュールされていたあらゆる動作が、より長い又は予想外のレイテンシを生じる可能性もある。このようなデバイス動作の１つの例に、内部キャッシュフラッシュがある。
【００３２】
予想外の又は予定外のシステム挙動及び対応する可変パフォーマンスの問題に対処するために、作成するモデルは、システムを不確実性の少ない状態に復元するために行うことができるアクションを含むことができる。換言すれば、システムの挙動を予測するモデルの能力を低下させる挙動をシステムが示し始めた場合、このモデルは、特定の予想外の挙動が排除され又は起きにくくなる状態にシステムを復元するために行うことができるいくつかのアクションを構築する。図示の例では、より密接にモデルと揃った状態にシステムを「移動」させようとするアクション２１２を示している。アクション２１２は、モデルの外側にあるシステム挙動を検出することに応答して行われるので、「反応的」アクション又は動作と呼ぶことができる。アクション２１２を行った後に、より理想的な状態２２０を達成することができる。
【００３３】
予測不能な挙動に反応してシステムをより理想的な状態に移行できるモデルを作成することが望ましいが、それらの予測不能な挙動が存在することにより、効果的なスケジューリング動作が妨げられたままになることもある。従って、予想外の挙動又はイベントの発生を最小化することが望ましいと考えられる。１つの実施形態では、予想外の挙動の発生を防止又は低減するように設計されたアクション又は動作を含むモデルを作成する。これらのアクションは、何らかの挙動又はイベントの発生を防ぎ、又は何らかの挙動又はイベントのタイミングを変化させるために事前対応的に行うことができるので、「事前対応」アクション又は動作と呼ぶことができる。図２のブロック２３０に、システム挙動（小さい方の円）がそのモデル（大きい方の円）の挙動内に存在するシナリオを示す。にもかかわらず、このモデルは、システム挙動がモデル内に留まったまま、恐らくはより理想的に揃うようにシステム挙動を移動させるアクション２３２を行うことができる。ブロック２３０内のシステム挙動は、モデルの外部での挙動を示す状態に近づいているように見える。このような場合、モデルは、システムがこのような状態に近づいていると確信するための何らかの基準を有することができる。例えば、Ｉ／Ｏスケジューラが特定のデバイスにいくつかの書き込み動作を伝えた場合、スケジューラは、このデバイスが将来のある時点で内部キャッシュフラッシュ動作を行うかもしれないと予測することができる。スケジューラは、このようなイベントの発生を待つのではなく、スケジューラが選択した時点でキャッシュフラッシュが行われるように、このデバイスのキャッシュフラッシュ動作を事前対応的にスケジュールすることができる。これとは別に、又はこれに加えて、このような事前対応動作を不定期に行うこともできる。それでもキャッシュフラッシュは発生するが、その発生は予想外のものではなく、既にスケジューラが行う全体的なスケジューリングの一部になっており、より効果的かつ知的に管理することができる。システムは、この事前対応アクション２３２を行った後、一般的にはより予測しやすい状態２４０になることが分かる。この理由は、デバイス上でキャッシュフラッシュがスケジュールされて実行され、デバイスがデバイス自体で自発的に内部キャッシュフラッシュを開始する可能性が減少した（すなわち、そのキャッシュが既にフラッシュされた）からである。モデル内で反応的アクション又は動作と事前対応アクション又は動作を組み合わせることにより、システムの予測性を強化できるとともに、同様にスケジューリングの改善を達成することもできる。
【００３４】
ここで図３を参照すると、予想外の挙動を低減するようにＩ／Ｏスケジューリングを行う方法３００の１つの実施形態を示している。一般に、上述したネットワークアーキテクチャ１００及びデータストレージアレイ１２０ａ〜１２０ｂ内で具体化される構成要素は、方法３００に従って動作することができる。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
【００３５】
ブロック３０２において、Ｉ／Ｏスケジューラが、１又はそれ以上のストレージデバイスの読み込み及び書き込み動作をスケジュールする。様々な実施形態では、Ｉ／Ｏスケジューラが、ストレージデバイス毎に別個のキューを（物理的又は論理的に）維持することができる。また、Ｉ／Ｏスケジューラは、対応するストレージデバイスによりサポートされる動作タイプ毎に別個のキューを含むことができる。例えば、Ｉ／Ｏスケジューラは、ＳＳＤのための少なくとも別個の読み込みキュー及び別個の書き込みキューを維持することができる。ブロック３０４において、Ｉ／Ｏスケジューラは、１又はそれ以上のストレージデバイスの挙動をモニタすることができる。１つの実施形態では、Ｉ／Ｏスケジューラが、対応するストレージデバイスのモデル（例えば、デバイスのモデルに少なくとも部分的に基づく挙動タイプモデル及び／又はアルゴリズム）を含み、このモデルに入力するための状態データをストレージデバイスから受け取ることができる。Ｉ／Ｏスケジューラ内のモデルは、ストレージデバイスの既知の及び／又は観察された特性を利用することにより、ストレージデバイスの挙動のモデル化及び予測の両方を行うことができる。
【００３６】
Ｉ／Ｏスケジューラは、Ｉ／Ｏパフォーマンスに影響を与える又は影響を与え得る所与のストレージデバイスの特性を検出することができる。例えば、以下でさらに説明するように、デバイス及びＩ／Ｏトラフィックの様々な特性及び状態を維持することができる。Ｉ／Ｏスケジューラは、これらの特性及び状態を観察することにより、所与のデバイスが、長いＩ／Ｏレイテンシの挙動を示す状態にもうすぐ入るかもしれないと予測することができる。例えば、１つの実施形態では、Ｉ／Ｏスケジューラが、ストレージデバイスへの要求の応答時間に影響を与え得る内部キャッシュフラッシュがストレージデバイス内でまさに起きようとしていることを検出又は予測することができる。例えば、１つの実施形態では、一定時間にわたってアイドルのままであるストレージデバイスは、内部キャッシュをフラッシュする可能性がある。いくつかの実施形態では、所与のデバイスがアイドルであるかどうかが、デバイス外部の展望に基づくことができる。例えば、ある期間にわたってデバイスに動作がスケジュールされていない場合、このデバイスをほぼこの期間にわたってアイドルであると見なすことができる。このような実施形態では、このデバイスは、デバイス内の内部的に開始されたアクティビティに基づいて実際には稼働中の可能性がある。しかしながら、デバイスがアイドルであるかどうかを判断する際には、このような内部的に開始されたアクティビティは考慮されない。他の実施形態では、デバイスがアイドル中であるか、それとも稼働中であるか判断する際に、デバイスの内部的に開始されたアクティビティを考慮することができる。スケジューラは、デバイスの挙動を観察すること、及びこのデバイスが所与の時間にわたってアイドルであったと気付くことにより、いつ内部キャッシュフラッシュが発生し得るかを予測することができる。他の実施形態では、スケジューラが、デバイスの様々な状況又は状態を判断するためにデバイスにポーリングする能力を有することもできる。いずれにせよ、スケジューラは、予定外の挙動が発生するのを防ぐために、内部キャッシュフラッシュなどの予定外の挙動の可能性を判断して、事前対応動作を開始するように構成することができる。このようにして、スケジューラは、デバイス及びシステム内のイベントのタイミングを制御し、より良好に動作をスケジュールすることができる。
【００３７】
デバイス挙動に関する予測を行うための基準として様々な特性を使用することができる。様々な実施形態では、スケジューラが、現在保留中の動作の状態及び／又はストレージデバイスに対応する最近の動作の履歴を維持することができる。いくつかの実施形態では、Ｉ／Ｏスケジューラが、デバイス内のキャッシュのサイズ及び／又はキャッシングポリシーを把握し、ストレージデバイスに送られる総書き込み要求数を維持することができる。他の実施形態では、デバイス内のキャッシュの状態を判断するために（デバイスへの直接ポーリングタイプのアクセスなどの）他の機構を利用可能にすることができる。また、Ｉ／Ｏスケジューラは、ストレージデバイスに送られる書き込み要求内のデータ量を追跡することもできる。その後、Ｉ／Ｏスケジューラは、書き込み要求数又はその書き込み要求に対応する総データ量がいつ所与の閾値に達したかを検出することができる。Ｉ／Ｏスケジューラは、このような状態（条件付きブロック３０６）を検出した場合、ブロック３０８において、デバイスの特定の動作をスケジュールすることができる。一般に、このような動作は、上述した事前対応動作に対応することができる。例えば、Ｉ／Ｏスケジューラは、対応するキュー内にキャッシュフラッシュコマンドを入れ込んで、スケジューラの選択時にストレージデバイスがキャッシュフラッシュを行うように強制することができる。或いは、Ｉ／Ｏスケジューラは、ストレージデバイス上のいずれかのキャッシュフラッシュが完了したかどうかを判断するために、キュー内にダミーの読み込み動作を入れ込むこともできる。さらに、スケジューラは、デバイスにクエリを行って（アイドル、稼働中などの）状態情報を取得することができる。上記の及びその他の特性及び動作が可能であり、企図される。また、様々な実施形態では、ＳＳＤを元の状態に戻す際に事前対応動作をスケジュールすることができる。このような実施形態では、ＳＳＤファームウェア及び／又はマッピングテーブルが、要求が滞った状態又は恒久的に減速した状態に入ることがある。このファームウェアの障害を取り除くには、ドライブを単純にリセットすること、又はドライブの電源を入れ直すことが可能である。しかしながら、状態が恒久的である（すなわち、ファームウェア内に、マッピングテーブルの現状に対処できないバグが存在する）場合、これを修復する別の方法は、ドライブを再フォーマットしてＦＴＬを完全にクリーニング及びリセットし、その後データを再投入すること、又はこのＦＴＬを何か他のデータに再利用することである。
【００３８】
上述したアクションを行って、予想外の可変応答時間の発生を防ぎ、又はその回数を減少させることができる。同時に、Ｉ／Ｏスケジューラは、所与のストレージデバイスの予想外の時点におけるあらゆる可変的挙動の発生を検出することができる。Ｉ／Ｏスケジューラは、このような状態（条件付きブロック３１０）を検出した場合、ブロック３１２において、このストレージデバイスの対応するキュー内にある動作を入れ込むことができる。この場合、一般に、この動作は、上述した反応的動作に対応することができる。この動作を使用して、ストレージデバイスが可変的挙動を行う時間を短縮し、この可変的挙動の終了を検出することができる。様々な実施形態では、一般に、事前対応動作及び／又は反応的動作が、デバイスを（少なくとも部分的に）既知の状態に置くことができるあらゆる動作を含むことができる。例えば、キャッシュフラッシュ動作を開始することにより、デバイスのキャッシュ状態を空にすることができる。キャッシュが空のデバイスは、キャッシュが空でないデバイスよりも、内部キャッシュフラッシュを開始する可能性が低くなり得る。事前対応動作及び／又は反応的動作のいくつかの例として、キャッシュフラッシュ動作、消去動作、セキュアな消去動作、トリム動作、スリープ動作、休止動作、パワーオン及びオフ、並びにリセット動作が挙げられる。
【００３９】
ここで図４を参照すると、ストレージデバイスに発行された動作を分離する方法４００の１つの実施形態を示している。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。様々な実施形態では、スケジューリングのために、第１のタイプの動作を第２のタイプの動作から分離することができる。例えば、１つの実施形態では、第１のタイプの動作に、第２のタイプの動作よりも高いスケジューリング上の優先度を与えることができる。このような実施形態では、第１のタイプの動作の処理を相対的に早くスケジュールし、第２のタイプの動作を後で処理する（事実上、動作の処理を延期する）ようにキューに入れることができる。先にキューに入れた（第２のタイプの）動作が処理されている間、任意の時点で第１のタイプの動作の処理を中断することができる。その後、第１のタイプの動作に処理優先度が戻されている間、第２の動作タイプの処理を再び中断することができる。１つのタイプの処理をいつ停止し、別のタイプの処理をいつ開始するかは、期間、蓄積されたデータ、トランザクションの頻度、利用可能なリソース（例えば、キューの利用）、これらのあらゆる組み合わせ、又はあらゆる所望の状態に基づくことができる。
【００４０】
通常、ＳＳＤは、ランダムな読み込み及び書き込み要求に関しては、ＨＤＤよりも良好なパフォーマンスを示す。しかしながら、通常、ＳＳＤは、その特性に起因して、ランダム書き込み要求に関して示すパフォーマンスの方が読み込み要求よりも悪い。ＨＤＤとは違って、読み込み要求と書き込み要求の相対的レイテンシは全く異なり、通常、フラッシュメモリセルのプログラムには、その読み込みよりも時間が掛かるので、書き込み要求には読み込み要求よりも大幅に長い時間が掛かる。また、書き込み動作のレイテンシは、書き込みの一部として行う必要がある追加動作が原因で極めて可変的となり得る。例えば、既に修正済みのフラッシュメモリセルでは、書き込み又はプログラム動作の前に消去動作が行われることがある。また、消去動作は、ブロック単位で行われることがある。このような場合、ブロック（消去セグメント）内のフラッシュメモリセルは、全部まとめて消去される。１つのブロックは比較的大きく、複数のページを含むので、動作には比較的長い時間が掛かることがある。或いは、ＦＴＬが、あるブロックを既に消去された消去ブロックにリマップすることがある。いずれの場合にも、書き込み動作を行うことに関連する追加動作により、書き込みレイテンシのばらつきが著しく大きくなるとともに、読み込みよりもレイテンシが大幅に長くなる。他のストレージデバイスタイプは、要求のタイプに基づいて異なる特性を示すことがある。これらに加え、ストレージデバイスによっては、読み込み要求と書き込み要求が混在している場合にパフォーマンス劣り、及び／又は可変的になるものもある。従って、様々な実施形態では、パフォーマンスを向上させるために、読み込み要求と書き込み要求を分離することができる。なお、この説明では、特に読み込み及び書き込み動作について一般的に言及するが、本明細書で説明するシステム及び方法を同様にその他の動作に適用することもできる。このような他の実施形態では、他の比較的長い及び短いレイテンシの動作をこのように識別し、これらをスケジューリングのために分離することができる。また、いくつかの実施形態では、読み込み及び書き込みを第１のタイプの動作として分類し、キャッシュフラッシュ及びトリム動作などのその他の動作を第２のタイプの動作に対応するものとして分類することができる。様々な組み合わせが可能であり、様々な企図が実現する。
【００４１】
ブロック４０２において、Ｉ／Ｏスケジューラは、１又はそれ以上のストレージデバイスのうちの所与のストレージデバイスに関するＩ／Ｏ要求を受け取ってバッファすることができる。ブロック４０４において、一般にレイテンシの短いＩ／Ｏ要求をレイテンシの長い要求よりも優先してストレージデバイスに発行することができる。例えば、ストレージデバイスが使用するストレージ技術に依存して、読み込み要求のレイテンシの方が書き込み要求及びその他のコマンドタイプのレイテンシよりも短いことがあり、これを初めに発行することができる。この結果、書き込み要求を蓄積できる一方で、読み込み要求に発行優先度が与えられる（すなわち、書き込み要求よりも早くデバイスに伝えられる）。Ｉ／Ｏスケジューラは、ある時点でデバイスに読み込み要求を発行するのを中断して書き込み要求を発行し始める。１つの実施形態では、書き込み要求を複数の書き込みストリームとして発行することができる。従って、書き込み要求に伴うオーバヘッドを複数の書き込み要求にわたって償却することができる。このように、レイテンシの長い要求（書き込み要求など）とレイテンシの短い要求（読み込み要求など）を分離して別個に処理することができる。
【００４２】
ブロック４０６において、Ｉ／Ｏスケジューラは、レイテンシの長い要求を（単複の）デバイスに伝えるべき旨を示す特定の状態が存在するかどうかを判定することができる。例えば、１つの実施形態では、このような状態の検出が、一定数のレイテンシの長いＩ／Ｏ要求、又は対応するデータの量が蓄積されて所与の閾値に達したことを検出することを含むことができる。或いは、受け取ったレイテンシの長い要求の割合が何らかの閾値に達することもある。数多くのこのような状態が可能であり、企図される。１つの実施形態では、このレイテンシの長い要求を、書き込み要求とすることができる。このような状態が生じた（条件付きブロック４０８）場合、ブロック４１０において、Ｉ／Ｏスケジューラは、所与のストレージデバイスにレイテンシの長いＩ／Ｏ要求を発行し始めることができる。このような発行される要求の数は、所与のアルゴリズムによって異なることがある。この数は、一定の又はプログラム可能な書き込み数又はデータ量に対応することもできる。或いは、一定期間にわたって書き込みを発行することもできる。例えば、この期間は、特定の状態が存在しなくなる（例えば、受け取った書き込みの割合が下がる）まで、又は特定の状態が生じるまで継続することができる。或いは、デバイスに対するレイテンシの長い要求の発行をいつ開始すべきか、又はいつ停止すべきかを判断する際に、上記のいずれかの組み合わせを使用することができる。いくつかの実施形態では、書き込み要求ストリーム後の第１の読み込み要求が、他の読み込み要求と比較して相対的に遅いことがある。書き込み要求ストリームの直後に発行スロット内に「本物」の読み込み要求をスケジュールすることを避けるために、Ｉ／Ｏスケジューラを、書き込み要求ストリーム後に自動的に「ダミー」の読み込みをスケジュールするように構成することができる。この文脈では、「本物」の読み込みとは、ユーザ又はアプリケーションがデータが要求する読み込みのことであり、「ダミー」の読み込みとは、データを単純に破棄できる人工的に創出された読み込みのことである。様々な実施形態では、ダミーの読み込みが完了したものとして検出されるまで、書き込み要求が完了したと判断されない場合がある。また、様々な実施形態では、書き込みストリームの後にキャッシュフラッシュが続き、これを使用して書き込みがいつ完了したかを判断することができる。
【００４３】
ここで図５を参照すると、ストレージサブシステム内のストレージデバイスの挙動を特徴付けるモデルを作成する方法５００の１つの実施形態を示している。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
【００４４】
ブロック５０２において、ストレージサブシステム内で使用する１又はそれ以上のストレージデバイスを選択することができる。ブロック５０４において、キャッシュサイズ、典型的な読み込み及び書き込み応答時間、ストレージトポロジ、デバイス寿命などの、各デバイスの様々な特性を識別することができる。ブロック５０６において、所与のストレージデバイスのＩ／Ｏパフォーマンスに影響を与える１又はそれ以上の特性を識別することができる。
【００４５】
ブロック５０８において、所与のデバイスの特性のタイミング及び／又は発生に影響を与える１又はそれ以上のアクションを特定することができる。一例として、キャッシュフラッシュ、及びＳＳＤの消去動作などの所与の動作の実行を挙げることができる。例えば、キャッシュフラッシュなどの強制動作は、予想外の時点におけるＳＳＤの可変応答時間の発生を低減することができる。ブロック５１０において、対応する特性及びアクションに基づいて、１又はそれ以上の選択されたデバイスの各々に関するモデルを作成することができる。このモデルは、ストレージコントローラ内のＩ／Ｏスケジューラ内などのソフトウェア内で使用することができる。
【００４６】
図６を参照すると、ストレージサブシステムの１つの実施形態の汎用ブロック図を示している。図示の実施形態では、ストレージデバイス１７６ａ〜１７６ｍの各々を単一のデバイスグループ内に示している。しかしながら、他の実施形態では、１又はそれ以上のストレージデバイス１７６ａ〜１７６ｍを、デバイスグループ１７３ａ〜１７３ｍのうちの２又はそれ以上に区分化することができる。デバイスユニット６００ａ〜６００ｗには、各ストレージデバイスの１又はそれ以上の対応する動作キュー及びステータステーブルを含めることができる。これらのデバイスユニットは、ＲＡＭ１７２に記憶することができる。デバイスグループ１７３ａ〜１７３ｍの各々には、対応するＩ／Ｏスケジューラ１７８を含めることができる。各Ｉ／Ｏスケジューラ１７８は、対応するデバイスグループ内のストレージデバイスの各々の状態データを追跡するモニタ６１０を含むことができる。スケジューリングロジック６２０は、対応するストレージデバイスにどの要求を発行すべきかを判断するとともに、要求を発行するタイミングを判断することができる。
【００４７】
ここで図７を参照すると、デバイスユニット６００の１つの実施形態の汎用ブロック図を示している。デバイスユニット６００は、デバイスキュー７１０及びテーブル７２０を含むことができる。デバイスキュー７１０は、読み込みキュー７１２、書き込みキュー７１４、及びその他の動作キュー７１６などの１又はそれ以上のその他のキューを含むことができる。各キューは、１又はそれ以上の対応する要求を記憶するための複数のエントリ７３０を含むことができる。例えば、対応するＳＳＤのデバイスユニットは、少なくとも読み込み要求、書き込み要求、トリム要求及び消去要求などを記憶するためのキューを含むことができる。テーブル７２０は、１又はそれ以上の状態テーブル７２２ａ〜７２２ｂを含み、これらの各々は、状態データを記憶するための複数のエントリ７３０を含むことができる。様々な実施形態では、図７に示すキューを、物理的に及び／又は論理的に別個のものとすることができる。また、キュー及びテーブルが特定数のエントリを含むように示しているが、必ずしもこれらのエントリ自体が互いに対応するわけではない。また、キュー及びテーブルの数は、図示のものと異なることもある。さらに、エントリには、所与のキュー内で又は複数のキューにわたって優先順位を付けることができる。例えば、読み込み要求は、デバイスに要求を発行する順序に影響を与える、高、中又は低の優先度を有することができる。また、このような優先度は、様々な状況に応じて変更することができる。例えば、一定の寿命に達する優先度の低い読み込みの優先度を上げることができる。当業者には、数多くのこのような優先順位付けスキーム及び技術が知られている。全てのこのような方法が企図されており、本明細書で説明するシステム及び方法に関連して使用することができる。
【００４８】
ここで図８を参照すると、図７に示すような状態テーブルの１つの実施形態を示す汎用ブロック図を示している。１つの実施形態では、このようなテーブルが、所与のストレージデバイスの状態情報、エラー情報、摩耗レベル情報及びその他の情報に対応するデータを含むことができる。対応するＩ／Ｏスケジューラは、この情報にアクセスすることができ、これによりＩ／Ｏスケジューラは、ストレージデバイスへのＩ／Ｏ要求をより良好にスケジュールすることができる。１つの実施形態では、この情報が、デバイス寿命８０２、エラー率８０４、デバイス８０６上で検出された総エラー数、回復可能なエラー数８０８、回復不能なエラー数８１０、デバイスのアクセス速度８１２、記憶されたデータの寿命８１４、対応するキャッシュサイズ８１６、対応するキャッシュフラッシュアイドル時間８１８、１又はそれ以上の割り当て空間の割り当て状態８２０〜８２２、同時処理レベル８２４、及び様々な動作の（単複の）予想時間８２６のうちの少なくとも１つ又はそれ以上を含むことができる。割り当て状態は、使用中、空、及びエラーなどを含むことができる。所与のデバイスの同時処理レベルは、デバイスの複数の動作を同時に処理する能力に関する情報を含むことができる。例えば、あるデバイスが４つのフラッシュチップを有し、各々が一度に１つの転送を行うことができる場合、このデバイスは、最大４つの並行動作を行うことができる。特定の動作を並行して行うことができるか否かは、デバイス上にデータがどのようにレイアウトされていたかに依存することができる。例えば、デバイス内のデータが、要求によりアクセスされるデータが全て１つのチップ上に存在するようにレイアウトされている場合、このデータに関する動作を、異なるチップのデータにアクセスする要求と並行して進めることができる。しかしながら、要求によりアクセスされるデータが複数のチップにわたってストライプ状になっている場合、この要求が他の１つに干渉することがある。従って、デバイスは、最大Ｎ回（例えば、デバイスが４つのチップを有する上述の例では４回）の並行／同時動作を行うことができる。或いは、この最大同時処理レベルは、関与する動作のタイプに基づくこともできる。いずれにせよ、動作をスケジュールする時には、スケジューラは、同時処理レベルＮ及び未処理のトランザクション数Ｍを示す記憶情報を考慮することができる。
【００４９】
ここで図９を参照すると、データストレージサブシステム上における予想外の可変Ｉ／Ｏ応答時間を低減するようにＩ／Ｏスケジューリングを調整する方法９００の別の実施形態を示している。ネットワークアーキテクチャ１００及びデータストレージアレイ１２０ａ〜１２０ｂ内で具体化される構成要素は、一般に方法９００に従って動作することができる。説明を目的として、この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
【００５０】
ブロック９０２において、Ｉ／Ｏスケジューラは、ストレージデバイスの各々の挙動をモニタすることができる。条件付きブロック９０４〜９０８には、方法３００の条件付きステップ３０６に関して上述したような、Ｉ／Ｏパフォーマンスに影響を与え得る所与のデバイスの特性を検出する１つの実施形態を示す。１つの実施形態では、Ｉ／Ｏスケジューラが、所与のデバイスが所与のアイドル時間を超えていることを検出した（条件付きブロック９０４）場合、又は対応するキャッシュが占有率閾値を超えていることを検出した（条件付きブロック９０６）場合、又はキャッシュデータがデータ寿命閾値を超えていることを検出した（条件付きブロック９０８）場合、ブロック９１０において、この所与のストレージデバイスに強制（事前対応）動作を発行することができる。このような場合、スケジューラは、直ちに及び予測できない時点で内部キャッシュフラッシュが発生するであろうと予測することができる。このようなイベントの発生を避けるために、Ｉ／Ｏスケジューラは、イベントを避ける動作を事前対応的にスケジュールする。
【００５１】
なお、上述したイベントの回避とは、イベントが発生しないこと、或いは予想外又は予定外の時点で発生しないことを意味することができる。換言すれば、一般にスケジューラは、所与のイベントがスケジューラのタイミングに従って発生し、その他の場合には発生しないことを好む。この意味では、スケジューラがスケジュールしたことによって発生するレイテンシの長いイベントのほうが、このような予想外に発生するイベントよりもましである。少なくともこれらの検出を行うために、スケジューリングロジック６２０内のタイマ及びカウンタをモニタ６１０と組み合わせて使用することができる。特定のストレージデバイスに発行される強制的動作の一例として、キャッシュフラッシュを挙げることができる。強制的動作の別の例として、消去要求を挙げることもできる。強制的動作は、Ｉ／Ｏスケジューラから、対応するデバイスユニット６００内のデバイスキュー７１０内の対応するキューにスケジューリングの一部として送ることができる。
【００５２】
ここで図１０を参照すると、共有データストレージ上における相対的にレイテンシの短い読み込み動作を維持する方法１０００の１つの実施形態を示している。ネットワークアーキテクチャ１００及びデータストレージアレイ１２０ａ〜１２０ｂ内に具体化される構成要素は、一般に方法１０００に従って動作することができる。説明を目的として、この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
【００５３】
ブロック１００２において、ストレージサブシステムのＲＡＩＤアーキテクチャ内の冗長性の量を、所与のデバイスグループ１７３内で使用すべきと判断することができる。例えば、４＋２のＲＡＩＤグループでは、ストレージデバイスのうちの２つを使用して、パリティ情報などの消去訂正符号（ＥＣＣ）情報を記憶することができる。この情報を、再構成読み込み要求の一部として使用することができる。１つの実施形態では、この再構成読み込み要求を通常のＩ／Ｏスケジューリング中に使用して、いくつかのストレージデバイスが可変Ｉ／Ｏ応答時間を示していることが検出されている間にデバイスグループのパフォーマンスを向上させることができる。ブロック１００４において、デバイスグループ内の同時に使用中の、又は可変応答時間を示している可能性のあるデバイスの最大数を求める。この最大数は、目標数と呼ぶことができる。１つの実施形態では、ストレージデバイスが、書き込み要求、消去要求又はキャッシュフラッシュを実行することに起因して可変応答時間を示すことがあるＳＳＤである。１つの実施形態では、目標数が、引き続き再構成読み込みを行うことができるように選択される。
【００５４】
１つの実施形態では、Ｉ／Ｏスケジューラが、再構成読み込みがそれ以上効率的でなくなるレベルにまで目標数を引き上げることを保証する状態を検出することができる。例えば、所与のデバイスの未処理の書き込み要求数が、待機中閾値に達する（すなわち、書き込み要求がかなりの期間にわたって未処理のままであり、これらをこれ以上待機させるべきでないと判断する）ことがある。或いは、上述したように、後で発行されるように蓄積できない比較的優先度の高い一定数の書き込み要求を検出することができる。Ｉ／Ｏスケジューラは、このような状態（条件付きブロック１００６）を検出した場合、ブロック１００８において、１又はそれ以上の検出した状況に基づいて目標を増分又は減分することができる。例えば、適当な数の高優先度の書き込み要求が未処理である場合、又は他の何らかの条件が生じた場合、Ｉ／Ｏスケジューラは、サポートされる冗長性の量よりも目標が上回るようにすることができる。ブロック１０１０において、Ｉ／Ｏスケジューラは、デバイスグループ内のＮ個のストレージデバイスが可変Ｉ／Ｏ応答時間を示していると判断することができる。Ｎが目標を上回る場合（条件付きブロック１０１２）、ブロック１０１４において、Ｎを低減するようにストレージデバイスをスケジュールすることができる。そうでない場合、ブロック１０１６において、Ｉ／Ｏスケジューラは、パフォーマンスを向上させるように要求をスケジュールすることができる。例えば、Ｉ／Ｏスケジューラは、以下でさらに説明するような再構成読み込み要求の能力を利用することができる。
【００５５】
ここで図１１を参照すると、可変Ｉ／Ｏ応答時間を示すストレージデバイスの数を低減する方法１１００の１つの実施形態を示している。この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
【００５６】
ブロック１１０２において、Ｉ／Ｏスケジューラは、予想外の時点で可変応答時間を引き起こすレイテンシの長い動作を実行するストレージサブシステム内のストレージデバイスの数Ｎを低減すると判断することができる。ブロック１１０４において、Ｉ／Ｏスケジューラは、レイテンシの長い動作を実行する所与のデバイスを選択することができる。ブロック１１０６において、Ｉ／Ｏスケジューラは、この所与のデバイス上におけるレイテンシの長い動作の実行を中止させてＮを減分することができる。例えば、Ｉ／Ｏスケジューラは、この所与のストレージデバイスに対する書き込み要求及び消去要求の発行を停止することができる。また、対応するＩ／Ｏスケジューラは、発行された書き込み要求及び消去要求の実行を中止させることもできる。ブロック１１０８において、Ｉ／Ｏスケジューラは、この所与のデバイス上で、読み込み要求などのレイテンシの短い動作の実行を開始することができる。これらの読み込み要求は、再構成読み込み要求を含むことができる。このようにして、デバイスは、レイテンシの長い応答状態を放置し、Ｎを低減する。
【００５７】
ここで図１２を参照すると、共有データストレージ上における効率的なレイテンシによる読み込み動作を維持する方法の１つの実施形態を示している。ネットワークアーキテクチャ１００及びデータストレージアレイ１２０ａ〜１２０ｂ内に具体化される構成要素は、一般にこの方法に従って動作することができる。説明を目的として、この実施形態のステップを順番に示す。しかしながら、ステップによっては、図示のものとは異なる順序で行なうことができるもの、同時に行うことができるもの、他のステップと組み合わせることができるもの、及び別の実施形態には存在しないものもある。
【００５８】
図１２で説明する方法は、方法１０００のステップ１０１６を行うために取られるステップの１つの実施形態を表すことができる。ブロック１２０１において、Ｉ／Ｏスケジューラは、可変応答時間挙動を示している第１のデバイスに向けられた最初の読み込み要求を受け取る。第１のデバイスは、特定のスケジュール動作を受け取ったことにより（すなわち、既知の理由）、又は何らかの未知の理由により可変応答時間を示していることがある。様々な実施形態では、所与の動作の予想されるレイテンシに少なくとも部分的に基づいて、可変応答時間と考えられるものを特定することができる。例えば、デバイスの特性及び／又は最近の動作履歴に基づいて、所与の読み込みに対する応答が一定期間内に発生すると予想することができる。例えば、許容可能な応答レイテンシの範囲を反映すると判断されるデルタを有するデバイスの平均応答レイテンシを特定することができる。このようなデルタは、トランザクションの９９％又は他のいずれかの好適な数のトランザクションを考慮するように選択することができる。予想される期間内に応答が受け取られなかった場合、再構成読み込みの開始をトリガすることができる。
【００５９】
一般的に言えば、再構成読み込みが模倣されるか否かは、再構成読み込みを行うことに関連するコストと、再構成読み込みの結果を取得する利点（見込み）とを比較する費用便益分析に基づくことができる。例えば、所与のデバイスにおける最初の読み込み要求に対する応答が一定時間内に受け取られない場合、このデバイスが、開始すべき再構成読み込みのレイテンシを上回るレイテンシを生じる動作を行っていると予測することができる。従って、再構成読み込みを開始することができる。このようなアクションは、（例えば）一定レベルの読み込みサービスパフォーマンスを維持するために行うことができる。なお、再構成読み込みを開始すべきかどうか判断する際には、現在の負荷、受け取られている要求のタイプ、要求の優先度、システム内の他のデバイスの状態、並びに図７及び図８で説明したような様々な特性などの他の要素を同様に考慮することができる。さらに、最初の読み込みの応答レイテンシが比較的長いという理由で再構成読み込みを開始することができるが、最初の読み込み要求は実際に完了することが予想される。実際には、最初の読み込み及び再構成読み込みがいずれも正常に完了して結果を提供することができる。従って、再構成読み込みは、最初の要求が処理されるようにするために必要なものではない。このことは、トランザクションが正常に完了しない（又はその可能性がある）ことを示すレイテンシ及び何らかのエラー表示を検出することなどの、エラー状態に起因するレイテンシとは対照的である。例えば、所与のストレージの場所を読み込めないことに起因するデバイスタイムアウトは、完了することが予想されない応答を表す。このような場合、要求を処理するために再構成読み込みが必要となり得る。従って、様々な実施形態では、システムが、所与のデバイスの少なくとも２つのタイムアウト状態を効果的に含むことができる。第１のタイムアウトは、それ以降、必ずしも必要でなくても再構成読み込みを開始できるようになる期間に対応する。このようにして、再構成読み込みを、非エラーに関連するスケジューリングプロセスの通常部分としてスケジューリングアルゴリズムに組み込むことができる。第１のタイムアウト後に発生する第２のタイムアウトは、それ以降、エラー状態が発生したと考えられる期間を表す。この場合、エラーを示すデバイスが最初の読み込みを処理しないと予想されることを理由として再構成読み込みを開始することもできる。
【００６０】
上記に照らして、Ｉ／Ｏスケジューラは、最初の読み込みに対応する再構成読み込みを開始すべきかどうかを判断することができる（判断ブロック１２０２）。一般に、この再構成読み込みは、第１のデバイス以外のデバイスによって処理される１又はそれ以上の読み込みを伴う。再構成読み込みを開始すべきかどうかを判断する際には、多くの要因を考慮することができる。一般的に言えば、Ｉ／Ｏスケジューラは、コスト／利益分析を行って、第１のデバイスによって最初の読み込みを処理しようとする方が「良い」か、それとも再構成読み込みを発行することによって最初の読み込みを処理しようとする方が「良い」かを判断する。上述したように、再構成読み込みを開始すべきかどうかを判断する際には、いくつかの要素を考慮することができる。所与の状況においてどちらが「良い」かは異なることがあり、プログラム可能であり、動的に判断することができる。例えば、アルゴリズムを、常により高速な読み込み応答時間を重んじるようなものとすることができる。このような場合、最初のデバイスが最初の読み込みを処理する前に再構成読み込みの処理を完了できる（又は完了してもよい）かどうかを判断することができる。或いは、アルゴリズムが、ある時点でシステム負荷を低減することを優先すると判断することもできる。このような場合、Ｉ／Ｏスケジューラは、たとえ最初の読み込みよりも速く再構成読み込みを完了できる場合でも、追加のオーバヘッドを伴う再構成読み込みを開始しないことを選択することができる。さらに、このような判断では、速度とオーバヘッドの微妙なバランスを使用することができる。様々な実施形態では、アルゴリズムに、（例えば、負荷に関わらず常に速度を優先するなどの）初期重み付けをプログラムすることができる。このような重み付けは不変的なものであってもよく、又は様々な状況によって動的に変化するようにプログラム可能であってもよい。例えば、状況として、時刻、受け取ったＩ／Ｏ要求の速度、受け取った要求の優先度、特定のタスクが検出されたかどうか（例えば、現在バックアップ処理が行われているかどうか）、及び不具合の検出などを挙げることができる。
【００６１】
スケジューラが、再構成読み込みを開始しないと決定した場合、元々対象になっていたデバイスが読み込みを処理することができる（ブロック１２０３）。或いは、再構成読み込みを開始することもできる（ブロック１２０４）。１つの実施形態では、再構成読み込みを処理するために選択される他のデバイスが、非可変的挙動を示すものとして識別されたものである。非可変的挙動（すなわち、より予測しやすい挙動）を示すデバイスを選択することにより、Ｉ／Ｏスケジューラは、再構成読み込みを処理するのにどれほどの時間が掛かるかをより良好に予測することができる。デバイスの所与の可変的／非可変的挙動に加え、Ｉ／Ｏスケジューラは、各デバイスの他の側面を考慮することもできる。例えば、再構成読み込みを処理するための特定のデバイスを選択する際に、Ｉ／Ｏスケジューラは、所与のデバイスに関する未処理要求の数（例えば、デバイスキューがどれほど埋まっているか）、所与のデバイスに関する現在保留中の要求の優先度、及びデバイス自体の予想処理速度（例えば、デバイスによっては、他のデバイスよりも古い又は本質的に別様に低速の技術を示すものもある）などを評価することもできる。さらに、スケジューラは、デバイスの各々からの対応する結果がほぼ同時に戻されるように再構成読み込みをスケジュールしたいと望むことができる。このような場合、スケジューラは、再構成読み込みを処理するための特定のデバイスの処理時間が他のデバイスとは有意に異なると予測される場合、たとえこのデバイスが他のデバイスよりも大幅に高速であるとしても、このデバイスの優先度を下げることができる。数多くのこのような考慮すべき要因及び条件が可能であり、企図される。
【００６２】
１つの実施形態では、再構成読み込み要求が、最初の読み込み要求の優先度レベルを継承することができる。他の実施形態では、再構成読み込み要求が、最初の読み込み要求とは異なる優先度を有することができる。Ｉ／Ｏスケジューラは、対応する再構成読み込み要求を受け取る選択した第２の（他の）デバイスが現在可変応答時間挙動（条件付きブロック１２０５）を示していることを検出し、この第２のデバイスが、第１のデバイスが非可変的になると予測される後まで可変的状態に留まると予測される場合、ブロック１２０８において、第１のデバイスに最初の読み込み要求を発行することができる。１つの実施形態では、タイマを使用して、可変応答時間を示すストレージデバイスがいつ再び非可変応答時間を示すことができるかを予測することができる。方法１２００の制御フローは、ブロック１２０８からブロックＣを介して条件付きブロック１２１２に移行する。第２のデバイスが第１のデバイスよりも長く可変的状態に留まらない（条件付きブロック１２０６）と予測される場合、方法１２００の制御フローはブロック１２１０に移行する。ブロック１２１０において、発行された再構成読み込み要求によって読み込み要求を処理する。
【００６３】
Ｉ／Ｏスケジューラは、所与の可変的デバイスが非可変的になることを検出した（条件付きブロック１２１２）場合、ブロック１２１４において、この所与のデバイスに最初の読み込み要求を発行する。Ｉ／Ｏスケジューラは、この所与のデバイスを非可変的として指定し、Ｎ（可変Ｉ／Ｏ応答時間を示していることが検出されたストレージデバイスの数）を減分することができる。代替の再構成読み込み要求の前に最初の読み込み要求が終了した（条件付きブロック１２１６）場合、ブロック１２１８において、Ｉ／Ｏスケジューラは、最初の読み込み要求で読み込み要求に対応する。様々な実施形態では、スケジューラが、再構成読み込み要求を除去することができる。或いは、再構成読み込み要求を完了して、そのデータを単純に破棄することもできる。そうでない場合、ブロック１２２０において、Ｉ／Ｏスケジューラは、この読み込み要求を再構成読み込み要求で処理し、最初の読み込み要求を除去する（又はその戻されたデータを破棄する）ことができる。
【００６４】
なお、上述の実施形態は、ソフトウェアを含むことができる。このような実施形態では、方法及び／又は機構を実装するプログラム命令をコンピュータ可読媒体で搬送し、又はこれに記憶することができる。プログラム命令を記憶するように構成された数多くのタイプの媒体が利用可能であり、これらは、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、プログラマブルＲＯＭ（ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）及び他の様々な形態の揮発性又は不揮発性ストレージを含む。
【００６５】
様々な実施形態では、本明細書で説明した方法及び機構の１又はそれ以上の部分が、クラウドコンピューティング環境の一部を成すことができる。このような実施形態では、１又はそれ以上の様々なモデルにより、インターネットを介してリソースをサービスとして提供することができる。このようなモデルとして、インフラストラクチャ・アズ・ア・サービス（ＩａａＳ）、プラットホーム・アズ・ア・サービス（ＰａａＳ）、及びソフトウェア・アズ・ア・サービス（ＳａａＳ）を挙げることができる。ＩａａＳでは、コンピュータインフラストラクチャがサービスとして配信される。このような場合、一般にサービスプロバイダがコンピュータ設備を所有し運営する。ＰａａＳモデルでは、開発者がソフトウェアソリューションを開発するために使用するソフトウェアツール及び基本設備をサービスプロバイダがサービスとして供給しホストすることができる。通常、ＳａａＳは、サービスプロバイダのライセンスソフトウェアをサービスオンデマンドとして含む。サービスプロバイダは、このソフトウェアをホストすることができ、又はこのソフトウェアを一定期間にわたって顧客に展開することができる。上記のモデルの数多くの組み合わせが可能であり、企図される。また、上記の説明はネットワーク化されたストレージ及びコントローラに焦点を当てたものであるが、上述の方法及び機構を、直接接続ストレージ及びホストオペレーティングシステムなどを有するシステムにおいて適用することもできる。
【００６６】
以上、実施形態についてかなり詳細に説明したが、上記開示を完全に理解すると、当業者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正を全て含むと解釈すべきである。
【符号の説明】
【００６７】
３００：方法
３０２：１又はそれ以上のストレージデバイスの読み込み及び書き込み動作をスケジュール。
３０４：１又はそれ以上のストレージデバイスの挙動及びこのデバイスへのＩ／Ｏ要求をモニタ。
３０６：Ｉ／Ｏパフォーマンスに影響を与え得るデバイスの挙動を検出？
３０８：所与のデバイス上で事前対応的アクションをスケジュール。
３１０：予想外の時点における所与のデバイスの可変的挙動を検出？
３１２：所与のデバイス上で反応的アクションをスケジュール。
【図１】
0005912120.tif 000002
【図２】
0005912120.tif 000003
【図３】
0005912120.tif 000004
【図４】
0005912120.tif 000005
【図５】
0005912120.tif 000006
【図６】
0005912120.tif 000007
【図７】
0005912120.tif 000008
【図８】
0005912120.tif 000009
【図９】
0005912120.tif 000010
【図１０】
0005912120.tif 000011
【図１１】
0005912120.tif 000012
【図１２】
0005912120.tif 000013