Анализ запуска Windows 7 с использованием Xperf

  1. подготовка
  2. Приобретение следов запуска
  3. Анализируя следы запуска
  4. Просмотр результатов отслеживания
  5. Начать отслеживание
  6. Остановка отслеживания
  7. суммирование

Из-за все более широкого использования Windows 7 пользователи устанавливают на него более новое и более требовательное программное обеспечение, объем которого постепенно снижает его производительность. Многие сервисы и приложения запускаются автоматически с системой, значительно, а иногда совершенно неожиданно увеличивая время ее запуска. В этой статье мы рассмотрим инструменты, позволяющие провести углубленный анализ длительного запуска Windows 7. Зная эту причину, мы сможем соответствующим образом отреагировать и сократить время ожидания, чтобы система стала неактивной и, таким образом, была готова к работе.

подготовка

Чтобы получить доступ к инструментам, описанным в этой статье, нам нужно установить пакет Windows Performance Toolkit на компьютер. Windows SDK для Windows 7 и .NET Framework 4 ,

Программа также будет чрезвычайно полезна Sysinternals Autologon , Это позволит нам автоматически войти в систему во время диагностики, чтобы мы могли измерить фактическое время запуска системы.

Приобретение следов запуска

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

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

xbootmgr -trace boot

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

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

Возможно, что в ходе этого процесса появится сообщение контроля учетных записей (UAC) с запросом на подтверждение операции. После завершения программы в результирующем файле отобразится файл результатов с именем boot_BASE + CSWITCH_1.etl . Имея уже файл с подробными данными о запуске системы и процессах, которые она выполняет, мы можем проанализировать данные, собранные таким образом. Благодаря этому мы выясним, какие процессы оказывают непосредственное влияние на долгосрочную работу Windows 7.

Благодаря этому мы выясним, какие процессы оказывают непосредственное влияние на долгосрочную работу Windows 7

Анализируя следы запуска

Мы можем провести анализ трассировки двумя способами. Первый основан на анализе экспортированного XML-файла, который содержит соответствующие моменты времени отдельных событий. Для этого в командной строке мы выполняем следующую команду:

xperf -i boot_BASE + CSWITCH_1.etl -o summary.xml -a boot, где summary.xml - это имя файла результатов, который мы используем. Затем мы получим подробный отчет, сохраненный в XML-файле, который мы можем просмотреть в Internet Explorer или любом XML-редакторе.

Затем мы получим подробный отчет, сохраненный в XML-файле, который мы можем просмотреть в Internet Explorer или любом XML-редакторе

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

  • bootDoneViaExplorer - время, после которого запускается процесс Explorer.exe
  • bootDoneViaPostBoot - общее время, необходимое для запуска системы.

Из приведенного выше примера мы можем прочитать, что для полной загрузки Windows 7 потребовалось 76 секунд. Однако используемый нами инструмент ждет еще 10 секунд (postBootRequiredIdleTime), чтобы система могла полностью отключиться. Таким образом, чтобы получить фактическое время запуска, вам нужно вычесть эти 10 секунд - это дает вам 66 секунд для полного запуска Windows 7.

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

xperfview boot_BASE_CSWITCH_1.etl

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

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

На скриншоте выше представлены различные контрольные точки. В нашем случае нас интересуют только:

  • GP Client - эта точка появляется неоднократно: до входа в систему пользователя (групповая политика компьютеров) и после входа в систему (групповая политика пользователей).
  • CreateSession Notification - эта контрольная точка указывает момент, когда пользователь ввел свои данные и начался процесс входа в систему.
  • Профили - момент, когда был загружен профиль пользователя.
  • StartShell Notification - контрольная точка, указывающая момент, когда системная оболочка готова к загрузке и запуску процесса explorer.exe.

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

Просмотр результатов отслеживания

Есть два способа просмотра файлов журнала:

  • в командной строке с повышенными привилегиями мы выполняем xperf <имя файла> .etl
  • или запустите графический инструмент XperfView (анализатор производительности Windows), а затем вручную откройте файл .etl с его уровня .

После открытия файла журнала мы должны увидеть экран, подобный следующему:

ПРИМЕЧАНИЕ. - Хотя для запуска Xperf требуется командная строка с повышенными привилегиями, эти разрешения больше не требуются для анализа данных.

Используя вкладку Chart Selector, мы можем выбрать, какие графики мы хотели бы видеть. Для подробного просмотра графика используйте опцию Сводная таблица в контекстном меню. Например, в диаграмме выборки ЦП (Выборка ЦП по процессам) в приведенной выше таблице обобщены процессы, запускаемые при запуске системы, а также информация, такая как количество процессорного времени, процент использования или стеки отдельных процессов. Например, глядя на такую ​​таблицу для графика дискового ввода-вывода (операции ввода / вывода на диске), вы можете увидеть, какие процессы сохраняли файлы (имена этих файлов также даются) на диск, и сколько времени им потребовалось.

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

Начать отслеживание

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

  • загрузка изображения
  • операции ввода / вывода с диска
  • события процесса и потока
  • ссылки на файл подкачки
  • отложенные вызовы процедур и прерывания
  • переключение контекста
  • и счетчики производительности

В командной строке с повышенными привилегиями запустите: xperf -on DiagEasy.

Это запустит регистратор событий ядра в последовательном режиме, запишет в файл kernel.etl по умолчанию (в текущем каталоге), используя размер буфера по умолчанию 64 КБ, с минимумом 64 и до 320 буферов.

Остановка отслеживания

Чтобы остановить отслеживание, введите командную строку:

xperf -d <имя файла> .etl

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

суммирование

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