モニター
JetBrains Rider は、アプリケーションのパフォーマンスをリアルタイムで追跡し、実行時の挙動を分析できる統合監視ツールを提供します。CPU 使用率、メモリ消費量、ガベージコレクションアクティビティ、環境変数、カウンター、メトリクスなどを確認できます。Windows では、このツールは詳細なパフォーマンスデータをバックグラウンドで収集し、統合された dotTrace プロファイラーを使用して分析することもできます。
デフォルトでは、プロジェクトを実行またはデバッグすると、モニターツールウィンドウで監視が自動的に開始されます。

サポートされている OS とアプリケーション
オペレーティングシステム:
Windows – バックグラウンドプロファイリング、パフォーマンス問題の自動検出、タイムフレーム分析など、フル機能をご利用いただけます。一部の機能には dotUltimate ライセンスが必要です。
Linux および macOS – リアルタイムデータのみ。バックグラウンドプロファイリングとパフォーマンス問題の自動検出はサポートされていません。
アプリケーション:
.NET Core 3.0 以降、.NET 5.0 以降
.NET フレームワーク (カウンター、メトリクス、例外に関する情報なし)
Mono (カウンター、メトリクス、例外に関する情報なし)
Unity (CPU とメモリのチャートのみが利用可能です)
C++ (CPU とメモリのチャートのみが利用可能です)
Unreal Engine (CPU とメモリのチャートのみが利用可能です)
パフォーマンスタブ
パフォーマンスタブは、アプリケーションの実行時の動作をグラフで視覚化します。Windows では、検出されたパフォーマンス問題のリストも表示され、統合された dotTrace プロファイラー(dotUltimate ライセンスが必要)を使用して詳細に分析できます。
グラフ

グラフタブには、アプリケーションの CPU とメモリの使用状況が表示されます。グラフの上にマウスを移動すると、データポイントの詳細情報が表示されます。
CPU チャートには、アプリケーションの CPU 使用率と、UI フリーズおよびパフォーマンスホットスポットの問題が検出された時間間隔が表示されます。
GC チャートには、アプリケーション内のガベージコレクション (GC) イベントと、高い GC 活性の問題が検出された時間間隔が表示されます。
メモリチャートには、アプリケーションのメモリ使用量が表示されます。
- メモリ使用量の計算方法
メモリチャートには、プロセスのプライベートメモリ (このプロセス専用で、他のプロセスと共有されないメモリ) が表示されます。
Windows : このグラフはプロセスのコミットチャージ(英語)値を示しています。この値にはプライベートページ(スワップアウトされている場合でも)が含まれ、他のプロセスと共有されているページは含まれません。そのため、他のツールで表示される「常駐 / ワーキングセット」よりも高くなる場合も低くなる場合もあります。このグラフでは、GetProcessMemoryInfo(英語) 値を使用して
PROCESS_MEMORY_COUNTERS_EX.PrivateUsageを計算しています。Linux : チャートは、/proc/<pid>/smaps_rollup(英語) (ロールアップファイルが利用できない場合は /proc/<pid>/smaps(英語)) の
Private_CleanとPrivate_Dirtyを合計します。macOS : このチャートは、プロセスのメモリ領域を反復処理して、常駐プライベートバイトとスワップアウトされたプライベートバイトを追加します (vmmap(英語) ツールが報告するものと同様)。
さまざまなツールがさまざまなメトリクス (プライベートメモリと常駐 / ワーキングセット) を視覚化するため、ツール間で数値が完全に一致しないのは正常です。
検出された問題 (Windows のみ)

