Jetbrains etw service что это

Обновлено: 07.07.2024

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

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

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

В следующем разделе показано, как использовать ETW для оценки производительности и анализа.

Обзор

В следующем списке показаны некоторые из выгодных характеристик ETW:

Мощный

Он предоставляет эффективные механизмы буферизации и ведения журнала. Буфер трассировки управляется ядром. Трассировка ETW неустойчива к сбоям приложений и зависаниям. В случае сбоя системы несохраненные события доступны в файле дампа памяти.

Платформе

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

Встроено в Windows

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

Простым

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

до Windows 2000 в api Windows: дбгпринт () и дебугпринт () доступны только основные механизмы трассировки текста. Им нужны отладчики и, как правило, не были динамически управляемыми. механизм трассировки Windows со временем развивается. Сегодня доступны четыре разных механизма трассировки. наборы api ETW и журнала событий были объединены в единый api ведения журнала событий в Windows Vista, что дает пользователям и разработчикам унифицированный механизм создания событий.

Существует три типа событий:

Windows препроцессора трассировки программного обеспечения (WPP) и классическая трассировка событий windows

MOF-файл (MOF). MOF — это способ описания объектов WMI и включения и декодирования событий.

на основе манифеста: универсальное определение трассировки на основе XML было представлено в Windows Vista. XML-файл содержит элементы для событий, записываемых поставщиком. Дополнительные сведения см. в разделе запись манифеста инструментирования.

Рекомендации в этом разделе посвящены только инструментарию событий на основе манифеста.

ETW имеет следующие важные характеристики.

Разработчики могут выбрать нужные наборы реализаций на основе предполагаемого использования (например, printf, как и реализация WPP, легко добавить в целях отладки).

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

Та же реализация используется для приложений пользовательского режима и компонентов режима ядра.

Трассировка событий Windows доступна в аварийных дампах и динамической отладке.

Трассировка событий Windows имеет представление в режиме реального времени.

Файлы журнала сохраняются в двоичном файле журнала (ETL-файле).

ETW поддерживает ведение журнала нескольких процессов.

Трассировка событий Windows имеет высокую пропускную способность.

Файлы журнала можно просматривать на другом компьютере.

ETW поддерживает циклическую буферизацию для непрерывного ведения журнала и мониторинга.

ETW можно сгруппировать в один из каналов на основе целевой аудитории.

Архитектура ETW

В ETW есть четыре основных компонента: поставщик, сеанс, контроллер и потребитель.

Схема четырех основных компонентов архитектуры ETW

Поставщик

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

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

Сеанс

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

Контроллер

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

Logman.exe — это встроенное приложение контроллера. Windows средство записи производительности (звч) в Windows набор средств производительности является рекомендуемым процессом контроллера.

Потребители

Потребитель — это приложение, которое считывает файл журнала трассировки (ETL-файл) или фиксирует события в активном сеансе трассировки в режиме реального времени и обрабатывает события. Просмотр событий и монитор ресурсов являются встроенными приложениями для пользователей ETW в Box.

Windows performance Analyzer (WPA) в Windows набор средств производительности является рекомендуемым процессом потребителя.

Реализация инструментирования ETW

Планирование инструментирования

Решите, где регистрировать события трассировки событий Windows в коде. Это ведение журнала должно сопоставляться с важными пользовательскими сценариями или частыми вариантами использования, которые необходимо измерять, анализировать и постепенно улучшать. В следующем списке приведены некоторые примеры инструментирования.

  • Изменения состояния
  • Начало и конец значимых операций
  • Создание и удаление ресурсов
  • Другие события, связанные с производительностью или надежностью
  • События отладки

Создание файла манифеста и реализация поставщика

События ETW на основе манифеста могут быть реализованы в приложениях пользовательского режима, включая службы, и в компонентах режима ядра, таких как драйверы, с помощью XML-файла, который называется манифестом события. Дополнительные сведения см. в разделе функции трассировки событий.

Манифест события состоит из следующих разделов:

Определение поставщика:

Ниже приведен пример манифеста события.

Для записи файла манифеста можно использовать:

Генератор манифестов (ECManGen.exe), доступный в пакете SDK для платформы

Visual Studio (events. xsd), доступный в пакете SDK для платформы

Компиляция манифеста события

Манифестфиленаме. h Содержит дескрипторы событий для использования в коде. Манифестфиленаме. RC Скрипт компилятора ресурсов. MSG00001. bin Ресурс языка. Манифестфиленаметемп. bin Ресурс шаблона (поставщик и метаданные).

Чтобы скомпилировать код пользовательского режима, введите следующее:

mc.exe UM [ Манифестфиленаме]

Чтобы скомпилировать код режима ядра, введите следующую команду:

mc.exe-км [ Манифестфиленаме]

Чтобы скомпилировать код управляемого кода или JavaScript, введите следующее:

mc.exe-CS [ Манифестфиленаме]
mc.exe-CSS [ Манифестфиленаме]
mc.exe женератепрожектионс [ Манифестфиленаме]

Обновление кода

Найдите в заголовке следующую строку, чтобы найти макросы (или методы класса) для вызова в коде:

Используется для регистрации поставщика (при запуске приложения).

Используется для отмены регистрации поставщика (при завершении приложения).

Один макрос (или метод) для каждого события определяется в манифесте (в узле).

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

Драйверы см. в образце евентдрв , доступном на сайте MSDN. Зарегистрируйте драйвер в качестве поставщика событий с помощью функции Етврегистер режима ядра ETW:

Добавьте эту функцию в подпрограмму DriverEntry после кода, который создает и инициализирует объект устройства.

Сопоставьте вызов функции Етврегистер с вызовом Етвунрегистер в подпрограмме выгрузки драйвера.

После того как компонент правильно оснащен, можно приступить к регистрации событий в тестовой системе. Сначала необходимо подготовить систему для ведения журнала, зарегистрировав поставщик с помощью программы wevtutil, средства «входящие».

Скопируйте компонент в расположение, указанное в манифесте, с помощью атрибута Ресаурцефиленаме:

xcopy/y MyProviderBinary.exe % TEMP%

wevtutil UM етвманифест. Man
ветвутил IM етвманифест. Man

Убедитесь, что поставщик является видимым:

Поставщики запросов logman

Имя поставщика/GUID появится в списке.

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

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

После правильной установки поставщика в этой системе можно запустить сеанс трассировки для сбора событий из компонента в ETL-файл. в набор средств производительности Windows можно использовать либо Windows средство записи производительности (звч), либо программу командной строки.

Xperf -Start MySession -On мевентпровидер -f MySession. ETL

В этой командной строке параметр -Start предоставляет имя сеанса сбора событий, а параметр -On указывает ETW, что требуется собирать события от поставщика в этом сеансе. (Допускается наличие нескольких аргументов .)

Выполните рабочую нагрузку.

Xperf — останавливает MySession

после создания ETL-файла его можно открыть с помощью анализатора производительности Windows и визуализировать события с помощью графа общих событий и таблицы.

Давненько у нас в бложеке не появлялось новых статей! Что ж, ETW, настало твое время!


Возможно, кто-то из вас и раньше сталкивался с этим сокращением - ETW. Что же это такое? Расшифровывается эта аббревиатура как Event Tracing for Windows. ETW - это системный компонент ОС Windows, который используется для диагностики, отладки и исследования производительности тех или иных частей ОС, а также приложений. Появился он где-то с Windows 2000, но полноценно его использовать стало возможным примерно с Windows Vista.

Тогда сначала быстренько рассмотрим архитектуру ETW, его плюсы и минусы. Вот что из себя представляет этот компонент:


  • Позволяет единообразно потреблять события из сотен источников.
  • Полноценно работает на Windows Vista (или даже Win 7) и новее.
  • Не требует хуков, инжектов, драйверов. Все события можно получать в user mode.
  • Требует привилегий администратора. Увы, не получится работать с объектами ядра (сессиями) от имени простого пользователя.
  • Не будет работать на Windows XP. Также, не все провайдеры, которые доступны в более новых ОС, присутствуют в более старых.
  • Созданные вами сессии будут палиться в Computer Management'е (описано далее), а также любое приложение сможет перечислить имеющиеся в системе сессии; их можно будет остановить и удалить извне. Разумеется, для этого тоже нужны будут права администратора.

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

Само ETW API - не сахар. Оно неочевидное, не слишком хорошо документировано, многие вещи приходится додумывать или искать в Интернете примеры использования той или иной функции. Статей на эту тему написано не так много (некоторые дополнительные ссылки я приведу в конце статьи). Я постараюсь прояснить большинство вопросов, которые у нас возникнут по ходу разбора этого API.

Перед тем, как я перейду к коду, который позволяет создавать сессии и получать события, я опишу несколько штатных системных утилит Windows, которые помогут нам в работе с ETW. Вначале, конечно, неплохо было бы изучить список провайдеров, доступных на конкретной ОС. Для этого можно использовать следующую команду:

Файл jetbrains.etw.collector.host.exe из JetBrains sro является частью JetBrains ETW Collector. jetbrains.etw.collector.host.exe, расположенный в C:/program files/jetbrains/jetbrains rider 2018 .3 .2/plugins/dotcommon/dotfiles/x86/ с размером файла 1447984 байт, версия файла 183.0.12.0, подпись 80bec83c8bd703b81d7901ff62610bb2.

  1. Запустите приложение Asmwsoft Pc Optimizer.
  2. Потом из главного окна выберите пункт "Clean Junk Files".
  3. Когда появится новое окно, нажмите на кнопку "start" и дождитесь окончания поиска.
  4. потом нажмите на кнопку "Select All".
  5. нажмите на кнопку "start cleaning".

Clean Registry to fix jetbrains.etw.collector.host.exe has stopped working error

  1. Запустите приложение Asmwsoft Pc Optimizer.
  2. Потом из главного окна выберите пункт "Fix Registry problems".
  3. Нажмите на кнопку "select all" для проверки всех разделов реестра на наличие ошибок.
  4. 4. Нажмите на кнопку "Start" и подождите несколько минут в зависимости от размера файла реестра.
  5. После завершения поиска нажмите на кнопку "select all".
  6. Нажмите на кнопку "Fix selected".
    P.S. Вам может потребоваться повторно выполнить эти шаги.

