次の方法で共有


セッション

Windows パフォーマンス レコーダー (WPR) は Windows イベント トレーシング (ETW) を拡張します。 ETW のログ セッションは、ETW プロバイダーのアプリケーション プログラミング インターフェイス (API) を介してイベントを受け取るメモリ内のバッファーのコレクションです。 これらのバッファーは通常ページングされず、カーネルによって管理されます。 ETW は、各プロセッサにバッファーを割り当てます。 ETW イベントの生成とバッファリングは、ETW がすべての種類のイベントをログに記録できるようにするため、ロックフリーです。

ETW は、EventWrite メソッドを呼び出すたびに、呼び出し元のスレッドを実行しているプロセッサに割り当てた現在のバッファー内に領域を予約します。 次に、ETW は、イベント ヘッダーとユーザー データをその領域にコピーします。 バッファーがいっぱいになると、ETW はログ セッションのログ ファイルまたはリアルタイム ストリーミング コンシューマーにバッファーをフラッシュします。 その後、ETW はそのプロセッサに空きバッファーを割り当てます。

ログ記録のスループットが、バッファーを解放するフラッシャーの能力を超えると、ログ セッションで使用可能なすべてのバッファー領域が使用できなくなる可能性があります。 たとえば、ディスクの書き込みスループットが受信イベントのスループットよりも低いためにこれが発生する場合があります。 これにより、EventWrite で ERROR_NOT_ENOUGH_MEMORY エラーが発生し、イベント データが失われます。 このような場合、ETW はログ セッションの EventsLost プロパティをインクリメントして、コンシューマーがデータの消失を確認できるようにします。

記録でイベントが消失しないようにする方法の詳細については、「イベント消失の回避」を参照してください。

メモリまたはファイルへのログ記録

イベント データをメモリ内のバッファーまたはファイルに記録するようにプロファイルを構成できます。 バッファリング モードは、メモリ内の循環セッションです。 このセッションの内容は、要求に応じて、イベント トレース ログ (ETL) ファイルへのスナップショットとして保存できます。 内容を保存する場合、WPR はメモリ内のバッファー領域の内容をフラッシュしません。

バッファリング モードのセッションは常にオンのままにすることができます。 これは、関心のある動作がいつ発生するかわからない場合に特に便利です。 必要な循環バッファー領域が十分に小さく、メモリ内に保持できる場合は、バッファリング モードを選択します。 制御されたシナリオの場合は、シーケンシャル ログ ファイルが最適です。 たとえば、回帰テストの場合や、関心のある動作の発生が容易に予測できる場合は、シーケンシャル ログ ファイルを使用できます。

ログ記録のオプションの詳細については、「ログ モード」を参照してください。

記録プロファイル

記録プロファイルは、各セッションを制御します。 プロファイルには、組み込みプロファイルとユーザー定義プロファイルのどちらかを指定できます。 詳細については、「記録プロファイル」をご覧ください。

バッファー サイズ

I/O の効率を制御し、WPR が大きなイベントをスキップしないようにするには、バッファー サイズが重要です。 バッファーが非常に小さいと、I/O の書き込み効率が低下する可能性があります。 適切な書き込みパフォーマンスを促進し、ディスクのオーバーヘッドとイベントの消失を削減するために、最小バッファー サイズは 64 KB または 128 KB とすることをお勧めします。 バッファー サイズによって、記録の最大期間が決まります。 ETW では、最大イベント サイズが約 64 KB に制限されています。

Collectors

記録プロファイルでは、1 つのセッションに対して 1 つのシステム コレクターと 1 つ以上のイベント コレクターを定義する必要があります。 コレクター名はシステムに対して一意である必要があり、システムにはログ ファイルへの排他的な書き込みアクセス権が必要です。 また、ログ ファイルの名前も、すべてのコレクターのファイル名の中で一意である必要があります。 WPR では環境変数が展開されないため、ログ ファイルへのパスは環境変数を使用せずに指定する必要があります。 詳細については、「1. コレクターの定義」を参照してください。

プロバイダー

ログ セッションは、定義したシステム プロバイダーとイベント プロバイダーのセットから収集されます。 これは、セッションごとに構成する重要な項目です。 ほとんどのプロバイダーは、セッションとの間に多対多の関係を持つことができます。 カーネル イベントやヒープ イベントなどの一部のイベントには、特別なプロバイダーが必要です。 詳細については、「プロバイダー」を参照してください。

WPR の機能

WPR の一般的なシナリオ

記録プロファイル

Buffers

BufferSize