複数のサンプルコンピュータシステムのコンフィグレーションパラメータを記憶する方法であって、複数のコンフィグレーションパラメータの各々について複数のサンプル値を前記複数のサンプルコンピュータからプロセッサにより取り出すステップと、各前記コンフィグレーションパラメータについて、望まない挙動を疑惑のコンピュータシステムにせしめた可能性の高いコンフィグレーションパラメータについての疑惑の値を前記疑惑のコンピュータシステムが何時有したかを識別するために前記サンプル値を前記プロセッサにより集めるステップであって、前記コンフィグレーションパラメータについて異なるサンプル値の個数を前記プロセッサによりカウントするステップと、前記コンフィグレーションパラメータの異なるサンプル値を有するサンプルコンピュータの台数を前記プロセッサによりカウントするステップを含む、集めるステップと、1つのコンフィグレーションパラメータについての疑惑の値と、前記コンフィグレーションパラメータについて集められた複数のサンプル値とを前記プロセッサにより比較して前記疑惑の値が前記疑惑のコンピュータシステムに望まない挙動をせしめたか否かを前記プロセッサにより判定するステップとを備えることを特徴とする方法。誤っており、アプリケーションに望ましくない挙動を示させているコンフィギュレーションパラメータを自動的に識別することが望ましい。そのようなコンフィギュレーションパラメータが識別された後に、そのコンフィギュレーションパラメータの適当な値を識別することも望ましい。コンポーネント例えばアプリケーションまたはハードウェアデバイスがある挙動を示すことの可能性の高い原因を識別する方法およびシステムを提供する。システムは、ある挙動を引き起こす可能性があるコンフィギュレーション情報例えば、アプリケーションのコンフィギュレーションパラメータの値を収集し、そのコンポーネントの他のオカレンス例えば、同一のアプリケーションをホスティングする他のコンピュータシステムからコンフィギュレーション情報の値を取り出す。収集された値は、すべてのコンフィギュレーション情報に関するものであるか、コンフィギュレーション情報のうちで、ある挙動が示されるときにそのコンポーネントによって実際にアクセスされる、コンフィギュレーション情報のサブセットとすることができる。システムは、収集された値および取り出された値に対する統計的分析を実行して、コンフィギュレーション情報がコンポーネントのある挙動を引き起こしている可能性が高いかどうかを判定する。誤っており、望ましくない挙動を引き起こしている、病んだコンピュータシステムのコンフィギュレーションパラメータを、他のコンピュータシステムからのコンフィギュレーションパラメータの分析に基づいて識別する方法およびシステムを提供する。一実施形態では、トラブルシューティングシステムは、望ましくない挙動が、病んだコンピュータシステムによって示されるときに病んだアプリケーションによって使用される疑わしいコンフィギュレーションパラメータの疑わしい値を収集する。トラブルシューティングシステムは、次に、疑わしい値を、ピアコンピュータシステムとすることができるサンプルコンピュータシステムから取り出された疑わしいコンフィギュレーションパラメータのサンプル値と比較する。トラブルシューティングシステムは、その比較を使用して、アプリケーションに望ましくない挙動を示させている、誤っている可能性が高い1つまたは複数の疑わしいコンフィギュレーションパラメータを識別する。例えば、疑わしいコンフィギュレーションパラメータが、異なるテキストエディタをグラフィックスファイルの処理に使用しなければならないことを示す値を有するが、すべてのサンプルコンピュータシステムの対応するサンプル値が、所定のピクチャエディタを使用しなければならないことを示す場合に、その疑わしいコンフィギュレーションパラメータが誤っており、グラフィックスファイルを不正に表示させている可能性がある。これは、他のすべての疑わしいコンフィギュレーションパラメータの値が、病んだコンピュータシステムおよびサンプルコンピュータシステムについて同一の場合に、特にそうである可能性が高い。トラブルシューティングシステムは、誤っている可能性が高い疑わしいコンフィギュレーションパラメータを識別するときに、様々な統計分析技術をサンプル値に適用することができる。例えば、ベイズのルールを適用して、疑わしいコンフィギュレーションパラメータのそれぞれの、誤っている可能性を示す確率を導出することができる。おそらく誤っている疑わしいコンフィギュレーションパラメータが識別されると、トラブルシューティングシステムは、サンプル値の分析に基づいて、おそらく正しい値を識別することができる。したがって、トラブルシューティングシステムは、通常のサンプル値を、誤っているコンフィギュレーションパラメータの理想的な値として使用すると考えることができる。この方法で、トラブルシューティングシステムは、誤っている可能性が高いコンフィギュレーションパラメータをすばやく自動的に識別し、正しい可能性があるサンプル値を提案することができる。一実施形態で、トラブルシューティングシステムは、望ましくない挙動を示すときにアプリケーションの実行をモニタリングすることによって、疑わしいコンフィギュレーションパラメータを識別する。トレーサプログラムtracerprogramを使用して、アプリケーションのコンフィギュレーションファイルまたは中央レジストリに格納される可能性があるコンフィギュレーションパラメータへのアプリケーションのアクセスをトレースする。トレーサプログラムは、アプリケーションによってアクセスされたコンフィギュレーションパラメータとその対応する値をログに記録する。ログ記録されたコンフィギュレーションパラメータは、アプリケーションが望ましくない挙動を示したときにこのアプリケーションが使用したコンフィギュレーションパラメータなので、疑わしいコンフィギュレーションパラメータと見なされる。トレーサプログラムは、病んだコンピュータシステムで実行することができ、誤っている疑わしいコンフィギュレーションパラメータの識別のためにそのログをトラブルシューティングコンピュータシステムに提供することができる。トラブルシューティングシステムは、病んだコンピュータシステムの疑わしい値を収集する前またはその後に、サンプルコンピュータシステムからコンフィギュレーションパラメータのサンプル値を取り出す。サンプルコンピュータシステムは、何らかの方法で関係するという意味で、ピアpeerコンピュータシステムとすることができる。例えば、ピアコンピュータシステムは、ある会社のローカルエリアネットワーク上のユーザコンピュータシステムのセット、または共通の特性を共有する例えば、販売要員によって使用されるサブセットとすることができる。疑わしい値が収集される前にサンプル値が取り出される場合に、トラブルシューティングシステムは、サンプル値をコンフィギュレーションデータベースに保管することができる。コンフィギュレーションデータベースは、ピアコンピュータシステムごとに、そのコンピュータシステムから取り出された各コンフィギュレーションパラメータの値を含むエントリを有することができる。さらに、トラブルシューティングシステムは、どのピアコンピュータシステムにどのアプリケーションがインストールされたかのインデックスを維持することができる。トラブルシューティングシステムは、このインデックスを使用して、病んだアプリケーションがインストールされているピアコンピュータシステムを、サンプルコンピュータシステムとしてすばやく選択することができる。トラブルシューティングシステムは、その分析において、疑わしいコンフィギュレーションパラメータのサンプル値を使用する。疑わしい値が収集される前にサンプル値が取り出されるときに、トラブルシューティングできる多数の異なるアプリケーションのコンフィギュレーションパラメータ値を、取り出し、保存する必要がある。さらに、これらのサンプル値は、サンプルコンピュータシステムのその当時のコンフィギュレーションを反映するために、周期的に取り出される必要がある場合がある。疑わしい値が収集された後にサンプル値が取り出される場合には、トラブルシューティングシステムは、値の取り出しを、トレーサプログラムによって識別された疑わしいコンフィギュレーションパラメータの値の取り出しに制限することができる。取り出しは、分析のときに実行されるので、サンプル値は、疑わしいコンフィギュレーションパラメータのその当時の値を表す。サンプル値の取り出しをスピードアップするために、トラブルシューティングシステムは、どのピアコンピュータシステムが病んだアプリケーションをインストールされているかのインデックスを維持することができる。トラブルシューティングシステムは、このインデックスを使用して、病んだアプリケーションがインストールされているピアコンピュータシステムを識別し、これらのコンピュータシステムだけから疑わしいコンフィギュレーションパラメータの値を取り出すことができる。一実施形態で、トラブルシューティングシステムは、様々なコンフィギュレーションパラメータを前処理して、これらを正規canonicalの形式または標準normalの形式にすることができる。そのようなコンフィギュレーションパラメータは、システム固有の名前または値を有することができる例えば、すべてのピアコンピュータシステムについて異なる。そのようなシステム固有のコンフィギュレーションパラメータに、パスワードパラメータ、ユーザ名/IDパラメータ、マシン名パラメータ、デバイスIDパラメータなどを含めることができる。トラブルシューティングシステムは、ユーザ名パラメータにusernameなど、これらのパラメータのそれぞれの値を正規の形式に設定することができる。その代わりに、トラブルシューティングシステムは、分析を実行するときに、システム固有のコンフィギュレーションパラメータを単純に無視することができる。他のコンフィギュレーションパラメータが、標準化される必要がある値を有する場合がある。例えば、その値としてURLを有するコンフィギュレーションパラメータは、大文字小文字の区別がないものとすることができるが、この情況で、トラブルシューティングシステムが、値を標準の文字standardcaseに標準化してnormalize、どの値が同一であるすなわち、同一のリソースを参照するかの識別を支援することができる。もう1つの例として、一重引用符の中の数の値例えば‘1’と二重引用符の中の数の値1が、アプリケーションにとって同一の挙動を表す場合がある。そのような状況では、トラブルシューティングシステムは、すべての二重引用符を一重引用符に置換して、値を標準化することができる。トラブルシューティングシステムは、疑わしい値およびサンプル値の両方を、正規の形式または標準の形式にすることができる。当業者は、多数の異なる数学的分析技術を使用して、誤っているコンフィギュレーションパラメータを識別できることを理解されよう。これらの技術に、最近傍分析nearestneighboranalysis、ベイズネット、ニューラルネットワーク、決定木、サポートベクトルマシンなどが含まれる。一実施形態で、トラブルシューティングシステムは、下で詳細に説明するベイズのルールを使用して、各疑わしいコンフィギュレーションパラメータが誤っている確率を計算する。図1は、一実施形態のトラブルシューティングシステムのコンポーネントを示すブロック図である。トラブルシューティングシステム110は、通信リンク130を介してコンピュータシステム120に接続される。トラブルシューティングシステムには、トラブルシューティングエンジン111、正規化コンポーネント112、サンプルセット識別コンポーネント113、および疑わしいパラメータランキングコンポーネント114が含まれる。トラブルシューティングシステムには、コンフィギュレーションデータベース115も含まれる。各ピアコンピュータシステムに、1つまたは複数のアプリケーション121、コンフィギュレーションデータストア122、およびトレーサプログラム123が含まれる。動作中に、病んだアプリケーションが識別されるときに、トレーサプログラムが、そのコンピュータシステム上で実行されて、そのアプリケーションがコンフィギュレーションデータストアからアクセスする疑わしいコンフィギュレーションパラメータをログ記録する。次に、トレーサプログラムは、通信リンク130を介してそのログをトラブルシューティングシステムに供給することができる。トラブルシューティングシステムは、疑わしいコンフィギュレーションパラメータおよびその値を受け取るときに、トラブルシューティングエンジンを呼び出す。トラブルシューティングエンジンは、正規化コンポーネントを呼び出して、システム固有のコンフィギュレーションパラメータの値を正規の形式にし、他のコンフィギュレーションパラメータの値を標準の形式にする。次に、トラブルシューティングエンジンは、サンプルセット識別コンポーネントを呼び出す。サンプルセット識別コンポーネントは、疑わしいコンフィギュレーションパラメータの値が、誤っている疑わしいコンフィギュレーションパラメータの識別に使用される、ピアコンピュータシステムを識別する。サンプルセット識別コンポーネントは、インデックスを使用して、どのピアコンピュータシステムに病んだアプリケーションがインストールされているか、したがって、どのピアコンピュータシステムがサンプルコンピュータシステムの資格があるかを識別することができる。上で説明したように、サンプルセット識別コンポーネントは、コンフィギュレーションデータベースからサンプル値を取り出すことができ、あるいは、一部のサンプルコンピュータシステムからサンプル値を動的に取り出すことができる。サンプル値を取り出した後に、トラブルシューティングエンジンは、疑わしいパラメータランキングコンポーネントを呼び出す。疑わしいパラメータランキングコンポーネントは、ベイズのルール分析を実行して、各疑わしいコンフィギュレーションパラメータが誤っている確率を計算し、その後、この確率に基づいて、疑わしいもののリストをランキングする。最高ランクのコンフィギュレーションパラメータが、誤っている可能性が最も高い。トラブルシューティングシステムを実装することができるコンピューティングデバイスには、中央処理装置、メモリ、入力デバイス例えば、キーボードおよびポインティングデバイス、出力デバイス例えば、ディスプレイデバイス、およびストレージデバイス例えば、ディスクドライブが含まれる。メモリおよびストレージデバイスは、トラブルシューティングシステムを実施する命令を含むことができるコンピュータ読み取り可能な媒体である。さらに、データ構造およびメッセージ構造を、通信リンク上の信号などのデータ伝送媒体を介して格納しまたは送信することができる。インターネット、ローカルエリアネットワーク、広域ネットワーク、またはポイントツーポイントダイヤルアップ接続など、様々な通信リンクを使用することができる。図1に、トラブルシューティングシステムを実装することができる適切なオペレーティング環境の例を示す。このオペレーティング環境は、適切なオペレーティング環境の1つの例にすぎず、トラブルシューティングシステムの使用の範囲または機能の範囲に関するいかなる限定をも示唆することを意図するものではない。使用に適する他の周知のコンピューティングシステム、コンピューティング環境、およびコンピューティングコンフィギュレーションには、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイス、ラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコン家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。このトラブルシューティングシステムを、1つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などが含まれる。通常、プログラムモジュールの機能は、望みに応じて様々な実施形態で組み合わせ、または分散することができる。用語アプリケーションは、ドライバ、カーネルモードコード、オペレーティングシステム、システムユーティリティ、ウェブサーバ、データベースサーバなど、任意の種類の実行されるソフトウェアを指す。トラブルシューティングシステムの機能は、各ピアコンピュータシステムによってまたは中央トラブルシューティングコンピュータシステムによって実行することができ、またはピアコンピュータシステムと中央トラブルシューティングシステムとの間で分散することができる。表1に、トラブルシューティング事例の例を示す。この表には、様々な疑わしいコンフィギュレーションパラメータの疑わしい値およびサンプル値が示されている。トレーサプログラムは、アプリケーションが望ましくない挙動を示したときに、疑わしいコンフィギュレーションパラメータおよびその疑わしい値をログ記録した。この例では、トレーサプログラムは、疑わしいものとして3つのコンフィギュレーションパラメータを識別した例えば、.jpg/contentType。トラブルシューティングシステムは、疑わしいコンフィギュレーションパラメータのそれぞれについて、5つのサンプルコンピュータシステムからサンプル値を取り出した。サンプル値の分析から、最も可能性が高い誤っているコンフィギュレーションパラメータが、この表の2番目のコンフィギュレーションパラメータすなわち、.htc/contentTypeであることが示されている。そのコンフィギュレーションパラメータのすべてのサンプル値は、同一すなわち、text/x-compであるが、疑わしい値nullと異なる。したがって、2番目のコンフィギュレーションパラメータの疑わしい値が不正であると仮定することができる。1番目のコンフィギュレーションパラメータの疑わしい値およびすべてのサンプル値が同一なので、この疑わしい値は、おそらく正しい。さらに、3番目のコンフィギュレーションパラメータの疑わしい値およびすべてのサンプル値は、完全に異なるので、サンプル値からこの疑わしい値の正しさを査定することは困難であろう。2番目のコンフィギュレーションパラメータが誤っている可能性があることを識別することのほかに、正しい値が、共通のサンプル値すなわち、text/x-compであると推論することができる。表1に、2つの異なる種類のコンフィギュレーションパラメータすなわち、コンフィギュレーション状態および動作状態が示されている。1番目および2番目のパラメータは、コンフィギュレーション状態であり、3番目のパラメータは、動作状態である。動作状態パラメータは、通常はアプリケーション自体によってセットされる値を有し、タイムスタンプ、使用カウント、キャッシュ、乱数ジェネレータのシードseeds、ウィンドウ位置、最も最近に使用された関連する情報などを含む。コンフィギュレーション状態パラメータは、一般に、アプリケーションの動作を制御するためにユーザがセットすることができ、したがって、誤り、アプリケーションの望ましくない挙動を引き起こす可能性が、動作状態パラメータより高い。一実施形態で、トラブルシューティングシステムは、各疑わしいコンフィギュレーションパラメータが誤っている確率を計算する際に、ベイズのルールを使用する。ベイズのルールは、次のように書くことができる。表2は、この式で使用される項の説明を含んでいる。式を単純にするために、疑わしいコンフィギュレーションパラメータのインデックスiが、これらの式では省略されている例えば、PiS|Viが、S|Vと表されている。誤っている疑わしいコンフィギュレーションパラメータが1つだけあり、すべての疑わしコンフィギュレーションパラメータが、同一の、誤っている場合の事前確率を有する場合に、である。疑わしいコンフィギュレーションパラメータの可能な値のすべてが、同一の、誤っている場合の事前確率を有する場合に、である。例として、あるコンフィギュレーションパラメータが、赤、緑、または青の値を有する場合に、そのコンフィギュレーションパラメータは、3つの一意のサンプル値を有する。トラブルシューティングシステムは、疑わしいコンフィギュレーションパラメータの一意のサンプル値発生する場合にnull値を含むの個数をカウントすることと、サンプルセットに現れないすべての可能な値を考慮するために1を加算することによって、濃度cardinalityを計算することができる。この例では、濃度は4すなわち、31である。したがって、式4の事前確率は、1/4である。疑わしいコンフィギュレーションパラメータの疑わしい値が誤っていない確率は、サンプル値から導出することができる。具体的に言うと、この確率は、サンプル値に疑わしい値が現れる回数を値の個数で割った数であると仮定することができる。この確率の最大尤度は、次式によって与えられる。式2から5を式1に代入すると、次式となる。しかし、最大尤度は、サンプルコンピュータシステムの台数が限られているときに、望ましくない特性を有する可能性がある。例えば、サンプル値にVと一致する値がないとき、m=0であり、PS|V=1であるが、これは、正当とされない完全な確実性を表す。例えば、表1では、最大尤度が、2番目および3番目のコンフィギュレーションパラメータの両方が完全かつ同一の信頼度で誤っていることを示すであろう。確率のベイズ推定は、サンプルの数が少ないときにより適切である可能性がある。ベイズ推定では、サンプル値を検査する前にPV|Hの事前推定値priorestimateを使用し、サンプル値を検査した後にPV|Hの事後推定値posteriorestimateを作成する。したがって、PV|Hは、絶対に0にも1にもならない。PV|Hが、すべての可能な値Vに対する多項式であると仮定すると、その多項式は、パラメータpjを有する。各pjは、値Vjが起きる確率であって、Σpj=17である。この確率は、ディリクレ分布で表すことができる事前および事後の値pjを有する。ディリクレ分布は、多項式に共役conjugateである。すなわち、事前ディリクレを有する多項式からの観察observationsを組み合わせることによって、事後ディリクレが作られる。ディリクレ分布は、カウントベクトルnjによって特徴付けられるものであり、このnjは、各値Vjの可能なカウントの数に対応する。PV|Hのベイズ推定を実行するために、様々な値Vjの尤度に関する事前確信priorbeliefを反映するカウントn’jの事前集合が使用される。サンプル値からの一意の値のそれぞれのカウントmjを収集することができ、事後ディリクレの平均によって、次式の事後推定値が得られる。この確率は、疑わしい値だけについて必要なので、mjを、疑わしいエントリと一致するサンプルの数mに置換することができる。さらに、すべての値Vjが同一の事前確率を有すると仮定される場合、n’jを、ある値nに置換することができ、和Σjn’jをcnに置換することができる。これらの仮定によって、次式がもたらされる。パラメータnは、事前確率を圧倒しoverwhelm、かつ、推定されたPV|H確率を、pjが1/cである推定された確率から離れるように移動させるのに必要なサンプル値の数に比例する。パラメータnは、事前確率の強さを示す。言い換えると、nが大きいほど、サンプル値の信頼度が下がる。より大きいnは、より強い事前確率につながり、これは、事後確率を変更するためにより多くの証拠すなわちサンプルを必要とする。事前確率についてn=1が選択されるフラットな事前確率と同等である場合、すべての多項式値pjは、同様に事前確率である可能性が高い。これを、情報価値がない事前確率と称する。図2および3は、一実施形態のコンフィギュレーションパラメータ取り出し関数およびトレーサ関数の処理を示す流れ図である。図2は、コンフィギュレーションデータストアからコンフィギュレーションパラメータの値を取り出すために病んだアプリケーションによって呼び出される関数の処理を示す流れ図である。この関数は、取り出されるコンフィギュレーションパラメータの識別子を渡される。ブロック201で、この関数は、コンフィギュレーションデータストア内で、識別されたコンフィギュレーションパラメータのエントリを突き止める。判断ブロック202で、エントリが突き止められた場合に、この関数は、ブロック203で継続され、そうでない場合には、この関数は、ブロック204で継続される。ブロック203では、この関数は、識別されたコンフィギュレーションパラメータの値を取り出す。ブロック204では、この関数は、トレーサ関数を呼び出し、コンフィギュレーションパラメータの識別identificationおよび取り出された値を渡す。コンフィギュレーションパラメータが突き止められなかった場合には、その値をnullにすることができる。その後、この関数は、取り出された値を病んだアプリケーションに返す。この関数は、コンフィギュレーションデータストアのアプリケーションプログラミングインターフェースの一部として実装することができる。図3は、一実施形態のトレーサ関数の処理を示す流れ図である。この関数は、コンフィギュレーションパラメータの識別子およびその値を渡される。この関数は、渡された識別子および値をログ記録する。ブロック301で、この関数は、取り出されたコンフィギュレーションパラメータの個数を増分する。一実施形態で、この関数は、コンフィギュレーションパラメータごとに1つの値だけをログ記録することができる。病んだアプリケーションが、同一のコンフィギュレーションパラメータに複数回アクセスする場合に、この関数は、最後のコンフィギュレーションパラメータおよび値の対をログ記録することができる。その場合に、この関数は、コンフィギュレーションパラメータへの重複するアクセスを検査し、重複が見つからないときに限ってコンフィギュレーションパラメータの個数を増やす必要があろう。ブロック302で、この関数は、疑わしいコンフィギュレーションパラメータ識別子を保存する。ブロック303で、この関数は、疑わしいコンフィギュレーションパラメータ値を保存し、その後、リターンする。図4から7は、一実施形態のトラブルシューティングシステムの処理を示す流れ図である。図4は、一実施形態のトラブルシューティングエンジンの処理を示す流れ図である。トラブルシューティングエンジンは、病んだアプリケーションをホスティングする病んだコンピュータシステムから、疑わしいコンフィギュレーションパラメータの値を受け取る。ブロック401で、このエンジンは、正規化コンポーネントを呼び出し、疑わしいコンフィギュレーションパラメータ識別子およびその値を渡す。ブロック402で、このエンジンは、サンプルセット識別コンポーネントを呼び出し、病んだアプリケーションの識別子および疑わしいコンフィギュレーションパラメータ識別子を渡し、代わりにサンプル値を受け取る。ブロック403で、このエンジンは、疑わしいパラメータランキングコンポーネントを呼び出し、疑わしい値およびサンプル値を渡し、各疑わしい値が誤っている確率に基づく疑わしい値のランキングを受け取る。疑わしいパラメータランキングコンポーネントは、式9に基づいてこの確率を計算する。このエンジンは、その後、完了する。図5は、一実施形態の正規化コンポーネントの処理を示す流れ図である。このコンポーネントは、疑わしいコンフィギュレーションパラメータ識別子およびその値を渡される。このコンポーネントは、システム固有コンフィギュレーションパラメータの疑わしい値を正規化する。このコンポーネントは、疑わしい値を標準化するように適合させることもできる。ブロック501で、このコンポーネントは、疑わしいコンフィギュレーションパラメータのアレイへのインデックスを初期化する。ブロック502から507で、このコンポーネントは、各疑わしいコンフィギュレーションパラメータの処理をループする。ブロック502で、このコンポーネントは、次の疑わしいコンフィギュレーションパラメータを選択する。ブロック503で、疑わしいコンフィギュレーションパラメータのすべてが既に選択されている場合に、このコンポーネントは、リターンし、そうでない場合には、このコンポーネントはブロック504に継続する。ブロック504で、このコンポーネントは、次のシステム固有コンフィギュレーションパラメータを選択する。判断ブロック505で、すべてのシステム固有コンフィギュレーションパラメータが既に選択されている場合には、このコンポーネントは、ブロック502にループして、次の疑わしいコンフィギュレーションパラメータを選択し、そうでない場合には、このコンポーネントは、ブロック506に継続する。ブロック506で、選択されたシステム固有コンフィギュレーションパラメータが、選択された疑わしいコンフィギュレーションパラメータと同一である場合には、このコンポーネントはブロック507に継続し、そうでない場合には、このコンポーネントは、ブロック504にループして、次のシステム固有コンフィギュレーションパラメータを選択する。ブロック507で、このコンポーネントは、選択された疑わしいコンフィギュレーションパラメータの値に、選択されたシステム固有コンフィギュレーションパラメータの正規の値をセットし、その後、ブロック502にループして、次の疑わしいコンフィギュレーションパラメータを選択する。図6は、一実施形態のサンプルセット識別コンポーネントの処理を示す流れ図である。このコンポーネントは、病んだアプリケーションの表示および疑わしいコンフィギュレーションパラメータを渡される。この実施形態では、このコンポーネントが、ピアコンピュータシステムから以前に取り出されたサンプル値を含むサンプルコンフィギュレーションデータベースにアクセスする。取り出しプロセスの一部として、トラブルシューティングシステムは、例えば図5の正規化コンポーネントを使用して、サンプル値を正規の形または標準の形にしている場合がある。ブロック601で、このコンポーネントは、サンプルコンピュータシステムのインデックスを初期化する。ブロック602から607で、このコンポーネントは、指定された台数が識別されるまで、サンプルコンピュータシステムの識別をループする。ブロック602で、このコンポーネントは、サンプルコンフィギュレーションデータベースから次のピアコンピュータシステムを選択する。判断ブロック603で、すべてのピアコンピュータシステムが既に選択されている場合に、このコンポーネントは、十分なサンプルコンピュータシステムが見つからなかったことの指示indicationを返し、そうでない場合には、このコンポーネントは、ブロック604に継続する。判断ブロック604では、病んだアプリケーションが、選択されたピアコンピュータシステムにインストールされている場合に、それがサンプルコンピュータシステムであり、このコンポーネントは、ブロック605に継続し、そうでない場合には、このコンポーネントは、ブロック602にループして、次のピアコンピュータシステムを選択する。ブロック605で、このコンポーネントは、識別されたサンプルコンピュータシステムのインデックスを増分する。ブロック606で、このコンポーネントは、選択されたピアコンピュータシステムの疑わしいコンフィギュレーションパラメータのそれぞれのサンプル値を取り出す。判断ブロック607で、十分なサンプルコンピュータシステムが識別されている場合に、このコンポーネントは、サンプル値を返し、そうでない場合には、このコンポーネントは、ブロック602にループして、次のピアコンピュータシステムを選択する。図7は、一実施形態の疑わしいパラメータランキングコンポーネントの動作を示す流れ図である。このコンポーネントは、疑わしい値およびサンプル値を渡される。このコンポーネントは、各疑わしいコンフィギュレーションパラメータが誤っている確率を返し、最高の確率を有するコンフィギュレーションパラメータに関する可能な正しい値の指示を返すことができる。ブロック701から708で、このコンポーネントは、各疑わしいコンフィギュレーションパラメータの選択および誤っている確率の計算をループする。ブロック701で、このコンポーネントは、次の疑わしいコンフィギュレーションパラメータiを選択する。ブロック702で、すべての疑わしいコンフィギュレーションパラメータが既に選択されている場合に、このコンポーネントは、リターンし、そうでない場合には、このコンポーネントは、ブロック703に継続する。ブロック703で、このコンポーネントは、選択された疑わしいコンフィギュレーションパラメータのサンプル内の異なる値の数ciをカウントする。トラブルシューティングシステムは、コンフィギュレーションパラメータがピアコンピュータシステムから取り出されるときに、このカウントを計算し、保存することができる。ブロック704で、このコンポーネントは、病んだコンピュータシステムから取り出すことができる、疑わしいコンフィギュレーションパラメータの個数tをセットする。ブロック705で、このコンポーネントは、サンプルセット識別コンポーネントから導出することができる、サンプルの個数Nをセットする。ブロック706で、このコンポーネントは、疑わしい値と一致する選択された疑わしいコンフィギュレーションパラメータのサンプル値の個数mijをセットする。トラブルシューティングシステムは、ピアコンピュータシステムから取り出されたコンフィギュレーションパラメータのそれぞれのサンプル値のそれぞれの出現の回数を計算し、保存することもできる。ブロック707で、このコンポーネントは、システムがサンプルに対して有する信頼度のインジケータnをセットする。ブロック708で、このコンポーネントは、式9を使用して疑わしいコンフィギュレーションパラメータの確率PS|Vを計算し、ブロック701にループして、次の疑わしいコンフィギュレーションパラメータを選択する。図8は、トラブルシューティングエンジンの結果を示すディスプレイページである。このディスプレイページを病んだコンピュータシステムによって表示して、ユーザが誤っているコンフィギュレーションパラメータを訂正するのを助けることができる。このディスプレイページには、疑わしいコンフィギュレーションパラメータごとに1行を有するテーブル801が含まれる。各行に、疑わしいコンフィギュレーションパラメータの識別、その疑わしいコンフィギュレーションパラメータが誤っている確率、その疑わしいコンフィギュレーションパラメータの疑わしい値、および正しい可能性があるサンプル値が含まれる。これらのサンプル値は、サンプル値のうちで最も個数が多いものとすることができる。このディスプレイページには、疑わしいコンフィギュレーションパラメータの値を更新するボタン802も含まれる。ユーザが、1つまたは複数の疑わしいコンフィギュレーションパラメータのサンプル値を選択し、その後、更新ボタンを選択するときに、このシステムは、病んだコンピュータシステムのコンフィギュレーションデータストア内の疑わしいコンフィギュレーションパラメータの値を、選択された値に変更する。ユーザは、その後、アプリケーションを実行して、そのアプリケーションがまだ望ましくない挙動を示すかどうかを判定することができる。そうである場合には、ユーザは、リセットボタン803を選択して、その疑わしいコンフィギュレーションパラメータを疑わしい値にリセットすることができる。ユーザは、アプリケーションがもはや望ましくない挙動を示さなくなるまで、疑わしいコンフィギュレーションパラメータおよびその値の様々な組合せについてこのプロセスを繰り返すことができる。当業者は、トラブルシューティングシステムの特定の実施形態を例示のために説明したが、本発明の趣旨および範囲から逸脱せずに様々な変更を行えることを理解されよう。このトラブルシューティングシステムは、ハードウェアコンフィギュレーション問題の識別にも使用することができる。例えば、ピアコンピュータシステムに、コンフィギュレーションパラメータを有する特殊目的信号処理ハードウェアが含まれる場合に、望ましくない挙動を示しているコンピュータシステムのこれらのコンフィギュレーションパラメータの疑わしい値を、上で説明したようにサンプル値と比較することができる。より一般的には、このトラブルシューティングシステムを、テレビジョンセットトップボックス、携帯電話機、自動車など、複数のコンフィギュレーションパラメータを有する環境で使用することができる。このトラブルシューティングシステムの教示は、望ましいまたは望ましくないのいずれであれ、ある挙動を引き起こす可能性がある情報全般の識別にも使用することができる。例えば、アプリケーションの実行が、それを実行しているコンピュータシステムの全体的なコンフィギュレーションによって悪影響を受ける場合がある。例として、望ましくない挙動が、欠けているオペレーティングシステムコンポーネント、古いドライバ、不十分なメインメモリ、ユーザとの対話、URLパラメータ、APIパラメータなどによって引き起こされる可能性がある。このトラブルシューティングシステムの技術を使用して、挙動の原因を識別するためにサンプルシステムから収集されたそのような情報を分析することができる。この技術を使用して、所望の挙動の原因を識別することもできる。例えば、複雑なシステムが、その挙動に影響する可能性がある多数の異なる可能な値を有する数百個のパラメータを有する場合がある。その場合に、パラメータ値の各可能な組合せの挙動を予測することは非現実的になる可能性がある。しかし、所望の挙動が識別されたならば、この技術を使用して、その挙動を示さないまたはその挙動を示しているサンプルセットと比較することによって、所望の挙動を引き起こす可能性が高いパラメータおよびその値を識別することができる。本明細書に記載の技術は、参照により本明細書に組み込まれる、2004年2月19日出願のFriendsTroubleshootingNetworkTowardsPrivacyPreservingAutomaticTroubleshootingという名称の米国特許仮出願第60/545799号明細書弁理士整理番号41826.8015USおよび2004年2月24日出願のMethodandSystemforCollectingInformationfromComputerSystemsbasedonaTrustedRelationshipという名称の米国特許仮出願第60/547607号明細書弁理士整理番号41826.8015US1に関係する。これらの明細書には、サンプルコンフィギュレーションパラメータ値を取り出すのに使用することができる技術が記載されている。したがって、本発明は、添付の特許請求の範囲によってのみ制限される。