.NET メトリクス

.NET Framework、.NET Core 用のコードプロファイラにより、メソッドレベルの実行とリソース消費のメトリクスがキャプチャされ、.NET アプリケーションのパフォーマンスに関する詳細な知見が提供されます。

これらのメトリクスの利点は以下の通りです。

  • 関数または関数内のコードのパフォーマンスを分析します。
  • コードの実行パスの分析、非効率的なアルゴリズムやメソッドの特定により、コードを最適化することで、パフォーマンスとスケーラビリティを向上させます。
  • CPU の急上昇、過剰なメモリ消費、スレッド競合などの問題を検出・診断することで、問題のトラブルシューティングと解決を迅速化します。
  • .NET アプリケーションコード(メソッドレベルのプロファイリング、トランザクションのトレース、メモリプロファイリング、および CLR メトリクス)の健全性を分析します。

以下の手順を実行し、利用可能な各種メトリクスを表示します。

  1. [APM] > [ダッシュボード] > [インスタンス] に移動します。
  2. [名前] 列のインスタンス名をクリックします。

以下のパフォーマンスカウンタータブは、.NET メトリクスでのみ利用可能です。これらのタブをクリックすると、関連するメトリクスウィジェットが表示されます。

note

.NET フレームワークはパフォーマンスカウンターをサポートしていますが、.NET Coreはサポートしていません。

メモリ

.NET CLR メモリのカテゴリーには、ガベージコレクタ (GC) に関する情報を提供するカウンターが含まれます。以下のウィジェットにて、これらパフォーマンスカウンターの詳細を知ることができます。

総ヒープサイズ

このウィジェットには、共通言語ランタイム (CLR) によってマネージヒープに割り当てられたメモリ量の合計が表示されます。

Active Instances

ジェネレーション 0 コレクション数

このウィジェットには、アプリケーションの開始以降にジェネレーション 0 オブジェクト(最も新しく割り当てられた最も若いオブジェクト)がガベージコレクションされた回数が表示されます。

Number of gen 0 collections

ジェネレーション 1 コレクション数

このウィジェットには、アプリケーションの起動以降にジェネレーション 1 オブジェクトがガベージコレクションされた回数が表示されます。

Number of gen 1 collections

ジェネレーション 2 コレクション数

このウィジェットには、アプリケーションの起動以降にジェネレーション 2 オブジェクトがガベージコレクションされた回数が表示されます。 カウンターは、ジェネレーション 2 のガベージコレクション(フルガベージコレクションとも呼ばれる)終了時にインクリメントされます。

Number of gen 2 collections

合計コミットメモリ

このウィジェットには、現在ガベージコレクタによってコミットされている仮想メモリの量が表示されます。コミットメモリとは、ディスクのページング ファイルにスペースが予約されている物理メモリを意味します。

Total committed memory

合計予約メモリ

このウィジェットには、現在ガベージコレクタによって予約されている仮想メモリの容量が表示されます。予約メモリとは、ディスクやメインメモリ ページが使用されていない場合に、アプリケーション用に予約されている仮想メモリスペースを意味します。

Total reserved memory

世代別ヒープサイズ

.NET アプリケーションにおける世代別のヒープサイズを監視することで、メモリの使用状況やガベージコレクションプロセスの効率性に関する有益な情報が得られます。このウィジェットには、選択した期間におけるヒープサイズ(MB単位)が表示されます。

Heap size by generation

ロックとスレッド

NET CLR ロックとスレッド カテゴリには、アプリケーションが使用するマネージロックとスレッドに関する情報を提供するカウンターが含まれます。以下のウィジェットにより、これらのパフォーマンスカウンターについての詳細を知ることができます。

論理スレッドの数

このウィジェットは、アプリケーションで現在管理されているスレッドオブジェクトの数を表します。

Number of logical threads

物理スレッドの数

このウィジェットには(オブジェクトの基礎スレッドとして機能することを目的にCLR が作成・所有する)マネージドスレッド 、ネイティブのオペレーティングシステム スレッドの数が表示されます。

Number of Physical threads

コンテンション率/秒

このウィジェットには、実行中のスレッドが管理ロックの取得を試みて失敗した頻度が表示されます。

