Как я могу интерпретировать RtlUsrThreadStart в perfview?

Глядя на sshot из стеков ЦП в PerfView, я не уверен, как интерпретировать первую запись.

введите здесь описание изображения

Я не могу безопасно исключить запись, потому что каждый поток в CallTree начинается с этого кадра. Но что меня беспокоит, так это то, почему кадр занимает исключительно 181 секунду и как работать с тремя кадрами.

Должен ли я безопасно игнорировать его в стеках ЦП?

Что он делает внутри, что требует времени (поскольку он отображается с таким большим количеством эксклюзивного времени)?

Редактировать

Если я выберу «без группы» (то есть пустую строку) в части GroupPats, то кадр ntdll!RtlUserThreadStart будет в конце (он «почти не требует» процессорного времени). Существует также много низкоуровневых вызовов функций, которые я не могу легко интерпретировать, потому что они вызываются внутри, но в целом это намного лучше.

Edit2 (для США)

Я снял сегодня сеанс PerfView. Это серверное приложение, поэтому потоков много. Таким образом, представление подходит для отдельных потоков, но не очень ценно для моей цели. Я хотел увидеть в основном представление по имени, но я совершенно не уверен, что означает RtlUserThreadStart.

введите здесь описание изображения


person stej    schedule 08.04.2016    source источник
comment
Я нахожу Perfview слишком запутанным. Я использую его только для отображения данных в таблице событий. Для анализа ЦП используйте WPA: channel9.msdn. com/Shows/Defrag-Tools/   -  person magicandre1981    schedule 09.04.2016
comment
Хорошо, спасибо. Во всяком случае, я надеялся, что кто-нибудь укажет мне правильное направление. К сожалению, perfview выглядит интересным инструментом, но это почти одно шоу.   -  person stej    schedule 21.04.2016
comment
Я использую Perfview только для поиска событий, здесь он гораздо лучше по сравнению с WPA. Для анализа проблем с диском/памятью процессора я всегда использую WPA.   -  person magicandre1981    schedule 21.04.2016
comment
@stej Вы пытались выбрать группу в раскрывающемся списке GroupPats? Является ли использование процессора RtlUserThreadStart все еще таким высоким?   -  person Sebastian    schedule 12.06.2016
comment
@lowleveldesign добавил комментарий. Стало лучше, хотя все еще не идеально. Но я не могу этого ожидать, наверное :)   -  person stej    schedule 13.06.2016
comment
Являются ли ваши стеки действительными и не сломанными? Перейдите к дереву вызовов, чтобы убедиться, что оно разумно. Там вы должны обнаружить, что первый кадр почти не занимает времени.   -  person usr    schedule 13.06.2016
comment
@usr CallTree в порядке, если я смотрю по потокам, но потоков много, поэтому этот вид не так ценен. Я добавлю sshot к вопросу.   -  person stej    schedule 14.06.2016
comment
Я обычно добавляю Thread ( в Grouppats. Мне никогда не приходилось просматривать информацию о каждом потоке при профилировании.   -  person usr    schedule 14.06.2016
comment
@usr, если указать [ASP.NET Just My App] \Temporary ASP.NET Files\->;!dynamicClass.S->;!=>OTHER;Thread (=>TR, то потоки не группируются, они отображаются как TR << Thread (somenum) CPU=timems >> и т. д. И все еще есть одна строка на поток. Любой пример?   -  person stej    schedule 15.06.2016
comment
Без понятия, это должно сработать. Я не эксперт PerfView. Может быть, вы забыли нажать Enter, чтобы обновить вид?! Ставь вилку :)   -  person usr    schedule 15.06.2016


Ответы (1)


Потоки Windows начинаются с общей функции-оболочки запуска потока: RtlUserThreadStart в Ntdll.dll.

Методы, вызываемые RtlUserThreadStart, по умолчанию объединяются, поскольку для GroupPats установлено значение «Только мое приложение» при запуске PerfView. Измените это на «без группировки» или «групповые модули» (как указано в файле справки):

введите здесь описание изображения

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

введите здесь описание изображения

person buckley    schedule 06.09.2019