(57)【要約】ネットワークストレージシステムにて非同期ファイルシステムオペレーション等をスケジューリングすることはビッド価格オンラインオークション方法を適用することで遂行され、ビッド（支払い意欲）値及び価格（コスト）値は計算リソースの利用に基づきストレージクライアントとストレージサーバにより夫々動的に設定される。システムは分散型ファイルシステムオペレーションを適切にスケジュールするためのフレームワークを提供し、ネットワーク帯域幅、サーバＩ／Ｏ、サーバＣＰＵ、並びにクライアント及びサーバのメモリ利用を含む、分散型ファイルシステムの多重キーリソースを管理する。システムはアプリケーション認識パフォーマンスを改善するために非同期要求を加速、延期、又はキャンセルできる。クライアントによりシステムリソースの利用を組み合わせて欠損を見抜きリソースの利用を適応するオンラインオークションによる渋滞料金が採用される。
2012503834.tif 000002
【特許請求の範囲】
【請求項１】
ストレージサーバと複数のストレージクライアントを含むネットワークストレージシステムを操作するステップと、
ビッド価格オークションモデルを適用することにより、ネットワークストレージシステム内のストレージオペレーションをスケジューリングするステップと
を含み、
前記ストレージクライアントと前記ストレージサーバの各々の計算リソースの利用に基づいて、ビッド値及び価格値が、前記ストレージクライアントと前記ストレージサーバにより、夫々、動的に設定されることを特徴とする
方法。
【請求項２】
ストレージオペレーションをスケジューリングするステップは、ビッド価格オークションモデルを適用することによりストレージオペレーションの実行をスケジューリングするステップを含むことを特徴とする
請求項１に記載の方法。
【請求項３】
ストレージオペレーションをスケジューリングするステップは、ビッド価格オークションモデルを適用することにより非同期ファイルシステムオペレーションの実行をスケジューリングするステップを含むことを特徴とする
請求項１に記載の方法。
【請求項４】
クライアントの各々は、前記ストレージクライアントの計算リソースの現下の利用に基づいて、ビッド値を動的に設定し、
ストレージサーバは、ストレージサーバの計算リソースの現下の利用に基づいて、価格値を動的に設定することを特徴とする
請求項１に記載の方法。
【請求項５】
ストレージオペレーションをスケジューリングするステップは、
ストレージサーバに向けられた、一つ若しくはそれ以上のストレージクライアントからの複数のストレージオペレーション要求の各々に対して、ビッド値と価格値の間の関係に基づいて前記要求の処分を決定するステップを含むことを特徴とする
請求項４に記載の方法。
【請求項６】
ストレージサーバとストレージクライアントを含むネットワークストレージシステム内でストレージクライアントを操作する方法であって、
ストレージクライアント内で、ストレージクライアントの計算リソースの現下の利用を判別するステップと、
ストレージクライアントの計算リソースの現下の利用に基づいて、ストレージクライアント内でビッド値を計算するステップと、
ストレージサーバの計算リソースの現下の利用に基づいてストレージサーバにより計算された価格値を、ストレージサーバから受信するステップと、
ストレージクライアント内で、ストレージサーバがストレージオペレーションを実行する要求を、生成するステップと、
ビッド値と価格値の間の関係に基づいて前記要求の処分を決定するステップと
を含む方法。
【請求項７】
前記ストレージオペレーションが非同期書き込みであり、
前記要求の処分を決定するステップが、
ビッド値が価格値より小さいとき、前記要求をストレージサーバに送信することを延期するステップを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記ストレージオペレーションが非同期書き込みであり、
前記要求の処分を決定するステップが、
ビッド値が価格値より大きいとき、書き込みの実行を加速するステップを含むことを特徴とする請求項６に記載の方法。
【請求項９】
前記ストレージオペレーションが非同期読み出しであり、
前記要求の処分を決定するステップが、
ビッド値が価格値より小さいとき要求をキャンセルするステップを含むことを特徴とする請求項６に記載の方法。
【請求項１０】
ビッド値を計算するステップが、ストレージクライアントのメモリの利用に基づいて、ビッド値を計算するステップを含み、
価格値は、ストレージサーバのＣＰＵ及びメモリの利用に基づいて、計算されたものであることを特徴とする
請求項６に記載の方法。
【請求項１１】
ネットワーク帯域幅の利用、及び、ストレージサーバの不揮発性ストレージの利用に基づいて、価格値が更に計算されたものであることを特徴とする
請求項１０に記載の方法。
【請求項１２】
更に、ストレージサーバから価格値を要求するステップを含む
請求項６に記載の方法。
【請求項１３】
ストレージサーバと複数のストレージクライアントを含むネットワークストレージシステムを操作する方法であって、
ストレージサーバ内にて、ストレージサーバの計算リソースの現下の利用を判別するステップと、
ストレージサーバ内にて、ストレージサーバの計算リソースの現下の利用に基づいて、価格値を計算するステップと、
ストレージサーバ内にて、前記価格値をストレージクライアントの各々に送信するステップと、
ストレージクライアントの各々内にて、ストレージクライアントの計算リソースの現下の利用を判別するステップと、
ストレージクライアントの各々内にて、ストレージクライアントの計算リソースの現下の利用に基づいて、非同期ファイルシステムオペレーションに対するビッド値を計算するステップと、
ストレージクライアントの各々内にて、ストレージサーバが非同期ファイルシステムオペレーションを実行する要求を、生成するステップと、
ストレージクライアントの各々内にて、ビッド値と価格値の間の関係に基づいて前記要求の処分を決定するステップと
を含み、
前記非同期ファイルシステムオペレーションが非同期書き込みである場合、
ビッド値が価格値より小さければ、ストレージクライアントは、前記要求をストレージサーバに送信することを延期し、ビッド値が価格値より大きければ、書き込みの実行を加速し、
前記非同期ファイルシステムオペレーションが非同期読み出しである場合、
ビッド値が価格値より小さければ、ストレージクライアントは、前記要求をキャンセルする、
方法。
【請求項１４】
ビッド値は、ストレージクライアントのメモリの利用に基づいて、個々のクライアントにより計算され、
価格値は、ストレージサーバのＣＰＵ及びメモリの利用に基づいて、計算されることを特徴とする
請求項１３に記載の方法。
【請求項１５】
ネットワーク帯域幅の利用、及び、ストレージサーバの不揮発性ストレージの利用に基づいて、価格値が更に計算されることを特徴とする
請求項１４に記載の方法。
【請求項１６】
ネットワークストレージシステム内でネットワークエンドポイントとして動作するように構成された処理システムであって、
プロセッサと、
ネットワークを介して別のネットワークエンドポイントと通信するネットワークインタフェースと、
前記プロセッサが実行するとき、前記処理システムに処理を実行させる命令を格納するストレージ媒体と
を含み、
前記処理は、
前記処理システムの計算リソースの現下の利用を判別するステップと、
前記処理システムの計算リソースの現下の利用に基づいて、第１の値を計算するステップと、
前記第１の値と第２の値の間の関係に基づいて、ネットワークストレージシステム内のストレージオペレーションのための要求の処分を決定するステップとを含み、
前記第２の値は、前記処理システムの外部にあるネットワークストレージシステムのリソースの現下の利用に基づいて、計算されたものである、
処理システム。
【請求項１７】
前記処理システムは、ストレージクライアントであり、
前記第２の値は、ネットワークストレージシステム内のストレージサーバのリソースの現下の利用に基づくものである、
請求項１６に記載の処理システム。
【請求項１８】
前記処理が更に、
ストレージサーバから第２の値を要求するステップと、
ストレージサーバから第２の値を受信するステップと、
ストレージオペレーションのための要求を生成するステップと
を含む、
請求項１７に記載の処理システム。
【請求項１９】
ストレージオペレーションが、ファイルシステムオペレーションであることを特徴とする請求項１６に記載の処理システム。
【請求項２０】
ストレージオペレーションが、非同期ファイルシステムオペレーションであることを特徴とする請求項１６に記載の処理システム。
【請求項２１】
前記ストレージオペレーションが非同期書き込みであり、
前記要求の処分を決定するステップが、
ビッド値が価格値より小さいとき、前記要求をストレージサーバに送信することを延期するステップを含むことを特徴とする
請求項２０に記載の処理システム。
【請求項２２】
前記ストレージオペレーションが非同期書き込みであり、
前記要求の処分を決定するステップが、
ビッド値が価格値より大きいとき、書き込みの実行を加速するステップを含むことを特徴とする
請求項２０に記載の処理システム。
【請求項２３】
前記ストレージオペレーションが非同期読み出しであり、
前記要求の処分を決定するステップが、
ビッド値が価格値より小さいとき要求をキャンセルするステップを含むことを特徴とする請求項２０に記載の処理システム。
【請求項２４】
第１の値は、前記処理システムのメモリの利用に基づくものであり、
第２の値は、ネットワークストレージシステム内の別の処理システムのＣＰＵ及びメモリの利用に基づくものであることを特徴とする
請求項１６に記載の処理システム。
【請求項２５】
第２の値が更に、
ネットワーク帯域幅の利用、及び、前記別の処理システムの不揮発性ストレージの利用に基づくものであることを特徴とする
請求項２４に記載の処理システム。
【請求項２６】
ストレージサーバとストレージクライアントを含むネットワークストレージシステム内のネットワークエンドポイントであって、ストレージサーバ若しくはストレージクライアントである、ネットワークエンドポイントと、
ビッド価格オークションモデルを適用することにより、ネットワークストレージシステム内のストレージオペレーションをスケジューリングするスケジュール手段と
を含み、
前記ストレージクライアントと前記ストレージサーバの計算リソースの利用に基づいて、ビッド値及び価格値が、前記ストレージクライアントと前記ストレージサーバにより、夫々、動的に設定されることを特徴とする
システム。
【請求項２７】
前記スケジュール手段は、
ビッド価格オークションモデルを適用することによりファイルシステムオペレーションの実行をスケジューリングする手段を含むことを特徴とする
請求項２６に記載のシステム。
【請求項２８】
前記ストレージ手段は、
ビッド価格オークションモデルを適用することにより非同期ファイルシステムオペレーションの実行をスケジューリングする手段を含むことを特徴とする
請求項２６に記載のシステム。
【請求項２９】
前記スケジューリング手段は、
ストレージクライアントの計算リソースの現下の利用に基づいて、ビッド値を動的に設定する手段と、
ストレージサーバの計算リソースの現下の利用に基づいて、価格値を動的に設定する手段とを含むことを特徴とする
請求項２６に記載のシステム。
【請求項３０】
前記スケジューリング手段は更に、
ビッド値と価格値の間の関係に基づいてストレージオペレーション要求の処分を決定する手段を含むことを特徴とする
請求項２９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２００８年９月２４日出願の米国特許出願第１２／２３７３０７号に基づいて優先権を主張するものであり、該出願は全体として参照の上、本明細書に組み込まれる。
【０００２】
本発明の少なくとも一つの実施形態は、ネットワークストレージシステムに関し、特に、分散型ネットワークストレージシステム内のマルチプルのクライアント及びサーバリソースの利用に基づく、ストレージ動作の適応スケジューリングに関する。
【背景技術】
【０００３】
ネットワークストレージシステム内で用いられるような分散型ファイルシステムには、ワークロードを変更することに対する、リソースのアロケーションの悪さから生じる、パフォーマンスの問題がある。本明細書におけるリソースは、メモリ、プロセッササイクル、及びネットワーク帯域幅を含む。健全な分散型ファイルシステムでは、アプリケーションは、ストレージサーバにインプット／アウトプット（Ｉ／Ｏ）要求を行い、待ち時間限度の範囲内で個々の要求に対する応答を受け取る。しかしながら、分散型ファイルシステムは、膨大な変動の需要を被る可能性がある。より多くのキャパシティ、より多くのユーザ、若しくはより多くのワークロードが現存のシステムに加えられる際に、パフォーマンスの問題は通常生じる。更に、ファイルシステムクライアントは一般的に利己的に操作するものであり、自分自身のスループットを最大化しようとする。このことはシステムリソースを圧迫する。システムリソースが過密状態になると、待ち時間の増大が突然生じ且つ指数関数的になり得る。
【０００４】
ファイルシステムは、黙示的に異なるプライオリティを有する。要求に応じていくつかのファイルシステムが動作する必要がある際、多数がスケジュールされ得る。これらの２つの動作のクラスは、夫々、同期オペレーション及び非同期オペレーションと称し得る。非同期オペレーションは、先書き及び先読みを含む。先書きに関して、先書きがローカルメモリに対して完了すると、呼び出しアプリケーションはリリースされる。先読みはファイルシステムにより提示され、この完了を待機するアプリケーションは無い。ある分散型ファイルシステムでは、非同期オペレーションは、全リクエストの一部のみ（例えば、約３分の１）埋め合わせる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ａ．Ｂａｔｓａｋｉｓらによる「“ＡＷＯＬ：Ａｎ  ａｄａｐｔｉｖｅ  ｗｒｉｔｅ  ｏｐｔｉｍｉｚａｔｉｏｎｓ  ｉｎ  ｌａｙｅｒ”，Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｆｉｌｅ  ａｎｄ  Ｓｔｏｒａｇｅ  Ｔｅｃｈｎｏｌｏｇｉｅｓ（２００８）」
【非特許文献２】Ｅ．Ａｎｄｅｒｓｏｎらによる「“Ｑｕｉｃｋｌｙ  ｆｉｎｄｉｎｇ  ｎｅａｒ−ｏｐｔｉｍａｌ  ｓｔｏｒａｇｅ  ｄｅｓｉｇｎｓ”，ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ（２００５）」
【発明の概要】
【発明が解決しようとする課題】
【０００６】
現下の分散型ファイルシステムは、同期オペレーショと非同期オペレーションの間のプライオリティの反転に悩まされている。実際には非同期オペレーションが同期オペレーションの方に優先されるからである。このプライオリティの反転が発生すると、同期オペレーションを発生したアプリケーションは、前に発生した非同期オペレーションが完了するまで、待たねばならないからである。このプライオリティの反転は、アプリケーション（クライアント）認識パフォーマンスに悪影響を与える。これは、現存のアプローチがアドレスできないという問題である。
【０００７】
現下のリソース管理ソリューションは、全体システムのうちの分離された部分にのみ限定される傾向がある。例えば、サービス品質（ＱｏＳ）技術は、個別のサービスレベルアグリーメント（ＳＬＡｓ）を保証する目的で、クライアント若しくはＩ／Ｏストリーム間でプライオリティをエンコードする。それらは、リソースの混雑を限定しスループットベースのクラッシュを回避するために、フィードバックベースのＩ／Ｏスロットルを採用する。しかしながら、これらのアプローチは、秒毎のＩ／Ｏ（ＩＯＰＳ）、Ｉ／Ｏスループット、及びネットワーク利用などの、サーバ指向のパフォーマンス基準のみに基づくものであり、これらは、多くの場合、アプリケーション認識（ユーザ認識）のパフォーマンスと十分に調和しない。
【０００８】
サーバ指向の基準は、アプリケーション認識のパフォーマンスに対して、鈍感である。なぜなら、それらは、Ｉ／Ｏタイプにより若しくはクライアント状態に基づいて、ファイルシステムオペレーションの緊急性及び相対的プライオリティを区別しないからである。サーバの立場からすれば、任意の所与の時点での全てのクライアントのオペレーションは、等しく重要であるが、このことは一般に真実ではない。
【０００９】
渋滞料金は、ネットワーク環境内のフローコントロールのために時々用いられる技術である。しかしながら、多数の異なる管理すべきリソースが存在するという点において、分散型ファイルシステムは、より豊かでより複雑な環境を示す。分散型ファイルシステムでは、リソースは不均一である。大抵の場合、２つのリソースが直接的に類似することは無い。例えば、メモリ利用などに対して、ＣＰＵサイクルを直接的に均衡させることはできない。これらのリソースのいずれも、ネットワーク帯域幅に自然にマップするということはない。これにより、分散型ファイルシステムへの負荷の評価が為される。分散型ファイルシステム内のパフォーマンス限定ファクタは、システム構成、ワークロード、及びクライアント個体数などの複雑な組み合わせに依存するものである。よって、分離してＩ／Ｏシステム若しくはネットワークを最適化することは、十分ではない。
【課題を解決するための手段】
【００１０】
本明細書に記載の技術は、ネットワークストレージシステムにおいて、ビッド価格オークションモデルを適用することにより、ストレージオペレーション、特に、非同期ファイルシステムオペレーションをスケジューリングすることを含み、ビッド（支払い意欲）値及び価格（コスト）値は、ストレージクライアントとサーバの計算リソースの利用に基づいて、ストレージクライアントとストレージサーバにより、夫々、動的に設定される。或る実施形態では、この技術は、分散型ファイルシステム内で非同期要求を適切にスケジュールするための「全体的」フレームワークを含む。システムは、ネットワーク帯域幅、サーバＩ／Ｏ、サーバＣＰＵ、並びに、クライアント及びサーバのメモリ利用を含む、分散型ファイルシステムの多重キーリソースを管理するという点において、全体的である。システムは、アプリケーション認識パフォーマンスを直接的に改善するために、非同期ファイルシステム要求を加速し、延期し、若しくはキャンセルすることができる。或る実施形態では、本願技術は、ファイルシステムクライアントによりシステムリソースの利用を組み合わせて欠損を見抜きリソースの利用を適応させる、オンラインオークションによる渋滞料金を利用する。
【発明の効果】
【００１１】
本明細書に記載の本願技術の他の形態は、添付の図面、及び発明の詳細な説明から明白であろう。
【図面の簡単な説明】
【００１２】
本発明の一つ若しくは複数の実施形態は、例示として示されるものであり、添付の図面に限定されない。図面では、同じ符号は同じ部位を示す。
【図１】ネットワークストレージシステムの例を示す。
【図２】図１のネットワークストレージシステム内のクライアントサーバ機能層のブロック図である。
【図３】混雑状態認知ネットワークファイルシステム（ＣＡ−ＮＦＳ）オークションモデルの動作の例を示す。
【図４Ａ】ＣＡ−ＮＦＳの一部としてストレージサーバ２内部で実行し得るプロセスのフローチャートである。
【図４Ｂ】ＣＡ−ＮＦＳの一部としてストレージサーバ２内部で実行し得るプロセスのフローチャートである。
【図５】クライアント内で実行されＣＡ−ＮＦＳを実装し得る非同期書き込みプロセスの例を示す。
【図６】クライアント１内で実行されＣＡ−ＮＦＳを実装し得る非同期読み出し（先読み）プロセスの例を示す。
【図７】クライアントが更新された価格Ｐをサーバから要求できるプロセスの例を示す。
【図８】ストレージサーバ又はクライアントを代表し得る、処理システムのアーキテクチャの例を示すハイレベルブロック図である。
【発明を実施するための形態】
【００１３】
本明細書において、「実施形態」、「一つの実施形態」などの言及は、記載される特別の特性、構造若しくは特性が、本発明の少なくとも一つの形態に含まれることを意味する。本明細書内のこの用語の発生は、必ずしも同じ形態に言及するものではない。
【００１４】
本明細書にて例示としてネットワーク「ファイルシステム」を説明する。しかしながら、「ファイルシステム」という用語は、広く解釈されるべきものであり、データストレージ又は管理の基本ユニットとして「ファイル」そのものに動作するシステムに必ずしも限定されるものではないことに、留意されたい。即ち、用語が本明細書で用いられる「ファイルシステム」は、むしろ、ブロック（例えば、ファイルのサブセット）などの、データの他の基本ユニットに基づいて動作し得る。
【００１５】
更に、本明細書で紹介される技術は、ネットワークファイルシステム（ＮＦＳ）の拡張若しくは変更として記載しているが、本明細書で紹介される広範な原理は、ＮＦＳ以外の、コモンインターネットファイルシステム（ＣＩＦＳ）などのコンテクストで、潜在的に利用可能である。
【００１６】
Ｉ．概説
システムリソースが、ネットワークファイルシステム内のクリティカルな容量に接近するとき、同期要求が優先されるべきである。なぜならば、同期要求は呼び出しアプリケーションをブロックするからである。一面では、ネットワークファイルシステムは、プライオリティスケジューリング、非ブロック要求に対する優先ブロック、及び、非タイムクリティカル（非同期）Ｉ／Ｏトラフィックがオンディマンド（同期）要求を妨げないことを保障するためにブロックが高いプライオリティで読み取る書き込みを実施するなどの、プライオリティインヘリタンスを、利用する必要がある。
【００１７】
クライアント要求オペレーションのプライオリティ、及びシステムリソースの利用に基づいて、クライアント要求オペレーションを動的にスケジュールする、分散型ファイルシステムのためのパフォーマンス管理技術を、以下に説明する。この技術は、ＱｏＳアプローチを補足するものである。ＳＬＡを構築し得るアプリケーションに対するパフォーマンス保証を提供するものではない。むしろ、同期ファイルシステムオペレーションのための、待ち時間を最小化しスループットを最大化することにより、アプリケーション認識パフォーマンスを改善する、最大限の努力アプローチを採る。
【００１８】
この技術の一つの形態は、システム負荷を評価し、システムリソースを管理し、クライアントオペレーションをスケジュールする全体的アルゴリズムである。ここでの「全体」は、クライアントキャッシュシステムからサーバディスクサブシステムまで、所与の分散型ストレージシステム内のクライアント及びサーバの全ての間の、マルチプルキーリソースを、フレームワークが考慮に入れる、ということを意味する。このことは有利である。なぜなら、個々のリソースを個別に最適化することは、システムリソース間のパフォーマンス依存をキャプチャしないからである。本明細書で説明する技術は、単一の価格付けモデルで様々なタイプのリソースを一体化する、オンラインオークション及び混雑状態価格付けを、採用する。
【００１９】
サーバは、それらのリソースの値（価格若しくはコスト）を示し、クライアントは、システムが要求をスケジュールし様々な構成及び時間変動若しくはワークロード変動リソース制約に適合するための、ファイルシステムオペレーションの重要性（支払い意欲、若しくは「ビッド」）を示す。技術は、非同期要求を遅延し、加速し、若しくはキャンセルできる。このことは、非クリティカルオペレーションにより生じる、ネットワーク及びサーバＩ／Ｏシステム内の混雑状態を回避するのに、役立つ。
【００２０】
一つの実施形態に係る技術は、混雑状態認知ＮＦＳ（ＣＡ−ＮＦＳ）と称されるシステムの形式で実装される。これは、ネットワークファイルシステム（ＮＦＳ）の拡張であり、ＬｉｎｕｘＮＦＳクライアント及びサーバ並びにＬｉｎｕｘメモリマネジャに対する変更として実装される。しかしながら、変更はＬｉｎｕｘに特有ではなく、どのＮＦＳ実装にも適用可能であることに、留意されたい。ＣＡ−ＮＦＳは、ＮＦＳプロトコルと互換性があり、よって、ＣＡ−ＮＦＳと通常のＮＦＳクライアント及びサーバは共存し得る。ＣＡ−ＮＦＳはＮＦＳよりパフォーマンスが優れ、非常に広範なワークロードでアプリケーション認識パフォーマンスを大きく改良する、と考えられる。更に、ＣＡ−ＮＦＳにより、クライアント及びサーバは、自律性に影響することも、安全性を犠牲にすることも無く、リソースを共有し交換することができる。更に、本明細書に示す原理は、ＣＩＦＳなどの、ＮＦＳ以外のコンテクスト内に利用され得る。
【００２１】
本明細書に示すパフォーマンス管理技術は、より低いプライオリティの分散型ファイルシステム要求（例えば、非同期要求）のスケジューリングを変更し、同期要求による干渉を減少させる。この技術は、所与のシステムの全てのクライアント間で、ファイルシステムリソースの利用を黙示的に管理し調整することにより、リソース管理に新しいアプローチをもたらす。この技術は、サーバ中心基準ではなく、アプリケーション認識パフォーマンスに基づいて、スケジューリングを適合するにあたっても、利点がある。それは、単一のアルゴリズムフレームワーク内で公正性及びプライオリティを一体化し、最適化ゴールを実現してファイルシステムサーバで無くシステムユーザに利益を与える。
【００２２】
ＩＩ．ネットワーク環境
ここで図１を参照して、図１は本明細書で説明する技術が実装され得るネットワークストレージシステムの例を示す。図１では、ストレージサブシステム４に結合し、インターコネクト３を介してクライアント１のセットに結合する。インターコネクト３は、例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンネットワーク（ＭＡＮ）、インターネットなどのグローバルエリアネットワーク、ファイバチャネルファブリック、若しくはそれらインターコネクトの組み合わせであればよい。クライアント１の各々は、例えば、従来のパーソナルコンピュータ（ＰＣ）、サーバクラスコンピュータ、ワークステーション、携帯計算／通信装置などであればよい。
【００２３】
ストレージサブシステム４内のデータのストレージは、ストレージサーバ２により管理される。ストレージサーバ２及びストレージサブシステム４は、まとめてストレージシステムと称される。ストレージサーバ２は、クライアント１からインプット/アウトプット（Ｉ／Ｏ)要求（例えば、読み取り及び書き込み要求）を受けて応答し、ストレージサブシステム４内に格納される若しくは格納されるべきデータに、向けられる。ストレージサブシステム４は、複数の不揮発性マスストレージデバイス５を含み、該不揮発性マスストレージデバイス５は、例えば、従来の磁気的若しくは光学的ディスク又はテープドライブであればよい。あるいは、該不揮発性マスストレージデバイス５は、フラッシュメモリなどの不揮発性半導体メモリ、若しくはそれら装置の組み合わせであればよい。ストレージサブシステム４内のマスストレージデバイス５は、レイド（ＲＡＩＤ）として構成されてもよく、その場合、ストレージサーバ２は、冗長性のための従来のＲＡＩＤアルゴリズムを用いてストレージサブシステム４にアクセスし得る。
【００２４】
ストレージサーバ２は、例えば、ＮＡＳ環境で通常為される、ファイルレベルデータアクセスサービスをクライアントに提供し、若しくは、ＳＡＮ環境で通常為される、ブロックレベルデータアクセスサービスを提供する、ストレージサーバであってもよく、又は、ストレージサーバ２は、ファイルレベル及びブロックレベルのデータアクセスサービスをクライアントに提供できるものであってもよい。更に、ストレージサーバ２は図１で単体の装置として示されているが、分散型アーキテクチャを有していてもよい。例えば、ストレージサーバ２は、独立のノード、独立のアドレススペースなどに配置されるその種々のコンポーネントに実装され得る。
【００２５】
ＩＩＩ．アークテクチャ
或る実施形態では、クライアント１とサーバ２の主要な機能は、ソフトウエアに実装される。そのソフトウエアのアーキテクチャの例は、図２に示される。図示されるように、クライアント１は、ソフトウエアスタック２０を含み、該ソフトウエアスタック２０のキー層は、ユーザアプリケーション（「ユーザ層」）２１、ユーザ層の論理下層のクライアントＣＡ−ＮＦＳ層２２、及び、クライアントＣＡ−ＮＦＳ層２２の論理下層のネットワークアクセス層２３を含む。ユーザ層２１は、例えば、ファイルシステムオペレーションに対する要求、例えば、読み出し及び書き込みを生成するアプリケーションである。クライアントＣＡ−ＮＦＳ層２２は、本明細書に示される技術のクライアントベースの形態が一義的に実装される層である。ネットワークアクセス層２３は、イーサネット（登録商標）、インターネットプロトコル（ＩＰ）、トランスポートコントロールプロトコル（ＴＣＰ）、ファイバチャネルプロトコル（ＦＣＰ）などの、ネットワークで通信するための一つ若しくはそれ以上のより下層レベルのプロトコルを実装する、一つ若しくはそれ以上のネットワークドライバを含む。
【００２６】
ストレージサーバ２では、ストレージ関連オペレーションは、ストレージオペレーティングシステム２４を具体化する実行可能ソフトウエアによりコントロールされる。図示する実施形態では、ストレージオペレーティングシステム２４は、複数のソフトウエアモジュール、即ち「層」を含む。層はストレージマネジャ２５を含み、該ストレージマネジャ２５は、ストレージオペレーティングシステム２４のコア機能要素である。ストレージマネジャ２５は、ストレージサブシステム４内に格納されるデータに構造（例えば、ヒエラルキ）を与える。言い換えれば、ストレージマネジャ２５はファイルシステムを管理する。ストレージマネジャ２５は、クライアント１からの読み出し及び書き込み要求並びに他のファイルシステムも、扱う。
【００２７】
ストレージマネジャ２５の論理「下層」には、ストレージサーバ２がネットワーク３で（例えば、クライアント１と）通信できるように、ストレージオペレーティングシステム２４は、サーバＣＡ−ＮＦＳ層２６及びネットワークアクセス層２７を含む。サーバＣＡ−ＮＦＳ層２６は、本明細書に示されるＣＡ−ＮＦＳ技術のサーバベースの形態が一義的に実装される層である。実際には、コモンインターネットファイルシステム（ＣＩＦＳ）、ハイパーテキストトランスファプロトコル（ＨＴＴＰ）及びインターネットスモールコンピュータシステムインターフェース（ｉＳＣＳＩ）などの、他のプロトコルを用いてストレージサーバが通信するために、ストレージサーバ２内にはモジュール（図示せず）である追加の層があってもよい。ネットワークアクセス層２７は、イーサネット（登録商標）、ＩＰ、ＴＣＰ、ＦＣＰ、ユーザデータグラムプロトコル（ＵＤＰ）などの、ネットワークで通信するための一つ若しくはそれ以上のより下層レベルのプロトコルを実装する、一つ若しくはそれ以上のネットワークドライバを含む。
【００２８】
更に、ストレージマネジャ２５の論理下層には、ストレージサーバ２がストレージサブシステム４によって通信できるように、ストレージオペレーティングシステム２４は、ＲＡＩＤ層２８及びストレージドライバ層２９を含む。ＲＡＩＤ層２８は、ＲＡＩＤ−０、ＲＡＩＤ−４、ＲＡＩＤ−５、若しくはＲＡＩＤ−ＤＰなどのＲＡＩＤスキームを実装し、ストレージドライバそう２９は、ファイバチャネルプロトコル（ＦＣＰ）若しくはスモールコンピュータシステムインターフェース（ＳＣＳＩ）などのより下層レベルのストレージデバイスアクセスプロトコルを実装する。
【００２９】
或る実施形態では、ストレージオペレーティングシステム２４は、分散型アーキテクチャを有してもよい。例えば、サーバＣＡ−ＮＦＳ層２６及びネットワークアクセス層２７が一つのノード（例えば、「Ｎ−モジュール」）内に含まれ、ストレージマネジャ２５、ＲＡＩＤ層２８及びストレージドライバ層２９が、独立のノード（即ち、「Ｄモジュール」）内に含まれてもよい。そのような実施形態では、Ｎ−モジュール及びＤ−モジュールは、ある形式の物理的インターコネクトを介して、相互に（並びに、他のＮ−及びＤ−モジュールとも）通信できる。
【００３０】
別の実施形態では、上述の層のどれでも若しくは全てが、ソフトウエア若しくはファームウエアではなく、専用ハードウエア内に実装され得ることに、留意されたい。
【００３１】
ＩＶ．オンラインオークションでアプリケーション認識パフォーマンスを管理する
一つの実施形態では、ＣＡ−ＮＦＳは、そのクライアントによるシステムリソースの利用を調整するために、オンラインオークションの利用を採用する。ＣＡ−ＮＦＳは、単一の価格付けモデル下で最重要システムリソースの管理を一体化するという点で、全体的なものである。分散型ファイルシステムでは、リソースは不均一である。それらのうちの二つのものが直接的に類似する、ということはない。メモリ利用に対してＣＰＵサイクルを直接的に均衡させることはできず、逆も同じである。リソースがネットワーク帯域幅に当然に変換されることも無い。このことにより、分散型システムへの負荷の評価が困難になる。
【００３２】
本明細書で説明するアプローチにより、システムは、異なる構成の異なるボトルネックに対処でき、時間と共に変化するリソース制約に応じることができる。本明細書で説明する全体的アプローチは、ＣＡ−ＮＦＳがマルチプルのクライアント及びサーバにおいてリソースを調整するという点において、エンドツーエンドを超えるものである（エンドツーエンドもネットワークエンドポイントを接続するが、全体的マネジメントはクライアントアプリケーションからサーバディスクシステムに及ぶ）。
【００３３】
ＣＡ−ＮＦＳでは、サーバは、システム内の読み出し及び書き込みの価格を増やすことにより、若しくは減じることにより、サーバのリソース制約をエンコードする（このことはメタデータＩ／Ｏオペレーションにも適応する）。例えば、利用可能なメモリを使い果たした、若しくは、ネットワークデリバーと同様には迅速にディスクにデータを書き込めない、サーバは、クライアントにて「押し戻す」ために、オペレーションの価格を増大させる。クライアントは、サーバの価格及び支払い意欲（ＷＴＰ）に依存して、オペレーションを加速すること、延期すること、若しくはキャンセルすることにより、順応する。リソース制約の無いクライアントは、支払い意欲がより少なく、自らの提示される負荷を減少する。負荷クライアントリソースがクリティカルな容量に近接すると、クライアントは、サーバ価格が高くとも要求をサーバに送る。
【００３４】
ＷＴＰという用語は、クライアントが現実の意味でリソースに対して実際に支払いをしなければならない、ということを必ずしも意味するものではないことに留意されたい。或る実施形態では、個々のクライアントは、有限の（恐らく、再充填可能の）ポイント若しくはクレジットのアカウントを受け、その場合、クライアントは、ファイルシステムオペレーションを実施させるために、実際にそのポイント／クレジットを支払う。しかしながら、別の実施形態では、クライアントは、後で説明するようなアルゴリズムフレームワークに従ってＷＴＰを単に計算するに過ぎず、この場合、ファイルシステムオペレーションの処理はＷＴＰがサーバの価格を超えるかどうかに基づくのであるが、オペレーションを実施させるために実際の価格がクライアントによって支払われる、ということはない。
【００３５】
Ａ．ＣＡ−ＮＦＳを実際に適用する
図３は、ＣＡ−ＮＦＳの高レベルオペレーションを示す。サーバ２は、異なるオペレーションの価格をセットし、リソース及びネットワークの利用を調整して管理する。この例では、サーバのメモリは、完全占有に近く、ＩＯＰの最大限レートに近い。このことに基づいて、サーバ２は非同期書き込みの価格を比較的高く設定する。なぜなら、非同期書き込みはサーバのメモリを消費し、システムにＩＯＰＳを加えるからである。
【００３６】
クライアント１は、それらのローカルステートに基づいて非同期オペレーションに対してＷＴＰを適応させる。クライアント＃１は、メモリ限界に近付きつつあり、メモリが尽きると、アプリケーションは、非同期書き込みの完了を待つことをブロックする。非同期書き込みの価格が高くとも、クライアントは支払う意欲がある。サーバは、後で更に説明するように、ＣＡ−ＮＦＳプロトコルの一部として、それらの価格に関してクライアントに通知する。クライアント１は、サーバの非同期の書き込み価格を支払える間、そのメモリを使い果たすことを回避する。同時に、システムはサーバメモリをより高く評価する。なぜなら、サーバにおけるメモリ切れは、全てのクライアントに影響するからである。クライアント＃２は、利用可能なメモリを有する。よって、“汚れた”データ（安定貯蔵にセーブされる前に、ＲＡＭ内のみで修正されたデータ）を書き込むことを止める。このことにより、サーバ２上の負荷が減少し、システムはクライアント間のメモリ消費を交換できる。サーバ２がそのメモリをクリアすると、サーバは非同期書き込みの価格を下げ、クライアント＃２は再び書き込みを開始する。
【００３７】
クライアントの、先読みを実施する意欲は、先読みページを含む利用可能メモリと、先読みの相対的な実効性に依存する。不正確な先読みは、システムリソースを恩恵無く消費する。図３の例では、クライアント＃２は、利用可能メモリ、読み取り支配のワークロード、及び良好な先読み実効性を有し、よって、先読みは、将来の同期読み取りをキャッシュヒットに変える。よって、クライアント＃２は、サーバの価格を支払う意欲がある。クライアント＃１は書き込み支配のワークロードを有し、メモリは殆ど無く、相対的にイ実効的なキャッシュしか有さない。従って、クライアント＃１は、他のタスクのためにリソースを保全すべく、先読み要求を停止する。
【００３８】
Ｂ．非同期書き込み
アプリケーション（クライアント）認識パフォーマンスは、非同期オペレーションの同期待機を回避することに決定的に依存する。これは、リソース管理に対する現存のアプローチが見過ごす事実である。非同期書き込みオペレーションの有効性は、クライアントの現在のメモリ状態に依存する。利用可能メモリがあるときのみ、書き込みは非同期である。システムは、書き込みを据え置いて実行するようには、メモリがアロケートされ得ないどの書き込みも全ての書き込みも、ブロックする。メモリプレッシャは、読み出しに関しても同様の不都合な効果を有する。ストレージに書き込まれなければならない全ての未決の書き込みは、同時存在の読み取りに干渉し、このことにより、ネットワーク及びディスクにおいて遅延を待ち行列化する。
【００３９】
通常のＮＦＳクライアントは、書き込み（）システムコールを受信すると直ぐにサーバのメモリにデータを書き込み、また、ローカルメモリ内に書き込みデータをバッファする。バッファされたページは、クライアントとサーバの両方にて、汚れたデータとしてマークされる。これらのデータをディスクに保存するために、ＮＦＳプロトコルは、コミットオペレーションを提供し、該コミットオペレーションはクライアントからサーバにメッセージとして送られる。データをサーバにいつ委ねるかの決定は、複数のファクタに依存する。従来、個別の汚れたブロックの世代が所定の限度に達するとそれら個別の汚れたブロックがフラッシュされるという、周期的更新ポリシを、システムは用いた。クライアントメモリ内の汚れたページの数が、或るパーセントを、即ち、通常、利用可能のメモリの割合が小さい、“フラッシングポイント”と称され得る状況を、超えると、現在のシステムは、汚れたページをサーバに段階化する。十分な数のそのようなページがサーバに到達した後、クライアントのバッファを再び利用可能とするために、クライアントはそれらにコミットするようにサーバに要求する。この連続的なフラッシュ／コミットのサイクルは、一貫性無くリソースを利用するものであり、それがアクティブであると、相対的に高価となる。
【００４０】
通常のＮＦＳとは対照的に、ＣＡ−ＮＦＳクライアントは、書き込みを延期すること若しくは加速することにより、それらの非同期書き込みビヘイビアを適応させる。書き込みを延期することは、書き込み要求を受けたときに汚れたデータをサーバメモリにコピーすることを、遅延させる。代わりに、サーバリソースを利用することの価格が低くなるまで、クライアントはローカルメモリのみにデータを保持する。書き込み延期を可能にするために、クライアント上の書き戻しデーモンのオペレーションは、価格設定メカニズムに基づいてフラッシングポイント値を動的に変更することにより、修正され、汚れたページの書き戻しがいつ始まるべきかを示す。この修正は、現下のオペレーティングシステムメモリマネジャにより課される静的限度に優先する。
【００４１】
書き込みを遅延することは、汚れたページでクライアントのメモリを消費し、サーバのメモリを節約し、ネットワーク帯域幅及びサーバディスクＩ／Ｏの消費を遅らせる。しかしながら、後の同期コミットオペレーションのために、より高い待ち時間を課するリスクにも直面する。これは、ファイル同期オペレーションが、クライアントからサーバメモリへ、汚れたバッファのネットワーク転送を要求し得るからである。書き込みを遅延することは、先読みに干渉し得ることもある。というのは、先読みのために用いられ得るメモリを消費するからである。このことは、読み出しオペレーションに影響し得、ローカル読み出しから、サーバからの読み出しへと、方向を変える可能性がある。
【００４２】
書き込みを加速することにより、ＣＡ−ＮＦＳサーバは、データを安定貯蔵に即座に同期させるように強制される。これにより、クライアントはオペレーションに関連する汚れたページの全てをバッファする必要は無い。書き込み加速の背景の思想は、サーバリソース利用が低ければ、書き込みを遅い時点に延期する必要が無い、ということである。書き込みを加速しても、書き込みオペレーションを同期させるものではない、ということに留意されたい。代わりに、クライアントにて書き戻しデーモンを即座に起動する。このオペレーションは、クライアントのメモリを節約し、クライアントのキャッシュコンテンツを保存する。しかしながら、それは、サーバのメモリを消費し、ディスク利用を増加することもあり、即座にネットワーク帯域幅も利用する。
【００４３】
サーバは、そのメモリ、ディスク及びネットワーク利用に基づいて、価格非同期書き込みを行う。サーバメモリがクライアントにより現下アクセスされるブロックを含むならば、高い価格を設定することにより、クライアントは、キャッシュコンテンツを保存し且つ高キャッシュヒット率を維持するために、書き込みを遅延するように強制される。従って、ディスク若しくはネットワークリソースが大量に利用されると、ＣＡ−ＮＦＳは、負荷が減少するまで、書き込みを遅延する。クライアントは、キャッシュ書き込み能力、即ち、利用可能のメモリに基づいて、価格非同期書き込みを行う。
【００４４】
Ｃ．非同期読み出し
ＣＡ−ＮＦＳクライアントは、非同期読み出し（先読み）のスケジューリングを最適化することを試みる。先読みのためのサーバ価格が低く咲く読みが有効であるならば、クライアントは積極的に先読みを実行する。サーバリソースの価格が高いならば、クライアントは、同期オペレーションを容認して、先読みをキャンセルする。先読みをキャンセルすることにより、クライアントメモリが節約され、ネットワーク帯域幅の消費が遅延されるが、データがキャッシュ内にプレロードされていなかったためにしばしばキャッシュヒットが同期読み出しに変換される。
【００４５】
Ｄ．同期オペレーションを延期する
価格設定同期オペレーションにより、システムは標準外のＩ／Ｏプロセスを抜け目無く管理することができる。分散型ファイルシステムは、データマイニング、索引付け、監査などの、低プライオリティＩ／Ｏタスクを有することが多い。同期オペレーションのためにＷＴＰを制限することにより、リソースが混雑状態になると、これらの低プライオリティタスクは自動的に停止する。このことは、索引付けクライアントを引用して図３に示される。同期読み出しのためのサーバの価格が索引付けクライアントのＷＴＰを超える。このことにより、クライアントはアイドル状態となり、サーバ上の低Ｉ／Ｏ負荷の期間を待機する。
【００４６】
通常のクライアントに対して、同期オペレーションを遅延することに利益は無い。なぜなら、アプリケーションはそれらが完了することを待機するのを遮るからである。同期読み出し及び書き込みは、要求するアプリケーションを妨げるため、同期待機を減少させることが望ましい。同期オペレーションに対するクライアントのＷＴＰは、最大限の可能なサーバ価格よりも大きくあるべきであり、非同期オペレーションに対する最大限の可能なＷＴＰと等しくあるべきである。
【００４７】
クライアントは、アプリケーションプライオリティをエンコードすることもでき、異なるプロセスを異なる価格でチャージすることにより、バックグランドＩ／Ｏプロセスとアプリケーションワークロードとの間で違いを付けることもできる。差異のある価格設定は、Ｉ／Ｏシステム内のオペレーティングシステム（ＯＳ）プロセスプライオリティをエンコードするのにも用いられ得る。
【００４８】
Ｖ．システム設計
全体ネットワークストレージシステムの基礎をなすことは、一体化アルゴリズムフレームワークであり、このことは、システムリソースに関する分散型ファイルシステムの効率的なスケジューリングに対する競争的分析に基づくものである。以下に説明するように、アルゴリズムフレームワークは、最初に、単一のリソースのためのオークションを記載し、次に、個々のリソースに対して価格設定機能を構築し個々のＮＦＳオペレーションに対してこれらの機能を価格にアセンブルすることにより、構成されている。
【００４９】
Ａ．アルゴリズムの基礎
個々のリソースに対して、ビッドが順次気まぐれに到来する、オンラインセッティング内の簡素なオークションを定義する。ビッドは、その時点でのリソースの価格より高ければ、即座に受け入れられる。
【００５０】
目的は、どの将来の要求シーケンスの最適オフラインアルゴリズムとも対抗する、オンラインアルゴリズムを見つけることである。オンラインアルゴリズム（競争率）のパフォーマンス劣化は、ｒ＝ｍａｘ（Ｂｏｆｆｌｉｎｅ／Ｂｏｎｌｉｎｅ）と定義される。ここで、Ｂｏｆｆｌｉｎｅはオフライン最適アルゴリズムからの利益であり、Ｂｏｎｌｉｎｅはオンラインアルゴリズムからの利益である。下方境界は、Ω（ｌｏｇｋ）にて設置され得る。ここで、ｋは、全てのインプットに関するアルゴリズムにより実現される最大限の利益と最小限の利益の間の比率である（更に、Ωは、従来の「０の大台」、即ち「次数」、表記法を示す）。下方境界は、リソースの１／ｌｏｇｋをリザーブすることが価格を２倍にするときに、達成される。
【００５１】
オフラインアルゴリズムが、オンラインアルゴリズムにより拒絶された最大限ビッドＰにて全体リソースを「売る」（アクセスを与える）ときに、最悪のケースは発生する。このビッドを拒絶するオンラインアルゴリズムに対して、Ｐより大きい価格を設定したはずであり、このことは、少なくともＰ／２に対してリソースの１／ｌｏｇｋを売却したことを意味する。
Ｂｏｎｌｉｎｅ＞Ｐ／（２ｌｏｇｋ）及びＢｏｆｆｌｉｎｅ−Ｂｏｎｌｉｎｅ＜Ｐにより、ｒ＜１＋２ｌｏｇｋとなる。
増加する利用により、価格を指数関数的に増加させることにより、ｋの対数の競争率となる。
【００５２】
Ｂ．実際の価格設定機能
上記定義したアルゴリズムフレームワークは、恒久的な結合を伴う回路共有ネットワーク内で共有する帯域幅に適用する。このフレームワークは、短命の回路として、クライアントのメモリからサーバのディスクへ、ファイルシステムオペレーションの経路を処理することにより分散型ファイルシステムに適応され得る。このアプローチは、個々のリソースの最大限の利用における最適オフラインアルゴリズムによって競合するオンラインストラテジを与える。このアプローチから導出されるアルゴリズムは、将来について何も知らず過去と将来の間に相関を仮定せず現下のシステム状態のみを知っているオンラインアルゴリズムである。
【００５３】
個別のリソースｉに対して、価格設定機能Ｐは、このフレームワーク内で定義され得、そこでは利用ｕｉは０と１の間で変動し、これにより価格は０とＰｍａｘの間で変動する。非常に大きいｋにより、価格機能は、利用が略１になるまで、ゼロ近傍を維持する。その後、価格は非常に迅速に上昇する。非常に小さいｋにより、リソースは低利用にて高価になり、このことは混雑状態の前に利用がスロットル調整される。リソースが混雑状態となると、ｋの適切な値がインクリメントのフィードバックを与える。
【００５４】
ネットワークストレージシステムの不均一のリソースは更に、パラメータ選択を複雑にし得る。異なるリソースは、異なる利用レベルで混雑状態になり、このことは、パラメータが個別に設定されることに影響する。ネットワークは通常、その容量近くまで、増加する利用からの否定的な効果を殆ど示さず、よって、より高いｋの設定を求める。同様に、メモリは通常、殆どフルになるまで十分に稼動し、そのフルのポイントで、メモリ不足状態からフラグメンテーション及び同期失速の形態で、混乱状態を示す。一方、ディスクは通常、より小さいｋの値を要求する。なぜなら、個々の更なるＩ／Ｏは、全ての後続の（一部、前の）Ｉ／Ｏに干渉し、待ち行列の長さを増大させ潜在的にヘッドを外して動かすことにより、サービス時間を増大させる。
【００５５】
システム内の全てのリソースの累積コストは、最も高いコストの（最も混雑した）リソースにより、概算され得る。最も高いコストのリソースは、システムのボトルネックと十分に一致する。より複雑な合成コスト機能の背景にセオリがある間、これらの機能は本明細書で説明する経験則よりも実際には十分に稼動しないと考えられる。最大限の価格Ｐｍａｘは全てのサーバリソースに対して同じであり、価格設定機能の指数関数的性質は、付加の下のリソースが迅速に高価になることを保証するものである。
【００５６】
オーバーチューニング及び安定強制の効果を回避するために、コスト機能に２つの更なる制約を設定する。クライアントは、サーバよりも、それらのリソースのための最大限価格に僅かに高い値を割り当てる（Ｐｍａｘ＋ｅ）。クライアントとサーバの両方がオーバーロードしたときに、クライアントがオペレーションをサーバに送信することを、このことは保証する。実際に、サーバは、クライアントよりもより優雅にオーバーロードを処理する。更に、クライアントのＷＴＰは、最小限の価格Ｐｍｉｎよりも常に大きく、よって、クライアントもサーバも混雑しないならば、オペレーションはサーバにて実行される。
【００５７】
一つの実施形態では、サーバの価格がＣＡ−ＮＦＳクライアントのＷＴＰ（即ち「ビッド」）よりも低くＰｍｉｎよりも低いとき、ＣＡ−ＮＦＳクライアントは書き込みを加速する。サーバ価格がＰｍｉｎよりも高いがクライアントのＷＴＰよりも低いときは、クライアントはデフォルトのＮＦＳポリシ（ダブルバッファリング）に従い、クライアントのＷＴＰがサーバの価格よりも低いときには、書き込みを延期する。オペレーションに対するクライアントのＷＴＰがサーバ価格よりも低いとき、先読みはキャンセルされ、ＷＴＰがサーバ価格を超えるとき、より積極的に実行される。
【００５８】
Ｃ．実装
本明細書で説明するアプローチは、どの特定のタイプの管理されるリソースにも、限定されない。結果として、新しいリソースをシステムに付加することは容易である。或る実施形態では、以下の５つのリソースが管理される。サーバＣＰＵ、ネットワーク、サーバディスク、クライアントメモリ及びサーバメモリ、である。
【００５９】
システムモニタリングを介して所与の時点で正確にサーバＣＰＵの利用を確立することは容易である。
【００６０】
ネットワークの利用を決定する方法も、十分に知られている。しかしながら、ネットワーク帯域幅は、オークションを安定するために時間平均されていることが好ましい。平均化がなければ、ネットワークは、アイドル状態である０と、メッセージを送信するときの１との間で、変動する。価格は、同様に極端で一定しない。よって、そのような変動を回避するために、数百ミリ秒における平均ネットワーク帯域幅がモニタされればよい。
【００６１】
サーバディスクの利用を計測することは、不規則な応答時間のために、困難である。観測されたスループットは、利用を表す自然な方法であると思われ得るが、ワークロードに大きく依存するため、実際的でない。順次のワークロードは、ランダムのセットの要求よりも高いスループットを経験する。しかしながら、ディスクの利用は、後者のケースでより高くなり得る。というのは、ディスクは、ランダム要求の間で探索するのにヘッド時間を費やすからである
【００６２】
従って、ディスクの利用は、通常の、短時間インターバルにて、装置の発送待ち行列の長さをサンプリングすることにより、計測され得る。最大限のディスクの利用は、例えば、８０の未決の要求として定義され得る。未決のオペレーションの間で配置を特定することも、装置特定情報を用いることも、必要無い。ディスクヘッドシーク時間を調査することにより、ディスクの利用を計測することも可能である。
【００６３】
クライアント及びサーバのメモリ消費を価格設定することは能力が試され得ることである。というのは、メモリは、再利用のためのキャッシング、汚れたバッファページ、及び先読みなどの、多数の目的の多数の用途により用いられる、単体のリソースであるからである。キャッシュは、読み出しキャッシュページの有用な母集団を保存すべきである。潜在的に書き込みをバッファするために、より多くのメモリページをリザーブすることは、キャッシュヒットレートを減少させる。というのは、読み出しキャッシュの有効なサイズを減少させるからである。
【００６４】
読み出しは、呼び出しアプリケーションを妨げるので、クライアントキャッシュのヘッドヒットレートを最大限にすることが望ましい。そのことを達成するために、読み出しデータをキャッシュするのに積極的に用いられるＲＡＭの部分を特定し、そのキャッシュの有効性を特定することができる。現存のページのセットが高いキャッシュレートを生成するならば、若しくは、書き戻しをディスクにもたらした多数の汚れページがあるならば、メモリコストは増加する。
【００６５】
或る実施形態では、読み出しキャッシュページの効用を追跡するのに、並びに、書き込みが読み出しキャッシュパフォーマンスに干渉する故に書き込みがいつ加速され若しくは延期されるべきかを検知するのに、２つのゴーストキャッシュが用いられる。特に、ゴーストミスキャッシュ内では、キャッシュから最近追い立てられたブロック上にメタデータ情報を保持する。ゴーストミスキャッシュは、実際のキャッシュ内で提供され得る、より大きいセットのブロックの履歴を記録する。ゴーストヒットキャッシュは、より小さい下層メモリのコンテンツを含む。ゴーストヒットキャッシュは、書き込みバッファページ及び最新／頻用の読み出しキャッシュページの全てに関する情報を含む。ゴーストヒットキャッシュ外部のメモリエリアは、最小の最新／頻用の読み出しキャッシュページを含む。例えば、システムが最大限数の汚れたバッファページを含むならば、全ての読み出しキャッシュヒットはこのリザーブされたエリア内で発生する。ゴーストキャッシュは特定の追い立てのポリシを当てにしない。最新の追い立てられたページを追跡するのみである。ゴーストキャッシュの利用に関する詳細な説明は、Ａ．Ｂａｔｓａｋｉｓらによる「“ＡＷＯＬ：Ａｎ  ａｄａｐｔｉｖｅ  ｗｒｉｔｅ  ｏｐｔｉｍｉｚａｔｉｏｎｓ  ｉｎ  ｌａｙｅｒ”，Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｆｉｌｅ  ａｎｄ  Ｓｔｏｒａｇｅ  Ｔｅｃｈｎｏｌｏｇｉｅｓ（２００８）」（非特許文献１）に示される。
【００６６】
従って、ＣＡ−ＮＦＳは、予測されるキャッシュヒットレートを計算し、よって有効なメモリ利用を計算するためにゴーストキャッシュ間の読み出し要求の分配を利用することにより、モニタすべき仮想リソースを定義できる。特に、メモリｕｍｅｍの価格は、以下のように計算され得る。
ｕｍｅｍ＝（Ｃ（ｔ）−ＧＨ（ｔ）＋ＧＭ（ｔ））／ｒｅａｄ（ｔ）
上式にて、Ｃ（ｔ）、ＧＨ（ｔ）及びＧＭ（ｔ）は、ページキャッシュ、ゴーストヒットキャッシュ、及びゴーストミスキャッシュ内のヒット数であり、ｒｅａｄ（ｔ）は、最後の時間インターバルの間のトータルの読み出し要求の数である。（Ｃ（ｔ）−ＧＨ（ｔ）＋ＧＭ（ｔ））の量は、リザーブされたエリア内に落ち、最近追い立てられたページ内に落ちた、読み出し要求をカウントする。これら領域内に落ちる読み出し要求の大部分は、クライアントがより多くの読み出しキャッシングから利益を得、よって書き込みを延期することが特別の利益ではない、ということを示す。
【００６７】
クライアントの先読みの有効性に対して、先読みの予測された効率をキャプチャする仮想リソースを定義することも可能である。先読みの信頼性の基準は、Ｅ．Ａｎｄｅｒｓｏｎらによる「“Ｑｕｉｃｋｌｙ  ｆｉｎｄｉｎｇ  ｎｅａｒ−ｏｐｔｉｍａｌ  ｓｔｏｒａｇｅ  ｄｅｓｉｇｎｓ”，ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ（２００５）」（非特許文献２）に記載されるように、Ｌｉｎｕｘカーネル内の適応先読みロジックに基づけばよい。信頼性は、特定のファイルに対してアクセスされるページのトータル数により除される、先読みページへのアクセスの比率として定義され得る。高い値に対しては、システムは、先読みをより積極的に実行する。低い値に対しては、カーネルは、次の先読みを積極的に行わない。
【００６８】
ＣＡ−ＮＦＳは、現存のＬｉｎｕｘのＮＦＳクライアント及びサーバを修正することにより、実装され得る。特に、価格設定情報の交換のためのサポートが加えられ、ＮＦＳ書き込みオペレーションは、加速及び延期のためのサポートを加えるように修正される。Ｌｉｎｕｘメモリマネジャが、メモリアクセス及び先読み経験則の分類をサポートするようにも修正される。
【００６９】
ＣＡ−ＮＦＳサーバは、価格情報をクライアントに広告し、該クライアントはスケジューリングロジックを実装する。この価格設定情報をクライアントに伝達する一つの可能な方法は、ＮＦＳバージョン３ＦＳＳＴＡＴプロトコルオペレーションに優先することである。通常、ＦＳＳＴＡＴは、ファイルシステムの全体サイズやフリースペースの量などの、揮発性ファイルシステム状態情報を検索する。クライアントＦＳＳＴＡＴ要求では、サーバは、そのモニタされたリソースの利用に基づいてオペレーショの価格をエンコードする。本明細書に記載する技術の一つの実施形態では、サーバは、リソースの利用の統計を計算し毎秒に１度そのローカルコスト情報を更新する。他の実施形態では、異なる時間インターバル若しくは基準が用いられ得る。ＦＳＳＴＡＴは、サーバ、ネットワーク、若しくはクライアントアプリケーションに、実際上オーバヘッドを付加しない軽量オペレーションである。
【００７０】
一つの実施形態では、１０個のＲＥＡＤ（読み出し）若しくは書き出し（ＷＲＩＴＥ）要求ごとに、若しくは、前のクエリからの時間インターバルが１０秒以上であるときに、個々のクライアントは、価格設定情報要求をサーバに送信する。他の実施形態では、異なる時間インターバル若しくは基準が用いられ得る。ＣＡ−ＮＦＳの一部として、そのリソースの利用が急激に増加するときにコールバックを介してアクティブのクライアントにサーバが通知するようにさせることが、望ましい。
【００７１】
価格交換のこの方法により、ＣＡ−ＮＦＳ及び通常のＮＦＳクライアント及びサーバは、単一の配置で共存できる。
【００７２】
前述のＣＡ−ＮＦＳの方法を、図４Ａ乃至図７を参照して更に説明する。図４Ａ及び図４Ｂは、ＣＡ−ＮＦＳの一部としてストレージサーバ２内部で実行され得る２つの独立のプロセスを示す。最初に図４Ａを参照すると、サーバは、４０１にてその現下のリソースの利用の統計を計算し、４０２にてそれらリソースに対する価格（コスト）を計算する。このプロセスは、例えば、所定の時間インターバルにて繰り返す。図４Ｂを参照すると、サーバは、時々、４１１にてクライアントから価格設定情報要求（例えば、ＦＳＳＴＡＴ要求）を受信する。該要求に応答して、サーバは、４１２にてその現下の価格Ｐを、要求を送ったクライアントに送信する。他の実施形態では、サーバは、特定のイベントに応答して（例えば、価格の計算に応答して）、若しくは周期的に、その価格Ｐを全てのクライアントに単にブロードキャストし得る。或る実施形態では、図４Ａ及び図４Ｂのプロセスは、サーバ内のＣＡ−ＮＦＳ層により実行される。
【００７３】
図５は、ＣＡ−ＮＦＳを実装するクライアント１内で実行され得る非同期書き込みプロセスの例を示す。或る実施形態では、図５のプロセスは、オペレーション５０１以外は、クライアント内のＣＡ−ＮＦＳ層により実行される。５０１では、クライアント上のユーザアプリケーションは、５０１にて非同期書き込み要求を生成する。次に、５０２にて、クライアントは、クライアントの現下のリソースの利用に基づいて、要求されたオペレーションに対するビッド、即ち、ＷＴＰの値を判別する。この値を計算する方法は、上述している。ある実施形態では、この値の計算は、継続的に若しくは周期的に、又は、書き込み要求の生成以外のイベントに応答して、実行され得る。
【００７４】
５０３にて、クライアントは、クライアントの計算したＷＴＰを、（例えば、価格設定情報要求に応答して）サーバからより早くに受信されたと仮定される、サーバの計算した価格Ｐと比較する。価格ＰがＷＴＰより大きいならば、５０８にてクライアントは、更に後で述べるように、書き込み要求を延期する。価格がＷＴＰ以下であれば、プロセスは５０４に進み、５０４ではクライアントは書き込み要求をサーバに送信する。次に、クライアントは、サーバの計算した価格Ｐを最小限価格Ｐｍｉｎと比較する。現下の価格Ｐが、最小限価格Ｐｍｉｎ以上であるならば、５０６にてクライアントは、従来のＮＦＳ書き込みプロセスを実行する。即ち、クライアントは、（通常の基準に基づいて）適切な時点にてＮＦＳコミットコマンドをサーバに送る。一方で、現下の価格Ｐが最小限の価格Ｐｍｉｎより小さければ、５０７にてクライアントは、即座にコミットコマンドをサーバに送ることにより、書き込みオペレーションを加速する。
【００７５】
上述のように、書き込み要求は、オペレーション５０８にて延期され得る。従って、上述のオペレーションと並行して、プロセスの別の分岐が実行され、そこでは５０９にてクライアントは、（周期的に、若しくは特定のイベントに応答して）延期された非同期の書き込みがあるかどうか判別する。一つ若しくはそれ以上の書き込み要求が延期されると、プロセスのこの分岐は、個々の延期された書き込みに対して、上述のように、オペレーション５０２からの上述のプロセスを起動する。
【００７６】
図６は、ＣＡ−ＮＦＳを実装するクライアント１内で実行され得る非同期読み出し（先読み）プロセスの例を示す。或る実施形態では、図６のプロセスは、オペレーション６０１以外は、クライアント内のＣＡ−ＮＦＳ層により実行される。最初、ユーザアプリケーションは、６０１にて先読み要求を生成する。次に、６０２にて、クライアントは、その現下のリソースの利用に基づいてオペレーションに対するＷＴＰの値を判別する。クライアントは、６０３にてＷＴＰの値を最新のサーバの計算した価格Ｐと比較する。ＷＴＰが価格Ｐ以上であれば、クライアントは、６０４にて先読み要求をサーバに送信する。そうでなければ、クライアントは、先読み要求をサーバに送ること無く、６０５にて先読み要求を単に放棄する。
【００７７】
図７は、クライアントが、サーバから更新された価格Ｐを要求できるプロセスの例を示す。或る実施形態では、図６のプロセスは、クライアント内のＣＡ−ＮＦＳ層により実行される。最初、７０１にてクライアントは、クライアントが最後の価格設定情報要求をサーバに送信して以来、所定数Ｘの読み出し若しくは書き込み要求がサーバに送られたかどうかを、判別する。７０１の成果が肯定的であると、クライアントは、７０２にて新しい価格設定情報要求をサーバに送信する。上述のように、サーバが、その最も現下の価格Ｐを、要求したクライアントに送信することにより、価格設定情報要求に応答する。プロセスは続いて、７０１にループバックする。
【００７８】
７０１の成果が否定的であると、７０３にてクライアントは、最後の価格設定情報要求がサーバに送信されて以来、所定のＹ秒が経過したかどうかを判別する。７０３の成果が肯定的ならば、クライアントは、７０２にて新しい価格設定情報要求をサーバに送信し、プロセスは７０１にループバックする。７０３の成果が否定的であるならば、新しい価格設定情報要求を送信すること無く、プロセスは７０３から直接７０１にロープバックする。
【００７９】
図８は、処理システム８０のアークテクチャの例を示す高レベルのブロック図であり、該処理システム８０は、ストレージサーバ２若しくはどのクライアント１も、表し得るものである。処理システム８０は、インターコネクト８３に繋がれた一つ若しくはそれ以上のプロセッサ８１およびメモリ８２を含む。図８に示すインターコネクト８３は、適切なブリッジ、アダプタ若しくはコントローラにより接続された、一つ若しくはそれ以上の独立の物理的バス、ポイントツーポイント接続、若しくは両方を表す抽象図である。従って、インターコネクト８３は、例えば、システムバス、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）ファミリバス、ハイパートランスポート若しくは業界標準アーキテクチャ（ＩＳＡ）バス、小型コンピュータ用周辺機器インターフェース（ＳＣＳＩ）、ユニバーサルシリアルバス（ＵＳＢ）、ＩＩＣ（Ｉ２Ｃ）バス、若しくは、「ファイヤワイヤ」とも称される電気電子技術者協会（ＩＥＥＥ）スタンダード１３９４バスを、含み得る。
【００８０】
プロセッサ８１は、処理システム８０の中央処理装置（ＣＰＵ）であり、処理システム８０の全体オペレーションをコントロールする。或る実施形態では、プロセッサ８１は、メモリ８２内に格納されたソフトウエア若しくはファームウエアを実行することにより、このことを遂行する。プロセッサ８１は、一つ若しくはそれ以上のプログラム可能の汎用若しくは専用マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、プログラム可能のコントローラ、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理回路（ＰＬＤ）、トラステッドプラットフォームモジュール（ＴＰＭ）、若しくはこれら装置の組み合わせであればよく、又は、これら装置若しくは組み合わせを含めばよい。
【００８１】
メモリ８２は、処理システム８０のメインメモリであり、若しくは、処理システム８０のメインメモリを含む。メモリ８２は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、若しくはこれらの装置の組み合わせの、どの形態も表す。使用時には、メモリ８２は、とりわけ、例えば、図２にスタックして示されるストレージオペレーティングシステム２４若しくはクライアントソフトウエア２０を具体化するコード８７を含み得る。
【００８２】
更に、ネットワークアダプタ８４及びＩ／Ｏデバイス８５が、インターコネクト８３を介してプロセッサ８１に繋がる。ネットワークアダプタ８４は、インターコネクト８３によってリモートデバイスと通信する能力を処理システムに与えるものであり、例えば、イーサネット（登録商標）アダプタやファイバチャネルアダプタであればよい。ストレージサーバ２の場合、Ｉ／Ｏデバイス８５は、ストレージコントローラ２がストレージサブシステム４にアクセスできるストレージアダプタであればよく、例えば、ファイバチャネルアダプタやスカジアダプタであればよい。クライアント１の場合、Ｉ／Ｏデバイス８５は、例えば、ディスプレイデバイス、キーボード、マウス、オーディオスピーカ、マイクロホンなどであればよい。
【００８３】
上記にて説明した技術は、プログラム可能の回路、若しくは専用ハードワイヤード回路、又はそれらの組み合わせと共に、ソフトウエア及び／又はファームウエア内に実装され得る。専用ハードワイヤード回路は、例えば、一つ若しくはそれ以上の特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理回路（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の形態であればよい。
【００８４】
本明細書に記載の技術を実装するソフトウエア若しくはファームウエアは、機械可読媒体に格納可能であり、一つ若しくはそれ以上の汎用若しくは専用のプログラム可能マイクロプロセッサにより実行され得る。本明細書に記載される「機械可読媒体」は、機械によりアクセス可能な形態の情報を格納しうるメカニズムを含む（機械は、例えば、コンピュータ、ネットワークデバイス、セルラーホン、パーソナルデジタルアシスタント（ＰＤＡ）、製造ツール、一つ若しくはそれ以上のプロセッサを伴うデバイスなどであればよい。）。例えば、機械可読媒体は、記録可能／記録不可能メディア（例えば、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなど）を含む。
【００８５】
特定の例示の実施形態を参照して、本発明を説明したが、本発明は記載の実施形態に限定されるものではなく、添付の請求項の精神及び範囲内での変更及び修正と共に実施され得る、従って、明細書及び図面は、限定的意味ではなく例示的意味で考慮されるべきものである。
【符号の説明】
【００８６】
１・・・クライアント、２・・・ストレージサーバ、４・・・ストレージサブシステム、２０・・・クライアント、２１・・・ユーザ、２３・・・ネットワークアクセス、２４・・・サーバ、２５・・・ストレージマネジャ、２７・・・ネットワークアクセス、２８・・・ＲＡＩＤ、２９・・・ストレージドライバ、８１・・・プロセッサ、８４・・・ネットワークアダプタ。
【図１】
2012503834.tif 000003
【図２】
2012503834.tif 000004
【図３】
2012503834.tif 000005
【図４Ａ】
2012503834.tif 000006
【図４Ｂ】
2012503834.tif 000007
【図５】
2012503834.tif 000008
【図６】
2012503834.tif 000009
【図７】
2012503834.tif 000010
【図８】
2012503834.tif 000011
【国際調査報告】
2012503834.tif 000012
2012503834.tif 000013