Анализ времени загрузки ОС Windows 7

Скрипт WakeUp Script Time Checker

 

В двух предыдущих номерах мы рассказывали об особенностях измерения времени загрузки операционных систем на базе Windows 7/Vista. Более того, в одной из статей мы даже приводили примеры и результаты подобного тестирования. Однако, как и говорилось в той публикации, даже такая методика не позволяет точно определить время загрузки системы, поскольку оно очень сильно зависит от многих факторов, таких как установленные программы, сервисы и общее состояние операционной системы. Как показала практика, оценка времени загрузки с помощью нашего скрипта не позволяла получить точные временные данные, которые бы повторялись от прогона к прогону. Это несколько обескуражило нас, но более элегантное решение стало возможным с появлением новых технологий быстрого старта. В настоящей статье мы рассмотрим новую методику измерения времени загрузки системы, а также попытаемся определить время выхода компьютера из состояния «сна» или гибернации.

В предыдущей статье мы коснулись скорости загрузки ОС в новой, еще не вышедшей операционной системе Windows 8. В ней применяется новый алгоритм, который представляет собой гибридный режим «сна» и гибернации основной системной сессии. Новый алгоритм действия операционной системы на предварительных тестах с использованием Windows 8 RC показал себя с лучшей стороны и полностью выполнил возложенную на него функцию. Однако проверить и получить точные временные данные в случае применения этого алгоритма в рамках описанного в предыдущей статье скрипта не представлялось возможным. Более того, с появлением различных функций по быстрому старту системы, таких как технология Intel Rapid Start, возникла необходимость определить время загрузки ОС другим способом. Измерение времени загрузки с помощью секундомера — очень правильное с этой точки зрения решение, поскольку в таком случае не имеет значения, из какого состояния будет выходить операционная система на тестируемом компьютере — гибернации, «сна» или иного режима. В то же время наблюдатель с секундомером — живой человек, и заставить его анализировать и засекать время для каждого из режимов — это значит обречь его на вечный замер времени для каждого нового компьютера. Поскольку в компьютерный век этим занимаются автоматы, мы решили перепоручить замер времени другому ПК, который бы следил за работой исследуемого компьютера и делал соответствующие записи о времени для каждого из режимов. Если с удаленным выключением компьютера, введением его в состояние «сна» или гибернации еще можно что­то придумать, то как решить задачу запуска ПК с помощью другого компьютера? Тут на помощь приходит функция Wake-on-LAN (WOL), о которой обычно пользователь не вспоминает, но она оказывается незаменимой при администрировании большого количества компьютеров в локальных сетях. Напомним, что технология Wake-on-LAN позволяет удаленно включить компьютер посредством отправки через локальную сеть специального пакета данных, так называемого magic packet («волшебный пакет»). Эта последовательность байтов может быть вставлена в пакеты любых стандартных протоколов более высоких уровней (сейчас в основном используется протокол UDP). В начале пакета идет цепочка синхронизации, состоящая из 6 байт, каждый из которых равен «0xFF», а затем MAC-адрес сетевой платы, на который посылается сигнал, повторенный 16 раз подряд. Всё достаточно просто и идеально подходит для вывода компьютера из режимов «сна» и гибернации. Более того, часть сетевых адаптеров, интегрированных в системную плату, позволяет выводить компьютер из полностью выключенного состояния. Для работы функции Wake-on-LAN необходимы:

  • компьютер с источником питания, соответствующим стандарту ATX 2.01 и выше, и материнской платой, поддерживающей Wake-on-LAN;
  • сетевая плата (в виде дискретной платы или интегрированной в материнскую плату) с поддержкой технологии Wake-on-LAN.