3- Настройка Windows для исправления критических ошибок jetbrains.etw.collector.host.exe:

Clean Registry to fix jetbrains.etw.collector.host.exe has stopped working error

  1. Нажмите правой кнопкой мыши на «Мой компьютер» на рабочем столе и выберите пункт «Свойства».
  2. В меню слева выберите " Advanced system settings".
  3. В разделе «Быстродействие» нажмите на кнопку «Параметры».
  4. Нажмите на вкладку "data Execution prevention".
  5. Выберите опцию " Turn on DEP for all programs and services . " .
  6. Нажмите на кнопку "add" и выберите файл jetbrains.etw.collector.host.exe, а затем нажмите на кнопку "open".
  7. Нажмите на кнопку "ok" и перезагрузите свой компьютер.
Как другие пользователи поступают с этим файлом?

Всего голосов ( 181 ), 115 говорят, что не будут удалять, а 66 говорят, что удалят его с компьютера.

Event Tracing for Windows (ETW) is an efficient kernel-level tracing facility that lets you log kernel or application-defined events to a log file. You can consume the events in real time or from a log file and use them to debug an application or to determine where performance issues are occurring in the application.

ETW lets you enable or disable event tracing dynamically, allowing you to perform detailed tracing in a production environment without requiring computer or application restarts.

The Event Tracing API is broken into three distinct components:

    , which start and stop an event tracing session and enable providers , which provide the events , which consume the events

The following diagram shows the event tracing model.

event tracing model

Controllers

Controllers are applications that define the size and location of the log file, start and stop event tracing sessions, enable providers so they can log events to the session, manage the size of the buffer pool, and obtain execution statistics for sessions. Session statistics include the number of buffers used, the number of buffers delivered, and the number of events and buffers lost.

Providers

Providers are applications that contain event tracing instrumentation. After a provider registers itself, a controller can then enable or disable event tracing in the provider. The provider defines its interpretation of being enabled or disabled. Generally, an enabled provider generates events, while a disabled provider does not. This lets you add event tracing to your application without requiring that it generate events all the time.

Although the ETW model separates the controller and provider into separate applications, an application can include both components.

For more information, see Providing Events.

Types of Providers

There are four main types of providers: MOF (classic) providers, WPP providers, manifest-based providers, and TraceLogging providers. You should use a manifest-based provider or a TraceLogging provider if you are writing applications for Windows Vista or later that do not need to support legacy systems.

MOF (classic) providers:

  • Use the RegisterTraceGuids and TraceEvent functions to register and write events.
  • Use MOF classes to define events so that consumers know how to consume them.
  • Can be enabled by only one trace session at a time.

WPP providers:

  • Use the RegisterTraceGuids and TraceEvent functions to register and write events.
  • Have associated TMF files (compiled into a binary's .pdb) containing decoding information inferred from the preprocessor's scan of WPP instrumentation in source code.
  • Can be enabled by only one trace session at a time.

Manifest-based providers:

  • Use EventRegister and EventWrite to register and write events.
  • Use a manifest to define events so that consumers know how to consume them.
  • Can be enabled by up to eight trace sessions simultaneously.

TraceLogging providers:

  • Use TraceLoggingRegister and TraceLoggingWrite to register and write events.
  • Use self-describing events so that the events themselves contain all required information for consuming them.
  • Can be enabled by up to eight trace sessions simultaneously.

All event providers fundamentally use the Event Tracing family of APIs (TraceEvent for legacy technologies and EventWrite/EventWriteEx for newer ones). Event providers simply differ in what field types they store in event payloads and where they store the associated event decoding information.

Consumers

Consumers are applications that select one or more event tracing sessions as a source of events. A consumer can request events from multiple event tracing sessions simultaneously; the system delivers the events in chronological order. Consumers can receive events stored in log files, or from sessions that deliver events in real time. When processing events, a consumer can specify start and end times, and only events that occur in the specified time frame will be delivered.

For more information, see Consuming Events.

Missing Events

Perfmon, System Diagnostics, and other system tools may report on missing events in the Event Log and indicate that the settings for Event Tracing for Windows (ETW) may not be optimal. Events can be lost for a number of reasons:

The total event size is greater than 64K. This includes the ETW header plus the data or payload. A user has no control over these missing events since the event size is configured by the application.

The ETW buffer size is smaller than the total event size. A user has no control over these missing events since the event size is configured by the application logging the events.

For real-time logging, the real-time consumer is not consuming events fast enough or is not present altogether and then the backing file is filling up. This can result if the Event Log service is stopped and started when events are being logged. A user has no control over these missing events.

When logging to a file, the disk is too slow to keep up with the logging rate.

For any of these reasons, please report these problems to the provider of the application or service that is generating the events. These issues can only be fixed by the application developer or the service logging the events. If the missing events are being reported in the Event Log Service, this may indicate a problem with the configuration of the Event Log service. The user may have some limited ability to increase the maximum disk space to be used by the Event Log Service which may reduce the number of missing events.

Читайте также: