• Intel® Graphics Performance Analyzers 2020 R1
  • 12/20/2019
  • Public Content
Contents

GPU Metrics

本节描述了可从 Intel® GPA 访问的所有 GPU 指标。
下表概述从第三代英特尔® 酷睿™ 处理器开始的英特尔 GPU 可用的所有 GPU 指标。
备注
对于 DirectX 11 目标,指标收集覆盖即将分析的给定应用程序。对于 DirectX 12 目标,指标收集覆盖整个系统,包括所有运行的应用程序。分析 DirectX 12 应用程序时,建议停止运行所有其他图形应用程序。
 
备注
对于原名为 Kaby Lake G 的产品,请在如下地址查看有关 GPU 指标的说明:https://gpuperfapi.readthedocs.io/en/latest/counters.html。
 
指标名称
描述
Main Metrics
GPU Duration
代表用于该帧的 GPU 总时间或该帧内针对 Graphics Frame Analyzer 的选定事件的 GPU 总时间。
如果
GPU Duration
是 80,000,则表示 GPU 耗费约 80 毫秒渲染选定的 erg。
当使用
GPU Duration
作为帮助分析游戏或应用程序性能的指标时,理解以下各项十分重要:
  • 如果此值太大,检查渲染管线的底层组件,看看是否有一个或多个部分太复杂,并因此成为潜在的性能瓶颈。 检查
    Pixel Shader Duration
    Vertex Shader Duration
    Geometry Shader Duration
    指标。
  • GPU 为选定 erg 的工作效果如何? 检查指标:
    GPU EUs Active、
    GPU EUs Stalled
GPU Frequency
代表测量期间的平均 GPU 内核频率。最新 Intel GPU 支持 Intel® Turbo Boost Technology 2.0(英特尔® 睿频加速技术 2.0),并可以根据 CPU 和 GPU 的工作负载动态更改频率。
对于英特尔® 核芯显卡 3000,当发生繁重的 GPU 负载时,
GPU Frequency
提高到其最高频率。
系统通常自动调整
GPU Frequency
,以便在 CPU 与 GPU 之间优化总体系统性能。
运行 System Analyzer HUD 时,如果对于特定的系统配置,GPU 频率始终处于其峰值,这可能表示系统受 GPU 制约;如果 GPU 频率始终处于范围的低端,这可能表示系统受 CPU 制约和/或 GPU 未被充分利用。
运行 Graphics Frame Analyzer 时,目前此指标并不提供 GPU 性能的准确衡量,因为在游戏的运行过程中捕获帧时,CPU 并未如应当的那样被利用。
备注
如果英特尔显卡设备支持多个 GPU 频率,为最大程度地缩小指标值的变异,Graphics Frame Analyzer 将 GPU 锁定在最高可用频率。
Avg GPU Core Frequency, MHz
代表测量的平均 GPU 内核频率。
GPU Core Clocks
代表在该测量期间占用的 GPU 内核时钟总数。
GPU Busy
代表 GPU 处于繁忙时间的百分比。
对于受 GPU 制约的工作负荷,
GPU Busy
指标为 100%。此值小于 100% 表示 GPU 有一定时间处于闲置状态,等待来自 CPU 的数据(在这种情况下,游戏或应用程序可能受 CPU 制约)。
如果
GPU Busy
始终低于 100%,而且遇到性能问题,可考虑对游戏线程化,并使用 Graphics Trace Analyzer 来了解 CPU 与 GPU 之间的相互作用。
HUD Overhead Time
代表 Head's-up Display 开销时间。
Non-Culled Polygons
代表未被剔除的已处理多边形数量。
GTI Metrics
GTI Write Throughput
代表写入 GTI 的 GPU 内存的字节总数。
GTI Read Throughput
代表从 GTI 读取的 GPU 内存的字节总数。
DRAM LLC Throughput, bytes
代表从 GPU 完成的成功 LLC 缓存查找的总数。
LLC GPU Accesses, messages
代表 LLC 和 DRAM 控制器之间传输的 GPU 内存字节的大致数量。
备注
此指标可能显示不正确的结果,并将被下一个驱动程序更新禁用。
LLC GPU Throughput, bytes
代表 GPU 和 LLC 之间传输的 GPU 内存字节总数。
LLC GPU Hits, messages
代表从 GPU(64B 读取、32B 写入)完成的 LLC 缓存查找的总数。
备注
此指标可能显示不正确的结果,并将被下一个驱动程序更新禁用。
EU Array Metrics
EU Idle %
代表 GPU 执行单元 (EU) 处于闲置状态的时间的百分比。执行单元 (EU) 闲置是其既不活动地执行着色器指令也不停顿着试图执行着色器指令。
  • 如果
    EU Idle %
    为 50,则表示 EU 用于选定 erg 的渲染时间有 50% 处于闲置状态。
  • 如果
    EU Idle %
    为 0,则表示 EU 用于选定 erg 的整个渲染持续时间要么是活跃的,要么是停顿的。
