Jak mogę zidentyfikować winowajcę mojego wolnego zamykania systemu Windows?


30

Zamykanie mojego komputera zajmuje bardzo dużo czasu.

Jak mogę zidentyfikować winowajcę? Nie chcę czekać minut na zamknięcie komputera ...

Czy istnieje program, którego mogę użyć do śledzenia czasu potrzebnego do zamknięcia?


1
Nie mamy pojęcia, jak skonfigurowany jest twój system i co może działać w tle
losowo

1
OK ... Widziałem, jak ktoś inny o to zapytał, a potem go
usunąłem, ponieważ tworzyłem

Zawsze możesz to zasugerować na blogu
losowo

2
Naciśnij i przytrzymaj przycisk zasilania przez kilka sekund.
Daniel R Hicks,

5
To pytanie jest prawidłowe, mogę obiektywnie odpowiedzieć na to pytanie, aby jego problem został rozwiązany. Nie ma w tym nic dwuznacznego (problem polega na tym, że jego czas przestoju trwa zbyt długo), niejasnego (chce przyspieszyć jego zamknięcie), niekompletnego (szczegóły nie są konieczne, oczywiście każdy komputer jest inny, ale to nie czyni tej techniki aby zidentyfikować winowajcę w inny sposób), zbyt szerokie (możesz tak sądzić, ale nie widzę żadnych innych pytań dotyczących rozwiązywania problemów z zamykaniem, więc jest to naprawdę cenne pytanie; myślę, że byłoby szerokie, gdyby chciał przyspieszyć inne rzeczy ) lub retoryczne (dotyczy Xperf).
Tamara Wijsman

Odpowiedzi:


31

System Windows zapewnia liczniki wydajności oraz śledzenie zdarzeń, które umożliwia aplikacjom przeprowadzanie analizy wydajności, dzięki czemu można precyzyjnie wskazać przyczynę problemów z wydajnością. Wśród tych, które istnieją, istnieje jeden wyjątkowy zestaw narzędzi: Zestaw narzędzi wydajności systemu Windows dostępny w zestawie Windows SDK .

W tym zestawie narzędzi znajdziesz narzędzie xbootmgr.exeprzeznaczone do analizy wydajności przejścia / włączenia systemu Windows .

Chociaż powyższy połączony dokument zawiera wszystkie szczegóły dotyczące każdego przejścia włączania / wyłączania, oto ogólny pomysł na śledzenie i analizowanie przejścia zamykania za pomocą xbootmgri graficznego interfejsu użytkownika xperf:

  1. Pobierz zestaw Windows SDK, a następnie zainstaluj za pomocą niego Zestaw narzędzi wydajności systemu Windows.

  2. Otwórz wiersz polecenia jako administrator, a następnie uruchom:

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. Jeśli chcesz pomóc w przyszłości, można wpisać xbootmgr -help, jak również xperf /?.

  4. Wykonaj śledzenie ponownego rozruchu w następujący sposób:

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

  5. Po uruchomieniu wygeneruje ślad w ciągu dwóch minut.

  6. Ślad został zapisany %ProgramFiles%\Microsoft Windows Performance Toolkit, możesz go przeciągnąć, xperf.exea zostanie on otwarty w interfejsie GUI.

  7. Zobaczysz GUI z różnymi wykresami, strzałka po lewej stronie pozwala dodawać / usuwać wykresy.

  8. Spójrz na wykresy i sprawdź, czy możesz zidentyfikować coś niezwykłego, możesz wybrać interwał i powiększyć go, jeśli chcesz. Kliknij prawym przyciskiem myszy i usuń powiększenie, aby zobaczyć całość.

  9. Dla każdego wykresu można kliknąć prawym przyciskiem myszy, aby wyświetlić tabele podsumowań dla aktualnie wybranego przedziału .

  10. W tych tabelach posortuj według wagi lub czasu, aby dowiedzieć się, na co wydaje najwięcej. Należy pamiętać, że można przeciągać po kolumnach, więc na przykład tabela we / wy pozwala sprawdzić najwyższy proces używania, a także najwyższą ścieżkę użycia.

    Dzielnik (żółta kolumna nagłówka) sprawia, że ​​kolumny po prawej stronie pokazują sumę kolumn po lewej stronie. Tak więc, jeśli najpierw masz Ścieżkę, a następnie Przetwarzanie, możesz otworzyć drzewo pliku, aby zobaczyć, jakie procesy uzyskały do ​​niego dostęp, a następnie uzyskać sumy dla tej kombinacji proces / plik.

  11. Więcej informacji na temat działania wykresów i tabel można znaleźć tutaj .

  12. Jeśli musisz w jakiś sposób zejść na dół, aby przejrzeć ślady stosu; wykonaj kolejny ślad rozruchowy i dołącz-stackWalk profile parametr, ustaw _NT_SYMBOL_PATH i kliknij prawym przyciskiem myszy dowolny wykres i włącz „Ładuj symbole”. To pozwoli ci sprawdzić, jakie funkcje w rzeczywistości wywołuje, ale generalnie nie będziesz tego potrzebował do zamknięcia; ale może pozwolić na odkrycie, że zapora sieciowa zakłóca działanie twojego debuggera jako programisty. Całkiem fajne ...

