Значительная часть данного блога посвящена описанию того, что происходит «за кулисами» инженерной разработки Windows 8. В этой статье рассматриваются вопросы, которым мы уделяем самое пристальное внимание и как инженеры, и как пользователи — веб-производительности в реальных условиях. Нам пришлось проделать огромную работу, чтобы перейти от туманных планов и обсуждений к реальным и результативным действиям по обеспечению высокопроизводительного просмотра веб-страниц. Данная статья написана Мэтом Коценасом (Matt Kotsenas), Жатиндером Манном (Jatinder Mann) и Ясоном Вебером (Jason Weber) из рабочей группы Internet Explorer, хотя обеспечение производительности в той или иной степени является задачей любого из членов группы. -- Стивен

Веб-производительность имеет значение для всех пользователей, поэтому одна из целей инженерных работ заключается в том, чтобы сделать Internet Explorer самым быстрым в мире браузером. Для достижения этой цели нам необходимо надежно измерять производительность браузера в рамках реальных сценариев, представляющих интерес для наших клиентов. За последние пять лет мы спроектировали и построили лабораторию Internet Explorer Performance Lab — одну из сложнейших в мире систем для измерения веб-производительности.

Internet Explorer Performance Lab собирает достоверные, точные и значимые данные для принятия решений в рамках всего цикла разработки. Ежедневно мы 200 раз измеряем производительность Internet Explorer, производим 5,7 миллиона измерений и собираем 480 ГБ данных, полученных во время выполнения. Мы понимаем, какое влияние оказывает каждое изменение на данный продукт и стремимся сделать Internet Explorer еще быстрее. В этой записи блога подробно рассматриваются особенности разработки Internet Explorer Performance Lab, а также как мы используем эту систему в целях постоянного повышения скорости работы с веб-страницами.

Содержание статьи

  • Обзор системы Internet Explorer Performance Lab
  • Инфраструктура лаборатории
  • Что (и как) мы измеряем
  • Тестирование сценария
  • Анализ результатов
  • Тестирование программного обеспечения сторонних поставщиков
  • Создание быстрого браузера для пользователей

Обзор системы Internet Explorer Performance Lab

Чтобы обеспечить надежное измерение веб-производительности во времени, система должна воспроизводимым образом моделировать реальные сценарии работы пользователей. Фактически наша система должна создавать «мини-версию Интернета».

Internet Explorer Performance Lab представляет собой частную сеть, полностью изолированную от общего доступа через Интернет и интрасети корпорации Майкрософт и включающую в себя более 140 компьютеров. В лаборатории представлены основные компоненты реального Интернета, включая веб-серверы, DNS-серверы, маршрутизаторы, эмуляторы сети, с помощью которых моделируются различные сценарии подключения клиентов.

На первый взгляд это может показаться сложным, однако такой подход позволяет исключить все источники отклонений, оказывающих влияние на изучаемые процессы. Благодаря управлению всеми компонентами сети (вплоть до отдельных прыжков пакетов и задержек) наши тесты становятся детерминированными и повторяемыми, что имеет критически важное значение для придания значимости результатам. В системе Internet Explorer Performance Lab измерение активности осуществляется с разрешением в 100 наносекунд.

На схеме показаны серверы содержимого, которые подключены к эмуляторам сети, DNS-серверам, тестовым клиентам, хранилищу необработанных данных, компоненту анализа данных и базе данных SQL.

Такой тип сетевой конфигурации также отличается очень высокой гибкостью. Поскольку мы моделируем реальные условия настройки, наша лаборатория позволяет реализовать настройку практически для любого типа тестового компьютера или контента веб-сайта. Ineternet Explorer Performance Lab поддерживает настольные системы, ноутбуки и планшетные ПК с процессорами x86, x64 и ARM, работающие одновременно. Аналогичным образом, поскольку в лаборатории используется набор средств оценки производительности Windows (Windows Performance Tools — WPT), мы можем проводить те же тесты с использованием других веб-браузеров, панелей инструментов, антивирусных продуктов или других программ сторонних поставщиков и непосредственно сравнивать полученные результаты.

