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?
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?
Odpowiedzi:
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.exe
przeznaczone 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ą xbootmgr
i graficznego interfejsu użytkownika xperf:
Pobierz zestaw Windows SDK, a następnie zainstaluj za pomocą niego Zestaw narzędzi wydajności systemu Windows.
Otwórz wiersz polecenia jako administrator, a następnie uruchom:
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
Jeśli chcesz pomóc w przyszłości, można wpisać xbootmgr -help
, jak również xperf /?
.
Wykonaj śledzenie ponownego rozruchu w następujący sposób:
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
Po uruchomieniu wygeneruje ślad w ciągu dwóch minut.
Ślad został zapisany %ProgramFiles%\Microsoft Windows Performance Toolkit
, możesz go przeciągnąć, xperf.exe
a zostanie on otwarty w interfejsie GUI.
Zobaczysz GUI z różnymi wykresami, strzałka po lewej stronie pozwala dodawać / usuwać wykresy.
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ść.
Dla każdego wykresu można kliknąć prawym przyciskiem myszy, aby wyświetlić tabele podsumowań dla aktualnie wybranego przedziału .
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.
Więcej informacji na temat działania wykresów i tabel można znaleźć tutaj .
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.
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 :
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:
Końcowy wykres pokazuje wykorzystanie dysku według procesu :
Filtrując w dół, zdaję sobie sprawę, że to wszystko spowodowane przez WinInit.exe
:
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:
56,4 sekundy mojego zamknięcia WinInit
upł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:
Więc wyłączyłem opcję i uruchomię xbootmgr
ponownie. Teraz moje wyłączenie trwa 22 sekundy:
Teraz 9s
na 22s
zamknięciu jest wydawana przez System
pisanie do jakiegoś unknown
pliku. 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 = 12s
do t = 21s
pokazał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.