Contention rate/second

現在のキューの長さ

このウィジェットには、アプリケーションで現在管理ロックの獲得を待っているスレッドが表示されます。このカウンターには、時間経過による平均ではなく、最後に観測された値が表示されます。

Current queue length

合計コンテンション数

このウィジェットには、実行中のスレッドが管理ロックの獲得に失敗した試行の総数が表示されます。

Total number of contentions queue length

ロード

NET CLR ロードカテゴリには、ロードされたアセンブリ、クラス、およびアプリケーションドメインに関する情報を提供するカウンターが含まれます。以下のウィジェットにより、これらのパフォーマンスカウンターについて知ることができます。

ロード時間割合

このウィジェットには、アプリケーションの合計実行時間に対するロード、または待機状態の時間の割合が表示されます。

Percentage time loading

ローダーヒープのバイト数

このウィジェットには、すべてのアプリケーションドメインにわたってクラスローダーが確保したメモリの現在のバイト単位のサイズが表示されます。確保されたメモリとは、ディスクのページングファイルに確保された物理的なスペースを意味します。

Bytes in loader heap

読み込まれたクラス合計数

このウィジェットには、すべてのアセンブリで読み込まれたクラスの合計数が表示されます。

Total classes loaded

合計アセンブリ数

このウィジェットには、すべてのアプリケーションドメインでロードされたアセンブリの合計数が表示されます。

Total assemblies

アンロードされたアプリケーションドメインの合計

このウィジェットには、アンロードされたアプリケーションドメインの合計数が表示されます。

Total appdomains unloaded

ロード失敗の合計数

このウィジェットには、ロードに失敗したクラスの合計数が表示されます。

Total number of load failures

合計アプリケーションドメイン数

このウィジェットには、アプリケーションの開始以降にロードされたアプリケーションドメインのピーク時の合計数が表示されます。

Total appdomains

例外

.NET CLR 例外カテゴリには、アプリケーションによってスローされた例外に関する情報を提供するカウンタ-ーが含まれます。以下のウィジェットにより、これらのパフォーマンスカウンターの詳細を知ることができます。

スローされた例外の数

このウィジェットには、アプリケーションの起動以降に発生した例外の合計数が表示されます。これには、.NET 例外と、.NET 例外に変換されたアンマネジードな例外の両方が含まれます。

Number of exceptions thrown

発生した例外の数/秒

このウィジェットには、1秒あたりの例外発生数が表示されます。これには、.NET 例外と、.NET 例外に変換されたアンマネージドな例外の両方が含まれます。

Number of exceptions thrown/sec

フィルター数/秒

このウィジェットには、1秒あたりに実行された.NET 例外フィルターの数が表示されます。例外フィルターは、例外が処理されたかどうかに関わらず評価されます。

Number of filters/sec

finally ブロック/秒

このウィジェットには、1秒あたりの finally ブロックの実行回数が表示されます。finally ブロックは、try ブロックがどのような終了をしたかに関わらず、確実に実行されます。

Number of finallys/sec

スローからキャッチまでの深さ/秒

このウィジェットには、例外をスローしたフレームから例外を処理したフレームまでの、1秒あたりのスタックフレームのトラバース数が表示されます。

Throw to catch depth/sec

Interops

NET CLR Interop カテゴリには、アプリケーションと COM コンポーネント、COM+ サービス、外部タイプライブラリとのインタラクションに関する情報を提供するカウンターが含まれます。以下のウィジェットにより、これらのパフォーマンスカウンターについての詳細を知ることができます。

CCW の数

このウィジェットには、現在の COM 呼び出し可能ラッパー(CCW)の数が表示されます。CCW とは、アンマネージド COM クライアントから参照されるマネージドオブジェクトのプロキシを意味します。

Number of CCWs

マーシャリング数

このウィジェットには、アプリケーションの起動以降、引数および戻り値が、マネージドコードからアンマネージドコードへ、またはその逆方向へマーシャリングされた合計回数が表示されます。

Number of marshalling

スタブの数