如果
EU Idle %
显著大于 0%,则表示渲染管线中其他地方还有停顿。
EU Active %
代表 GPU 执行单元 (EU) 积极执行像素、几何图形或顶点着色器指令的时间的百分比。
如果
EU Active %
为 80,则表示 EU 用于选定事件的渲染时间有 80% 处于活跃状态。
如果执行单元处于非活动状态,这意味着执行单元或是停顿以等待请求被履行,或是处于闲置状态。通过检查
EU Stall %
指标可获知非活动时间中有多少是停顿引起的。如果执行单元总繁忙时间 (
EU Active %
+
EU Stall %
) 显著低于 100%,这表明渲染管道中其他地方还有停顿。
E
U Stall %
代表 GPU 执行单元 (EU) 处于停顿状态的时间的百分比。当一个执行单元的所有线程都在等待来自固定功能单元的结果(例如,像素着色器请求来自纹理采样器的纹素)时,该执行单元成为停顿。
  • 如果
    EU Stall %
    为 50,则表示 EU 用于选定 erg 的渲染时间有 50% 处于停顿状态。
  • 如果
    EU Stall %
    为 0,则表示 EU 没有停顿或停顿时间很短。
如果出乎意外,尤其是与
EU Active %
指标相比时此指标很高,则可以通过查看
VS EU Stall %
|
GS EU Stall %
|
PS EU Stall %
指标分析何处发生停顿。如果这些指标中有任何一个显示停顿时间大部分发生于一个特定的着色器,在 Graphics Frame Analyzer 中检查着色器代码,确定为何此着色器可能造成 EU 停顿。
EU AVG IPC Rate, Number
代表针对两个 FPU(浮点计算单元)管线计算的 IPC(进程间通信)的平均速率。
备注
此指标可能显示不正确的结果,并将被下一个驱动程序更新禁用。
VS Duration
代表 GPU 执行顶点着色器代码花费的大致总时间。
  • 如果
    Vertex Shader Duration
    是 50,000,它意味着 GPU 为选定的尔格执行顶点着色器花费了大约 50 毫秒时间。
  • 如果
    Vertex Shader Duration
    是 0,它意味着顶点着色器为选定的尔格所花费的时间非常短。
如果
Vertex Shader Duration
时间相对于
GPU Duration
过高,则可能需要进行顶点处理优化。在此情况下,可以尽可能缩小
Vertex Count
Primitive Count
Vertex Shader Invocations Count
,以优化该几何图形。如果你使用的是三角形的列表,请尝试将它们转换为一个三角形边,以最大限度地减少发送到管线的顶点数。同时优化 VCache 的几何体(请参阅
Vertex Shader Invocations Count
指标说明)。
要查看是否可以优化,在 Graphics Frame Analyzer 中检查您的顶点着色器代码。参阅 Graphics API Performance Guide,查找有关顶点着色器的优化建议。
VS EU Active %
代表 EU 积极处理顶点着色器指令的时间占整体 GPU 时间的百分比。 
  • 如果
    VS EU Active %
    为 50%,则表示总体 GPU 时间一半用于积极执行顶点着色器指令。
  • 如果
    VS EU Active %
    为 0%,则表示没有与选定 draw calls 相关联的顶点着色器,或者花在积极处理顶点着色器指令的时间可以忽略不计。
  • 如果顶点处理看上去似乎成了选定的渲染调用的瓶颈,则此指标很重要。如果
    VS EU Active %
    占用了 EU 处于活动状态的大部分时间,则为了改善性能,应该简化顶点着色器或简化并优化基元的几何图形。
  • 如果
    VS EU Active %
    显著较大,则应检查顶点着色器代码,找到可能导致停顿的原因。
在 Graphics Frame Analyzer 中检查着色器代码。
VS EU Stall %
代表 EU 在顶点着色器指令中停顿时间占整体 GPU 时间的百分比。 
备注
此指标不包括在顶点着色器上的停顿总时间,而仅是顶点着色器导致整个 EU 停顿的一小部分时间。只有当执行单元的所有线程都停顿时,整个执行单元才处于停顿状态。
  • 如果
    VS EU Stall %
    为 50%,则表示整体 GPU 时间有一半停顿在顶点着色器指令上。
  • 如果
    VS EU Stall %
    为 0%,则表示没有顶点着色器与选定的渲染调用相关联,或顶点着色器线程未导致 EU 停顿。
  • 如果顶点处理看上去似乎成了选定的渲染调用的瓶颈,则此指标很重要。如果
    VS EU Stall %
    占用了 EU 处于活动状态的大部分时间,则为了改善性能,应该简化顶点着色器或简化并优化几何图形。
  • 如果
    VS EU Stall %
    显著较大,则需要集中检查顶点着色器代码,找到导致停顿的原因。
