Являются ли счетчики производительности частью 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+ вам может потребоваться щелкнуть узел «Монитор производительности», чтобы увидеть диаграмму счетчика. Чтобы программно получить доступ к счетчикам производительности, просмотрите класс 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) и обеспечивающий упрощенную разработку и более унифицированный и надежный код.