VTUNE 性能分析器之简介

提交新文章

2011年12月27日 07:00


Vtune 性能分析器



5.1 什么是Vtune

Vtune可视化性能分析器(Intel VTune Performance Analyzer)是一个用于分析和优化程序性能的工具,作为Intel为众多开发者们提供的专门针对寻找软硬件性能瓶颈的一款分析工具,它能帮助你确定程序的热点(hotspot),帮助你找到导致性能不理想的原因,从而让你能据此对程序进行优化。

概括起来Vtune性能分析器能通过以下的手段帮助你发现和定位程序中的性能问题:

  1. 从当前系统中收集性能数据
  2. 从系统到源代码不同的层次上,以不同的互动形式来组织和展示数据
  3. 发现潜在的性能问题,并提出改进措施。


5.2 基础概念简述

VTune™ Performance Analyzer能够帮助用户定位的程序中的“热点”。所谓热点就是程序中花费执行时间最长的代码段。但是有时候,光知道热点的位置是不够的,还要找出导致热点的原因已经如何去改进。使用Vtune性能分析器,你可以通过跟踪主要的函数调用和监视特定的处理器事件,比如cache未命中,程序段的触发,你还可以通过计算事件百分比(event ratios)来确定是否某些处理器事件导致了热点的发生。

Vtuen性能分析器收集应用程序和系统上的性能数据,然后以图形和表格的形式显示出来。从这些显示的数据中,用户能够分析应用程序的性能,能够知道程序中哪个部分执行的慢,为什么执行得慢。下面是Vtune性能分析器显示的性能数据的几种形式:


1.采样:

以图形化方式显示程序执行的指令地址直方图,帮助确定代码中的性能瓶颈。采样数据采集完毕之后,可以按进程、线程、模块、函数或指令地址进行查看。采样只需极低的性能开销,并且不需要修改代码。通过采样图,可以方便地了解到哪些代码是处于活动密集区,如图中是按模块划分,最长的紫红色区域所对应的代码模块,代表的就是HotSpot,在开发中需要着重优化。

2.调用图:

调用图包含以下信息:

  • 函数被调用次数及调用它的函数
  • 在每个函数或方法上耗费的时间
  • 函数耗费在阻塞或等待上的时间
  • 经过调用层次结构的关键路径
  • 耗费时间占总时间n%以上的函数,其中n 由用户指定。

3.计数器监视器:

计数器监视器"可实时查看应用程序的性能。可监视200个以上可用操作系统计数器中的任何一个。用户可创建自定义的性能监视器,来监视软、硬件性能。计数信息包括:重定向网络错误率,内存占用量,上下文切换率,CPU 时间等。

读者可以通过下面的小例子来初步认识一下Vtune的应用:

Vtune性能分析器一条形图显示性能数据信息,矩形越长的表示对应的程序段的执行时间越长,这也就是程序中的热点。如下图:

点击上图中的红色框时,Vtune将自动定位到对应的程序段(比如函数等):

性能分析器能够帮助你优化代码,并最大程度地利用intel处理器的体系结构。一般来说,分析优化应用程序和系统的操作流程如下图所示:

为了优化应用程序或者系统,用户可通过下面的操作来寻找出性能的瓶颈:

  • 弄清内存和处理器等系统资源利用方式的相关信息来寻找系统级别的性能瓶颈
  • 测定应用程序中的每一个模块和函数的执行时间
  • 弄清不同的模块如何影响相互间的性能
  • 找到程序中最费时间的函数调用和程序中的函数调用顺序
  • 弄清在处理器级别上的应用程序是如何执行的,以找到在微结构层次上的性能问题

Vtune性能分析器能够通过三种类型的数据收集方式来自动收集上面所述的信息。这三种方式就是本节刚开始时讲到的采样、调用图和计数器监视器。用户可以根据这三种方式的特点来选择某一种或者混合使用的方式来收集相关的信息。这三种数据收集方式的特点,读者可以自行参考Vtune性能分析器的用户帮助文件

使用Vtune(TM)性能分析器优化应用程序,首先必须要建立一个工程(project)。所谓工程就是一个包含有与应用程序相关的所有优化信息。在一个工程内,用户可以创建一个活动(Activity)。所谓的活动包含有用户的应用程序的信息和一个或多个数据收集器(data collectors)的配置信息。一旦你运行一个活动,Vtune性能分析器将启动应用程序和数据收集器,开始自动收集相关数据信息。

活动的运行将产生一些活动结果(Activity Result),这些结果保存和活动一起保存在工程的目录下。到此,我们可以:

  • 在一个活动中保存应用程序的执行和数据信息收集器的配置信息
  • 修改你的程序代码或者系统,并使用相同的数据收集器配置,运行若干次该应用程序对应的活动
  • 把活动运行结果与目标结果进行比较,对性能改进做出评估
  • 合并多个活动的运行结果。