在 Graphics Frame Analyzer 中检查着色器代码。
VS Invocations
代表顶点着色器调用 - 每个顶点调用一次顶点着色器。顶点着色器调用的数量取决于顶点和基元的计数,以及后变换顶点高速缓存缓存 (VCache)。在理想情况下,GPU 从缓存中提取已处理的顶点,而不是重新计算该数据,这可能会影响此指标的值。
因此,当
VS Invocations
Vertex Count
拥有相似的值时,则表示几何图形未经过优化以利用 VCache。
来自 Microsoft* DirectX* SDK 的 OptimizedMesh 是一个说明
Vertex Count
和 Vcache 优化的良好例子:
  • 将一个非优化网格渲染为一个三角形列表时,
    Vertex Count
    等于 141K,而
    VS Invocations
    为 112K。
  • 将同一个网格渲染为一个重新排列以实现最优 Vcache 利用率的三角形列表时,
    Vertex Count
    仍然不变,但是
    VS Invocations
    数降到 27K,这几乎少了 4 倍。
  • 将相同网格渲染为 VCache 优化的三角带时,
    Vertex Count
    下降到 52 K,而
    VS Invocations
    下降为 25K。
要提高顶点处理性能并减少顶点着色器的调用次数,尝试重新排序几何体以优化 Vcache 的使用。D3DX 实用程序库包含将几何图形重新排序的函数,以改进 VCache 利用率(
ID3DXMesh::Optimize、ID3DXMesh::Optimize、D3DXOptimizeFaces、D3DXOptimizeVertices
)。
备注
如果渲染 Point Sprites,该指标始终等于
Vertex Count
Primitive Count
(即没有必要进行优化)。
VCache 的大小因不同的 GPU 型号而异,因此不同的硬件上使用相同的几何体时,您可能会看到不同的度量值。
VS Send Pipe Active %
代表 EU 发送管线积极处理顶点着色器指令的时间百分比。
VS FPU0 Pipe Active %
代表 EU FPU0 管线积极处理顶点着色器指令的时间百分比。
VS FPU1 Pipe Active %
代表 EU FPU1 管线积极处理顶点着色器指令的时间百分比。
HS Duration
代表 GPU 执行 hull shader 代码花费的总时间。
  • 如果
    HS Duration
    为 50,000,它意味着 GPU 耗费 50 毫秒为选定的 erg 执行外壳着色器代码。
  • 如果
    HS Duration
    是 0,它意味着或是执行外壳着色器代码所耗费的时间可以忽略不计,或是没有外壳着色器在使用中。
此模板中的题头是用于主题标题的特殊字段,因此通常不需要进行编辑。
如果
HS Duration
大于期望值,可以在 Graphics Frame Analyzer 中检查外壳着色器代码,以研究可能的优化。
HS EU Active %
代表 EU 积极执行 Hull Shader 指令的时间占整体 GPU 时间的百分比。
HS EU Stall %
代表 EU 在 Hull Shader 上停顿的时间占整体 GPU 时间的百分比。当它到达无法完成的指令时,着色器线程将被迫停顿,直到一些费时的操作完成。
备注
此指标不包括在外壳着色器上的停顿时间的总量,而只包括外壳着色器造成整个执行单元停顿的时间量。EU 在英特尔® 核芯显卡中是超线程,即每个 EU 都能非常迅速地(在 2 个时钟周期内)从停顿的着色器线程切换到另一个着色器线程。因此,虽然有可能在任何给定时间会有若干着色器线程停顿在 EU 上,但是 EU 能继续积极执行另一个着色器线程上的指令。如果所有线程均停顿,则整个 EU 被认作停顿。
如果停顿的大量时间似乎发生在特定的着色器中,则您应该检查该着色器,看看是否可以减少或消除一些停顿。
简短的着色器通常可能会在大多数的执行时间停顿,因为在这种情况下,指令或数据预取(纹理像素、常数)延迟不能被“隐藏”。如果在较长的着色器中出现大量的停顿时间,它通常表明着色器执行效率低下以及需要优化。
在 Graphics Frame Analyzer 中检查针对给定 draw call 所执行的着色器代码并实验优化。
HS Invocations
代表 Hull Shader 调用的数量。Hull Shader 在每个修补程序后调用。
Microsoft* DirectX* SDK 的 SimpleBezier11 示例是了解 Hull Shaders 的一个很好的例子。此示例呈现有四个 64 控制的点每修补程序的 Mobius 条。执行此示例将导致一个
HS Invocations
值的四个。
Hull Shader 通常并非一个性能瓶颈,但它肯定会在渲染流水线的未来操作中导致性能问题。如果 Hull Shader 指定大型曲面细分因素,或随着
HS Invocations
值增加,它将导致固定功能 tessellator 的工作量增大以及
DS Invocations
GS Invocations
的数量增加。
DS Duration
代表 GPU 执行域着色器代码花费的总时间。
  • 如果
    DS Duration
    为 50,000,它意味着 GPU 耗费 50 毫秒为选定的 erg 执行域着色器代码。
  • 如果
    DS Duration
    是 0,它意味着或是执行域着色器代码所耗费的时间可以忽略不计,或是没有域着色器在使用中。