このウィジェットには、CLR によって作成された現在のスタブの数が表示されます。スタブは、COM Interop 呼び出し、またはプラットフォーム呼び出し中に、引数と戻り値をマネージコードからアンマネージコードへ、またはその逆方向へマーシャリングする役割を担います。

Number of stubs

TLB エクスポート数/秒

このメトリクスにより、パブリケーション データベースのトランザクション ログからディストリビューション データベースにエクスポートされるトランザクションの速度が測定されます。このウィジェットは、選択した期間における 1秒あたりの TLB エクスポート数を表示します。

Number of TLB exports/sec

TLB インポート数/秒

このメトリクスは、データベースレプリケーション、特に SQL Server のトランザクションレプリケーションに関連しています。このウィジェットには、ディストリビューション データベースからサブスクライバー データベースにインポートされる 1秒あたりのトランザクションの割合が表示されます。

Number of TLB imports/sec

JIT

JIT(ジャストインタイム)コンパイルプロセスでは、実行時に中間言語(IL)コードがネイティブのマシンコードに変換されます。また、これを監視することで .NET アプリケーション実行のサポートをし、最適なパフォーマンスが確保されます。

JIT 化された IL バイト数

NET CLR JIT カテゴリには、JIT に コンパイルされたコードに関する情報を提供するカウンターが含まれます。以下のウィジェットにより、これらのパフォーマンスカウンターの詳細を知ることができます。

Number of IL bytes

JIT 化されたメソッド数

このウィジェットには、アプリケーションの起動以来、JIT コンパイルされたメソッドの合計数が表示されます。

Number of methods JITed

JIT 時間割合 (%)

このウィジェットには、最後の JIT コンパイルフェーズ以降で、JIT コンパイルに費やされた経過時間の割合が表示されます。

Percentage of time in JIT

IL バイトの JIT 化/秒

このウィジェットには、JITにコンパイルされた(1秒あたりの)CIL バイト数が表示されます。

IL bytes JIT/sec

ネットワーク

.NET CLR ネットワークカテゴリには、アプリケーションがネットワーク上で送受信するデータに関する情報を提供するカウンターが含まれます。以下のウィジェットにより、これらのパフォーマンスカウンターの詳細を知ることができます。

ネットワーク I/O

このウィジェットには、プロセス開始以降で、AppDomain 内のすべてのソケットオブジェクトが受信したバイト数の累計数が表示されます。

Network I/O

確立された接続

プロセス開始以降に AppDomain 内で接続されたストリームソケットのソケットオブジェクトの累積数。このウィジェットは、

Connections established

受信されたデータグラム

このウィジェットには、プロセス開始以降で、アプリケーション ドメイン内すべてのソケットオブジェクトが受信したデータグラムパケットの累積数が表示されます。

Datagrams received

送信されたデータグラム

このウィジェットには、プロセス開始以降で、アプリケーション ドメイン内すべてのソケットオブジェクトが送信したデータグラムパケットの累積数が表示されます。

Datagrams received

セキュリティ

.NET CLR セキュリティ カテゴリには、CLR がアプリケーションに対して 実行するセキュリティチェックに関する情報を提供するカウンターが含まれます。以下のウィジェットにより、これらのパフォーマンスカウンターの詳細を知ることができます。

リンク回数

このウィジェットには、アプリケーションの起動以降で、コードアクセスセキュリティ チェックにリンクした回数の合計が表示されます。

Number of link time checks

RT チェックの時間割合 (%)

このウィジェットには、最後のサンプル以降で、コードアクセスセキュリティ チェックの実行に費やされた経過時間の割合が表示されます。

Percentage time in RT checks

シグニチャー認証に費やされた時間 (%)

このメトリクスには、アプリケーション内のデジタル署名の検証など、暗号操作に費やされた時間が表示されます。このウィジェットには、選択された期間におけるシグニチャー認証に費やされた時間の割合が表示されます。

Percentage time sig authenticating

チェック実行の合計数

このウィジェットには、アプリケーションの起動以降に実行された コードアクセスセキュリティ チェックの合計数が表示されます。

Total runtime checks

関連トピック:

.NET フレームワークのパフォーマンスカウンター の詳細は https://learn.microsoft.com/en-us/dotnet/framework/debug-trace-profile/performance-counters を参照してください。