性能分析工具 VTuneAmplifier

性能分析工具
 
 
大量的可用于性能测量的工具可以说明性能测量的重要性。有的性能分析工具支持采样和基于编译器的应用程序性能分析,有时还具有上下文相关的调用图功能。有的工具则支持基于硬件事件的非侵入式且开销较低的采样和分析。还有的工具会利用现代微处理器提供的硬件性能计数器。部分工具可以发现与数据局部性、缓存利用率、线程交互等特性有关的性能问题。在本节中,我们简要讨论了适用于视频应用程序(尤其是GPU加速的应用程序)的性能测量的流行工具。第6章简要介绍其它的流行工具,例如Windows Perfmon,Windows Xperf和Intel Graphics Performance Analyzer。
 
VTuneAmplifier
VTune Amplifier XE 2013是Intel开发的流行的性能分析器。VTune支持各种编程语言的性能分析,包括C,C ++,FORTRAN,Assembly,Java,OpenCL和OpenMP 4.0。VTune为热点(hotspot),调用树,线程,锁,等待,DirectX,内存带宽等信息采集了丰富的性能数据,并为满足各种性能调整需求提供所需要的数据。
热点分析提供了一份使用CPU时间较高的函数的有序列表,用以指示可带来最大收益的性能调整的位置。热点分析还可以利用锁和等待分析来对多线程进行调整。这使用户能够快速查找信息来确定并行程序的性能降低的原因,这些可查找的信息包括:线程在锁等待上的时间,而线程在等待期间未充分利用CPU。诸如热点、锁定、等待之类的分析文件(profiles)都使用了可在Intel和兼容处理器上运行的软件数据收集器。该工具还提供高级热点分析。英特尔处理器的片上(on-chip)性能监视单元(PMU,Performance Monitoring Unit)通过采样硬件事件实现以极低的开销提高数据收集能力。因此,高级热点分析可以用PMU来识别很小的性能瓶颈并发现快速函数的性能瓶颈。此外,该工具还支持高级硬件事件分析文件,例如内存带宽分析、内存访问和分支错误预测,从而可以帮助发现调优机会。最新的版本还支持可选的堆栈样本集合,以标识程序的调用顺序。此外,该工具还支持在不重启应用的情况下分析远程系统。
 
GPUView
GPUView由Matthew Fisher和Steve Pronovost开发,GPUView是一种用于确定GPU和CPU性能的工具。后来,将GPUView合并到Windows Performance Toolkit中,并作为Windows SDK的一部分下载。GPUView用于DMA(直接内存访问)缓冲区处理以及视频硬件上所有其它视频处理过程的性能分析。对于GPU加速的DirectX应用程序,GPUView是一种功能强大的工具。可以用GPUView了解CPU上完成的工作与GPU上完成的工作之间的关系。GPUView使用ETW(Windows事件跟踪,Event Tracing for Windows)机制对系统和应用程序的性能以及资源使用情况进行详细测量并分析。数据收集过程包括:启用跟踪捕获,运行需要性能分析的测试应用程序的场景,停止数据捕获。数据收集最终会将数据保存在ETL(事件跟踪日志,event trace log)文件中。GPUView可以在同一台或不同计算机上分析ETL文件并以图5-11所示的图形格式显示ETL信息。
 
图5-11. 使用GPUView分析不同线程的活动
GPUView在硬件加速视频应用程序的分析和调试中非常有用。例如,如果视频播放应用程序存在掉帧现象,则会对用户体验造成负面影响。在这种情况下,使用GPUView检查事件跟踪可以帮助我们确定问题的原因所在。图5-12给出了正常播放视频的事件跟踪的例子,其中工作负载按固定间隔均匀分布。图5-12中的蓝色垂直线显示正常的vsync,红色垂直线显示当前事件。
 
图5-12. 正常播放视频的事件跟踪
图5-13展示了同一视频播放应用程序的事件轨迹,但是当帧显示截止时间到期时,播放程序会丢弃视频过期的视频帧。与图5-12中所示的正常模式相比,此轮廓看上去大不相同。在放大版本中,当前事件行是可见的,从中可以不难理解,当应用程序将视频数据包发送到GPU进行解码时,时常会出现长时间的延迟。因此,使用GPUView可以轻松识别并解决问题的根本原因。
 
缩小的播放分析文件
 
放大的播放分析文件
图5-13.
 
 

本文转自 https://software.intel.com/zh-cn/blogs/2010/11/10/amplxe-cl/
版权归原作者所有,如原作者有任何不允许转载之理由,本文将自行删除。

Intel® VTune™ Amplifier XE 2011 是新一代的性能分析工具,含图形界面以方便分析结果。但有时我们基于二点原因需要使用命令行来收集性能数据和进行分析:

1.含图形界面的工具自身消耗系统的资源

2.用户需要做自动(回溯)性能收集和分析的工作(Run Script),及产生报告

准备工作:

Windows环境下:Command Prompt > $Amplifier XE 2011\ampxe-vars.bat

