(57)【特許請求の範囲】
【請求項１】
診断データを収集するためにマルチスレッド化コンピューティング環境を操作するための方法であって、前記方法が、
前記コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネントを開始するステップと、
第１のスレッドにより、前記コンピューティング環境に関する診断データを記録するステップとを含み、
前記コンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する、前記所定の無効状態の発生の合計カウント、または前記所定の無効状態の発生をモニターする期間のうちの少なくとも一方について、前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録する前記ステップを前記トラップ遅延コンポーネントが遅延させ、前記過渡状態が１つまたは複数の他のスレッドによる第１の有効状態から第２の有効状態への前記コンピューティング環境の遷移に対応する、方法。
【請求項２】
前記所定の無効状態が前記コンピューティング環境のデータ・ストア内のデータの内容によって示される、請求項１記載の方法。
【請求項３】
前記データが破損している、請求項２記載の方法。
【請求項４】
前記データが不完全である、請求項２記載の方法。
【請求項５】
前記無効状態が前記コンピューティング環境で発生する一連のイベントによって示される、請求項１記載の方法。
【請求項６】
前記一連のイベントが、前記コンピューティング環境内の１つまたは複数のスレッドで行われる処理アクションに対応する、請求項５記載の方法。
【請求項７】
前記所定のインジケータを前記所定の無効状態の発生の合計カウントに設定することをさらに含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
前記所定のインジケータを前記所定の無効状態の発生をモニターするための期間に設定することをさらに含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
診断データを収集するためのマルチスレッド化コンピューティング環境における装置であって、
前記コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネントを開始するための手段と、
第１のスレッドにより、前記コンピューティング環境に関する診断データを記録するための手段とを含み、
前記コンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する、前記所定の無効状態の発生の合計カウント、または前記所定の無効状態の発生をモニターする期間のうちの少なくとも一方について、前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録するための前記手段の動作を前記トラップ遅延コンポーネントが遅延させ、前記過渡状態が１つまたは複数の他のスレッドによる第１の有効状態から第２の有効状態への前記コンピューティング環境の遷移に対応する、装置。
【請求項１０】
中央演算処理装置と、メモリ・サブシステムと、入出力サブシステムと、前記中央演算処理装置、前記メモリ・サブシステム、前記入出力サブシステムを相互接続するバス・サブシステムと、請求項９記載の前記装置とを含む装置。
【請求項１１】
請求項１ないし８のいずれか１つに記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、無効状態の判断時のコンピュータ環境における診断データ収集（diagnosticdata capture）に関する。特に、本発明は、無効状態の検証に関する。
【背景技術】
【０００２】
マルチスレッド化コンピューティング環境（multithreaded computing environment）は、ソフトウェアを実行する複数のスレッドを同時に実行することができる。このような環境は、複数の命令を同時に実行できる複数のプロセッサまたは単一プロセッサを含む１つまたは複数のコンピュータ・システムを伴う可能性がある。
【０００３】
このような環境における問題判別および解決は、診断を支援するためのソフトウェアおよびハードウェア・ツールに頼っている。典型的に、コンピューティング環境においてソフトウェア・コードによりイベントの流れに関する情報を記録する能力が存在する。たとえば、IBM CICS製品には、「CICS Trace」として知られる機能が提供されている（ＩＢＭおよびＣＩＣＳは、米国、その他の国、またはその両方におけるインターナショナル・ビジネス・マシーンズ社の登録商標である）。これにより、実行のスレッドがコンピューティング環境内の種々のソフトウェア・プログラムを移動するときに発生順に一連のイベントを収集することができる。
【０００４】
時には、特定のイベント（または一連のイベント）が発生したときに、追跡で提供される既存の診断データが特定の問題を解決するには不十分である場合、問題判別診断を収集する必要がある。コンピューティング環境の状態が不安定な動作状態、効果的ではない動作状態、または誤った動作状態を示すと判断されたときにその状態をモニターし、診断データを収集するためのモニターおよび診断ロジックをソフトウェアで実現することができる。このような状態は無効な実行状態と呼ぶことができる。ＣＩＣＳの例では、これは、「ＤＦＨＴＲＡＰ」として知られるプログラムを使用して達成することができ、このプログラムは、その実行の特定のポイントでコンピューティング環境の状態を分析し、その時点における環境の状態次第で診断データを収集すべきかどうかについて決定することができる。
【０００５】
単一スレッド方式で実行するように実現されたコンピューティング環境では、一度に一続きの論理演算のみを実行することができ、その環境の状態を分析するモニターおよび診断ロジックは、それが分析されているときにその状態が静的であると確信することができる。これは、無効状態が検出された場合にそれが障害のインスタンスを表し、したがって、それに関する診断データを収集することが正しいことを意味する。
【０００６】
しかし、複数のオープン・タスク制御ブロック（ＴＣＢ）を有するCICS Transaction Serverなどのマルチスレッド化コンピューティング環境では、コンピューティング環境がモニターされている間にその環境の状態が変化する可能性がある。モニターおよび診断スレッド以外の実行スレッドがモニター動作と同時に実行し続け、潜在的にコンピューティング環境の状態を変更するので、このような状態の変化が発生する可能性がある。このため、実際には他のスレッドが同じ瞬間にその環境の状態を変更した結果であるときに、その環境が無効状態になっているように見える可能性がある。
【０００７】
マルチスレッド化コンピューティング環境において問題となる可能性のある動作としては、たとえば、リンク・リスト・データ構造へのリスト項目の追加またはそこからのリスト項目の除去、インスタンス・データの更新、カウンタのインクリメントまたはデクリメント（しきい値以上または以下など）などを含む。このような動作は最終的にコンピューティング環境の無効状態になるわけではないが、動作全体に関連して理解されない場合に無効と見なされる可能性のある過渡状態による遷移を伴う可能性がある。たとえば、リンク・リスト・データ構造に項目を追加すると、瞬間的に、未初期化（その結果、無効な）メモリ参照（ポインタ）を含むリスト項目が新たに作成される可能性がある。このようなデータを分析するモニターおよび診断ロジックは、実際にはその状態が単に過渡状態であるときに、無効メモリ参照のために無効状態であると結論を下す可能性があり、新しいリンク・リスト項目を追加する動作全体の一部と見なされると、その動作は無効メモリ参照をまったく含まない有効リスト項目入力で終わることになる。同様に、カウンタに所定のしきい値を超えさせるようなカウンタのインクリメントを行うと、瞬間的に、しきい値を超えたのでモニターおよび診断ロジックによって無効状態と判断される可能性がある。実際にはその状態は単に過渡状態であり、カウンタをインクリメントし、カウンタをリセットする前にしきい値の違反の有無をチェックする動作全体の一部と見なされると、その動作は有効状態で終わることになる。したがって、モニターおよび診断ロジックによる無効状態の誤った肯定的判断がマルチスレッド化コンピューティング環境で発生する可能性があり、その結果、診断データが不必要に収集される可能性がある。
【０００８】
ＣＩＣＳのようなオンライン・トランザクション処理環境など、忙しい生産環境では、不必要な診断データを収集すると、その結果、パフォーマンスが大幅に劣化する可能性がある。明らかな解決策は、モニターおよび診断ロジックが実行している間、モニターおよび診断スレッド以外のすべてのスレッドを中断するようその環境に強制することなどにより、モニターおよび診断動作中にコンピューティング環境を同期させることである。モニターが行われるたびにすべてのスレッドが中断されるので、このような同期はコンピューティング環境に実行できないパフォーマンス・ボトルネックを課すことになり、その結果、パフォーマンスが低下する。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
したがって、コンピューティング環境の状態における有効な過渡変化による診断データも収集し、診断データの不必要な収集から発生するパフォーマンスの劣化を被る可能性なしにコンピューティング環境の無効状態に関する診断データを収集することは、現在、不可能である。
【課題を解決するための手段】
【００１０】
したがって、本発明は、第１の態様において、診断データを収集するためのマルチスレッド化コンピューティング環境における方法を提供し、この方法は、コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネント（trap delay component）を開始するステップと、第１のスレッドにより、コンピューティング環境に関する診断データを記録するステップとを含み，それがコンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する合計カウントまたは期間のうちの少なくとも一方について前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録する前記ステップをトラップ遅延コンポーネントが遅延させ、過渡状態は１つまたは複数の他のスレッドによる第１の有効状態から第２の有効状態へのコンピューティング環境の遷移に対応する。
【００１１】
好ましくは、所定の無効状態は、コンピューティング環境のデータ・ストア内のデータの内容によって示される。所定の無効状態のデータは、破損しているかまたは不完全なデータである可能性がある。所定の無効状態は、コンピューティング環境で発生する一連のイベントによって示すことができる。一連のイベントは、コンピューティング環境内の１つまたは複数のスレッドで行われる処理アクションに対応することができる。この方法は、前記所定のインジケータを前記所定の無効状態の発生の合計カウントに設定することをさらに含むことができる。この方法は、前記所定のインジケータを前記所定の無効状態の発生をモニターするための期間に設定することをさらに含むことができる。
【００１２】
したがって、本発明は、第２の態様において、診断データを収集するためのマルチスレッド化コンピューティング環境における装置を提供し、この装置は、コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネントを開始するための手段と、第１のスレッドにより、コンピューティング環境に関する診断データを記録するための手段とを含み，それがコンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する合計カウントまたは期間のうちの少なくとも一方について前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録するための前記手段の動作をトラップ遅延コンポーネントが遅延させ、過渡状態は１つまたは複数の他のスレッドによる第１の有効状態から第２の有効状態へのコンピューティング環境の遷移に対応する。
【００１３】
したがって、本発明は、第３の態様において、中央演算処理装置と、メモリ・サブシステムと、入出力サブシステムと、中央演算処理装置、メモリ・サブシステム、入出力サブシステム、および上記の装置を相互接続するバス・サブシステムとを含む装置を提供する。
【００１４】
したがって、本発明は、第４の態様において、コンピュータ・システムにロードされ、そこで実行されたときに、上記の方法のステップをコンピュータに実行させるためのコンピュータ・プログラム・コードを含むコンピュータ・プログラム要素を提供する。
【００１５】
添付図面に関連して、一例としてのみ、本発明の好ましい一実施形態について、以下により詳細に説明する。
【図面の簡単な説明】
【００１６】
【図１】従来技術によりマルチスレッド化コンピューティング環境が無効状態にあるときの診断データの収集のためのモニターおよび診断ロジックを含むマルチスレッド化コンピューティング環境のブロック図である。
【図２】本発明の諸実施形態の動作に適したコンピュータ・システムのブロック図である。
【図３】本発明の好ましい一実施形態によりマルチスレッド化コンピューティング環境が無効状態にあるときの診断データの収集のためのモニターおよび診断ロジックを含むマルチスレッド化コンピューティング環境のブロック図である。
【図４】本発明の好ましい一実施形態による図３のモニターおよび診断ロジックの動作の流れ図である。
【発明を実施するための形態】
【００１７】
図１は、従来技術によりマルチスレッド化コンピューティング環境が無効状態にあるときの診断データ１１８の収集のためのモニターおよび診断ロジック１０８を含むマルチスレッド化コンピューティング環境１０２のブロック図である。マルチスレッド化コンピューティング環境１０２は複数のソフトウェア・スレッド１０６、１１４、１１６を含む。各スレッドは、ソフトウェア実行の個別のストリームであり、ソフトウェア命令を含む。また、スレッド１０６、１１４、１１６は、メモリ・スタックとして知られるコンピュータ・システム内の記憶領域に通常保管されたスレッド・データも含むことができる。スレッド１０６、１１４、および１１６は、マルチプロセッサ・コンピュータ・システムなどの１つまたは複数のコンピュータ・システム、同時に複数のソフトウェア命令の実行のために複数のサブプロセッサを含むシステム（マルチコア・プロセッサなど）、あるいは１つまたは複数のソフトウェア・アプリケーションの実行のために通信可能に接続された複数のコンピュータ・システムを有するコンピューティング環境で実質的に同時に実行される。代わって、スレッド１０６、１１４、および１１６は、単一プロセッサが複数のスレッド間で共用され、個々の命令が一度に１つずつ処理される間に複数のスレッドを実質的に同時に実行できるような、多重化またはチャネル化ベースの単一プロセッサ内で実行することができる。たとえば、処理装置は、ラウンドロビン、時分割、または優先順位主導ベースで複数のスレッド間でその処理を分割することができる。
【００１８】
第１のスレッド１０６は、無効状態に対応する問題のある動作状態についてコンピューティング環境１０２の全部または一部の実行をモニターする、モニターおよび診断ロジック１０８の実行を含む。第１のスレッド１０６はモニターおよび診断ロジック１０８専用にすることができる。代わって、モニターおよび診断ロジック１０８は、ソフトウェア・アプリケーション動作など、他のソフトウェア動作の実行にも使用される、スレッド１０６の一部として実行することができる。たとえば、モニターおよび診断ロジック１０８は、所定のスケジュールに応じて定期的に、あるいは環境の作業負荷が十分に重いかまたは軽いときなど、コンピューティング環境内の条件が許すときに、実行することができる。
【００１９】
モニターおよび診断ロジック１０８は、無効状態を識別するためにスレッド１０６、１１４、および１１６内でソフトウェア動作の実行をモニターするためのソフトウェア・ルーチンである状態モニター１１０を含む。さらに、状態モニター１１０は、無効データ状態について、コンピューティング環境１０２に関連する揮発性または不揮発性メモリなど、コンピューティング環境１０２用の１つまたは複数のデータ・ストア（図示せず）をモニターする。たとえば、このようなメモリとしては、コンピューティング環境１０２用の１つまたは複数のメモリ・ヒープを含むことができる。
【００２０】
このようにして、状態モニター１１０は、破損しているかまたは不完全なものに見えるデータなど、コンピューティング環境のデータ・ストア内のデータの内容によって示される無効状態と、誤っているかまたは誤り状態を示す、コンピューティング環境１０２内の１つまたは複数のスレッドで行われる処理アクションなど、コンピューティング環境１０２で発生する一連のイベントによって示される無効状態という２通りの一般的なカテゴリに属する無効状態を判別することができる。
【００２１】
状態モニター１１０は、コンピューティング環境１０２に関する無効状態の規則、基準、または特性の定義を提供する所定の無効状態情報１０４を基準としてコンピューティング環境１０２の無効状態を識別する。無効状態情報１０４は、揮発性または不揮発性記憶装置、ヒープ・メモリ、ディスクまたはテープ、フラッシュ・メモリ、あるいは任意のその他の適切なメモリなど、コンピューティング環境のメモリに保管することができる。無効状態情報１０４は、データ構造などの構造化データ・フォーマットに、または代わって、ＸＭＬまたはその他の意味データ・フォーマットなど、構文解析可能なフォーマットに編成することができる。さらに、無効状態情報１０４はデータベースに保管することができる。
【００２２】
無効状態情報１０４は、上記の２通りの一般的なカテゴリの無効状態においてコンピューティング環境１０２の無効状態を識別する際に状態モニター１１０を支援するのに適している。たとえば、コンピューティング環境１０２のデータ・ストア内のデータの内容によって示される無効状態は、無効データを特徴付ける１組の基準として無効状態情報１０４に表すことができる。無効参照（ポインタなど）は、アドレス可能範囲の外側にあるメモリ・アドレス、あるいは安全なまたは保護されたメモリ範囲内のメモリ・ロケーションであって、直接アクセス可能ではないかまたは直接アクセス可能であってはならないメモリ・ロケーションを示すメモリ・アドレスを含むことができる。無効状態情報１０４は、状態モニター１１０が無効データ状態を識別するためにコンピューティング環境１０２のデータ・ストア内のこのような無効メモリ参照を識別できるように無効メモリ参照の指示を含むことができる。
【００２３】
第２の例では、状態モニター１１０が無効データ状態を識別するためにコンピューティング環境１０２のデータ・ストア内の無効カウンタ値を識別できるようにカウンタの有効範囲あるいは最大値または最小値を識別することにより、カウンタ・データ項目が所定のしきい値を超えることにより発生する無効状態を無効状態情報１０４に表すことができる。
【００２４】
第３の例では、状態モニター１１０がコンピューティング環境１０２内の無効状態（エラーまたは例外状態に対応するものなど）を識別するためにこのような動作を伴う一連のイベントを識別できるように、一連のイベントがエラーまたは例外処理あるいは捕捉動作の実行を伴うことにより発生する無効状態を無効状態情報１０４に表すことができる。
【００２５】
モニターおよび診断ロジック１０８は、マルチスレッド化コンピューティング環境１０２が無効状態にあるという状態モニター１１０による判断に応答して診断データ１１８を収集するように適合された診断データ収集ツール１１２をさらに含む。診断データ収集ツール１１２は、コンピューティング環境１０２に保管されたデータおよびコンピューティング環境１０２で実行されるスレッドを含む、コンピューティング環境１０２から診断データを受信するか、読み取るか、または決定する。たとえば、診断データは、コンピューティング環境１０２のメモリに記録されたデータ状態として読み取ることができるか、診断データ収集ツール１１２によって行われたデータ要求に応答してスレッドから受信することができるか、あるいはそのツールによって使用可能、読み取り可能、または受信可能なデータを基礎として診断データ収集ツール１１２によって決定することができる。診断データ１１８として診断データ収集ツール１１２によって記録された情報としては、スタック、ヒープ、およびその他のメモリ・ダンプを含むメモリ・ダンプなどのデータ・ダンプ、スタック追跡情報、スレッド状態情報を記録するスレッド・データ・ダンプを含むスレッド情報、メモリ、ディスク、周辺状態情報、および当業者にとって既知のものになるその他の情報を含むプロセスおよびリソース情報を含むことができる。診断データ１１８は、適切な不揮発性または揮発性メモリまたは記憶装置などのデータ・ストアに記録される。
【００２６】
したがって、図１に描写されている従来技術の配置では、モニターおよび診断ロジック１０８は、無効状態情報１０４により無効状態を識別するために、保管データならびにスレッド１０６、１１４、および１１６で発生する動作を含むコンピューティング環境１０２の状態を渋滞モニター１１０によってモニターする。状態モニター１１０が無効状態を識別すると、診断データ収集ツール１１２は、コンピューティング環境における診断データを受信するか、読み取るか、または決定し、その診断データを診断データ・ストア１１８に保管する。図１の従来技術の配置では、コンピューティング環境の状態における有効な過渡変化による診断データも収集し、診断データの不必要な収集から発生するパフォーマンスの劣化を被る可能性なしにコンピューティング環境の無効状態に関する診断データを収集することは不可能である。特に、その環境の状態における過渡変化は、スレッド１０６が状態モニター動作に取りかかっているのと同時にスレッド１１４および１１６の一方または両方で発生する可能性がある。本発明の好ましい諸実施形態は、図２〜図４に関連して以下に述べるようにこの問題に対処しようとするものである。
【００２７】
図２は、本発明の諸実施形態の動作に適したコンピュータ・システムのブロック図である。中央処理装置ユニット（ＣＰＵ）２０２は、データ・バス２０８を介して記憶装置２０４および入出力（Ｉ／Ｏ）インターフェース２０６に通信可能に接続される。記憶装置２０４は、ランダム・アクセス・メモリ（ＲＡＭ）または不揮発性記憶装置などの任意の読み取り／書き込み記憶装置にすることができる。不揮発性記憶装置の一例は、ディスクまたはテープ記憶装置を含む。Ｉ／Ｏインターフェース２０６は、データの入力または出力のための装置あるいはデータの入力および出力両方のための装置へのインターフェースである。Ｉ／Ｏインターフェース２０６に接続可能なＩ／Ｏ装置の例としては、キーボード、マウス、ディスプレイ（モニターなど）、およびネットワーク接続を含む。
【００２８】
図３は、本発明の好ましい一実施形態によりマルチスレッド化コンピューティング環境が無効状態にあるときの診断データ３１８の収集のためのモニターおよび診断ロジック３０８を含むマルチスレッド化コンピューティング環境３０２のブロック図である。図３の諸要素の多くは図１に関連して上述したものと同一であり、これらの説明はここでは繰り返さない。図３のモニターおよび診断ロジック３０８は、状態モニター３１０によって識別された無効状態がコンピューティング環境３０２の過渡状態以外の状態に対応するものとして識別されるまで診断データ収集ツール３１２の実行を遅延させるためのトラップ遅延コンポーネント３２２をさらに含む。過渡状態は、スレッドによる第１の有効状態から第２の有効状態へのコンピューティング環境３０２の遷移により発生する。このような遷移は、第１のスレッド３０６がモニターおよび診断動作に取りかかっているときに第１のスレッド３０６と同時に実行している第１のスレッド３０６以外のスレッドによって引き起こされることになる。有効状態とは、無効状態情報３０４内の無効状態定義を基準として無効状態であると判断できない状態である。マルチスレッド化コンピューティング環境３０２では、モニターおよび診断ロジック３０８のスレッド３０６と同時に実行しているその他スレッドが、モニターおよび診断ロジック３０８が実行している間にその環境３０２の状態に影響を及ぼす可能性があるので、状態モニター３１０によって検出される無効状態は無効状態および過渡状態にすることができる。
【００２９】
第１の有効状態から第２の有効状態への遷移により発生し、このように無効だが過渡的な状態を構成する無効状態の例としては、以下のものを含む。
１．新たに作成されたリスト項目が未初期化（その結果、無効な）メモリ参照（ポインタ）を含むようなリンク・リスト・データ構造への項目の追加。メモリ参照が未初期化である間、コンピューティング環境３０２は無効状態にある。しかし、無効状態は、新しいリスト入力が作成される前の有効状態と、新しいリスト入力が適切にリンク・リスト・データ構造に統合されたときの有効状態との間に発生する。したがって、無効状態は２つの有効状態の間の過渡状態を構成する。
２．カウンタに所定のしきい値を超えさせるようなカウンタのインクリメント。カウンタがしきい値を超えている間、コンピューティング環境３０２は無効状態にある。しかし、無効状態は、インクリメントする前のカウンタの有効状態と、カウンタがしきい値を超えたことをソフトウェアが検出し、カウンタをリセットした後の有効状態との間に発生する。したがって、無効状態は２つの有効状態の間の過渡状態を構成する。
３．後で成功する失敗動作を再試行するように例外ハンドラが実現された場合の例外の捕捉に対応する一連のソフトウェア動作。例外ハンドラに入った瞬間に、コンピューティング環境は無効状態（例外状態）にある。しかし、無効状態は、例外前の有効状態と、成功を達成するために動作を再試行するように例外ハンドラを処理した後の有効状態との間に発生する。したがって、無効状態は２つの有効状態の間の過渡状態を構成する。
【００３０】
２つの有効状態の間の過渡状態中の通常処理の単なる結果として無効状態が発生するような追加のシナリオは当業者にとって自明なことになるであろう。
【００３１】
トラップ遅延コンポーネント３２２は遅延設定３２０を基準としてトラップ遅延を実行する。遅延設定３２０は、時間固有の設定、カウント固有の設定、およびスレッド固有の設定を含むことができ、したがって、状態モニター３１０によって識別された無効状態が過渡状態ではないかまたは過渡状態になりそうもないことを確認するために診断データ収集ツール３１２の実行において十分な遅延を引き起こすのに適している。一実施形態では、たとえば、診断データ収集ツール３１２の実行における遅延は、スレッド固有のタイムスタンプ付きモニターまたは追跡レコードが蓄積される間に遅延させ、無効状態が他の実行中のスレッドによって引き起こされた単なる過渡状態を超えるものであることを示すことを伴う。遅延設定３２０は、たとえば、特定のスレッドに関する期間における無効状態追跡項目のカウントを含むことができる。遅延設定３２０は、モニターおよび診断ロジック３０８の外部に保管されるものとして示されているが、これらの規則は、コンピューティング環境３０２のデータベース、揮発性または不揮発性メモリ内、第１のスレッド３０６に関するスレッド・データ内、無効状態検証器３２２または任意のその他の適切な記憶位置内など、トラップ遅延コンポーネント３２２による使用のために任意の適切な位置および形式で保管できることは当業者にとって自明なことになるであろう。
【００３２】
したがって、使用中の状態モニター３１０は、無効状態情報３０４を参照することによりコンピューティング環境３０２の無効状態を識別し、遅延設定３２０を使用して無効状態が過渡状態ではないことが検証されるときまで、トラップ遅延コンポーネント３２２により診断データ収集ツール３１２の実行を遅延させる。無効状態がトラップ遅延コンポーネント３２２の実行後に過渡状態以外の状態であると確認された場合、診断データ収集ツール３１２は上記のように診断データ３１８を収集する。このようにして、コンピューティング環境３０２の状態が無効状態ではあるが、その状態が有効状態の間の過渡状態ではないときに、モニターおよび診断ロジック３０８は診断データ３１８を収集する。
【００３３】
図４は、本発明の好ましい一実施形態による図３のモニターおよび診断ロジック３０８の動作の流れ図である。ロジック開始点は開始ステップ４００である。ステップ４０２では、状態モニター３１０はコンピューティング環境３０２の状態をモニターする。ステップ４０４では、状態モニター３１０は、無効状態情報３０４を基準として無効状態が存在する可能性があることを識別し、ステップ４０６でトラップ遅延コンポーネント３２２を開始する。トラップ遅延コンポーネント３２２は、遅延設定３２０に基づいて動作し、たとえば、状態モニター３１０が遅延設定３２０に設定されたある期間についてまたは発生の合計カウントについてそのスレッドに関する無効状態の複数のインジケータを蓄積するまで、ステップ４０２、４０４、４０６を繰り返すことにより診断データ収集ツール３１２の実行を遅延させる。
【００３４】
ステップ４０６で、状態モニター３１０が遅延設定３２０に設定されたある期間についてまたは発生の合計カウントについてそのスレッドに関する無効状態の複数のインジケータを蓄積した場合、システムは、その無効状態がコンピューティング環境３０２の過渡状態以外の状態に対応するという証拠を有し、ステップ４０８で診断データ収集ツール３１２を実行させて、ステップ４１０で診断データを生成する。ロジックは終了ステップ４１２で終了する。
【００３５】
本発明の好ましい諸実施形態の方法の全部または一部は、この方法の諸ステップを実行するように配置された論理素子を含む１つの論理装置または複数の論理装置で適切にかつ有用に実施することができ、このような論理素子はハードウェア・コンポーネント、ファームウェア・コンポーネント、またはこれらの組み合わせを含むことができることは当業者にとって明白なことになるであろう。
【００３６】
本発明の好ましい諸実施形態による論理配置の全部または一部は、この方法の諸ステップを実行するための論理素子を含む１つの論理装置で適切に実施することができ、このような論理素子は、たとえば、プログラマブル論理アレイまたは特定用途向け集積回路内の論理ゲートなどのコンポーネントを含むことができることは当業者にとって同様に明白なことになるであろう。このような論理配置は、たとえば、固定または伝送可能キャリア・メディアを使用して保管または伝送可能な仮想ハードウェア記述子言語を使用して、このようなアレイまたは回路内に論理構造を一時的にまたは永続的に確立するための素子を使用可能にする際にさらに実施することができる。
【００３７】
上記の方法および配置は１つまたは複数のプロセッサ（図示せず）上で実行されるソフトウェアでも完全にまたは部分的に適切に実行することができ、このソフトウェアは磁気ディスクまたは光ディスクなどの任意の適切なデータ・キャリア（同じく図示せず）上に担持される１つまたは複数のコンピュータ・プログラム要素の形で提供できることは認識されるであろう。データ伝送のためのチャネルは同様に、すべての種類の記憶媒体ならびに有線または無線信号伝送媒体などの信号伝送媒体を含むことができる。
【００３８】
方法とは、一般に、所望の結果に至る筋の通った一連のステップであると考えられている。これらのステップは物理量の物理的操作を必要とする。必ずではないが、通常、このような物理量は、保管、転送、結合、比較、およびその他の操作が可能な電気信号または磁気信号の形を取る。時には、主として一般的使用法という理由で、これらの信号をビット、値、パラメータ、項目、要素、オブジェクト、シンボル、文字、項、数字などと呼ぶことは都合の良いことである。しかし、これらの用語および同様の用語のすべては、適切な物理量に関連付けられるべきであり、これらの物理量に適用された便利なラベルに過ぎないことに留意されたい。
【００３９】
本発明は、コンピュータ・システムで使用するためのコンピュータ・プログラム（computer program product）としてさらに適切に実施することができる。このような実現例は、たとえば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、またはハード・ディスクなどのコンピュータ可読媒体などの有形媒体上に固定された一連のコンピュータ可読命令、あるいは光通信回線またはアナログ通信回線を含むがこれらに限定されない有形媒体によるか、マイクロ波、赤外線、またはその他の伝送技法を含むがこれらに限定されない無線技法を無形に使用して、モデムまたはその他のインターフェース・デバイスを介してコンピュータ・システムに伝送可能な一連のコンピュータ可読命令を含むことができる。一連のコンピュータ可読命令は本明細書で前述した機能の全部または一部を実施する。
【００４０】
当業者であれば、このようなコンピュータ可読命令が多くのコンピュータ・アーキテクチャまたはオペレーティング・システムで使用するためにいくつかのプログラミング言語で作成できることを認識するであろう。さらに、このような命令は、半導体、磁気、または光を含むがこれらに限定されない現在または将来の任意のメモリ技術を使用して保管するか、あるいは光、赤外線、またはマイクロ波を含むがこれらに限定されない現在または将来の任意の通信技術を使用して伝送することができる。このようなコンピュータ・プログラムは、たとえば、ソフトウェア・パッケージなど、印刷文書または電子文書が添付された取り外し可能媒体として配布するか、たとえば、システムＲＯＭまたは固定ディスク上にコンピュータ・システムとともにプリロードするか、あるいは、たとえば、インターネットまたはWorld Wide Webなどのネットワークによりサーバまたは電子掲示板から配布することができることが企図されている。
【００４１】
一代替例では、本発明の好ましい実施形態は、コンピュータ・インフラストラクチャ内に配備され、そこで実行されたときに、この方法のすべてのステップを前記コンピュータ・システムに実行させるように動作可能なコンピュータ・プログラム・コードを配備する諸ステップを含むサービスを配備するためのコンピュータによって実行される方法の形で具現化することができる。
【００４２】
他の代替例では、本発明の好ましい実施形態は、そこに機能データを有するデータ・キャリアの形で具現化することができ、前記機能データは、コンピュータ・システムにロードされ、それにより操作されたときに、この方法のすべてのステップを前記コンピュータ・システムが実行できるようにするための機能的なコンピュータ・データ構造を含む。
【００４３】
本発明の範囲を逸脱せずに、上記の模範的な実施形態に対して多くの改良および変更を行うことができることは当業者にとって明白なことになるであろう。
【図１】
0005623557.tif 000002
【図２】
0005623557.tif 000003
【図３】
0005623557.tif 000004
【図４】
0005623557.tif 000005