Набор WPT позволяет детально изучить особенности функционирования базового оборудования. С помощью набора WPT может выполняться захват любых данных — от сведений высокого уровня об активности центрального и графического процессоров и вплоть до информации низкого уровня, касающейся, например, эффективности работы кэша, сетевой статистики, закономерностей использования памяти и т. п. Набор WPT позволяет измерять и оптимизировать производительность в пределах всего стека, чтобы убедиться в том, что оборудование, драйверы устройств, операционная система Windows и браузер Internet Explorer оптимизированы для эффективной совместной работы.

Выполнение одного тестового запуска занимает 6 часов и выдает более 22 ГБ данных. Эта в значительной степени автоматизированная система обслуживается небольшой группой сотрудников, которые отслеживают работу, анализируют результаты и разрабатывают новые компоненты инфраструктуры.

Инфраструктура лаборатории

Инфраструктуру лаборатории производительности можно разделить на три основные категории: сеть и сервер, тестовые клиенты и серверы анализа и отчетов. Каждая из этих категорий спроектирована таким образом, чтобы минимизировать взаимодействие между компонентами, что позволяет улучшить масштабируемость тестирования и снизить вероятность возникновения помех в лабораторной среде.

Большое помещение, наполненное компьютерами

На фотографии приведена система Internet Explorer Performance Lab, включая несколько компьютеров для тестирования и анализа в нашей частной сети.

Инфраструктура сети и серверов

Давайте начнем с рассмотрения DNS-серверов, эмуляторов сети и серверов содержимого; все эти компоненты совместно и создают мини-версию Интернета. В следующих трех разделах мы проведем анализ, двигаясь справа налево по нашей схеме архитектуры.

Серверы содержимого

Серверы содержимого — это веб-серверы, представляющие миллионы веб-узлов в Интернете. На каждом сервере содержимого размещаются реальные веб-страницы, которые были сохранены локально. Захваченные страницы проходят через процедуру, которую мы называем «санитарной обработкой», во время которой мы настраиваем отдельные части веб-контента, чтобы обеспечить воспроизводимую предопределенность. Например, функции Date JavaScript или вызовы Math.Random() заменяются статическим значением. Кроме того, динамические URL-адреса, созданные рекламными платформами, блокируются на том URL-адресе, который изначально использовался платформой.

После санитарной обработки содержимое обслуживается аналогично статическому содержимому через фильтр ISAPI, который сопоставляет хэш URL-адреса с содержимым, что позволяет обеспечить практически мгновенный поиск. Каждый веб-сервер представляет собой 16-ядерный компьютер с 16 ГБ ОЗУ, что позволяет до минимума снизить изменчивость и обеспечить размещение содержимого в памяти (исключается необходимость доступа к диску).

На серверах содержимого также размещаются динамические веб-приложения, такие как Outlook Web Access или Office Web Apps. В этих случаях сервер приложений и любые многоуровневые зависимости размещаются в лаборатории на выделенных серверах — как и в реальных средах.

Эмуляторы сети

Поскольку многие источники изменчивости были устранены, скорость работы сети больше не отражает ситуацию, в которой множество пользователей имеет низкоскоростное подключение. Чтобы смоделировать реальные среды клиентов, в тесте может применяться эмуляция сети, позволяющая определить производительность для широкого спектра современных сетей. Лаборатория поддерживает эмуляцию нескольких конфигураций DSL, кабельных модемов, модемов со скоростью 56 Кбит/с, а также сред с высокой пропускной способностью и высокой задержкой, таких как среды глобальной сети и 4G. По мере передачи HTTP-запросов в эмулятор он моделирует характеристики сети, такие как задержка и изменение порядка пакетов, а затем переправляет запрос на веб-узлы. После получения ответа эмуляция повторяется, а затем данные передаются обратно на тестовый клиент.

