Wysokie wykorzystanie procesora przez proces systemowy (Ntoskrnl.exe) w systemie Windows

Na jednym z komputerów z właśnie zainstalowanym systemem Windows 10 użytkownik zaczął narzekać na ciągłe zawieszanie się i powolne działanie systemu operacyjnego. W menedżerze urządzeń widać, że proces wykorzystuje ponad 50% zasobów procesora System (ntoskrnl.exe) W tym artykule postaram się opisać podstawowe metody diagnozowania wysokiego wykorzystania procesora przez różne procesy i metody identyfikowania problematycznego komponentu systemu Windows.

Sytuacja, w której proces systemowy zużywa ponad połowę zasobów procesora systemu, nie jest normalna. Sam plik Ntoskrnl.exe jest wykonywalnym plikiem jądra. To jest podstawowy proces systemu. W ramach jądra systemu operacyjnego uruchamiane są sterowniki systemowe urządzeń, które najprawdopodobniej są źródłem problemu (nie wszystkie sterowniki są odpowiednio testowane przez twórców sprzętu).

Z reguły problem wycieku kodu sterownika i dużego obciążenia procesora, pamięci lub dysku występuje po zainstalowaniu nowego sprzętu, zainstalowaniu nowej wersji sterownika (w tym automatycznych aktualizacji sterowników, które można wyłączyć) lub po aktualizacji systemu Windows.

Wskazówka. W niektórych przypadkach wysokie obciążenie procesora i pamięci może być spowodowane przez proces systemowy i pamięć skompresowaną.

Aby zrozumieć, który konkretny sterownik lub moduł powoduje duże obciążenie procesora, możesz skorzystać z bezpłatnego narzędzia Eksplorator procesów. Pobierz i uruchom go z uprawnieniami administratora.

Na liście uruchomionych procesów znajdź proces System, kliknij go prawym przyciskiem myszy i otwórz jego właściwości Właściwości.

Idź do zakładki Wątki. Posortuj listę modułów załadowanych przez jądro według stopnia wykorzystania procesora (kolumna CPU). W linii Adres początkowy wyświetlana jest nazwa funkcji lub sterownika powodującego duże obciążenie (zrzut ekranu nie pochodzi z systemu problemów).

Ponadto, aby zidentyfikować sterownik, który powoduje duże obciążenie procesora, możesz użyć bezpłatnego narzędzia Microsoft - kernrate.exe (Kernrate Viewer). Zawiera narzędzie Wdk (Zestaw urządzeń Windows). Po zainstalowaniu WDK narzędzie można znaleźć w katalogu ... \ Tools \ Other \ amd64.

Uruchom narzędzie kernrate.exe bez argumentów i poczekaj chwilę na zebranie danych (10-15 minut), a następnie przerwij działanie narzędzia, naciskając klawisz Ctrl-c: Spójrz na listę modułów w sekcji Wynik dla trybu jądra.

Jak widać, w naszym przykładzie moduł powoduje duże obciążenie procesora b57nd60x. Za pomocą Google lub narzędzia sigcheck (patrz przykład) możesz ustalić, że przyczyną problemu jest sterownik karty sieciowej Broadcom NetXtream Gigabit Ethernet NDIS6.0 Driver.

Ponadto można analizować użycie procesora podczas uruchamiania systemu za pomocą zestawu narzędzi Windows Performance Toolkit (WPT). Musisz zainstalować komponent i rozpocząć zbieranie danych za pomocą konsoli graficznej Rejestrator wydajności systemu Windows (Trójkąt pierwszego poziomu + użycie procesora -> Start)

Lub tak:

xperf -on latency -stackwalk profile -buffersize 1024 -MaxFile 256 -FileMode Circular && timeout -1 && xperf -d cpuusage.etl

Wskazówka. Ta metoda jest wygodna w użyciu, jeśli po załadowaniu system całkowicie zawiesza się i po prostu nie można w nim pracować. Najprawdopodobniej ten artykuł będzie również przydatny w diagnozowaniu długiego rozruchu systemu Windows.
Wynikowy plik należy zapisać i otworzyć w WPA. Rozwiń stos procesów systemowych. W tym przykładzie widać, że wysokie obciążenie procesora powoduje sterownik athrx.sys (Karta sieci bezprzewodowej Atheros Karta sieci Wi-Fi).


Tak, sterownik problemu został wykryty. Co dalej?

Aby rozwiązać problem, musisz spróbować zainstalować nowszą (lub starszą) wersję sterownika lub całkowicie wyłączyć sprzęt, jeśli problem występuje we wszystkich wersjach sterownika. Zaktualizowany sterownik można dodatkowo sprawdzić za pomocą testu warunków skrajnych za pomocą Driver Verifier.