В старых моделях компьютеров возможность работы этой функции также зависела от соответствия платы расширения стандарту PCI 2.2, в противном случае необходимо было подключить специальный 3-контактный кабель от сетевой карты к системной плате. Но сегодня все новые сетевые платы, а также компьютеры поддерживают этот стандарт. Таким образом, с помощью данной технологии можно вывести исследуемый компьютер практически из любого состояния и сделать замер времени. После этого остается лишь получить от пробужденного компьютера данные о полной готовности к работе и выполнить простую математическую операцию вычитания.

Несколько отойдем от темы и рассмотрим новую технологию Intel Rapid Start, работу которой посредством описанного в этой статье способа можно протестировать. Компания Intel представила эту технологию в 2010 году и, как и планировала, интегрировала в последние наборы системной логики для процессоров Ivy Bridge. Подробностей о работе данной технологии не так много, но при этом она становится всё более популярной, поскольку может работать только совместно с SSD-накопителями, которые теперь повсеместно применяются. Технология Intel Rapid Start направлена на минимизацию времени выхода компьютера из режима «сна»/гибернации и улучшение энергосбережения. Для этого инженеры Intel переработали стандартный режим гибернации, используя недокументированные функции работы ОС. Преимущество режима гибернации перед простым выключением заключается в том, что при запуске компьютер оказывается готовым к продуктивной работе гораздо быстрее. Он стартует сразу со всеми запущенными приложениями, так как полное состояние оперативной памяти сохраняется на системном диске во время перевода компьютера в этот режим. Однако на практике в современных версиях Windows Vista/7 режим гибернации пришлось заменить гибридным «спящим» режимом, при котором не происходит полное обесточивание компьютера. Это объясняется тем, что восстановление состояния системы с системного раздела приводит к значительным задержкам. Соответственно добиться высокой скорости загрузки в этом режиме можно только за счет использования SSD-накопителей. В гибридном «спящем» режиме идет параллельное сохранение данных, когда содержимое памяти сбрасывается на жесткий диск, на случай непредвиденного отключения электроэнергии, а системная память и целый ряд функциональных узлов остаются под напряжением, позволяя достичь большой скорости загрузки ОС. Это дает возможность достаточно быстро возвратить компьютер к исходному состоянию, но приводит к дополнительному расходу электроэнергии, поэтому данный режим по умолчанию используется в основном на домашних стационарных компьютерах. На ноутбуках он практически не применяется, так как там действует метод лесенки: сначала ноутбук переводится в режим «сна», а затем, для более эффективной экономии заряда батареи, — в режим гибернации. При наличии в компьютере твердотельного накопителя новая технология Intel Rapid Start позволяет полностью выключать систему при отправлении компьютера в режим «сна», сохраняя содержимое оперативной памяти в отдельном, предварительно созданном разделе SSD. Размер этого раздела должен быть не менее общего объема установленной в компьютере оперативной памяти.

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

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

В операционной системе Windows Vista и 7 существует несколько этапов автоматической загрузки приложений пользователя. В реестре этих ОС есть три основные записи об автозагрузке приложений в различных ветках, а кроме того, имеются две папки автозапуска, где символические ссылки позволяют автоматически запускать приложения при загрузке системы. Помимо элементов автозагрузки существует несколько скрытых возможностей по автоматическому запуску приложений, которыми в основном пользуются вирусописатели. Все приложения из автозагрузки начинают загружаться одновременно при активации пользовательской сессии, то есть после загрузки рабочего стола. Точно узнать, какой элемент будет загружаться первым, невозможно, так как они стартуют с разницей всего в несколько микросекунд, — а следовательно, нельзя точно определить время готовности этих ОС. Можно лишь зафиксировать тот момент, когда операционная система перестает запускать приложения, описанные в автозапуске, и переходит в своеобразный режим «покоя». Под этим режимом мы подразумеваем момент, когда приложения не задействуют системный диск, а нагрузка на процессор составляет не более 3-5%. Стоит отметить, что на современных системах загрузка процессора в таком режиме может опускаться и до отметки 1-2%. Для определения производительности этих компонентов — процессора и диска, в операционных системах на базе Windows есть специальные счетчики производительности. О них мы упомянули в прошлой статье, поэтому здесь только отметим, что наш скрипт использовал именно эти данные. Показания счетчиков производительности можно получить не только через описанную оснастку, но и через специальные запросы к базе данных Windows Management Instrumentation (WMI). WMI — это инструментарий управления Windows, то есть одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. В ней находится масса данных о состоянии компьютера, а доступ к ним можно получить через запросы языка VBA или аналогичных ему, которые могут задействовать API операционной системы.

