Определение времени загрузки в ОС на базе Windows

Наверное, многие пользователи сталкивались с тем, что со временем операционная система начинает загружаться всё медленнее. Чем больше программ и различных приложений установлено на компьютере, тем дольше система грузится. Более того, время отклика системы на действия пользователя напрямую зависит от количества и качества установленных приложений. Объясняется это тем, что многие приложения не только занимают место на диске, но и заносят информацию о себе в различные реестры операционной системы. При этом неважно, будут ли это записи об ассоциации конкретных файлов с этим приложением, автозапуск некоторых модулей либо другая информация, так как при загрузке ОС все эти данные так или иначе проверяются и повторно записываются в реестре ОС. Соответственно чем больше таких записей, тем дольше грузится операционная система, поскольку реестр, как и любая другая база данных, с увеличением хранимой в нем информации, а также расширением структуры данных медленнее отзывается на любые запросы. Наилучшим способом решения данной проблемы является одно популярное, но в то же время сложное для многих пользователей действие — удаление и новая установка операционной системы. Очищение реестра с помощью специальных программ во многих случаях может дать отрицательный результат: не только нарушится целостность тех или иных программ, но и может стать неработоспособной операционная система.
В этой статье мы не будем рассматривать приемы по ускорению загрузки операционной системы — наша задача состоит в том, чтобы проанализировать, каким образом можно оценить время ее загрузки. Попробуем разобраться, как определить время загрузки системы на базе операционных систем Windows Vista и Windows 7.

По сравнению с предыдущими версиями Windows на базе Windows NT 5.0/5.1 (Windows 2000 и XP), новая платформа NT 6.0/6.1 (Windows Vista и 7) позволила достичь больших успехов в ускорении загрузки операционной системы за счет применения некоторых новых технологий. Однако в большинстве своем эти технологии нацелены на загрузку операционной системы не при холодном старте, а при выходе из режима гибернации или «сна». Это логично, поскольку многие пользователи или не выключают свои компьютеры вообще, или переводят их в режим «сна», из которого они затем автоматически переходят в режим гибернации. Измерение времени загрузки операционной системы следует выполнять только в случае холодного старта системы, так как в режиме «сна» или гибернации исходное состояние при запуске ОС будет различным, поскольку слепок системы каждый раз будет меняться в зависимости от работающих служб и приложений. Создать условие для режима гибернации, в котором слепок системы был бы идентичным, — сложная и трудоемкая задача. Поэтому мы будем рассматривать время загрузки системы после включения компьютера. Отметим, что в операционной системе Windows 8 будет применяться новая технология загрузки, представляющая собой своеобразный гибрид между загрузкой с нуля и режимом гибернации. Для того чтобы понять, как это будет работать, рассмотрим этапы загрузки и выключения операционной системы в Windows 7.

Выключение системы (Shutdown):

  1. Пользователь с помощью кнопки Shutdown (Выключение) или нажав кнопку выключения на системном блоке задействует функцию API ExitWindowsEx(); если выключение происходит посредством какого-либо приложения, то выполняется API-функция InitiateShutdown();
  2. Операционная система посылает команду всем работающим приложениям о том, что система будет выключена и им необходимо сохранить текущие данные как можно быстрее. В свою очередь, приложения могут несколько задержать процесс выключения, задействовав механизм выделения дополнительного времени для закрытия приложения;
  3. После успешного закрытия приложений или их принудительной остановки система закрывает все пользовательские сессии на компьютере;
  4. Выключаются работающие сервисы операционной системы. При этом часть сервисов выключается в определенном порядке, так как они зависят друг от друга. Остальные сервисы выключаются в несколько потоков одновременно. Если сервис не отвечает, то система останавливает его принудительно;
  5. После выключения всех сервисов Windows посылает команду выключения всем периферийным устройствам, поддерживающим автоматическое отключение;
  6. Система закрывает основную системную сессию (она имеет альтернативное название — session 0), проверяет целостность сохраненных пользовательских и системных данных на диске и впоследствии отсылает сигнал через ACPI-интерфейс для полного выключения компьютера.