Linux环境下:source  $vtune_amplifier_xe/amplxe-vars.sh

命令行句法

amplxe-cl <action-option> [modifier-options] 

解释

<action-option> 表示动作的类型,可以是下列之一:collect, collect-list, command, finalize, help, import, knob-list, report, report-list, version。常用的如“-collect” , “-report”, “-collect-list”

[modifier-option] 可以是以下一个或多个选项: allow-multiple-runs, callee-attribution-mode, csv-delimiter, cumulative-threshold-percent, data-limit, [no-]discard-raw-data, quiet, duration, filter, [no-]follow-child,  format, group-by, knob, limit, mrte-mode, report-output, result-dir,  resume-after, search-dir, start-paused, target-duration-type,  target-pid, target-process, user-data-dir, verbose

<target> 表示被分析的应用程序

[target options] 是指应用程序的参数

应用实例

1.列出本机所有支持的分析类型

amplxe-cl –collect-list

amplxe-cl –report-list; 可支持的报告类型

2.输入、分析VTune(TM)Performance Analyzer 的结果

如:amplxe-cl -import tbsf141.tb5 -r r001

如:amplxe-cl -report pmu-events -r r001 -group-by function

3.热点收集

amplxe-cl -collect hotspots -result-dir r0001hs -- ./gsexample2a datafile.txt

amplxe-cl -collect concurrency -r r0002cc -search-dir all:rp=/home/ompPrimes -- ./ompPrime1.icc

amplxe-cl -collect locksandwaits -user-data-dir /tmp -r r0003lw -- ./ompPrime1.icc

amplxe-cl -collect lightweight-hotspots -r r0004lh -- ./primes.gcc

amplxe-cl -collect nehalem_memory-access -duration 10; 系统热点收集

amplxe-cl -collect lightweight-hotspots -target-process gnome-power-manager -duration 10; 对象应用程序的性能数据收集

【注】如果目标对象是Service Application,建议手工加载程序,然后用Attach-to-process

amplxe-cl -collect concurrency -duration n -target-process program,或

amplxe-cl -collect concurrency -duration n -target-pid pid

特别的,最好使用“detach”去终止它(Duration可以设的长一点)

如:amplxe-cl -command detach -r r003hs

4.热点分析

4.a amplxe-cl -report hotspots -result-dir r001hs -group-by function -filter module=gsexample2a ; 仅列出模块gsexample2a相关的热点函数

4.b amplxe-cl -report hotspots -result-dir r001hs -call-stack-mode=all -group-by function; 列出所有的热点函数,包含链接库的

4.c amplxe-cl -report perf-detail -r r000hs -cumulative-threshold-percent 80; 列出占处理器时间80%的函数(模块)信息

4.d  amplxe-cl -report perf -csv-delimiter="," -r r000hs; 结果中加入分隔符

5.并行分析

5.a  amplxe-cl -report summary -r r0002cc; 显示汇总信息

5.b  amplxe-cl -report hotspots -r r0002cc -group-by function; 显示热点函数的并行度

5.c amplxe-cl -report hotspots -r r0002cc -format text -limit 1; 输出格式为text, 仅显示 Top 1

5.d amplxe-cl -report hotspots -r r0002cc -call-stack-mode=all -group-by function; 显示所有函数

6.锁和等待分析

6.1 amplxe-cl -report summary -user-data-dir /tmp -r r0003lw; 显示汇总结果

6.2 amplxe-cl -report hotspots -r r0003lw -group-by function-sync-obj;sync objects 的等待分析

7.Lowweight(轻量级)的热点及基于PMU Event分析

amplxe-cl -report hw-events -r r0004lh -group-by function -csv-delimiter=","

8.系统热点分析

amplxe-cl -report hw-events -r r007ma -group-by process

amplxe-cl -report hw-events -r r007ma -filter module=Xvnc -group-by function

9.目标模块的分析(要求目标模块带调试信息)

amplxe-cl -report hw-events -r r010lh -group-by function -filter module=gnome-power-manager

另:

1. 命令行上直接设定PMU的Events(不使用预定义的分析类型),进行性能数据收集,参看这篇文章

2. 热点分析中,自定义采样时间间隔,参看这篇文章

3. 如果工作目录不含 :执行文件,符号文件 和 源代码,需要对结果重新处理。如:Using “amplxe-cl -finalize --search-dir all:rp=new-dir -r result-dir” to solve this problem. You could use "bin", "sym", "src" instead of "all" if you only need to do one of them.

4. Now XE 2013 supports stack-sampling with hardware event-based sampling, add options "-knob enable-stack-collection=true -knob enable-call-counts=true"

5. Since XE 2013 Update 10, the user can know hot addresses or hot addresses with basic block from report. See this example:

# amplxe-cl -collect advanced-hotspots -- ./primes.icc

# amplxe-cl -report hw-events -filter module=primes.icc -source-object function=findPrimes -group-bybasic-block,address

posted @ 2022-08-02 11:49  bonelee  阅读(873)  评论(0编辑  收藏  举报