(57)【要約】【課題】誤っており望ましくない挙動を引き起こす、「病んだ」コンピュータシステムのコンフィギュレーションパラメータを識別する方法およびシステムを提供すること。【解決手段】望ましくない挙動が病んだ疑惑のコンピュータシステムによって示されたときに「病んだ」アプリケーションによって使用された疑惑のコンフィギュレーションパラメータの値を収集する。複数のサンプルコンピュータシステムから疑わしいコンフィギュレーションパラメータのサンプル値を集め記憶しておく。トラブルシューティングシステムは、集めたサンプル値と疑惑の値の比較を使用して、アプリケーションに望ましくない挙動を示させる、誤っている可能性が高い１つまたは複数のコンフィギュレーションパラメータを識別する。【選択図】図４
2011258230.tif 000002
【特許請求の範囲】
【請求項１】
複数のサンプルコンピュータシステムのコンフィグレーションパラメータを記憶する方法であって、
複数のコンフィグレーションパラメータの各々について複数のサンプル値を前記複数のサンプルコンピュータからプロセッサにより取り出すステップと、
各前記コンフィグレーションパラメータについて、望まない挙動を疑惑のコンピュータシステムにせしめた可能性の高いコンフィグレーションパラメータについての疑惑の値を前記疑惑のコンピュータシステムが何時有したかを識別するために前記サンプル値を前記プロセッサにより集めるステップであって、前記コンフィグレーションパラメータについて異なるサンプル値の個数を前記プロセッサによりカウントするステップと、前記コンフィグレーションパラメータの異なるサンプル値を有するサンプルコンピュータの台数を前記プロセッサによりカウントするステップを含む、集めるステップと、
１つのコンフィグレーションパラメータについての疑惑の値と、前記コンフィグレーションパラメータについて集められた複数のサンプル値とを前記プロセッサにより比較して前記疑惑の値が前記疑惑のコンピュータシステムに望まない挙動をせしめたか否かを前記プロセッサにより判定するステップと
を備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の技術は、全般的には望ましくない挙動を引き起こす値を有するコンフィギュレーションパラメータを識別することに関する。
【背景技術】
【０００２】
様々な特徴を有するますます増え続けるアプリケーション（すなわちコンピュータソフトウェア）が、パーソナルコンピュータのユーザが入手可能である。ユーザは、様々なコンフィギュレーションパラメータを指定することによって、そのユーザの必要に合うように、これらのアプリケーションの動作を調整することができる。例えば、ブラウザアプリケーションは、ブラウザアプリケーションが開始されるときに最初に表示されるウェブページ（すなわち「ホームページ」）のＵＲＬを提供するコンフィギュレーションパラメータを有する場合がある。ブラウザアプリケーションは、あるタイプのコンテンツ（例えば「ｊｐｅｇ」ファイル）を処理するために呼び出されるプログラムを識別するコンフィギュレーションパラメータ、およびアプリケーションが様々なサーバに接続するときに使用されるパスワードを指定するコンフィギュレーションパラメータも有する場合がある。コンフィギュレーションパラメータの値は、ＵＮＩＸ（登録商標）リソースファイルなどのアプリケーション固有コンフィギュレーションファイルに、またはＷｉｎｄｏｗｓ（登録商標）レジストリファイルなどの中央レジストリに保管することができる。アプリケーションのアプリケーション固有コンフィギュレーションファイルは、そのアプリケーションに固有の内部フォーマットを有する場合がある。中央レジストリを用いて、多数の異なるアプリケーションが同一のコンフィギュレーションパラメータを共有することができる。アプリケーションは、これらのファイルにアクセスして、そのコンフィギュレーションパラメータの値を取り出す。
【０００３】
あるコンフィギュレーションパラメータが不正な値を有する場合に、アプリケーションが、望ましくない挙動を示す場合がある。例えば、ホームページコンフィギュレーションパラメータの値が正しくセットされていない場合に、ブラウザアプリケーションが起動するときに、そのブラウザアプリケーションは、ホームページを表示しないか誤ったホームページを表示することによって、望ましくない挙動を示す。コンフィギュレーションパラメータが、グラフィックスファイルを処理するためにあるテキストエディタを呼び出さなければならないと誤って示す場合に、望ましくない挙動は、グラフィックスコンテンツの不正な表示になる。
【０００４】
アプリケーションの複雑さおよびアプリケーションのコンフィギュレーションパラメータの多さのゆえに、どのコンフィギュレーションパラメータが誤っていて、アプリケーションに望ましくない挙動を示させているかをトラブルシューティングすることは、非常に時間がかかる可能性がある。パーソナルコンピュータのほとんどのユーザは、このトラブルシューティングを実行することができない。その結果、ユーザは、通常、トラブルシューティングを支援する技術サポート担当者に頼る。このトラブルシューティングが高価であるだけではなく、ユーザが、望ましくない挙動を示しているアプリケーションを効率的に使用できないことの結果として、かなりの生産性低下も経験する可能性がある。
【０００５】
通常、技術サポート担当者は、アドホックな手法を使用して、コンフィギュレーション問題をトラブルシューティングする。ある中央レジストリに、２０００００個以上のコンフィギュレーションパラメータが保管され、あるコンピュータシステムが、１０００００個以上のファイルを有するので、類似する問題の経験から得られる知識を使用する担当者は、誤っているコンフィギュレーションパラメータの絞り込みを試みる。このアドホック手法は、かなりの時間を要する可能性があり、値が誤っているコンフィギュレーションパラメータが組み合わされている場合には、さらに長くなる可能性がある。場合によっては、技術サポート担当者は、コンフィギュレーションパラメータの値をそのアプリケーションの「理想的な」値と比較することができる。アプリケーションによって使用されるコンフィギュレーションパラメータを識別することは、非常に困難である可能性があり、この識別は、アプリケーション固有の知識を必要とする。さらに、多数のコンフィギュレーションパラメータが使用可能であり、各コンフィギュレーションパラメータの多数の可能な値があるので、コンフィギュレーションパラメータの多くは、「理想的な」値を有しない。したがって、技術サポート担当者は、理想的な値と異なるアプリケーションの値を再検討する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
誤っており、アプリケーションに望ましくない挙動を示させているコンフィギュレーションパラメータを自動的に識別することが望ましい。そのようなコンフィギュレーションパラメータが識別された後に、そのコンフィギュレーションパラメータの適当な値を識別することも望ましい。
【課題を解決するための手段】
【０００７】
コンポーネント（例えばアプリケーションまたはハードウェアデバイス）がある挙動を示すことの可能性の高い原因を識別する方法およびシステムを提供する。システムは、ある挙動を引き起こす可能性があるコンフィギュレーション情報（例えば、アプリケーションのコンフィギュレーションパラメータ）の値を収集し、そのコンポーネントの他のオカレンス（例えば、同一のアプリケーションをホスティングする他のコンピュータシステム）からコンフィギュレーション情報の値を取り出す。収集された値は、すべてのコンフィギュレーション情報に関するものであるか、コンフィギュレーション情報のうちで、ある挙動が示されるときにそのコンポーネントによって実際にアクセスされる、コンフィギュレーション情報のサブセットとすることができる。システムは、収集された値および取り出された値に対する統計的分析を実行して、コンフィギュレーション情報がコンポーネントのある挙動を引き起こしている可能性が高いかどうかを判定する。
【図面の簡単な説明】
【０００８】
【図１】一実施形態のトラブルシューティングシステムのコンポーネントを示すブロック図である。
【図２】一実施形態のトレーサ関数の処理を示す流れ図である。
【図３】もう１つの実施形態のトレーサ関数の処理を示す流れ図である。
【図４】一実施形態のトラブルシューティングエンジンの処理を示す流れ図である。
【図５】一実施形態の正規化コンポーネントの処理を示す流れ図である。
【図６】一実施形態のサンプルセット識別コンポーネントの処理を示す流れ図である。
【図７】一実施形態の疑わしいパラメータランキングコンポーネントの動作を示す流れ図である。
【図８】トラブルシューティングエンジンの結果を示すディスプレイページである。
【発明を実施するための形態】
【０００９】
誤っており、望ましくない挙動を引き起こしている、「病んだ」コンピュータシステムのコンフィギュレーションパラメータを、他のコンピュータシステムからのコンフィギュレーションパラメータの分析に基づいて識別する方法およびシステムを提供する。一実施形態では、トラブルシューティングシステムは、望ましくない挙動が、病んだコンピュータシステムによって示されるときに「病んだ」アプリケーションによって使用される「疑わしい」コンフィギュレーションパラメータの「疑わしい」値を収集する。トラブルシューティングシステムは、次に、疑わしい値を、ピアコンピュータシステムとすることができるサンプルコンピュータシステムから取り出された疑わしいコンフィギュレーションパラメータのサンプル値と比較する。トラブルシューティングシステムは、その比較を使用して、アプリケーションに望ましくない挙動を示させている、誤っている可能性が高い１つまたは複数の疑わしいコンフィギュレーションパラメータを識別する。例えば、疑わしいコンフィギュレーションパラメータが、異なるテキストエディタをグラフィックスファイルの処理に使用しなければならないことを示す値を有するが、すべてのサンプルコンピュータシステムの対応するサンプル値が、所定のピクチャエディタを使用しなければならないことを示す場合に、その疑わしいコンフィギュレーションパラメータが誤っており、グラフィックスファイルを不正に表示させている可能性がある。これは、他のすべての疑わしいコンフィギュレーションパラメータの値が、病んだコンピュータシステムおよびサンプルコンピュータシステムについて同一の場合に、特にそうである可能性が高い。トラブルシューティングシステムは、誤っている可能性が高い疑わしいコンフィギュレーションパラメータを識別するときに、様々な統計分析技術をサンプル値に適用することができる。例えば、ベイズのルールを適用して、疑わしいコンフィギュレーションパラメータのそれぞれの、誤っている可能性を示す確率を導出することができる。おそらく誤っている疑わしいコンフィギュレーションパラメータが識別されると、トラブルシューティングシステムは、サンプル値の分析に基づいて、おそらく正しい値を識別することができる。したがって、トラブルシューティングシステムは、「通常の」サンプル値を、誤っているコンフィギュレーションパラメータの「理想的な」値として使用すると考えることができる。この方法で、トラブルシューティングシステムは、誤っている可能性が高いコンフィギュレーションパラメータをすばやく自動的に識別し、正しい可能性があるサンプル値を提案することができる。
【００１０】
一実施形態で、トラブルシューティングシステムは、望ましくない挙動を示すときにアプリケーションの実行をモニタリングすることによって、疑わしいコンフィギュレーションパラメータを識別する。トレーサプログラム（ｔｒａｃｅｒ  ｐｒｏｇｒａｍ）を使用して、アプリケーションのコンフィギュレーションファイルまたは中央レジストリに格納される可能性があるコンフィギュレーションパラメータへのアプリケーションのアクセスをトレースする。トレーサプログラムは、アプリケーションによってアクセスされたコンフィギュレーションパラメータとその対応する値をログに記録する。ログ記録されたコンフィギュレーションパラメータは、アプリケーションが望ましくない挙動を示したときにこのアプリケーションが使用したコンフィギュレーションパラメータなので、「疑わしい」コンフィギュレーションパラメータと見なされる。トレーサプログラムは、病んだコンピュータシステムで実行することができ、誤っている疑わしいコンフィギュレーションパラメータの識別のためにそのログをトラブルシューティングコンピュータシステムに提供することができる。
【００１１】
トラブルシューティングシステムは、病んだコンピュータシステムの疑わしい値を収集する前またはその後に、サンプルコンピュータシステムからコンフィギュレーションパラメータのサンプル値を取り出す。サンプルコンピュータシステムは、何らかの方法で関係するという意味で、「ピア（ｐｅｅｒ）」コンピュータシステムとすることができる。例えば、ピアコンピュータシステムは、ある会社のローカルエリアネットワーク上のユーザコンピュータシステムのセット、または共通の特性を共有する（例えば、販売要員によって使用される）サブセットとすることができる。疑わしい値が収集される前にサンプル値が取り出される場合に、トラブルシューティングシステムは、サンプル値をコンフィギュレーションデータベースに保管することができる。コンフィギュレーションデータベースは、ピアコンピュータシステムごとに、そのコンピュータシステムから取り出された各コンフィギュレーションパラメータの値を含むエントリを有することができる。さらに、トラブルシューティングシステムは、どのピアコンピュータシステムにどのアプリケーションがインストールされたかのインデックスを維持することができる。トラブルシューティングシステムは、このインデックスを使用して、病んだアプリケーションがインストールされているピアコンピュータシステムを、サンプルコンピュータシステムとしてすばやく選択することができる。トラブルシューティングシステムは、その分析において、疑わしいコンフィギュレーションパラメータのサンプル値を使用する。疑わしい値が収集される前にサンプル値が取り出されるときに、トラブルシューティングできる多数の異なるアプリケーションのコンフィギュレーションパラメータ値を、取り出し、保存する必要がある。さらに、これらのサンプル値は、サンプルコンピュータシステムのその当時のコンフィギュレーションを反映するために、周期的に取り出される必要がある場合がある。
【００１２】
疑わしい値が収集された後にサンプル値が取り出される場合には、トラブルシューティングシステムは、値の取り出しを、トレーサプログラムによって識別された疑わしいコンフィギュレーションパラメータの値の取り出しに制限することができる。取り出しは、分析のときに実行されるので、サンプル値は、疑わしいコンフィギュレーションパラメータのその当時の値を表す。サンプル値の取り出しをスピードアップするために、トラブルシューティングシステムは、どのピアコンピュータシステムが病んだアプリケーションをインストールされているかのインデックスを維持することができる。トラブルシューティングシステムは、このインデックスを使用して、病んだアプリケーションがインストールされているピアコンピュータシステムを識別し、これらのコンピュータシステムだけから疑わしいコンフィギュレーションパラメータの値を取り出すことができる。
【００１３】
一実施形態で、トラブルシューティングシステムは、様々なコンフィギュレーションパラメータを前処理して、これらを正規（ｃａｎｏｎｉｃａｌ）の形式または標準（ｎｏｒｍａｌ）の形式にすることができる。そのようなコンフィギュレーションパラメータは、システム固有の名前または値を有することができる（例えば、すべてのピアコンピュータシステムについて異なる）。そのようなシステム固有のコンフィギュレーションパラメータに、パスワードパラメータ、ユーザ名／ＩＤパラメータ、マシン名パラメータ、デバイスＩＤパラメータなどを含めることができる。トラブルシューティングシステムは、ユーザ名パラメータに「ｕｓｅｒｎａｍｅ」など、これらのパラメータのそれぞれの値を正規の形式に設定することができる。その代わりに、トラブルシューティングシステムは、分析を実行するときに、システム固有のコンフィギュレーションパラメータを単純に無視することができる。他のコンフィギュレーションパラメータが、標準化される必要がある値を有する場合がある。例えば、その値としてＵＲＬを有するコンフィギュレーションパラメータは、大文字小文字の区別がないものとすることができるが、この情況で、トラブルシューティングシステムが、値を標準の文字（ｓｔａｎｄａｒｄ  ｃａｓｅ）に標準化して（ｎｏｒｍａｌｉｚｅ）、どの値が同一である（すなわち、同一のリソースを参照する）かの識別を支援することができる。もう１つの例として、一重引用符の中の数の値（例えば‘１’）と二重引用符の中の数の値（“１”）が、アプリケーションにとって同一の挙動を表す場合がある。そのような状況では、トラブルシューティングシステムは、すべての二重引用符を一重引用符に置換して、値を標準化することができる。トラブルシューティングシステムは、疑わしい値およびサンプル値の両方を、正規の形式または標準の形式にすることができる。
【００１４】
当業者は、多数の異なる数学的分析技術を使用して、誤っているコンフィギュレーションパラメータを識別できることを理解されよう。これらの技術に、最近傍分析（ｎｅａｒｅｓｔ  ｎｅｉｇｈｂｏｒ  ａｎａｌｙｓｉｓ）、ベイズネット、ニューラルネットワーク、決定木、サポートベクトルマシンなどが含まれる。一実施形態で、トラブルシューティングシステムは、下で詳細に説明するベイズのルールを使用して、各疑わしいコンフィギュレーションパラメータが誤っている確率を計算する。
【００１５】
図１は、一実施形態のトラブルシューティングシステムのコンポーネントを示すブロック図である。トラブルシューティングシステム１１０は、通信リンク１３０を介してコンピュータシステム１２０に接続される。トラブルシューティングシステムには、トラブルシューティングエンジン１１１、正規化コンポーネント１１２、サンプルセット識別コンポーネント１１３、および疑わしいパラメータランキングコンポーネント１１４が含まれる。トラブルシューティングシステムには、コンフィギュレーションデータベース１１５も含まれる。各ピアコンピュータシステムに、１つまたは複数のアプリケーション１２１、コンフィギュレーションデータストア１２２、およびトレーサプログラム１２３が含まれる。動作中に、病んだアプリケーションが識別されるときに、トレーサプログラムが、そのコンピュータシステム上で実行されて、そのアプリケーションがコンフィギュレーションデータストアからアクセスする疑わしいコンフィギュレーションパラメータをログ記録する。次に、トレーサプログラムは、通信リンク１３０を介してそのログをトラブルシューティングシステムに供給することができる。トラブルシューティングシステムは、疑わしいコンフィギュレーションパラメータおよびその値を受け取るときに、トラブルシューティングエンジンを呼び出す。トラブルシューティングエンジンは、正規化コンポーネントを呼び出して、システム固有のコンフィギュレーションパラメータの値を正規の形式にし、他のコンフィギュレーションパラメータの値を標準の形式にする。次に、トラブルシューティングエンジンは、サンプルセット識別コンポーネントを呼び出す。サンプルセット識別コンポーネントは、疑わしいコンフィギュレーションパラメータの値が、誤っている疑わしいコンフィギュレーションパラメータの識別に使用される、ピアコンピュータシステムを識別する。サンプルセット識別コンポーネントは、インデックスを使用して、どのピアコンピュータシステムに病んだアプリケーションがインストールされているか、したがって、どのピアコンピュータシステムがサンプルコンピュータシステムの資格があるかを識別することができる。上で説明したように、サンプルセット識別コンポーネントは、コンフィギュレーションデータベースからサンプル値を取り出すことができ、あるいは、一部のサンプルコンピュータシステムからサンプル値を動的に取り出すことができる。サンプル値を取り出した後に、トラブルシューティングエンジンは、疑わしいパラメータランキングコンポーネントを呼び出す。疑わしいパラメータランキングコンポーネントは、ベイズのルール分析を実行して、各疑わしいコンフィギュレーションパラメータが誤っている確率を計算し、その後、この確率に基づいて、疑わしいもののリストをランキングする。最高ランクのコンフィギュレーションパラメータが、誤っている可能性が最も高い。
【００１６】
トラブルシューティングシステムを実装することができるコンピューティングデバイスには、中央処理装置、メモリ、入力デバイス（例えば、キーボードおよびポインティングデバイス）、出力デバイス（例えば、ディスプレイデバイス）、およびストレージデバイス（例えば、ディスクドライブ）が含まれる。メモリおよびストレージデバイスは、トラブルシューティングシステムを実施する命令を含むことができるコンピュータ読み取り可能な媒体である。さらに、データ構造およびメッセージ構造を、通信リンク上の信号などのデータ伝送媒体を介して格納しまたは送信することができる。インターネット、ローカルエリアネットワーク、広域ネットワーク、またはポイントツーポイントダイヤルアップ接続など、様々な通信リンクを使用することができる。
【００１７】
図１に、トラブルシューティングシステムを実装することができる適切なオペレーティング環境の例を示す。このオペレーティング環境は、適切なオペレーティング環境の１つの例にすぎず、トラブルシューティングシステムの使用の範囲または機能の範囲に関するいかなる限定をも示唆することを意図するものではない。使用に適する他の周知のコンピューティングシステム、コンピューティング環境、およびコンピューティングコンフィギュレーションには、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイス、ラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコン家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００１８】
このトラブルシューティングシステムを、１つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などが含まれる。通常、プログラムモジュールの機能は、望みに応じて様々な実施形態で組み合わせ、または分散することができる。用語「アプリケーション」は、ドライバ、カーネルモードコード、オペレーティングシステム、システムユーティリティ、ウェブサーバ、データベースサーバなど、任意の種類の実行されるソフトウェアを指す。トラブルシューティングシステムの機能は、各ピアコンピュータシステムによってまたは中央トラブルシューティングコンピュータシステムによって実行することができ、またはピアコンピュータシステムと中央トラブルシューティングシステムとの間で分散することができる。
【００１９】
【表１】
2011258230.tif 000003
【００２０】
表１に、トラブルシューティング事例の例を示す。この表には、様々な疑わしいコンフィギュレーションパラメータの疑わしい値およびサンプル値が示されている。トレーサプログラムは、アプリケーションが望ましくない挙動を示したときに、疑わしいコンフィギュレーションパラメータおよびその疑わしい値をログ記録した。この例では、トレーサプログラムは、疑わしいものとして３つのコンフィギュレーションパラメータを識別した（例えば、「．ｊｐｇ／ｃｏｎｔｅｎｔＴｙｐｅ」）。トラブルシューティングシステムは、疑わしいコンフィギュレーションパラメータのそれぞれについて、５つのサンプルコンピュータシステムからサンプル値を取り出した。サンプル値の分析から、最も可能性が高い誤っているコンフィギュレーションパラメータが、この表の２番目のコンフィギュレーションパラメータ（すなわち、「．ｈｔｃ／ｃｏｎｔｅｎｔＴｙｐｅ」）であることが示されている。そのコンフィギュレーションパラメータのすべてのサンプル値は、同一（すなわち、「ｔｅｘｔ／ｘ−ｃｏｍｐ」）であるが、疑わしい値（「ｎｕｌｌ」）と異なる。したがって、２番目のコンフィギュレーションパラメータの疑わしい値が不正であると仮定することができる。１番目のコンフィギュレーションパラメータの疑わしい値およびすべてのサンプル値が同一なので、この疑わしい値は、おそらく正しい。さらに、３番目のコンフィギュレーションパラメータの疑わしい値およびすべてのサンプル値は、完全に異なるので、サンプル値からこの疑わしい値の正しさを査定することは困難であろう。２番目のコンフィギュレーションパラメータが誤っている可能性があることを識別することのほかに、正しい値が、共通のサンプル値（すなわち、「ｔｅｘｔ／ｘ−ｃｏｍｐ」）であると推論することができる。
【００２１】
表１に、２つの異なる種類のコンフィギュレーションパラメータすなわち、コンフィギュレーション状態および動作状態が示されている。１番目および２番目のパラメータは、コンフィギュレーション状態であり、３番目のパラメータは、動作状態である。動作状態パラメータは、通常はアプリケーション自体によってセットされる値を有し、タイムスタンプ、使用カウント、キャッシュ、乱数ジェネレータのシード（ｓｅｅｄｓ）、ウィンドウ位置、最も最近に使用された関連する情報などを含む。コンフィギュレーション状態パラメータは、一般に、アプリケーションの動作を制御するためにユーザがセットすることができ、したがって、誤り、アプリケーションの望ましくない挙動を引き起こす可能性が、動作状態パラメータより高い。
【００２２】
【表２】
2011258230.tif 000004
【００２３】
一実施形態で、トラブルシューティングシステムは、各疑わしいコンフィギュレーションパラメータが誤っている確率を計算する際に、ベイズのルールを使用する。ベイズのルールは、次のように書くことができる。
【００２４】
【数１】
2011258230.tif 000005
【００２５】
表２は、この式で使用される項の説明を含んでいる。式を単純にするために、疑わしいコンフィギュレーションパラメータのインデックスｉが、これらの式では省略されている（例えば、Ｐi（Ｓ｜Ｖi）が、（Ｓ｜Ｖ）と表されている）。誤っている疑わしいコンフィギュレーションパラメータが１つだけあり、すべての疑わしコンフィギュレーションパラメータが、同一の、誤っている場合の事前確率を有する場合に、
【００２６】
【数２】
2011258230.tif 000006
【００２７】
である。疑わしいコンフィギュレーションパラメータの可能な値のすべてが、同一の、誤っている場合の事前確率を有する場合に、
【００２８】
【数３】
2011258230.tif 000007
【００２９】
である。例として、あるコンフィギュレーションパラメータが、赤、緑、または青の値を有する場合に、そのコンフィギュレーションパラメータは、３つの一意のサンプル値を有する。トラブルシューティングシステムは、疑わしいコンフィギュレーションパラメータの一意のサンプル値（発生する場合にｎｕｌｌ値を含む）の個数をカウントすることと、サンプルセットに現れないすべての可能な値を考慮するために１を加算することによって、濃度（ｃａｒｄｉｎａｌｉｔｙ）を計算することができる。この例では、濃度は４（すなわち、３＋１）である。したがって、式４の事前確率は、１／４である。
【００３０】
疑わしいコンフィギュレーションパラメータの疑わしい値が誤っていない確率は、サンプル値から導出することができる。具体的に言うと、この確率は、サンプル値に疑わしい値が現れる回数を値の個数で割った数であると仮定することができる。この確率の最大尤度は、次式によって与えられる。
【００３１】
【数４】
2011258230.tif 000008
【００３２】
式（２）から（５）を式（１）に代入すると、次式となる。
【００３３】
【数５】
2011258230.tif 000009
【００３４】
しかし、最大尤度は、サンプルコンピュータシステムの台数が限られているときに、望ましくない特性を有する可能性がある。例えば、サンプル値にＶと一致する値がないとき、ｍ＝０であり、Ｐ（Ｓ｜Ｖ）＝１であるが、これは、正当とされない完全な確実性を表す。例えば、表１では、最大尤度が、２番目および３番目のコンフィギュレーションパラメータの両方が完全かつ同一の信頼度で誤っていることを示すであろう。確率のベイズ推定は、サンプルの数が少ないときにより適切である可能性がある。ベイズ推定では、サンプル値を検査する前にＰ（Ｖ｜Ｈ）の事前推定値（ｐｒｉｏｒ  ｅｓｔｉｍａｔｅ）を使用し、サンプル値を検査した後にＰ（Ｖ｜Ｈ）の事後推定値（ｐｏｓｔｅｒｉｏｒ  ｅｓｔｉｍａｔｅ）を作成する。したがって、Ｐ（Ｖ｜Ｈ）は、絶対に０にも１にもならない。
【００３５】
Ｐ（Ｖ｜Ｈ）が、すべての可能な値Ｖに対する多項式であると仮定すると、その多項式は、パラメータｐjを有する。各ｐjは、値Ｖjが起きる確率であって、
Σｐj＝１                                                            （７）である。この確率は、ディリクレ分布で表すことができる事前および事後の値ｐjを有する。ディリクレ分布は、多項式に共役（ｃｏｎｊｕｇａｔｅ）である。すなわち、事前ディリクレを有する多項式からの観察（ｏｂｓｅｒｖａｔｉｏｎｓ）を組み合わせることによって、事後ディリクレが作られる。
【００３６】
ディリクレ分布は、カウントベクトルｎjによって特徴付けられるものであり、このｎjは、各値Ｖjの可能なカウントの数に対応する。Ｐ（Ｖ｜Ｈ）のベイズ推定を実行するために、様々な値Ｖjの尤度に関する事前確信（ｐｒｉｏｒ  ｂｅｌｉｅｆ）を反映するカウントｎ’jの事前集合が使用される。サンプル値からの一意の値のそれぞれのカウントｍjを収集することができ、事後ディリクレの平均によって、次式の事後推定値が得られる。
【００３７】
【数６】
2011258230.tif 000010
【００３８】
この確率は、疑わしい値だけについて必要なので、ｍjを、疑わしいエントリと一致するサンプルの数ｍに置換することができる。さらに、すべての値Ｖjが同一の事前確率を有すると仮定される場合、ｎ’jを、ある値ｎに置換することができ、和Σjｎ’jをｃ
ｎに置換することができる。これらの仮定によって、次式がもたらされる。
【００３９】
【数７】
2011258230.tif 000011
【００４０】
パラメータｎは、事前確率を圧倒し（ｏｖｅｒｗｈｅｌｍ）、かつ、推定されたＰ（Ｖ｜Ｈ）確率を、ｐjが１／ｃである推定された確率から離れるように移動させるのに必要なサンプル値の数に比例する。パラメータｎは、事前確率の強さを示す。言い換えると、ｎが大きいほど、サンプル値の信頼度が下がる。より大きいｎは、より強い事前確率につながり、これは、事後確率を変更するためにより多くの証拠（すなわちサンプル）を必要とする。事前確率についてｎ＝１が選択される（フラットな事前確率と同等である）場合、すべての多項式値ｐjは、同様に事前確率である可能性が高い。これを、「情報価値がない」事前確率と称する。
【００４１】
図２および３は、一実施形態のコンフィギュレーションパラメータ取り出し関数およびトレーサ関数の処理を示す流れ図である。図２は、コンフィギュレーションデータストアからコンフィギュレーションパラメータの値を取り出すために病んだアプリケーションによって呼び出される関数の処理を示す流れ図である。この関数は、取り出されるコンフィギュレーションパラメータの識別子を渡される。ブロック２０１で、この関数は、コンフィギュレーションデータストア内で、識別されたコンフィギュレーションパラメータのエントリを突き止める。判断ブロック２０２で、エントリが突き止められた場合に、この関数は、ブロック２０３で継続され、そうでない場合には、この関数は、ブロック２０４で継続される。ブロック２０３では、この関数は、識別されたコンフィギュレーションパラメータの値を取り出す。ブロック２０４では、この関数は、トレーサ関数を呼び出し、コンフィギュレーションパラメータの識別（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）および取り出された値を渡す。コンフィギュレーションパラメータが突き止められなかった場合には、その値をｎｕｌｌにすることができる。その後、この関数は、取り出された値を病んだアプリケーションに返す。この関数は、コンフィギュレーションデータストアのアプリケーションプログラミングインターフェースの一部として実装することができる。
【００４２】
図３は、一実施形態のトレーサ関数の処理を示す流れ図である。この関数は、コンフィギュレーションパラメータの識別子およびその値を渡される。この関数は、渡された識別子および値をログ記録する。ブロック３０１で、この関数は、取り出されたコンフィギュレーションパラメータの個数を増分する。一実施形態で、この関数は、コンフィギュレーションパラメータごとに１つの値だけをログ記録することができる。病んだアプリケーションが、同一のコンフィギュレーションパラメータに複数回アクセスする場合に、この関数は、最後のコンフィギュレーションパラメータおよび値の対をログ記録することができる。その場合に、この関数は、コンフィギュレーションパラメータへの重複するアクセスを検査し、重複が見つからないときに限ってコンフィギュレーションパラメータの個数を増やす必要があろう。ブロック３０２で、この関数は、疑わしいコンフィギュレーションパラメータ識別子を保存する。ブロック３０３で、この関数は、疑わしいコンフィギュレーションパラメータ値を保存し、その後、リターンする。
【００４３】
図４から７は、一実施形態のトラブルシューティングシステムの処理を示す流れ図である。図４は、一実施形態のトラブルシューティングエンジンの処理を示す流れ図である。トラブルシューティングエンジンは、病んだアプリケーションをホスティングする病んだコンピュータシステムから、疑わしいコンフィギュレーションパラメータの値を受け取る。ブロック４０１で、このエンジンは、正規化コンポーネントを呼び出し、疑わしいコンフィギュレーションパラメータ識別子およびその値を渡す。ブロック４０２で、このエンジンは、サンプルセット識別コンポーネントを呼び出し、病んだアプリケーションの識別子および疑わしいコンフィギュレーションパラメータ識別子を渡し、代わりにサンプル値を受け取る。ブロック４０３で、このエンジンは、疑わしいパラメータランキングコンポーネントを呼び出し、疑わしい値およびサンプル値を渡し、各疑わしい値が誤っている確率に基づく疑わしい値のランキングを受け取る。疑わしいパラメータランキングコンポーネントは、式９に基づいてこの確率を計算する。このエンジンは、その後、完了する。
【００４４】
図５は、一実施形態の正規化コンポーネントの処理を示す流れ図である。このコンポーネントは、疑わしいコンフィギュレーションパラメータ識別子およびその値を渡される。このコンポーネントは、システム固有コンフィギュレーションパラメータの疑わしい値を正規化する。このコンポーネントは、疑わしい値を標準化するように適合させることもできる。ブロック５０１で、このコンポーネントは、疑わしいコンフィギュレーションパラメータのアレイへのインデックスを初期化する。ブロック５０２から５０７で、このコンポーネントは、各疑わしいコンフィギュレーションパラメータの処理をループする。ブロック５０２で、このコンポーネントは、次の疑わしいコンフィギュレーションパラメータを選択する。ブロック５０３で、疑わしいコンフィギュレーションパラメータのすべてが既に選択されている場合に、このコンポーネントは、リターンし、そうでない場合には、このコンポーネントはブロック５０４に継続する。ブロック５０４で、このコンポーネントは、次のシステム固有コンフィギュレーションパラメータを選択する。判断ブロック５０５で、すべてのシステム固有コンフィギュレーションパラメータが既に選択されている場合には、このコンポーネントは、ブロック５０２にループして、次の疑わしいコンフィギュレーションパラメータを選択し、そうでない場合には、このコンポーネントは、ブロック５０６に継続する。ブロック５０６で、選択されたシステム固有コンフィギュレーションパラメータが、選択された疑わしいコンフィギュレーションパラメータと同一である場合には、このコンポーネントはブロック５０７に継続し、そうでない場合には、このコンポーネントは、ブロック５０４にループして、次のシステム固有コンフィギュレーションパラメータを選択する。ブロック５０７で、このコンポーネントは、選択された疑わしいコンフィギュレーションパラメータの値に、選択されたシステム固有コンフィギュレーションパラメータの正規の値をセットし、その後、ブロック５０２にループして、次の疑わしいコンフィギュレーションパラメータを選択する。
【００４５】
図６は、一実施形態のサンプルセット識別コンポーネントの処理を示す流れ図である。このコンポーネントは、病んだアプリケーションの表示および疑わしいコンフィギュレーションパラメータを渡される。この実施形態では、このコンポーネントが、ピアコンピュータシステムから以前に取り出されたサンプル値を含むサンプルコンフィギュレーションデータベースにアクセスする。取り出しプロセスの一部として、トラブルシューティングシステムは、例えば図５の正規化コンポーネントを使用して、サンプル値を正規の形または標準の形にしている場合がある。ブロック６０１で、このコンポーネントは、サンプルコンピュータシステムのインデックスを初期化する。ブロック６０２から６０７で、このコンポーネントは、指定された台数が識別されるまで、サンプルコンピュータシステムの識別をループする。ブロック６０２で、このコンポーネントは、サンプルコンフィギュレーションデータベースから次のピアコンピュータシステムを選択する。判断ブロック６０３で、すべてのピアコンピュータシステムが既に選択されている場合に、このコンポーネントは、十分なサンプルコンピュータシステムが見つからなかったことの指示（ｉｎｄｉｃａｔｉｏｎ）を返し、そうでない場合には、このコンポーネントは、ブロック６０４に継続する。判断ブロック６０４では、病んだアプリケーションが、選択されたピアコンピュータシステムにインストールされている場合に、それがサンプルコンピュータシステムであり、このコンポーネントは、ブロック６０５に継続し、そうでない場合には、このコンポーネントは、ブロック６０２にループして、次のピアコンピュータシステムを選択する。ブロック６０５で、このコンポーネントは、識別されたサンプルコンピュータシステムのインデックスを増分する。ブロック６０６で、このコンポーネントは、選択されたピアコンピュータシステムの疑わしいコンフィギュレーションパラメータのそれぞれのサンプル値を取り出す。判断ブロック６０７で、十分なサンプルコンピュータシステムが識別されている場合に、このコンポーネントは、サンプル値を返し、そうでない場合には、このコンポーネントは、ブロック６０２にループして、次のピアコンピュータシステムを選択する。
【００４６】
図７は、一実施形態の疑わしいパラメータランキングコンポーネントの動作を示す流れ図である。このコンポーネントは、疑わしい値およびサンプル値を渡される。このコンポーネントは、各疑わしいコンフィギュレーションパラメータが誤っている確率を返し、最高の確率を有するコンフィギュレーションパラメータに関する可能な正しい値の指示を返すことができる。ブロック７０１から７０８で、このコンポーネントは、各疑わしいコンフィギュレーションパラメータの選択および誤っている確率の計算をループする。ブロック７０１で、このコンポーネントは、次の疑わしいコンフィギュレーションパラメータｉを選択する。ブロック７０２で、すべての疑わしいコンフィギュレーションパラメータが既に選択されている場合に、このコンポーネントは、リターンし、そうでない場合には、このコンポーネントは、ブロック７０３に継続する。ブロック７０３で、このコンポーネントは、選択された疑わしいコンフィギュレーションパラメータのサンプル内の異なる値の数ｃiをカウントする。トラブルシューティングシステムは、コンフィギュレーションパラメータがピアコンピュータシステムから取り出されるときに、このカウントを計算し、保存することができる。ブロック７０４で、このコンポーネントは、病んだコンピュータシステムから取り出すことができる、疑わしいコンフィギュレーションパラメータの個数ｔをセットする。ブロック７０５で、このコンポーネントは、サンプルセット識別コンポーネントから導出することができる、サンプルの個数Ｎをセットする。ブロック７０６で、このコンポーネントは、疑わしい値と一致する選択された疑わしいコンフィギュレーションパラメータのサンプル値の個数ｍijをセットする。トラブルシューティングシステムは、ピアコンピュータシステムから取り出されたコンフィギュレーションパラメータのそれぞれのサンプル値のそれぞれの出現の回数を計算し、保存することもできる。ブロック７０７で、このコンポーネントは、システムがサンプルに対して有する信頼度のインジケータｎをセットする。ブロック７０８で、このコンポーネントは、式９を使用して疑わしいコンフィギュレーションパラメータの確率Ｐ（Ｓ｜Ｖ）を計算し、ブロック７０１にループして、次の疑わしいコンフィギュレーションパラメータを選択する。
【００４７】
図８は、トラブルシューティングエンジンの結果を示すディスプレイページである。このディスプレイページを病んだコンピュータシステムによって表示して、ユーザが誤っているコンフィギュレーションパラメータを訂正するのを助けることができる。このディスプレイページには、疑わしいコンフィギュレーションパラメータごとに１行を有するテーブル８０１が含まれる。各行に、疑わしいコンフィギュレーションパラメータの識別、その疑わしいコンフィギュレーションパラメータが誤っている確率、その疑わしいコンフィギュレーションパラメータの疑わしい値、および正しい可能性があるサンプル値が含まれる。これらのサンプル値は、サンプル値のうちで最も個数が多いものとすることができる。このディスプレイページには、疑わしいコンフィギュレーションパラメータの値を更新するボタン８０２も含まれる。ユーザが、１つまたは複数の疑わしいコンフィギュレーションパラメータのサンプル値を選択し、その後、更新ボタンを選択するときに、このシステムは、病んだコンピュータシステムのコンフィギュレーションデータストア内の疑わしいコンフィギュレーションパラメータの値を、選択された値に変更する。ユーザは、その後、アプリケーションを実行して、そのアプリケーションがまだ望ましくない挙動を示すかどうかを判定することができる。そうである場合には、ユーザは、リセットボタン８０３を選択して、その疑わしいコンフィギュレーションパラメータを疑わしい値にリセットすることができる。ユーザは、アプリケーションがもはや望ましくない挙動を示さなくなるまで、疑わしいコンフィギュレーションパラメータおよびその値の様々な組合せについてこのプロセスを繰り返すことができる。
【００４８】
当業者は、トラブルシューティングシステムの特定の実施形態を例示のために説明したが、本発明の趣旨および範囲から逸脱せずに様々な変更を行えることを理解されよう。このトラブルシューティングシステムは、ハードウェアコンフィギュレーション問題の識別にも使用することができる。例えば、ピアコンピュータシステムに、コンフィギュレーションパラメータを有する特殊目的信号処理ハードウェアが含まれる場合に、望ましくない挙動を示しているコンピュータシステムのこれらのコンフィギュレーションパラメータの疑わしい値を、上で説明したようにサンプル値と比較することができる。より一般的には、このトラブルシューティングシステムを、テレビジョンセットトップボックス、携帯電話機、自動車など、複数のコンフィギュレーションパラメータを有する環境で使用することができる。このトラブルシューティングシステムの教示は、望ましいまたは望ましくないのいずれであれ、ある挙動を引き起こす可能性がある情報全般の識別にも使用することができる。例えば、アプリケーションの実行が、それを実行しているコンピュータシステムの全体的なコンフィギュレーションによって悪影響を受ける場合がある。例として、望ましくない挙動が、欠けているオペレーティングシステムコンポーネント、古いドライバ、不十分なメインメモリ、ユーザとの対話、ＵＲＬパラメータ、ＡＰＩパラメータなどによって引き起こされる可能性がある。このトラブルシューティングシステムの技術を使用して、挙動の原因を識別するためにサンプルシステムから収集されたそのような情報を分析することができる。この技術を使用して、所望の挙動の原因を識別することもできる。例えば、複雑なシステムが、その挙動に影響する可能性がある多数の異なる可能な値を有する数百個の「パラメータ」を有する場合がある。その場合に、パラメータ値の各可能な組合せの挙動を予測することは非現実的になる可能性がある。しかし、所望の挙動が識別されたならば、この技術を使用して、その挙動を示さない（またはその挙動を示している）サンプルセットと比較することによって、所望の挙動を引き起こす可能性が高いパラメータおよびその値を識別することができる。本明細書に記載の技術は、参照により本明細書に組み込まれる、２００４年２月１９日出願の「Friends Troubleshooting Network: Towards Privacy-Preserving, Automatic Troubleshooting」という名称の米国特許仮出願第６０／５４５７９９号明細書（弁理士整理番号４１８２６．８０１５ＵＳ）および２００４年２月２４日出願の「Method and System for Collecting Information from Computer Systems based on a Trusted Relationship」という名称の米国特許仮出願第６０／５４７６０７号明細書（弁理士整理番号４１８２６．８０１５ＵＳ１）に関係する。これらの明細書には、サンプルコンフィギュレーションパラメータ値を取り出すのに使用することができる技術が記載されている。したがって、本発明は、添付の特許請求の範囲によってのみ制限される。
【符号の説明】
【００４９】
１１０  トラブルシューティングシステム
１１１  トラブルシューティングエンジン
１１２  正規化コンポーネント
１１３  サンプルセット識別コンポーネント
１１４  疑わしいパラメータランキングコンポーネント
１１５  コンフィギュレーションデータベース
１２１  アプリケーション
１２３  トレーサ
１２２  コンフィギュレーションデータストア
【図１】
2011258230.tif 000012
【図２】
2011258230.tif 000013
【図３】
2011258230.tif 000014
【図４】
2011258230.tif 000015
【図５】
2011258230.tif 000016
【図６】
2011258230.tif 000017
【図７】
2011258230.tif 000018
【図８】
2011258230.tif 000019