PMU性能分析系列1 - 相关概念
2012-08-16 00:59
357 查看
http://blog.csdn.net/gengshenghong/article/details/7383438?1345050035
类似文章:
http://blog.sina.com.cn/s/blog_6cfddec10100mck9.html
http://bbs.lmtw.com/dispbbs.asp?boardid=20&id=113723
http://topic.csdn.net/u/20080527/17/44d9ebf9-959d-4495-8456-62e4b2d40f05.html
http://www.cnblogs.com/konlil/archive/2011/05/17/2048976.html
http://software.intel.com/zh-cn/blogs/2009/03/18/intelr-coretm-i7-intelr-vtunetm-performance-analyzer/
http://software.intel.com/zh-cn/blogs/2010/07/01/intelr-coretm-2-duo/
http://www.sokerspace.com/modules/planet/view.article.php/30561
1. 什么是PMU
Performance Monitor Unit,性能监视单元,其实CPU提供的一个单元,属于硬件的范畴。通过访问相关的寄存器能读取到CPU的一些性能数据,目前大部分CPU都会提供相应的PMU,下面主要学习Intel系列CPU的PMU。
2. 主要参考资料:
要了解PMU,对于系统编程人员,参考《Intel® 64 and IA-32 Architectures Software Developer Manuals》里面有相关的介绍(Volumn3, chapter18 && chapter19)。
对于使用VTune等性能工具,只需要了解相关的PMU事件就参考其工具文档了。
3. PMU事件分类
architectural performance events: compatible among processor families,即在不同的处理器之间是兼容的。
non-architectural performance events: model-specific,即型号相关的,不同型号的处理器有不同的一些事件。
很古老的一些处理器没有architectural事件。
当然,architectural类别的事件又提供了版本的概念,不同的处理器能支持的版本也会不一样,所以并不是说所有的支持architectural事件的处理器都支持同样数量的architectural事件。
说明:architectural事件是在Intel Core Solo and Intel Core Duo processors中开始引入的。
4. PMU事件计数的获取
对于系统编程人员,可能需要获取CPU的PMU事件计数,这就需要利用CPUID、CR(control register)、MSR(model specific registers)等寄存器来读取即可。一般的性能分析工具,其实就是通过分析CPU事件来提供性能数据的。
5. 关于fix counter和programmable counter
固定计数器和可编程计数器。在相关文档中经常看到这两个词,有些事件是通过固定计数器获取的,有些(大部分)是通过可编程计数器获取。参考18.4.1 Fixed-function Performance Counters了解固定功能计数器,其硬件上的区别不太清楚,也没有找到什么文档介绍。)一般来说:
上面提到过,事件分类为architectural events和non-architectural events,其中architectural事件数量相对较少,因为是各个处理器都会支持的事件,architectural事件可以通过general-purpose performance counters(普通功能性能计数器)或fixed-function performance counters(固定功能性能计数器)来收集;non-architectural事件数量相对较多,不同的处理器不一样,non-architectural事件一般是通过普通功能性能计数器收集。可见,fixed
counter的数量整体比例更少了。
PS:fixed counter对应的事件基本上目前就三个:Unhalted core cycles, unhalted core reference cycles, instructions retired。即时钟周期数、参考时钟周期数和有效执行的指令计数。
6. Hyper-threading对性能事件计数的影响
在性能计数中,最好不要开启HT,这是由于某些事件是基于核的,有些事件是基于thread的,开启了HT就会使得技术结果更加复杂。这也是为什么某些处理器有CPU_CLK_UNHALTED.CORE事件,而有些处理器为CPU_CLK_UNHALTED.THREAD。
类似文章:
http://blog.sina.com.cn/s/blog_6cfddec10100mck9.html
http://bbs.lmtw.com/dispbbs.asp?boardid=20&id=113723
http://topic.csdn.net/u/20080527/17/44d9ebf9-959d-4495-8456-62e4b2d40f05.html
http://www.cnblogs.com/konlil/archive/2011/05/17/2048976.html
http://software.intel.com/zh-cn/blogs/2009/03/18/intelr-coretm-i7-intelr-vtunetm-performance-analyzer/
http://software.intel.com/zh-cn/blogs/2010/07/01/intelr-coretm-2-duo/
http://www.sokerspace.com/modules/planet/view.article.php/30561
1. 什么是PMU
Performance Monitor Unit,性能监视单元,其实CPU提供的一个单元,属于硬件的范畴。通过访问相关的寄存器能读取到CPU的一些性能数据,目前大部分CPU都会提供相应的PMU,下面主要学习Intel系列CPU的PMU。
2. 主要参考资料:
要了解PMU,对于系统编程人员,参考《Intel® 64 and IA-32 Architectures Software Developer Manuals》里面有相关的介绍(Volumn3, chapter18 && chapter19)。
对于使用VTune等性能工具,只需要了解相关的PMU事件就参考其工具文档了。
3. PMU事件分类
architectural performance events: compatible among processor families,即在不同的处理器之间是兼容的。
non-architectural performance events: model-specific,即型号相关的,不同型号的处理器有不同的一些事件。
很古老的一些处理器没有architectural事件。
当然,architectural类别的事件又提供了版本的概念,不同的处理器能支持的版本也会不一样,所以并不是说所有的支持architectural事件的处理器都支持同样数量的architectural事件。
说明:architectural事件是在Intel Core Solo and Intel Core Duo processors中开始引入的。
4. PMU事件计数的获取
对于系统编程人员,可能需要获取CPU的PMU事件计数,这就需要利用CPUID、CR(control register)、MSR(model specific registers)等寄存器来读取即可。一般的性能分析工具,其实就是通过分析CPU事件来提供性能数据的。
5. 关于fix counter和programmable counter
固定计数器和可编程计数器。在相关文档中经常看到这两个词,有些事件是通过固定计数器获取的,有些(大部分)是通过可编程计数器获取。参考18.4.1 Fixed-function Performance Counters了解固定功能计数器,其硬件上的区别不太清楚,也没有找到什么文档介绍。)一般来说:
上面提到过,事件分类为architectural events和non-architectural events,其中architectural事件数量相对较少,因为是各个处理器都会支持的事件,architectural事件可以通过general-purpose performance counters(普通功能性能计数器)或fixed-function performance counters(固定功能性能计数器)来收集;non-architectural事件数量相对较多,不同的处理器不一样,non-architectural事件一般是通过普通功能性能计数器收集。可见,fixed
counter的数量整体比例更少了。
PS:fixed counter对应的事件基本上目前就三个:Unhalted core cycles, unhalted core reference cycles, instructions retired。即时钟周期数、参考时钟周期数和有效执行的指令计数。
6. Hyper-threading对性能事件计数的影响
在性能计数中,最好不要开启HT,这是由于某些事件是基于核的,有些事件是基于thread的,开启了HT就会使得技术结果更加复杂。这也是为什么某些处理器有CPU_CLK_UNHALTED.CORE事件,而有些处理器为CPU_CLK_UNHALTED.THREAD。
相关文章推荐
- PMU性能分析系列1 - 相关事件的理解 - Basic Performance Tuning Events
- 性能分析相关概念
- Linux 性能分析相关概念(来自IBM红皮书)
- 大型企业网络配置系列课程详解(八) --VoIP的配置与相关概念的理解 推荐
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- Amazon Alexa系列介绍(4)--相关术语和概念理解
- 大型企业网络配置系列课程详解(七) --NAT的配置与相关概念的理解
- 【虫师--系列20】性能测试知多少---性能分析与调优的原理
- NIO系列6:流行 NIO Framework netty 和 mina 性能测评与分析
- Hive的jion性能分析的相关文章
- redis常见重要性能指标数据分析和相关问题解决方案
- 型企业网络配置系列课程详解(二) --OSPF多区域配置与相关概念的理解
- 视频内容分析技术相关概念
- 大型企业网络配置系列课程详解(四) --HSRP和VRRP配置与相关概念的理解(一) 推荐
- Spark SQL概念学习系列之性能调优
- Unity 性能优化 系列(一)基本概念
- 概念描述的属性相关分析步骤
- 数据分析和挖掘性能的一些概念
- 【脚本语言系列】关于Python性能分析工具timeit, 你需要知道的事
- Docker 快速上手系列(1): 镜像的概念及相关操作