dotTrace 2025.1 ヘルプ

タイムラインのプロファイリングを開始する

タイムラインプロファイリング中に、dotTrace は一時的なコールスタックとスレッド状態データを収集します。サンプリングの場合と同じ呼び出し時間に関するデータが得られますが、タイムラインにバインドされます。この方法では、典型的な「最も遅いメソッドは何か ? 」という問題だけでなく、UI のフリーズ、過度のガベージコレクション、不均等なワークロード分散、不十分なファイル I/O など、イベントの順序が重要になる問題も分析できます。

プロファイラの実行とスナップショットの取得

タイムラインプロファイリングを開始するには、セッションを構成するときにタイムラインプロファイリングタイプを選択します。

スナップショットを収集するプロセスは、パフォーマンスプロファイリングのプロセスと同じです。アプリケーションの実行中にスナップショットを取得して待機するボタンをクリックするだけです。収集されたタイムラインプロファイリングスナップショットを分析するには、dotTrace ビューアーと呼ばれる別の dotTrace コンポーネントを使用する必要があります。

タイムラインのスナップショットを最初に見る

dotTrace Viewer UI

ビューアーでの分析ワークフローは非常に簡単です。フィルターを使用して収集された時間データをスライスして切り取るだけです。

それで、フィルターはどこにありますか? 実際、画面に表示されるほとんどすべての UI 要素は、データを表示するだけでなく、特定のフィルターを適用することもできます。フィルターの作業の結果は、常に特定の条件によって選択された時間間隔またはポイントイベントのセットです。例: イベント | ファイル操作をクリックすると、アプリケーションがファイル I/O 操作を実行したすべてのスレッドですべての時間間隔選択するように dotTrace に指示しますスレッドリストでメインスレッドをクリックすると、メインスレッドの存続期間選択されます

もちろん、フィルターは一緒にチェーンすることができます。上記の 2 つのフィルターを次々にアクティブにすると、結果のフィルターが得られます。メインスレッドがファイル I/O 操作を実行したすべての時間間隔を選択します。フィルターを注意深く組み合わせることで、アプリケーションのほぼすべての側面を調査できます。

使い方

次に、最も重要な dotTrace ビューアーの使用例を見てみましょう。

CPU 使用率が高い間隔を見つけて選択する

CPU 使用率が高い間隔は、アプリケーションの全体的なパフォーマンスを評価し、最高の時間でメソッドを見つける必要がある場合に重要です。プロセスの概要ダイアグラムを使用して、このような間隔をすばやく検索して選択することができます。

find_cpu_usage.png

最も遅いメソッドを見つけ、その呼び出しツリーを表示する

興味のある時間間隔を見つけたら、次のステップはこの間隔で最も遅いメソッドを見つけてメソッドの呼び出しツリーを調べることです。後者は、「なぜメソッドが遅いのか」または「メソッドの正確な子コールがほとんどの時間を占めるもの」を特定できます。両方の操作を実行するには、呼び出しスタックウィンドウ(ホットスポットリストから構成されています)と、呼び出しツリーを使用します。

slowest_method_call_tree.png

方法で何が起こっているかをすばやく理解する

バージョン 2017.1 以降、dotTrace Viewer は非常に役立つサブシステム機能を提供します。サブシステムの目的は、「アプリで一体何が起こっているのか ? 」という主要な質問にすばやく答えるとともに、「何がパフォーマンス低下の原因なのか ? 」などのより具体的な質問に答えることにあります。または「何がそれほど多くのメモリを割り当てますか ? 」。パフォーマンスの低下は、ファイル操作、JIT、文字列処理、コード内の過度の作業に関連していますか ? サブシステムフィルターは、選択した時間間隔の時間がさまざまなアクティビティにどのように配分されているかを示す単一の場所です。以下の例では、サブシステムバーは、メソッドのメインタイムがロック競合によって占められていることを示しています。

going_on_method.png

メソッドの親呼び出しを参照

問題のあるメソッドを調べるときには、子コールをチェックするだけでなく、メソッドがどのように呼び出されるかを理解することも重要です。このために、呼び出しツリー追跡モードに切り替えることができます。このモードでは、スタック内の最初のメソッドまでの実行パスを見ることができます(ある意味では、追跡は逆呼び出しツリーです)。

parent_calls.png

名前でメソッドを検索する

場合によっては、特定のメソッドのパフォーマンスをチェックする必要があります。時間はどれくらいかかりますか、タイムラインで正確に呼び出される場所などです。この場合、興味のあるメソッドをその名前で見つけることができます。たとえば、以下の例では、Factorial メソッドを見つけるでしょう:

