如何解读perfview中的RtlUsrThreadStart?

时间:2016-04-08 07:49:38

标签: .net performance etw perfview

看看PerfView中CPU堆栈的sshot,我不知道如何解释第一条记录。

enter image description here

我无法安全地排除记录,因为CallTree中的每个线程都以此帧开头。但令我困扰的是为什么框架需要独占181秒以及如何使用三维框架。

我应该在CPU堆栈中安全地忽略它吗?

它在内部做了什么花费了时间(因为它显示了如此多的专属时间)?

修改

如果我选择"没有组" (所以空字符串)在GroupPats部分中,然后ntdll!RtlUserThreadStart帧在结尾(它"需要"几乎没有CPU时间)。还有很多低级别的函数调用我无法解释,因为它们是内部调用的,但总的来说它更好......

Edit2(对于usr)

我今天在PerfView会话上吵了一下。它是服务器应用程序,所以有很多线程。因此单个线程的视图是可以的,但对我的目的来说不是很有价值。我希望看到基本上按名称视图,但我不太确定RtlUserThreadStart的含义是什么..

enter image description here

1 个答案:

答案 0 :(得分:0)

Windows线程从公共线程启动包装函数开始:Ntdll.dll中的RtlUserThreadStart

RtlUserThreadStart调用的方法默认情况下会汇总,因为在启动PerfView时,GroupPats设置为“ Just My App”。将其更改为“无分组”或“分组模块”(如帮助文件中所述):

enter image description here

此外,如果在方法名称中看到问号,则可以查找符号,以使名称变得有意义。

enter image description here