"診断データを収集するためにマルチスレッド化コンピューティング環境を操作するための方法であって、前記方法が、前記コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネントを開始するステップと、第1のスレッドにより、前記コンピューティング環境に関する診断データを記録するステップとを含み,それが前記コンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する合計カウントまたは期間のうちの少なくとも一方について前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録する前記ステップを前記トラップ遅延コンポーネントが遅延させ、前記過渡状態が1つまたは複数の他のスレッドによる第1の有効状態から第2の有効状態への前記コンピューティング環境の遷移に対応する、方法。前記所定の無効状態が前記コンピューティング環境のデータストア内のデータの内容によって示される、請求項1記載の方法。前記データが破損している、請求項2記載の方法。前記データが不完全である、請求項2記載の方法。前記無効状態が前記コンピューティング環境で発生する一連のイベントによって示される、請求項1記載の方法。前記一連のイベントが、前記コンピューティング環境内の1つまたは複数のスレッドで行われる処理アクションに対応する、請求項5記載の方法。前記所定のインジケータを前記所定の無効状態の発生の合計カウントに設定することをさらに含む、請求項1ないし6のいずれかに記載の方法。前記所定のインジケータを前記所定の無効状態の発生をモニターするための期間に設定することをさらに含む、請求項1ないし7のいずれかに記載の方法。診断データを収集するためのマルチスレッド化コンピューティング環境における装置であって、前記コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネントを開始するための手段と、第1のスレッドにより、前記コンピューティング環境に関する診断データを記録するための手段とを含み,それが前記コンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する合計カウントまたは期間のうちの少なくとも一方について前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録するための前記手段の動作を前記トラップ遅延コンポーネントが遅延させ、前記過渡状態が1つまたは複数の他のスレッドによる第1の有効状態から第2の有効状態への前記コンピューティング環境の遷移に対応する、装置。中央演算処理装置と、メモリサブシステムと、入出力サブシステムと、前記中央演算処理装置、前記メモリサブシステム、前記入出力サブシステム、および請求項9記載の前記装置を相互接続するバスサブシステムとを含む装置。コンピュータシステムにロードされ、そこで実行されたときに、請求項1ないし8のいずれかに記載の方法の前記ステップを前記コンピュータに実行させるためのコンピュータプログラムコードを含むコンピュータプログラム。したがって、コンピューティング環境の状態における有効な過渡変化による診断データも収集し、診断データの不必要な収集から発生するパフォーマンスの劣化を被る可能性なしにコンピューティング環境の無効状態に関する診断データを収集することは、現在、不可能である。したがって、本発明は、第1の態様において、診断データを収集するためのマルチスレッド化コンピューティング環境における方法を提供し、この方法は、コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネントtrapdelaycomponentを開始するステップと、第1のスレッドにより、コンピューティング環境に関する診断データを記録するステップとを含み,それがコンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する合計カウントまたは期間のうちの少なくとも一方について前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録する前記ステップをトラップ遅延コンポーネントが遅延させ、過渡状態は1つまたは複数の他のスレッドによる第1の有効状態から第2の有効状態へのコンピューティング環境の遷移に対応する。好ましくは、所定の無効状態は、コンピューティング環境のデータストア内のデータの内容によって示される。所定の無効状態のデータは、破損しているかまたは不完全なデータである可能性がある。所定の無効状態は、コンピューティング環境で発生する一連のイベントによって示すことができる。一連のイベントは、コンピューティング環境内の1つまたは複数のスレッドで行われる処理アクションに対応することができる。この方法は、前記所定のインジケータを前記所定の無効状態の発生の合計カウントに設定することをさらに含むことができる。この方法は、前記所定のインジケータを前記所定の無効状態の発生をモニターするための期間に設定することをさらに含むことができる。したがって、本発明は、第2の態様において、診断データを収集するためのマルチスレッド化コンピューティング環境における装置を提供し、この装置は、コンピューティング環境が所定の無効状態にあるとモニターが判断したことに応答して、遅延しきい値を有するトラップ遅延コンポーネントを開始するための手段と、第1のスレッドにより、コンピューティング環境に関する診断データを記録するための手段とを含み,それがコンピューティング環境の過渡状態以外の状態であるという所定のインジケータに対応する合計カウントまたは期間のうちの少なくとも一方について前記所定の無効状態が繰り返されたと前記モニターが判断するまで診断データを記録するための前記手段の動作をトラップ遅延コンポーネントが遅延させ、過渡状態は1つまたは複数の他のスレッドによる第1の有効状態から第2の有効状態へのコンピューティング環境の遷移に対応する。したがって、本発明は、第3の態様において、中央演算処理装置と、メモリサブシステムと、入出力サブシステムと、中央演算処理装置、メモリサブシステム、入出力サブシステム、および上記の装置を相互接続するバスサブシステムとを含む装置を提供する。したがって、本発明は、第4の態様において、コンピュータシステムにロードされ、そこで実行されたときに、上記の方法のステップをコンピュータに実行させるためのコンピュータプログラムコードを含むコンピュータプログラム要素を提供する。添付図面に関連して、一例としてのみ、本発明の好ましい一実施形態について、以下により詳細に説明する。図1は、従来技術によりマルチスレッド化コンピューティング環境が無効状態にあるときの診断データ118の収集のためのモニターおよび診断ロジック108を含むマルチスレッド化コンピューティング環境102のブロック図である。マルチスレッド化コンピューティング環境102は複数のソフトウェアスレッド106、114、116を含む。各スレッドは、ソフトウェア実行の個別のストリームであり、ソフトウェア命令を含む。また、スレッド106、114、116は、メモリスタックとして知られるコンピュータシステム内の記憶領域に通常保管されたスレッドデータも含むことができる。スレッド106、114、および116は、マルチプロセッサコンピュータシステムなどの1つまたは複数のコンピュータシステム、同時に複数のソフトウェア命令の実行のために複数のサブプロセッサを含むシステムマルチコアプロセッサなど、あるいは1つまたは複数のソフトウェアアプリケーションの実行のために通信可能に接続された複数のコンピュータシステムを有するコンピューティング環境で実質的に同時に実行される。代わって、スレッド106、114、および116は、単一プロセッサが複数のスレッド間で共用され、個々の命令が一度に1つずつ処理される間に複数のスレッドを実質的に同時に実行できるような、多重化またはチャネル化ベースの単一プロセッサ内で実行することができる。たとえば、処理装置は、ラウンドロビン、時分割、または優先順位主導ベースで複数のスレッド間でその処理を分割することができる。第1のスレッド106は、無効状態に対応する問題のある動作状態についてコンピューティング環境102の全部または一部の実行をモニターする、モニターおよび診断ロジック108の実行を含む。第1のスレッド106はモニターおよび診断ロジック108専用にすることができる。代わって、モニターおよび診断ロジック108は、ソフトウェアアプリケーション動作など、他のソフトウェア動作の実行にも使用される、スレッド106の一部として実行することができる。たとえば、モニターおよび診断ロジック108は、所定のスケジュールに応じて定期的に、あるいは環境の作業負荷が十分に重いかまたは軽いときなど、コンピューティング環境内の条件が許すときに、実行することができる。モニターおよび診断ロジック108は、無効状態を識別するためにスレッド106、114、および116内でソフトウェア動作の実行をモニターするためのソフトウェアルーチンである状態モニター110を含む。さらに、状態モニター110は、無効データ状態について、コンピューティング環境102に関連する揮発性または不揮発性メモリなど、コンピューティング環境102用の1つまたは複数のデータストア図示せずをモニターする。たとえば、このようなメモリとしては、コンピューティング環境102用の1つまたは複数のメモリヒープを含むことができる。このようにして、状態モニター110は、破損しているかまたは不完全なものに見えるデータなど、コンピューティング環境のデータストア内のデータの内容によって示される無効状態と、誤っているかまたは誤り状態を示す、コンピューティング環境102内の1つまたは複数のスレッドで行われる処理アクションなど、コンピューティング環境102で発生する一連のイベントによって示される無効状態という2通りの一般的なカテゴリに属する無効状態を判別することができる。状態モニター110は、コンピューティング環境102に関する無効状態の規則、基準、または特性の定義を提供する所定の無効状態情報104を基準としてコンピューティング環境102の無効状態を識別する。無効状態情報104は、揮発性または不揮発性記憶装置、ヒープメモリ、ディスクまたはテープ、フラッシュメモリ、あるいは任意のその他の適切なメモリなど、コンピューティング環境のメモリに保管することができる。無効状態情報104は、データ構造などの構造化データフォーマットに、または代わって、XMLまたはその他の意味データフォーマットなど、構文解析可能なフォーマットに編成することができる。さらに、無効状態情報104はデータベースに保管することができる。無効状態情報104は、上記の2通りの一般的なカテゴリの無効状態においてコンピューティング環境102の無効状態を識別する際に状態モニター110を支援するのに適している。たとえば、コンピューティング環境102のデータストア内のデータの内容によって示される無効状態は、無効データを特徴付ける1組の基準として無効状態情報104に表すことができる。無効参照ポインタなどは、アドレス可能範囲の外側にあるメモリアドレス、あるいは安全なまたは保護されたメモリ範囲内のメモリロケーションであって、直接アクセス可能ではないかまたは直接アクセス可能であってはならないメモリロケーションを示すメモリアドレスを含むことができる。無効状態情報104は、状態モニター110が無効データ状態を識別するためにコンピューティング環境102のデータストア内のこのような無効メモリ参照を識別できるように無効メモリ参照の指示を含むことができる。第2の例では、状態モニター110が無効データ状態を識別するためにコンピューティング環境102のデータストア内の無効カウンタ値を識別できるようにカウンタの有効範囲あるいは最大値または最小値を識別することにより、カウンタデータ項目が所定のしきい値を超えることにより発生する無効状態を無効状態情報104に表すことができる。第3の例では、状態モニター110がコンピューティング環境102内の無効状態エラーまたは例外状態に対応するものなどを識別するためにこのような動作を伴う一連のイベントを識別できるように、一連のイベントがエラーまたは例外処理あるいは捕捉動作の実行を伴うことにより発生する無効状態を無効状態情報104に表すことができる。モニターおよび診断ロジック108は、マルチスレッド化コンピューティング環境102が無効状態にあるという状態モニター110による判断に応答して診断データ118を収集するように適合された診断データ収集ツール112をさらに含む。診断データ収集ツール112は、コンピューティング環境102に保管されたデータおよびコンピューティング環境102で実行されるスレッドを含む、コンピューティング環境102から診断データを受信するか、読み取るか、または決定する。たとえば、診断データは、コンピューティング環境102のメモリに記録されたデータ状態として読み取ることができるか、診断データ収集ツール112によって行われたデータ要求に応答してスレッドから受信することができるか、あるいはそのツールによって使用可能、読み取り可能、または受信可能なデータを基礎として診断データ収集ツール112によって決定することができる。診断データ118として診断データ収集ツール112によって記録された情報としては、スタック、ヒープ、およびその他のメモリダンプを含むメモリダンプなどのデータダンプ、スタック追跡情報、スレッド状態情報を記録するスレッドデータダンプを含むスレッド情報、メモリ、ディスク、周辺状態情報、および当業者にとって既知のものになるその他の情報を含むプロセスおよびリソース情報を含むことができる。診断データ118は、適切な不揮発性または揮発性メモリまたは記憶装置などのデータストアに記録される。したがって、図1に描写されている従来技術の配置では、モニターおよび診断ロジック108は、無効状態情報104により無効状態を識別するために、保管データならびにスレッド106、114、および116で発生する動作を含むコンピューティング環境102の状態を渋滞モニター110によってモニターする。状態モニター110が無効状態を識別すると、診断データ収集ツール112は、コンピューティング環境における診断データを受信するか、読み取るか、または決定し、その診断データを診断データストア118に保管する。図1の従来技術の配置では、コンピューティング環境の状態における有効な過渡変化による診断データも収集し、診断データの不必要な収集から発生するパフォーマンスの劣化を被る可能性なしにコンピューティング環境の無効状態に関する診断データを収集することは不可能である。特に、その環境の状態における過渡変化は、スレッド106が状態モニター動作に取りかかっているのと同時にスレッド114および116の一方または両方で発生する可能性がある。本発明の好ましい諸実施形態は、図2~図4に関連して以下に述べるようにこの問題に対処しようとするものである。図2は、本発明の諸実施形態の動作に適したコンピュータシステムのブロック図である。中央処理装置ユニットCPU202は、データバス208を介して記憶装置204および入出力I/Oインターフェース206に通信可能に接続される。記憶装置204は、ランダムアクセスメモリRAMまたは不揮発性記憶装置などの任意の読み取り/書き込み記憶装置にすることができる。不揮発性記憶装置の一例は、ディスクまたはテープ記憶装置を含む。I/Oインターフェース206は、データの入力または出力のための装置あるいはデータの入力および出力両方のための装置へのインターフェースである。I/Oインターフェース206に接続可能なI/O装置の例としては、キーボード、マウス、ディスプレイモニターなど、およびネットワーク接続を含む。図3は、本発明の好ましい一実施形態によりマルチスレッド化コンピューティング環境が無効状態にあるときの診断データ318の収集のためのモニターおよび診断ロジック308を含むマルチスレッド化コンピューティング環境302のブロック図である。図3の諸要素の多くは図1に関連して上述したものと同一であり、これらの説明はここでは繰り返さない。図3のモニターおよび診断ロジック308は、状態モニター310によって識別された無効状態がコンピューティング環境302の過渡状態以外の状態に対応するものとして識別されるまで診断データ収集ツール312の実行を遅延させるためのトラップ遅延コンポーネント322をさらに含む。過渡状態は、スレッドによる第1の有効状態から第2の有効状態へのコンピューティング環境302の遷移により発生する。このような遷移は、第1のスレッド306がモニターおよび診断動作に取りかかっているときに第1のスレッド306と同時に実行している第1のスレッド306以外のスレッドによって引き起こされることになる。有効状態とは、無効状態情報304内の無効状態定義を基準として無効状態であると判断できない状態である。マルチスレッド化コンピューティング環境302では、モニターおよび診断ロジック308のスレッド306と同時に実行しているその他スレッドが、モニターおよび診断ロジック308が実行している間にその環境302の状態に影響を及ぼす可能性があるので、状態モニター310によって検出される無効状態は無効状態および過渡状態にすることができる。第1の有効状態から第2の有効状態への遷移により発生し、このように無効だが過渡的な状態を構成する無効状態の例としては、以下のものを含む。1.新たに作成されたリスト項目が未初期化その結果、無効なメモリ参照ポインタを含むようなリンクリストデータ構造への項目の追加。メモリ参照が未初期化である間、コンピューティング環境302は無効状態にある。しかし、無効状態は、新しいリスト入力が作成される前の有効状態と、新しいリスト入力が適切にリンクリストデータ構造に統合されたときの有効状態との間に発生する。したがって、無効状態は2つの有効状態の間の過渡状態を構成する。2.カウンタに所定のしきい値を超えさせるようなカウンタのインクリメント。カウンタがしきい値を超えている間、コンピューティング環境302は無効状態にある。しかし、無効状態は、インクリメントする前のカウンタの有効状態と、カウンタがしきい値を超えたことをソフトウェアが検出し、カウンタをリセットした後の有効状態との間に発生する。したがって、無効状態は2つの有効状態の間の過渡状態を構成する。3.後で成功する失敗動作を再試行するように例外ハンドラが実現された場合の例外の捕捉に対応する一連のソフトウェア動作。例外ハンドラに入った瞬間に、コンピューティング環境は無効状態例外状態にある。しかし、無効状態は、例外前の有効状態と、成功を達成するために動作を再試行するように例外ハンドラを処理した後の有効状態との間に発生する。したがって、無効状態は2つの有効状態の間の過渡状態を構成する。2つの有効状態の間の過渡状態中の通常処理の単なる結果として無効状態が発生するような追加のシナリオは当業者にとって自明なことになるであろう。トラップ遅延コンポーネント322は遅延設定320を基準としてトラップ遅延を実行する。遅延設定320は、時間固有の設定、カウント固有の設定、およびスレッド固有の設定を含むことができ、したがって、状態モニター310によって識別された無効状態が過渡状態ではないかまたは過渡状態になりそうもないことを確認するために診断データ収集ツール312の実行において十分な遅延を引き起こすのに適している。一実施形態では、たとえば、診断データ収集ツール312の実行における遅延は、スレッド固有のタイムスタンプ付きモニターまたは追跡レコードが蓄積される間に遅延させ、無効状態が他の実行中のスレッドによって引き起こされた単なる過渡状態を超えるものであることを示すことを伴う。遅延設定320は、たとえば、特定のスレッドに関する期間における無効状態追跡項目のカウントを含むことができる。遅延設定320は、モニターおよび診断ロジック308の外部に保管されるものとして示されているが、これらの規則は、コンピューティング環境302のデータベース、揮発性または不揮発性メモリ内、第1のスレッド306に関するスレッドデータ内、無効状態検証器322または任意のその他の適切な記憶位置内など、トラップ遅延コンポーネント322による使用のために任意の適切な位置および形式で保管できることは当業者にとって自明なことになるであろう。したがって、使用中の状態モニター310は、無効状態情報304を参照することによりコンピューティング環境302の無効状態を識別し、遅延設定320を使用して無効状態が過渡状態ではないことが検証されるときまで、トラップ遅延コンポーネント322により診断データ収集ツール312の実行を遅延させる。無効状態がトラップ遅延コンポーネント322の実行後に過渡状態以外の状態であると確認された場合、診断データ収集ツール312は上記のように診断データ318を収集する。このようにして、コンピューティング環境302の状態が無効状態ではあるが、その状態が有効状態の間の過渡状態ではないときに、モニターおよび診断ロジック308は診断データ318を収集する。図4は、本発明の好ましい一実施形態による図3のモニターおよび診断ロジック308の動作の流れ図である。ロジック開始点は開始ステップ400である。ステップ402では、状態モニター310はコンピューティング環境302の状態をモニターする。ステップ404では、状態モニター310は、無効状態情報304を基準として無効状態が存在する可能性があることを識別し、ステップ406でトラップ遅延コンポーネント322を開始する。トラップ遅延コンポーネント322は、遅延設定320に基づいて動作し、たとえば、状態モニター310が遅延設定320に設定されたある期間についてまたは発生の合計カウントについてそのスレッドに関する無効状態の複数のインジケータを蓄積するまで、ステップ402、404、406を繰り返すことにより診断データ収集ツール312の実行を遅延させる。ステップ406で、状態モニター310が遅延設定320に設定されたある期間についてまたは発生の合計カウントについてそのスレッドに関する無効状態の複数のインジケータを蓄積した場合、システムは、その無効状態がコンピューティング環境302の過渡状態以外の状態に対応するという証拠を有し、ステップ408で診断データ収集ツール312を実行させて、ステップ410で診断データを生成する。ロジックは終了ステップ412で終了する。本発明の好ましい諸実施形態の方法の全部または一部は、この方法の諸ステップを実行するように配置された論理素子を含む1つの論理装置または複数の論理装置で適切にかつ有用に実施することができ、このような論理素子はハードウェアコンポーネント、ファームウェアコンポーネント、またはこれらの組み合わせを含むことができることは当業者にとって明白なことになるであろう。本発明の好ましい諸実施形態による論理配置の全部または一部は、この方法の諸ステップを実行するための論理素子を含む1つの論理装置で適切に実施することができ、このような論理素子は、たとえば、プログラマブル論理アレイまたは特定用途向け集積回路内の論理ゲートなどのコンポーネントを含むことができることは当業者にとって同様に明白なことになるであろう。このような論理配置は、たとえば、固定または伝送可能キャリアメディアを使用して保管または伝送可能な仮想ハードウェア記述子言語を使用して、このようなアレイまたは回路内に論理構造を一時的にまたは永続的に確立するための素子を使用可能にする際にさらに実施することができる。上記の方法および配置は1つまたは複数のプロセッサ図示せず上で実行されるソフトウェアでも完全にまたは部分的に適切に実行することができ、このソフトウェアは磁気ディスクまたは光ディスクなどの任意の適切なデータキャリア同じく図示せず上に担持される1つまたは複数のコンピュータプログラム要素の形で提供できることは認識されるであろう。データ伝送のためのチャネルは同様に、すべての種類の記憶媒体ならびに有線または無線信号伝送媒体などの信号伝送媒体を含むことができる。方法とは、一般に、所望の結果に至る筋の通った一連のステップであると考えられている。これらのステップは物理量の物理的操作を必要とする。必ずではないが、通常、このような物理量は、保管、転送、結合、比較、およびその他の操作が可能な電気信号または磁気信号の形を取る。時には、主として一般的使用法という理由で、これらの信号をビット、値、パラメータ、項目、要素、オブジェクト、シンボル、文字、項、数字などと呼ぶことは都合の良いことである。しかし、これらの用語および同様の用語のすべては、適切な物理量に関連付けられるべきであり、これらの物理量に適用された便利なラベルに過ぎないことに留意されたい。本発明は、コンピュータシステムで使用するためのコンピュータプログラムcomputerprogramproductとしてさらに適切に実施することができる。このような実現例は、たとえば、ディスケット、CD-ROM、ROM、またはハードディスクなどのコンピュータ可読媒体などの有形媒体上に固定された一連のコンピュータ可読命令、あるいは光通信回線またはアナログ通信回線を含むがこれらに限定されない有形媒体によるか、マイクロ波、赤外線、またはその他の伝送技法を含むがこれらに限定されない無線技法を無形に使用して、モデムまたはその他のインターフェースデバイスを介してコンピュータシステムに伝送可能な一連のコンピュータ可読命令を含むことができる。一連のコンピュータ可読命令は本明細書で前述した機能の全部または一部を実施する。当業者であれば、このようなコンピュータ可読命令が多くのコンピュータアーキテクチャまたはオペレーティングシステムで使用するためにいくつかのプログラミング言語で作成できることを認識するであろう。さらに、このような命令は、半導体、磁気、または光を含むがこれらに限定されない現在または将来の任意のメモリ技術を使用して保管するか、あるいは光、赤外線、またはマイクロ波を含むがこれらに限定されない現在または将来の任意の通信技術を使用して伝送することができる。このようなコンピュータプログラムは、たとえば、ソフトウェアパッケージなど、印刷文書または電子文書が添付された取り外し可能媒体として配布するか、たとえば、システムROMまたは固定ディスク上にコンピュータシステムとともにプリロードするか、あるいは、たとえば、インターネットまたはWorldWideWebなどのネットワークによりサーバまたは電子掲示板から配布することができることが企図されている。一代替例では、本発明の好ましい実施形態は、コンピュータインフラストラクチャ内に配備され、そこで実行されたときに、この方法のすべてのステップを前記コンピュータシステムに実行させるように動作可能なコンピュータプログラムコードを配備する諸ステップを含むサービスを配備するためのコンピュータによって実行される方法の形で具現化することができる。他の代替例では、本発明の好ましい実施形態は、そこに機能データを有するデータキャリアの形で具現化することができ、前記機能データは、コンピュータシステムにロードされ、それにより操作されたときに、この方法のすべてのステップを前記コンピュータシステムが実行できるようにするための機能的なコンピュータデータ構造を含む。本発明の範囲を逸脱せずに、上記の模範的な実施形態に対して多くの改良および変更を行うことができることは当業者にとって明白なことになるであろう。"