如果
DS Duration
大于期望值,可以在 Graphics Frame Analyzer 中检查域着色器代码,以研究可能的优化。
DS EU Active %
代表 EU 积极执行域着色器指令的时间占整体 GPU 时间的百分比。
DS EU Stall %
代表 EU 在域着色器指令上停顿的时间占整体 GPU 时间的百分比。当它到达无法完成的指令时,着色器线程将被迫停顿,直到一些费时的操作完成。
备注
此指标不包括在域着色器上的停顿时间的总量,而只包括域着色器造成整个执行单元停顿的时间量。EU 在英特尔® 核芯显卡中是超线程,即每个 EU 都能非常迅速地(在 2 个时钟周期内)从停顿的着色器线程切换到另一个着色器线程。因此,虽然有可能在任何给定时间会有若干着色器线程停顿在 EU 上,但是 EU 能继续积极执行另一个着色器线程上的指令。如果所有线程均停顿,则整个 EU 被认作停顿。
如果停顿的大量时间似乎发生在特定的着色器中,则您应该检查该着色器,看看是否可以减少或消除一些停顿。
简短的着色器通常可能会在大多数的执行时间停顿,因为在这种情况下,指令或数据预取(纹理像素、常数)延迟不能被“隐藏”。如果在较长的着色器中出现大量的停顿时间,它通常表明着色器执行效率低下以及需要优化。
可在 Graphics Frame Analyzer 中检查针对给定 draw call 所执行的着色器代码并实验优化。
DS Invocations
代表域着色器调用的数量。每一个固定的函数镶嵌单元(tessellator)输出点调用一次域着色器。
来自 Microsoft* DirectX* SDK 的 SimpleBezier11 样本是了解域着色器的一个良好示例。此示例渲染一个莫比乌斯带(Mobius strip),该莫比乌斯带由 4 个小片组成,每个小片有 64 个控制点。
增大 Patch Divisions(小片分隔)滑块将增加外壳着色器的镶嵌单元因子,从而导致进入域着色器的输入数增加。当 Patch Divisions 滑块设定为 4.0 时,DS Invocations 的值将为 192。当 Patch Divisions 滑块设定为 5.0 时,
DS Invocations
的值将为 320。
域着色器的目的是计算由固定的函数镶嵌单元输出的细分点的顶点位置。提高性能的最佳方式是将
DS Invocations
的数量降至最少。这可或者通过减少 Hull Shader Invocations(外壳着色器调用)的数量或者通过减少 Hull Shader(外壳着色器)中的镶嵌单元因子,来减少执行的镶嵌单元量而实现。
GS Duration
代表 GPU 执行几何着色器代码花费的大致总时间。  
  • 如果
    GS Duration
    是 50,000,这意味着 GPU 耗费约 50 毫秒为选定的 erg 执行几何着色器。
  • 如果
    GS Duration
    是 0,这意味着为选定的 erg 在几何着色器上所花费的时间非常短,或者没有几何着色器与选定的 erg 相关联。
如果遇到性能问题并且
GS Duration
时间超过
GPU Duration
总时间的 20% 至 40%,可能需要进行几何着色器代码优化。
在 Graphics Frame Analyzer 中检查几何着色器代码,看看是否有可能优化。
请参阅 Graphics API Performance Guide,了解有关如何优化几何着色器的建议。
GS EU Active %
代表 EU 积极执行几何着色器指令的时间占整体 GPU 时间的百分比。
  • 如果
    GS EU Active %
    为 50%,则表示整体 GPU 时间中有一半时间用于积极执行几何着色器指令。
  • 如果
    GS EU Active %
    为 0%,则表示没有几何着色器与选定的 draw calls 相关联,或者积极执行几何着色器指令的时间量可忽略不计。
  • 如果几何着色器看来是对选定渲染调用的瓶颈,则此指标很重要。如果
    GS EU Active %
    占 EU 活跃时间的大部分,则为提高性能,可能需要简化几何着色器,或者简化并优化场景的几何图形。
  • 如果
    GS EU Active %
    大于标称量,可能需要检查几何着色器代码以查找可能造成这些停顿的原因。
用 Graphics Frame Analyzer 检查着色器代码。
GS EU Stall %
代表 EU 在几何着色器指令中停顿的时间占整体 GPU 时间的百分比。 
备注
此指标不包括在几何着色器上的停顿时间的总量,而只包括几何着色器造成整个执行单元停顿的时间分量。只有当执行单元的所有线程都停顿时,整个执行单元才处于停顿状态。
  • 如果
    GS EU Stall %
    为 50%,则表示整体 GPU 时间中有一半的时间停顿在几何着色器指令上。
  • 如果
    GS EU Stall %
    为 0%,则表示没有几何着色器与选定的渲染调用相关联,或者几何着色器线程并未造成 EU 停顿。
  • 如果认为几何着色器似乎是选定渲染调用的瓶颈,则此指标将重要。如果
    GS EU Stall %
    占 EU 活跃状态时间的大部分,则为提高性能,可能需要简化几何着色器,或者简化并优化几何图形。
  • 如果
    GS EU Stall %
    大于标称量,可能需要检查几何着色器代码以查找造成这些停顿的可能原因。
