スタートアップ・ガイド: スレッドのボトルネックの検出

競合やデッドロックなど、スレッドのボトルネックが発生すると、アプリケーションの実行速度が遅くなったり停止する可能性があります。「プロファイルおよびロギング」パースペクティブには、これらのスレッドの問題を検出および解決するためのビューおよびツールが組み込まれています。

スレッドのボトルネックの検出には、以下のビューを使用できます。

Probekit で設計するカスタム・プローブを使用してスレッド・ボトルネックを調べることができます。

親トピック: ランタイムの問題判別に関するスタートアップ・ガイド

スレッドのボトルネックを検出するためのデータ収集

前提条件:

データを収集するには
  1. 「プロファイル」ダイアログ・ボックスの「プロファイル」タブで、「スレッド分析」プロファイル・セットを選択します。
  2. 「プロファイル」をクリックし、アプリケーションを起動します。
  3. スレッドのボトルネックが発生していると思われるアプリケーション部分を実行します。 スレッド・データは「スレッド分析」プロファイル・リソースで収集され、 記録されます。これは、プロファイル・ナビゲーターに表示されます。 この時点で、アプリケーションを終了することができます。

スレッド・ビューおよび UML2 シーケンス・ダイアグラム・ビューを使用したスレッドのボトルネックの検出

スレッド・ビューには、アプリケーション内のすべてのスレッドに関するスレッド実行履歴が表示され、デッドロック状態や競合状態が明示的に示されます。 プロファイル作成中に、「UML2 オブジェクト対話」ビューに呼び出しのシーケンスが表示されます。

スレッドのボトルネックを検出するには
  1. 「スレッド」ビューを表示します。収集したデータのプロファイル・リソースを右マウス・ボタン・クリックし、 ポップアップ・メニューから「アプリケーションから開く」 > 「スレッド・ビュー」を選択します。
  2. スレッド・ビューで、スレッド間の垂直矢印 ロック要求を示す矢印 を探します。矢印は、ロックを要求しているスレッドから、ロックを保持するスレッドを指します。単一の矢印は、スレッド競合 (1 つのスレッドが、別のスレッドによるロックの解除を待っている状態) を示します。複数の矢印が循環ロック要求パターンを表している場合は、デッドロック (複数のスレッドがいずれも他のスレッドによるロックの解除を待っているため、どのスレッドも実行できない状態) を示します。
  3. ボトルネックの時間に呼び出されたメソッドを識別します。 メソッドを識別するには、以下のステップを実行します。
    1. スレッドが待っているロックの名前を確認します。スレッド・ビューで、ロックを待っているスレッドの位置にカーソルを合わせます。 ロックの名前およびロックを保持しているロック中スレッドの名前が、ツールチップに表示されます。
    2. 「スレッド分析」プロファイル・リソースを右マウス・ボタン・クリックして、 ポップアップ・メニューから「アプリケーションから開く」 > 「UML2 オブジェクト対話」を選択します。
    3. スレッドの「スレッド・ビュー」リストで、調査するロックを保持しているスレッドを選択します。 「UML2 オブジェクト対話」ビューに、選択したスレッドのオブジェクト対話 (ロック、ロックの要求など) が表示されます。
    4. 調査する要求の矢印の上に、現在時刻インディケーターを置きます。これは、「UML2 オブジェクト対話」ビューとプロファイル・モニター内の「コール・スタック」プロファイル・リソースの両方を同期します。 デフォルトでは、現在時刻インディケーターは、「スレッド・ビュー」グラフの左端にあります。 これを移動するには、マウスで取得します。
  4. ロックを保持する原因となっているソース・コードを表示できる場合は、このソース・コードを表示します。これを実行するには、コール・スタック内でロックを保持しているスレッドの最新の呼び出しを右マウス・ボタン・クリックして、ポップアップ・メニューから「ソースを開く」を選択します。 ソース・コードを使用できるのは、Java パースペクティブで現在開かれている Java™ プロジェクトのプロファイルを作成している場合だけです。これで、コードに変更を加えて、ボトルネックを解決できるようなります。
  5. アプリケーションのプロファイルを再作成して、ボトルネックが解決されたことを確認します。

詳細については、 スレッドのボトルネックの検出を参照してください。

「実行フロー」および「実行フロー・テーブル」ビューの使用

これらのビューには、スレッド・ビューの基になるロー・データが異なる形式で表示されます。

これらのビューを使用するには
  1. 「実行フロー」ビューまたは「実行フロー・テーブル」ビューを表示するには、「ウィンドウ」 > 「ビューの表示」 > 「その他 . . .」を選択し、「ビューの表示」ダイアログ・ボックスで「プロファイルおよびロギング」エントリーを展開して、表示するビューを選択します。
  2. 「実行フロー」および「実行フロー・テーブル」ビューで、ポップアップ・メニューから 「補償時間」を選択すると、プロファイルにかかる時間を短縮することができます。

使用条件 | フィードバック
(C) Copyright IBM Corporation 2004. All Rights Reserved. (C) Copyright IBM Japan 2004