Также нельзя не упомянуть встроенные в операционную систему возможности по мониторингу времени загрузки ее отдельных элементов. Получить необходимую информацию о загрузке можно с помощью специального набора утилит под названием Windows Performance Tools Kit, которые входят в состав средств для разработчиков — Windows SDK for Windows 7. В этом наборе есть две необходимые нам утилиты — xbootmgr и xperf. Первая позволяет измерять время загрузки для всех приложений системы, включая все элементы и компоненты самой системы при различных режимах («Сон», «Гибернация», «Выключение»). С помощью второй утилиты можно составить из полученных данных полную картину времени загрузки тех или иных элементов и вывести ее в отдельный удобочитаемый файл с метками времени. Однако справедливости ради стоит отметить, что полученные данные можно отнести только к операционной системе, но не к компьютеру в целом. Например, с их помощью нельзя узнать время загрузки системы, которое включало бы время загрузки этапа POST для BIOS/UEFI-интерфейса. Поскольку компьютер или ноутбук — это единое решение, правильнее анализировать время загрузки всей системы, а не отдельно взятой ОС.

Скрипт WakeUp Script Time Checker

Для того чтобы реализовать описанные выше возможности программы, мы использовали свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows — Autoit. Этот простой в изучении язык позволяет работать с большинством элементов и функций операционных систем на базе Windows XP/Vista/7. Далее мы отметим основные действия, необходимые для сбора соответствующей информации, которые скрипт выполняет в автоматическом режиме без участия пользователя.

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

По умолчанию функция пробуждения в опциях сетевого адаптера отключена (рис. 1). Некоторые сетевые адаптеры по ряду причин не поддерживают пробуждение по сигналу, и в таком случае опция включения будет неактивна (рис. 2). Ситуацию, когда адаптер не поддерживает данный режим, можно объяснить неправильно установленными драйверами или изначальным отсутствием этой функции у сетевого контроллера. Кроме того, возможность приема пакетов для пробуждения определяется настройками BIOS/UEFI системных плат, поэтому там тоже необходимо включить соответствующую опцию (в зависимости от системной платы и типа BIOS/UEFI они имеют разные названия).

 

Рисунок

Рис. 1. Активированная опция пробуждения

Рисунок

Рис. 2. Недоступная опция Wake-on-LAN

Здесь необходима небольшая ремарка относительно портативных компьютеров, таких как ноутбуки и нетбуки. Некоторые из таких устройств не поддерживают функцию Wake-on-LAN, поскольку ориентированы на пользовательский сегмент рынка, где она практически не востребована. Производитель просто не включает эту опцию в настройках BIOS, хотя сетевой адаптер, как правило, ее поддерживает. Ультратонкие ноутбуки, например ультрабуки, не имеют разъема RJ-45 на корпусе и подключаются к локальной сети через специальные переходники USB—RJ-45. Это также предполагает отсутствие поддержки Wake-on-LAN, поскольку информационные каналы на USB-портах обычно отключаются даже в режиме «сна». С этим мы столкнулись в ноутбуке Zenbook UX31A, где сам по себе сетевой контроллер поддерживает данную опцию, но из-за подключения через USB-интерфейс не может функционировать в этом режиме.

