Как напечатать стек выполнения потоков, в то время как они потребляют много ресурсов процессора? - PullRequest
1 голос
/ 24 февраля 2012

Кто-нибудь знает, как выполнить следующую задачу.

Приложение иногда потребляет много ЦП, ProcessExplorer (procxp.exe) периодически показывает высокую загрузку ядра (~ 60-80).Я вижу в procxp, что некоторые потоки делают что-то, что отнимает много времени у ядра.В этот момент я хотел бы напечатать стек выполнения этих занятых потоков.

Существует ли какой-либо инструмент мониторинга, который может отображать такую ​​информацию или какой-либо сценарий WinDbg и т. Д.?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Я бы предложил использовать ProcDump .

Команда типа:

procdump -c 60 -s 3 -ma -n 5 -x Your.exe your.dmp

, который займет полный дамп памяти, когда процесс превысит 60% загрузки процессора в течение 3 последовательных секунд, и сделает это до 5 раз.Таким образом, вы можете сравнить различные дампы и посмотреть, где процесс тратит свое время.

1 голос
/ 24 февраля 2012

Одна из возможностей - использовать ProcDump от sysinternals для создания дампов, когда Загрузка процессора превышает указанный вами предел. http://technet.microsoft.com/en-us/sysinternals/dd996900
Или вы можете посмотреть в справке по windbg «Отслеживание процессорного борова»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...