-
最新日志
最新评论
- 吴景鹏 发表于《自由软件日——华科站成功举办》
- Twinkle 发表于《Tech Lead, new start~》
- omycle 发表于《91%通过SCSA part2,认证持久战终于结束》
- sacs à main femme 发表于《拿到我心仪的IBM T61》
- 晚点末班车 发表于《自由软件日——华科站成功举办》
存档页
分类
功能
备案/许可证编号
湘ICP备09016480号
Tag Archives: profile
带你走进性能评测的世界
Solaris 10中的DTrace(Dynamic Tracing)作为过去十年中在操作系统方面最具意义的革新之一,确实是一个非常优秀的性能分析工具。用户能够通过DTrace动态检测操作系统内核和用户进程,以更精确地掌握系统的资源使用状况,提高系统性能,减少支持成本,并进行有效的调节。接下来将通过介绍各种性能分析工具,带你走进性能评测的世界。 1静态分析工具:主要有源代码插装(编译时插装)和采样两种机制。 1.1编译时插装(CITs)工具 能够得到函数的调用次数及调用图,从而发现程序的热点(占用执行时间最多的函数或代码块),其代表产品有Gprof。 CITs被认为是最古老的静态插装技术,但仍然在全世界得到了广泛的使用。它基于源代码级别,如果程序使用的一些外部库或框架的源代码不可及时,它不适合,所以它仅适用于那些仅含少量外部代码的简单程序。 Gprof是一个跨平台的性能分析工具,它在编译时对程序进行插装。在程序的每次函数调用前对目标程序的源代码插入一些监控函数,产生的二进制代码交给一个包装器来执行,在每次函数调用时收集程序的性能信息。 1.2采样工具 采样工具一般是在程序执行的时候通过暂停来记录程序记数器的值及其它与系统当前状态相关的信息。Qprof是Linux平台上获取性能信息的用户级采样工具,当然用户必须设置采样频率和要统计的事件等配置信息。 1.3基于硬件计数器的工具 在目前的CPU里都有一些可编程的硬件计数器,能让开发者在程序执行的底层来分析程序的性能。PerfSuite是Linux平台下一个基于硬件计数器的工具,实现了一个轻量级的应用程序接口。 1.4混合型静态分析工具 传统的采样工具由于不能监控硬件事件,所以不能在各个抽象层次对程序进行profile;同样,硬件计数器技术由于仅仅工作在硬件层,不能获得详细的软件性能信息。但是,如果将两种技术结合起来,就能精确地得到程序在各个层次的性能信息。 vTune是Intel公司开发的一个将硬件计数器和采样技术结合起来的跨平台的性能分析工具。它能让开发者得到程序执行中全面的性能信息,但相对单一技术来说显得相对复杂。 2动态分析工具 2.1二进制插装工具 二进制插装工具通过在程序执行的过程中插入二进制分析代码来获取程序性能信息。Pin是一个基于Linux的性能分析框架,提供了一套动态插装的应用程序接口。 2.2基于探针的工具 探针是一种动态的机制,我们可以有选择地激活嵌入在各个层次的探针,从而来获取应用程序、库及内核等系统级别的性能信息。DTrace 是 Solaris 10 提供的一种高级的动态跟踪工具。DTrace中一个很重要的概念就是"探针(Probe)"。在普通的Solaris 10内核中,有几万个探针,而且会随着模块的加载而增加。探针在激活前对核心是不会有任何影响的,当探针被启用后,Solaris会动态地在内核中加入相应的指令来触发相应的操作。 3混合型工具 为了得到更多更全面的性能信息,可以将静态和动态分析技术结合起来。HP Caliper是HP-UX的一个混合型性能分析工具。它是通过对目标程序的每个函数插入中断指令来实现。程序执行时,每次遇到一个中断,HP Caliper就获得程序的控制权并插装相应的代码。 参考文献:http://www.cs.wustl.edu/~jain/cse567-06/sw_monitors1.htm