サブシステムで分析を簡素化
サブシステムとは、特定のシステムコンポーネント(.NET フレームワークのさまざまな部分、外部ライブラリ、独自のコードなど)で消費される時間を簡単に把握できる、プロファイリングスナップショットデータを表示する方法です。 サブシステムは、特定の名前空間またはアセンブリ内で行われたすべての呼び出しをグループ化するだけです。 例: System.Windows.Forms 用のサブシステムを作成して、アプリケーション内のすべての WinForms 呼び出しを要約することができます。 これは、あなたのアプリとのやりとりにどれくらいの時間が必要かを示します。
はじめに、概念、構成
ノードを選択するたびに、dotTrace は選択されたコールスタックの収集データを分析し、選択したコールスタックにさまざまなサブシステムの影響を表示します。 より良い認識のために、各サブシステムはそれ自身の色を有します。 カスタムカラーを割り当てたり、デフォルトのカラーを使用することができます。
新しいサブシステムを定義するには、名前を定義し、色を設定し、ルールまたは複数のルールを指定する必要があります。
新しいサブシステムを追加するには
メニューバーから を選択します。 「オプション 」ダイアログが開きます。
オプション ダイアログの左ペインで プロファイル一覧 をクリックします。
プロファイル一覧 ペインの
新しいサブシステムを作成する 近くの矢印をクリックし、 空のサブシステムを追加する をクリックします。サブシステム定義 ダイアログが開きます。
命名 フィールドに新しい名前を入力します。
色 ラベルの右側の領域をクリックして 色を選択する ダイアログを開き、適切な色を選択します。
現在のプロファイルのサブシステムを無効にする場合は、 現在のプロファイルでサブシステムを有効にする チェックボックスをオフにします。
サブシステムの可視性オプションを指定する:
表示 - サブシステムは個別のエントリとして表示されます。
参加 - サブシステムの時間は、呼び出し側サブシステム内で計算されます。 サブシステムは、参加するサブシステムがない場合にのみ個別に表示されます。
非表示 - サブシステムは非表示になります。 サブシステムの時間は計算から除外されます。
例えば、
MethodAはSubsystemAに属し、MethodB(SubsystemBに属する)を呼び出し、更にMethodC(SubsystemCに属する)を呼び出します。 全てのサブシステムが 表示 に設定されている場合、サブシステムの時間は次のように計算されます:
SubsystemA = MethodA
SubsystemB = MethodB
SubsystemC = MethodCSubsystemBを 参加 に設定した場合、サブシステムは次のように計算されます:
SubsystemA = MethodA + MethodB
SubsystemC = MethodCSubsystemBを 非表示 に設定した場合、サブシステムは次のように計算されます:
SubsystemA = MethodA
SubsystemC = MethodCルールを管理するには、 追加する および クリーン をクリックします。 すべてのルールがリストに表示されます。
OK をクリックして変更を保存し、 サブシステム定義 ダイアログを閉じます。
既存のサブシステムを複製してサブシステムを作成することもできます。
サブシステムを複製するには
メニューバーから を選択します。 「オプション 」ダイアログが開きます。
オプション ダイアログの左ペインで プロファイル一覧 をクリックします。
プロファイル一覧 ペインの
新しいサブシステムを作成する 近くの矢印をクリックし、 重複サブシステム をクリックします。サブシステム定義 ダイアログが開きます。
必要に応じて、 サブシステム名 フィールドの名前を変更します。
色 ラベルの右側にある領域をクリックして、 色を選択する ダイアログを開き、色を再定義します。
ルールを管理するには、 追加する および クリーン をクリックします。 すべてのルールがリストに表示されます。
OK をクリックして変更を保存し、 サブシステム定義 ダイアログを閉じます。
いつでも、既存のサブシステムに戻り、それらのルールを変更することができます。
必要なサブシステムがすべて定義されたら、設定をもう少し調整することができます。 考慮する必要のあるすべてのサブシステムは、1 つのプロファイルで集められ、その重要度に従って配置されます。 プロファイルは重要なサブシステムまたはアクティブなサブシステムの集合にすぎません。 名前を持つことも、名前を付けないこともできます。
メソッドが異なるサブシステムの 2 つのルールと一致する場合、サブシステムのリスト内の他のルールよりも上位のサブシステムのルールが適用されます。
新しいプロファイルを作成するには
メニューバーから を選択します。 「オプション 」ダイアログが開きます。
オプション ダイアログの左ペインで プロファイル一覧 をクリックします。 名前のない新しいプロファイルが作成されます。
プロファイル一覧 ペインで
新規プロファイルの追加 をクリックします。プロファイルのリストにアクティブなフィールドが表示されます。 このフィールドに新しいプロファイルの名前を入力します。
サブシステムのリストで、対応するチェックボックスを選択して、アクティブなサブシステムのセットを構成します。オプションで、サブシステムの順序を並べ替えることができます。 これを行うには、移動するサブシステムを選択し、
選択したサブシステムを上に移動する または
選択したサブシステムを下に移動する をクリックします。変更を保存するには、 OK をクリックします。
複数のプロファイルがある場合は、 サブシステム ビューでそれらのプロファイルを切り替えて、今ここで重要と思われるアセンブリの部分を視覚化できます。
サブシステム構成の変更が満足できない場合は、 デフォルトにリセット ボタンを使用して、提供時のデフォルトにすばやくリセットすることができます。
説明を表示
デフォルトでは、 サブシステム ビューが表示されます。 そうでない場合は、 オプション ダイアログの プロファイル一覧 ページで サブシステム分析を有効にする チェックボックスを選択します。 その後、新しいコールスタックを選択するたびに、dotTrace によってビューが再構築されます。


![]()
ほとんどの時間が費やされているサブシステムが最大のブロックを占めています。 このブロックは、子サブシステムを表す小さなブロックで構成されています。
![]()
プロファイル切り替えボタンを使用すると、ビューの作成に応じてプロファイルをすばやく変更し、他のサブシステムを強調して再構築することができます。 ビューを折りたたんだり展開したりすることもできます。
![]()
サブシステムは時間単位でソートされます。 それらのそれぞれは、リーフノードが機能するツリーとして表示されます。
定義されたパターンとカスタムサブシステムに関係なく、独立して存在する 4 つの独立したサブシステムがあります。 すべての機能は、アセンブリに応じて 2 つのグループに分けられ、 システムコード または ユーザーコードコード サブシステムに含めることができます。
システムコード - 選択されたアクティブプロファイルのルールと一致せず、標準システムライブラリに属するすべてのソースコード
ユーザーコードコード - 選択されたアクティブプロファイルのルールと一致せず、標準システムライブラリに属していないすべてのソースコード
あるグループから別のグループへの関数の移動の詳細については、「フィルターの適用 」を参照してください。
残りの 2 つのサブシステムは、アプリケーション内のいくつかのアクティビティに関する情報のみを対象としています。
ガーベッジコレクション - ガベージコレクションに関連するすべてのアクティビティ
特別な機能-.NET ライブラリに属していないすべての関数
ツリービューが不要な場合は、スマートモードに切り替えることができます。 ビューの上部をダブルクリックして閉じます。
重要! ページには、 SQL クエリ、 ロックの競合、 CPU レディ などの「特別な」サブシステムが含まれています。 これらのサブシステムは ETW イベントに基づいており、 dotTrace ビューアーでのみ使用できます。