Сведения о трассировке событий

Трассировка событий Windows (ETW) — это эффективное средство трассировки на уровне ядра, которое позволяет записывать события, определенные ядром или приложением, в файл журнала. Вы можете использовать события в режиме реального времени или из файла журнала и использовать их для отладки приложения или для определения проблем с производительностью в приложении.

Трассировка событий Windows позволяет включать или отключать трассировку событий динамически, позволяя выполнять подробную трассировку в рабочей среде без перезапуска компьютера или приложения.

API трассировки событий состоит из трех отдельных компонентов:

  • Контроллеры, которые запускают и останавливают сеанс трассировки событий и обеспечивают поставщиков
  • Поставщики, предоставляющие события
  • Потребители, которые используют события

На следующей схеме показана модель трассировки событий.

Модель трассировки событий

Контроллеры

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

Дополнительные сведения см. в разделе Управление сеансами трассировки событий.

Поставщики

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

Хотя модель трассировки событий Windows разделяет контроллер и поставщик на отдельные приложения, приложение может включать оба компонента.

Дополнительные сведения см. в разделе Предоставление событий.

Типы поставщиков

Существует четыре main типа поставщиков: поставщики MOF (классические), поставщики WPP, поставщики на основе манифеста и поставщики TraceLogging. При написании приложений для Windows Vista или более поздних версий, которые не нуждаются в поддержке устаревших систем, следует использовать поставщик на основе манифеста или traceLogging.

Поставщики MOF (классические):

  • Используйте функции RegisterTraceGuids и TraceEvent для регистрации и записи событий.
  • Используйте классы MOF для определения событий, чтобы потребители знали, как их использовать.
  • Может быть включен только одним сеансом трассировки одновременно.

Поставщики WPP:

  • Используйте функции RegisterTraceGuids и TraceEvent для регистрации и записи событий.
  • Имеют связанные TMF-файлы (скомпилированные в PDB-файл двоичного файла), содержащие сведения о декодировании, полученные из проверки препроцессора инструментирования WPP в исходном коде.
  • Может быть включен только одним сеансом трассировки одновременно.

Поставщики на основе манифеста:

  • Используйте EventRegister и EventWrite для регистрации и записи событий.
  • Используйте манифест для определения событий, чтобы потребители знали, как их использовать.
  • Может быть включен до восьми сеансов трассировки одновременно.

Поставщики TraceLogging :

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

Все поставщики событий в основном используют семейство API трассировки событий (TraceEvent для устаревших технологий и EventWriteEx/ для новых). Поставщики событий просто отличаются тем, какие типы полей хранятся в полезных данных событий и где хранятся связанные сведения о декодировании событий.

Потребители

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

Дополнительные сведения см. в разделе Использование событий.

Отсутствующие события

Perfmon, System Diagnostics и другие системные средства могут сообщать об отсутствующих событиях в журнале событий и указывать, что параметры трассировки событий Windows (ETW) могут быть неоптимальными. События могут быть потеряны по ряду причин:

  • Общий размер события превышает 64 КБ. Сюда входит заголовок ETW, а также данные или полезные данные. Пользователь не может контролировать эти отсутствующие события, так как размер события настраивается приложением.

  • Размер буфера трассировки событий Windows меньше общего размера события. Пользователь не может контролировать эти отсутствующие события, так как размер события настраивается приложением, регистрируя события.

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

  • При ведении журнала в файл диск выполняется слишком медленно, чтобы не отставать от скорости ведения журнала.

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