Сведения о трассировке событий
Трассировка событий 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 меньше общего размера события. Пользователь не может контролировать эти отсутствующие события, так как размер события настраивается приложением, регистрируя события.
Для ведения журнала в режиме реального времени потребитель в режиме реального времени не потребляет события достаточно быстро или вообще отсутствует, а затем файл резервного копирования заполняется. Это может привести к остановке и запуску службы журнала событий при регистрации событий. Пользователь не может контролировать эти отсутствующие события.
При ведении журнала в файл диск выполняется слишком медленно, чтобы не отставать от скорости ведения журнала.
По любой из этих причин сообщите о проблемах поставщику приложения или службы, создающей события. Эти проблемы могут быть устранены только разработчиком приложения или службой, записыв в журнал событий. Если отсутствующие события передаются в службу журналов событий, это может указывать на проблему с конфигурацией службы журнала событий. У пользователя может быть ограниченная возможность увеличить максимальный объем дискового пространства, используемого службой журналов событий, что может уменьшить количество отсутствующих событий.