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

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

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

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

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

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

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

Edit2 (для usr)

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

0 ответов

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

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

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

Другие вопросы по тегам