Процессом System (Ntoskrnl.exe) сильно грузит CPU в Windows. Что делать?

4,5k full reads
7,4k story viewsUnique page visitors
4,5k read the story to the endThat's 61% of the total page views
1,5 minute — average reading time

На одном их компьютеров с только что установленной Windows 10 пользователь стал жаловаться на постоянные зависания и медленную работу ОС. В диспетчере устройств видно, что более 50% ресурсов процессора используется процесс System (ntoskrnl.exe). В этой статье я постараюсь описать основные методики диагностики высокой загрузки CPU различными процессами и методы выявления проблемного компонента Windows.

Процессом System (Ntoskrnl.exe) сильно грузит CPU в Windows. Что делать?

Ситуация, когда процесс System потребляет более половины процессорных ресурсов системы — это не нормально. Сам по себе файл Ntoskrnl.exe представляет собой исполняемый файл ядра ОС. Это базовый процесс системы. В рамках ядра ОС выполняется запуск системных драйверов устройств, которые скорее всего и являются источником проблемы (далеко не все драйверы соответствующим образом тестируются разработчиками оборудования).

Как правило, проблема утечки в коде драйверов и высокая нагрузка на процессор, память или диск возникает после установки нового оборудования, установки новой версии драйвера (в том числе при автоматическом обновлении драйверов, которое можно отключить) или после апгрейда Windows.

Совет. В некоторых случаях высокую нагрузки на процессор и память может вызывать процесс Система и сжатая память

Чтобы понять, какой конкретно драйвер или модуль вызывает высокую загрузку процессора можно воспользоваться бесплатной утилитой Process Explorer. Скачайте и запустите ее с правами администратора.

В списке запушенных процессов найдите процесс System, щелкните по нему ПКМ и откройте его свойства Properties.

Процессом System (Ntoskrnl.exe) сильно грузит CPU в Windows. Что делать?

Перейдите на вкладку Threads. Отсортируйте список модулей, загруженных ядром по степени использования процессора (столбец CPU). В строке Start Address указано имя функции или драйвера, вызывающего высокую загрузку (скриншот не с проблемной системы).

Процессом System (Ntoskrnl.exe) сильно грузит CPU в Windows. Что делать?

Также, чтобы выявить драйвер, который вызывает высокую загрузку CPU, можно воспользоваться бесплатной утилитой Microsoft — kernrate.exe (Kernrate Viewer). Утилита входит в состав WDK (Windows Device Kit). После установки WDK, найти утилиту можно в каталоге …\Tools\Other\amd64.

Запустите утилиту kernrate.exe без аргументов и подождите некоторое время, пока идет сбор данных (10-15 минут), после чего прервите работу утилиты сочетанием клавиш Ctrl-C: Посмотрите на список модулей в секции Result for Kernel Mode.

Процессом System (Ntoskrnl.exe) сильно грузит CPU в Windows. Что делать?

Как вы видите, в нашем примере высокую нагрузку на CPU вызывает модуль b57nd60x. С помощью Google или утилиты sigcheck (смотри пример) можно определить, что проблему вызывает драйвер сетевой карты Broadcom NetXtream Gigabit Ethernet NDIS6.0 Driver.

Кроме того, проанализировать использование CPU при загрузки системы можно с помощью Windows Performance Toolkit (WPT). Нужно установить компонент и запустить сбор данных с помощью графической консоли Windows Perfomance Recorder (First level triangle + CPU usage -> Start)

Процессом System (Ntoskrnl.exe) сильно грузит CPU в Windows. Что делать?

Либо так:

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

Совет. Этот способ удобно использовать, если после загрузки система напрочь зависает и работать в ней просто невозможно. Скорее всего вам также будет полезна статья с методикой диагностики долгой загрузки Windows.
Полученный файл нужно сохранить и открыть в WPA. Разверните стек процесса System. В этом примере видно, что высокую нагрузку на процессор вызывает драйвер
athrx.sys (Wi-Fi адаптер Atheros Wireless Network Adapter).


Итак, проблемный драйвер обнаружен. Что делать дальше?
Итак, проблемный драйвер обнаружен. Что делать дальше?
Итак, проблемный драйвер обнаружен. Что делать дальше?

Для решения проблемы нужно попробовать установить более новую (или старую) версию драйвера или же совсем отключить оборудование, если проблема наблюдается со всеми версиями драйвера. Обновленный драйвер можно дополнительно проверить стресс-тестом с помощью Driver Verifier.