Windows 8.1 Системный процесс сильно загружает процессор из-за ntoskrnl.exe! Поток KeRegisterBugCheckReasonCallback

615
AronVanAmmers

На ноутбуке Lenovo Yoga 2 Pro, 8 ГБ оперативной памяти, Intel Core i7, под управлением Windows 8.1 я вижу следующее. В ситуациях высокой загрузки системы (высокая загрузка ЦП / памяти) Systemпроцесс начинает использовать высокую ЦП в дополнение к ЦП, уже используемому другими процессами. Это происходило как минимум год.

Примеры ситуаций, когда это происходит:

  • Многие вкладки Google Chrome открываются с инструментами разработчика, открытыми для некоторых из них
  • Виртуальная машина Virtualbox с оперативной памятью 2-3 ГБ, выполняющая некоторые тяжелые операции поверх обычных браузеров, фоновых приложений
  • Java-приложение, использующее 1 ГБ ОЗУ, 3 ГБ виртуальной памяти с использованием 100% одного ядра ЦП поверх обычных браузеров, фоновые приложения

Ирония ситуации в том, что когда система уже находится под большой нагрузкой, Systemиспользование большего количества процессоров вызывает еще большее замедление.

Используя Process Explorer, я смог определить поток внутри, Systemкоторый использует высокий процессор ntoskrnl.exe!KeRegisterBugCheckReasonCallback. Это функция, которая должна вызываться драйверами, когда происходит BSOD ( см. Этот вопрос ). Однако в моем случае не происходит BSOD.

Эта проблема возникает даже при отсутствии подключенных USB-устройств, поэтому ни одно из них не может быть причиной.

Я выполнил трассировку WPA, когда возникла проблема, как описано в этом вопросе, снимок экрана ниже. Это не говорит мне намного больше, чем ресурсы, используемые в ntoskrnl.exeближайшем водителе fltmgr.sys. Это мне не очень помогает, потому что это не конкретный драйвер, который я могу удалить или обновить.

Любые указатели для дальнейшей отладки этого приветствуются!

Process Explorer для Systemпроцесса во время возникновения проблемы:

ntoskrnl.exe!KeRegisterBugCheckReasonCallback thread within System process

Process Explorer showing System CPU history

Трассировка WPA:

WPA trace WPA trace digging down

0
вам нужно [загрузить символы отладки] (https://msdn.microsoft.com/en-us/windows/hardware/commercialize/test/wpt/loading-symbols), я объяснил это в своем ответе. Без символов вы не видите названия функций magicandre1981 6 лет назад 1
поскольку вы используете Chrome, это может быть проблемой ** ntoskrnl.exe! MiZeroWorkerPages **, здесь отключение ускорения HW в параметрах Chrome может исправить это. magicandre1981 6 лет назад 0
_ "[...] KeRegisterBugCheckReasonCallback. Это функция, которая должна вызываться драйверами, когда происходит BSOD" _ Это не правильно. Эта функция вызывается драйверами (и другим кодом режима ядра) _в случае_ происходит BSOD. Если происходит BSOD, то механизм BSOD (KeBugCheck и его друзья) будет вызывать каждую зарегистрированную процедуру «обратного вызова», чтобы драйверы, которые их зарегистрировали, могли добавить свою личную информацию в файл дампа. Это все еще проблема в том, что никто не должен повторять это снова и снова. Драйверы обычно вызывают его, когда они загружены, то есть один раз за загрузку. Jamie Hanrahan 6 лет назад 1
Но ... поскольку у вас также нет символов для Process Explorer, _все имя подпрограммы вообще_ в отображении потоков - это красная сельдь! Надлежащим отображением функции потока может быть, например, ntoskrnl.exe! ExpWorkerThread, без смещения (после знака +, например, «+ 0x80C», указывается смещение). Никто не собирается создавать поток и указывать начальный адрес, например, ExpWorkerThread + 0x80C! Это всегда будет символ без смещения вообще. Если у вас нет символов, вы можете доверять имени модуля, но не имени процедуры. Jamie Hanrahan 6 лет назад 0
@ magicandre1981 спасибо, я пропустил эту критическую часть твоего поста. После нескольких попыток символы в WPA загрузились, и я смог определить проблему со старым драйвером из пакета программного обеспечения, который я уже удалил. Подтвердили дубликат. Любой, кто ищет `ntoskrnl.exe! KeRegisterBugCheckReasonCallback`, должен найти его по этому вопросу. AronVanAmmers 6 лет назад 0
Также спасибо @JamieHanrahan за вашу заметку, я узнал что-то новое! AronVanAmmers 6 лет назад 0
Пожалуйста, поделитесь ETL (сжатым как 7z через ссылку на OneDrive), я хочу взглянуть на него самостоятельно и добавить результат к моему ответу в дубликате. magicandre1981 6 лет назад 0
@ magicandre1981 У меня больше нет ETL :(. Удалил его, когда решил. А теперь я больше не могу его воспроизвести. Извините! AronVanAmmers 6 лет назад 0
хорошо, если вы видите это снова, запишите новый след и поделитесь им. magicandre1981 6 лет назад 0

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

Похожие вопросы