Как проанализировать чрезмерное использование процессора в режиме ядра Windows?
Моя машина с Windows XP недавно начала зависать на мне при каждой нечетной перезагрузке после нескольких минут использования (разные программы / никакой дополнительной загрузки вообще не запускалось).
Обновление: теперь мне удалось получить немного больше информации с Process Explorer. Это двухъядерный процессор, и использование ядра на 100% происходит только на одном ядре. В списке процессов показаны DPC - отложенные вызовы процедур на 50% (это 100% на одно ядро). Итак, вопрос сейчас: ** Что такое ЦОД и как их исправить?
Следующее обновление: OKIES ... с помощью этого и того, что я смог запустить xperf на моей Windows XP, и примеры дампов, которые я взял, прекрасно отображались на моем ноутбуке с Win7. Да, вам нужен компьютер с Win7/Vista для просмотра дампов, сделанных в Windows XP. Тем не менее, теперь я столкнулся со следующей проблемой, я могу включить трассировку xperf, xperf -on Latency
и проблема теперь повторялась, когда трассировка xperf была включена, но как только мой DPC переходит на 100%, Windows не запускает никаких новых процессов (или их запуск никогда не заканчивается) (например, открытое окно cmd остается отзывчивым, но каждый exe который ты пытаешься тоже вызвать просто зависает (dir
работает просто отлично, потому что команда cmd) - я могу только предположить, что CreateProcess
зависает с какой-то частью ядра). Теперь неспособность запустить какой-либо новый процесс означает, что я не могу запустить xperf -d dumpfile.etl
, потому что, когда я ввожу это в окно cmd, оно просто зависает.
Кажется, мне здесь не повезло. Я бы скорее выкинул всю оснастку, чем начал вручную отключать драйверы...:-)
Любые другие идеи приветствуются!
То есть, хотя теоретически Windows оставалась отзывчивой (например, курсор мыши двигался нормально, и я мог щелкнуть, и щелчок был в итоге распознан), на действия, предпринятые пользователем, реагировали только через несколько минут (буквально).
Пример. Нажатие клавиши Num-Lock на клавиатуре обычно приводит к переключению индикатора Num-Lock на клавиатуре. Это также относится и к моей полумерзшей машине, но только через минуту или две.
Однажды мне удалось запустить Process Explorer, и через несколько минут график системной информации четко показал 100% загрузку ЦП на красной линии (режим ядра), а зеленая линия осталась на нуле. В этом состоянии, хотя график все еще обновлялся на экране, машиной больше нельзя было управлять. (Ну, если вы не готовы подождать несколько минут после каждого клика.)
Итак, теперь я задаюсь вопросом, в чем может быть проблема, поскольку я не устанавливал ничего нового на эту машину в течение нескольких недель, определенно не до того, как увидел такое поведение. (Перезагрузка помогает иногда, иногда мне требуется вторая или третья перезагрузка, прежде чем машина станет пригодной для использования в течение более длительного периода времени.)
Теперь, как я могу узнать, что на самом деле вызывает чрезмерное использование режима ядра?
Примечание: также опубликовано на форумах sysinternals.
1 ответ
Вы можете узнать, какая процедура DPC вызывает зависание, с помощью такого инструмента, как LatencyMon ( http://www.resplendence.com/latencymon). Просто найдите процедуру DPC, занимающую самое большое общее время.
Моя проблема заключалась в том, что использование процессора в режиме ядра составляло более 90% без запущенных приложений. Машина очень старая, имеет всего 2 ГБ оперативной памяти и работает под управлением Windows XP, которая последний раз обновлялась в 2013 году. Проверка задержки DPC изначально показала, что все в порядке, и я должен иметь возможность запускать непрерывную потоковую передачу, что на самом деле невозможно при 90% использовании процессора. Однако через несколько минут программа проверки задержки DPC изменила свою оценку и заявила, что "драйвер" ведет себя плохо, и предоставила рекомендацию использовать диспетчер устройств, чтобы отключить как можно больше устройств, чтобы увидеть, исчезнет ли проблема.
Я отключил несколько устройств и в конце концов обнаружил, что если я отключу все устройства USB, моя проблема полностью исчезнет - 2% использования процессора в режиме ожидания. Я предполагаю, что этот метод также работал бы, если бы некоторые другие устройства не работали, поэтому, если у вас есть аналогичная проблема, начните с этого.