Производительность при загрузке
Это первая публикация старшего сотрудника команды разработки Windows 7. Позвольте мне представить Майкла Фортина (Michael Fortin), являющегося одним из самых заслуженных инженеров Microsoft и ведущим инженером команды Fundamentals, входящей в состав группы Core Operating System. Майкл отвечает за производительность и надежность платформы Windows.
Для Windows 7 мы организовали команду, чья работа целиком и полностью посвящена производительности ОС при загрузке, однако, задачи этой команды выходят далеко за пределы Windows. Кроме того, многие из наших партнеров тесно сотрудничают с нами, поэтому всех их тоже можно считать логическим продолжением нашей команды.
Под загрузкой мы понимаем одно из трех понятий: загрузка ОС, пробуждение из режима сна (sleep) или выход из режима глубокого сна (гибернации, hibernate). Несмотря на то, что время выхода из режима сна, как правило, стандартно и обычно равняется от 2 до 5 секунд в зависимости от времени запуска устройств и приложений, в данной публикации мы поговорим о загрузке как о фундаментальном понятии, о котором частенько упоминают пользователи. Что касается Windows 7, то одной из основных задач разработки стоит существенное увеличение количества компьютеров с минимальным временем загрузки. В нашей лаборатории хорошей считается система, загрузка которой занимает менее 15 секунд.
Для того чтобы компьютер загружался быстрее, требуется чтобы эффективно и с высокой степенью параллелизма выполнялись следующие действия:
- Запись файлов в память
- Инициализация служб
- Опознание и запуск устройств
- Аутентификация пользователя при загрузке
- Создание и отображение рабочего стола
- Запуск автоматически загружаемых приложений
Ввиду того, что существуют различные конфигурации компьютеров, время загрузки также может существенно отличаться. Это подтверждается результатами, полученными нашими различными лабораториями, но это можно видеть и из результатов исследований, выполняемых независимыми журналистами, как, например, Эд Ботт (Ed Bott). Результаты исследований Ботта показывают, что лишь у 35% компьютеров время загрузки составляет менее 30 секунд. Несмотря на то, что в исследовании Ботта задействовано не так много компьютеров, его результаты совпадают с нашими. Статистика по Windows Vista SP1, приведенная ниже, также показывает, что более 35% систем загружаются за 30 и менее секунд, а на загрузку 75% систем требуется 50 и менее секунд. Это реальная статистика, собранная среди миллионов пользователей Vista SP1, принимающих участие в программе Customer Experience Improvement Program.
C нашей точки зрения уж слишком малое количество систем, загружается быстро, поэтому наша задача – увеличить их число. Безусловно, что в системах со временем загрузки более 60 секунд требуются радикальные изменения, при этом неважно, кто виноват в низкой производительности – устройства, сеть или установленные приложения. Как видите, есть системы, время загрузки которых непомерно велико. Столь заметная разница в производительности является результатом огромного выбора конфигураций и различий в качестве компонентов. Для работы ОС крайне важны задачи обслуживания, но они порой приводят к увеличению времени загрузки. Если пользователь решает установить большое по объему обновление, то реальное обновление системы может произойти при следующей загрузке, что может негативно сказаться на времени загрузки. Собранная нами статистика подтверждает этот факт, когда на запуск ОС после серьезного обновления, к сожалению, уходят минуты. Независимо от причины, мы, как элементы компьютерной экосистемы, обязаны исправить проблему с длительной загрузкой компьютеров.
И в исследовании Ботта и в нашей статистике время загрузки отражает факт готовности системы к работе. Сюда входит и авторизация, и загрузка рабочего стола. Это не идеальная метрика, но она охватывает достаточно много аспектов. В компьютерах под управлением Windows 7 и Vista данная метрика собирается автоматически и хранится в логе системных событий.
Мы осознаем тот факт, что пользователи под временем загрузки понимают и прекращение обращений к жесткому диску, и полную готовность меню Start и всех приложений к работе. Следует понимать, что значительное влияние на время загрузки оказывают пост-загрузка (когда запускаются приложения из группы автозапуска и службы с отложенной загрузкой), а также время загрузки BIOS с последующей инициализацией загрузки Windows. И предпринимаемые нами усилия учитывают мнение наших пользователей.
Перед тем, как перейти к обсуждению наших целей при разработке Windows 7, хотелось бы отметить, что мы работаем в этом направлении с нашими партнерами. При изучении различных систем мы обнаружили уйму областей, где возможно внести изменения для увеличения производительности. Нижеприведенные данные получены на реальном компьютере. Компьютеры, попадающие в наши руки прямо с полок магазинов, загружаются в течение приблизительно 45 секунд. Выполнение чистой установки Vista SP1 позволяет сократить время загрузки того же самого компьютера до 23 секунд. Очевидно, что при чистой установке существенно ниже количество запущенных процессов, да и версии драйверов могут отличаться. Тем не менее, нам удалось оптимизировать полученную с полки магазина систему, сократив время загрузки до 21 секунды, что на 2 секунды меньше, чем при чистой установке. Этого удалось добиться за счет изменений в конфигурации драйверов и BIOS.
В дополнение к сокращению времени загрузки ОС нам удалось сократить время выхода из режима сна до 2 секунд, сделав его практически незаметным для глаз. Именно поэтому мы рекомендуем нашим пользователям в качестве альтернативы обычной загрузке использовать режим сна.
В Windows 7 мы ведем работу над системными устройствами. Мы намерены в значительной степени сократить их число, равно как и их нужны в ресурсах CPU, потребности в обращениях к дискам и памяти. Наша идея очень проста: если без службы можно обойтись, то ее незачем запускать, но должен существовать некий пусковой механизм (триггер), который должен включать службу в тех редких случаях, когда она действительно нужна.
Конечно же, любая из служб призвана в какой-то степени дополнить возможности пользователя, даже самые невостребованные. Представьте ситуацию, когда к компьютеру подключается новая клавиатура, мышь или иное устройство ввода в тот момент, когда компьютер выключен. Если подключенное устройство не определилось, а драйвера не были установлены, пользователь попросту не сможет авторизоваться в системе и, как следствие, не сможет приступить к работе. Для какого-то пользователя подобная ситуация может не произойти ни разу за всю жизнь. Но для популяции, представленной сотнями миллионов пользователей, такая ситуация может происходить настолько часто, что в систему следует добавить механизмы, позволяющие избавить их от таких ситуаций. В Windows 7 мы намерены поддержать этот и другие сценарии с гораздо меньшим количеством автоматически загружаемых служб и добавлением более сложных механизмов — триггеров состояний.
Как сказано выше, инициализация устройств и драйверов может оказать существенное влияние на время загрузки. В Windows 7 мы делаем ставку на параллельную инициализацию драйверов. Это позволит избежать ситуации, когда более медленные устройства/драйвера могут негативно отразиться на общей производительности системы.
В смысле чтения с диска в Windows 7 внесены изменения в логику и механизмы “предварительной выборки” (от англ. prefetching), которая была введена в Windows XP. Поскольку нынешние диски отличаются по производительности, логика планирования подверглась некоторым изменениям, делающим технологию более эффективной. Ради интереса мы включили механизм выборки на гибридных дисках с целью оценить, а нужна ли она им. Анализ и реальные показатели производительности, полученные с различных систем, позволяет нам определить пределы, в которых мы сможем эффективно использовать технологию предварительной выборки.
В Windows 7 будут улучшены инструменты диагностики. Наша задача – быстро идентифицировать проблемы конкретных систем и обеспечить поддержку в их устранении. Мы искренне верим, что это является подходящим способом информирования пользователей о существующих в системе проблемах, как, например, чрезмерное количество автоматически загружаемых приложений или присутствие различного рода скриптов, предполагающих аутентификацию в домене. Многие пользователи знают о том, что большое количество автоматически запускаемых приложений может увеличить время загрузки системы. Некоторые пользователи, однако, сталкивались с проблемными загрузками при использовании сценариев входа в систему. В Windows XP, Vista и в Windows 7 система загружает рабочий стол, не дожидаясь продолжительных сетевых инициализаций. В корпоративной среде, однако, существует возможность изменить это поведение. К сожалению, при настройке клиентских компьютеров на запуск сценариев администраторы доменов, как правило, блокируют эту возможность. В результате на загрузку и авторизацию могут уходить минуты в случае, если в сети существуют проблемы с аутентификацией на сервере. Кроме того, эти сценарии запускают корпоративные приложения, которые активно потребляют ресурсы процессора, памяти и дисковое пространство.
В дополнение к той работе, которую мы ведем над различными функциями и службами Windows 7, мы делимся своими инструментами оценки, методиками и полученными результатами с партнерами. Собственно, инструменты доступны и энтузиастам. Инструменты, используемые нами для тестирования и корректировки проблем с загрузкой, доступны к свободной загрузке с сайта MSDN как часть Windows Performance Toolkit. Несмотря на то, что данные инструменты не подойдут для нужд большинства пользователей, для некоторых они могут оказаться весьма полезными.
Еще одна тема, которую мы хотели бы обсудить в будущем и которой посвящено немало комментариев, — это роль, которую играет дополнительное ПО в общей системной производительности Windows. Наличие множества приложений для Windows на деле означает, что, к сожалению, далеко не все программные продукты обладают высоким качеством, хотя, безусловно, основная масса продуктов выпускается с высоким качеством кода. Microsoft продолжит снабжать разработчиков инструментарием для создания высокопроизводительного программного обеспечения, а конечных пользователей – инструментами для обнаружения приложений, негативно сказывающихся на общей производительности системы. Windows сама по себе тоже должна совершенствоваться в плане тактики информирования пользователей о программном обеспечении, использование которого может привести к снижению производительности системы.
Еще одной темой для разговора является возможность внесения пользователями изменений в конфигурацию системы. Многие из предложенных изменений по сути бесполезны. Практика показывает, что большинство предлагаемых “твиков реестра” являются фикцией. Вот один из моих любимых примеров. Если провести поиск по фразе “Enable Superfetch on XP”, поисковая система выдаст массу результатов. Могу вас заверить, что в Windows XP нет функции Superfetch, поэтому в ключах реестра, о которых упоминается на тех сайтах, попросту нет никаких значений. Наряду с подобными мифами в сети можно встретить множество рекомендаций, касающихся планирования процессорного времени, управления памятью и иными изменениями в конфигурации системы, которые на самом деле не могут увеличить производительность.
Время загрузки – это всего лишь один из многих аспектов производительности. И как было сказано в предыдущей статье, в будущем мы хотим продолжить этот разговор. Поэтому и спрашиваем, о каких других элементах производительности вы хотели бы узнать больше?
Майкл Фортин (Michael Fortin)
Comments
Anonymous
September 01, 2008
Планируются ли в Windows 7 какие-либо новые предназначенные для рядовых пользователей инструменты для оптимизации пост-загрузки? Можно задать вопрос шире: предполагается ли в Windows 7 каким-либо образом поддерживать производительность компьютеров при их "загрязнении": установке нового софта, увеличении реестра, появлении неизвестных ошибок в логах, увеличении различных папок temp?Anonymous
September 04, 2008
st8ic, средство для оптимизации пост-загрузки в области увеличении ресстра, увеличении различных временных папок уже есть в Windows начиная с Windows 95 - Disk Cleanup Wizard, который как раз именно это и удаляет. По части установки нового софта, поясните, пожалуйста, каким образом система сама может определить, нужна та или иная программа пользователю или нет. По факту ее использования? А если программа просто висит в трее (как большинство приложений, которые запускаются автоматически) и пользователь просто смотрит на ее значок, который показывает информацию, которая нужна пользователю - значок погоды или что-либо еще? Боюсь, что такая программа не сможет функционировать всегда хорошо и правильно выбирать то, что нужно рядовому пользователю, а значит, пользователь в конце концов обидится на эту программу, что она удалила его любое приложение, и в результате пользователь будет недоволен. А как вы думаете, как решать такую проблему? С уважением, Данила Корнев, Program Manager, MicrosoftAnonymous
September 05, 2008
Я не спорю дело благое. Но почему то не упоминается влияние сетевых подключений на загрузку и выключение. Если сетевые подключения отсуствуют или еще хуже глючит выключение сильно замедляется поскольку виндовс пытается завершить соединения и не получает отклика. По моему в WinME была решена эта проблема путем жесткого обрубания всех сетевых подключений, что дало фантастическую скорость выключения. Вот вам идейка. Но при включении компьютер также устанавливает сетевые соединения а в случае с AD еще и производит аутентификацию в пространстве AD. Все это замедляет загрузку. Причем быстрая загрузка важна больше на домашних системах и в мелких офисах. В больших компаниях компьютер включается один раз утром, и скорость загрузки не критична. Возможно ли разделить процесс загрузки в зависимости от ситуации с сетью? Сделать несколько моделей и переместить подключение к сети уже во время загруженного рабочего стола ??? Кстати Данил у вас сменилась почта??? Я вам пишу пишу... Киньте на мыло плиз ваш новый адрес.Anonymous
September 05, 2008
Приветствую, согласен, аутентификация с AD занимает много времени, но и домашний компьютер крайне редко бывает в AD. Мелкие офисы - тут весь вопрос в том, это branch office, или основной. Если основной, то нужно грамотно строить сеть - я бы сервер с AD выделил в отдельный компьютер и сделал бы к нему дополнительный выделенный канал доступа, тогда бы скорость аутентификации была бы гораздо выше. В случае с branch office необходимо устанавливать read-only domain controllers - которые изредка синхронизируются через сеть (VPN, к примеру) с центральным AD сервером, и выполняют роль AD в локальной сети branch-офиса, что позволит повысить скорость аутентификации. Нельзя аутентифицироваться ПОСЛЕ загрузки рабочего стола, это прямое нарушение системы безопасности. А остальные программы, вроде Skype, занимают сетевое подключение постольку поскольку.Anonymous
September 05, 2008
Я это и имел в виду, большие офисы с AD не столь требовательны к скорости загрузки. А дома можно обойтись без АД. Предложение состоит в следующем, допустим в настройках добавить некую галочку, которая позволяет выполнить загрузку драйверов подключение к сети (не аутентиикацию) после загрузки рабочего стола. Как пример, довольно часто наблюдаю долгую загрузку выключение компьютеров. Выдергивается сетевой шнур и этот же компьютер начинает летать при включении выключении. По поводу графика приведенного выше. Без конфигурации компьютеров, данный график абсолютно бесполезен. 35% систем вполне могут быть на базе AMD x2 6000 C2D e8300 q6600 и выше с 4 гб памти на борту. А остальные компьютеры поскромнее. Так что этот график ниочем не говорит. Вот еслибы тесты проводились на одинаковых компьютерах, и с разными результатами, это был бы результат теста!Anonymous
September 06, 2008
>поясните, пожалуйста, каким образом система сама может определить, нужна та или иная программа пользователю или нет. По факту ее использования? А если программа просто висит в трее (как большинство приложений, которые запускаются автоматически) и пользователь просто смотрит на ее значок, который показывает информацию, которая нужна пользователю - значок погоды или что-либо еще? Можно сделать так. Сделать утилиту, в которой можно прописать программы, которые нельзя трогать. Вот и все :)Anonymous
September 07, 2008
Я думаю коллега говорил о подобии Norton Utilities или хотябы его части Windoctor в родной реализации новой ОС. Сей пакет как раз и занимается "чисткой системы".Anonymous
September 08, 2008
данил извините ччто пишу здесь, но проблема с мылом осталась - от вас письма получаю, письма вам возвращаются и mailer daemon сообщает, что не доставил письмо - посчитал спамомAnonymous
September 16, 2008
DanielKo@microsoft.com тоже работаетAnonymous
April 26, 2011
Здравствуйте! На вас последняя надежда, т.к. перерыл весь Рунет и нигде не нашел решения своей проблемы. Моя Win7/х64 (SP1) работает во всех режимах штатно, проблемы только при выходе из "глубокого" спящего режима - очень долго выходит. При этом из "неглубокого" выходит практически мгновенно - ровно столько, сколько нужно для загорания экрана монитора (секунды). Самое интересное, что полное выключение/включение суммарно длятся меньше времени, чем восстановление из "глубокого" спящего. Я бы так и делал вкл/выкл, но использую комп для работы и гибернация очень удобна в плане возможности оставлять незавершенную работу открытой - привык и не хотелось бы отказываться.