Отметим, что процесс перезапуска происходит примерно так же, за исключением некоторых специфичных команд сервисам и другой команды ACPI-интерфейсу. Режимы «сна» и гибернации сильно отличаются от процесса выключения/перезапуска системы. Режим «сна» подразумевает мгновенную паузу всей системы (запущенных приложений и сервисов) и перевод компьютера в режим пониженного энергопотребления, при котором основные устройства всё равно остаются включенными. При гибернации содержимое оперативной памяти записывается на энергонезависимое устройство (жесткий диск), а компьютер выключается с помощью специальной команды через интерфейс ACPI и большинство его компонентов отключаются от питания. При последующем включении компьютера содержимое оперативной памяти восстанавливается из копии на диске — таким образом, пользователь может продолжить работу с того места, на котором он остановился (остаются запущенные приложения, несохраненные документы). Также следует отметить, что в операционной системе Windows Vista появилась дополнительная функция Гибридный спящий режим, когда содержимое оперативной памяти сбрасывается на диск, но питание большинства устройств не отключается. Если компьютер был отключен или пропало электропитание, ОС восстанавливается с диска, если нет — система выходит из ждущего режима ACPI.

Процесс запуска операционной системы при холодном старте состоит из следующих этапов:

  1. Нажатие на кнопку питания приводит к загрузке BIOS компьютера и процедуры тестирования его основных компонентов — POST (Power-On Self Test). При этом определяется и физический диск, с которого последует старт операционной системы;
  2. BIOS считывает информацию из MBR (Master Boot Record) и таким образом запускает утилиту Bootmgr.exe, которая, в свою очередь, ищет загрузчик Windows (Winload.exe) на диске и запускает его;
  3. Загрузчик инициализирует загрузку основных драйверов для последующего запуска операционной системы и сервиса сессий (session manager process — Smss.exe);
  4. Загрузка Smss.exe и представляет собой загрузку основной сессии системы (session 0), когда загружаются все драйверы, сервисы и другие элементы операционной системы;
  5. После успешного запуска основной сессии подгружаются оконный менеджер и групповые политики для локального ПК и домена, а затем после входа в систему запускается основная пользовательская сессия (User session) с помощью сервиса Winlogon.exe;
  6. Начинается загрузка рабочего стола пользователя и старт всех его приложений, которые промаркированы к автозапуску.

В операционной системе Windows 8 специалисты Microsoft внедрили новую функцию быстрого запуска системы, объединив режимы гибернации и полного выключения компьютера. Анализ действий пользователей ноутбуков и настольных компьютеров показал, что хотя режимы «сна» и гибернации популярны для портативных устройств (применяются примерно в 50% случаев), многие пользователи до сих пор полностью включают/выключают компьютер. Одних, видимо, пугает само слово и процесс, другие не используют режим «сна» из-за экономии электроэнергии, а третьи хотят, чтобы при включении компьютера создавалась чистая новая сессия пользователя без запущенных ранее приложений. Новая функция быстрой загрузки системы в Windows 8 отвечает этим требованиям и действует следующим образом (рис. 1). При выключении питания операционная система закрывает пользовательскую сессию полностью, то есть все приложения и сервисы выключаются. Однако основная системная сессия (session 0) не закрывается, а переводится в режим гибернации — на диске сохраняется слепок состояния сервисов и приложений данной сессии из оперативной памяти. После этого компьютер полностью выключается, что приводит к нулевому энергопотреблению. Тут стоит отметить, что не вся основная системная сессия переводится в режим гибернации — некоторая часть, относящаяся к драйверам устройств, может не переводиться в режим гибернации, если пользователь перед этим удалил или добавил новые драйверы. Такой метод выключения, действительно, должен стать более эффективным, поскольку системная сессия практически не подвержена изменению со стороны пользователя, а большинство хранимой в оперативной памяти информации этой сессии от перезапуска к перезапуску не изменяется. Загрузка основного ядра системы на лету позволяет сократить общее время загрузки системы на 30-70%. На сайте подразделения Microsoft по связи с разработчиками ПО (Microsoft Developer Network, msdn.com) этой новой технологии посвящена отдельная статья. Выход Windows 8 намечен на осень текущего года, и тогда, наверное, можно будет судить, как эта технология работает, а пока вернемся к загрузке операционных систем Windows Vista и 7.

 

Рисунок

Рис. 1. Принцип быстрого запуска ОС в Windows 8

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

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