用 Graphics Frame Analyzer 检查着色器代码。
GS Invocations
代表几何着色器调用的次数。如果没有几何着色器与该渲染调用相关联,此指标值为 0。
备注
请参阅 Microsoft* DirectX* SDK 关于着色器调用计数的叙述。
如果
GS Invocations
是 1000,这意味着为 1000 个基元调用了几何着色器。
尽量减少几何着色器调用次数的的唯一方法是尽量减少输入基元的数量。减少调用计数对渲染性能的影响高度依赖于特定的游戏或应用程序。
Post-GS Primitives
代表从几何着色器 (GS) 流出至削波器(如果启用)的基元数量。此指标在几何着色器与选定的渲染调用相关联时很重要,而且此指标在几何着色器代码催生的基元是动态的情况下则更重要。
备注
如果未对选定的渲染调用启用 GS,则指标将返回值 0。
如果
Post-GS Primitives
为 1000 且
Primitive Count
为 100,则表示几何着色器从最初的 100 个基元构造出来 1000 个基元。
利用 Graphics Frame Analyzer 分析几何着色器代码。
PS Duration
代表 GPU 执行像素着色器代码花费的大致总时间。  
  • 如果
    Pixel Shader Duration
    是 50,000,它意味着 GPU 为选定的尔格执行像素着色器花费了大约 50 毫秒时间。
  • 如果
    Pixel Shader Duration
    是 0,它意味着像素着色器为选定的尔格所花费的时间非常短。
对比
Pixel Shader Duration
时间和
GPU Duration
;如果
Pixel Shader Duration
较高,您可以通过优化像素着色器代码来改善整体渲染性能。
参阅 Graphics API Performance Guide 以查看关于像素着色器的优化建议。
PS EU Active %
表示 EU 积极执行像素着色器指令的时间占整体 GPU 时间的百分比。
  • 如果
    PS EU Active %
    为 50%,则表示整体 GPU 时间的一半用于积极执行像素着色器指令。
  • 如果
    PS EU Active %
    为 0%,则表示没有像素着色器与选定的 draw calls 相关联,或者积极执行像素着色器指令的时间量可忽略不计。
  • 如果像素着色器看来是对选定渲染调用的瓶颈,则此指标很重要。
  • 如果
    PS EU Active %
    占 EU 活跃时间的大部分,则为提高性能,可能需要简化像素着色器。
  • 如果
    PS EU Active %
    大于预期,并且遇到渲染时间缓慢的问题,应当检查像素着色器代码以查找这些停顿发生的潜在原因。
PS EU Stall %
代表 EU 停顿在像素着色器指令上的时间占整体 GPU 时间的百分比。 
备注
此指标不显示在像素着色器上的停顿时间的总量,而只显示像素着色器造成整个执行单元停顿的时间分量。只有当执行单元的所有线程都停顿时,整个执行单元才处于停顿状态。
  • 如果
    PS EU Stall %
    为 50%,则表示整体 GPU 时间中有一半时间停顿在像素着色器指令上。
  • 如果
    PS EU Stall %
    为 0%,则表示没有像素着色器与选定的渲染调用相关联,或者像素着色器线程并未造成 EU 停顿。
  • 如果像素着色器看来是对选定渲染调用的瓶颈,则此指标很重要。如果
    PS EU Stall %
    占 EU 活跃时间的大部分,则为提高性能,可能需要简化像素着色器。
  • 如果
    PS EU Stall %
    大于预期值,并且遇到渲染时间缓慢的问题,则需要集中检查像素着色器代码以查找这些停顿的原因。
PS Invocations
代表像素着色器调用的数量。像素着色器每像素调用一次。
如果你以 8 x 8 像素大小渲染完全位于视锥的四,则
Pixel Shader Invocation Count
是 64。
通常
PS Invocations
工作负载由于在像素着色器中所需的处理时间是渲染线管中最昂贵的之一。因此,保持尽可能低的调用数量可能会提高您的渲染性能。
备注
对代号 Ivy Bridge 和 Bay Trail 的英特尔® 微架构,此指标包括被早期深度测试拒绝的像素,即使像素着色器实际上并未为这些像素调用。
PS Send Pipeline Active %
代表 EU 发送管线积极处理像素着色器指令的时间的百分比。
PS FPU0 Pipe Active %
代表 EU FPU0 管线积极处理像素着色器指令的时间的百分比。
PS FPU1 Pipe Active %
代表 EU FPU1 管线积极处理像素着色器指令的时间的百分比。
EU FPU0 Pipe Active %
代表 EU FPU0 管线积极处理的时间的百分比。
EU FPU1 Pipe Active %
代表 EU FPU1 管线积极处理的时间的百分比。
EU Both FPU Pipes Active %
代表两个 EU FPU 管线均积极处理的时间的百分比。
EU Send Pipe Active %
代表 EU 发送管线进行积极处理的时间的百分比。
CS Duration
代表 GPU 执行计算着色器代码花费的总时间。
  • 如果
    CS Duration
    为 50,000,它意味着 GPU 花费 50 毫秒为选定的 ergs 执行计算着色器代码。
  • 如果
    CS Duration
    为 0,则表示执行计算着色器代码所花费的时间可以忽略不计,或者没有正在使用中的计算着色器。