Поскольку специальный пакет для Wake-on-LAN посылается широковещательным запросом по локальной сети, желательно, чтобы тестируемый ПК и сервер, который собирает информацию, находились в одной подсети. Наличие между ними маршрутизатора, который работает с NAT, в этом случае налагает дополнительные ограничения на использование данной функции, поскольку необходимо сохранить MAC-адрес той сетевой карты, к которой идет запрос от сервера. В нашем скрипте мы предположили, что клиент и сервер находятся в одной сети, а широковещательный адрес автоматически подбирается в зависимости от сетевых настроек, выдаваемых DHCP-сервером. Нельзя не отметить, что существует множество различных утилит по работе с функцией Wake-on-LAN, которые позволяют отправлять пакеты не только в местной сети, но и через специальный веб­сервис в Интернет.

Компьютер, выступающий в роли клиента, должен иметь специальные настройки энергопотребления. Для настольных ПК необходимо отключить функцию гибридного «спящего» режима, тем самым активировав встроенный режим гибернации. Сделать это можно с помощью оснастки «Электропитание» (рис. 3). Помимо этого необходимо отключить все опции по автоматическому входу в «спящие» режимы, а также автоматическое отключение системных дисков. Для упрощения работы мы задействовали встроенную в операционную систему функцию экспорта и импорта схем энергопотребления через программу powercfg, которая может быть вызвана из командной строки. С ее помощью можно с легкостью экспортировать установленный режим энергопотребления и затем импортировать его на другом компьютере. Далее остается только использовать новую схему энергопотребления, которая при добавлении получает новое уникальное название. Пример применения этой команды показан на рис. 4.

 

Рисунок

Рис. 3. Оснастка «Электропитание»

Рисунок

Рис. 4. Экспорт/импорт схемы энергопотребления

После того как все основные действия по настройке клиента совершены, остается лишь запустить автоматизированный процесс обмена данными между клиентом и сервером. Алгоритм действий выглядит следующим образом. Клиент отправляет запрос серверу о готовности к входу в режим («сон», гибернация, полное выключение) и выполняет это действие. Сервер ждет некоторое время (не более 3 минут), чтобы процесс выключения или перехода в режим на клиенте был успешно завершен, и посылает ему magic packet, используя MAC-адрес сетевой платы клиента, полученный при предыдущем обмене данными. Одновременно с этим инициализируется таймер, отсчитывающий время, а сервер ждет пакета от клиента, который при полной загрузке ОС отправляет его серверу. Таким образом, сервер получает время загрузки клиента от нажатия кнопки до момента приема сигнала от клиента.

Как уже говорилось, в качестве точки отсчета для отправки сигнала об успешном пробуждении можно брать два условных состояния системы: «покой» и «только проснулся». Данные о переходе в состояние «покоя» могут быть получены с помощью данных счетчиков производительности. То есть несмотря на то, что компьютер уже «проснулся» и рабочий стол виден пользователю, скрипт ждет какое­то время, следя при этом за показаниями счетчиков. Если текущая очередь задач и к процессору, и к системному диску равняется нулю на протяжении 5 секунд — значит, система вошла в режим простоя и все пользовательские приложения и сервисы успешно загружены и работают в фоновом режиме. Соответственно клиент оповещает сервер о своей полной готовности. Если за точку отсчета брать состояние «только проснулся», то клиент сразу начинает отсылать пакет серверу о готовности системы. В этом случае некоторая часть приложений может не успеть догрузиться, а сама система не будет отзывчива. Какая из методик определения времени более правильная — точно сказать сложно, поскольку необходимо собрать статистическую информацию, в основе которой будут лежать результаты работы скрипта на нескольких различных ПК. Также стоит отметить, что состояние «только проснулся» подходит для анализа двух режимов — «сна» и гибернации. Режим полного выключения требует анализа счетчиков производительности системы для определения завершенности действий всех запускаемых вместе с пользовательской сессией приложений.

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

На момент написания статьи скрипт был выложен на известный веб­сервис для хостинга проектов и их совместной разработки — Github по адресу: https://github.com/spikerwork/WakeUp.

В начало В начало

КомпьютерПресс 09'2012


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует