Сведения о трассировке событий
Трассировка событий для Windows (ETW) — это эффективное средство трассировки на уровне ядра, которое позволяет регистрировать события ядра или определяемые приложением события в файл журнала. Вы можете использовать события в режиме реального времени или из файла журнала, а также использовать их для отладки приложения или определения проблем с производительностью приложения.
Трассировка событий Windows позволяет динамически включать или отключать трассировку событий, позволяя выполнять подробную трассировку в рабочей среде без перезапуска компьютера или приложения.
API трассировки событий разбивается на три отдельных компонента:
- Контроллеры, которые запускают и останавливают сеанс трассировки событий и позволяют поставщикам
- Поставщики, предоставляющие события
- Потребители, которые используют события
На следующей схеме показана модель трассировки событий.
Контроллеры
Контроллеры — это приложения, которые определяют размер и расположение файла журнала, запускают и останавливают сеансы трассировки событий, позволяют поставщикам регистрировать события в сеансе, управлять размером буферного пула и получать статистику выполнения для сеансов. Статистика сеанса включает количество используемых буферов, количество доставленных буферов и количество потерянных событий и буферов.
Дополнительные сведения см. в разделе "Управление сеансами трассировки событий".
Поставщики
Поставщики — это приложения, содержащие инструментирование трассировки событий. После регистрации поставщика контроллер может включить или отключить трассировку событий в поставщике. Поставщик определяет его интерпретацию включения или отключения. Как правило, включенный поставщик создает события, в то время как отключенный поставщик не выполняется. Это позволяет добавлять трассировку событий в приложение без необходимости создавать события все время.
Хотя модель трассировки событий Windows разделяет контроллер и поставщик на отдельные приложения, приложение может включать оба компонента.
Дополнительные сведения см. в разделе "Предоставление событий".
Типы поставщиков
Существует четыре основных типа поставщиков: поставщики MOF (классическая модель), поставщики WPP, поставщики на основе манифестов и поставщики TraceLogging. Если вы пишете приложения для Windows Vista или более поздней версии, не требуется поддерживать устаревшие системы, следует использовать поставщик на основе манифеста или поставщика TraceLogging.
Поставщики MOF (классические):
- Используйте функции RegisterTraceGuids и TraceEvent для регистрации и записи событий.
- Используйте классы MOF для определения событий, чтобы потребители знали, как их использовать.
- Можно включить только один сеанс трассировки за раз.
Поставщики WPP:
- Используйте функции RegisterTraceGuids и TraceEvent для регистрации и записи событий.
- Связаны файлы TMF (скомпилированные в PDB-файл двоичного файла), содержащие декодируемые сведения, полученные из сканирования препроцессора инструментирования WPP в исходном коде.
- Можно включить только один сеанс трассировки за раз.
Поставщики на основе манифестов:
- Используйте EventRegister и EventWrite для регистрации и записи событий.
- Используйте манифест для определения событий, чтобы потребители знали, как их использовать.
- Можно включить одновременно до восьми сеансов трассировки.
Поставщики TraceLogging:
- Используйте TraceLoggingRegister и TraceLoggingWrite для регистрации и записи событий.
- Используйте самоописывание событий, чтобы сами события содержали все необходимые сведения для их использования.
- Можно включить одновременно до восьми сеансов трассировки.
Все поставщики событий принципиально используют семейство API трассировки событий (TraceEvent для устаревших технологий и EventWriteEventWriteEx/ для новых). Поставщики событий просто отличаются от типов полей, которые они хранят в полезных данных событий и где хранятся связанные сведения о декодировании событий.
Потребители
Потребители — это приложения, которые выбирают один или несколько сеансов трассировки событий в качестве источника событий. Потребитель может запрашивать события из нескольких сеансов трассировки событий одновременно; система доставляет события в хронологическом порядке. Потребители могут получать события, хранящиеся в файлах журнала, или из сеансов, которые доставляют события в режиме реального времени. При обработке событий потребитель может указать время начала и окончания, и будут доставлены только события, происходящие в указанном временном интервале.
Дополнительные сведения см. в разделе "Использование событий".
Отсутствующие события
Perfmon, System Diagnostics и другие системные средства могут сообщать о отсутствующих событиях в журнале событий и указывать, что параметры трассировки событий для Windows (ETW) могут быть неоптимальными. События могут быть потеряны по ряду причин:
Общий размер события превышает 64 КБ. Сюда входит заголовок ETW, а также данные или полезные данные. Пользователь не контролирует эти отсутствующие события, так как размер события настраивается приложением.
Размер буфера трассировки событий Windows меньше общего размера события. Пользователь не контролирует эти отсутствующие события, так как размер события настраивается приложением, регистрируя события.
Для ведения журнала в реальном времени потребитель в режиме реального времени не потребляет события достаточно быстро или вообще отсутствует, а затем резервный файл заполняется. Это может привести к остановке и запуску службы журнала событий при регистрации событий. Пользователь не контролирует эти отсутствующие события.
При ведении журнала в файл диск слишком медленный, чтобы идти в ногу с частотой ведения журнала.
По любой из этих причин сообщите об этих проблемах поставщику приложения или службы, создающей события. Эти проблемы могут быть исправлены только разработчиком приложения или службой регистрации событий. Если отсутствующие события передаются в службе журналов событий, это может указывать на проблему с конфигурацией службы журнала событий. У пользователя может быть ограниченная возможность увеличить максимальное дисковое пространство, которое будет использоваться службой журналов событий, что может уменьшить количество отсутствующих событий.