如果
CS Duration
大于期望值,可以在 Graphics Frame Analyzer 中检查计算着色器代码,以研究可能的优化。
CS EU Active %
代表 EU 积极执行计算着色器指令的时间占整体 GPU 时间的百分比。
  • 如果
    CS EU Active %
    为 0%,则表示没有计算着色器与选定的 draw calls 相关联,或者积极执行计算着色器指令的时间量可忽略不计。
CS EU Stall %
代表 EU 停顿在计算着色器指令上的时间占整体 GPU 时间的百分比。当它到达无法完成的指令时,着色器线程将被迫停顿,直到一些费时的操作完成。
  • 如果
    CS EU Stall %
    为 0%,则表示没有计算着色器与选定的 draw calls 相关联,或者停顿在计算着色器指令上的时间量可忽略不计。
备注
此指标不包括在计算着色器上的停顿时间的总量,而只包括计算着色器造成整个执行单元停顿的时间量。EU 在英特尔® 核芯显卡中是超线程,即每个 EU 都能非常迅速地(在 2 个时钟周期内)从停顿的着色器线程切换到另一个着色器线程。因此,虽然有可能在任何给定时间会有若干着色器线程停顿在 EU 上,但是 EU 能继续积极执行另一个着色器线程上的指令。如果所有线程均停顿,则整个 EU 被认作停顿。
如果停顿的大量时间似乎发生在特定的着色器中,则您应该检查该着色器,看看是否可以减少或消除一些停顿。
简短的着色器通常可能会在大多数的执行时间停顿,因为在这种情况下,指令或数据预取(纹理像素、常数)延迟不能被“隐藏”。如果在较长的着色器中出现大量的停顿时间,它通常表明着色器执行效率低下以及需要优化。
在 Graphics Frame Analyzer 中检查针对给定 draw calls 所执行的着色器代码并实验优化。
CS Invocations
代表计算着色器调用数量。每个线程组的每个线程调用计算着色器一次。每个线程组中的线程数由计算着色器的
numthreads
属性 (
numthreads(tX, tY, tZ)
) 定义。执行的线程组数由 Dispatch 调用的参数(
Dispatch(gX, gY, gZ)
)确定。
CS Invocations
等于
(gx*GY*gz)*(tx*TY*TZ)
  • 如果 numthreads 属性是 numthreads(4, 4, 1),而 Dispatch 由 Dispatch(16, 16, 16) 调用,则
    CS Invocations
    值将等于 (16*16*16)*(4*4*1) = 65536。
Sampler Metrics
Sampler Busy %
代表纹理采样器正忙于处理纹理像素取回请求(即是“活动”或“停顿”)的时间百分比。
备注
在具有英特尔® 核芯显卡 5000/4600/4400/4200、英特尔® 锐炬® 显卡 5100 或英特尔® 锐炬® Pro 显卡 5200 配置的系统上播放受保护的高清媒体内容时,此指标不可靠。
  • 如果
    Sampler Busy %
    为 50,则表示纹理采样器对选定 ergs 渲染的时间中有 50% 时间处于活跃状态。
  • 如果
    Sampler Busy %
    为 0,则表示纹理采样器未使用或其处于活跃状态的时间非常小。
Sampler Busy %
正在运行,这可能会导致 EU 的停顿,尤其是如果纹理拾取延迟不与数学指令并行发生时(着色器编译器会尝试优化着色器代码以弥补这种延迟)。检查
EU Stall %
指标以查看 EU 停顿的数量。如果百分比很高,而且
Sampler Busy %
接近 100%,很可能存在纹理处理瓶颈。在 Graphics Frame Analyzer Experiments Tab 中进行 2x2 textures 实验,以了解是否如此。
Sampler Texels, texels
代表从纹理采样器返回的纹理像素的数量。
备注
在具有英特尔® 核芯显卡 5000/4600/4400/4200、英特尔® 锐炬® 显卡 5100 或英特尔® 锐炬® Pro 显卡 5200 配置的系统上播放受保护的高清媒体内容时,此指标不可靠。
如果
Sampler Texels, texels
为 1000,则表示 1000 纹理像素从纹理采样器传送到执行单元 (EU)。
从纹理拾取的高数量纹理像素会导致较高的纹理带宽和更多的纹理采样器单元停顿,而这可能因着色器等待来自取样器单元的纹理像素而导致大量的 EU 停顿。
请注意,此指标可能表明着色器在从内部分支逻辑获取纹理数据时出现的停顿。例如,如果着色器仅从代码的
if()
块中拾取样本,此指标可以帮助您了解着色器采用分支的频率。
备注
此指标仅对四纹理像素是精确的,并通常比使用的纹理像素的实际数量稍大一些。这是因为纹理采样器在 2x2 四纹理像素中返回数据。当沿角的边缘取样时,此误差便变得更明显。
Sampler Cache Misses, messages
代表由于渲染此帧时纹理缓存未命中而由 GPU 从内存读取的纹理数据字节数。注意,纹理采样器从内存中读取数据以 64 字节块为单位,所以此指标可用于计算纹理高速缓存未命中数量,如下所示:
  • 如果
    Sampler Cache Misses, messages
    为 64000,则表示纹理采样器未命中缓存达 1000 次,并需要读取 64000 字节的内存。
  • 如果
    Sampler Cache Misses, messages
    为 0,则表示没有为选定的 ergs 从内存读取纹理数据。
