Подтвердить что ты не робот

Счетчик производительности против ETW

Являются ли счетчики производительности частью ETW? Если нет, в чем разница между этими двумя?

4b9b3361

Ответ 1

Счетчики производительности и ETW - это разные технологии. Счетчики производительности не отображаются через ETW.

Основное отличие: счетчики производительности обеспечивают высокоуровневые показатели поведения системы (считают таймеры и чтение байтов и выделенные объекты), в то время как ETW - это средство диагностики и ведения журнала (думаю, Debug.WriteLine сообщения, но более богатые и более структурированные).

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

Счетчики производительности

Счетчики производительности, также называемые счетчиками PDH (Performance Data Helper), представляют собой простые числовые показатели, которые дают вам резюме на высоком уровне как ведет себя конкретная система. Например, % Processor Time - это счетчик производительности, который сообщает вам, сколько времени процессор используется для выполнения кода режима пользователя. В качестве более сложного примера # of Methods Jitted в категории .NET CLR Jit указывает, сколько методов .NET было скомпилировано JIT с момента запуска приложения.

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

Чтобы просмотреть счетчики производительности Windows, вы можете просто запустить perfmon. В Vista + вам может потребоваться щелкнуть "Монитор производительности" node, чтобы увидеть таблицу счетчиков. Чтобы программно получить доступ к счетчикам производительности, просмотрите класс System.Diagnostics.PerformanceCounter в .NET или PDH library для собственного кода.

Трассировка событий для Windows (ETW)

ETW - это система трассировки, встроенная в Windows. По сути, любой компонент (например, пользовательское приложение или даже само ядро ​​Windows) может отправлять диагностическую информацию о трассировке определенных событий, которые происходят в этом компоненте. Например, ядро ​​отправляет события ETW, когда процесс запускается и останавливается, когда изображение (например, DLL) загружается и выгружается, когда поток создается или уничтожается, или даже когда поток выполняет контекстный переключатель. Зарегистрированные данные находятся в сериализованном формате, который описывается компонентом в другом месте, что позволяет диагностическим инструментам читать и понимать события ETW, зарегистрированные во время сеанса. См. здесь для диаграммы с ящиками и линиями, как все работает вместе.

ETW должен быть быстрым и не должен существенно влиять на производительность системы, если регистрация не включена. Начиная с Vista, ETW широко распространен во всей Windows и предназначен для использования разработчиками приложений (что означает, что ваше приложение может быть ETW-провайдером, который регистрирует события). ETW является основой для журнала событий и может использоваться профилировщиками производительности, отладчиками или системными мониторами.

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

Ответ 2

Казалось бы, на основе этого документа, начиная с счетчиков производительности Vista +, есть ETW Façade, чтобы их можно было потреблять точно так же, как и ETW.

Новая библиотека счетчиков производительности (PERFLIB версии 2.0), входящая в состав Windows Vista®, предлагает разработчикам ряд преимуществ, в том числе:

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

enter image description here