Высокая загрузка ЦП от ntoskrnl.exe во время простоя на GetStackLimits

1590
Martin Jensen

У меня странная ошибка в Windows 10.

После 5 минут простоя, мой процессор выходит из строя. Я использовал Win Performance Analyzer и обнаружил, что это происходит внутри ntoskrnl.exe в потоке GetStackLimits.

Я обновил все драйверы и все работает. Все незанятые задачи отключены и удалены. Я также запустил sfc / scannow и chkdsk без ошибок.

Как я должен найти ошибку, когда она находится внутри ядра ?!

3

3 ответа на вопрос

2
Martin Jensen

Я нашел ответ на свою проблему давным-давно, но забыл добавить его здесь.

Это была функциональность обслуживания в Windows 10, называемая:

RunFullMemoryDiagnostic

Найдено под:

\ Microsoft \ Windows \ MemoryDiagnostic

После отключения этого мои задачи по обслуживанию могут закончиться вместо того, чтобы просто использовать CPU для этой задачи.

В последнее время у меня нет проблем с памятью или BSOD, но у меня есть 32 ГБ памяти, что может сыграть роль в завершении этой задачи.

Я запускал его в течение нескольких часов, но он так и не закончился, поэтому мне намного лучше без него.

Спасибо за помощь, хотя!

0
Dan Randolph

Мартин, в моем случае это было вызвано включением Hyper-V (до обновления с Windows 8.1 до 10) и, возможно, использованием мостовых сетевых подключений, которые были несовместимы с контроллером Realtek PCIe GBE Family (Ethernet), который поставлялся с моей настольной системой, что изначально на нем была установлена ​​Windows 8.0. Единственная причина, по которой я использовал Hyper-V, была для разработки Windows Phone 8. Я не использовал это в течение многих лет, но сеть работала по мостовым соединениям, и я никогда не мог заставить это работать без моста. Я ничего не знаю об их настройке. Установщик Visual Studio выполнил все настройки Hyper-V и виртуальной сети.

Чтобы устранить эту проблему, я просто удалил Hyper-V в диалоговом окне панели управления «Включение или отключение компонентов Windows», и это автоматически удалило мостовые соединения. Затем я потратил пару часов, чтобы снова установить прямое соединение с Ethernet. Диагностика не помогла с этим. В конце концов я прибег к старой уловке замены порта подключения, используемого на маршрутизаторе, на другой (из четырех), и Windows наконец-то снова увидела другие компьютеры в моей домашней сети.

Чтобы помочь диагностировать проблему, я использовал настройку MagicAndre1981 xperf cmd для генерации etl. (См. Установка WPT .) Затем я открыл этот файл в «Анализаторе производительности Windows» и добавил столбец «Стек», как в примере с MagicAndre1981. Имена модулей в корневом каталоге системы дали мне понять, что это может быть Hyper-V, как я и подозревал все это время.

Я думаю, что вы правы в том, что виновным было устройство RealTek GBE ethernet, и я никогда не думал о влиянии Hyper-V. Я тоже использую его, но для Virtualbox, но если он делает мою машину настолько нестабильной, я бы лучше выключил ее. Однако я вернулся на Win7 на небольшую неделю, и у меня нет проблем вообще. Был также BSOD на Win10, что заставило меня отказаться от него. Я пытался использовать Xperf с Symbols и все такое, но он просто копается в ядре. Я все равно приму это как ответ, так как это самое сложное решение. Martin Jensen 9 лет назад 0
0
Dvj

К сожалению, я не знаю, останавливается ли это поведение, когда исчезают бездействующие условия, но для mpengine (аудио-видео от Microsoft) вполне нормально запускать инструмент MRT и сканировать как сумасшедший, что приводит к высокой загрузке ЦП в течение некоторого времени (что инструмент должен запустить сканирование) после небольшого периода простоя, когда пользователь вошел в систему.

Если загрузка процессора вернется к нормальному состоянию после того, как вы сделаете что-то вроде перемещения мыши или прикосновения к клавише, это, вероятно, происходит.

Я считаю, что это проще всего увидеть с помощью Process Explorer.

Если активность остается высокой, когда прекращаются бездействующие условия, это что-то другое.