Использование выделенного оборудования для эмуляции сети позволяет получить наиболее реалистичную тестовую среду и значительно сокращает «эффект наблюдателя». Хотя выделенное оборудование вызывает увеличение стоимости и уровня сложности по сравнению с решениями на базе прокси-серверов или программными решениями, его использование является единственным способом точного измерения производительности. Браузеры ограничивают число одновременных прокси-подключений, чтобы предотвратить возможность насыщения, поэтому использование прокси-серверов для эмуляции сети имеет непредусмотренный эффект, состоящий в исключении необходимости сегментирования домена и выполнения других оптимизаций, реализуемых веб-страницей. Кроме того, функция эмуляции локальной сети будет конкурировать с браузером за использование локальных ресурсов, особенно на компьютерах с пониженным энергопотреблением.

DNS-серверы

Как и реальные DNS-серверы, лабораторные DNS-серверы связывают серверы содержимого с тестовыми клиентами. В лаборатории также используется отдельный DNS-сервер для каждого эмулятора сети. Это означает, что переход с одной скорости сети на другую осуществляется так же просто, как изменение DNS-сервера. В этих случаях вместо разрешения имен доменов на веб-узлы DNS-сервер разрешает все имена доменов на сопоставленный эмулятор сети.

Конфигурации тестовых клиентов

Мы хотим убедиться, что Internet Explorer обеспечивает согласованное быстродействие на всех классах компьютерного оборудования. Лаборатория содержит более 120 компьютеров, используемых для измерения производительности Internet Explorer. Мы называем эти компьютеры тестовыми клиентами. Они охватывают широкий диапазон систем — от мощных настольных компьютеров на базе платформы x64 до нетбуков с пониженным энергопотреблением и сенсорных планшетных устройств (и все, что лежит между ними). Поскольку повторяемость измерений является важнейшим требованием, все тестовые клиенты являются физическими компьютерами.

Длинная стойка и две полки, на каждой из которых находится 12 или более компьютеров

Группа компьютеров Internet Explorer Performance Lab для сравнения изменений

Различные классы компьютеров включают в себя как дискретные, так и интегрированные графические платформы, чтобы обеспечить использование браузером Internet Explorer полного спектра преимуществ аппаратного ускорения в рамках всей экосистемы устройств. Выше представлена наша главная группа компьютеров. Эти компьютеры представляют усредненный опыт пользователей за время существования компьютеров с ОС Windows 7 или Windows 8. Компьютеры заказывались у одного поставщика вычислительной техники, чем обеспечивается их идентичность. Эти компьютеры принадлежат одной производственной партии, а их характеристики производительности проходят предварительную проверку.

Поскольку лаборатория работает круглосуточно 7 дней в неделю, неизбежно возникают сбои оборудования. Замена неисправных компонентов соответствующими запчастями из другой производственной партии почти всегда приводит к тому, что отремонтированный компьютер работает быстрее остальных компьютеров в группе. Такое различие осталось бы незамеченным в реальных условиях, однако при выполнении измерений с разрешением до 100 наносекунд изменение даже в нескольких циклах может повлиять на результаты! Если после ремонта компьютер работает не так, как остальные компьютеры в группе, он удаляется из лаборатории, и размер группы постоянно уменьшается. В качестве меры реагирования на указанное обстоятельство лабораторией приобретаются дополнительные «буферные» компьютеры, чтобы при удалении неисправной системы из группы излишние мощности создавали демпферную зону, нейтрализующую отрицательное воздействие на работу лаборатории.

Имя группы

Число машин

Форм-фактор

Процессор

Арх.

Тактовая частота

ОЗУ

Графика

Главная группа

32

Настольный ПК

Core i5 750 (Lynnfield)

64-разрядная

2,66 ГГц

4096 МБ DDR3

NVIDIA GeForce 310

Чтобы добавить разнообразия в аппаратную часть, мы создали дополнительные группы компьютеров, на которых реализуется ряд различных клиентских сценариев. Высокая производительность на этих компьютерах обеспечивает, что Internet Explorer эффективно использует базовое оборудование в рамках всей экосистемы компьютеров.

Имя группы

Число машин

Форм-фактор

Процессор

Арх.

Тактовая частота

ОЗУ

