转:怎么选择正确的CPU时钟进行性能测量?
2012-07-22 13:37
253 查看
虽然CPU时钟(clockticks)是一个基于英特尔架构共有的事件(任何Intel的处理器都含有此类事件)。但是每个处理器上,事件的名称会有所不同。以下以Intel(R)Sandy Bridge 处理器为例看看有那些CPU的时钟可以使用。
CPU_CLK_UNHALTED.THREAD 记录Core Cycles, 当你的线程处于非待机状态。我们知道,由于Intel (R) Step Speed 技术,核的频率可能由于CPU的“忙”或“不忙”随时发生变化。如果核上一直很忙(密集型计算)那么核的频率是个常量,这样程序的执行时间(Elapsed Time)可以计算出来:Elpased_Time = CPU_CLK_UNHALTED.THREAD / CPU_frequency (Seconds)
CPU_CLK_UHHANLTED.REF_TSC 也是用于线程处于非待机状态下记录clocks。所不同的是这个事件计数器不会受到核的频率改变的影响。大家可能还记得有条指令叫RDTSC。TSC是通过震荡电路分频产生的,供操作系统使用(作为定时器,频率稍低于主频,但不受主频的变频影响)。这个事件也可以用来计算程序的执行时间,事件数(clocks)除以TSC的频率(TSC的频率查阅手册)
CPU_CLK_UNHALTED.REF_XCLK 是一种超低频的时钟,也是由震荡电路分频产生。当系统不是处于待机状态,100Mhz的低频时钟用于维护CPU核心,内存,Uncore和外围电路上。100Mhz(3000MHz (30x 100MHz))的固定频率比Nehalem架构的133Mhz更省电。
有二点说明:
1. 性能调试时,尽量不使用Intel® Turbo Boost超频技术,否则性能计数器的结果较为复杂,难以解释。
2. 性能调试时,尽量不使用Intel® Hyper-Threading 技术,因为有些性能事件是基于每个线程,有些是基于每个核的。
总结一下:当使用VTune™ Amplifier XE进行CPU耗时测量(热点分析)时,如果目标应用程序是密集型计算(期间主频不变),选择CPU_CLK_UNHALTED.THREAD;否则应该选用CPU_CLK_UHHANLTED.REF_TSC计时。
CPU_CLK_UNHALTED.THREAD 记录Core Cycles, 当你的线程处于非待机状态。我们知道,由于Intel (R) Step Speed 技术,核的频率可能由于CPU的“忙”或“不忙”随时发生变化。如果核上一直很忙(密集型计算)那么核的频率是个常量,这样程序的执行时间(Elapsed Time)可以计算出来:Elpased_Time = CPU_CLK_UNHALTED.THREAD / CPU_frequency (Seconds)
CPU_CLK_UHHANLTED.REF_TSC 也是用于线程处于非待机状态下记录clocks。所不同的是这个事件计数器不会受到核的频率改变的影响。大家可能还记得有条指令叫RDTSC。TSC是通过震荡电路分频产生的,供操作系统使用(作为定时器,频率稍低于主频,但不受主频的变频影响)。这个事件也可以用来计算程序的执行时间,事件数(clocks)除以TSC的频率(TSC的频率查阅手册)
CPU_CLK_UNHALTED.REF_XCLK 是一种超低频的时钟,也是由震荡电路分频产生。当系统不是处于待机状态,100Mhz的低频时钟用于维护CPU核心,内存,Uncore和外围电路上。100Mhz(3000MHz (30x 100MHz))的固定频率比Nehalem架构的133Mhz更省电。
有二点说明:
1. 性能调试时,尽量不使用Intel® Turbo Boost超频技术,否则性能计数器的结果较为复杂,难以解释。
2. 性能调试时,尽量不使用Intel® Hyper-Threading 技术,因为有些性能事件是基于每个线程,有些是基于每个核的。
总结一下:当使用VTune™ Amplifier XE进行CPU耗时测量(热点分析)时,如果目标应用程序是密集型计算(期间主频不变),选择CPU_CLK_UNHALTED.THREAD;否则应该选用CPU_CLK_UHHANLTED.REF_TSC计时。
相关文章推荐
- XSD版本到底怎么选择正确的进行配置
- 你说你最美丽、最艳丽,而且还是唯一的正确选择!我该怎么办?
- UCOSIII怎么配置的时钟?(时钟源头选择,倍频)
- (转)怎么提高基于ArcSDE存储的要素类大数据量要素选择的性能 (译)
- 在C#“.NET技术”中选择正确的集合进行编码
- WIN8系统中 任务管理器 性能栏 显示CPU利用率(已暂停)怎么回事?
- 笔记本不同CPU性能对比,为你购买笔记本选择做参考
- 当对数据进行更改后发现数据不正确,想要恢复但是不是知道怎么找回
- Struts Checkbox radio怎么进行动态的选择
- 改善C#程序的建议3:在C#中选择正确的集合进行编码
- KVM虚拟机绑定物理CPU进行性能调优
- 数据需要找回怎么办?----我们如何选择正确的恢复/退回方式?
- mysql(三)复合索引中列的顺序怎么选择提供性能
- 在进行网站开发时应该怎么选择域名
- for VS. foreach 那个性能更高,为什么,怎么选择
- for VS. foreach 那个性能更高,为什么,怎么选择
- 教您正确理解时钟器件的抖动性能
- 在C#中选择正确的集合进行编码
- 性能问题——CPU高了怎么办?
- 正确选择排序提高查询性能(转)