注释
ARM64 Visual Studio 不支持 Visual Studio 图形诊断。
使用性能探查器中的 GPU 使用情况工具更好地了解 Direct3D 应用的高级硬件使用情况。 它可帮助你查看应用的性能是 CPU 绑定还是 GPU 绑定,并深入了解如何更有效地使用平台的硬件。 GPU 使用情况支持使用 Direct3D 12、Direct3D 11 和 Direct3D 10 的应用。 它不支持其他图形 API,例如 Direct2D 或 OpenGL。
下面是 “GPU 使用情况报告 ”窗口的外观:
要求
除了图形诊断的要求外,使用 GPU 使用情况工具还需要满足以下条件:
支持必要计时仪器的 GPU 和驱动程序。
注释
有关受支持的硬件和驱动程序的详细信息,请参阅本文档末尾的硬件 和驱动程序支持 。
有关图形诊断要求的详细信息,请参阅 入门。
使用 GPU 使用情况工具
在 GPU 使用情况工具下运行应用时,Visual Studio 会创建诊断会话。 此会话实时绘制有关应用的渲染性能和 GPU 使用情况的高级信息。
若要启动 GPU 使用情况工具,请执行以下步骤:
在主菜单中,选择 “调试>性能和诊断 ”(或者,在键盘上按 Alt+F2)。
在 性能和诊断 中心,选中 GPU 使用情况旁边的框。 可选择勾选你感兴趣的其他工具的方框。 可以同时运行多个性能和诊断工具,以便更全面地了解应用的性能。
注释
并非所有性能和诊断工具都可以同时使用。
在 性能和诊断 中心底部,选择 “开始” 以在所选工具下运行应用。
实时显示的高级信息包括帧计时、帧速率和 GPU 使用情况。 每一条信息都是独立绘制的,但它们都使用通用的时间刻度,以便你可以轻松地理解关系。
帧时间(ms)和每秒帧数(FPS)图各有两条红色水平线,显示每秒 60 帧和 30 帧的性能目标。 在帧时间图中,当图形位于线条下方时,应用将超出性能目标,当图形位于线条上方时,它会错过目标。 对于每秒帧图,情况正好相反:当图形位于线条上方时,应用会超出性能目标,当图形位于线条下方时,它会错过目标。 你主要使用这些图形来大致了解应用的性能,并确定你可能想要调查的慢速情况。 例如,如果看到帧速率突然下降或 GPU 利用率激增,则可能需要进一步调查。
当应用在 GPU 使用情况工具下运行时,诊断会话还会收集有关 GPU 上运行的图形事件的详细信息。 使用此信息可以生成更精细的报表,说明应用如何使用硬件。 由于此报告需要一些时间来从收集的信息生成,因此仅在诊断会话完成收集信息后才可用。
如果想要更密切地查看性能或利用率问题,请停止收集性能信息,以便生成报告。
若要生成和查看 GPU 使用情况报告,请执行以下作:
在诊断会话窗口的底部,选择 “停止收集 ”链接,或选择左上角的 “停止 ”。
在报表的顶部,从其中一个图形中选择一个部分,其中显示了要调查的问题。 所选内容最长可长达 3 秒。 较长的部分在开始处被截断。
若要查看所选内容的详细时间线,请在报表的底部,在 ...单击此处可查看该范围消息的 GPU 使用情况详细信息 ,选择 “查看详细信息”。
此项选择将打开包含报表的新选项卡式文档。 GPU 使用情况报告可帮助你查看何时在 CPU 上启动图形事件、何时到达 GPU 以及 GPU 运行它所需的时间。 此信息可帮助你识别代码中提高并行度瓶颈和机会。
导出到 GPUView 或 Windows 性能分析器
从 Visual Studio 2017 开始,可以使用 GPUView 和 Windows Performance Analyzer 打开此数据。 只需选择位于诊断会话右下角的 “在 GpuView 中打开 ”或 “在 WPA 中打开 ”链接即可。
使用 GPU 使用情况报告
GPU 使用情况报表的顶部部分显示 CPU 处理活动、GPU 呈现活动和 GPU 复制活动的时间线。 这些时间线被浅灰色的垂直线划分,指示屏幕的垂直同步(vsync)。 条形图的频率与从中收集 GPU 使用情况数据的其中一个显示器(通过使用 显示 下拉列表选择)的刷新速率匹配。
由于显示刷新率可能高于应用的性能目标,因此 vsync 与希望应用实现的帧速率之间可能不存在 1 对 1 的关系。 若要达到其性能目标,应用必须完成所有处理、执行呈现并在目标帧速率上调用 Present()
。 不过,呈现的帧要等到下一个垂直同步信号 (Present()
) 之后才会显示。
GPU 使用情况报表的底部部分列出了报表时间段内发生的图形事件。 选择事件时,相关时间线中的相应事件中会显示一个标记。 通常,CPU 线程上的一个事件显示 API 调用,而 GPU 时间线中的另一个事件在 GPU 完成任务时显示。 同样,在时间线中选择事件时,报表会突出显示报表底部的相应图形事件。
在报表顶部缩小时间线时,只显示最耗时的事件。 若要查看持续时间较短的事件,请在指向设备上使用 Ctrl+wheel 或顶部面板左下角的缩放控件放大时间线。 还可以拖动时间线面板的内容,以在录制的事件中移动。
为了帮助查找所需内容,请根据进程名称、线程 ID 和事件名称筛选 GPU 使用情况报告。 此外,您可以选择哪个显示器的刷新率来决定 v-sync 行。 如果应用使用 ID3DUserDefinedAnnotation 接口对呈现命令进行分组,则可以按层次结构对事件进行排序。
下面是更多详细信息:
筛选器控件 | DESCRIPTION |
---|---|
过程 | 你感兴趣的进程的名称。 诊断会话期间使用 GPU 的所有进程都包含在此下拉列表中。 与进程关联的颜色是时间线中线程活动的颜色。 |
线程 | 你感兴趣的线程 ID。 在多线程应用中,此信息可以帮助你隔离属于你感兴趣的进程的特定线程。 与所选线程关联的事件在每个时间线中突出显示。 |
显示 | 显示器的刷新率所对应的编号。 某些驱动程序可配置为将多个物理显示器显示为单个大型虚拟显示器。 即使计算机连接了多个显示器,您可能只会看到列出一个显示器。 |
滤波器 | 你感兴趣的关键字。 报表底部的事件将仅包含与关键字完全或部分匹配的事件。 可以通过用分号(;))分隔关键字来指定多个关键字。 |
层次结构排序 | 一个复选框,指示是否保留或忽略通过用户标记定义的事件层次结构。 |
GPU 使用情况报表底部的事件列表显示每个事件的详细信息。
列 | DESCRIPTION |
---|---|
事件名称 | 图形事件的名称。 事件通常对应于 CPU 线程时间线和 GPU 时间线事件中的事件。 如果 GPU 使用情况无法确定事件的名称,则事件名称可能 未标记 。 有关详细信息,请参阅下表后面的说明。 |
CPU Start (ns) | 通过调用 Direct3D API 在 CPU 上启动事件的时间。 时间以纳秒为单位测量,相对于应用启动时的时间。 |
GPU Start (ns) | 事件在 GPU 上启动的时间。 时间以纳秒为单位,相对于应用启动时。 |
GPU 持续时间 (ns) | 事件在 GPU 上完成的时间(以纳秒为单位)。 |
进程名称 | 事件来自的应用的名称。 |
线程 ID | 事件来自的线程 ID。 |
重要
如果 GPU 或驱动程序不支持必要的检测功能,则所有事件都将显示为 未归因。 如果遇到此问题,请更新 GPU 驱动程序,然后重试。 有关详细信息,请参阅本文档末尾 的硬件和驱动程序支持 。
GPU 使用情况设置
可以将 GPU 使用情况工具配置为推迟收集分析信息,而不是在应用启动时立即开始收集信息。 由于分析信息的大小可能会很大,因此当你知道应用性能问题要到以后才会出现时,这种操作非常有用。
若要从应用开始时推迟分析,请按照以下步骤操作。
在主菜单中,选择 “调试>性能和诊断 ”(或者,在键盘上按 Alt+F2)。
在 “性能和诊断 ”中心,选择 GPU 使用情况旁边的 设置 链接。
在“常规”属性页上的“GPU 分析配置”下,清除“应用启动时开始分析”复选框以推迟分析。
重要
目前,无法推迟 Direct3D 12 应用程序的性能分析。
在 GPU 使用情况工具下运行应用后,GPU 使用情况工具窗口底部会显示一个附加链接。 若要开始收集分析信息,请在“开始收集其他详细的 GPU 使用情况数据”消息中选择“开始”链接。
硬件和驱动程序支持
支持以下 GPU 硬件和驱动程序:
供应商 | GPU 描述 | 所需的驱动程序版本 |
---|---|---|
英特尔® | 第四代 Intel® 核心处理器(“Haswell”) - Intel® HD 图形 (GT1) - Intel® HD Graphics 4200 (GT2) - Intel® HD Graphics 4400 (GT2) - Intel® HD Graphics 4600 (GT2) - Intel® HD 图形 P4600 (GT2) - Intel® HD 图形 P4700 (GT2) - Intel® HD Graphics 5000 (GT3) - Intel® Iris™ 显卡 5100 (GT3) - Intel® Iris™ Pro Graphics 5200 (GT3e) |
(使用最新驱动程序) |
AMD® | 自 AMD Radeon™ HD 7000 系列以来最多(不包括 AMD Radeon™ HD 7350-7670) AMD Radeon™ GPU、AMD FirePro™ GPU和AMD FirePro™ GPU加速器,采用图形核心新架构(GCN)体系结构 AMD® E 系列和 AMD A 系列加速处理单元(APU)具有图形核心下一步(GCN)体系结构('Kaveri'、'Kabini'、'Temash'、'Beema'、'Mullins') |
14.7 RC3 或更高版本 |
NVIDIA® | 自 NVIDIA® GeForce® 400 系列以来最多 NVIDIA GeForce® GPU、NVIDIA® Quadro® GPU 和 NVIDIA® Tesla™ GPU 加速器,具有 Fermi™、Kepler™ 或 Maxwell™ 体系结构 |
343.37 或更高版本 |
目前不支持多 GPU 配置,例如 NVIDIA® SLI™ 和 AMD Crossfire™。 支持混合图形方案,例如 NVIDIA® Optimus™ 和 AMD Enduro™。