Графика

Высокий класс 1

20

Настольный ПК

Core i7 870

64-разрядная

2,93 ГГц

4096 МБ DDR3

ATI Radeon HD 4550

Высокий класс 2

4

Настольный ПК

Xeon 5150 (Woodcrest)

64-разрядная

2,66 ГГц

8192 МБ DDR2

ATI Radeon X1950 Pro

Средний класс 1

6

Настольный ПК

Core 2 Duo (Wolfdale)

64-разрядная

3,0 ГГц

4096 МБ DDR2

Intel GMA 4500

Средний класс 2

15

Настольный ПК

Core 2 Duo E6750

64-разрядная

2,66 ГГц

4096 МБ DDR2

ATI Radeon HD 2400 XT

Средний класс 3

25

Настольный ПК

Core i5 2500

64-разрядная

3,30 ГГц

4096 МБ DDR3

Intel HD Graphics 2000

Средний класс 4

6

Настольный ПК

Core 2 Duo (Conroe)

64-разрядная

2,66 ГГц

4096 МБ DDR2

ATI Radeon HD 2400XT

Средний класс 5

4

Настольный ПК

Core 2 Duo (Conroe)

64-разрядная

2,4 ГГц

4096 МБ DDR2

ATI Radeon X1950 Pro

Низкое потребление энергии 1

2

Ноутбук

Atom Z530

32-разрядная

1,6 ГГц

2038 МБ DDR2

Intel GMA 500

Низкое потребление энергии 2

4

Нетбук

Atom N270

32-разрядная

1,6 ГГц

1024 МБ DDR2

NVIDIA ION

Низкое потребление энергии 3

2

Нетбук

Atom N450

64-разрядная

1,66 ГГц

1024 МБ DDR2

Intel GMA 3150

Низкое потребление энергии 4

4

Нетбук

Atom N270

32-разрядная

1,6 ГГц

1024 МБ DDR2

Intel GMA950

Низкое потребление энергии 5

4

Планшет

ARM

32-разрядная

Прототипы устройств

Набор ноутбуков и настольных систем на двух полках

Тестовые компьютеры с пониженным энергопотреблением. Все они находятся на разных стадиях тестирования.

Если требуется еще большее разнообразие, Internet Explorer Performance Lab может также использовать возможности системы Windows Graphics Lab. Система Windows Graphics Lab включает в себя практически все произведенные наборы графических микросхем. Компьютеры можно объединять в любые мыслимые конфигурации и затем использовать для тестирования производительности. Система Windows Graphics Lab бесценна при диагностировании проблем с графикой для разных наборов микросхем и версий драйверов.

Серверы анализа и отчетов

Сбор и анализ результатов тестирования делится на два отдельных этапа. Благодаря разгрузке анализа на выделенные компьютеры тестовые клиенты могут раньше начать следующий запуск тестирования производительности, и наиболее производительные компьютеры класса сервера могут использоваться для ускоренного выполнения анализа. Чем скорее анализ завершается, тем эффективнее мы можем выявлять изменения производительности.

Для анализа мы используем 11 компьютеров класса сервера, каждый из которых имеет 16 ядер и 16 ГБ ОЗУ. Во время анализа изучается каждый файл трассировки, извлекаются и вставляются тысячи метрик на сервер SQL Server. В течение 24 часов эти компьютеры анализа изучают более 15 000 трассировок, которые будут использоваться для анализа тенденций.

Две серверные стойки

На фотографии изображены две (из нескольких) серверные стойки с файловыми серверами, сервером SQL и несколькими серверами анализа данных и серверами содержимого.

Сервер SQL Server используется для хранения около 6 миллионов измерений, которые мы собираем ежедневно на компьютере с 24 логическими ядрами и 64 ГБ ОЗУ. Отчеты могут создаваться непосредственно из SQL; результаты могут также проверяться с помощью приложения для сравнения на базе HTML или с помощью службы WCF, которая предоставляет результаты в форматах XML или JSON.

Что (и как) мы измеряем

