Обнаруживать, когда трассировка событий Windows отбрасывает события

Как определить, отбрасывает ли сеанс трассировки событий Windows события?

Если он отбрасывает события, как я могу настроить сеанс трассировки, чтобы события не отбрасывались?

Я написал собственный поставщик ETW, чтобы помочь с некоторыми усилиями по отладке. В настоящее время я собираю данные трассировки с помощью logman.exe.

При просмотре результатов кажется, что некоторые события отбрасываются. В основном я ищу что-то вроде:

Событие A Событие C

где должно быть промежуточное событие B, но оно не появляется в файле трассировки. Это должно быть невозможно, поэтому я полагаю, что ETW отбрасывает события.

Конечно, я хотел бы убедиться, что проблема, которую я вижу, вызвана отброшенными событиями, а не ошибкой в ​​моем коде. Я пробовал гугл, но ничего не смог придумать. Кто-нибудь знает, как я могу проверить, сбрасываются ли события?


person Scott Wisniewski    schedule 20.01.2012    source источник
comment
Я использовал logman для сбора результатов.   -  person Scott Wisniewski    schedule 20.01.2012


Ответы (3)


Он не дает прямого ответа на вопрос (как обнаружить капли), но может объяснить капли:

EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING

Записывает события, зарегистрированные на разных процессорах, в общий буфер. Использование этого режима может устранить проблему появления событий не по порядку, когда события публикуются на разных процессорах с использованием системного времени. Этот режим также может устранить проблему с появлением циклических журналов для отбрасывания событий на многопроцессорных компьютерах.

Если вы не используете этот режим и используете системное время, события могут появляться не по порядку на многопроцессорных компьютерах. Это связано с тем, что буферы ETW связаны с процессором, а не с потоком. В результате, если поток переключается с одного ЦП на другой, буфер, связанный с последним ЦП, может быть сброшен на диск до буфера, связанного с первым ЦП.

Если вы ожидаете большого количества событий (например, более 1000 событий в секунду), вам не следует использовать этот режим.

Обратите внимание, что номер процессора не включен в событие. Недоступно до Windows 7 и Windows Server 2008 R2.

person Ian Boyd    schedule 29.01.2012

Я использовал logman, чтобы зафиксировать результаты. Похоже, что журнал трассировки даст мне информацию о потерянных событиях, и я могу настроить его параметры буфера, чтобы уменьшить потерю событий.

person Scott Wisniewski    schedule 20.01.2012

Если вы используете xperf для сбора журналов, он генерирует предупреждение при потере событий. С помощью xperf вы также можете поиграть с размером буфера и разделить ведение журнала на несколько регистраторов.

person rkellerm    schedule 24.10.2012