Как я могу интерпретировать RtlUsrThreadStart в perfview?
Глядя на снимок из стеков ЦП в PerfView, я не уверен, как интерпретировать первую запись.
Я не могу безопасно исключить запись, потому что каждый поток в CallTree начинается с этого кадра. Но что меня беспокоит, так это то, что кадр занимает исключительные 181 секунду и как работать с кадром.
Должен ли я безопасно игнорировать это в процессорных стеках?
Что он делает внутренне, что требует времени (поскольку он отображается с таким большим количеством эксклюзивного времени)?
редактировать
Если я выберу "нет группы" (так пустую строку) в части GroupPats, то ntdll!RtlUserThreadStart
кадр в конце (он "занимает" почти без процессорного времени). Существует также множество низкоуровневых вызовов функций, которые я не могу истолковать легко, потому что они вызываются изнутри, но в целом это намного лучше..
Edit2 (для usr)
Я шотнул сегодня сессию PerfView. Это серверное приложение, поэтому потоков много. Таким образом, представление подходит для отдельных потоков, но не очень ценно для моей цели. Я хотел видеть в основном представление по имени, но я совершенно не уверен, что там означает RtlUserThreadStart.
0 ответов
Потоки Windows начинаются с функции оболочки запуска общего потока: RtlUserThreadStart в Ntdll.dll
Методы, вызываемые RtlUserThreadStart, по умолчанию объединяются, потому что GroupPats установлен на "Только мое приложение" при запуске PerfView. Измените это на "без группировки" или "групповые модули" (как описано в файле справки):
Кроме того, если вы видите вопросительные знаки внутри имени метода, вы можете найти символы, чтобы имена стали понятными.