После знакомства с инфраструктурой давайте рассмотрим различные типы сценариев измерений в Performance Lab и средства, используемые для получения метрик.

Сценарии для ежедневного измерения

Система Performance Lab ориентирована на реальные сценарии, которые важны для пользователей. Поэтому каждый день мы проводим более 20 000 разных тестов. Эти тесты делятся на четыре категории, которые иногда пересекаются между собой:

4 накладывающихся друг на друга круга: Загрузка контента, интерактивные веб-приложения, «приложение» Internet Explorer, синтетические тесты производительности платформ

Загрузка контента — переход с одной страницы на другую все еще остается одной из наиболее распространенных операций в веб-браузере. Загрузка веб-контента также является единственной категорией, которая соприкасается с большинством из одиннадцати подсистем браузера. Загрузка веб-контента является предварительным условием для остальных категорий сценариев.

Интерактивные веб-приложения — эта категория включает в себя то, что иногда называют средствами созданием контента, приложениями AJAX или сайтами Web 2.0. Она включает в себя взаимодействие с популярными сайтами новостей и социальных сетей, а также взаимодействие с приложениями для работы с почтой и документами, такими как Outlook Web Access и Office Web Apps.

«Приложение» Internet Explorer — важные, хотя и часто упускаемые из виду, сценарии по взаимодействию с самим браузером. К наиболее распространенным операциям относятся открытие или закрытие браузера, переключение вкладок, использование компонентов браузера, таких как «Журнал» и «Избранное», прокрутка и изменение масштаба с помощью мыши и клавиатуры, а также сенсорный ввод.

Синтетические тесты производительности — тесты производительности, например WebKit SunSpider, которые редко упускаются из виду, но часто переоцениваются. Тесты производительности могут быть полезным инженерным средством, так как они предназначены для оказания значительного воздействия на отдельные подсистемы браузера и выявления различий между браузерами. Однако для более четкого разграничения таких отличий в тестах производительности часто применяются нетипичные закономерности использования или граничные случаи.

Реальные закономерности использования

При измерении производительности важно убедиться, что в тестах отражены реальные закономерности использования. В большинстве учебников по разработке программного обеспечения данный процесс называется моделированием рабочей нагрузки или моделированием использования приложений. Чтобы убедиться, что система Performance Lab измеряет именно реальные закономерности, в ней используются реальные веб-страницы, которые отражают реальные закономерности использования и где применяются различные подсистемы браузера.

Чтобы определить, какие сайты следует использовать для тестирования, мы регулярно выполняем обход миллионов сайтов и составляем список атрибутов сайтов и закономерностей написания кода. Мы используем 68 разных точек данных, чтобы выявить общие черты у разных сайтов — такие характеристики, как глубина и ширина итоговой модели DOM, шаблоны макетов CSS, распространенные платформы, международные компоненты и многое другое. На основе полученных результатов мы выбираем сайты, которые наилучшим образом представляют распространенные закономерности и разнообразие как можно большей области Интернета.

Инженерные метрики

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

Диаграмма, на которой сравнивается время отображения, затраченное время, время ЦП, использование ресурсов и энергопотребление

Время отображения — эта метрика измеряет время, прошедшее с момента выполнения действия пользователем до отображения результатов этого действия на экране.

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

Время ЦП — практически единственным ограничением современных веб-браузеров является скорость ЦП. Разгрузка работы на графический процессор и повышение эффективности ЦП оказывает значительное воздействие на производительность.

Использование ресурсов — для построения быстрого браузера требуется согласованная работа ресурсов всего компьютера, включая использование сети, шаблоны использования памяти, обработку в графическом процессоре, графику, память и сотни других аспектов. Поскольку пользователи запускают на компьютере несколько приложение одновременно, важно, чтобы браузеры своевременно предоставляли соответствующие ресурсы другим приложениям для совместного использования.

Энергопотребление — увеличение эффективности энергопотребления приводит к более длительному времени работы батареи в сценариях мобильного использования, сокращению расхода электроэнергии на устройстве и снижению неблагоприятного воздействия на окружающую среду.