备注
在具有英特尔® 核芯显卡 5000/4600/4400/4200、英特尔® 锐炬® 显卡 5100 或英特尔® 锐炬® Pro 显卡 5200 配置的系统上播放受保护的高清媒体内容时,此指标不可靠。
通常,此指标一个较大的值将导致较高比例的纹理采样器停顿。因此,应该使用能最大限度地减少纹理读取数的技巧,如 Sampler Stalled 指标中“改善性能”一节所述。
Sampler Bottleneck %
代表纹理采样器成为瓶颈时的时间的百分比。由于缺乏结果而造成的全输入 FIFO,采样器停顿了执行单元 (EU)。
备注
在具有英特尔® 核芯显卡 5000/4600/4400/4200、英特尔® 锐炬® 显卡 5100 或英特尔® 锐炬® Pro 显卡 5200 配置的系统上播放受保护的高清媒体内容时,此指标不可靠。
如果
Sampler Bottleneck %
为 90,则纹理采样器在 90% 的时间内是瓶颈(导致一些 EU 停顿和/或导致其他 EU 空闲)。
以下技巧可能会提高纹理采样器性能:
  • 通过使用较低的分辨率或更低的颜色精度(例如 RGBA4444,而不是 RGBA8888)降低纹理的大小
  • 使用纹理压缩,以减少传输纹理的内存量
  • 使用 mipmapping,以便可以使用更小的纹理 (mipmap)
  • 减少场景中的纹理数量
  • 使用不同的过滤算法
例如,各向异性过滤计算比双线性过滤等较简单的算法更为昂贵。为尽量减少这一方面的开销,在游戏运行时捕获一个典型的帧,使用此帧作为对 Graphics Frame Analyzer 的输入,并尝试以下一种或多种技术:
  • Experiments
    选项卡中进行
    2x2 Textures
    实验,以查看纹理是否成为瓶颈
  • Texture
    选项卡查看纹理大小、格式和 MIP 级别
备注
此指标可能显示不正确的结果,并将被下一个驱动程序更新禁用。
Sampler Stalled
代表纹理采样器停顿时间的百分比。纹理采样器在其输出队列已满时停顿,这会在其返回纹理请求的速度快于 EU 进行处理的速度时发生。纹理采样器停顿时将无法处理新的请求。
  • 如果
    Sampler Stalled
    为 50%,则表示纹理采样器忙时的一半时间内,在等待其输出队列的空间打开。
  • 如果
    Sampler Stalled
    是 0%,则表示该纹理采样器从未停顿。
  • 降低着色器代码中的纹理读取数。
  • 在 Graphics Frame Analyzer 的 Texture Tab 下缩小纹理大小和纹理过滤设置,查看是否有助于提高性能而不会对图像质量产生不利影响。
  • 最大限度地减少各向异性过滤,因为它需要大量的额外纹理像素拾取,从而使其使用更“昂贵”。
  • 修改着色器代码中的纹理提取模式,以优化纹理高速缓存的利用率。
要检查着色器代码,请查看 Graphics Frame Analyzer 中的 Shaders Tab
3D Pipe Metrics
Early Hi-Depth Test Fails, pixels
代表早期分层深度测试中丢弃的像素的总数。
Early Depth Test Fails, pixels
代表未通过早期深度/模板测试的像素数量。
Clipper Invocations
代表削波器处理的基元数量。
  • 如果渲染了 100 个三角形,并启用了剪切,则
    Clipper Invocations
    为 100。
  • 如果渲染了 100 个三角形,并禁用了剪切,则
    Clipper Invocations
    为 0。
在大多数情况下,你不必关注英特尔® 核芯显卡 2000/3000 GPU 的削波器性能,因为这些显卡处理器在硅中实施一种快速剪切算法。
有关启用/禁用硬件剪切的更多信息,请参阅 Microsoft* DirectX* SDK 文档。
Post-Clip Primitives
代表流出削波器的基元数。此指标包括通过 trivial 剪切测试(trivial 接受)的原始基元和由削波器通过剪切操作所创建的新基元。
  • 如果渲染 100 个三角形,并启用了剪切,并且所有三角形均为 trivial 接受,则
    Post-Clip Primitives
    为 100。
  • 如果渲染 100 个三角形,并启用了剪切,并且所有三角形均为 trivial 拒绝,则
    Post-Clip Primitives
    为 0。
  • 如果渲染 100 个三角形,并启用了剪切,而且一个或多个三角形部分位于视锥中,则
    Post-Clip Primitive
    计数返回一个可能会大于或小于 100 的值,这取决于被剪切的三角形的数量。如果此值远远大于 100,则表示许多三角形被部分剪切,而且 clipper 创建了额外的三角形。
