剖析的艺术:使用Intel VTune Amplifier,第3部分

原文:https://hadibrais.wordpress.com/2017/03/24/the-art-of-profiling-using-intel-vtune-amplifier-part-3/

Hadi Brais 著

      在本系列中的第1和第2部分中,我已经讨论了剖析的基本知识以及为VTune提供了一个介绍。现在是时候创建、配置和运行一个分析了。对于我们感觉兴趣的性能热点查找,有以下两种方式可供选择:基本热点,高级热点。前者使用的是TBS,后者是EBS。在这个系统中都会讨论它们,在此我将选择基本热点作为起点。在真实世界场景中,您也可以选择高级热点,并使用更小的采样间隔,但与此同时也会带来更为显著的开销。

       在运行分析之前,首先您必需先配置分析目标和分析类型。在基本热点分析中,需要注意以下几个重要参数:

剖析模式:可以是自动、本地、混合或托管之一。如果程序的代码在可执行的二进制形式中可用, 则说它是本地的,换句话说,代码需要模拟器的为托管,如Java或.Net。该参数是为了告诉VTune在剖析什么类型的代码。在托管模式中,仅有托管代码会被剖析,如果您关心的只是这部分时,请选择它,这有助于改善剖析性能。在本地、混合模式中,所有代码都会被剖析,但仅会对相关数据进行保留和分析。在自动模式中,VTune将会自行分析输入的二进制从而选择合适的模式。

分析子进程:很明显,当剖析程序分叉(forked)或创建一个新进程时,用于指定VTune是否分析该进程。

时间估量(Duration time estimate):用于指定当运行目标时未处理剖析的时间。VTune使用这个估量值来减小采样间隔和减少剖析结果的大小。

剖析大小限制(Profile size limit):指定剖析结果阈值大小,单位MB。当出现VTune暂停数据收集,但目标仍运行时,会出现一个空白跨度。VTune能在这个暂停点上继续进行分析及显示收集数据。

       其他一些选项一目了然,或是非常重要但仅支持EBS,我会在该教程的后面部分再进行讨论。

       对于密码破解程序,默认的选项已经足够了。选择基本热点分析,默认的采样间隔(大概是10毫秒),开始进行分析。程序将在运行一段时间后结束,在结束时,VTune将自动处理和显示结果,下一(next)部分再进行详细说明。

       注意一下,由于目标会打印输出到终端,在没有输出的情况下将快上很多。VTune会对目标输出终端重定向到自己的终端。VTune自身不会输出到终端,如果目标也是如此,那么以终端方式启动就变得很重要了。