Чрезмерное внимание только одной метрике создает слишком упрощенное представление о производительности. Концентрируясь на одной метрике, люди часть стремятся оптимизировать процессы только относительно данного показателя, чаще всего в ущерб другим не менее важным метрикам. Единственный способ борьбы с такой тенденцией заключается в измерении всех аспектов производительности и последующем сознательном, а не косвенно обоснованном принятии компромиссного варианта.

В общей сложности система Performance Lab измеряет более 850 различных метрик. Каждая из них вносит свой вклад в общую картину производительности браузера. Чтобы дать вам представление о том, что именно мы измеряем, ниже приведен (неполный) перечень основных метрик: частный рабочий набор, общий рабочий набор, счетчик HTTP-запросов, счетчик полученных байтов TCP, число загруженных двоичных файлов, число переключений контекста, использование видеопамяти диспетчера окон рабочего стола, процент использования графического процессора, число отрисовок, время ЦП для сборки мусора JavaScript, время ЦП для синтаксического анализа JavaScript, средний интервал обновления диспетчера окон рабочего стола, пиковый общий рабочий набор, число выделений из кучи, размер выделений из кучи, число необработанных выделений из кучи, время ЦП для подсистемы структуры, время ЦП для подсистемы форматирования, время ЦП для подсистемы отрисовки, время ЦП для подсистемы анализатора HTML, время простоя ЦП, число потоков.

Инфраструктура трассировки событий Windows

Метрики собираются с помощью инфраструктуры трассировки событий Windows и VMMap. Трассировка событий Windows — это система ведения журналов событий в рамках всей операционной системы Windows, используемая многими компонентами Windows и приложениями сторонних поставщиков, в том числе журналом событий Windows. API ведения журналов трассировки событий Windows находятся на самом нижнем уровне и требуют минимальных затрат ресурсов, что чрезвычайно важно для тестирования производительности.

На рисунке представлены 6 графиков, расположенных по вертикали. Эти графики называются "Использование ЦП процессом", "Универсальные события", "Сквозные загрузки WinINet", "Декомпозиция ЦП для Internet Explorer", "Настройки передачи WinInet" и "Обновление Internet Explorer".

Средство просмотра трассировки xperfview.exe, включенное в состав средств оценки производительности Windows, представляет собой мощный визуализатор, который позволяет соотносить и сравнивать показатели ядра, ЦП, графического процессора, ввода-вывода, сетевых операций и других событий. Кроме того, средства оценки производительности Windows поддерживают обход стека. Обход стека с регулярным интервалом создает моментальный снимок стека вызовов программы и сохраняет этот стек в составе данных трассировки. Соотнося события трассировки событий Windows со стеками, средства оценки производительности Windows показывают не только выполнявшуюся работу, но и сопоставленный с ней стек вызовов и количество времени, затраченное на эту работу, с разрешением в 10 микросекунд. Обход стека можно включить для любого процесса, даже если этот процесс не использует события трассировки событий Windows. Недостаток обхода стека заключается в том, что для декодирования стеков ему требуются символы отладки, а также в восприимчивости к присвоению псевдонимов.

Тестирование сценария

Последним элементом мозаики является сам процесс тестирования. Тестирование можно разделить на 3 этапа: настройка, тестирование и обработка ошибок/очистка. Ниже приведена блок-схема всего процесса.

Комплексная блок-схема, начинающаяся с «User requests run» (Пользователь запрашивает запуск) и заканчивающаяся на «Run is marked finished» (Запуск помечается как завершенный)

Настройка

Данная процедура начинается, когда пользователь запрашивает запуск через веб-сайт лаборатории или платформу автоматизации. Запуск помещается в очередь приоритетов, в которой находятся остальные ожидающие запуски. Когда тестовый клиент освобождается, он проверяет очередь и запускает самое приоритетное из доступных ему заданий. Сначала тестовый клиент устанавливает указанную тестовую операционную систему. Система Internet Explorer Performance Lab поддерживает тестирование в операционных системах Windows Vista, Windows 7 и Windows 8. Тестовый клиент выполняет установку новой копии тестовой операционной системы для каждого запуска, чтобы компьютер всегда находился в известной работоспособной конфигурации.

