ANALIZA URUCHAMIANIA SYSTEMU WINDOWS 7.pdf

(234 KB) Pobierz
Analiza uruchamiania systemu Windows 7
z użyciem Xperfa
Autor:
Marcin Paradowski
Opublikowano:
16 sierpnia 2013
Odsłon:
28 739
Skomentuj
Z uwagi na coraz bardziej powszechne wykorzystywanie systemu Windows 7, użytkownicy
instalują na nim coraz to nowsze i bardziej wymagające oprogramowanie, którego natłok
obniża stopniowo jego wydajność. Spora część usług i aplikacji startuje automatycznie wraz z
systemem, znacznie, a niekiedy zupełnie nieoczekiwanie wydłużając czas jego uruchamiania.
W niniejszym artykule przyjrzymy się więc narzędziom pozwalającym na dokonanie
dogłębnej analizy podejrzanie wydłużonego startu systemu Windows 7. Znając tego
przyczynę, będziemy mogli odpowiednio zareagować i skrócić czas oczekiwania na
osiągnięcie przez system stanu bezczynności, a co za tym idzie jego gotowości do pracy.
Przygotowanie
Aby uzyskać dostęp do opisywanych w tym artykule narzędzi, musimy zainstalować na
komputerze pakiet
Windows Performance Toolkit,
wchodzący w skład
Windows SDK for
Windows 7 and .NET Framework 4.
Niezwykle przydatny okaże się także program
Sysinternals Autologon.
Umożliwi nam on
automatyczne zalogowanie się do systemu w czasie przeprowadzanej diagnostyki, dzięki
czemu będziemy mogli zmierzyć rzeczywisty czas uruchamiania systemu.
Pozyskiwanie śladów z rozruchu
Zanim przystąpimy do optymalizacji uruchamiania systemu Windows 7, musimy wykonać
kilka zabiegów, które pozwolą nam na dokładne zlokalizowanie związanych z tym procesem
problemów.
Z uwagi na wykonywane operacje, musimy zalogować się w systemie z użyciem konta
użytkownika z prawami administratora. Wówczas uruchamiamy program Autologon i
wprowadzamy do niego dane dotyczące naszego konta. Dzięki automatycznemu logowaniu
nie będziemy musieli ręcznie wpisywać poświadczeń użytkownika, a co za tym idzie, nasze
pomiary dotyczące czasu uruchamiania systemu nie będą zafałszowane. Następnie tworzymy
nowy, osobny folder - na przykład
C:\PerfTrace
- w którym będzie przechowywany plik z
pozyskanymi śladami rozruchu. Kiedy mamy już wszystko przygotowane, uruchamiamy
wiersz poleceń z podniesionymi uprawnieniami, przechodzimy do utworzonego wcześniej
katalogu
C:\PerfTrace
i wpisujemy poniższe polecenie:
xbootmgr –trace boot
Wykonanie tego polecenia spowoduje ponowny rozruch komputera, podczas którego zostaną
przechwycone wszystkie informacje o uruchamianych wraz z systemem procesach, w tym
także zdarzenia zachodzące już po (w tym wypadku automatycznym) zalogowaniu
użytkownika. Na zebranie tych ostatnich zdarzeń program poświęci 120 sekund, dając nam w
tym czasie możliwość wcześniejszego zakończenia procesu przechwytywania.
Nie wykluczone, że w czasie trwania tego procesu pojawi się komunikat Kontroli konta
użytkownika (UAC) z żądaniem potwierdzenia wykonania operacji. Po zakończeniu działania
programu, w przygotowanym wcześniej folderze pojawi się plik wynikowy o
nazwie
boot_BASE+CSWITCH_1.etl.
Mając już plik ze szczegółowymi danymi dotyczącymi
startu systemu i uruchamianych przez niego procesów, możemy przystąpić do analizy
zebranych w ten sposób danych. Dzięki temu dowiemy się, które procesy mają bezpośredni
wpływ na długi czas uruchamiania Windows 7.
Analizowanie śladów rozruchu
Analizy śladów możemy dokonać na dwa sposoby. Pierwszy z nich polega na analizie
wyeksportowanego pliku XML, w którym zawarte są odpowiednie punkty czasowe
poszczególnych zdarzeń. Aby tego dokonać, w wierszu poleceń wykonujemy poniższe
polecenie:
xperf –i boot_BASE+CSWITCH_1.etl –o
summary.xml
–a boot
gdzie
summary.xml
jest użytą przez nas nazwą pliku wynikowego. Otrzymamy wówczas
szczegółowy raport zapisany do pliku XML, który możemy przejrzeć w przeglądarce Internet
Explorer lub jakimkolwiek edytorze XML.
Cały raport jest dość obszerny, zaś nam chodzi jedynie o informacje dotyczące uruchamiania
systemu, dlatego też zawęziliśmy obszar poszukiwań, tak jak to przedstawia powyższy zrzut
ekranu. Interesują nas jedynie dwa punkty czasowe, których wartości podano w
milisekundach:
bootDoneViaExplorer – czas po jakim uruchomiony zostaje proces Explorer.exe
bootDoneViaPostBoot – całkowity czas potrzebny na uruchomienie systemu.
Z powyższego przykładu możemy odczytać, że do całkowitego uruchomienia Windows 7
potrzeba było 76 sekund. Jednak użyte przez nas narzędzie odczekuje dodatkowe 10 sekund
(postBootRequiredIdleTime), by system mógł osiągnąć pełną bezczynność. Tak więc, aby
otrzymać rzeczywisty czas rozruchu, należy odliczyć te 10 sekund - daje nam to w rezultacie
66 sekund na pełne uruchomienie systemu Windows 7.
Jak już wcześniej wspomnieliśmy, analizy śladów rozruchu możemy dokonać na dwa
sposoby. Pierwszy - przeglądanie interesujących nas danych w dzienniku w formacie XML -
już omówiliśmy, pora więc przejść do drugiego, wykorzystującego graficzną nakładkę
XperfView. Aby tego dokonać wystarczy w wierszu poleceń wpisać poniższą komendę:
xperfview boot_BASE_CSWITCH_1.etl
Cały raport zawiera pokaźną ilość informacji, a że my zajmujemy się rozruchem systemu i
procesem logowania, dlatego też skupimy się na sekcji Winlogon:
Na powyższym zrzucie ekranu widnieją różne punkty kontrolne. W naszym przypadku
interesują nas tylko:
GP Client
– punkt ten pojawia się wielokrotnie: przed zalogowaniem użytkownika
(Computer Group Policy) i po zalogowaniu (User Group Policy).
CreateSession Notification
– ten punkt kontrolny wskazuje moment, w którym
użytkownik wprowadził swoje dane i rozpoczął się proces logowania.
Profiles
– moment, w którym został załadowany profil użytkownika.
StartShell Notification
– punkt kontrolny wskazujący moment, w którym powłoka
systemu jest gotowa do załadowania i uruchomienia procesu explorer.exe.
Dzięki danym pozyskanym poprzez Xperf nie tylko dowiemy się ile czasu wymagane jest do
wykonania pełnego rozruchu systemu, ale uzyskamy także informacje nt. próbkowania
procesora, wykorzystania procesora i dysku przez procesy i wątki, procedur przerwania usług
i opóźnionych wywołań procedur, błędów sprzętowych, a także szczegółowe dane dotyczące
operacji wejścia/wyjścia dysków twardych.
Przeglądanie wyników śledzenia
Istnieją dwa sposoby wyświetlania plików dziennika:
w wierszu poleceń z podniesionymi uprawnieniami wykonujemy
xperf <nazwa
pliku>.etl
lub uruchamiamy graficzne narzędzie XperfView (Windows Performance Analyzer), a
następnie z jego poziomu ręcznie otwieramy plik
.etl.
Po otwarciu pliku dziennika, powinniśmy zobaczyć ekran zbliżony do poniższego:
UWAGA
- O ile do uruchomienia programu Xperf wymaga się wiersza poleceń z
podniesionymi uprawnieniami, to do analizy danych uprawnienia te nie są już wymagane.
Korzystając z zakładki Chart Selector (Wybór wykresu) możemy wybrać, które z wykresów
chcielibyśmy obejrzeć. By szczegółowo przejrzeć dany wykres korzystamy z opcji Summary
table (Tabela zbiorcza), znajdującej się w menu kontekstowym. Na przykład, na wykresie
próbkowania procesora w oparciu o procesy (CPU Sampling by Process), wspomniana tabela
Zgłoś jeśli naruszono regulamin