Як я можу визначити винуватця мого повільного відключення Windows?


30

На моєму комп’ютері дуже багато часу потрібно відключити.

Як я можу визначити винуватця? Я не хочу чекати хвилин, коли комп'ютер вимкнеться ...

Чи є програма, яку я можу використовувати, щоб відстежити, скільки часу потрібно до відключення?


1
Ми не маємо уявлення про те, як налаштована ваша система та що може працювати у фоновому режимі
випадково

1
Гаразд ... Я бачив, що хтось інший запитав це, а потім видалив його, коли я складав дуже довгу і повну відповідь ... (відчував своє вибачення за себе)
wizlog

Ви завжди можете запропонувати його для блогу
випадково

2
Натисніть та утримуйте кнопку живлення протягом декількох секунд.
Даніель Р Хікс

5
Це питання дійсне, я можу об'єктивно відповісти на це, щоб його проблема була вирішена. Немає нічого неоднозначного (проблема полягає в тому, що час його відключення займає тривалий час), розпливчастий (він хоче прискорити його відключення), неповний (деталі не потрібні. Звичайно, кожен комп'ютер інший, але це не робить техніку щоб визначити винного будь-якого іншого), занадто широкий (ви можете так подумати, але я не бачу жодного іншого питання про усунення несправностей, тому це справді цінне питання; я думаю, що це було б широко, якщо він хоче прискорити інші речі ) або риторичний (Він включає xperf).
Тамара Війсман

Відповіді:


31

Windows пропонує лічильники продуктивності , а також відстеження подій, що дозволяє програмам робити аналіз продуктивності, щоб можна було точно визначити причину проблем із продуктивністю, серед тих, що існують, є один видатний набір інструментів: Інструментарій Windows Performance Toolkit, доступний у Windows SDK .

У цьому наборі інструментів ви знайдете xbootmgr.exe, призначений для аналізу продуктивності переходу в систему Windows .

Хоча вищезазначений пов'язаний документ містить усі деталі для кожного переходу включення / вимкнення, ось загальна ідея про відстеження та аналіз переходу відключення за допомогою xbootmgrта інтерфейсу xperf:

  1. Завантажте пакет SDK для Windows, а потім встановіть інструментарій Windows Performance Toolkit.

  2. Відкрийте командний рядок як адміністратор, а потім запустіть:

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. Якщо ви хочете допомогти в майбутньому, ви можете ввести xbootmgr -help, а також xperf /?.

  4. Зробіть слід перезавантаження таким чином:

    xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot

  5. Після завантаження він сформує слід протягом двох хвилин.

  6. Слід збережено в ньому %ProgramFiles%\Microsoft Windows Performance Toolkit, ви можете перетягнути його на xperf.exeнього і буде відкрито в графічному інтерфейсі.

  7. Ви побачите графічний інтерфейс із різними графіками, стрілка в лівій частині дозволяє додавати / видаляти графіки.

  8. Подивіться на графіки і побачите, чи можна ідентифікувати що-небудь незвичне, ви можете вибрати інтервал і збільшити його, якщо хочете. Клацніть правою кнопкою миші та зніміть масштаб, коли ви хочете побачити ціле.

  9. Для кожного графіка можна клацнути правою кнопкою миші, щоб отримати зведені таблиці за поточно обраний інтервал .

  10. У цих таблицях сортуйте за вагою або за часом, щоб визначити, на що витрачається найбільше. Зверніть увагу, що ви можете перетягувати стовпці, так, наприклад, таблиця вводу / виводу дозволяє перевірити як найвищий процес використання, так і найвищий шлях використання.

    Дільник (жовтий стовпець заголовка) робить його таким чином, що стовпці праворуч від нього показують загальну кількість стовпців, що знаходяться ліворуч від нього. Отже, якщо у вас спочатку Path, а потім Process, ви можете відкрити дерево для файлу, щоб побачити, які процеси отримали доступ до нього, і тоді ви отримаєте підсумки для цього комбінації процес / файл.

  11. Ви можете знайти більше інформації про те, як функціонують графіки та таблиці тут .

  12. Якщо вам якось потрібно спуститися, щоб подивитися на стеки стека; зробіть ще один завантажувальний слід і додайте -stackWalk profileпараметр, встановіть _NT_SYMBOL_PATH і клацніть правою кнопкою миші на будь-якому графіку та увімкніть «Завантажити символи». Це дозволить вам перевірити, які функції насправді викликає, загалом вам це не знадобиться для відключення; але це може дозволити такі речі, як виявлення, що ваш брандмауер перешкоджає вашій налагоджувальній системі як програміст. Досить вишуканий ...