Вторым способом является анализ встроенных в Windows Vista/7 счетчиков и средств измерения производительности. Для того чтобы оценить время загрузки операционной системы, необходимо открыть специальную оснастку Просмотр сведений о производительности в журнале событий. Для этого нужно последовательно пройти по следующим ссылкам: Панель управления —> Система —> Счетчики и средства производительности —> Дополнительные инструменты —> Просмотр сведений о производительности в журнале событий.

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

  • код 100 — общее время загрузки;
  • коды 101-199 — устройства, сервисы и приложения, где возникли задержки при запуске;
  • код 200 — общее время завершения работы;
  • коды 201-299 — устройства, сервисы и приложения, где возникли задержки при выходе.

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

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

  • MainPathBootTime — время для появления рабочего стола, включая все критические сервисы и драйверы, необходимые для основной работы системы;
  • BootKernelInitTime — инициализация ядра;
  • BootDriverInitTime — инициализация драйверов;
  • BootDevicesInitTime — инициализация железа;
  • BootSmssInitTime — инициализация диспетчера сеанса;
  • BootPostBootTime — время запуска всех некритических сервисов.

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

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

Четвертый способ — применение специального программного решения от компании Microsoft под названием Windows Performance Analysis Tools (WPT). Это набор из трех специализированных утилит: Xperf, Xperfview и Xbootmgr. Программное решение поставляется вместе с серверной операционной системой Windows 2008 R2 и служит для анализа производительности при загрузке системы. С помощью нехитрых команд, подробно описанных в документации к утилитам, пользователь может определить время загрузки каждого элемента основной системной сессии операционной системы, а также получить информацию о возникающих в процессе запуска ошибках и задержках. Увы, и эти утилиты не позволяют однозначно определить время полной загрузки системы, когда пользовательская сессия и все сопутствующие ей приложения запущены и не отнимают процессорного времени.

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

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

В операционной системе Windows Vista и 7 существует несколько этапов автоматической загрузки приложений пользователя. В реестре ОС есть три основные записи об автозагрузке приложений в ветках:

  • “HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”;
  • “HKCU\Software\Microsoft\Windows\CurrentVersion\Run”;
  • “HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run” (только для 64-битной версии ОС).

Помимо этого имеются две папки автозапуска, а хранимые в них символические ссылки позволяют автоматически запускать приложения при загрузке системы:

  • %SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup;
  • %SystemDrive%\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,

где %SystemDrive% — это переменная системного диска, а %USERNAME% — имя текущего пользователя системы.

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

Прежде всего попытаемся определить, каким образом начинать отсчет времени запуска операционной системы. Заходить в BIOS и засекать время запуска не есть правильное решение, поскольку этот способ не обеспечивает точности измерений. К счастью, компания Microsoft внедрила в свои операционные системы своеобразный таймер запуска, который инициализируется, по всей видимости, в начале загрузки основной системной сессии. В английском варианте операционной системы параметр времени запуска операционной системы называется System Boot Time. В русскоязычной версии он носит название Время загрузки системы. Получить эти данные можно, набрав в командной строке от лица администратора команды, изображенные на рис. 2 и 3.

 

Рисунок

Рис. 2. Команда для русскоязычной версии ОС

Рисунок

Рис. 3. Команда для англоязычной версии ОС

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

Рядовой пользователь может вывести информацию о текущей загрузке процессора и диска с помощью специальной оснастки. Она называется Системный монитор (рис. 4)и находится в Панель управления ® Все элементы панели управления ® Администрирование. По умолчанию при открытии системного монитора пользователю уже показывается общая текущая загрузка центрального процессора. При необходимости он может добавить счетчик загруженности любого из дисков (Добавить счетчики ® Физический диск), установленных в компьютере. Анализируя эти показатели, можно определить тот момент, когда на протяжении длительного времени загрузка этих параметров минимальна, что говорит о том, что система полностью загрузилась и готова к работе. То есть все приложения и сервисы пользователя, находящиеся в автозапуске, успешно запущены и функционируют. Нельзя не отметить, что показания счетчиков производительности можно получить не только через описанную оснастку, но и через специальные запросы к базе данных Windows Management Instrumentation (WMI). WMI — это инструментарий управления Windows, то есть одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. В ней находится масса данных о состоянии компьютера, а доступ к ней можно получить через запросы языка VBA или других аналогичных, которые могут задействовать API операционной системы.

 

Рисунок

Рис. 4. Оснастка Системный монитор

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

 

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

КомпьютерПресс 05'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
Популярные статьи
КомпьютерПресс использует