パフォーマンスカウンターはETWの一部ですか?そうでない場合、2つの違いは何ですか?
2 に答える
パフォーマンス カウンターと ETW は異なるテクノロジです。パフォーマンス カウンターは、ETW を通じて公開されません。
基本的な違い: パフォーマンス カウンターは、システムの動作に関する高レベルのメトリック (タイマー、読み取りバイト数、割り当てられたオブジェクトなど) を提供しますが、ETW は診断トレースおよびログ機能 (メッセージを考えDebug.WriteLine
ますが、より豊富で構造化されたもの) です。
現在、ETW カウンターとパフォーマンス カウンターの両方が Windows から完全にサポートされており、開発者はコードを記述して、両方のテクノロジのデータを生成および使用できます。
パフォーマンス カウンター
PDH (パフォーマンス データ ヘルパー) カウンターとも呼ばれるパフォーマンス カウンターは、特定のシステムの動作の概要を示す単純な数値メトリックです。たとえば、% Processor Time
ユーザー モード コードの実行に使用されているプロセッサの時間を示すパフォーマンス カウンターがあります。より複雑な例として、# of Methods Jitted
カテゴリ.NET CLR Jit
では、アプリケーションの開始以降に JIT コンパイルされた .NET メソッドの数が示されます。
通常、パフォーマンス カウンターは、システムの状態を監視し、特定のパフォーマンスの問題を診断するために使用されます。これらは、何かが大幅にうまくいかない場合の問題の良い指標ですが、特定の問題が発生している理由についての詳細はわかりません。
Windows パフォーマンス カウンターを表示するには、単にperfmon
. Vista 以降では、[パフォーマンス モニター] ノードをクリックしてカウンター チャートを表示する必要がある場合があります。プログラムでパフォーマンス カウンターにアクセスするにはSystem.Diagnostics.PerformanceCounter
、.NET のクラスまたはネイティブ コードのPDH ライブラリを調べます。
Windows のイベント トレーシング (ETW)
ETW は、Windows に組み込まれているトレース システムです。基本的に、任意のコンポーネント (ユーザー アプリケーションや Windows カーネル自体など) は、発生した特定のイベントに関する診断トレース情報を送信できます。たとえば、カーネルは、プロセスの開始時と停止時、イメージ (DLL など) のロードとアンロード時、スレッドの作成または破棄時、さらにはスレッドがコンテキスト スイッチを実行するときに ETW イベントを送信します。ログに記録されたデータは、別の場所でコンポーネントによって記述されたシリアル化された形式であるため、診断ツールはセッション中に記録された ETW イベントを読み取って理解できます。すべてがどのように連携するかを示す箱と線の図については、こちらを参照してください。
ETW は高速であることを意図しており、ログが有効になっていない場合にシステムのパフォーマンスに重大な影響を与えるべきではありません。Vista 以降、ETW は Windows 全体に普及しており、アプリケーション開発者による使用を目的としています (具体的には、アプリケーションはイベントをログに記録する ETW プロバイダーになることができます)。ETW はイベント ログの基礎であり、パフォーマンス プロファイラー、デバッガー、またはシステム モニターで使用できます。
ETW とのインターフェイスに関するリソースについては、こちらの他の SO 投稿を参照してください。
このドキュメントに基づくと、Vista 以降のパフォーマンス カウンターには ETW ファサードがあるため、ETW とまったく同じ方法で使用できるようです。
Windows Vista® に含まれる新しいパフォーマンス カウンター ライブラリ (PERFLIB バージョン 2.0) は、次のような多くの利点を開発者に提供します。
Event Tracing for Windows (ETW) 通知に基づくプロバイダーとコンシューマー間の標準プロセス間通信 (IPC) メカニズム。これにより、開発が簡素化され、コードの統一性と信頼性が向上します。