0

ETW セッションがイベントをドロップしているかどうかを確認するにはどうすればよいですか?

イベントがドロップされている場合、イベントがドロップされないようにトレース セッションを構成するにはどうすればよいですか?

いくつかのデバッグ作業を支援するカスタム ETW プロバイダーを作成しました。現在、logman.exe を使用してトレース データをキャプチャしています。

結果を表示すると、一部のイベントがドロップされているように見えます。基本的に私は次のようなものを探しています:

イベント A イベント C

これらは介在するイベント B である必要がありますが、トレース ファイルには表示されません。それが起こることは不可能であるべきです.ETWがイベントを落としていると私は信じています.

もちろん、発生している問題がイベントのドロップによるものであり、コードのバグによるものではないことを確認したいと思います。Google を試してみましたが、何も思いつきませんでした。イベントがドロップされているかどうかを確認する方法を知っている人はいますか?

4

3 に答える 3

1

質問(ドロップを検出する方法)に直接答えることはありませんが、ドロップについて説明する場合があります。

EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING

異なるプロセッサでログに記録されたイベントを共通のバッファーに書き込みます。このモードを使用すると、イベントがシステム時間を使用して異なるプロセッサでパブリッシュされているときに、イベントが順不同で表示される問題を解消できます。このモードでは、循環ログが複数のプロセッサ コンピューターでイベントをドロップしているように見える問題も解消できます。

このモードを使用せずにシステム時間を使用すると、複数のプロセッサ コンピューターでイベントが順不同で表示される場合があります。これは、ETW バッファーがスレッドではなくプロセッサに関連付けられているためです。その結果、スレッドがある CPU から別の CPU に切り替えられた場合、後者の CPU に関連付けられたバッファーは、前の CPU に関連付けられたバッファーの前にディスクにフラッシュされる可能性があります。

大量のイベント (たとえば、1 秒あたり 1,000 以上のイベント) が予想される場合は、このモードを使用しないでください。

プロセッサ番号はイベントに含まれていないことに注意してください。Windows 7 および Windows Server 2008 R2 より前では使用できません。

于 2012-01-29T16:28:26.130 に答える
0

ログの収集に xperf を使用すると、イベントが失われたときに警告が生成されます。xperf を使用すると、バッファー サイズを操作して、ログを複数のロガーに分割することもできます。

于 2012-10-24T11:23:50.030 に答える
0

結果をキャプチャするために logman を使用しています。tracelog は、失われたイベントに関する情報を提供してくれるようです。そのバッファー パラメーターを微調整して、イベントの損失を減らすことができます。

于 2012-01-20T19:26:30.080 に答える