Windows では、監視ツールはアプリケーション内の様々な問題を自動的に検出できます。検出された問題は、統合された dotTrace プロファイラーを使用して詳細に分析できます。
背景プロファイリング (Windows のみ)
Windows では、JetBrains Rider は ETW CPU サンプリングを使用して、実行中またはデバッグセッション中にバックグラウンドで詳細なパフォーマンスデータを収集します。このプロセスは dotTrace のタイムラインプロファイリングに似ていますが、自動的に実行され、オーバーヘッドは最小限です。収集されるデータには以下が含まれます。
メソッド実行時間を含むスタックトレース
メソッドアクティビティのタイムライン
割り当てやガベージコレクションなどの実行時イベント
バックグラウンドプロファイリングは通常、アプリケーションのパフォーマンスに 1 – 2% の影響のみをもたらします。エッジケースでは、オーバーヘッドが最大 10% に達する可能性があります。パフォーマンスの低下が発生した場合は、の ETW CPU サンプリングチェックボックスをオフにしてください。
統合された dotTrace プロファイラー(下記参照)を使用してパフォーマンスデータを分析できます。データの分析には dotUltimate ライセンスが必要ですためご注意ください。
検出された問題機能もこのバックグラウンドプロファイリングデータによって強化されています。
監視データを分析する
統合された dotTrace プロファイラー (dotUltimate ライセンスが必要) を使用して、収集されたパフォーマンスデータを分析できます。
問題を分析する
リスト内の問題をダブルクリックするか、右クリックして問題を分析するを選択します。
問題に関する詳細情報は、新しいエディタータブに表示されます。検出された問題の分析について詳しくは
dotTrace の問題を分析する
リスト内の問題を右クリックし、発行範囲を選択を選択します。
グラフタブの上にある
選択した時間範囲を分析するボタンをクリックします。発行時間範囲が dotTrace ツールウィンドウに開き、コールツリーとイベントデータが表示されます。dotTrace を使用してデータを分析する方法を学ぶ
dotTrace の時間間隔を分析する
グラフをクリックして、分析する時間間隔を選択します。
グラフタブの上にある
選択した時間範囲を分析するボタンをクリックします。対応する時間範囲が dotTrace ツールウィンドウに開き、コールツリーとイベントデータが表示されます。dotTrace を使用してデータを分析する方法を学ぶ