find_by_name.png

dotTrace Viewer がメソッドを見つけた直後に、このメソッドによるフィルターも自動的に適用することに注意してください。

UI フリーズの原因を見つける

UI フリーズの分析は、dotTrace が最も優れているフィールドです。アプリケーションの GUI がフリーズする間隔が自動的に検出されます。通常は、UI フリーズを選択してホットスポットリストを調べるだけです。

ui_freeze_cause.png

過度のメモリ割り当ての原因を見つける

過剰なメモリ割り当て、またはより正確には、ガベージコレクションの形でのその結果は、アプリケーションのパフォーマンスに大きな影響を与える可能性があります。パフォーマンス分析では、アプリケーションのメモリ割り当ての起源を理解することが非常に重要です。以下の例は、メモリの割り当てイベントを使用して、最も多くのメモリを割り当てるホットスポットを特定する方法を示しています。

memory_allocation.png

HTTP リクエストをトレースする

HTTP リクエストをトレースする機能は、Web アプリケーションのパフォーマンスの欠点を分析する際に非常に重要です。dotTrace を使用すると、任意の Application Performance Management(APM) システムと同じ方法でトランザクションをトレースできます。つまり、特定の URL へのリクエストをフィルタリングし、それらの背後にある HTTP メソッドや、サーバーが処理するすべての操作を参照できます。SQL トランザクションや .NET コードのようなリクエスト。さらに、dotTrace は、本格的なコールツリー解析を提供するため、APM システムに比べて大きな利点があります。

http_request_tracing.png

関連ページ:

プロファイリングセッションの構成

プロファイリングセッションを構成するには、次のことを行う必要があります。プロファイルするアプリケーションを dotTrace で実行する方法を指定します。これは、実行構成を使用して行うことができます。すでに実行中のアプリケーションのプロファイルを作成する場合、この手順は必要ありません。dotTrace がアプリケーションをプロファイリングする方法を指定します。プロファイリングタイプを選択し、(オプションで) 時間測定タイプ、プロセスフィルターなどのその他のプロファイリングオプションを構成します。...

入門

最も単純なパフォーマンスプロファイリングワークフローを見てみましょう。例: パフォーマンスの問題がある、またはないアプリケーションがあります。必要なのは、そのパフォーマンスを評価すること、つまり、どの関数が最も時間がかかるかを調べることだけです。タイムラインプロファイリングを開始する方法の詳細については、「タイムラインのプロファイリングを開始する」を参照してください。dotTrace コマンドラインツールの使用方法の詳細については、「dotTrace コマンドラインプロファイラーを使用する」を参...

dotTrace ビューアーの概念

dotTrace ビューアーは、プロファイリングデータをフィルター処理して視覚化できるフィルターとダイアグラムのセットです。プロファイリングタイプとユーザーインターフェース:dotTrace ビューアーのユーザーインターフェースは、現在分析しているスナップショットの種類によって異なります。サンプリング、トレース、および line-by-line スナップショットでは、タイムラインスナップショットよりもデータが少なくなります。以下のイメージは、dotTrace Viewer で開いた同じアプリケーシ...

タイムライン

タイムラインウィンドウは、分析に関心のあるスレッドと時間間隔を視覚化して選択するために使用されます。ウィンドウは次のセクションで構成されています。プロセスの概要 – アプリケーションのアクティビティとイベントの概要ダイアグラム。スレッドダイアグラム – スレッドアクティビティダイアグラム。プロセスの概要:プロセスの概要ダイアグラムは、プロファイルされたアプリケーションに関連するアプリケーションアクティビティと意味のあるイベントを視覚化します。このダイアグラムを使用して、CPU 負荷が高い間隔、長い...

ホットスポット

Hotspots は、選択したすべてのスレッドのメソッドのリストを実行時間順に表示します。他のフィルターと組み合わせてホットスポットを使用して、特定の条件で「トップ」メソッドを決定します。例:

呼び出しツリー

呼び出しツリーはメソッド実行パスを示します。ツリー内の各メソッドノードは、特定のスレッドによって実行されるトップレベルのメソッドを表します。メソッドノードには、呼び出されたメソッドとプロファイリング時に収集されたメトリクスがリストされます。呼び出しツリーを使用して: アプリケーションアクティビティの簡単な概要を取得する: 最も「高額な」呼び出しを移動するまたはフレームグラフを使用します。最も遅いメソッド (最も時間がかかるメソッド、または頻繁に呼び出されるメソッド) の実行パスを次の方法で調べます。...