Определить, когда ETW отбрасывает события - PullRequest
0 голосов
/ 20 января 2012

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

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 29 января 2012

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

EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING

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

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

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

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

0 голосов
/ 24 октября 2012

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

0 голосов
/ 20 января 2012

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

...