Мой компьютер очень долго выключается.
Как я могу определить виновника? Я не хочу ждать, пока мой компьютер выключится ...
Есть ли программа, которую я могу использовать, чтобы отследить, сколько времени требуется для выключения?
Мой компьютер очень долго выключается.
Как я могу определить виновника? Я не хочу ждать, пока мой компьютер выключится ...
Есть ли программа, которую я могу использовать, чтобы отследить, сколько времени требуется для выключения?
Windows предоставляет счетчики производительности, а также трассировку событий, которая позволяет приложениям выполнять анализ производительности, чтобы можно было точно определить причину проблем с производительностью, среди существующих существует один выдающийся инструментарий: Windows Performance Toolkit, доступный в Windows SDK.
В этом инструментарии вы найдете xbootmgr.exe
, предназначенный для анализа производительности Windows On/Off Transition.
Несмотря на то, что вышеупомянутый связанный документ включает в себя все детали для каждого перехода вкл / выкл, вот общая идея о трассировке и анализе перехода выключения с использованием xbootmgr
и графического интерфейса пользователя xperf:
Загрузите Windows SDK, а затем установите Windows Performance Toolkit, используя его.
Откройте командную строку от имени администратора и запустите:
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
Если вам нужна помощь в будущем, вы можете ввести xbootmgr -help
а также xperf /?
,
Выполните трассировку перезагрузки следующим образом:
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
После загрузки он сгенерирует след в течение двух минут.
Трасса была сохранена в %ProgramFiles%\Microsoft Windows Performance Toolkit
, вы можете перетащить ее на xperf.exe
и она будет открыта в графическом интерфейсе.
Вы увидите графический интерфейс с различными графиками, стрелка слева позволяет добавлять / удалять графики.
Посмотрите на графики и посмотрите, сможете ли вы найти что-то необычное, вы можете выбрать интервал и увеличить его, если хотите. Щелкните правой кнопкой мыши и уменьшите масштаб, когда вы хотите увидеть все.
Для каждого графика вы можете щелкнуть правой кнопкой мыши, чтобы получить сводные таблицы за текущий выбранный интервал.
В этих таблицах рассортируйте по весу или по времени, чтобы выяснить, на что больше всего тратится. Обратите внимание, что вы можете перетаскивать столбцы, поэтому, например, таблица ввода / вывода позволяет вам проверить как самый высокий процесс использования, так и самый высокий путь использования.
Разделитель (желтый столбец заголовка) позволяет сделать так, чтобы столбцы справа от него отображали итоговое значение для столбцов слева от него. Итак, если сначала у вас есть Путь, а затем Процесс, то вы можете открыть дерево для файла, чтобы увидеть, какие процессы к нему получили доступ, а затем вы получите итоговые значения для этой комбинации процесс / файл.
Вы можете найти больше информации о том, как функционируют графики и таблицы здесь.
Если вам как-то нужно спуститься, чтобы посмотреть на следы стека; выполните еще одну загрузочную трассировку и добавьте параметр -stackWalk profile
, установите _NT_SYMBOL_PATH и щелкните правой кнопкой мыши на любом графике и включите "Загрузить символы". Это позволит вам проверить, какие функции он на самом деле вызывает, хотя в общем вам это не понадобится для завершения работы; но он может позволять обнаруживать, что ваш брандмауэр мешает вашему отладчику в качестве программиста. Довольно изящно ...
Удачи, надеюсь, вы сможете найти виновника. Если нет, то оставьте след, и мы посмотрим на вас ...
Обратите внимание, что DPC - это отложенные вызовы процедур, а прерывания - программные прерывания, оба связаны с драйверами / оборудованием.
Мои отключения, где требуется много времени, чтобы бежать. Далее следует мой пример с ответом Тома.
Первый график показывает проблему, дисковый ввод-вывод:
Мое отключение занимает более минуты, и это все ввод-вывод на жестком диске.
На следующем графике « Использование диска» показано, что диск работает почти на 100%:
Последний график показывает использование диска процессами:
Отфильтровывая, я понимаю, что все это вызвано WinInit.exe
:
Щелкнув правой кнопкой мыши по любому графику жесткого диска и выбрав Сводную таблицу, я могу получить подробную информацию о том, к каким файлам был произведен доступ каким процессом:
56,4 секунды моего отключения было потрачено WinInit
запись 6,7 ГБ в C:\hiberfil.sys
.
Но вопрос в том, почему Windows записывает в мой файл гибернации при завершении работы?
Затем я вспомнил опцию, которую я включил, чтобы стереть этот файл подкачки при завершении работы:
Поэтому я отключил эту опцию и снова запустил xbootmgr
. Теперь мое отключение составляет 22 секунды:
Теперь 9s
из 22s
отключений тратится на запись System
в какой-то unknown
файл. Это может быть достойно дальнейшего расследования.
Но сейчас я решил отключиться за полторы минуты.
я пошел дальше и решил свое медленное отключение 22-х годов. От t = 12s
до t = 21s
показало 100% использование диска, но ноль дискового ввода-вывода. Это было непонятно.
Пока во время одной остановки я не услышал знакомый звук одного из моих дисков, вращающихся. Выключение было приостановлено на 9 секунд, поскольку Windows пыталась получить доступ к диску, который перешел в спящий режим. Девять секунд спустя привод реагирует, а через мгновение машина выключается.
Странно, что Windows пробуждает диск, чтобы сказать, что пора идти спать.
Это сделало бы мое фактическое отключение 13,5 секунд. Это может стоить большего расследования. Но сейчас я решил отключиться за 22 секунды.