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

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

2 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам