1) Скачайте
PerfView с сайта MS
2) Запустите PerfView (см также
https://channel9.msdn.com/Series/PerfView-Tutorial)
3) File \ Set Symbol Path, Use MS Symbol server
4) Collect \ Collect
5) Circullar MB = 20000
6) Advanced \ No V.3 Symbols
Дальше запускаете процесс который вызывает использование CPU, если он работает, то просто жмете Start collection и ждете минуты 2.
Дальше Stop collection
Подождать пока закончит обработку трейса можо открывать, выбирать batch.exe и анализировать top down или bottom up (там надо еще группировку настроить под интересную задачу)
Например я сделал такую mpengine!{%}->mpe.$1;!=>Other
Так как у меня процессор жрал Defender (это значит, что сгруппировать все функции mpengine и токи входа во все остальное в группу Other ) на картинке видно, что ~20% процессора выедает движок регулярных выражений
Можно сделать mpengine!{%}->mpe.$1;!->Other - тогда "прочее" будет сгруппировано в один пункт и его можно размазать по тому, кто его потребляет (Правая кнопка и Fold \ Fold item) на картинке видно, что немного увеличился процент regex за счет того что в него вошло "прочее" которое из него вызывалось