本文提供有关并发可视化工具的“线程”视图中的报表的信息。
阻塞时间报告分析
配置文件报告为特定于每个阻塞类别(例如“I/O”或“同步”)的调用堆栈提供聚合阻塞时间数据。 抢占报告列出了那些曾抢占当前进程的进程,并提供了抢占实例的数量。 若要生成阻塞分析报告,该工具会收集阻塞 API 调用,并将其整理成一个调用栈树。 这些报表中显示的数据因当前时间范围、隐藏线程和可能应用的以下两个筛选器而异:
如果选择了“仅我的代码”,则仅显示具有用户代码的堆栈帧,以及低于用户代码的一个级别。
如果设置了降噪值,则归并堆栈中低于指定频率的将被跳过。
展开任何调用树条目,以找到花费阻塞时间的代码行。 若要查找条目的源行,请在其快捷菜单上选择 “查看源”。 若要找到调用此代码的代码行,请在快捷菜单上选择 “查看呼叫网站”。 如果只有一个呼叫站点可用,该命令将连接到呼叫站点的突出显示代码行。 如果有多个呼叫网站可用,该命令将打开一个对话框,在其中可以选择一个条目,然后选择 “转到源 ”按钮来查找突出显示的呼叫网站。 通常,查看具有最多实例、最长时间或两者兼具的调用点的源代码最为有用。
阻塞时间报表列
下表显示了每个阻塞时间报表的列。
| 列名称 | Description |
|---|---|
| 名称 | 调用堆栈的每个级别的函数的名称。 |
| 实例 | 可见时段内阻塞调用的实例数。 |
| 包括的阻塞时间 | 所有滚动到此级别的调用堆栈树的堆栈所花费的总阻塞时间。 包容数是此函数的独占阻塞时间和其所有子节点的独占阻塞时间之和。 |
| 专有阻塞时间 | 在此函数位于调用堆栈最低级别期间所花费的总阻塞时间。 具有高独占阻塞时间的唯一调用堆栈条目可能是感兴趣的函数。 |
| API/延迟类别 | 仅针对调用堆栈最低级别的函数显示。 如果识别阻止调用的签名,则会提供阻止 API 的名称。 如果无法识别签名,则提供内核报告的信息。 |
| 详细信息 | 函数的完全限定名称。 这包括行计数(如果可用)。 |
Synchronization
同步报告显示负责同步阻塞段的调用,以及每个调用堆栈的累计阻塞时间。 有关详细信息,请参阅 同步时间。
睡眠
睡眠报告显示哪些调用导致了归因于睡眠时间的阻塞时间,并汇总了每个调用堆栈的阻塞总时间。 有关详细信息,请参阅 睡眠时间。
I/O
I/O 报告显示导致 I/O 阻塞段的调用,以及每个调用堆栈的总阻塞时间。 有关详细信息,请参阅 I/O 时间(线程视图)。
内存管理
内存管理报告显示导致内存管理操作阻塞的段的调用及每个调用堆栈的整体阻塞时间。 有关详细信息,请参阅 内存管理时间。
抢占
抢占报告列出了抢占当前进程的进程,并包括这些进程的出现次数。 可以展开每个进程以查看当前进程中替换线程的特定线程,并查看每个线程的抢占实例细分。 这个阻止报告的可操作性低于其他报表,因为通常是操作系统对你的进程施加抢占,而不是代码中的问题导致的。 有关详细信息,请参阅 抢占时间。
UI 处理
UI 处理报告显示负责阻止 UI 处理块上的阻塞段的调用,以及每个调用堆栈的聚合阻塞时间。 有关详细信息,请参阅 UI 处理时间。
磁盘操作报告 (线程视图)
磁盘操作报告显示磁盘通道中的磁盘 I/O操作。
对于当前可见时间窗口中正在被分析的进程,每次磁盘访问都会报告以下信息:
执行磁盘访问的进程的名称和 PID
访问磁盘的线程的 ID
已访问的文件的名称
每个文件的读取次数
读取的字节数
读取延迟(以毫秒为单位)
写入数
写入的字节数
写入延迟(以毫秒为单位)
执行概要报告
执行剖析报告是传统的采样剖析。 在线程在逻辑核心上运行期间,每毫秒大约都会采集一次样本,并发分析器通过汇总累积的样本堆栈集生成一个典型的调用树。 此表中的数据可能受当前时间范围和隐藏线程的影响,以及可能应用的这些筛选器:
如果选择了“仅我的代码”,则仅显示具有用户代码的堆栈帧以及低于用户代码的一个级别。
如果设置了降噪值,则会将频率低于指定值的整理堆栈从报告中筛选出去。
下表显示了报表中的列。
| 列 | Description |
|---|---|
| Name | 调用堆栈的每个级别的函数的名称。 |
| 包容性样本 | 汇总到调用堆栈树此级别的所有堆栈所收集的样本总数。 此函数的总计数是该函数的独享样本和所有子节点的总计数器的总和。 |
| 独家样本 | 调用此函数时位于调用堆栈最低级别的收集样本总数。 |
| % 包容性 | 包容性样本列显示的总样本百分比。 百分比舍入为两个小数位数。 |
| % 独占 | 独占样本列中显示的总样本百分比。 百分比舍入为两位小数。 |
| 详细信息 | 函数的完全限定名称。 这包括行计数(如果可用)。 |
可以在 执行时间(线程视图)视图中 查看此报表表。
标记报表
“标记报告”列出了在显示的时间范围内的标记。 平移或缩放或隐藏通道可能会导致标记出现或消失。 报告包含有关每个标记的此信息:
开始的时间,相对于跟踪的开始时间。
持续时间。 标志和消息的持续时间为零,因为它们表示即时。
生成它的线程的 ID。
生成它的 Windows 事件跟踪 (ETW) 提供程序。
它被写入的标记系列。
它所属的事件类别。
其重要性级别。
其类型(范围、标志或消息)。
它所表示内容的高级说明
选择“ 导出 ”按钮,将“标记报表”保存为 CSV 文件。 可以将 CSV 文件中的数据与其他应用或工具一起使用。
注释
标记报表可以显示 1,000 个标记。 若要查看所有标记,请将完整报表导出到 CSV 文件。
每个线程摘要报告
此条形图显示当前可见时间范围内每个未隐藏线程在每个活动类别中花费的时间比例。 “执行”表示线程正在执行;所有其他类别都表示线程正在等待某些内容。