(58)【調査した分野】(Int.Cl.,DB名)
前記リクエストパラメータは、リクエスト種類、並行処理パラメータ、および前記リクエストに関連する前記分散型記憶システム内のデータを示すリクエスト目標を含む、請求項1または請求項2に記載の方法。
前記プローブリクエストを生成するステップは、前記識別された、特定のリクエスト種類、特定の並行処理パラメータ、および特定のリクエスト目標を含むリクエストの数に比例する数の、前記特定のリクエスト種類、前記特定の並行処理パラメータおよび前記特定のリクエスト目標を含むプローブリクエストを生成することを含む、請求項3に記載の方法。
前記少なくとも1つの性能メトリックを出力するステップは、特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、前記分散型記憶システムの前記特定のデータグループの前記少なくとも1つの性能メトリックの加重平均を出力することを含む、請求項3に記載の方法。
前記少なくとも1つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、および内部ネットワーク待ち時間のうち、少なくとも1つを含む、請求項1〜請求項5のいずれか1項に記載の方法。
前記分散型記憶システムは、前記プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、前記クライアントにアクセス可能なデータに対して読み書きを行わないように構成される、請求項1〜請求項6のいずれか1項に記載の方法。
前記少なくとも1つの性能メトリックを、前記分散型記憶システムの前記少なくとも1つの性能メトリックの目標値を含むサービスレベル目標(SLO)と比較するステップをさらに含む、請求項1〜請求項8のいずれか1項に記載の方法。
【発明を実施するための形態】
【0006】
詳細な説明
様々な図面において、同様の参照番号および記号は、同様の要素を示す。
【0007】
分散型記憶システムにおいて、多くの要因がシステム性能に影響を与える可能性がある。例えば、クライアントは、インターネットなどのパブリックネットワークを介して、システムにアクセスすることができる。この場合、各クライアントの観点から、パブリックネットワークのいずれかの箇所の性能上の問題が分散型記憶システムの性能に影響を与え得る。また、クライアントの観点から、分散型記憶システム自身の問題、例えば、ハードウェア障害、内部ネットワーク障害、ソフトウェアバグなども、システムの性能に影響を与え得る。
【0008】
場合によって、分散型記憶システムとクライアントとの間の関係は、サービスレベルアグリーメント(SLA)によって制限される。一般的には、SLAは、分散型記憶システムのプロバイダがクライアントリクエストにサービスを提供するときに満たすべき性能目標を含む。例えば、SLAは、分散型記憶システムのプロバイダがリクエストを処理する際に10ms以下の待ち時間を保証することを指定することができる。SLAは、性能目標を満たしていない場合に取らせる措置、例えば、プロバイダがクライアントに払い戻す措置を含み得る。このような契約は、分散型記憶システムのプロバイダが、管理範囲以外の状況(例えば、パブリックネットワークの停止、クライアントネットワークの停止、クライアント装置の問題)によって生じた性能問題に対して責任を負わないという条項を含み得る。
【0009】
SLAが定められていなくても、分散型記憶システムのプロバイダは、クライアントのリクエストにサービスを提供すると共に、システムの性能に影響を与えない非侵害的な方法で、システムの健全性を監視したいことがある。
【0010】
したがって、本開示は、クライアントのリクエストをプロファイリングすることによって、分散データベースシステムの性能を監視するための技術を説明する。1つの例示的な方法は、クライアントによって分散型記憶システムに送信されたリクエストを識別することを含む。リクエストは、例えば、リクエスト種類、並行処理パラメータ、およびリクエストに関連するデータを示すリクエスト目標などのリクエストパラメータを含むことができる。場合によって、リクエストは、分散型記憶システムのクライアントから送信された情報に基づいて識別されてもよい。識別されたリクエストに基づいて、プローブリクエストを生成する。プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含む。生成されたプローブリクエストは、分散型記憶システムに送信される。分散型記憶システムは、各プローブリクエストにサービスを提供するための準備を用意することによって応答するが、リクエスト目標によって示されたデータに実際にアクセスしない。例えば、分散型記憶システムは、リクエスト種類が「読み取り」であるプローブリクエストに応答して、リクエスト目標によって示されたデータを読み取るための準備(例えば、データの位置付け、リクエストの行列化)を行う際に、クライアントがアクセスできないデータフィールドを読み取る。これによって、クライアントリクエストの通常処理を妨げることなく、システムを徹底的にプロファイリングすることができる。分散型記憶システムからプローブリクエストに対する応答を受信すると、性能メトリックを計算することができる。
【0011】
場合によって、分散型記憶システムの性能を単独に測定するために、分散型記憶システムと同様の場所(例えば、同様の内部ネットワーク)に配置されたコンピューティング装置を用いて、プロセスを実行することができる。これによって、プロバイダの管理範囲以外の問題(例えば、パブリックネットワークの停止)は、プロセスによって示されない。
【0012】
本明細書に記載の技術は、以下の利点を提供することができる。本発明の技術は、実際のクライアントリクエストをプロファイリングすることによりプローブリクエストを生成することによって、分散型記憶システムによってサービスを提供しているクライアントリクエストの近似値を用いて、分散型記憶システムを監視することができる。また、クライアントにアクセス可能なデータにアクセスせず、分散型記憶システムの健全性を監視することによって、実際のクライアントリクエストに対する性能の影響を最小限に抑えることができる。さらに、分散型記憶システムをシステムプロバイダの管理範囲以外の他の要因から分離して監視することによって、システムの真の性能をより正確に考察することができる。システムの真の性能は、例えば、クライアントが分散型記憶システムからサービスをリクエストする際に、待ち時間の観点から認識した端末間性能を含む。このような情報は、SLAの遵守を判断する時に有用である。また、本発明の技術は、クライアントリクエストの配布に関する統計情報(例えば、特定のデータ項目が他のデータ項目よりも普及しているか否か)を提供することができる。これによって、プロバイダおよびクライアントは、(例えば、ホットスポットを回避するために)ワークロードを調整すべきか否かを理解することができる。また、本発明の技術は、分散型記憶システムの様々な性質、例えば、キュー時間、実際の処理時間、サーバの現地時間、サーバのCPUおよびメモリの現在使用率、キューの長さおよび他のメトリックをプロファイリングすることができる。さらに、本発明の技術によって、分散型記憶システムのプロバイダがプロファイリングを完全に管理することができるため、SLA/SLO遵守をより容易に管理することができる。
【0013】
図1は、分散型データベースシステムの性能を監視するための例示的な環境を示す図である。図示のように、環境100は、分散型記憶システム110を含み、分散型記憶システム110は、複数のデータグループ114を各々管理するための複数のサーバ112を含む。動作中、クライアント120は、リクエスト122を分散型記憶システム110に送信する。分散型記憶システム110は、リクエスト122を処理し、応答124をクライアント120に送信する。クライアント120は、リクエスト情報126をプローバ130に送信する。リクエスト情報126は、特定のクライアント120によって分散型記憶システム110に送信されたリクエストに関する情報、例えば、リクエスト種類、リクエストパラメータおよび各リクエストのリクエスト目標を含む。プローバ130は、リクエスト情報126を受信し、リクエスト情報126に基づいて、プローブリクエスト132を分散型記憶システム110に送信する。分散型記憶システム110は、プローブリクエストを処理し、応答134をプローバ130に送信する。プローバ130は、応答を解析することによって、分散型記憶システム110、分散型記憶システム110内の特定のサーバ112または分散型記憶システム110内の特定のデータグループ114の現在性能、もしくは分散型記憶システム110内の他の要素の現在性能を示す性能メトリック140を出力する。
【0014】
分散型記憶システム110は、ローカルまたはプライベートネットワーク(図示せず)によって接続された複数のサーバ112を備えた分散システムであってもよい。一部の場合に、ローカルまたはプライベートネットワークは、単一の施設に完全に配置され、他の場合に、ローカルまたはプライベートネットワークは、広域なエリアをカバーし、複数の施設を相互に接続することができる。サーバ112は、互いに通信することによって、クライアント120によってリクエストしたデータを記憶、検索および更新することによって、クライアントリクエスト122にサービスを提供することができる。場合によって、分散型記憶システム110は、分散型データベース、分散型ファイルシステム、または他の種類の分散型記憶装置を含むことができる。また、分散型記憶システム110は、システム内のサーバ112の動作を管理および構成するための要素を含むことができる。
【0015】
分散型記憶システム110内の各サーバ112は、プロセッサと、分散型記憶システム110によって管理されるデータを格納するためのハードドライブなどの記憶装置とを含むコンピューティング装置であってもよい。場合によって、配信ポリシーに従って、データを異なるサーバ112に配信することができる。配信ポリシーは、例えば、冗長性を維持するために、分散型記憶システム110内の特定のテーブルまたはファイルを特定の数のサーバ112上に格納するように指定することができる。また、配信ポリシーは、地理的冗長性を維持するために、データを複数の異なる場所に格納するように指定することができる。場合によって、サーバ112は、直接に接続された永続記憶装置の代わりに、分散型ファイルシステムなどの外部記憶装置または外部記憶システムを利用することができる。
【0016】
各々のサーバ112は、1つ以上のデータグループ114を管理する。データグループ114は、分散型記憶システム110によって管理されている全てのデータセットの一部を含むことができる。各データグループ114は、分散型データベースのテーブルの一部からのデータ、分散型ファイルシステムからの1つ以上のファイル、または分散型記憶システム110内の他のデータの区分を表すまたは含むことができる。動作中、分散型記憶システム110は、リクエスト目標に基づいて、各々のリクエスト122およびプローブリクエスト132を解析することによって、リクエストまたはプローブリクエストに関連する特定のデータグループ114を決定する。その後、分散型記憶システムは、特定のデータグループ114を管理する特定のサーバ112に、リクエストまたはプローブリクエストをルーティングすることができる。
【0017】
場合によって、クライアント120は、分散型記憶システム110のユーザであってもよい。クライアント120は、分散型記憶システム110を用いてデータを格納および検索するエンティティ(例えば、ウェブサイトまたはアプリケーション)であってもよい。各クライアント120は、分散型記憶システム110に送信した各リクエスト122に関する情報を格納することができる。場合によって、各クライアント120は、分散型記憶システム110に送信したリクエストの全体のレコードを格納することができる。各クライアントは、分散型記憶システム110に送信したリクエスト122の概要、例えば、同様のセットのリクエストパラメータと共に送信したリクエストのカウント数を格納することができる。例えば、クライアント120は、「読み取り」というリクエスト種類、「無効」という並行処理パラメータ、および「顧客」という名前のテーブルのリクエスト目標を有する5つのリクエストが送信されたことを記録することができる。このリクエスト情報126は、例えば、各クライアント120によって定期的にプローバ130に送信されてもよい。このリクエスト情報126は、例えば、インターネットのようなパブリックネットワークを介して、クライアント120によってプローバ130に送信されてもよい。場合によって、リクエスト情報126は、クライアント上で実行し、クライアントによって送信されたリクエストに関する情報を収集するように構成されたソフトウェアプロセスまたはライブラリによって、収集されてもよい。場合によって、ソフトウェアライブラリは、分散型記憶システムのプロバイダによって提供されてもよい。
【0018】
プローバ130は、クライアント120から受信したリクエスト情報を解析し、リクエスト情報126によって記述されたリクエストの統計近似値を表すプローブプロファイルを生成することができる。例えば、プローバ130は、1万個の「読み取り」種類のリクエストおよび5千個の「書き込み」種類のリクエストを含むリクエスト情報126を解析し、最初のリクエスト122を処理する分散システムの性能をエミュレートおよび決定するために、1千個の「読み取り」種類のプローブリクエストおよび5百個の「書き込み」種類のプローブリクエストを送信すべきであることを示すプローブプロファイルを生成することができる。いくつかの場合において、プローバ130は、クライアント120によって送信されたリクエスト122を表すのに十分であり、分散型記憶システム110の性能に与える影響を最小限に抑える最小数のプローブリクエスト132を選択的に生成することができる。
【0019】
プローバ130は、プローブプロファイルに基づいて、プローブリクエスト132を分散型記憶システム110に送信する。場合によって、プローブリクエスト132は、クライアント120によって送信されたリクエスト122と同様のフォーマットを有してもよいが、クライアント120からのリクエストではなくプローブリクエストであることを示す指標を含んでもよい。分散型記憶システム110は、クライアントリクエスト122と同様に、プローブリクエスト132を受信および処理するが、この場合、分散型記憶システムは、各プローブリクエストのリクエスト目標によって示された実際のデータにアクセスしない。その代わりに、場合によって、分散型記憶システム110は、プローバ130に特別に割り当てられたデータ、例えば、特別のフィールド、コラム、メタデータ値、またはリクエスト目標によって示されたデータに関連する他の値にアクセスすることができる。このようにして、クライアントからのリクエスト122の処理を妨げることなく、分散型記憶システム110のいくつかの特徴の性能をプロファイリングすることができる。例えば、リクエストされたデータをロックさせるための並行処理パラメータを含むプローブリクエストは、クライアントからのリクエストの処理を妨げないように、分散型記憶システム110に指示して、プローバ特有データにロックを掛けることができる。このような機能によって、クライアントリクエストの処理に影響を与えることなく、分散型記憶システム110の同時性特徴をプロファイリングすることができる。
【0020】
図示のように、プローバ130は、送信したプローブリクエスト132および受信した応答134に基づいて、1つ以上の性能メトリック140を生成する。場合によって、性能メトリックは、分散型記憶システム110がプローブリクエストに応答する平均時間として測定されたシステムの全体的な待ち時間を含むことができる。また、性能メトリックは、失敗したプローブリクエストと成功したプローブリクエストとの比率として測定された有効率を含むことができる。さらに、性能メトリックは、ローカルネットワーク待ち時間、サーバのキュー待ち時間(例えば、各プローブリクエスト132が処理される前にサーバで待機する平均時間)、ディスクまたはメモリ待ち時間、または他の性能メトリックを含むことができる。
【0021】
図2は、分散型記憶システムのクライアントリクエストを処理する例示的なプロセスを示すスイムレーン図である。ステップ205では、クライアント120は、リクエストを分散型記憶システム110に送信する。ステップ210では、分散型記憶システム110は、リクエストにサービスを提供するための準備を用意する。分散型記憶システム110により行われた準備は、例えば、リクエストの構文解析、リクエストしたデータを格納するための特定のサーバの決定、特定のサーバにリクエストの送信、特定のリクエストを達成するための実行計画の生成(例えば、リクエストを実現するために、アクセスするテーブルおよびデータを操作する方法の決定)、または他の操作を含むことができる。ステップ215では、分散型記憶システム110は、各リクエストによって示されたデータにアクセスする。この操作は、(以下に説明するように)分散型記憶システム110がプローブリクエストを処理するときに、リクエストによって示されたデータにアクセスすることができないこととは対照的である。ステップ220では、分散型記憶システム110は、リクエストに対する応答をクライアントに送信する。例えば、クライアントが分散型記憶システム110から特定のデータを読み取むことをリクエストした場合、応答は、リクエストされたデータを含むことができる。
【0022】
図3は、分散型データベースシステムの性能を監視するための例示的なプロセスを示すスイムレーン図である。ステップ305では、クライアント120は、リクエストを分散型記憶システム110に送信する。ステップ310では、分散型記憶システム110は、リクエストに対する応答をクライアント120に送信する。ステップ315では、クライアント120は、送信されたリクエストに関する情報をプローバ130に提供する。ステップ320では、プローバ130は、クライアントから送信されたリクエストに関する情報に基づいて、プローブプロファイルを生成する。場合によって、プローバは、複数のクライアントから送信されたリクエストに関する情報を受信し、受信した情報に基づいて、プローブプロファイルを生成することができる。ステップ325では、プローバ130は、プローブプロファイルに基づいて、プローブリクエストを分散型記憶システム110に送信する。ステップ330では、分散型記憶システム110は、各リクエストにサービスを提供するための準備を用意する。ステップ335では、分散型記憶システム110は、各プローブリクエストのリクエスト目標によって示されたデータに関連するプローブ特有メタデータにアクセスする。ステップ340では、分散型記憶システム110は、プローブリクエストに対する応答をプローバ130に送信する。ステップ345では、プローバは、プローブリクエストに対する応答に基づいて、性能メトリックを計算する。
【0023】
図4は、分散型データベースシステムの性能を監視するための例示的なプロセスを示フローチャートである。ステップ405では、クライアントによって分散型記憶システムに送信されたリクエストを識別する。各リクエストは、リクエストパラメータを含む。場合によって、リクエストパラメータは、リクエスト種類、並行処理パラメータ、およびリクエストに関連する分散型記憶システム内のデータを示すリクエスト目標を含む。
【0024】
ステップ410では、識別されたリクエストに基づいて、プローブリクエストを生成する。プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含む。場合によって、プローブリクエストの生成は、識別されたリクエストの数よりも少ない数のプローブリクエストを生成することを含む。プローブリクエストの生成は、識別された(特定のリクエスト種類、特定の並行処理パラメータ、および特定のリクエスト目標を含む)リクエストの数に比例する数の(特定のリクエスト種類、特定の並行処理パラメータ、および特定のリクエスト目標を含む)プローブリクエストを生成することを含む。
【0025】
ステップ415では、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信する。分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成される。場合によって、分散型記憶システムは、プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、クライアントにアクセス可能なデータに対して読み書きを行わないように構成される。いくつかの実現例において、分散型記憶システム内のデータは、クライアントにアクセスできないプローブフィールドを含み、分散型記憶システムは、プローブリクエストの受信に応答して、プローブリクエストのリクエスト目標に関連するプローブフィールドにアクセスするように構成される。
【0026】
ステップ420では、分散型記憶システムからプローブリクエストに対する応答を受信する。ステップ425では、受信した応答に基づいて、分散型記憶システムの少なくとも1つの性能メトリックを出力する。場合によって、少なくとも1つの性能メトリックの出力は、特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、分散型記憶システムの特定のデータグループの少なくとも1つの性能メトリックの加重平均を出力することを含む。少なくとも1つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、または内部ネットワーク待ち時間のうち、少なくとも1つを含むことができる。場合によって、性能メトリックは、リクエスト情報126に由来する計算において用いられた重みによる加重平均を含むことができる。例えば、無効な並行処理リクエストが強力な並行処理リクエストの10倍である場合、性能メトリックにおいて、無効な並行処理プローブリクエストの性能データは、強力な並行処理プローブリクエストの性能データの10倍に重くなる可能性がある。
【0027】
場合によって、プロセス400は、少なくとも1つの性能メトリックを、分散型記憶システムの少なくとも1つの性能メトリックの目標値を含むサービスレベル目標(SLO)と比較することを含む。SLOは、分散型記憶システムのサービスレベルアグリーメント(SLA)に包含することができる。また、プロセス400は、少なくとも1つの性能メトリックが目標値を満たさないことを判断すること、および少なくとも1つの性能メトリックが目標値を満たさないという指示を出力することを含むことができる。
【0028】
図5は、クライアントとしてもしくはサーバまたは複数のサーバとして、本明細書に記載のシステムおよび方法を実現するために使用されたコンピューティング装置500、550を示すブロック図である。コンピューティング装置500は、ラップトップ、デスクトップ、ワークステーション、PDA(Personal Digital Assistant)、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図されている。コンピューティング装置550は、パーソナルデジタルアシスタント、携帯電話、PDA、携帯電話、スマートフォンおよび他の類似するコンピューティング装置などの様々な形態のモバイル装置を表すように意図されている。また、コンピューティング装置500または550は、ユニバーサルシリアルバス(USB)フラッシュドライブを含むことができる。USBフラッシュドライブは、オペレーティングシステムおよび他のアプリケーションを格納することができる。USBフラッシュドライブは、入力/出力要素、例えば、別のコンピューティング装置のUSBポートに挿入することができるワイヤレストランスミッタまたはUSBコネクタを含むことができる。図示された構成要素、それらの接続および関係並びにそれらの機能は、例示的なものに過ぎず、本明細書に記載および/または請求される発明の実施を限定するものではない。
【0029】
コンピューティング装置500は、プロセッサ502と、メモリ504と、記憶装置506と、メモリ504および高速拡張ポート510を連結する高速インターフェイス508と、低速バス514および記憶装置506を連結する低速インターフェイス512とを含む。構成要素502、504、506、508、510および512は、様々なバスを使用して相互に接続され、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。プロセッサ502は、メモリ504または記憶装置506に記憶された命令を含むコンピューティング装置500内に実行される命令を処理することによって、外部入力/出力装置のGUIに、例えば高速インターフェイス508に接続されたディスプレイ516にグラフィック情報を表示することができる。他の実施態様において、複数のプロセッサおよび/または複数のバスは、複数のメモリおよび複数種類のメモリと共に、適切に使用されることができる。また、各装置が(例えば、サーババンク、一群のブレードサーバ、またはマルチプロセッサシステムとして)必要な動作の一部を実行するように、複数のコンピューティング装置500を接続することができる。
【0030】
メモリ504は、コンピューティング装置500に情報を格納する。一実現例において、メモリ504は、揮発性メモリユニットである。別の実現例において、メモリ504は、不揮発性メモリユニットである。メモリ504は、別の形態のコンピュータ可読媒体、例えば、磁気ディスクまたは光ディスクであってもよい。
【0031】
記憶装置506は、コンピューティング装置500に大容量の記憶を提供することができる。一実現例において、記憶装置506は、例えば、フロッピー(登録商標)ディスク装置、ハードディスク装置、光学ディスク装置、テープディスク装置、フラッシュメモリまたは他の同様の固体メモリ装置、または記憶エリアネットワークまたは他の構成内の装置を含むアレイ記憶装置などのコンピュータ可読媒体を含むことができる。コンピュータプログラム製品は、情報担体に有形的に具体化することができる。また、コンピュータプログラム製品は、命令を含むことができる。これらの命令は、実行されると、上述したような1つ以上の方法を実行することができる。情報担体は、例えば、メモリ504、記憶装置506、またはプロセッサ502上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
【0032】
高速コントローラ508は、コンピューティング装置500の高速の帯域幅集約動作を管理し、低速コントローラ512は、低速の帯域幅集約動作を管理する。このような機能の割り当ては、例示に過ぎない。一実現例において、高速コントローラ508は、メモリ504、(例えば、グラフィックプロセッサまたはアクセラレータを介して)ディスプレイ516、および様々な拡張カード(図示せず)を挿入できる高速拡張ポート510に連結される。この実現例において、低速コントローラ512は、記憶装置506および低速拡張ポート514に連結される。様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、例えば、キーボード、ポインティング装置、スキャナなどの1つ以上の入出力装置に連結されてもよく、またはネットワークアダプタを介して、スイッチまたはルータなどのネットワーキング装置に連結されてもよい。
【0033】
図示のように、コンピューティング装置500は、いくつかの異なる形態で実装されることができる。例えば、コンピューティング装置500は、標準サーバ520として実装されてもよく、または標準サーバのグループ内に複数回実装されてもよい。また、コンピューティング装置500は、サーバラックシステム524の一部として実装されてもよい。さらに、コンピューティング装置500は、ラップトップコンピュータ522のようなパーソナルコンピュータに実装されてもよい。代替的には、コンピューティング装置500の要素は、装置550などのモバイル装置(図示せず)内の他の要素と組み合わてもよい。このような装置の各々は、1つ以上のコンピューティング装置500、550を含んでもよく、システムの全体は、互いに通信できる複数のコンピューティング装置500、550から構成されてもよい。
【0034】
コンピューティング装置550は、プロセッサ552、メモリ564、ディスプレイ554などの入出力装置、通信インターフェイス566、およびトランシーバ568を含む。装置550は、追加の記憶を提供するために、マイクロドライブまたは他の素子などの記憶装置を備えることもできる。要素550、552、564、554、566および568は、様々なバスを介して相互に接続され、一部の要素は、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。
【0035】
プロセッサ552は、メモリ564に格納された命令を含むコンピューティング装置550内の命令を実行することができる。このプロセッサは、互いに独立している複数のアナログプロセッサおよびデジタルプロセッサを備えるチップのチップセットとして実装されてもよい。また、いくつかのアーキテクチャのいずれかを用いて、プロセッサを実装することができる。例えば、プロセッサ510は、CISC(複合命令セットコンピュータ)プロセッサ、RISC(縮小命令セットコンピュータ)プロセッサ、またはMISC(最小命令セットコンピュータ)プロセッサであってもよい。このプロセッサは、装置550の他の要素の協調、例えば、ユーザインターフェイスの制御、装置550によるアプリケーションの実行、および装置550による無線通信を提供することができる。
【0036】
プロセッサ552は、制御インターフェイス558およびディスプレイ554に結合されたディスプレイインターフェイス556を介してユーザと通信することができる。ディスプレイ554は、例えば、TFTディスプレイ(薄膜トランジスタ液晶ディスプレイ)またはOLED(有機発光ダイオードディスプレイ)、または他の適切なディスプレイ技術を使用することができる。表示インターフェイス556は、グラフィック情報および他の情報をユーザに表示するために、ディスプレイ554を駆動する適切な回路を含むことができる。制御インターフェイス558は、ユーザからの指令を受信し、変換してからプロセッサ552に提供することができる。また、プロセッサ552と通信するように外部インターフェイス562を設けることによって、装置550は、他の装置と近距離通信を行うことができる。外部インターフェイス562は、例えば、いくつかの実現例において有線通信を提供することができ、他の実現例において無線通信を提供することができる。複数のインターフェイスを使用することもできる。
【0037】
メモリ564は、コンピューティング装置550に情報を格納する。メモリ564は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットのうち、1つまたは複数として実装することができる。拡張メモリ574は、例えば、SIMM(Single In Line Memory Module)カードインターフェイスを含む拡張インターフェイス572を介して、装置550に提供され、接続されてもよい。具体的には、拡張メモリ574は、上述したプロセスを実行するまたは補足するための命令を格納することができ、セキュリティ情報を格納することもできる。したがって、拡張メモリ574は、例えば、装置550のセキュリティモジュールとして提供されてもよく、装置550の安全使用を可能にする命令でプログラムされてもよい。さらに、SIMMカードを介して、追加情報と共に、セキュリティアプリケーションを配置することができる。例えば、ハッキングできない方法で、SIMMカード上に識別情報を配置することができる。
【0038】
以下に説明するように、メモリは、例えば、フラッシュメモリおよび/またはNVRAMメモリを含むことができる。一実現例において、コンピュータプログラム製品は、情報担体に有形的に具体化される。コンピュータプログラム製品は、命令を含み、これらの命令は、実行されると、上述したような1つ以上の方法を実行する。情報担体は、例えば、メモリ564、拡張メモリ574、またはプロセッサ552上のメモリなどのコンピュータ可読媒体または機械可読媒体であり、トランシーバ568または外部インターフェイス562を介して受信動作を実行してもよい。
【0039】
装置550は、必要に応じてデジタル信号処理回路を含む通信インターフェイス566を介して無線通信を行うことができる。通信インターフェイス566は、とりわけ、GSM(登録商標)通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSなどの様々なモードまたはプロトコルに基づいて、通信を提供することができる。このような通信は、例えば、高周波トランシーバ568を介して行われてもよい。また、ブルートゥース(登録商標)、WiFi(登録商標)、または他のトランシーバ(図示せず)を用いて、短距離通信を行うことができる。さらに、GPS(全地球測位システム)受信モジュール570は、追加のナビゲーション関連無線データおよび位置関連無線データを装置550に提供することができる。これらの無線データは、装置550上で動作するアプリケーションに適宜に使用される。
【0040】
また、装置550は、音声コーデック560を使用して音声通信を行うことができる。音声コーデック560は、ユーザから受信した音声情報を使用可能なデジタル情報に変換することができる。同様に、音声コーデック560は、例えば、装置550の送受話器内のスピーカを介して、ユーザに可聴な音声を生成することができる。このような音声は、音声電話からの音声を含むことができ、記録された音声(例えば、音声メッセージ、音楽ファイル)を含むことができ、装置550上で動作するアプリケーションによって生成された音声を含むこともできる。
【0041】
図示のように、コンピューティング装置550は、いくつかの異なる形態で実装されてもよい。例えば、コンピューティング装置550は、携帯電話580として実装されてもよく、スマートフォン582、PDAまたは他の類似するモバイル装置の一部として実装されてもよい。
【0042】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェアおよび/またはそれらの組み合わせで実現することができる。これらの様々な実装は、プログラム可能なシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実装を含むことができる。このプログラム可能なシステムは、記憶システムからデータおよび命令を受信し、データおよび命令を記憶システムに送信するように記憶システムに連結された少なくとも1つのプログラム可能な専用または汎用のプロセッサ、少なくとも1つの入力要素、および少なくとも1つの出力装置を含む。
【0043】
(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)これらのコンピュータプログラムは、プログラム可能なプロセッサ用の機械命令を含み、高度な手続き型プログラミング言語および/または高度なオブジェクト指向プログラミング言語で実装することができ、および/またはアセンブリ言語/機械言語で実装することができる。「機械可読媒体」という用語は、本明細書に使用された場合、プログラム可能なプロセッサに機械命令および/またはデータを提供するために使用された機械可読信号としての機械命令を受け取る機械可読媒体を含む任意のコンピュータプログラム製品、機械および/または装置(例えば、磁気ディスク、光学ディスク、メモリ、プログラム可能な論理装置(PLD))を指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用された任意の信号を指す。
【0044】
ユーザとの情報交換を提供するために、本開示に記載されたシステムおよび技術は、情報をユーザに提示するための表示装置(例えば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタ)、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティング装置(例えば、マウスまたはトラックボール)を備えたコンピュータ上で実装することができる。他の種類の装置を用いて、ユーザとの対話を提供することもできる。例えば、ユーザに提供されるフィードバックは、任意種類の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力または触覚入力を含む任意の形で受信することができる。
【0045】
本明細書に記載のシステムおよび技術は、バックエンド要素(例えば、データサーバ)を含むコンピューティングシステム、またはミドルウェア要素(例えば、アプリケーションサーバ)を含むコンピューティングシステム、またはフロントエンド要素(例えば、ユーザが本明細書に記載のシステムおよび技術の実装と情報交換を行うことができるグラフィカルユーザインターフェイスまたはウェブブラウザを含むクライアントコンピュータ)を含むコンピューティングシステム、またはバックエンド要素、ミドルウェア要素およびフロントエンド要素の任意の組み合わせを含むコンピューティングシステムに実装されてもよい。これらのシステム要素は、任意の形式または媒体のデジタルデータ通信(例えば、通信ネットワーク)によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ピアツーピアネットワーク(アドホックまたは静的メンバを有する)、グリッドコンピューティングインフラストラクチャ、およびインターネットを含む。
【0046】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般的に互いに遠隔であり、典型的には通信ネットワークを介して情報交換を行う。クライアントとサーバとの関係は、各々のコンピュータ上で動作しており、互いにクライアント−サーバ関係を有するコンピュータプログラムに依存する。
【0047】
さらなる実施形態は、以下の実施例に要約される。
【実施例1】
【0048】
1つ以上のプロセッサによって実行され、分散型記憶システムの性能メトリックを測定するためのコンピュータ実装方法である。方法は、クライアントによって分散型記憶システムに送信されたリクエストを識別するステップを含み、各リクエストは、リクエストパラメータを含む。方法は、識別されたリクエストに基づいて、プローブリクエストを生成するステップを含み、プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含む。方法は、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信するステップを含み、分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成される。方法は、分散型記憶システムからプローブリクエストに対する応答を受信するステップと、受信した応答に基づいて、分散型記憶システムの現在の性能状態を測定する少なくとも1つの性能メトリック値を出力するステップとを含む。
【実施例2】
【0049】
実施例1に記載の方法において、プローブリクエストを生成するステップは、識別されたリクエストの数よりも少ない数のプローブリクエストを生成することを含む。
【実施例3】
【0050】
実施例1または2に記載の方法において、リクエストパラメータは、リクエスト種類、並行処理パラメータ、およびリクエストに関連する分散型記憶システム内のデータを示すリクエスト目標を含む。
【実施例4】
【0051】
実施例3に記載の方法において、プローブリクエストを生成するステップは、識別された、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むリクエストの数に比例する数の、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むプローブリクエストを生成することを含む。
【実施例5】
【0052】
実施例1〜4のいずれか1つに記載の方法において、少なくとも1つの性能メトリックを出力するステップは、特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、分散型記憶システムの特定のデータグループの少なくとも1つの性能メトリックの加重平均を出力することを含む。
【実施例6】
【0053】
実施例1〜5のいずれか1つに記載の方法において、少なくとも1つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、および内部ネットワーク待ち時間のうち、少なくとも1つを含む。
【実施例7】
【0054】
実施例1〜6のいずれか1つに記載の方法において、分散型記憶システムは、プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、クライアントにアクセス可能なデータに対して読み書きを行わないように構成される。
【実施例8】
【0055】
実施例1〜7のいずれか1つに記載の方法において、分散型記憶システム内のデータは、クライアントにアクセスできないプローブフィールドを含み、分散型記憶システムは、プローブリクエストの受信に応答して、プローブリクエストのリクエスト目標に関連するプローブフィールドにアクセスするように構成される。
【実施例9】
【0056】
実施例1〜8のいずれか1つに記載の方法は、少なくとも1つの性能メトリックを、分散型記憶システムの少なくとも1つの性能メトリックの目標値を含むサービスレベル目標(SLO)と比較するステップをさらに含む。
【実施例10】
【0057】
実施例9に記載の方法は、少なくとも1つの性能メトリックが目標値を満たさないことを判断するステップと、少なくとも1つの性能メトリックが目標値を満たさないことを示す指示を出力するステップとをさらに含む。
【実施例11】
【0058】
実施例9または10に記載の方法において、サービスレベル目標は、分散型記憶システムのサービスレベルアグリーメント(SLA)内に含まれる。
【実施例12】
【0059】
実施例1〜11のいずれか1つに記載の方法において、プローブリクエストは、識別されたリクエストの統計表現である。
【実施例13】
【0060】
命令を格納する非一時的なコンピュータ可読媒体であって、これらの命令は、実行されると、少なくとも1つのプロセッサに分散型記憶システム内の性能メトリックを測定する動作を実行させ、これらの動作は、クライアントによって分散型記憶システムに送信されたリクエストを識別する動作を含み、各リクエストは、リクエストパラメータを含み、識別されたリクエストに基づいて、プローブリクエストを生成する動作を含み、プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含み、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信する動作を含み、分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成され、分散型記憶システムからプローブリクエストに対する応答を受信する動作と、受信した応答に基づいて、分散型記憶システムの現在の性能状態を測定する少なくとも1つの性能メトリック値を出力する動作とを含む。
【実施例14】
【0061】
実施例13に記載のコンピュータ可読媒体において、プローブリクエストを生成する動作は、識別されたリクエストの数よりも少ない数のプローブリクエストを生成することを含む。
【実施例15】
【0062】
実施例13または14に記載のコンピュータ可読媒体において、リクエストパラメータは、リクエスト種類、並行処理パラメータ、およびリクエストに関連する分散型記憶システム内のデータを示すリクエスト目標を含む。
【実施例16】
【0063】
実施例15に記載のコンピュータ可読媒体において、識別された、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むリクエストの数に比例する数の、特定のリクエスト種類、特定の並行処理パラメータおよび特定のリクエスト目標を含むプローブリクエストを生成することを含む。
【実施例17】
【0064】
実施例13〜16のいずれか1つに記載のコンピュータ可読媒体において、少なくとも1つの性能メトリックを出力する動作は、分散型記憶システムの特定のデータグループ内のデータを識別するリクエスト目標を含むプローブリクエストに対する応答に基づいて、特定のデータグループの少なくとも1つの性能メトリックの加重平均を出力することを含む。
【実施例18】
【0065】
実施例13〜17のいずれか1つに記載のコンピュータ可読媒体において、記少なくとも1つの性能メトリックは、有効率、ディスク待ち時間、キュー待ち時間、リクエスト準備待ち時間、および内部ネットワーク待ち時間のうち、少なくとも1つを含む。
【実施例19】
【0066】
実施例13〜17のいずれか1つに記載のコンピュータ可読媒体において、分散型記憶システムは、プローブリクエストの受信に応答して各プローブリクエストにサービスを提供するための準備を用意するときに、クライアントにアクセス可能なデータに対して読み書きを行わないように構成される。
【実施例20】
【0067】
分散型記憶システムの性能メトリックを測定するためのシステムであって、データを格納するためのメモリと、メモリにアクセスし且つ以下の動作を実行するように動作可能な1つ以上のプロセッサとを備え、これらの動作は、クライアントによって分散型記憶システムに送信されたリクエストを識別する動作を含み、各リクエストは、リクエストパラメータを含み、識別されたリクエストに基づいて、プローブリクエストを生成する動作を含み、プローブリクエストは、識別されたリクエストに含まれたリクエストパラメータの統計サンプルを表すプローブリクエストパラメータを含み、ネットワークを介して、生成されたプローブリクエストを分散型記憶システムに送信する動作を含み、分散型記憶システムは、プローブリクエストの受信に応答して、各プローブリクエストにサービスを提供するための準備を用意するように構成され、分散型記憶システムからプローブリクエストに対する応答を受信する動作と、受信した応答に基づいて、分散型記憶システムの現在の性能状態を測定する少なくとも1つの性能メトリック値を出力する動作とを含む。
【0068】
上記でいくつかの実施態様を詳細に説明したが、他の変更も可能である。また、望ましい結果を達成するために、図示の論理フローは、示された特定の順序でまたは逐次に行う必要がない。図示のフローに他のステップを追加してもよく、または図示のフローから他のステップを省いてもよい。記載のシステムに他の要素を追加してもよく、システムから他の要素を除去してもよい。したがって、他の実施形態は、添付の特許請求の範囲内に含まれる。