CPU 和 Windows 计数器

更新:2007 年 11 月

利用 Visual Studio 2008 探查器,可以收集操作系统(Windows 计数器)生成的性能数据和处理器单元(CPU 计数器)生成的性能数据。也可以选择 CPU 计数器作为用于在使用样本进行分析时生成采样间隔的事件。

Windows 计数器

Windows 计数器是 Windows 诊断基础结构的一部分,该基础结构提供有关操作系统或者应用程序、服务或驱动程序的性能的信息。Windows 计数器依赖于当前计算机的配置,其他计算机上可能不提供。

CPU 计数器

CPU 计数器是计算机 CPU 的一项功能,用于存储与硬件有关的事件计数。利用 Visual Studio 2008 探查器,可以将这些事件计数用作采样间隔,或者在使用检测进行分析时收集事件计数。

性能计数器是特定于 CPU 的。在启用同一性能计数器时,不同型号和版本的 CPU 会有明显不同的配置设置。Visual Studio 2008 探查器可移植事件将某些通用性能计数器从特定的处理器中分离出来,使您可以收集或采样泛型性能事件。

如果您在分析时要对特定事件进行计数(例如 L2 缓存未命中数),则用户可以围绕该事件源生成性能会话。您可以在具有 L2 缓存的任意 CPU 上执行此操作。性能会话可以在平台之间自由移动,而不必修改。

Visual Studio 2008 探查器继续支持特定平台的特定事件。例如,Pentium 4 平台上的开发人员可能需要对特定于 NetBurst 体系结构的事件进行计数。这个事件是不可移植的,但是仍可用于特定平台上的特定性能会话的开发人员。

可移植事件和平台事件

可移植事件是一组不特定于具体 CPU 的计数器。所有其他计数器都称为平台事件,在各种平台上可能不受支持。

可移植事件和平台事件的计数器都是在 .XML 文件中定义的,这些文件中提供了与计数器相关的特定值。对于不同的 CPU 有多个文件,因为不同类型的 CPU(例如 Intel CPU 和 AMD CPU)的数据不同。Visual Studio 2008 探查器使用此信息向性能测量的用户显示合适的计数器(可移植计数器和平台计数器)。

可移植事件

可移植事件包含以下事件:

常规事件

事件名称

事件说明

Instructions Retired

指示已执行完毕的指令的个数。

Non Halted Cycles

仅指示处理器未处于停止状态的那些时钟周期,例如等待 I/O 的时钟周期。

Front End Events

事件名称

事件说明

ITLB Misses

指示未命中的指令转换旁视缓冲区查找的个数。

分支事件

事件名称

事件说明

Branches Retired

指示已执行完毕的分支指令的个数。

Mis-predicted Branches

指示由于处理器预测路径错误而导致的误报分支。误报分支会影响性能,因为处理器必须放弃所有已完成的工作,然后在正确的路径上重新开始。

内存事件:

事件名称

事件说明

L2 Cache Read Misses

指示二级缓存读取未命中的次数。

L2 Cache Read References

指示二级缓存读取引用的次数。它包括加载未命中以及独占读取 (RFO) 未命中和命中次数。

Pentium IV 事件

Pentium IV 事件包含以下事件:

内存事件:

事件名称

事件说明

64K Alias Conflicts

指示 64K 别名冲突的个数。当虚拟内存地址引用的缓存行与已驻留在 L1 缓存中的其他缓存行的距离是 64K 字节的倍数时,将发生冲突。

Page Walk DTLB Misses

指示由于未命中数据转换旁视缓冲区而导致的页查询请求的个数。Page Walk DTLB Miss 会导致页面错误,以便操作系统可以将所需的页加载到表中。

L3 Cache Read Misses

指示三级缓存读取未命中的次数。它包括由于加载和独占读取 (RFO) 导致的未命中次数。

L3 Cache Read References

指示三级缓存读取引用的次数。它包括加载未命中以及独占读取 (RFO) 未命中和命中次数。

All MOB Load Replays

指示特定加载指令的个数,这种加载指令由于没有遵守存储到加载的正向限制而经历了存储器排序缓冲器 (MOB) 重播。

Load/Store Splits Completed

指示加载和存储拆分的次数。数据拆分会降低性能,因为数据拆分强制处理器分别读/写两个缓存行,然后再将这两部分数据粘贴到一起。

前端事件:

事件名称

事件说明

Page Walk ITLB Misses

指示由于 ITLB 未命中而导致的页查询请求的个数。

ITLB References

指示指令转换旁视缓冲区缓存访问。

分支事件:

事件名称

事件说明

Trace Cache Lookup Misses

指示由于跟踪缓存查找未命中而导致必须解码指令和生成跟踪时所发生的延迟。

浮点单元:

事件名称

事件说明

64-bit MMX Micro-Ops Retired

指示已撤销的 64 位 MMX 微操作的个数。一条汇编指令可分成一个或多个微操作。

X87 SIMD Micro-Ops Retired

指示已撤销的 X87 单指令多数据 (SIMD) 微操作的个数。一条汇编指令可分成一个或多个微操作。

X87 Floating Point Micro-Ops Retired

指示已撤销的 X87 浮点微操作的个数。一条汇编指令可分成一个或多个微操作。

Packed Single Precision Micro-Ops Retired

指示已撤销的压缩单精度微操作的个数。需要额外的指令才能解压缩数据。

Scalar Single Precision Micro-Ops Retired

指示已撤销的标量单精度微操作的个数。

Packed Double Precision Micro-Ops Retired

指示已撤销的压缩双精度微操作的个数。需要额外的指令才能解压缩数据。

Scalar Double Precision Micro-Ops Retired

指示已撤销的标量双精度微操作的个数。

128-bit MMX Micro-Ops Retired

指示已撤销的 128 位 MMX 微操作的个数。一条汇编指令可分成一个或多个微操作。

SSE Input Assists

指示处理 SSE/SSE2 浮点操作异常情况时需要辅助的次数。

查看可用计数器

Visual Studio UI

若要查看当前平台支持的所有 CPU 性能计数器的列表,请打开“性能会话”属性页,然后执行下列操作之一:

  • 选择“采样”,再从“样本事件”列表中选择“性能计数器”。

    - 或 -

  • 选择“CPU 计数器”,再选择“收集 CPU 计数器”。

若要查看当前平台支持的 Windows 性能计数器的列表,请打开“性能会话”属性页,然后选择“Windows 计数器”。

命令行

使用 VSPerfCmd.exe 的 /querycounters 选项可以打印当前平台支持的所有 CPU 性能计数器的列表。

请参见

任务

如何:选择采样事件

如何:收集 CPU 计数器数据

如何:收集 Windows 计数器数据

其他资源

概述(分析工具)