Windows Performance Tools - Блог команди розробників Internet Explorer
У Microsoft Windows Vista та Windows 7 є ефективна інфраструктура під назвоютрасування подійWindows(Event Tracing for Windows), що збирає системні дані та відомості про продуктивність. Трасування подій Windows або, скорочено, ETW, дозволяє операційній системі Windows та програм ефективно створювати події. Існують сотні подій, які можуть бути записані під час їх виконання та згодом проаналізовані спеціальними інструментами.
Windows Performance Tools, або WPT, дозволяють записувати, візуалізувати та аналізувати трасування ETW в операційній системі. WPT входить до складу Windows 7 SDK і може бути завантажений звідси . Ви можете скоротити інсталяцію, залишивши тільки «Windows Performance Toolkit»:

Перший профіль
Відразу після завершення інсталяції інструментів WPT ви можете розпочати аналіз продуктивності браузера.
Давайте почнемо з вимірювання швидкодії Internet Explorer під час переходу на веб-сайтhttp://www.bing.com
1. Запустіть Internet Explorer та зайдіть на http://www.microsoft.com.
2. Запустіть командний рядок із підвищеними привілеями
3. З командного рядка виконайте команду:
xperf -start mytrace -on PerfTrack
4. У IE перейдіть на веб-сайтhttp://www.bing.comі зачекайте п'ять секунд після того, як сторінка завантажиться і браузер перейде у стан спокою.
5. Зупиніть трасування, виконавши команду:
xperf -stop mytrace -d mytrace.etl
6. Тепер запустіть Windows Performance Analyzer, що входить до складу набору інструментів WPT, виконавши:
Остання команда запускає WindowsPerformance Analyzer і відкриває файл mytracve.etl, що містить події ETW, записані під час трасування.

Windows Performance Analyzer відображає записані події. У нашому прикладі ви записали події з різних постачальників. Розкриття списку «ProviderIds» відобразить усі 4 постачальники:
- PerfTrackMetadata
- WinSATAssessment
- Microsoft-PerfTrack-IEFRAME
- Microsoft-PerfTrack-MSHTML

Ми розповімо докладніше про постачальників нижче.
Зверніть увагу на наведену нижче шкалу часу, що показує час у секундах. Тепер ми перейдемо до групи подій. Зробити це можливо двома способами: а) Ctrl + прокручування коліщатка миші або б) клацання + перетягування, щоб виділити часовий діапазон, потім правий клацанням миші по виділенню та вибір "Масштабувати виділений фрагмент" (Zoom To Selection).

Далі необхідно навести покажчик на подію, щоб побачити підказку з відомостями про подію. Наприклад, наведення покажчика на першу жовту точку відображає таку підказку:

РядокEventNameвказує, що ця подія – «Navigation – Start» (Початок переходу), яка є початком переходу на веб-сайт bing.com.
Третя жовта точка – подія «Navigation – Stop» (Закінчення переходу), що вказує на те, що перехід на www.bing.com завершено.
Щоб отримати уявлення про витрачений час, виміряємо час переходу після перенаправлення.
Утримуючи кнопку миші, перемістіть курсор від другої жовтої точки до третьої. У момент переміщення підказка вказує час між двома точками:

ПРИМІТКА: Час між подіями початку та кінця непризначений для порівняння з іншими браузерами. Різні браузери можуть вказувати та називати події на свій розсуд. Порівняння проміжків часу, що минули, має сенс тільки для одного браузера. Спроби порівняти їх у різних браузерів (або навіть різних версій одного браузера) не мають сенсу. Наприклад, події ETW, зафіксовані в іншому браузері, можуть мати ті ж назви "Navigation Start" і "Navigation End", але означати зовсім інші аспекти занадто загального терміну "Navigation".
Тим не менш, витрачений час цікаво порівняти з результатами інших трасування в тих же умовах і з тим самим браузером. Наприклад, цікаво порівняти час переходу на bing.com та на інший веб-сайт. Оскільки всі сторінки сильно відрізняються одна від одної, час також буде відрізнятися. Пізніше ми розглянемо докладніше, на що саме йде час.
Постачальники
Раніше ми згадали постачальників (Providers), які є джерелом подій, які були захоплені за допомогою Windows Performance Tool Kit. У попередньому прикладі ми вказали xperf захоплювати події від постачальника PerfTrack, вказавши PerfTrack в команді
xperf -start mytrace -on PerfTrack
Ми можемо використовувати Windows Performance Tool Kit для захоплення та аналізу кожного аспекту операційної системи Windows. Кожен компонент Windows фіксує безліч подій ETW, тому загальна кількість подій у Windows обчислюється тисячами. Крім цього, кожен додаток може зробити ще більше подій, що легко веде до інформаційного навантаження.
Залежно від конкретного сценарію, ми вибираємо події з низки постачальників. Це дозволяє сконцентрувати нашу увагу на значних подіях.
Перелік постачальників виводиться виконанням наступної команди:
Повний перелік містить безліч постачальників, включаючи Kernel Flags (Параметри ядра) та Kernel Groups (Групи ядра), розташовані наприкінці списку. Наступні постачальники найцікавіші під час роботи з Internet Explorer:
- Microsoft-IE
- Microsoft-IEFRAME
- Microsoft-PerfTrack-IEFRAME
- Microsoft-PerfTrack-MSHTML
А також Kernel Group:
Ми можемо одночасно використовувати кілька постачальників користувальницького режиму. Наприклад:
xperf -start mytrace -on Microsoft-IE+Microsoft-IEFRAME+Microsoft-PerfTrack-IEFRAME+Microsoft-PerfTrack-MSHTML
Щоб дізнатися, як одночасно використовувати постачальників користувальницького режиму та режиму ядра, зверніться доПриклад 2, розташованого в середині сторінки.
Скрипти трасування
При аналізі швидкодії будь-якого компонента доводиться запускати трасування швидкодії багаторазово. Щоб полегшити цей процес і спростити захоплення тих самих трасувань, ми використовуємо простий скрипт. Для прикладів, наведених у цій статті, ми використовувалиtrace.cmd:
if not @%1@ == @@set session=%1
xperf -start %session% -on PerfTrack
if not errorlevel 0 goto :eof
echo Performance Trace started.
echo When done with profile actions,
xperf -stop %session% -d %session%.etl
if not errorlevel 0 goto :eof
start xperfview %session%.etl
Основний механізм роботи скрипту:
- Запустіть скрипт із командного рядка з підвищеними привілеями
- Відтворіть сценарій, який потрібно захопити, поки скрипт перебуває в режимі очікування наших дій
- Натисніть будь-яку клавішу в командному рядку, щоб скрипт завершив захоплення та відобразив результат
Нижче наведено дещо складніший скриптtracek.cmd, який також захоплює події режиму ядра:
if not @%1@ == @@set session=%1
xperf -on Latency -f %session%kernel.etl -start %session% -on Microsoft-IE+Microsoft-IEFRAME+Microsoft-PerfTrack-IEFRAME+Microsoft-PerfTrack-MSHTML -f %session%user.etl
if not errorlevel 0 goto :eof
echo Performance Trace started.
echo When done with profile actions,
xperf -stop %session%
if not errorlevel 0 goto :eof
if not errorlevel 0 goto :eof
xperf -merge %session%user.etl %session%kernel.etl %session%combined.etl
if not errorlevel 0 goto :eof
start xperfview %session%combined.etl
Коли ми виконуємо трасування за допомогою другого, «складнішого» сценарію, Windows Performance Analyzer під час захоплення відображає детальніше всю систему, включаючи використання ЦП, використання ЦП за процесами, Disk I/O та використання диска, час життя процесів, збої в роботі , і навіть загальні події (Generic Events), які ми розглянули вище. Кожен з цих елементів може виявитися настільки ж важливим, як використання ЦП визначення швидкодії.

Ми можемо вибрати, які з графіків відображати, клацнувши по чорній фігурі біля лівого краю, що відкриває список «Frame List»:

Також ми можемо накласти один на одного кілька графіків, щоб отримати суміщений вигляд. Для цього зробіть праве клацання миші за графіком та виберіть інший графік у розділі «Overlay Graph» (Накласти графік).
Зведена таблиця
Тепер ми розглянемо зовсім інший режим Windows Performance Analyzer, вид "Summary Table" (Зведена таблиця). Кожен графік має режим зведеної таблиці, заснований наданих графіка. Наведемо як приклад режим зведеної таблиці графіка подій «Generic Events». Для цього необхідно зробити праве клацання миші за графіком і вибрати «Summary Table»:


Прохід стеку
Проходи стека для дослідження профілів швидкодії відкривають нові можливості, оскільки дозволяють зробити аналіз з урахуванням «ваги», розуміючи під цим приблизну кількість спожитих ресурсів ЦП. Оскільки дані профілю базуються на вибірці, відомості про використання ЦП завжди будуть статистичною апроксимацією.
Щоб дозволити проходи стека, необхідно включити їх для потрібних подій. У цьому випадку ми зацікавлені у події, що є частиною групи Latency. Щоб отримати додаткові відомості про включення проходів стека у події, зверніться до розділув розділі Xperf.
Цілий світ для дослідження
У команді розробників IE ми щодня використовуємо Windows Performance Toolkit разом із внутрішніми інструментами для вимірювання та відстеження продуктивності Internet Explorer. Завантажуйте цей набір інструментів і починайте стежити за продуктивністю браузера за допомогою Windows Performance Toolkit на власних системах.
Волтер Вонкох (Walter vonKoch),
Керівник групи розробників з продуктивності IE