Windows 7: подход к производительности системы
🕛 31.08.2008, 12:35
Многих из наших читателей, оставляющих комментарии к статьям в блоге, интересует вопрос производительности Windows. Тема достаточно сложная и широкая, но все сходятся во мнении, что производительность следует постоянно наращивать. Среди тех многих тем, которые мы планируем обсуждать в блоге, производительность, несмотря на кажущуюся абсолютную и измеримую форму, имеет много подводных камней.Для достижения производительности, отвечающей ожиданиям большинства пользователей, иногда приходится идти на уступки. Но даже если ожидания пользователей будут оправданы, пользователи никогда не откажутся выжать из своих компьютеров дополнительную мощь, и это неудивительно. В любом случае мы посвятим этому аспекту в Windows 7 (и IE 8) немало времени и труда. Это одна из главных задач, которые мы поставили нашим командам разработки. Сегодня мы лишь заложим основу для будущего разговора о производительности. Также хотелось бы обратить ваше внимание на статью в блоге команды IE, посвященный производительности только что выпущенного IE8 Beta 2.
Производительность складывается из нескольких элементов. Это и время отклика системы, обусловленная объемом оперативной памяти и типом процессора. Это время, необходимое для запуска приложений. Производительность включает в себя и время загрузки/выключения/пробуждения компьютера. Когда говорят о производительности, невольно приходят мысли о активности CPU, интенсивности дисковых операций или об их отсутствии. Это и время работы от аккумулятора. Кто-то вспомнит и об объеме дискового пространства, занимаемого ОС. Все это - меры производительности. Все эти характеристики кропотливо отслеживаются в ходе разработки ОС. Мы определяем уровень производительности путем запуска набора специальных тестов, а разработчики в случае необходимости могут самостоятельно проводить дополнительное - более глубокое - тестирование. Ниже представлена лишь часть метрик, используемых для отслеживания производительности при разработке Windows 7:
* Использование памяти - сколько памяти требуется для выполнения конкретного сценария. Как вы знаете, в компьютерной индустрии существует классический компромисс между пространством и временем и Windows - не исключение. В случае Windows мы идем на компромисс при использовании больших объемов памяти (или дискового пространства) с целью повышения производительности и во избежание повторных вычислений. * Использование ресурсов CPU - современные микропроцессоры обладают громадной вычислительной мощью, а появление многоядерных CPU дает нам ранее неведомые возможности для параллельных вычислений. Конечно, эти ресурсы постоянно загружаются, поэтому мы непрерывно контролируем потребление ресурсов процессором. В целом наша задача состоит в том, чтобы удержать потребляемые ресурсы CPU на максимально низком уровне, по возможности задействовать параллельные вычисления, и, конечно, снизить расход электроэнергии. * Дисковые операции ввода/вывода - несмотря на то, что в последнее время производительность жестких дисков существенно возросла, мы должны минимизировать количество обращений Windows к операциям чтения/записи с диска (включая файл подкачки). В Windows 7 этому будет уделено особое внимание, поскольку ОС станет приспособленной для использования гибридных дисков, обладающих совершенно иным уровнем производительности. * Время загрузки, выключения, ожидания/пробуждения - все эти характеристики находятся в фокусе Windows 7. Мы осознаем, что никогда нельзя будет достигнуть в этой области всего, чего хочется. Здесь важную роль играет наше взаимодействие с производителями компьютеров и компьютерных устройств, поскольку мы должны быть уверены, что значения, полученные в наших лабораториях, будут соответствовать значениям этих характеристик на продаваемых компьютерах. * Базовая система - под данным термином мы понимаем использование ресурсов системы до установки стороннего ПО. Эта характеристика становится точкой отсчета для разработчиков и определяет требования системы для достижения удовлетворительного уровня производительности. Как правило, пользователи желают, чтобы мы удалили из системы некоторые компоненты, которые в дальнейшем можно использовать по запросу. Мы изучаем эту возможность, но нам очень бы хотелось избежать ситуаций, в которых большинство наших пользователей столкнуться с загрузкой чего-либо "по запросу", что может в значительной степени снизить воспринимаемый уровень производительности. * Занимаемое пространство на диске - несмотря на то, что данная характеристика не имеет прямого отношения к производительности, многие пользователи рассматривают ее как один из элементов общей производительности системы. Относительно данной метрики у нас, конечно же, есть определенные задачи, о которых мы в ближайшее время вам расскажем. Мы также уделим время вопросу \Windows\WinSxS, поскольку он неоднократно поднимался на форумах technet и msdn. Здесь следует четко понимать, что иногда приходится жертвовать местом на диске в обмен на дополнительные драйвера, документацию, дополнительные компоненты Windows, а также различного рода диагностическую и статистическую информацию.
У нас есть критерии, применяемые в конце каждого этапа разработки, но до начала бета-тестирования. Продукт не попадет к пользователям в случае, если показатели не отвечают ранее поставленным условиям. Иногда в качестве критериев выступают микро-тесты (использование процессорного времени, или количество кадров в секунду в играх), в других случаях они основаны на различных сценариях работы и отражают интервалы времени, необходимые для завершения той или иной задачи (количество времени или число щелчков мыши). Данные измерения проводятся на различных аппаратных платформах (32- и 64-разрядных; с 1, 2, 4 Гб оперативной памяти; жестких дисках со скоростью вращения 5400 или 7200 RPM, на SSD-дисках; различных процессорах и т.д.) Из-за неотъемлемых компромиссов, присущих конкретным архитектурным подходам, мы часто используем условный код, который зависит от типа аппаратных устройств на которых запускается Windows.
С одной стороны, характеристика производительности должна быть линейной - потребляй меньше, выполняй меньше, имей меньше. То есть, чем меньше возможностей, тем выше производительность. С этим сложно не согласиться. Но как видно из комментариев, что для одного пользователя хорошо, для другого может быть плохо. Многие предлагают добавить в стандартный интерфейс Windows больше эффектов и анимации ("аналогичных тем, что имеются в конкурирующих продуктах"), другие предлагают "отказаться от лишних графических возможностей и вернуться во времена Windows 2000". Windows чрезвычайно гибкая система, позволяющая настраивать себя под требования отдельно взятых пользователей. С одной стороны, мы уже неоднократно слышали просьбы выпустить специальные версии Windows, настроенные под конкретную категорию пользователей, а с другой - пользователям не нравится выбирать из огромного количества версий Windows. Тем не менее, наши возможности не безграничны, и нашей основной целью является создание платформы, которая удовлетворит нужды широких масс. Но в рамках известного контекста (дома ли, на работе ли) всегда есть возможность настроить систему под свои нужды. Наличие выбора и возможность контролировать происходящее на компьютере, приобрели для нас особое значение - в Windows 7 вы увидите это собственными глазами.
Ну а пока самым серьезным вызовом при обеспечении производительности является заблуждение пользователей, что их компьютеры всегда способны на большее, и этого можно достичь лишь путем установки дополнительного программного обеспечения. Да, Windows сама по себе добавляет новые возможности и мы работаем над тем, чтобы выбрать те функции, от использования которых выиграет большинство наших пользователей. В тоже самое время Windows 7 будет поддерживать выбор пользователей, обеспечивая контроль на тем, что происходит в системе, и станет платформой, которая в значительной степени упростит рядовым пользователям процедуру персонализации системы.
В конце концов, интересно сравнить реальные значения и теоретические оценки. При разработке Windows мы проводим лабораторные тестирования, позволяющие нам отследить влияние добавленного кода на производительность системы. Мы также тесно сотрудничаем с производителями компьютеров и помогаем в проведении тестирования их систем после сборки. Что касается реальной производительности, то у нас существует инструмент под названием Microsoft Customer Experience Improvement Program, снабжающий нас в случае согласия пользователя анонимными сведениями о производительности конкретной конфигурации. Мы обязательно вернемся к этой теме чуть позже, когда сможем оценить, как на самом деле обстоят дела с производительностью. Ну а пока воздержимся от различного рода предположений и менее надежных форм информации.
В следующих статьях мы обсудим производительность системы при загрузке, а принимая во внимание тот факт, что данная тема действительно волнует многих наших пользователей, то и в будущем уделим ей немало внимания.