После установки тестовой операционной системы клиент настраивает средства оценки производительности Windows, VMMap и окружение теста. В рамках запуска также определяется набор параметров Internet Explorer, таких как домашняя страница, использование рекомендуемых сайтов, просмотр InPrivate и других. На данном этапе также устанавливается и настраивается все необходимое программное обеспечение сторонних поставщиков.

Непосредственно перед тестированием подтверждается состояние бездействия клиента, чтобы свести к минимуму постороннее воздействие на тестирование. Операционная система Windows определяет концепцию задач периода бездействия. Задачи периода бездействия предоставляют Windows и сторонним программам возможность планировать выполнение некритичных задач на более позднее время, когда отсутствует конкуренция за ресурсы компьютера. Задачи периода бездействия операционной системы включают в себя упреждающую загрузку или суперзагрузку, дефрагментацию дисков, обновление индексов поиска и т. д. — в зависимости от версии операционной системы и настроенных служб. Чтобы убедиться, что во время тестов не выполняются задачи периода бездействия, очередь этих задач записывается на диск. Кроме того, приостанавливается Защитник Windows, а расположение журналов для окружения теста помечается как исключенное из службы индексирования Windows, чтобы предотвратить запуск индексатора файлами журналов и трассировки во время тестового запуска. Тестирование осуществляется за много проходов, чтобы минимизировать число требуемых поставщиков, так как дополнительные поставщики увеличивают эффект наблюдателя. Первый проход всегда является «прогревочным». Такой «прогрев» обеспечивает подготовку двоичных файлов браузера и помещение максимального объема контента кэшируемых страниц в кэш WinINET. Каждый из последующих проходов сосредоточен на конкретном типе инструментирования, таком так обход стека, трассировка памяти, ввода-вывода и реестра.

Обработка ошибок и очистка

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

После завершения обработки всех тестовых случаев тестовый клиент отправляет журналы и трассировки для анализа. Затем тестовый клиент возвращается в состояние бездействия и начинает опрос для выполнения нового запуска.

Анализ результатов

Каждая метрика отслеживается по изменениям. Мы запускаем каждый тестовый случай не менее десяти раз и дублируем запуски по крайней мере на двух разных компьютерах, чтобы создать выборочную совокупность. Использование статистических инструментов позволяет автоматически помечать нетипичные результаты для дальнейшего изучения. Изменение дисперсии также рассматривается с помощью регрессии. Пользователи взаимодействуют с Internet Explorer при самых различных условиях и на самом разном оборудовании, поэтому одна из наших целей заключается в обеспечении стабильного и предсказуемого взаимодействия в любых условиях.

В дополнение к автоматизированному анализу группа рассмотрения проверяет ежедневные результаты, чтобы выявлять тенденции и другие интересные режимы работы. Исключить такое выполняемое вручную исследование невозможно, так как во многих статистических инструментах предполагается, что имеет место нормальное распределение и что все выборки являются независимыми. Для наших измерений не обеспечивается строгое выполнение ни одного из этих предположений. Некоторые операции в Internet Explorer управляются таймером операционной системы, поэтому результаты также зависят от времени начала загрузки страницы (а также цикла таймера). Загрузка страницы, которая начинается непосредственно перед прерыванием таймера или после него, может быть сопряжена с большим или меньшим объемом работы, так как Internet Explorer должен обработать прерывание в различных точках процесса загрузки страницы. Это прерывание может оказывать пульсирующее воздействие, которое ведет к получению бимодального распределения. Кроме того, поскольку мы используем повторяемые испытания (и не очищаем компьютер между итерациями), предыдущее испытание оказывает влияние на последующее испытание. Ниже приведен пример графика затраченного времени для Карт Bing со сравнением по изменениям.

Линейчатая диаграмма с наложенной красной линией. Указатель мыши наведен на одну из точек диаграммы, и рядом с ним отображается подсказка с указанием максимального, среднего и минимального значений и других сведений.

