Как проанализировать чрезмерное использование процессора в режиме ядра Windows?

6920
Martin

Моя машина с Windows XP недавно начала зависать на мне при каждой нечетной перезагрузке после нескольких минут использования (разные программы / никакой дополнительной загрузки вообще не запускается).


Обновление: мне теперь удалось получить немного больше деталей с Process Explorer. Это двухъядерный процессор, и использование ядра на 100% только на одном ядре. В списке процессов показаны DPC - отложенные вызовы процедур на 50% (это 100% на одно ядро). Итак, вопрос сейчас: ** Что такое DPC и как я могу их исправить?


Следующее обновление : OKIES ... с помощью этого и того, что я смог запустить xperf на моей Windows XP, и примеры дампов, которые я взял, прекрасно отображались на моем ноутбуке с Win7. Да, вам нужен компьютер с Win7 / Vista для просмотра дампов, сделанных в Windows XP. Однако теперь я сталкиваюсь со следующей проблемой: я могу включить трассировку xperf, xperf -on Latencyи теперь эта проблема возникает снова, когда трассировка xperf была включена, но как только мой DPC достигает 100%, Windows не запускает никаких новых процессов (или их запуск никогда не заканчивается) (например, открытое окно cmd остается отзывчивым, но каждый исполняемый файл, который вы пытаетесь вызвать, просто зависает (dirработает просто отлично, потому что это команда cmd) - я могу только предположить, что CreateProcessзависает с какой-то частью ядра). Теперь неспособность запустить какой-либо новый процесс означает, что я не могу запустить xperf -d dumpfile.etl, потому что, когда я ввожу его в окно cmd, он просто зависает .

Кажется, мне здесь не повезло. Я бы лучше выкинул всю установку, чем начал вручную отключать драйверы ... :-)

Любые другие идеи приветствуются!


То есть, хотя теоретически Windows оставалась отзывчивой (например, курсор мыши двигался нормально, и я мог щелкнуть, и щелчок был в итоге распознан), на действия, предпринятые пользователем, реагировали только через минуты (буквально).

Пример. Нажатие клавиши Num-Lock на клавиатуре обычно приводит к переключению индикатора Num-Lock на клавиатуре. Это также относится и к моей полумерзшей машине, но только через минуту или две.

Однажды мне удалось запустить Process Explorer, и через несколько минут график системной информации четко показал 100% загрузку ЦП на красной линии (режим ядра), а зеленая линия осталась на нуле. В этом состоянии, хотя график все еще обновлялся на экране, машиной больше нельзя было управлять. (Ну, если вы не готовы подождать несколько минут после каждого клика.)

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

Теперь, как я могу узнать, что на самом деле вызывает чрезмерное использование режима ядра?


Примечание: также опубликовано это на форумах sysinternals .

8
Одним из способов будет использование процесса ликвидации. В XP запустите программу MSCONFIG и перейдите на вкладку STARTUP и отключите все, затем перезагрузите компьютер и посмотрите, исправит ли это. Если это не так, попробуйте такую ​​программу, как AUTORUNS или HijackThis, и станьте более агрессивными в отношении устранения. Как только вы вернетесь к операциям, включите их по одному. 90% дерьма, которое запускается при запуске, не является обязательным, остальные 10% - это хлам :-) Psycogeek 12 лет назад 0
@Psycogeek - высоко ценится. Я бы предпочел не делать этого, так как это заняло бы у меня дни, которых у меня нет :-) Martin 12 лет назад 0
ах минуты, чтобы отключить запуск мусора, это дни, чтобы отключить драйверы устройств :-), когда я пытаюсь отточить вашу проблему, используя весь набор подсказок, это на самом деле звучит больше как что-то типа вируса. но может легко быть какое-то устройство, которое не отвечает. Есть какие-нибудь вещи, застрявшие снаружи, которые вы можете временно удалить? Вы провели проверку дисков, как, скажем, SMART-тест дисков. чтобы увидеть, есть ли у вас какие-либо подсказки от этого? Psycogeek 12 лет назад 0
Хорошо, теперь (dpc) мне придется проверить материал здесь: http://superuser.com/q/202254/50211 и посмотреть, смогу ли я докопаться до сути. Martin 12 лет назад 0
Каков был результат? stej 8 лет назад 0
@stej - это 5 лет. :-) Я даже не помню, исправил ли я это когда-нибудь. Примерно в это же время мне подходит покупка новой установки - я смутно помню либо (а) получение новой карты gfx для старой установки, либо (б) просто очистку ее и переустановку Windows XP, которая решила проблему. Но, честно говоря, моя память действительно дрянная, так что это могло быть что-то совсем другое. Martin 8 лет назад 0
Я просто пытался спросить, мне было любопытно;) Во всяком случае, это выглядит как счастливый конец, даже если вы не нашли ответ ... stej 8 лет назад 0

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

2
Zero3

Вы можете узнать, какая процедура DPC вызывает зависание, с помощью такого инструмента, как LatencyMon ( http://www.resplendence.com/latencymon ). Просто посмотрите на процедуру DPC, занимающую наибольшее время.

Очевидно, что LatencyMon не работает в Windows XP. И вопрос о проблеме производительности в системе Windows XP. Edward 10 лет назад 0
Я не знал об этом - спасибо. Мое предложение все еще то же самое - просто используйте другую программу вместо этого. Один из примеров: DPC Latency Checker (http://www.thesycon.de/deu/latency_check.shtml). Zero3 10 лет назад 0
На самом деле, функции LatencyMon гораздо лучше / проще в использовании для конечных пользователей, чем Latency Checker. Система анализа LatencyMon и обеспечивает очень подробную информацию, до уровня, который драйвер потребляет больше всего ресурсов, которые оказывают худшее влияние на производительность системы. С другой стороны, Latency Checker просто отображает график, который дает вам только самую основную информацию. Это ваша система вне задержки DPC или нет. Дальнейшие работы все по вашему. У меня проблемы с поиском аналогичного / похожего инструмента для XP, который работает так же, как LatencyMon. Edward 10 лет назад 0