vtune使用笔记
1.介绍
Vtune是intel的一款性能分析工具,其既可以分析某种应用的特性,也可以检测整个系统的特性,能够找出热点瓶颈的所在,给开发者提供良好的优化思路。
2.Vtune下载,安装Vtune有windows版本和linux版本,有收费的,试用的,免费的。本人使用的是一款试用版本,vtune地址http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/,下载前需要注册账号,得到序列号,安装的时候需要用到。
安装vtune需要在root账号下,或者使用sudo进行安装,安装成功后,需要将用户加到vtune这个group下,才能够使用vtune。Usermod –aG vtune user
3.vtune使用3.1 分析应用程序
amplxe-cl-collect hotspots -r test_hot ./test
通过上面的命令可以收集到test应用的热点数据,保存在test_hot目录下。还可收集locksandwaits,lightweight-hotspots等类型数据,具体可以使用amplxe-cl–help查看详细方法,或者man amplxe-cl,当然source /opt/intel/vtune_amplifier_xe_2011/amplxe-vars.sh(这是vtune的安装成功后得到的文件)之后,vtune命令才能够直接用
需要注意的是,在检测java应用的时候,如果需要得到jit的信息,在运行前,需要设置环境变量export?AMPLXE_EXPERIMENTAL=1
3.2 Amplxe-runsa和Amplxe-runss
Amplxe-runsa,系统模式的性能分析;Amplxe-runss,用户模式的性能分析。
Amplxe-runsa能够分析出整个系统的热点瓶颈,使用实例如下所示,其中test为收集数据目录。amplxe-runsa –target=host-r ./test
Amplxe-runss分析的是用户模式下的热点瓶颈,使用实例如下,test为数据数据目录,app为应用。amplxe-runss? -r test -- app
amplxe-runss可以attach到某个进程上去,进行监测收集。amplxe-runss –tcpu –r ./test -target-pid=<integer> -interval=<integer>
3.3生成统计数据
用命令行生成统计结果,amplxe-cl-report hotspots -r test_hot -report-out test_out,其中hotspots为上面collect的收集数据类型,test_hot为收集数据的目录test_out为统计的结果文件。
用vtune自带的图形工具查看结果,例如在ubuntu下,使用ampx-cl-gui。在图形界面下看到的数据会丰富一些,有助于分析,例如能够看到CPI等信息。
Amplxe-cl,amplxe-runss,amplxe-runsa都可以attach一个进程,-target-pid=integer,但是出来的report是没有jit信息的,用vtune起动的应用,最终才会生成带jit信息的report
4.使用过程中的出错情况Specjbb lightweight-hotspots
Using result path `/home/xxx/test/specjbb2005/specjbb_hot'
Executing actions 16 % Loading data files
Warning: Cannot load data file`/home/xxx/test/specjbb2005/specjbb_hot/d?????????? ??????????????????????????????????????????????????????????????????ata.0/tbs1381903680.tb6'(tbrw call "TBRW_dobind(tbrwFile->getHandle(), streamIn????????????????????????????????????????????????????????????????????????????dex)" failed: Invalid sample file (24)).
Executing actions 50 % done
Error: Error 0x4000001e (Cannot load rawcollector data)
上面的报错是因为sample数量太多了,因此在生成lightweight-hotspots的时候会出错,在减少采样的情况下,可以避免上面的错误
解决办法:
加参数-target-duration-type=medium,这时产生的结果数据文件较大,windows下vtune gui打开很长时间没有反应
将参数设置为-target-duration-type=long,这是产生的文件会小一些,vtunegui打开就没什么问题了。
?
实际上还有个参数-duration xxx,xxx单位为seconds,就是让vtune检测xxx这些秒,将数值设置得小一些,也可以达到上面的效果,不过只是监控了程序的一部分,应用程序没有完全跑完。