(57)【特許請求の範囲】
【請求項１】
１つ以上のプロセッサによって実行され、分散型記憶システムの性能メトリックを測定するためのコンピュータ実装方法であって、
クライアントによって前記分散型記憶システムに送信されたリクエストを識別するステップを含み、各リクエストは、リクエストパラメータを含み、
前記識別されたリクエストに基づいて、プローブリクエストを生成するステップを含み、前記プローブリクエストは、前記識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含み、
ネットワークを介して、前記生成されたプローブリクエストを前記分散型記憶システムに送信するステップを含み、前記分散型記憶システムは、前記プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成され、
前記分散型記憶システムから前記プローブリクエストに対する応答を受信するステップと、
前記受信した応答に基づいて、前記分散型記憶システムの現在の性能状態を測定する少なくとも１つの性能メトリック値を出力するステップとを含む、方法。
【請求項２】
前記プローブリクエストを生成するステップは、前記識別されたリクエストの数よりも少ない数のプローブリクエストを生成することを含む、請求項１に記載の方法。
【請求項３】
前記リクエストパラメータは、リクエスト種類、並行処理パラメータ、および前記リクエストに関連する前記分散型記憶システム内のデータを示すリクエスト目標を含む、請求項１または請求項２に記載の方法。
【請求項４】
前記プローブリクエストを生成するステップは、前記識別された、特定のリクエスト種類、特定の並行処理パラメータ、および特定のリクエスト目標を含むリクエストの数に比例する数の、前記特定のリクエスト種類、前記特定の並行処理パラメータおよび前記特定のリクエスト目標を含むプローブリクエストを生成することを含む、請求項３に記載の方法。
【請求項５】
前記少なくとも１つの性能メトリックを出力するステップは、特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、前記分散型記憶システムの前記特定のデータグループの前記少なくとも１つの性能メトリックの加重平均を出力することを含む、請求項３に記載の方法。
【請求項６】
前記少なくとも１つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、および内部ネットワーク待ち時間のうち、少なくとも１つを含む、請求項１〜請求項５のいずれか１項に記載の方法。
【請求項７】
前記分散型記憶システムは、前記プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、前記クライアントにアクセス可能なデータに対して読み書きを行わないように構成される、請求項１〜請求項６のいずれか１項に記載の方法。
【請求項８】
前記分散型記憶システム内のデータは、前記クライアントにアクセスできないプローブフィールドを含み、
前記分散型記憶システムは、前記プローブリクエストの受信に応答して、前記プローブリクエストのリクエスト目標に関連する前記プローブフィールドにアクセスするように構成される、請求項７に記載の方法。
【請求項９】
前記少なくとも１つの性能メトリックを、前記分散型記憶システムの前記少なくとも１つの性能メトリックの目標値を含むサービスレベル目標（ＳＬＯ）と比較するステップをさらに含む、請求項１〜請求項８のいずれか１項に記載の方法。
【請求項１０】
前記少なくとも１つの性能メトリックが前記目標値を満たさないことを判断するステップと、
前記少なくとも１つの性能メトリックが前記目標値を満たさないことを示す指示を出力するステップとをさらに含む、請求項９に記載の方法。
【請求項１１】
前記サービスレベル目標は、前記分散型記憶システムのサービスレベルアグリーメント（ＳＬＡ）内に含まれる、請求項９に記載の方法。
【請求項１２】
前記プローブリクエストは、前記識別されたリクエストの統計表現である、請求項１〜請求項１１のいずれか１項に記載の方法。
【請求項１３】
実行されると、少なくとも１つのプロセッサに請求項１〜請求項１２のいずれか１項に記載の方法を実現させる命令を含む、コンピュータプログラム。
【請求項１４】
分散型記憶システムの性能メトリックを測定するためのシステムであって、
データを格納するためのメモリと、
前記メモリにアクセスし且つ以下の動作を実行するように動作可能な１つ以上のプロセッサとを備え、これらの動作は、
クライアントによって前記分散型記憶システムに送信されたリクエストを識別する動作を含み、各リクエストは、リクエストパラメータを含み、
前記識別されたリクエストに基づいて、プローブリクエストを生成する動作を含み、前記プローブリクエストは、前記識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含み、
ネットワークを介して、前記生成されたプローブリクエストを前記分散型記憶システムに送信する動作を含み、前記分散型記憶システムは、前記プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成され、
前記分散型記憶システムから前記プローブリクエストに対する応答を受信する動作と、
前記受信した応答に基づいて、前記分散型記憶システムの現在の性能状態を測定する少なくとも１つの性能メトリック値を出力する動作とを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本明細書は、一般的には、分散型記憶システムの性能監視に関する。
【背景技術】
【０００２】
分散型システムにおいて、様々な性能メトリックを追跡することによって、システムの全体的な健全性を判定することができる。例えば、システムがクライアントリクエストの応答にかかる時間（すなわち、待ち時間）を監視することによって、システムが適時に応答していることを確認することができる。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
一般的には、本明細書に記載された主題の１つの態様は、システムとして具体化されてもよく、データ処理装置によって実行される方法として具体化されてもよい。この方法は、クライアントによって分散型記憶システムに送信されたリクエストを識別するステップを含み、各リクエストは、リクエストパラメータを含む。方法は、識別されたリクエストに基づいて、プローブリクエストを生成するステップを含み、プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含む。方法は、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信するステップを含み、分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成される。方法は、分散型記憶システムからプローブリクエストに対する応答を受信するステップと、受信した応答に基づいて、分散型記憶システムの現在の性能状態を測定する少なくとも１つの性能メトリック値を出力するステップとを含む。
【０００４】
本明細書に記載される主題の１つ以上の実施形態の詳細は、添付の図面および以下の説明に記載されている。主題の他の特徴、態様および潜在的な利点は、説明、図面および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００５】
【図１】分散型記憶システムの性能を監視するための例示的な環境を示す図である。
【図２】分散型記憶システムのクライアントリクエストを処理する例示的なプロセスを示すスイムレーン図である。
【図３】分散型記憶システムの性能を監視するための例示的なプロセスを示すスイムレーン図である。
【図４】分散型記憶システムの性能を監視するための例示的なプロセスを示フローチャートである。
【図５】本明細書に記載のシステムおよび方法を実施するために使用され得るコンピューティング装置を示す図である。
【発明を実施するための形態】
【０００６】
詳細な説明
様々な図面において、同様の参照番号および記号は、同様の要素を示す。
【０００７】
分散型記憶システムにおいて、多くの要因がシステム性能に影響を与える可能性がある。例えば、クライアントは、インターネットなどのパブリックネットワークを介して、システムにアクセスすることができる。この場合、各クライアントの観点から、パブリックネットワークのいずれかの箇所の性能上の問題が分散型記憶システムの性能に影響を与え得る。また、クライアントの観点から、分散型記憶システム自身の問題、例えば、ハードウェア障害、内部ネットワーク障害、ソフトウェアバグなども、システムの性能に影響を与え得る。
【０００８】
場合によって、分散型記憶システムとクライアントとの間の関係は、サービスレベルアグリーメント（ＳＬＡ）によって制限される。一般的には、ＳＬＡは、分散型記憶システムのプロバイダがクライアントリクエストにサービスを提供するときに満たすべき性能目標を含む。例えば、ＳＬＡは、分散型記憶システムのプロバイダがリクエストを処理する際に１０ｍｓ以下の待ち時間を保証することを指定することができる。ＳＬＡは、性能目標を満たしていない場合に取らせる措置、例えば、プロバイダがクライアントに払い戻す措置を含み得る。このような契約は、分散型記憶システムのプロバイダが、管理範囲以外の状況（例えば、パブリックネットワークの停止、クライアントネットワークの停止、クライアント装置の問題）によって生じた性能問題に対して責任を負わないという条項を含み得る。
【０００９】
ＳＬＡが定められていなくても、分散型記憶システムのプロバイダは、クライアントのリクエストにサービスを提供すると共に、システムの性能に影響を与えない非侵害的な方法で、システムの健全性を監視したいことがある。
【００１０】
したがって、本開示は、クライアントのリクエストをプロファイリングすることによって、分散データベースシステムの性能を監視するための技術を説明する。１つの例示的な方法は、クライアントによって分散型記憶システムに送信されたリクエストを識別することを含む。リクエストは、例えば、リクエスト種類、並行処理パラメータ、およびリクエストに関連するデータを示すリクエスト目標などのリクエストパラメータを含むことができる。場合によって、リクエストは、分散型記憶システムのクライアントから送信された情報に基づいて識別されてもよい。識別されたリクエストに基づいて、プローブリクエストを生成する。プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含む。生成されたプローブリクエストは、分散型記憶システムに送信される。分散型記憶システムは、各プローブリクエストにサービスを提供するための準備を用意することによって応答するが、リクエスト目標によって示されたデータに実際にアクセスしない。例えば、分散型記憶システムは、リクエスト種類が「読み取り」であるプローブリクエストに応答して、リクエスト目標によって示されたデータを読み取るための準備（例えば、データの位置付け、リクエストの行列化）を行う際に、クライアントがアクセスできないデータフィールドを読み取る。これによって、クライアントリクエストの通常処理を妨げることなく、システムを徹底的にプロファイリングすることができる。分散型記憶システムからプローブリクエストに対する応答を受信すると、性能メトリックを計算することができる。
【００１１】
場合によって、分散型記憶システムの性能を単独に測定するために、分散型記憶システムと同様の場所（例えば、同様の内部ネットワーク）に配置されたコンピューティング装置を用いて、プロセスを実行することができる。これによって、プロバイダの管理範囲以外の問題（例えば、パブリックネットワークの停止）は、プロセスによって示されない。
【００１２】
本明細書に記載の技術は、以下の利点を提供することができる。本発明の技術は、実際のクライアントリクエストをプロファイリングすることによりプローブリクエストを生成することによって、分散型記憶システムによってサービスを提供しているクライアントリクエストの近似値を用いて、分散型記憶システムを監視することができる。また、クライアントにアクセス可能なデータにアクセスせず、分散型記憶システムの健全性を監視することによって、実際のクライアントリクエストに対する性能の影響を最小限に抑えることができる。さらに、分散型記憶システムをシステムプロバイダの管理範囲以外の他の要因から分離して監視することによって、システムの真の性能をより正確に考察することができる。システムの真の性能は、例えば、クライアントが分散型記憶システムからサービスをリクエストする際に、待ち時間の観点から認識した端末間性能を含む。このような情報は、ＳＬＡの遵守を判断する時に有用である。また、本発明の技術は、クライアントリクエストの配布に関する統計情報（例えば、特定のデータ項目が他のデータ項目よりも普及しているか否か）を提供することができる。これによって、プロバイダおよびクライアントは、（例えば、ホットスポットを回避するために）ワークロードを調整すべきか否かを理解することができる。また、本発明の技術は、分散型記憶システムの様々な性質、例えば、キュー時間、実際の処理時間、サーバの現地時間、サーバのＣＰＵおよびメモリの現在使用率、キューの長さおよび他のメトリックをプロファイリングすることができる。さらに、本発明の技術によって、分散型記憶システムのプロバイダがプロファイリングを完全に管理することができるため、ＳＬＡ／ＳＬＯ遵守をより容易に管理することができる。
【００１３】
図１は、分散型データベースシステムの性能を監視するための例示的な環境を示す図である。図示のように、環境１００は、分散型記憶システム１１０を含み、分散型記憶システム１１０は、複数のデータグループ１１４を各々管理するための複数のサーバ１１２を含む。動作中、クライアント１２０は、リクエスト１２２を分散型記憶システム１１０に送信する。分散型記憶システム１１０は、リクエスト１２２を処理し、応答１２４をクライアント１２０に送信する。クライアント１２０は、リクエスト情報１２６をプローバ１３０に送信する。リクエスト情報１２６は、特定のクライアント１２０によって分散型記憶システム１１０に送信されたリクエストに関する情報、例えば、リクエスト種類、リクエストパラメータおよび各リクエストのリクエスト目標を含む。プローバ１３０は、リクエスト情報１２６を受信し、リクエスト情報１２６に基づいて、プローブリクエスト１３２を分散型記憶システム１１０に送信する。分散型記憶システム１１０は、プローブリクエストを処理し、応答１３４をプローバ１３０に送信する。プローバ１３０は、応答を解析することによって、分散型記憶システム１１０、分散型記憶システム１１０内の特定のサーバ１１２または分散型記憶システム１１０内の特定のデータグループ１１４の現在性能、もしくは分散型記憶システム１１０内の他の要素の現在性能を示す性能メトリック１４０を出力する。
【００１４】
分散型記憶システム１１０は、ローカルまたはプライベートネットワーク（図示せず）によって接続された複数のサーバ１１２を備えた分散システムであってもよい。一部の場合に、ローカルまたはプライベートネットワークは、単一の施設に完全に配置され、他の場合に、ローカルまたはプライベートネットワークは、広域なエリアをカバーし、複数の施設を相互に接続することができる。サーバ１１２は、互いに通信することによって、クライアント１２０によってリクエストしたデータを記憶、検索および更新することによって、クライアントリクエスト１２２にサービスを提供することができる。場合によって、分散型記憶システム１１０は、分散型データベース、分散型ファイルシステム、または他の種類の分散型記憶装置を含むことができる。また、分散型記憶システム１１０は、システム内のサーバ１１２の動作を管理および構成するための要素を含むことができる。
【００１５】
分散型記憶システム１１０内の各サーバ１１２は、プロセッサと、分散型記憶システム１１０によって管理されるデータを格納するためのハードドライブなどの記憶装置とを含むコンピューティング装置であってもよい。場合によって、配信ポリシーに従って、データを異なるサーバ１１２に配信することができる。配信ポリシーは、例えば、冗長性を維持するために、分散型記憶システム１１０内の特定のテーブルまたはファイルを特定の数のサーバ１１２上に格納するように指定することができる。また、配信ポリシーは、地理的冗長性を維持するために、データを複数の異なる場所に格納するように指定することができる。場合によって、サーバ１１２は、直接に接続された永続記憶装置の代わりに、分散型ファイルシステムなどの外部記憶装置または外部記憶システムを利用することができる。
【００１６】
各々のサーバ１１２は、１つ以上のデータグループ１１４を管理する。データグループ１１４は、分散型記憶システム１１０によって管理されている全てのデータセットの一部を含むことができる。各データグループ１１４は、分散型データベースのテーブルの一部からのデータ、分散型ファイルシステムからの１つ以上のファイル、または分散型記憶システム１１０内の他のデータの区分を表すまたは含むことができる。動作中、分散型記憶システム１１０は、リクエスト目標に基づいて、各々のリクエスト１２２およびプローブリクエスト１３２を解析することによって、リクエストまたはプローブリクエストに関連する特定のデータグループ１１４を決定する。その後、分散型記憶システムは、特定のデータグループ１１４を管理する特定のサーバ１１２に、リクエストまたはプローブリクエストをルーティングすることができる。
【００１７】
場合によって、クライアント１２０は、分散型記憶システム１１０のユーザであってもよい。クライアント１２０は、分散型記憶システム１１０を用いてデータを格納および検索するエンティティ（例えば、ウェブサイトまたはアプリケーション）であってもよい。各クライアント１２０は、分散型記憶システム１１０に送信した各リクエスト１２２に関する情報を格納することができる。場合によって、各クライアント１２０は、分散型記憶システム１１０に送信したリクエストの全体のレコードを格納することができる。各クライアントは、分散型記憶システム１１０に送信したリクエスト１２２の概要、例えば、同様のセットのリクエストパラメータと共に送信したリクエストのカウント数を格納することができる。例えば、クライアント１２０は、「読み取り」というリクエスト種類、「無効」という並行処理パラメータ、および「顧客」という名前のテーブルのリクエスト目標を有する５つのリクエストが送信されたことを記録することができる。このリクエスト情報１２６は、例えば、各クライアント１２０によって定期的にプローバ１３０に送信されてもよい。このリクエスト情報１２６は、例えば、インターネットのようなパブリックネットワークを介して、クライアント１２０によってプローバ１３０に送信されてもよい。場合によって、リクエスト情報１２６は、クライアント上で実行し、クライアントによって送信されたリクエストに関する情報を収集するように構成されたソフトウェアプロセスまたはライブラリによって、収集されてもよい。場合によって、ソフトウェアライブラリは、分散型記憶システムのプロバイダによって提供されてもよい。
【００１８】
プローバ１３０は、クライアント１２０から受信したリクエスト情報を解析し、リクエスト情報１２６によって記述されたリクエストの統計近似値を表すプローブプロファイルを生成することができる。例えば、プローバ１３０は、１万個の「読み取り」種類のリクエストおよび５千個の「書き込み」種類のリクエストを含むリクエスト情報１２６を解析し、最初のリクエスト１２２を処理する分散システムの性能をエミュレートおよび決定するために、１千個の「読み取り」種類のプローブリクエストおよび５百個の「書き込み」種類のプローブリクエストを送信すべきであることを示すプローブプロファイルを生成することができる。いくつかの場合において、プローバ１３０は、クライアント１２０によって送信されたリクエスト１２２を表すのに十分であり、分散型記憶システム１１０の性能に与える影響を最小限に抑える最小数のプローブリクエスト１３２を選択的に生成することができる。
【００１９】
プローバ１３０は、プローブプロファイルに基づいて、プローブリクエスト１３２を分散型記憶システム１１０に送信する。場合によって、プローブリクエスト１３２は、クライアント１２０によって送信されたリクエスト１２２と同様のフォーマットを有してもよいが、クライアント１２０からのリクエストではなくプローブリクエストであることを示す指標を含んでもよい。分散型記憶システム１１０は、クライアントリクエスト１２２と同様に、プローブリクエスト１３２を受信および処理するが、この場合、分散型記憶システムは、各プローブリクエストのリクエスト目標によって示された実際のデータにアクセスしない。その代わりに、場合によって、分散型記憶システム１１０は、プローバ１３０に特別に割り当てられたデータ、例えば、特別のフィールド、コラム、メタデータ値、またはリクエスト目標によって示されたデータに関連する他の値にアクセスすることができる。このようにして、クライアントからのリクエスト１２２の処理を妨げることなく、分散型記憶システム１１０のいくつかの特徴の性能をプロファイリングすることができる。例えば、リクエストされたデータをロックさせるための並行処理パラメータを含むプローブリクエストは、クライアントからのリクエストの処理を妨げないように、分散型記憶システム１１０に指示して、プローバ特有データにロックを掛けることができる。このような機能によって、クライアントリクエストの処理に影響を与えることなく、分散型記憶システム１１０の同時性特徴をプロファイリングすることができる。
【００２０】
図示のように、プローバ１３０は、送信したプローブリクエスト１３２および受信した応答１３４に基づいて、１つ以上の性能メトリック１４０を生成する。場合によって、性能メトリックは、分散型記憶システム１１０がプローブリクエストに応答する平均時間として測定されたシステムの全体的な待ち時間を含むことができる。また、性能メトリックは、失敗したプローブリクエストと成功したプローブリクエストとの比率として測定された有効率を含むことができる。さらに、性能メトリックは、ローカルネットワーク待ち時間、サーバのキュー待ち時間（例えば、各プローブリクエスト１３２が処理される前にサーバで待機する平均時間）、ディスクまたはメモリ待ち時間、または他の性能メトリックを含むことができる。
【００２１】
図２は、分散型記憶システムのクライアントリクエストを処理する例示的なプロセスを示すスイムレーン図である。ステップ２０５では、クライアント１２０は、リクエストを分散型記憶システム１１０に送信する。ステップ２１０では、分散型記憶システム１１０は、リクエストにサービスを提供するための準備を用意する。分散型記憶システム１１０により行われた準備は、例えば、リクエストの構文解析、リクエストしたデータを格納するための特定のサーバの決定、特定のサーバにリクエストの送信、特定のリクエストを達成するための実行計画の生成（例えば、リクエストを実現するために、アクセスするテーブルおよびデータを操作する方法の決定）、または他の操作を含むことができる。ステップ２１５では、分散型記憶システム１１０は、各リクエストによって示されたデータにアクセスする。この操作は、（以下に説明するように）分散型記憶システム１１０がプローブリクエストを処理するときに、リクエストによって示されたデータにアクセスすることができないこととは対照的である。ステップ２２０では、分散型記憶システム１１０は、リクエストに対する応答をクライアントに送信する。例えば、クライアントが分散型記憶システム１１０から特定のデータを読み取むことをリクエストした場合、応答は、リクエストされたデータを含むことができる。
【００２２】
図３は、分散型データベースシステムの性能を監視するための例示的なプロセスを示すスイムレーン図である。ステップ３０５では、クライアント１２０は、リクエストを分散型記憶システム１１０に送信する。ステップ３１０では、分散型記憶システム１１０は、リクエストに対する応答をクライアント１２０に送信する。ステップ３１５では、クライアント１２０は、送信されたリクエストに関する情報をプローバ１３０に提供する。ステップ３２０では、プローバ１３０は、クライアントから送信されたリクエストに関する情報に基づいて、プローブプロファイルを生成する。場合によって、プローバは、複数のクライアントから送信されたリクエストに関する情報を受信し、受信した情報に基づいて、プローブプロファイルを生成することができる。ステップ３２５では、プローバ１３０は、プローブプロファイルに基づいて、プローブリクエストを分散型記憶システム１１０に送信する。ステップ３３０では、分散型記憶システム１１０は、各リクエストにサービスを提供するための準備を用意する。ステップ３３５では、分散型記憶システム１１０は、各プローブリクエストのリクエスト目標によって示されたデータに関連するプローブ特有メタデータにアクセスする。ステップ３４０では、分散型記憶システム１１０は、プローブリクエストに対する応答をプローバ１３０に送信する。ステップ３４５では、プローバは、プローブリクエストに対する応答に基づいて、性能メトリックを計算する。
【００２３】
図４は、分散型データベースシステムの性能を監視するための例示的なプロセスを示フローチャートである。ステップ４０５では、クライアントによって分散型記憶システムに送信されたリクエストを識別する。各リクエストは、リクエストパラメータを含む。場合によって、リクエストパラメータは、リクエスト種類、並行処理パラメータ、およびリクエストに関連する分散型記憶システム内のデータを示すリクエスト目標を含む。
【００２４】
ステップ４１０では、識別されたリクエストに基づいて、プローブリクエストを生成する。プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含む。場合によって、プローブリクエストの生成は、識別されたリクエストの数よりも少ない数のプローブリクエストを生成することを含む。プローブリクエストの生成は、識別された（特定のリクエスト種類、特定の並行処理パラメータ、および特定のリクエスト目標を含む）リクエストの数に比例する数の（特定のリクエスト種類、特定の並行処理パラメータ、および特定のリクエスト目標を含む）プローブリクエストを生成することを含む。
【００２５】
ステップ４１５では、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信する。分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成される。場合によって、分散型記憶システムは、プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、クライアントにアクセス可能なデータに対して読み書きを行わないように構成される。いくつかの実現例において、分散型記憶システム内のデータは、クライアントにアクセスできないプローブフィールドを含み、分散型記憶システムは、プローブリクエストの受信に応答して、プローブリクエストのリクエスト目標に関連するプローブフィールドにアクセスするように構成される。
【００２６】
ステップ４２０では、分散型記憶システムからプローブリクエストに対する応答を受信する。ステップ４２５では、受信した応答に基づいて、分散型記憶システムの少なくとも１つの性能メトリックを出力する。場合によって、少なくとも１つの性能メトリックの出力は、特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、分散型記憶システムの特定のデータグループの少なくとも１つの性能メトリックの加重平均を出力することを含む。少なくとも１つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、または内部ネットワーク待ち時間のうち、少なくとも１つを含むことができる。場合によって、性能メトリックは、リクエスト情報１２６に由来する計算において用いられた重みによる加重平均を含むことができる。例えば、無効な並行処理リクエストが強力な並行処理リクエストの１０倍である場合、性能メトリックにおいて、無効な並行処理プローブリクエストの性能データは、強力な並行処理プローブリクエストの性能データの１０倍に重くなる可能性がある。
【００２７】
場合によって、プロセス４００は、少なくとも１つの性能メトリックを、分散型記憶システムの少なくとも１つの性能メトリックの目標値を含むサービスレベル目標（ＳＬＯ）と比較することを含む。ＳＬＯは、分散型記憶システムのサービスレベルアグリーメント（ＳＬＡ）に包含することができる。また、プロセス４００は、少なくとも１つの性能メトリックが目標値を満たさないことを判断すること、および少なくとも１つの性能メトリックが目標値を満たさないという指示を出力することを含むことができる。
【００２８】
図５は、クライアントとしてもしくはサーバまたは複数のサーバとして、本明細書に記載のシステムおよび方法を実現するために使用されたコンピューティング装置５００、５５０を示すブロック図である。コンピューティング装置５００は、ラップトップ、デスクトップ、ワークステーション、ＰＤＡ（Personal Digital Assistant）、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図されている。コンピューティング装置５５０は、パーソナルデジタルアシスタント、携帯電話、ＰＤＡ、携帯電話、スマートフォンおよび他の類似するコンピューティング装置などの様々な形態のモバイル装置を表すように意図されている。また、コンピューティング装置５００または５５０は、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブを含むことができる。ＵＳＢフラッシュドライブは、オペレーティングシステムおよび他のアプリケーションを格納することができる。ＵＳＢフラッシュドライブは、入力／出力要素、例えば、別のコンピューティング装置のＵＳＢポートに挿入することができるワイヤレストランスミッタまたはＵＳＢコネクタを含むことができる。図示された構成要素、それらの接続および関係並びにそれらの機能は、例示的なものに過ぎず、本明細書に記載および／または請求される発明の実施を限定するものではない。
【００２９】
コンピューティング装置５００は、プロセッサ５０２と、メモリ５０４と、記憶装置５０６と、メモリ５０４および高速拡張ポート５１０を連結する高速インターフェイス５０８と、低速バス５１４および記憶装置５０６を連結する低速インターフェイス５１２とを含む。構成要素５０２、５０４、５０６、５０８、５１０および５１２は、様々なバスを使用して相互に接続され、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。プロセッサ５０２は、メモリ５０４または記憶装置５０６に記憶された命令を含むコンピューティング装置５００内に実行される命令を処理することによって、外部入力／出力装置のＧＵＩに、例えば高速インターフェイス５０８に接続されたディスプレイ５１６にグラフィック情報を表示することができる。他の実施態様において、複数のプロセッサおよび／または複数のバスは、複数のメモリおよび複数種類のメモリと共に、適切に使用されることができる。また、各装置が（例えば、サーババンク、一群のブレードサーバ、またはマルチプロセッサシステムとして）必要な動作の一部を実行するように、複数のコンピューティング装置５００を接続することができる。
【００３０】
メモリ５０４は、コンピューティング装置５００に情報を格納する。一実現例において、メモリ５０４は、揮発性メモリユニットである。別の実現例において、メモリ５０４は、不揮発性メモリユニットである。メモリ５０４は、別の形態のコンピュータ可読媒体、例えば、磁気ディスクまたは光ディスクであってもよい。
【００３１】
記憶装置５０６は、コンピューティング装置５００に大容量の記憶を提供することができる。一実現例において、記憶装置５０６は、例えば、フロッピー（登録商標）ディスク装置、ハードディスク装置、光学ディスク装置、テープディスク装置、フラッシュメモリまたは他の同様の固体メモリ装置、または記憶エリアネットワークまたは他の構成内の装置を含むアレイ記憶装置などのコンピュータ可読媒体を含むことができる。コンピュータプログラム製品は、情報担体に有形的に具体化することができる。また、コンピュータプログラム製品は、命令を含むことができる。これらの命令は、実行されると、上述したような１つ以上の方法を実行することができる。情報担体は、例えば、メモリ５０４、記憶装置５０６、またはプロセッサ５０２上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
【００３２】
高速コントローラ５０８は、コンピューティング装置５００の高速の帯域幅集約動作を管理し、低速コントローラ５１２は、低速の帯域幅集約動作を管理する。このような機能の割り当ては、例示に過ぎない。一実現例において、高速コントローラ５０８は、メモリ５０４、（例えば、グラフィックプロセッサまたはアクセラレータを介して）ディスプレイ５１６、および様々な拡張カード（図示せず）を挿入できる高速拡張ポート５１０に連結される。この実現例において、低速コントローラ５１２は、記憶装置５０６および低速拡張ポート５１４に連結される。様々な通信ポート（例えば、ＵＳＢ、ブルートゥース（登録商標）、イーサネット（登録商標）、無線イーサネット）を含み得る低速拡張ポートは、例えば、キーボード、ポインティング装置、スキャナなどの１つ以上の入出力装置に連結されてもよく、またはネットワークアダプタを介して、スイッチまたはルータなどのネットワーキング装置に連結されてもよい。
【００３３】
図示のように、コンピューティング装置５００は、いくつかの異なる形態で実装されることができる。例えば、コンピューティング装置５００は、標準サーバ５２０として実装されてもよく、または標準サーバのグループ内に複数回実装されてもよい。また、コンピューティング装置５００は、サーバラックシステム５２４の一部として実装されてもよい。さらに、コンピューティング装置５００は、ラップトップコンピュータ５２２のようなパーソナルコンピュータに実装されてもよい。代替的には、コンピューティング装置５００の要素は、装置５５０などのモバイル装置（図示せず）内の他の要素と組み合わてもよい。このような装置の各々は、１つ以上のコンピューティング装置５００、５５０を含んでもよく、システムの全体は、互いに通信できる複数のコンピューティング装置５００、５５０から構成されてもよい。
【００３４】
コンピューティング装置５５０は、プロセッサ５５２、メモリ５６４、ディスプレイ５５４などの入出力装置、通信インターフェイス５６６、およびトランシーバ５６８を含む。装置５５０は、追加の記憶を提供するために、マイクロドライブまたは他の素子などの記憶装置を備えることもできる。要素５５０、５５２、５６４、５５４、５６６および５６８は、様々なバスを介して相互に接続され、一部の要素は、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。
【００３５】
プロセッサ５５２は、メモリ５６４に格納された命令を含むコンピューティング装置５５０内の命令を実行することができる。このプロセッサは、互いに独立している複数のアナログプロセッサおよびデジタルプロセッサを備えるチップのチップセットとして実装されてもよい。また、いくつかのアーキテクチャのいずれかを用いて、プロセッサを実装することができる。例えば、プロセッサ５１０は、ＣＩＳＣ（複合命令セットコンピュータ）プロセッサ、ＲＩＳＣ（縮小命令セットコンピュータ）プロセッサ、またはＭＩＳＣ（最小命令セットコンピュータ）プロセッサであってもよい。このプロセッサは、装置５５０の他の要素の協調、例えば、ユーザインターフェイスの制御、装置５５０によるアプリケーションの実行、および装置５５０による無線通信を提供することができる。
【００３６】
プロセッサ５５２は、制御インターフェイス５５８およびディスプレイ５５４に結合されたディスプレイインターフェイス５５６を介してユーザと通信することができる。ディスプレイ５５４は、例えば、ＴＦＴディスプレイ（薄膜トランジスタ液晶ディスプレイ）またはＯＬＥＤ（有機発光ダイオードディスプレイ）、または他の適切なディスプレイ技術を使用することができる。表示インターフェイス５５６は、グラフィック情報および他の情報をユーザに表示するために、ディスプレイ５５４を駆動する適切な回路を含むことができる。制御インターフェイス５５８は、ユーザからの指令を受信し、変換してからプロセッサ５５２に提供することができる。また、プロセッサ５５２と通信するように外部インターフェイス５６２を設けることによって、装置５５０は、他の装置と近距離通信を行うことができる。外部インターフェイス５６２は、例えば、いくつかの実現例において有線通信を提供することができ、他の実現例において無線通信を提供することができる。複数のインターフェイスを使用することもできる。
【００３７】
メモリ５６４は、コンピューティング装置５５０に情報を格納する。メモリ５６４は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットのうち、１つまたは複数として実装することができる。拡張メモリ５７４は、例えば、ＳＩＭＭ（Single In Line Memory Module）カードインターフェイスを含む拡張インターフェイス５７２を介して、装置５５０に提供され、接続されてもよい。具体的には、拡張メモリ５７４は、上述したプロセスを実行するまたは補足するための命令を格納することができ、セキュリティ情報を格納することもできる。したがって、拡張メモリ５７４は、例えば、装置５５０のセキュリティモジュールとして提供されてもよく、装置５５０の安全使用を可能にする命令でプログラムされてもよい。さらに、ＳＩＭＭカードを介して、追加情報と共に、セキュリティアプリケーションを配置することができる。例えば、ハッキングできない方法で、ＳＩＭＭカード上に識別情報を配置することができる。
【００３８】
以下に説明するように、メモリは、例えば、フラッシュメモリおよび／またはＮＶＲＡＭメモリを含むことができる。一実現例において、コンピュータプログラム製品は、情報担体に有形的に具体化される。コンピュータプログラム製品は、命令を含み、これらの命令は、実行されると、上述したような１つ以上の方法を実行する。情報担体は、例えば、メモリ５６４、拡張メモリ５７４、またはプロセッサ５５２上のメモリなどのコンピュータ可読媒体または機械可読媒体であり、トランシーバ５６８または外部インターフェイス５６２を介して受信動作を実行してもよい。
【００３９】
装置５５０は、必要に応じてデジタル信号処理回路を含む通信インターフェイス５６６を介して無線通信を行うことができる。通信インターフェイス５６６は、とりわけ、ＧＳＭ（登録商標）通話、ＳＭＳ、ＥＭＳ、またはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、またはＧＰＲＳなどの様々なモードまたはプロトコルに基づいて、通信を提供することができる。このような通信は、例えば、高周波トランシーバ５６８を介して行われてもよい。また、ブルートゥース（登録商標）、ＷｉＦｉ（登録商標）、または他のトランシーバ（図示せず）を用いて、短距離通信を行うことができる。さらに、ＧＰＳ（全地球測位システム）受信モジュール５７０は、追加のナビゲーション関連無線データおよび位置関連無線データを装置５５０に提供することができる。これらの無線データは、装置５５０上で動作するアプリケーションに適宜に使用される。
【００４０】
また、装置５５０は、音声コーデック５６０を使用して音声通信を行うことができる。音声コーデック５６０は、ユーザから受信した音声情報を使用可能なデジタル情報に変換することができる。同様に、音声コーデック５６０は、例えば、装置５５０の送受話器内のスピーカを介して、ユーザに可聴な音声を生成することができる。このような音声は、音声電話からの音声を含むことができ、記録された音声（例えば、音声メッセージ、音楽ファイル）を含むことができ、装置５５０上で動作するアプリケーションによって生成された音声を含むこともできる。
【００４１】
図示のように、コンピューティング装置５５０は、いくつかの異なる形態で実装されてもよい。例えば、コンピューティング装置５５０は、携帯電話５８０として実装されてもよく、スマートフォン５８２、ＰＤＡまたは他の類似するモバイル装置の一部として実装されてもよい。
【００４２】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェアおよび／またはそれらの組み合わせで実現することができる。これらの様々な実装は、プログラム可能なシステム上で実行可能および／または解釈可能な１つ以上のコンピュータプログラムにおける実装を含むことができる。このプログラム可能なシステムは、記憶システムからデータおよび命令を受信し、データおよび命令を記憶システムに送信するように記憶システムに連結された少なくとも１つのプログラム可能な専用または汎用のプロセッサ、少なくとも１つの入力要素、および少なくとも１つの出力装置を含む。
【００４３】
（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている）これらのコンピュータプログラムは、プログラム可能なプロセッサ用の機械命令を含み、高度な手続き型プログラミング言語および／または高度なオブジェクト指向プログラミング言語で実装することができ、および／またはアセンブリ言語／機械言語で実装することができる。「機械可読媒体」という用語は、本明細書に使用された場合、プログラム可能なプロセッサに機械命令および／またはデータを提供するために使用された機械可読信号としての機械命令を受け取る機械可読媒体を含む任意のコンピュータプログラム製品、機械および／または装置（例えば、磁気ディスク、光学ディスク、メモリ、プログラム可能な論理装置（ＰＬＤ））を指す。「機械可読信号」という用語は、機械命令および／またはデータをプログラム可能なプロセッサに提供するために使用された任意の信号を指す。
【００４４】
ユーザとの情報交換を提供するために、本開示に記載されたシステムおよび技術は、情報をユーザに提示するための表示装置（例えば、ＣＲＴ（陰極線管）モニタまたはＬＣＤ（液晶ディスプレイ）モニタ）、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティング装置（例えば、マウスまたはトラックボール）を備えたコンピュータ上で実装することができる。他の種類の装置を用いて、ユーザとの対話を提供することもできる。例えば、ユーザに提供されるフィードバックは、任意種類の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力または触覚入力を含む任意の形で受信することができる。
【００４５】
本明細書に記載のシステムおよび技術は、バックエンド要素（例えば、データサーバ）を含むコンピューティングシステム、またはミドルウェア要素（例えば、アプリケーションサーバ）を含むコンピューティングシステム、またはフロントエンド要素（例えば、ユーザが本明細書に記載のシステムおよび技術の実装と情報交換を行うことができるグラフィカルユーザインターフェイスまたはウェブブラウザを含むクライアントコンピュータ）を含むコンピューティングシステム、またはバックエンド要素、ミドルウェア要素およびフロントエンド要素の任意の組み合わせを含むコンピューティングシステムに実装されてもよい。これらのシステム要素は、任意の形式または媒体のデジタルデータ通信（例えば、通信ネットワーク）によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ピアツーピアネットワーク（アドホックまたは静的メンバを有する）、グリッドコンピューティングインフラストラクチャ、およびインターネットを含む。
【００４６】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般的に互いに遠隔であり、典型的には通信ネットワークを介して情報交換を行う。クライアントとサーバとの関係は、各々のコンピュータ上で動作しており、互いにクライアント−サーバ関係を有するコンピュータプログラムに依存する。
【００４７】
さらなる実施形態は、以下の実施例に要約される。
【実施例１】
【００４８】
１つ以上のプロセッサによって実行され、分散型記憶システムの性能メトリックを測定するためのコンピュータ実装方法である。方法は、クライアントによって分散型記憶システムに送信されたリクエストを識別するステップを含み、各リクエストは、リクエストパラメータを含む。方法は、識別されたリクエストに基づいて、プローブリクエストを生成するステップを含み、プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含む。方法は、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信するステップを含み、分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成される。方法は、分散型記憶システムからプローブリクエストに対する応答を受信するステップと、受信した応答に基づいて、分散型記憶システムの現在の性能状態を測定する少なくとも１つの性能メトリック値を出力するステップとを含む。
【実施例２】
【００４９】
実施例１に記載の方法において、プローブリクエストを生成するステップは、識別されたリクエストの数よりも少ない数のプローブリクエストを生成することを含む。
【実施例３】
【００５０】
実施例１または２に記載の方法において、リクエストパラメータは、リクエスト種類、並行処理パラメータ、およびリクエストに関連する分散型記憶システム内のデータを示すリクエスト目標を含む。
【実施例４】
【００５１】
実施例３に記載の方法において、プローブリクエストを生成するステップは、識別された、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むリクエストの数に比例する数の、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むプローブリクエストを生成することを含む。
【実施例５】
【００５２】
実施例１〜４のいずれか１つに記載の方法において、少なくとも１つの性能メトリックを出力するステップは、特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、分散型記憶システムの特定のデータグループの少なくとも１つの性能メトリックの加重平均を出力することを含む。
【実施例６】
【００５３】
実施例１〜５のいずれか１つに記載の方法において、少なくとも１つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、および内部ネットワーク待ち時間のうち、少なくとも１つを含む。
【実施例７】
【００５４】
実施例１〜６のいずれか１つに記載の方法において、分散型記憶システムは、プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、クライアントにアクセス可能なデータに対して読み書きを行わないように構成される。
【実施例８】
【００５５】
実施例１〜７のいずれか１つに記載の方法において、分散型記憶システム内のデータは、クライアントにアクセスできないプローブフィールドを含み、分散型記憶システムは、プローブリクエストの受信に応答して、プローブリクエストのリクエスト目標に関連するプローブフィールドにアクセスするように構成される。
【実施例９】
【００５６】
実施例１〜８のいずれか１つに記載の方法は、少なくとも１つの性能メトリックを、分散型記憶システムの少なくとも１つの性能メトリックの目標値を含むサービスレベル目標（ＳＬＯ）と比較するステップをさらに含む。
【実施例１０】
【００５７】
実施例９に記載の方法は、少なくとも１つの性能メトリックが目標値を満たさないことを判断するステップと、少なくとも１つの性能メトリックが目標値を満たさないことを示す指示を出力するステップとをさらに含む。
【実施例１１】
【００５８】
実施例９または１０に記載の方法において、サービスレベル目標は、分散型記憶システムのサービスレベルアグリーメント（ＳＬＡ）内に含まれる。
【実施例１２】
【００５９】
実施例１〜１１のいずれか１つに記載の方法において、プローブリクエストは、識別されたリクエストの統計表現である。
【実施例１３】
【００６０】
命令を格納する非一時的なコンピュータ可読媒体であって、これらの命令は、実行されると、少なくとも１つのプロセッサに分散型記憶システム内の性能メトリックを測定する動作を実行させ、これらの動作は、クライアントによって分散型記憶システムに送信されたリクエストを識別する動作を含み、各リクエストは、リクエストパラメータを含み、識別されたリクエストに基づいて、プローブリクエストを生成する動作を含み、プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含み、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信する動作を含み、分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成され、分散型記憶システムからプローブリクエストに対する応答を受信する動作と、受信した応答に基づいて、分散型記憶システムの現在の性能状態を測定する少なくとも１つの性能メトリック値を出力する動作とを含む。
【実施例１４】
【００６１】
実施例１３に記載のコンピュータ可読媒体において、プローブリクエストを生成する動作は、識別されたリクエストの数よりも少ない数のプローブリクエストを生成することを含む。
【実施例１５】
【００６２】
実施例１３または１４に記載のコンピュータ可読媒体において、リクエストパラメータは、リクエスト種類、並行処理パラメータ、およびリクエストに関連する分散型記憶システム内のデータを示すリクエスト目標を含む。
【実施例１６】
【００６３】
実施例１５に記載のコンピュータ可読媒体において、識別された、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むリクエストの数に比例する数の、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むプローブリクエストを生成することを含む。
【実施例１７】
【００６４】
実施例１３〜１６のいずれか１つに記載のコンピュータ可読媒体において、少なくとも１つの性能メトリックを出力する動作は、分散型記憶システムの特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、特定のデータグループの少なくとも１つの性能メトリックの加重平均を出力することを含む。
【実施例１８】
【００６５】
実施例１３〜１７のいずれか１つに記載のコンピュータ可読媒体において、記少なくとも１つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、および内部ネットワーク待ち時間のうち、少なくとも１つを含む。
【実施例１９】
【００６６】
実施例１３〜１７のいずれか１つに記載のコンピュータ可読媒体において、分散型記憶システムは、プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、クライアントにアクセス可能なデータに対して読み書きを行わないように構成される。
【実施例２０】
【００６７】
分散型記憶システムの性能メトリックを測定するためのシステムであって、データを格納するためのメモリと、メモリにアクセスし且つ以下の動作を実行するように動作可能な１つ以上のプロセッサとを備え、これらの動作は、クライアントによって分散型記憶システムに送信されたリクエストを識別する動作を含み、各リクエストは、リクエストパラメータを含み、識別されたリクエストに基づいて、プローブリクエストを生成する動作を含み、プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含み、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信する動作を含み、分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成され、分散型記憶システムからプローブリクエストに対する応答を受信する動作と、受信した応答に基づいて、分散型記憶システムの現在の性能状態を測定する少なくとも１つの性能メトリック値を出力する動作とを含む。
【００６８】
上記でいくつかの実施態様を詳細に説明したが、他の変更も可能である。また、望ましい結果を達成するために、図示の論理フローは、示された特定の順序でまたは逐次に行う必要がない。図示のフローに他のステップを追加してもよく、または図示のフローから他のステップを省いてもよい。記載のシステムに他の要素を追加してもよく、システムから他の要素を除去してもよい。したがって、他の実施形態は、添付の特許請求の範囲内に含まれる。
【図１】
0006526907.tif 000002
【図２】
0006526907.tif 000003
【図３】
0006526907.tif 000004
【図４】
0006526907.tif 000005
【図５】
0006526907.tif 000006