查看线程

了解 GPUView 的线程执行显示对于了解线程处于活动状态以及执行视频特定功能的位置至关重要。

下图是仅显示跨两个进程的活动线程(系统进程和 GPUView 空闲进程)的几分之一毫秒的屏幕截图。 在此视图中,显示了三个线程。

包含活动线程的 GPUView 空闲进程的屏幕截图。

对于每个线程,名称位于左侧,右侧的灰色矩形区域是显示执行间隔的位置。 整个区域称为“线程区域”。

线程名

显示具有 ID、模块和函数的线程名称的屏幕截图。

在上图的红色椭圆中,线程 ID 显示在括号中,后跟生成线程的模块和函数。 在这种情况下,由 dxgmms1.sys 创建的线程 432 偏移0x37DC0。 如果加载符号,GPUView 会显示符号名称,而不是偏移数。

线程执行区域

GPUView 中线程执行区域的屏幕截图。

名称右侧的灰色区域“线程执行区域”表示线程可以运行的时间。 在这种情况下,线程在此时间段内确实运行了两次。

线程执行间隔

GPUView 中线程执行间隔的屏幕截图。

在这种情况下,白色矩形表示线程实际运行时间。 此图显示了两个线程执行间隔。

详细信息文本

线程执行区域上方的详细信息文本的屏幕截图。

在“线程执行区域”正上方的右侧,提供了有关线程执行的详细信息。 第一个数字是此时间段内执行间隔数。 第二个数字(标记为 iTime)是在此线程上运行的 DPC 的时间量。 第三项是总执行间隔时间,最后一项是线程运行视区时间的百分比。

执行间隔的详细信息

显示线程执行间隔详细信息的屏幕截图。

背景色

GPUView 颜色代码执行间隔的背景色以显示处理器关系。 在上图中,空闲进程有两个线程,表示它是一个双核计算机。 一个处理器被分配为白色,另一个为亮绿色。 发生线程切换时,GPUView 会用处理器信息绘制背景,显示当系统线程运行时,它在第一个处理器上运行。

GPUView 当前显示八种唯一处理器颜色,最多支持 32 个唯一处理器。

线程优先级

每个执行间隔开始时显示的数字是线程的优先级。

硬件或 DPC 中断

硬件中断或延迟过程调用可以在任何时间点在任何线程上运行。 GPUView 在“执行间隔”中将此信息显示为交叉切线时间。 硬件中断以红色交叉线显示,DPC 以蓝色显示。

GPUView 中的硬件和 DPC 中断的屏幕截图。

在上图中,DPC 在第一个空闲核心上运行,不久之后,第二个空闲核心上发生了硬件中断。

嵌套执行分析

对于某些 API,GPUView 将显示在特定函数上花费的时间。 这称为“执行间隔中的嵌套执行”。 视频内核的很大一部分记录表示线程何时进入或离开特定例程的事件。

GPUView 中的嵌套执行分析的屏幕截图。

在上图中,最左侧的箭头指向蓝色的嵌套执行时间。 蓝色是表示视频内核代码的保留颜色。 第二个箭头指向红色的嵌套执行时间。 红色保留为视频驱动程序内核代码时间。

Stack Walk 点

执行间隔下方的 Stack Walk 点的屏幕截图。

如果为跟踪启用了堆栈浏览,GPUView 会在执行间隔下方将其显示为点。 在上图中,两个间隔有三个 Stack Walk 点。

非执行时间

如果在视区时间内创建或销毁线程,GPUView 将通过水平线显示不存在。 在下图中,视区开始时间由线程名称右侧的垂直线表示。 它与执行区域之间的红色箭头引用的水平线表示线程不存在的时间。

GPUView 中非执行时间的屏幕截图。