Удачі, сподіваюся, ви зможете знайти винуватця. Якщо ні, то киньте слід, і ми подивимось на вас ...

Зауважте, що DPC - це відкладені виклики процедури, а переривання - програмні переривання , обидва пов'язані з драйверами / апаратними засобами.


1
Дивовижна корисна відповідь. Будь-які навчальні посібники з ETW надзвичайно корисні; це область Windows, в якій немає ніякої документації та ніяких Gui для керівництва.
Ян Бойд

@Tom Wijsman Посилання потрібно оновити
Moab

Тепер він є частиною набору для оцінювання та розгортання Windows, посилання можна знайти, наприклад, за адресою msdn.microsoft.com/en-us/windows/hardware/commercialize/test/… або просто виконати пошук "Windows ADK". Під час встановлення можна просто вибрати інструментарій продуктивності.
Андреас Рейфф

Тепер вона також є частиною ..., оскільки вона все ще доступна в SDK.
Тамара Війсман

22

Мої відключення, де потрібно довго бігати. Далі йде мій приклад з відповіддю Тома .

Перший графік показує проблему, введення / виведення диска :

введіть тут опис зображення

Моє відключення займає більше хвилини, і все це жорсткий диск вводу / виводу.

На наступному графіку " Використання диска" показано, що накопичувач майже максується при 100% використанні:

введіть тут опис зображення

Підсумковий графік показує використання диска за процесом :

введіть тут опис зображення

Відфільтрувавшись, я розумію, що все це викликано WinInit.exe:

введіть тут опис зображення

Клацнувши правою кнопкою миші будь-який із графіків жорсткого диска та вибравши Підсумкову таблицю , я можу отримати детальну інформацію про те, до яких файлів було здійснено доступ через який процес:

введіть тут опис зображення

56,4 секунди мого відключення було витрачено, WinInitзаписавши 6,7 Гб на C:\hiberfil.sys.


Але питання полягає в тому, чому Windows після закриття записує у мій файл сплячки ?

Тоді я згадав варіант, який увімкнув, щоб стерти цей файл підключення під час вимкнення:

  • Пуск -> Запуск -> SecPol.msc
    • Параметри безпеки, локальні політики, параметри безпеки
    • Завершення роботи: очистити файл сторінки віртуальної пам'яті

введіть тут опис зображення

Тож я відключив цю опцію та запустити xbootmgrзнову. Тепер моє відключення становить 22 секунди:

введіть тут опис зображення

Тепер 9sпро 22sзавершення роботи проводиться Systemзапис в який - то unknownфайл. Це може бути варте більшого розслідування.

Але поки що я вирішив моє півтора хвилини відключення.


Я пішов далі і вирішив моє 22-річне повільне відключення. Від t = 12sдо t = 21sпоказано 100% використання диска , але нульове введення / виведення диска . Це було приголомшливо.

Поки під час одного відключення я почув знайомий звук одного з моїх приводів, що крутився. Відключення зупинилося на 9 секунд, оскільки Windows намагалася отримати доступ до диска, який перейшов у режим сну. Через дев'ять секунд накопичувач відгукується, а через мить машина вимкнулася.

Іронічно, що Windows прокидається диск, щоб сказати, що саме час спати.

Це призвело б до мого фактичного відключення 13,5 секунд. Це, можливо, варто більше розслідувати. Але поки що я вирішив своє 22 секундне відключення.


1
+1 Радий, що ви вирішили це у вашому випадку, і приємний пост!
Тамара Війсман

1
Ці відповіді заслуговують на публікацію в блозі, ви не думаєте? ;)
Іво Фліпс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.