Красными соединенными отрезками обозначено среднее значение каждого тестового запуска, а серыми линиями показан диапазон. При наведении указателя на тестовый запуск отображаются итерации для данной метрики (выделены голубым цветом), а также подсказка с точными значениями минимального, среднего и максимального показателей и абсолютной и относительной разностью по сравнению с предыдущим тестовым запуском. Подсказка, изображенная на этом рисунке, также содержит дополнительный контекст, например сведения о тестируемом построении, и быструю ссылку на исходную систему управления для просмотра изменений в построении.

Такое сочетание автоматизированного анализа и проверки, выполняемой вручную, предоставляет рабочей группе Internet Explorer надежные и значимые данные для регулировки производительности.

Тестирование программного обеспечения сторонних поставщиков

Многие приложения сторонних поставщиков зависят от Trident, сетевого стека и других компонентов Internet Explorer. Такие расширения, как вспомогательные объекты браузера и панели инструментов, загружаются в контексте Internet Explorer. Другие приложения, например программы по обеспечению безопасности, могут вставлять себя в набор компонентов Internet Explorer. Эти приложения становятся частью стека Internet Explorer и могут вызывать снижение производительности. Система Performance Lab позволяет измерять степень влияния программного обеспечения сторонних поставщиков на просмотр реального содержимого в контролируемой среде. Такие исследования важны для Internet Explorer и всей экосистемы, так как в общем случае пользователи не могут количественно оценить влияние популярного программного обеспечения на работу браузера и просмотр веб-страниц.

При тестировании влияния программного обеспечения сторонних поставщиков мы сравниваем запуск, выполненный в условия, когда это программное обеспечение установлено, с чистым запуском, при котором установлен только браузер Internet Explorer. В частности, нас интересует измерение двух метрик: время запуска и время навигации. Время запуска определяет время, которое затрачивается на запуск браузера и переход по URL-адресу, а время навигации определяет время, которое затрачивается на переход по URL-адресу уже после того, как браузер был запущен. Запуск также включает в себя время, затрачиваемое на загрузку расширений Internet Explorer приложениями сторонних поставщиков.

Использование содержимого, помещенного в кэш, обеспечивает повторяемость наших измерений. Кроме того, посредством измерения кэшированного сайта мы может точно определить, что снижение производительности вызвано программным обеспечением сторонних поставщиков, а не различиями на сайте. Каждый раз при измерении степени влияния программного обеспечения сторонних поставщиков мы также проверяем полученные результаты, выполняя тестирование запуска и навигации с использованием прямого подключения к Интернету, чтобы убедиться, что расхождения не вызваны тестовой средой.

Многие приложения сторонних поставщиков во время навигации по страницам разгружают работу в облачные службы. Хотя параллельное выполнение задач и использование облачных служб являются прекрасными способами повышения производительности, некоторые приложения, работая в синхронном режиме, ожидают получение результатов из сети и блокируют процесс навигации. Существует много реальных сценариев, таких как строгие правила брандмауэра, подключения к глобальной сети и сценарии автономной работы, в которых такие методики могут стать причиной заметного пользователям снижения производительности. Программное обеспечение сторонних поставщиков никогда не должно выполнять синхронную обработку при отклике на операцию Internet Explorer или действие пользователя. Оно также должно обрабатывать обновления пользовательского интерфейса и модели DOM в пакетном режиме, чтобы свести негативное влияние к минимуму.

Создание быстрого браузера для пользователей

Реальная производительность браузера имеет значение для всех пользователей. Крупномасштабное измерение производительности требует значительных инвестиций и больших затрат времени, однако получаемые при этом результаты, несомненно, этого стоят. Данные, собранные системой Internet Explorer Performance Lab, помогают нам понять факторы, влияющие на производительность браузера и работу базового оборудования компьютера. Они также помогают обеспечить для пользователей быстрое, надежное и динамичное взаимодействие с Интернетом.

— Мэт Коценас, Жатиндер Манн и Ясон Вебер для рабочей группы Internet Explorer Performance