dotTrace の全時間範囲を分析
グラフタブの上にある
全時間範囲を分析ボタンをクリックします。dotTrace ツールウィンドウが開き、実行またはデバッグセッション全体のコールツリーとイベントデータが表示されます。dotTrace を使用してデータを分析する方法を学ぶ
カウンタータブ
カウンタータブには、有効なすべてのカウンターおよびメトリクスプロバイダーのカウンターとその値が表示されます。
カウンター
.NET カウンターは、アプリケーションのパフォーマンスデータを取得する方法の 1 つです。ほとんどの .NET システムアセンブリは、独自のカウンターセットを提供します。たとえば、基本
System.Runtimeアセンブリには、CPU とメモリの使用状況、特定のヒープでのガベージコレクションの数、ロック競合数、スレッドプールキューの長さなどのカウンターが含まれています。Microsoft.AspNetCore.Hostingは、サーバーアプリケーションの監視に役立つカウンター (要求率、失敗した要求の数など) を提供します。さらに、アプリケーションは、EventCounters を使用して独自のカスタムカウンターを提供することができます。メトリック
メトリクスは、OpenTelemetry などのさまざまなサードパーティプロバイダーをサポートするアプリケーションデータを収集するためのより現代的な方法です。.NET アセンブリも独自のメトリクスセットを提供します。例:
Microsoft.AspNetCore.Hostingは、要求の期間と現在のアクティブな要求の数のメトリクスを提供します。カウンターだけでなく、アプリケーションは独自のカスタムメトリクスを提供できます。
プロバイダーを追加または削除するには、に移動し、カウンタープロバイダーまたはメトリクスプロバイダーでプロバイダーのリストを構成します。プロバイダーを追加する場合:
プロバイダーからのすべてのカウンター / メトリクスを追加するには、その名前を指定します(例:
MyProvider)プロバイダーから特定のカウンター / メトリクスを追加するには、プロバイダーとカウンター / メトリクス名を次の形式で指定します:
ProviderName[CounterName1,CounterName2]例:OpenTelemetry.Instrumentation.Runtime[process.runtime.dotnet.gc.collections]
カウンターとメトリクスの値を更新する頻度 (秒単位) を定義するには、のリフレッシュ間隔パラメーターを使用します。
「環境」タブ
環境タブには、アプリケーションの環境変数とシステムプロパティが表示されます。
監視モード
デフォルトでは、プロジェクトを実行またはデバッグすると自動的に監視が開始されます。この動作は、モニターツールウィンドウ設定のモニターを使用可能にしますかセレクターで変更できます。
デバッグ時または実行時 – プロジェクトを実行またはデバッグすると、監視が自動的に開始されます。
デバッグ中 – 監視はプロジェクトをデバッグするときにのみ自動的に開始されます。
なし – 監視は無効になります。
プロファイリングデータを取得する
監視ツールで収集されたデータだけでは、アプリケーションのパフォーマンスを分析するには不十分な場合があります。より詳細な分析を行うには、モニターウィンドウのツールバーからプロファイリングデータ (パフォーマンスプロファイリングセッションの開始やメモリスナップショットの取得など) を取得できます。
スタックトレースを収集する – アプリケーションのスタックトレースを取得します。スタックトレースはスタックトレースエクスプローラーで自動的に開かれます。これは、予期しない UI フリーズが発生し、潜在的なスレッドロックを調査したい場合などに役立ちます。
メモリスナップショットを取得する – アプリケーションのメモリスナップショットを即座に取得します。スナップショットが収集されると、dotMemory プロファイラーツールウィンドウで開かれます。
サンプリングプロファイリングを開始する |
タイムラインプロファイリングを開始する –タイムラインまたはサンプリングプロファイリングタイプを使用してパフォーマンスプロファイリングセッションを開始します。プロファイリングデータの記録を停止し、パフォーマンススナップショットを保存するには、
ボタンをクリックします。収集されたスナップショットは、dotTrace プロファイラーツールウィンドウで開かれます。
関連ページ:
プロファイリング結果を分析する
アプリケーションの実行が遅すぎると、問題を特定して実行するアクションを理解することが困難になる可能性があります。アプリケーションのプロファイリングとパフォーマンススナップショットの取得後の次のステップは、スナップショットを開いてデータを分析することです。通常、パフォーマンス分析の最終的なゴールは、パフォーマンスの問題を引き起こす特定の方法を特定することです。このタスクの実行を支援するために、dotTrace プロファイラーウィンドウには、呼び出しツリーとホットスポットの 2 つのビューがあります...
問題検出
Windows では、モニターツールはアプリケーションの様々な種類の実行時パフォーマンスの問題を自動的に検出できます。デバッグ時または通常実行時に実行され、UI のフリーズ、長時間実行されるデータベースコマンド、ASP.NET Core リクエストの遅延といった潜在的な問題を特定します。検出された問題は、モニターツールウィンドウの検出された問題セクションに表示されます。ここで、問題を確認したり、関連コードに移動したり、統合された dotTrace プロファイラーを使用して問題の原因となったメソッド...
.NET コードのパフォーマンスプロファイリング
パフォーマンスプロファイリングの目的は、アプリケーションのパフォーマンス問題の原因を見つけることです。これには、たとえば、「最も遅い方法は何ですか ? 」という単純な質問が含まれます。CPU 不足、ガベージコレクションのブロッキング、ディスク I/O、その他の問題に関連するパフォーマンスのボトルネックのより複雑な分析も可能です。JetBrains Rider は dotTrace プロファイラーと統合して、.NET アプリケーションのパフォーマンスプロファイリングを提供します。プロファイラーは、do...
プロファイリング結果を分析する
プロファイリングセッションが終了すると、分析ドキュメントウィンドウは次のようになります。dotMemory を使用すると、次のデータを分析できます。メモリ割り当てデータ (1) メモリ割り当て分析を使用すると、アプリケーションの実行中にメモリ内のオブジェクトの割り当てを追跡できます。これにより、作成されたオブジェクトのタイプとその作成を担当したメソッドを識別できます。本質的に、これは「アプリケーションのどこにどのようにメモリが割り当てられているのか ? 」という質問に答えます。分析ドキュメントウィ...
アプリケーションのプロファイル
プロファイルするアプリケーションの種類に関係なく、ワークフローは常に同じであり、次の内容で構成されます。使用するプロファイリング構成を決定する、プロファイリングセッションを実行し、スナップショットを取得する、収集したスナップショットを分析する、セッションを実行してスナップショットを取得する:セッションを開始してスナップショットを取得するツールバーで、プロファイルを作成する実行構成を選択します。実行 | スイッチプロファイリング設定メニューで、プロファイリング構成を選択します。サンプリング、トレ...