PMU性能分析系列1 - 相关事件的理解 - Basic Performance Tuning Events

原创 2012年03月22日 21:59:16

以Intel(R) Microarchitecture Code Name Nehalem系列的CPU为例,以VTune工具作为测试手段来理解(因为我的CPU是这个系列的。)


基本的性能调优事件

使用这些事件能了解代码中最耗时和执行最多指令的部分
其中三个事件是fixed counter(固定计数器,参考18.4.1 Fixed-function Performance Counters了解其概念),简单理解它们用于计数对应的预定义的一些事件。


1. CPU_CLK_UNHALTED

Programable counter version of the unhalted cycle counter

表示非停机状态的机器周期数。

很显然,对于一个程序,这个事件的数目越少越好,表明其运行状态(非停机状态)消耗的机器周期少,即耗时少。其有三个扩展:

THREAD_P:非停机状态下线程的机器周期。线程在运行HLT指令的时候进入halt state(停机状态)。由于CPU核的频率会不断变化,这个事件数目和时间的比例是变化的。

TOTAL_CYCLES:CPU机器周期数目的总和,halted+unhalted(除了处于深度睡眠状态)。

REF_P:线程在非停机状态下,计数base clock(133Mhz)的参考机器周期数目。很显然,这个事件不会被频率影响,就好象是线程运行一直运行在一个最大的频率一样。


2. CPU_CLK_UNHALTED.REF

Reference cycles when thread is not halted (fixed counter)

和上面的CPU_CLK_UNHALTED的REF_P的含义相同。


3. CPU_CLK_UNHALTED.THREAD

Cycles when thread is not halted (fixed counter)

和上面的CPU_CLK_UNHALTED的THREAD_P的含义相同。


4. INST_RETIRED.ANY

Instructions retired ( fixed counter ) 

表示消耗的指令数,计数执行过程中消耗的指令数。

说明:关于retire,一般表示退休什么的意思,这里其实其含义就是“消耗”,retirement表示指令隐退,或者可以理解为其技术指令从执行到退出的那个退出的次数,自然,其实就表示消耗的指令数了。:)

对于包含多个微操作(micro-op)的指令,其只对最后一个微操作的指令引退进行计数,即只计数一次。


5. THREAD_ACTIVE

Cycles thread is active

线程处于active状态下的机器周期数。



性能指标之CPI:

Clockticks per Instructions Retired (CPI)

即Cycles per Instructions,表示每一条指令消耗的时钟周期。这是一个基础的性能指标之一,在进行性能分析时,其一般是首先会分析的一个指标。

很显然,CPI的值越小越好,CPI的计算为:Clockticks / Instructions Retired。如:

CPI=CPU_CLK_UNHALTED.THREAD/INST_RETIRED.ANY

说明:如果要计算一个函数的CPI,就使用相应的事件计算,这里的例子是计算整个thread的CPI。

根据经验值,如果CPI小于0.75,那么认为其性能是不错的。如果大于0.75,就需要考虑进行优化了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

PMU性能分析系列1 - 相关概念

类似文章: http://blog.sina.com.cn/s/blog_6cfddec10100mck9.html http://bbs.lmtw.com/dispbbs.asp?boardid...

breakpoint和watchpoint/data breakpoint

breakpoint很容易理解,是程序的断点。在程序某一个地方设置断点,那么程序运行到此处就会暂停。 那么,watchpoint呢? watchpoint是一种特殊的断点(所以,首先它还是断点)。...

Linux下的系统性能调优工具——Perf

参考以下链接文章整理: Perf -- Linux下的系统性能调优工具,第 1 部分 Perf -- Linux下的系统性能调优工具,第 2 部分 感谢原作者,让我知道了性能调优也是如此有趣,L...

英特尔® Performance Counter Monitor(PCM)--测量 CPU 利用率的更好方法

http://software.intel.com/zh-cn/articles/intel-performance-counter-monitor 下载代码示例 IntelPerformance...

Intel 性能监视器

转自:http://lenky.info/?p=2207 全文来自Intel开发者手册:Intel? 64 and IA-32 Architectures Software Developer’...

intel 性能监控计数器PMC寄存器详解

所有内容来自intel官方手册,章节号已给出。。。 一  以下内容来自(P279):30.1 PERFORMANCE MONITORING OVERVIEW 从Pe...

VTune Basic Notes 1

1. VTune文档: Getting Started Tutorial:http://software.intel.com/sites/products/documentation/hpc/amp...

Intel处理器MSR学习

Intel IA32软件开发者手册第3卷第35章中介绍了MSR。但是,该章节并没有十分详细地描述,基本上就给出一个地址并作简单说明。而网络上能搜索到文章,也是点到即止。本文结合IA32开发手册,以及c...

PMU性能分析系列1 - 相关概念

http://blog.csdn.net/gengshenghong/article/details/7383438?1345050035   类似文章: http://blog.sin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)