Powodzenia, mam nadzieję, że znajdziesz winowajcę. Jeśli nie, upuść ślad, a my zajmiemy się tobą ...

Należy pamiętać, że DPC to odroczone wywołania procedur, a przerwania są przerwaniami oprogramowania , oba dotyczą sterowników / sprzętu.


1
Niesamowita przydatna odpowiedź. Wszelkie samouczki na temat ETW są niezwykle przydatne; jest to obszar systemu Windows bez dokumentacji i przewodników.
Ian Boyd

@Tom Wijsman Linki muszą zostać zaktualizowane
Moab

Teraz jest częścią zestawu do oceny i wdrażania systemu Windows. Link można znaleźć np. Na msdn.microsoft.com/en-us/windows/hardware/commercialize/test/… lub po prostu szukając „Windows ADK”. Podczas instalacji można po prostu wybrać Performance Toolkit.
Andreas Reiff,

Teraz jest również częścią ..., ponieważ nadal jest dostępny w zestawie SDK.
Tamara Wijsman,

22

Moje zamknięcia wymagały dużo czasu. Poniżej znajduje się mój przykład z odpowiedzią Toma .

Pierwszy wykres pokazuje problem, dysk I / O :

wprowadź opis zdjęcia tutaj

Moje zamknięcie zajmuje ponad minutę i to wszystko we / wy na dysku twardym.

Następny wykres, Wykorzystanie dysku pokazuje, że dysk jest prawie maksymalny przy 100% użyciu:

wprowadź opis zdjęcia tutaj

Końcowy wykres pokazuje wykorzystanie dysku według procesu :

wprowadź opis zdjęcia tutaj

Filtrując w dół, zdaję sobie sprawę, że to wszystko spowodowane przez WinInit.exe:

wprowadź opis zdjęcia tutaj

Klikając prawym przyciskiem myszy dowolny wykres dysku twardego i wybierając Tabelę podsumowań , mogę uzyskać szczegółowe informacje o tym, jakie pliki były uzyskiwane przez jaki proces:

wprowadź opis zdjęcia tutaj

56,4 sekundy mojego zamknięcia WinInitupłynęło, pisząc 6,7 GB na adres C:\hiberfil.sys.


Ale pytanie brzmi: dlaczego system Windows pisze do mojego pliku hibernacji przy wyłączaniu ?

Potem przypomniałem sobie opcję, którą włączyłem, aby wyczyścić ten plik stronicowania podczas zamykania:

  • Start -> Uruchom -> SecPol.msc
    • Ustawienia zabezpieczeń, zasady lokalne, opcje zabezpieczeń
    • Zamknij: Wyczyść plik stronicowania pamięci wirtualnej

wprowadź opis zdjęcia tutaj

Więc wyłączyłem opcję i uruchomię xbootmgrponownie. Teraz moje wyłączenie trwa 22 sekundy:

wprowadź opis zdjęcia tutaj

Teraz 9sna 22szamknięciu jest wydawana przez Systempisanie do jakiegoś unknownpliku. To może być warte dalszych badań.

Ale na razie rozwiązałem moje półtorej minuty zamknięcia.


poszedłem dalej i rozwiązałem moje powolne wyłączanie z 22s. Od t = 12sdo t = 21spokazało 100% wykorzystanie dysku , ale zero We / Wy dysku . To było zaskakujące.

Aż do czasu jednego wyłączenia słyszałem znajomy dźwięk jednego z moich napędów, który się obracał. Wyłączenie zostało zablokowane na 9 sekund, ponieważ system Windows próbował uzyskać dostęp do dysku, który przeszedł w tryb uśpienia. Dziewięć sekund później napęd reaguje, a chwilę później maszyna wyłączyła się.

Ironiczne jest to, że Windows budzi dysk, aby powiedzieć mu, że czas iść spać.

To sprawiłoby, że moje rzeczywiste wyłączenie nastąpiło 13,5 sekundy. To może być warte więcej badań. Ale na razie rozwiązałem moje 22-sekundowe wyłączenie.


1
+1 Cieszę się, że rozwiązałeś to w swojej sprawie i fajny post!
Tamara Wijsman,

1
Te odpowiedzi zasługują na wpis na blogu, nie sądzisz? ;)
Ivo Flipse,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.