Microsoft Performance Toolkit SDK
The Microsoft Performance Toolkit is a collection of cross-platform tools developers can use to create
and extend performance analysis applications. It serves as the runtime of the Windows Performance Analyzer,
a Windows program included in the Windows Performance Toolkit.
By using the Microsoft Performance Toolkit SDK, Windows Performance Analyzer — or any performance analysis application —
can be configured to process and display performance data from arbitrary sources.
The Microsoft Performance Toolkit SDK provides two key functionalities:
- Facilitating the development of «SDK plugins,» which provide the SDK with logic for creating structured,
tabular data from arbitrary data sources such as Common Trace Format (.ctf
) files - Allowing developers to extend an existing SDK plugin without access to its source code through an efficient,
feature-rich data-processing pipeline
These two functionalities are not mutually exclusive, and plugins may access data in another plugin’s (or, commonly, its own)
data-processing pipeline when creating tables for a given data source.
For help with getting started and developing SDK plugins, refer to our documentation.
In this Repository
devel-template
: a work-in-progress .NET template for creating SDK pluginsdocumentation
: instructions for how to utilize the SDK and create SDK pluginssamples
: example SDK plugins’ source codesrc
: the source code for the SDK
Projects in the SDK Solution
Microsoft.Performance.SDK
: Software library for building SDK pluginsMicrosoft.Performance.SDK.Runtime
: Runtime for loading and processing data from plugins. Plugins should not depend on this libraryMicrosoft.Performance.SDK.Runtime.NetCoreApp
: .NETCore-specific functionality ofMicrosoft.Performance.SDK.Runtime
Microsoft.Performance.SDK.Toolkit.Engine
: Interface for programmatically manipulating, cooking, and accessing data from SDK pluginsMicrosoft.Performance.SDK.Tests
: Tests forMicrosoft.Performance.SDK
Microsoft.Performance.SDK.Runtime.Tests
: Tests forMicrosoft.Performance.SDK.Runtime
Microsoft.Performance.SDK.Runtime.NetCoreApp.Tests
: Tests forMicrosoft.Performance.SDK.Runtime.NetCoreApp
Microsoft.Performance.SDK.Toolkit.Engine.Tests
: Tests forMicrosoft.Performance.SDK.Toolkit.Engine
Microsoft.Performance.SDK.Testing
: General utilities for authoring testsMicrosoft.Performance.SDK.Testing.SDK
: SDK-specific utilities for authoring testsPluginConfigurationEditor
: description coming soon
Known SDK Driver Plugin Compatibility
This repository tracks which versions of the SDK are compatibile with certain SDK drivers such as Windows Performance Analyzer. This information can be used to determine which version of an SDK driver should be used when loading plugins compiled against a specific SDK version.
This information is listed in the known SDK driver compatibility lists document.
Getting Started
Refer to the documentation folder for help with creating SDK plugins.
Coming Soon
Team is actively working to provide better documentation, more samples, and several in-depth tutorials.
How to Engage, Contribute, and Provide Feedback
The Performance ToolKit team encourages contributions through both issues and PRs.
Community
This project uses the Microsoft Open Source Code of Conduct..
Trademarks
This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services. Authorized use of these trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
Security
To report a security issue, please follow the guidance here: Security.
Licenses
All code in this repository is licensed under the MIT License.
Windows Performance Toolkit (WPT) — это набор инструментов, разработанных Microsoft, который позволяет анализировать и повышать производительность операционной системы Windows. Оптимизация производительности играет важную роль для пользователей, особенно тех, кто занимается разработкой или управлением систем. WPT предоставляет мощный и глубокий анализ производительности и помогает идентифицировать и устранять проблемы, связанные с быстродействием компьютера.
Один из ключевых инструментов в составе Windows Performance Toolkit — это Windows Performance Recorder (WPR), который позволяет записывать данные о производительности во время работы системы. Записанные данные можно потом проанализировать с помощью другого составляющего инструмента — Windows Performance Analyzer (WPA). WPA генерирует детальные отчеты, которые помогают идентифицировать проблемные области и предоставляют рекомендации по их устранению.
Windows Performance Toolkit ранее был доступен только для разработчиков и IT-специалистов, но сейчас он стал доступен для всех пользователей операционной системы Windows. Чтобы запустить инструмент, нужно скачать WPT с официального сайта Microsoft и установить его на своем компьютере. После установки, можно легко запустить Windows Performance Recorder или Windows Performance Analyzer и начать анализировать производительность своей системы.
Содержание
- Windows Performance Toolkit
- Зачем использовать инструмент для повышения производительности Windows
- Установка и настройка Windows Performance Toolkit
- Как запустить Windows Performance Toolkit
- Основные компоненты Windows Performance Toolkit
- Анализ результатов с помощью Windows Performance Toolkit
Основная цель Windows Performance Toolkit — исследование и анализ процессов, которые влияют на производительность операционной системы. С его помощью можно выявить причины замедления системы, находить узкие места и оптимизировать процессы, влияющие на производительность. WPT предоставляет различные инструменты, такие как Event Tracing for Windows (ETW), Windows Performance Recorder (WPR) и Windows Performance Analyzer (WPA), которые позволяют собирать и анализировать данные производительности.
Основными компонентами Windows Performance Toolkit являются:
- Event Tracing for Windows (ETW) — это функция Windows, которая позволяет записывать и собирать различные события, происходящие в системе. ETW позволяет получить разнообразную информацию о работе операционной системы и приложений, которая может быть использована для анализа производительности.
- Windows Performance Recorder (WPR) — это утилита, предоставляемая в рамках WPT, которая позволяет записывать данные производительности во время выполнения различных сценариев. С помощью WPR можно собрать информацию о загрузке системы, использовании процессора, используемой памяти и других параметрах производительности.
- Windows Performance Analyzer (WPA) — это инструмент для анализа данных, полученных с помощью ETW и WPR. WPA предоставляет графический интерфейс, с помощью которого можно визуализировать и анализировать данные производительности. Он позволяет идентифицировать узкие места и проблемные области, а также предоставляет советы по оптимизации производительности.
Windows Performance Toolkit — мощный инструмент, который позволяет анализировать и оптимизировать производительность Windows. С его помощью можно выявить и устранить проблемы, которые влияют на производительность операционной системы и приложений. Включая ряд инструментов и утилит, WPT является незаменимым помощником для разработчиков и системных администраторов, стремящихся повысить производительность Windows.
Зачем использовать инструмент для повышения производительности Windows
Использование инструмента для повышения производительности Windows, такого как Windows Performance Toolkit, может быть полезным для различных целей. Вот несколько преимуществ, которые могут вас заинтересовать:
- Улучшение производительности компьютера — Инструменты, предоставляемые Windows Performance Toolkit, позволяют анализировать нагрузку на систему, идентифицировать проблемные места и оптимизировать работу операционной системы. Это может позволить увеличить производительность компьютера, ускорить запуск программ и улучшить отзывчивость системы в целом.
- Выявление и устранение проблем — Инструментарий Windows Performance Toolkit обладает мощными средствами для выявления и анализа проблем в системе. С его помощью можно измерять время загрузки операционной системы, выявлять узкие места и определить, где необходимо внести изменения для улучшения производительности. Благодаря этому вы сможете решить проблемы, которые могут замедлять работу компьютера или вызывать его нестабильность.
- Оптимизация работы приложений — Windows Performance Toolkit предоставляет средства для профилирования и анализа производительности различных приложений. С их помощью можно выяснить, какие именно компоненты программы работают медленно, и определить, как можно оптимизировать и ускорить их работу. Это может быть полезно для разработчиков приложений, а также для пользователей, которые часто работают с определенными программами или играми.
- Повышение энергоэффективности — Использование Windows Performance Toolkit также может помочь оптимизировать энергопотребление компьютера. С помощью инструментов данного набора можно измерить энергопотребление различных компонентов системы, выявить энергозатратные процессы и принять меры для снижения энергопотребления. Это может быть полезно как для экономии электроэнергии, так и для продления времени автономной работы портативных компьютеров.
Короче говоря, использование инструмента для повышения производительности Windows, такого как Windows Performance Toolkit, может помочь вам сделать ваш компьютер более эффективным, стабильным и отзывчивым, а также оптимизировать работу различных приложений под ваши нужды.
Установка и настройка Windows Performance Toolkit
Windows Performance Toolkit (WPT) представляет собой набор инструментов, который позволяет анализировать и оптимизировать производительность операционной системы Windows. Прежде чем начать использовать WPT, необходимо установить и настроить его. В этом разделе мы рассмотрим, как это сделать.
Шаг 1: Скачивание WPT
В первую очередь, необходимо скачать Windows Performance Toolkit с официального сайта Microsoft. Для этого перейдите на страницу загрузки WPT и выберите версию пакета, соответствующую вашей операционной системе.
Шаг 2: Установка WPT
После скачивания запустите загруженный файл установки и следуйте инструкциям мастера установки. В процессе установки вы можете выбрать необходимые компоненты WPT, которые вы планируете использовать.
Шаг 3: Подготовка к записи данных
Для записи данных о производительности Windows в WPT необходимо настроить систему. Для этого выполните следующие действия:
- Откройте командную строку с правами администратора.
- Перейдите в папку, в которую был установлен WPT.
- Выполните команду «xperf -on latency -stackwalk profile».
- Дождитесь завершения записи данных о производительности.
Шаг 4: Анализ данных производительности
После записи данных о производительности вы можете проанализировать их с помощью инструментов WPT. Для этого выполните следующие действия:
- Откройте командную строку с правами администратора.
- Перейдите в папку, в которую был установлен WPT.
- Выполните команду «xperf <путь_к_файлу>«. Вместо «<путь_к_файлу>» укажите путь к файлу с записанными данными о производительности.
- Просмотрите результаты анализа, предоставленные инструментами WPT.
Теперь вы готовы использовать Windows Performance Toolkit для анализа и оптимизации производительности операционной системы Windows. Этот мощный инструмент поможет вам выявить проблемы производительности и принять меры для их исправления.
- Установите Windows SDK.
- Откройте Developer Command Prompt.
- Перейдите в директорию со средствами производительности.
- Запустите инструменты производительности.
Перед запуском WPT вам нужно установить Windows Software Development Kit (SDK). Вы можете скачать и установить Windows SDK с официального сайта Microsoft.
После установки Windows SDK найдите Developer Command Prompt в меню «Пуск» вашей операционной системы. Щелкните правой кнопкой мыши на Developer Command Prompt и выберите «Запустить от имени администратора».
В командной строке Developer Command Prompt введите команду «cd C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit» (замените путь на соответствующий, если ваша установка Windows SDK находится в другом месте).
В командной строке Developer Command Prompt введите команду «wprui» и нажмите Enter. Это откроет интерфейс пользовательского интерфейса WPT, который предлагает различные инструменты для анализа производительности Windows.
После запуска Windows Performance Toolkit вы будете готовы использовать его инструменты для профилирования и анализа производительности вашей операционной системы Windows.
- Windows Performance Recorder (WPR) — инструмент, используемый для записи производительности на компьютере или сервере Windows. Он позволяет собирать данные о различных событиях и метриках производительности, таких как процессор, память, дисковая активность и т. д. Записанные данные сохраняются в файле .etl (Event Trace Log).
- Windows Performance Analyzer (WPA) — инструмент, предназначенный для анализа файлов .etl, созданных с помощью WPR. WPA позволяет визуализировать и исследовать данные производительности, чтобы определить узкие места и проблемы с производительностью. Он предоставляет графический интерфейс, где можно анализировать данные, строить графики, таблицы и диаграммы.
- Windows Performance Toolkit Runtime (WPRUI) — графический интерфейс для включения WPR и WPA. С его помощью можно легко выбрать требуемые сценарии записи и запуска их на компьютере или сервере Windows.
- Xperf — командная строка, предлагающая дополнительные функции для сбора и анализа данных производительности. Xperf используется профессионалами, которым необходимо расширенное управление и настройка инструментом WPT.
С помощью этих компонентов Windows Performance Toolkit предоставляет разработчикам и IT-специалистам мощные средства для диагностики и устранения проблем с производительностью Windows. Данные, собранные с помощью WPT, позволяют выявлять и устранять узкие места, анализировать поведение приложений и системы в целом, а также оптимизировать работу операционной системы для достижения лучших результатов.
Анализ результатов с помощью Windows Performance Toolkit
После того, как вы успешно запустили инструмент Windows Performance Toolkit и выполнили необходимую запись профилирования, настало время проанализировать полученные результаты. Windows Performance Toolkit предоставляет несколько инструментов для анализа данных производительности, которые помогут вам идентифицировать потенциальные проблемы и оптимизировать работу вашей системы.
Вот несколько основных инструментов Windows Performance Toolkit, которые стоит использовать для анализа результатов:
- Windows Performance Analyzer (WPA): это основной инструмент для анализа данных производительности. WPA позволяет просматривать и анализировать сырые данные, полученные во время записи профилирования. Он предоставляет графическую оболочку для просмотра и анализа графов, трассировок и других данных производительности.
- Xperf: это командная строковая утилита, включенная в Windows Performance Toolkit. Xperf предоставляет более низкоуровневый доступ к данным производительности и позволяет выполнять более продвинутый анализ с использованием командной строки.
- Windows Performance Toolkit (WPT) Viewer: это простой инструмент для просмотра результатов анализа, созданных с помощью Windows Performance Analyzer. Визуализация данных производительности может помочь вам лучше понять проблемы и идентифицировать узкие места в системе.
При анализе результатов с помощью Windows Performance Toolkit рекомендуется обратить внимание на следующие аспекты:
- Время выполнения: Изучите данные по времени выполнения различных операций и процессов. Проверьте, есть ли узкие места, которые могут замедлять работу вашей системы.
- Использование ресурсов: Анализируйте использование процессора, памяти, дискового пространства и других системных ресурсов. Если какой-либо ресурс находится под большой нагрузкой, это может быть признаком проблемы или неэффективного использования ресурсов.
- Отклик системы: Изучите данные об отклике системы на различные действия. Большие задержки или низкая отзывчивость могут указывать на проблемы, которые необходимо решить.
Анализ результатов Windows Performance Toolkit может потребовать некоторого времени и экспертизы, особенно для новичков. Однако, помните, что результаты анализа могут помочь вам оптимизировать производительность вашей системы и улучшить ее общую работу.
Одна из сильных сторон Windows 7 по сравшению с Windows XP — это отсутствие «тупняка» на старте и завершении работы по прошествии года использования. И как показывает практика время старта Windows Seven можно уменьшить еще более, оптимизировав процесс загрузки операционной системы.
Речь в статье пойдет не о ковырянии в реестре и шаманских заклинаниях, что чаще приносит результат в конкретных случаях и при массовом использовании малоэффективно, либо вообще вредно, а о официальном программном обеспечении.
Корпорация Microsoft осталась верной себе. Как и для Windows XP была выпущена специальная утилита оптимизирующая процесс загрузки. Но она также не попала в состав самой операционной системы.
Напомню, что процесс оптимизации заключается в более «правильном» расположении на диске загружаемых операционной системой файлов. По сути является дефрагментацией. Но сама программа оптимизации делает несколько больше, чем просто дефрагментация диска.
Набор утилит по оптимизации процесса загрузки Windows 7 называется «Windows Performance Toolkit». Но продукт не распространяется отдельно, а входит в состав Windows SDK. Скачать свежую версию которого можной с официального сайта http://www.microsoft.com/en-us/download/details.aspx?id=8279
И хотя Windows Performance Toolkit не распространяется отдельно, у меня все же есть прямые ссылки на скачивание с официального сайта:
Performance Tools Kit 4.1.1 (x86)
Performance Tools Kit 4.1.1 (Itanium)
Performance Tools Kit 4.1.1 (x64)
Установка Windows SDK
Скачиваем с официального сайта Microsoft http://www.microsoft.com/en-us/download/details.aspx?id=8279 Microsoft Windows SDK for Windows 7 and .NET Framework 4 и запускаем winsdk_web.exe
После формальных «I Agree» и пару нажатий «Next». Выбираем только Windows Performance Toolkit из предлагаемого к установке списка продуктов.
Опять жмем «Next» и ждем окончания загрузки и установки коспонентов.
Установка xPerf из дистрибутива
Если Вы скачали Windows Performance Toolkit по прямым ссылкам, то установка утилиты ничем не отличается от обычной установки программного обеспечения.
Как всегда со всем соглашаемся и жмем «Next».
Анализ процесса загрузки Windows 7
Заходим в каталог куда установили утилиту. У меня она находится здесь: «c:Program FilesMicrosoft Windows Performance Toolkit».
И запускаем команду
xbootmgr -trace boot (Будьте внимательны, компьютер автоматически перезагрузится!)
После перезагрузки в каталоге, в котором эта команда была выполнена останется файл «boot_BASE+CSWITCH_1.etl»
При желании проанализировать процесс текущей загрузки можно выполнить команду
xperf boot_BASE+CSWITCH_1.etl
Оптимизация процесса загрузки Windows Seven
Но если Вы не сильны в анализе и доверяете автоматике, то выполните следующую команду:
xbootmgr -trace boot -prepSystem
По умолчанию выполняется шесть перезагрузок.
По окончании этой процедуры, а в зависимости от производительности компьютера она может длиться 30..60 минут, в каталоге откуда была запущена команда появятся 6 трайсов после каждого этапа. И Вы можете оценить скорость загрузки после каждой перезагрузки и оптимизации.
Результаты оптимизации времени загрузки Windows 7
С помощью утилиты Windows Performance Toolkit мне удалось уменьшить время загрузки моего ноутбука на 45 сек с 2-х минут до 1 минуты 15 секунд.
Модернизация приложений
Windows Performance Toolkit: базовые сведения
Основы использования утилиты XPerf
Получение информации о системе
XPerf и визуализация стека
В предыдущих частях данной статьи мы познакомились с техникой, позволяющей избежать утечек памяти, предотвратить зависание приложений, обсудили использование механизмов Application Restart and Recovery и Windows Error Reporting, а также узнали о возможностях утилиты Application Verifier.
В этой и последующих частях мы рассмотрим, как проводить анализ производительности системы и приложений с помощью средств, включенных в состав Windows Performance Toolkit. Эти средства позволяют получить детальную информацию об использовании ресурсов системы — процессора, диска, памяти, сети и т.п., которую можно применять для выявления проблем с повышенной утилизацией ресурсов, их «утечками», задержками в реакции системы, сервисов, процессов и приложений на системные запросы и проблемы, влияющие на эффективное использование подсистемы питания.
Windows Performance Toolkit доступен на клиентских и серверных операционных системах — Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2 — и поддерживается для платформ x86, x64 и ia64. Набор утилит Windows Performance Toolkit распространяется в составе Windows SDK — после установки SDK из каталога BIN необходимо установить версию Windows Performance Toolkit, подходящую для вашей платформы, — wpt_x86.msi, wpt_x64.msi или wpt_ia64.msi соответственно.
Дополнительную информацию по Windows Performance Toolkit можно получить на сайте, посвященном производительности, — он располагается адресу: http://msdn.microsoft.com/en-us/performance/default.aspx.
Windows Performance Toolkit: базовые сведения
В основе Windows Performance Toolkit лежат две утилиты: XPerf, которая служит для активации сбора информации, и XPerfView, используемая для визуального анализа информации о производительности. Взаимодействие XPerf и XPerfView с системными компонентами — в первую очередь с подсистемой Event Tracing for Windows (ETW) — показано на рис. 1.
Рис. 1. Взаимодействие утилит XPerf и XPerfView с системными компонентами
В общем случае работа с утилитами XPerf и XPerfView происходит следующим образом:
- с помощью утилиты XPerf включаем протоколирование событий на уровне ETW;
- выполняем интересующие нас операции, процессы и т.п.;
- с помощью утилиты XPerf завершаем сессию протоколирования;
- выполняем обработку информации — добавление к ETL-файлу, создаваемому подсистемой ETW, системной информации и символов;
- просматриваем и анализируем результат с помощью утилиты XPerfView (рис. 1).
Основы использования утилиты XPerf
Базовые операции по сбору информации используют подсистему протоколирования событий на уровне ядра операционной системы. Для того чтобы узнать, какие провайдеры (поставщики информации) доступны для данной версии операционной системы, можно выполнить следующую команду (здесь и далее применяется интерфейс командной строки с повышенными привилегиями: при вызове CMD. EXE необходимо нажать правую кнопку мыши и выполнить команду Run as Administrator):
C:>xperf –providers
Сокращенный результат выполнения данной команды показан на рис. 2.
Рис. 2. Получение списка провайдеров
Как видно из рис. 2, операционная система предоставляет большое число (порядка тысячи) провайдеров информации для различных подсистем, использование которых позволяет собирать и анализировать различные аспекты работы как самой системы, так и процессов и приложений, выполняемых под ее управлением.
Для получения списка провайдеров информации только на уровне ядра (Kernel Mode Providers) можно выполнить следующую команду:
C:>xperf –providers K
Результат выполнения данной команды показан на рис. 3.
Рис. 3. Получение списка Kernel Mode Providers
Флаги (Kernel Flags) отвечают за сбор информации об отдельных группах операций — например создание и удаление процессов, операции вводавывода и т.п. Группы (Kernel Groups) включают комбинации флагов и используются для анализа работы определенных подсистем. Для нашего первого эксперимента с утилитой XPerf мы выберем группу DiagEasy, которая содержит следующие флаги:
PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER
Описание этих флагов показано в таблице.
Выполним следующую команду для протоколирования событий на уровне ETW:
C:>xperf –on DiagEasy
Эта команда начинает сбор данных в файл с именем “kernel.etl”, который по умолчанию располагается в корне диска С:. Можно изменить имя файла с помощью опции -f <filename> — это необходимо, например, при анализе операций вводавывода, чтобы создание и заполнение файла трассировки не вносило дополнительных помех (в таком случае нужно указать другой диск для хранения создаваемого файла). Подсистема протоколирования использует буфер с размером по умолчанию 64 Кбайт — минимально применяется 64 буфера, максимальное число одновременно используемых буферов — 320.
Запустим, например, Internet Explorer и откроем в нем какойнибудь сайт. После этого завершим протоколирование с помощью команды:
C:>xperf –d trace.etl
Выполнение данной команды займет некоторое время (порядка 1-2 мин), так как системе требуется объединить данные, собранные ETW, с метаданными и другой информацией и сформировать соответствующий файл — в нашем примере это trace.etl. Теперь выполним команду:
C:>xperf trace.etl
В результате откроется окно Windows Performance Analyzer — утилиты для визуального анализа результатов, собранных с помощью утилиты XPerf. Аналогичный результат можно получить, выполнив команду:
C:>xperfview trace.etl
Утилита Windows Performance Analyzer графически отображает собранную информацию в виде ряда экранов: CPU Usage by Process, Disk I/O, Disk Utilization, Process Lifetimes, DPC CPU Usage, Interrupt CPU Usage, Hard Faults, Generic Events и других, включением или отключением которых можно управлять из меню (рис. 4).
Рис. 4. Графический анализ информации
Выбор типов графиков осуществляется с помощью всплывающего меню Frame List, которое вызывается при нажатии кнопки в левой части экрана.
Если мы хотим получить информацию только по интересующему нас процессу, то на графике CPU Usage by Process необходимо выбрать кнопку Processes (в правой части графика) и процесс — в нашем примере это IEXPLORE.EXE.
Так мы получим график загрузки центрального процессора только интересующим нас приложением. Мы можем выбирать временные интервалы, увеличивать отдельные области графика, накладывать на него дополнительную информацию и т.п. (рис. 5).
Рис. 5. График загрузки центрального процессора
Отметим, что для каждого графика доступна таблица с суммарной информацией (щелкнуть правой кнопкой мыши на графике и выбрать команду Summary Table), содержащая числовую информацию, на основе которой был построен тот или иной график.
Давайте обсудим, что мы узнали из приведенного выше примера:
- сбор данных о событиях уровня ядра можно включать и отключать в любое время. Нет необходимости в перезагрузке системы, повторном подключении к ней, перезапуске процессов и т.п. — события уровня ядра, а также любые ETW-события могут использоваться динамически, по мере необходимости;
- в отличие от утилит, которые динамически отображают состояние системы, XPerf служит для сбора информации о событиях, произошедших на определенном отрезке времени, и ее последующего анализа;
- возможность сбора данных для их последующего анализа позволяет собирать данные на одном компьютере, а анализировать их — на другом, например в тестовой лаборатории или для сбора данных на Windows XP и их анализа на Windows Vista или Windows 7; это необходимо, так как обработка результатов не поддерживается в Windows XP;
XPerf позволяет собирать данные об активности на уровне как всей системы, так и отдельных процессов.
Получение информации о системе
Как мы уже отметили, часто информация, собранная на одном компьютере, анализируется на другом. Для получения информации о конфигурации системы нужно использовать следующую команду:
C:> xperf –i trace.etl –a sysconfig
Вывод будет произведен в консоль. Если необходимо сохранить данные в файле, выполняется операция перенаправления вывода:
C:> xperf –i trace.etl –a sysconfig >c:analysissysconfig.txt
Пример фрагмента отображаемой информации показан на рис. 6.
Рис. 6. Получение информации о конфигурации системы
Используя Windows Performance Analyzer, информацию о конфигурации системы можно получить с помощью команды Trace → System Configuration (рис. 7).
Рис. 7. Информация о конфигурации системы
XPerf и визуализация стека
Одна из возможностей, чрезвычайно полезных при анализе работы приложений и их отладке, — это так называемая визуализация стека. Отметим, что эта функциональность не требует никаких изменений в коде. Всё, что необходимо, — это отладочные символы для анализируемых бинарных компонентов. Визуализация стека, декодирование символов и возможность сбора данных на любой системе без перезапуска процессов или самой операционной системы делают Windows Performance Analyzer удобным средством для диагностики широкого класса проблем, связанных с производительностью.
Для того чтобы воспользоваться функцией визуализации стека, необходимо загрузить отладочные символы для операционной системы (PDB-файлы), на которой проводится сбор информации о приложениях, процессах и т.п. Их можно либо загрузить с сайта по адресу: http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx и самостоятельно установить на локальном компьютере (по умолчанию символы устанавливаются в каталог c:windowssymbols), либо использовать онлайновую загрузку со специального сервера компании Microsoft. И в том, и в другом случае необходимо указать местоположение отладочных символов с помощью переменной среды _NT_SYMBOL_PATH. Вот пример команды, устанавливающей значение этой переменной (команда должна быть введена одной строкой):
C:>set _NT_SYMBOL_PATH=
srv*C:symbols*http://msdl.microsoft.com/downloads/symbols
Адрес сайта, указанный в приведенной выше команде, — это «сервер символов» компании Microsoft. Адрес локальной папки, помещенный между символами «*», указывает на локальное хранилище символов, куда будут помещены загруженные с сервера символы.
При анализе собственных приложений также необходимо указать местоположение PDB-файлов для конкретного приложения. Адрес локальной/удаленной папки добавляется к приведенной выше команде set через разделитель «;»:
C:>set _NT_SYMBOL_PATH=
srv*C:symbols*http://msdl.microsoft.com/downloads/symbols;
c:ProductsVersions1.0
После того как мы научились загружать символы и указывать их местоположение, давайте посмотрим на визуализацию стека в действии. Для этого выполним следующую команду (команда должна быть введена одной строкой):
C:>xperf –on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE
–stackwalk profile
Затем запустим интересующее нас приложение, выполним в нем необходимые операции и завершим сессию сбора информации командой:
C:>xperf –d test.etl
После этого, как и в предыдущем примере, запустим Windows Performance Analyzer для визуального анализа собранной информации:
C:>xperf test.etl
Визуализация стека включается на графике CPU Sampling by Process. Первая операция — это выполнение команды Load Symbols (в случае загрузки символьной информации с сервера выполнение этой команды может занять некоторое время), затем — команды Summary Table. В отдельном окне будут показаны результаты вызова функций — в данной версии XPerf поддерживается до 16 уровней вложенности.
Обратите внимание на возможность просмотра внутренних и внешних вызовов для каждой функции: после выбора интересующей функции необходимо нажать правую кнопку мыши и выбрать команду Callers или Callees и соответственно команду Innermost или Outermost. Данные для каждой команды будут отображены в отдельном окне, что удобно при анализе цепочек вызова внутри или вне определенной группы функций — как ядра операционной системы, так и анализируемого приложения.
Колонка %Weight указывает вызовы функций, на которые приходилось больше всего времени из всего времени работы данного процесса или приложения. Это более информативно, чем статическое профилирование с указанием времени работы каждой функции, так как в данном случае мы видим еще и цепочку вызовов функций (рис. 8).
Рис. 8. Визуализация стека
Еще одна интересная возможность — это анализ не всего стека вызовов, а только той его части, которая, например, занимала больше всего ресурсов. Для этого на графике CPU Sampling by Process необходимо выбрать интересующий нас временной период и перестроить для него таблицу вызовов с помощью команды Summary Table. Также отметим, что для сравнения можно выбрать несколько интервалов и анализировать их в одновременно открытых окнах.
Использование символьной информации для визуализации стека вызовов является мощным средством анализа работы процессов и приложения. Вот несколько рекомендаций по успешному применению этой возможности:
для загрузки символов необходимо использовать либо команду Load Symbols в Windows Performance Analyzer, либо параметр -symbols при вызове утилиты XPerf;
для получения информации о параметре -symbols применяйте команду:
C:>xperf –help symbols
убедитесь в том, что правильно установлено значение переменной среды:_NT_SYMBOL_PATH;
файл трассировки должен быть либо создан с помощью опции -d, либо объединен с другими файлами трассировки на том же компьютере с помощью опции -merge;
важно, чтобы символы для компонентов операционной системы и приложения относились именно к установленной на компьютере версии. Для проверки используйте утилиту symchk.exe из набора утилит Debugging Tools for Windows:
C:> symchk /v <локальный файл > /s <символы.pdb>
для проверки соответствия двоичных файлов установленным на компьютере символам применяйте утилиту fc:
C:> fc /b <локальный файл> <файл символов>
всегда указывайте, как минимум, флаги PROC_THREAD+LOADER — они позволяют собрать базовую информацию о жизненном цикле процесса и виртуальных адресах загрузки образов в память. Это нужно для того, чтобы убедиться в том, что события, связанные с процессами: Create, Delete, Start Rundown, End Rundown и образами Load, Unload, Start Rundown, End Rundown, присутствуют в таблице, получаемой с помощью следующей команды:
C:> xperf -i имя_файла.etl -a tracestats -detail
Результат выполнения данной команды показан на рис. 9.
Рис. 9. События, связанные с процессами
КомпьютерПресс 05’2012
Модернизация приложений
Windows Performance Toolkit: базовые сведения
Основы использования утилиты XPerf
Получение информации о системе
XPerf и визуализация стека
В предыдущих частях данной статьи мы познакомились с техникой, позволяющей избежать утечек памяти, предотвратить зависание приложений, обсудили использование механизмов Application Restart and Recovery и Windows Error Reporting, а также узнали о возможностях утилиты Application Verifier.
В этой и последующих частях мы рассмотрим, как проводить анализ производительности системы и приложений с помощью средств, включенных в состав Windows Performance Toolkit. Эти средства позволяют получить детальную информацию об использовании ресурсов системы — процессора, диска, памяти, сети и т.п., которую можно применять для выявления проблем с повышенной утилизацией ресурсов, их «утечками», задержками в реакции системы, сервисов, процессов и приложений на системные запросы и проблемы, влияющие на эффективное использование подсистемы питания.
Windows Performance Toolkit доступен на клиентских и серверных операционных системах — Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2 — и поддерживается для платформ x86, x64 и ia64. Набор утилит Windows Performance Toolkit распространяется в составе Windows SDK — после установки SDK из каталога BIN необходимо установить версию Windows Performance Toolkit, подходящую для вашей платформы, — wpt_x86.msi, wpt_x64.msi или wpt_ia64.msi соответственно.
Дополнительную информацию по Windows Performance Toolkit можно получить на сайте, посвященном производительности, — он располагается адресу: http://msdn.microsoft.com/en-us/performance/default.aspx.
Windows Performance Toolkit: базовые сведения
В основе Windows Performance Toolkit лежат две утилиты: XPerf, которая служит для активации сбора информации, и XPerfView, используемая для визуального анализа информации о производительности. Взаимодействие XPerf и XPerfView с системными компонентами — в первую очередь с подсистемой Event Tracing for Windows (ETW) — показано на рис. 1.
Рис. 1. Взаимодействие утилит XPerf и XPerfView с системными компонентами
В общем случае работа с утилитами XPerf и XPerfView происходит следующим образом:
- с помощью утилиты XPerf включаем протоколирование событий на уровне ETW;
- выполняем интересующие нас операции, процессы и т.п.;
- с помощью утилиты XPerf завершаем сессию протоколирования;
- выполняем обработку информации — добавление к ETL-файлу, создаваемому подсистемой ETW, системной информации и символов;
- просматриваем и анализируем результат с помощью утилиты XPerfView (рис. 1).
Основы использования утилиты XPerf
Базовые операции по сбору информации используют подсистему протоколирования событий на уровне ядра операционной системы. Для того чтобы узнать, какие провайдеры (поставщики информации) доступны для данной версии операционной системы, можно выполнить следующую команду (здесь и далее применяется интерфейс командной строки с повышенными привилегиями: при вызове CMD. EXE необходимо нажать правую кнопку мыши и выполнить команду Run as Administrator):
C:\>xperf –providers
Сокращенный результат выполнения данной команды показан на рис. 2.
Рис. 2. Получение списка провайдеров
Как видно из рис. 2, операционная система предоставляет большое число (порядка тысячи) провайдеров информации для различных подсистем, использование которых позволяет собирать и анализировать различные аспекты работы как самой системы, так и процессов и приложений, выполняемых под ее управлением.
Для получения списка провайдеров информации только на уровне ядра (Kernel Mode Providers) можно выполнить следующую команду:
C:\>xperf –providers K
Результат выполнения данной команды показан на рис. 3.
Рис. 3. Получение списка Kernel Mode Providers
Флаги (Kernel Flags) отвечают за сбор информации об отдельных группах операций — например создание и удаление процессов, операции вводавывода и т.п. Группы (Kernel Groups) включают комбинации флагов и используются для анализа работы определенных подсистем. Для нашего первого эксперимента с утилитой XPerf мы выберем группу DiagEasy, которая содержит следующие флаги:
PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER
Описание этих флагов показано в таблице.
Выполним следующую команду для протоколирования событий на уровне ETW:
C:\>xperf –on DiagEasy
Эта команда начинает сбор данных в файл с именем “\kernel.etl”, который по умолчанию располагается в корне диска С:\. Можно изменить имя файла с помощью опции -f <filename> — это необходимо, например, при анализе операций вводавывода, чтобы создание и заполнение файла трассировки не вносило дополнительных помех (в таком случае нужно указать другой диск для хранения создаваемого файла). Подсистема протоколирования использует буфер с размером по умолчанию 64 Кбайт — минимально применяется 64 буфера, максимальное число одновременно используемых буферов — 320.
Запустим, например, Internet Explorer и откроем в нем какойнибудь сайт. После этого завершим протоколирование с помощью команды:
C:\>xperf –d trace.etl
Выполнение данной команды займет некоторое время (порядка 1-2 мин), так как системе требуется объединить данные, собранные ETW, с метаданными и другой информацией и сформировать соответствующий файл — в нашем примере это trace.etl. Теперь выполним команду:
C:\>xperf trace.etl
В результате откроется окно Windows Performance Analyzer — утилиты для визуального анализа результатов, собранных с помощью утилиты XPerf. Аналогичный результат можно получить, выполнив команду:
C:\>xperfview trace.etl
Утилита Windows Performance Analyzer графически отображает собранную информацию в виде ряда экранов: CPU Usage by Process, Disk I/O, Disk Utilization, Process Lifetimes, DPC CPU Usage, Interrupt CPU Usage, Hard Faults, Generic Events и других, включением или отключением которых можно управлять из меню (рис. 4).
Рис. 4. Графический анализ информации
Выбор типов графиков осуществляется с помощью всплывающего меню Frame List, которое вызывается при нажатии кнопки в левой части экрана.
Если мы хотим получить информацию только по интересующему нас процессу, то на графике CPU Usage by Process необходимо выбрать кнопку Processes (в правой части графика) и процесс — в нашем примере это IEXPLORE.EXE.
Так мы получим график загрузки центрального процессора только интересующим нас приложением. Мы можем выбирать временные интервалы, увеличивать отдельные области графика, накладывать на него дополнительную информацию и т.п. (рис. 5).
Рис. 5. График загрузки центрального процессора
Отметим, что для каждого графика доступна таблица с суммарной информацией (щелкнуть правой кнопкой мыши на графике и выбрать команду Summary Table), содержащая числовую информацию, на основе которой был построен тот или иной график.
Давайте обсудим, что мы узнали из приведенного выше примера:
- сбор данных о событиях уровня ядра можно включать и отключать в любое время. Нет необходимости в перезагрузке системы, повторном подключении к ней, перезапуске процессов и т.п. — события уровня ядра, а также любые ETW-события могут использоваться динамически, по мере необходимости;
- в отличие от утилит, которые динамически отображают состояние системы, XPerf служит для сбора информации о событиях, произошедших на определенном отрезке времени, и ее последующего анализа;
- возможность сбора данных для их последующего анализа позволяет собирать данные на одном компьютере, а анализировать их — на другом, например в тестовой лаборатории или для сбора данных на Windows XP и их анализа на Windows Vista или Windows 7; это необходимо, так как обработка результатов не поддерживается в Windows XP;
XPerf позволяет собирать данные об активности на уровне как всей системы, так и отдельных процессов.
Получение информации о системе
Как мы уже отметили, часто информация, собранная на одном компьютере, анализируется на другом. Для получения информации о конфигурации системы нужно использовать следующую команду:
C:\> xperf –i trace.etl –a sysconfig
Вывод будет произведен в консоль. Если необходимо сохранить данные в файле, выполняется операция перенаправления вывода:
C:\> xperf –i trace.etl –a sysconfig >c:\analysis\sysconfig.txt
Пример фрагмента отображаемой информации показан на рис. 6.
Рис. 6. Получение информации о конфигурации системы
Используя Windows Performance Analyzer, информацию о конфигурации системы можно получить с помощью команды Trace → System Configuration (рис. 7).
Рис. 7. Информация о конфигурации системы
XPerf и визуализация стека
Одна из возможностей, чрезвычайно полезных при анализе работы приложений и их отладке, — это так называемая визуализация стека. Отметим, что эта функциональность не требует никаких изменений в коде. Всё, что необходимо, — это отладочные символы для анализируемых бинарных компонентов. Визуализация стека, декодирование символов и возможность сбора данных на любой системе без перезапуска процессов или самой операционной системы делают Windows Performance Analyzer удобным средством для диагностики широкого класса проблем, связанных с производительностью.
Для того чтобы воспользоваться функцией визуализации стека, необходимо загрузить отладочные символы для операционной системы (PDB-файлы), на которой проводится сбор информации о приложениях, процессах и т.п. Их можно либо загрузить с сайта по адресу: http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx и самостоятельно установить на локальном компьютере (по умолчанию символы устанавливаются в каталог c:\windows\symbols), либо использовать онлайновую загрузку со специального сервера компании Microsoft. И в том, и в другом случае необходимо указать местоположение отладочных символов с помощью переменной среды _NT_SYMBOL_PATH. Вот пример команды, устанавливающей значение этой переменной (команда должна быть введена одной строкой):
C:\>set _NT_SYMBOL_PATH=
srv*C:\symbols*http://msdl.microsoft.com/downloads/symbols
Адрес сайта, указанный в приведенной выше команде, — это «сервер символов» компании Microsoft. Адрес локальной папки, помещенный между символами «*», указывает на локальное хранилище символов, куда будут помещены загруженные с сервера символы.
При анализе собственных приложений также необходимо указать местоположение PDB-файлов для конкретного приложения. Адрес локальной/удаленной папки добавляется к приведенной выше команде set через разделитель «;»:
C:\>set _NT_SYMBOL_PATH=
srv*C:\symbols*http://msdl.microsoft.com/downloads/symbols;
c:\Products\Versions\1.0\
После того как мы научились загружать символы и указывать их местоположение, давайте посмотрим на визуализацию стека в действии. Для этого выполним следующую команду (команда должна быть введена одной строкой):
C:\>xperf –on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE
–stackwalk profile
Затем запустим интересующее нас приложение, выполним в нем необходимые операции и завершим сессию сбора информации командой:
C:\>xperf –d test.etl
После этого, как и в предыдущем примере, запустим Windows Performance Analyzer для визуального анализа собранной информации:
C:\>xperf test.etl
Визуализация стека включается на графике CPU Sampling by Process. Первая операция — это выполнение команды Load Symbols (в случае загрузки символьной информации с сервера выполнение этой команды может занять некоторое время), затем — команды Summary Table. В отдельном окне будут показаны результаты вызова функций — в данной версии XPerf поддерживается до 16 уровней вложенности.
Обратите внимание на возможность просмотра внутренних и внешних вызовов для каждой функции: после выбора интересующей функции необходимо нажать правую кнопку мыши и выбрать команду Callers или Callees и соответственно команду Innermost или Outermost. Данные для каждой команды будут отображены в отдельном окне, что удобно при анализе цепочек вызова внутри или вне определенной группы функций — как ядра операционной системы, так и анализируемого приложения.
Колонка %Weight указывает вызовы функций, на которые приходилось больше всего времени из всего времени работы данного процесса или приложения. Это более информативно, чем статическое профилирование с указанием времени работы каждой функции, так как в данном случае мы видим еще и цепочку вызовов функций (рис. 8).
Рис. 8. Визуализация стека
Еще одна интересная возможность — это анализ не всего стека вызовов, а только той его части, которая, например, занимала больше всего ресурсов. Для этого на графике CPU Sampling by Process необходимо выбрать интересующий нас временной период и перестроить для него таблицу вызовов с помощью команды Summary Table. Также отметим, что для сравнения можно выбрать несколько интервалов и анализировать их в одновременно открытых окнах.
Использование символьной информации для визуализации стека вызовов является мощным средством анализа работы процессов и приложения. Вот несколько рекомендаций по успешному применению этой возможности:
для загрузки символов необходимо использовать либо команду Load Symbols в Windows Performance Analyzer, либо параметр -symbols при вызове утилиты XPerf;
для получения информации о параметре -symbols применяйте команду:
C:\>xperf –help symbols
убедитесь в том, что правильно установлено значение переменной среды:_NT_SYMBOL_PATH;
файл трассировки должен быть либо создан с помощью опции -d, либо объединен с другими файлами трассировки на том же компьютере с помощью опции -merge;
важно, чтобы символы для компонентов операционной системы и приложения относились именно к установленной на компьютере версии. Для проверки используйте утилиту symchk.exe из набора утилит Debugging Tools for Windows:
C:\> symchk /v <локальный файл > /s <символы.pdb>
для проверки соответствия двоичных файлов установленным на компьютере символам применяйте утилиту fc:
C:\> fc /b <локальный файл> <файл символов>
всегда указывайте, как минимум, флаги PROC_THREAD+LOADER — они позволяют собрать базовую информацию о жизненном цикле процесса и виртуальных адресах загрузки образов в память. Это нужно для того, чтобы убедиться в том, что события, связанные с процессами: Create, Delete, Start Rundown, End Rundown и образами Load, Unload, Start Rundown, End Rundown, присутствуют в таблице, получаемой с помощью следующей команды:
C:\> xperf -i имя_файла.etl -a tracestats -detail
Результат выполнения данной команды показан на рис. 9.
Рис. 9. События, связанные с процессами
КомпьютерПресс 05’2012