Мой компьютер очень долго выключается.
Как я могу определить виновника? Я не хочу ждать, пока мой компьютер выключится ...
Есть ли программа, которую я могу использовать, чтобы отследить, сколько времени занимает выключение?
Мой компьютер очень долго выключается.
Как я могу определить виновника? Я не хочу ждать, пока мой компьютер выключится ...
Есть ли программа, которую я могу использовать, чтобы отследить, сколько времени занимает выключение?
Ответы:
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 секунды.