上下文 CPU 队列

以下放大后的屏幕截图显示了 GPU 硬件队列以及四个进程的上下文 CPU 队列。

四个进程的 GPU 硬件队列和上下文 CPU 队列的屏幕截图。

上下文 CPU 队列项与 GPU 硬件队列中的项之间的关联是 GPUView 中最基本的关系之一。 在上图中,最左边的红色箭头指向上下文 CPU 队列颜色键。 底部的红色箭头指向上下文 CPU 队列中的相应数据项,最上面的红色箭头指向 GPU 硬件队列中的 DMA 数据包,该队列来自 Dwm.exe 进程的上下文 CPU 队列。 随时可以通过查看 GPU 硬件队列中块的颜色,查看哪些应用程序 (进程) 在 GPU 上工作了。

由于 Windows 虚拟化视频硬件,因此在上下文 CPU 队列中执行的工作表示已排队到硬件的图形工作负载,但实际上并未由硬件处理。 下图可能有助于了解上下文 CPU 队列与 GPU 硬件队列之间的关系。

显示上下文 CPU 队列与 GPU 硬件队列之间的关系的关系图。

此处,应用程序在最左侧的红色箭头点为 GPU 提交的工作。 队列中已有另外两个工作项,用最左侧的浅蓝色箭头表示。 在上面查看 GPU 硬件队列时,你会看到其他一些进程在 GPU 上已关闭,直到过了很多年,你才最终看到应用程序在 GPU 硬件队列 (GPU 硬件队列) 的浅蓝色箭头中运行。 最终,突出显示的工作项 (队列数据包) 将其放入 GPU 硬件队列 (用黑色箭头) 表示,不久之后 (两个黄色箭头) 运行完成。 紧接着,应用程序终于将工作视为 (最右侧的红色箭头) 完成。 即使通过工作项 (队列数据包) 只需 1.5 毫秒即可在硬件上执行,它必须等待它在此非常繁忙的计算机上打开。 对于应用程序,从提交到完成的时间大约需要 28 毫秒。

上下文 GPU 队列的详细信息

上下文 CPU 队列的布局类似于 GPU 硬件队列的布局。

显示上下文 GPU 队列布局的屏幕截图。

颜色键

最左边的矩形显示上下文 CPU 队列中 (队列数据包) 的所有工作项的颜色键。 此颜色键有助于确定 GPU 硬件队列在何处花费时间。

上下文队列区域

灰色区域表示上下文队列区域。

上下文 CPU 队列文本

上下文队列区域上方的文本提供有关上下文中执行的工作的详细信息,以及 GPU 硬件队列中的关联工作。 第一个数字是在给定视区时间内实际在上下文 CPU 队列中运行的项计数。 (请注意,它是上下文 CPU 队列) 底部行中的项数的计数。 之后,这些工作项 (队列数据包) 在 GPU 硬件队列中执行的时间量以及视区的相关百分比。 下面是上下文 CPU 队列项的相同计算。

上下文 CPU 队列项

上下文 CPU 队列中的纯色矩形表示标准队列数据包。 这适用于 GPU。 交叉切线矩形是存在的数据包,带对角线的矩形表示“当前标记数据包”。

翻转 Surface

在与 Dwm.exe 进程关联的上下文 CPU 队列中,GPUView 在“呈现数据包”矩形中提供翻转 Surface 地址。 第一个数字是翻转队列。 第二个数字是将要翻转的图面的地址。 此数字通常可在发出“当前数据包”之前完成的 DMA 数据包中找到。

有关队列的注释

GPUView 看到的队列是排队等待执行的工作堆栈。 在显示中,堆栈底部的项 (底部行) 是在该特定时间点实际处理的项。 等待处理下一项将堆叠在正在执行的项之上。 转换点表示一个工作项完成,正在等待的一个工作项现在成为下一个工作项的时刻。 在执行工作和完成数据包时,这些转换点为队列提供了一个楼梯步骤。 添加到队列的最新项始终放在最上面。