在大多数情况下,你不必关注英特尔® 核芯显卡 2000/3000 GPU 的削波器性能,因为这些显卡处理器在硅中实施一种高效的剪切算法。
有关启用/禁用硬件剪切的更多信息,请参阅 Microsoft* DirectX* SDK 文档。
Samples Killed in PS, pixels
代表像素着色器中丢弃的样本或像素的总数。
Primitive Count
代表发送至 3D 硬件的基元数量。
备注
对 Microsoft* DirectX* 9:
Primitive Count
指标与
PrimitiveCount
渲染调用中的参数相匹配。
  • 如果您渲染 100 个点,IA 阶段组装 100 个点基原,而
    Primitive Count
    是 100。
  • 如果您将两个三角形渲染为一个三角形列表,则 IA 阶段组装两个三角形,而
    Primitive Count
    是 2。
  • 如果您将两个三角形渲染为一个三角形条带,则 IA 组装两个三角形,而
    Primitive Count
    是 2。
如果几何图形/顶点处理成为瓶颈,请尝试减少为每个帧发送到 GPU 的基元数量,方法如下:
  • 简化您的渲染几何体;例如,使用 bump 映射,而不是三角形,显示小型几何体的详细信息,对远处的对象使用较低的细节,或对多个 mip 映射使用纹理。
  • 通过多种剔除技巧优化场景;例如,使用二进制空间分区 (BSP)、门户渲染或 Octrees。
Vertex Count
代表 D3D 输入汇编程序 (IA) 阶段发送至 3D 硬件管线的顶点数量。顶点数量取决于基元类型和数量。使用以下公式:
基元类型
Vertex Count
点列表
基元数量
三角形列表
基元 *3 数量
三角形条
基元 +2 数量
行列表
基元 *2 数量
行条
基元 +1 数量
备注
对于 Microsoft* DirectX* 9
:在渲染
indexed primitives
时,
Vertex Count
指标与
::DrawIndexedPrimitive
:DrawIndexedPrimitiveUP
函数中的
NumVertices
参数不匹配,因为输入汇编程序多次分享顶点。
Microsoft* DirectX* 10
以及更高版本:
Vertex Count
指标不包含几何着色器阶段期间创建的顶点。
  • 如果您渲染 100 个点,IA 阶段以 100 个顶点总数组装 100 个点基原,则
    Vertex Count
    是 100。
  • 如果您将两个三角形渲染为一个三角形列表,IA 阶段以 6 个顶点总数组装两个三角形,则
    Vertex Count
    是 6。
  • 如果您将两个三角形渲染为一个三角形条带,IA 阶段以 4 个顶点总数组装两个三角形,则
    Vertex Count
    是 4。
要最大程度地减少发送到管线的顶点数,从而提高顶点处理性能,可使用能减少发送至 GPU 并由其处理的数据量的图形基元,如使用单一三角形带。
Samples Blended, pixels
代表写入所有渲染目标的采样器或像素的总数。
Samples Written
代表写入渲染目标的像素/样本的数量。
显卡驱动程序 9.17.10 引入了一种延期清除的新概念。为了优化,驱动程序决定是否推迟实际的渲染清除调用,以备后续的清除和 draw calls 驱动程序使其成为不必要。作为结果,当清除调用被延迟时,Graphics Frame Analyzer 显示其
GPU Duration
Samples Written
为零。如果稍后需要绘制一个清除调用,则与清除调用相关的工作被包含到清除调用被延迟时正在被绘制的尔格的持续时间中,不一定是清除调用。这意味着,在 Graphics Frame Analyzer 中,与清除调用相关联的指标准确地反映了与该尔格相关联的实际工作。
Alpha Test Fails
代表未通过 alpha 测试因而被忽略(未写入表面)的像素数。
如果
Alpha Test Fails
为 5000,则有 5000 像素未通过 alpha 测试,并且未写入表面。
Pixels Rendered
代表通过深度测试(Z-缓冲器和 Stencil,如果启用)的像素数量。如果深度测试被禁用,
Pixels Rendered
将计算所有通过之前管线阶段传递的像素。
备注
通过深度测试的像素可能不一定出现在渲染目标中,这种情况可能在颜色缓冲区写入掩码设置为 0 时发生。
  • 如果以 8x8 像素渲染四边形,其完全位于视锥内且所有像素通过深度测试,则
    Pixels Rendered
    为 64。
  • 如果以 8x8 像素渲染四边形,其完全位于视锥内,且一半的像素被深度测试或图形管线的其它阶段拒绝,则
    Pixels Rendered
    为 32。
高数量的渲染像素导致高数量的像素着色器执行,因此需要更多的渲染时间。为保持最低的渲染像素数量,优化渲染顺序以最大限度获得
Early-Z
的优势,或在可能情况下使用
Z-only
通道。
要查找具有高深度复杂性的区域,请使用 Graphics Frame Analyzer 中的透支选项。

 

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804