使用Performance Analyzer进行Linux分析

使用Performance Analyzer进行Linux分析


同事们,我发现谈论一个方便且免费的Linux / Solaris代码分析器很有用。 它是Sun / Oracle Developer Studio软件包[1]的一部分。 在我看来,此开发环境的其他部分没有用,但是名为Performance Analyzer的探查器非常成功。 它易于使用,清晰方便地安排结果分析。 我认为,探查器仍然优于许多Linux同类产品。 使用此工具,使用gprof似乎很奇怪,而且浪费时间。


如果您不打算立即使用Performance Analyzer,则无法继续阅读。 只要记住,存在这样的产品。 如果有趣的话,欢迎您。


探查器由两部分组成:收集-启动应用程序并收集数据,记录实验结果; Analyzer是一个图形界面,可读取实验数据,并为方便分析热点和函数调用树提供了机会。


简要介绍重要的优点和缺点:


优点:


  • 免费;
  • 不需要重新编译代码和链接可执行文件;
  • 与gnu和sun编译器一起使用;
  • 收集数据时不改变程序的执行时间;
  • 它具有直观的图形界面;
  • 配备先进的命令行界面进行自动分析;
  • 让您快速查看编译器的结果;
  • 有一个统计分析器,即使不是特别费力的零件也足够准确;
  • 方便地对几个程序启动进行分析和比较分析;
  • 不会扭曲结果。

一些缺点:


  • 图形界面是用Java编写的。 有时它在启动时崩溃,简单的重新启动会有所帮助;
  • 仅测量CPU时间;如果可以修复内核,则可以消除此限制;
  • 在多线程应用程序中,函数花费的时间是每个线程在此函数中花费的时间的总和;
  • 统计分析器比较嘈杂,因此很难优化周期。

平台类


正式而言,Oracle Developer Studio仅支持Solaris和Oracle Linux。 实际上,我已经在Redhat,CentOS和Ubuntu上成功使用了它。 收集/分析器我仅用于优化C / C ++ / Fortran应用程序。 文档指出该工具还可以处理Java项目。


运行并分析结果


当然,代码分析始于构建可执行文件。 函数名称不应在其中删除,否则将无任何分析。 如果要查看分析器中的代码行,则需要调试符号。 当然,首先要配置您喜欢的优化选项。 在某些情况下,无需优化就可以分析代码很有用,但这很少见。 例如,如果您只需要查看调用图,而不衡量性能。


因此,开始时,您需要像往常一样收集可执行文件,例如:


g++ -O3 –g example.c –o ex 

第二步是从collect运行:


 $pathToSunStudio/collect ./ex 

通过分析器的工作,在当前目录中创建了实验test.N.er的子目录,其中N是起始编号。 (重要提示:如果您的程序被中断,则实验目录将被破坏)。


最有趣的步骤是启动GUI:


 $pathToSunStudio/analyzer test.1.er 

在我们的简单示例中,我们将直接从GUI分析器中了解代码。 我们的示例计算2到20,000,000整数的自然对数和十进制对数之和,“暖”线以黄色突出显示。



让我们继续进入“繁重的功能”列表。 最初,按功能本身所花费的时间(不包括时间)对功能进行排序。 您可以按函数及其子项中的时间总和(包括时间)进行排序。



如预期的那样,您可以在调用堆栈中四处走动。 在我们的简单示例中,我们看到在t1()中,我们来自main() ,并且sumlog()函数占用了整个程序的一半执行时间。



对于自动化非常方便,可以使用命令行提取数据。 例如:


 er_print -functions test.1.er test.2.er 

从两次开始打印功能的运行时间。


与时俱进
 <p>Functions sorted by metric: Exclusive Total CPU Time Excl. Incl. Name Total Total CPU sec. CPU sec. 4.160 4.160 Total 3.140 3.140 __ieee754_log 0.330 1.990 __ieee754_log10 0.270 1.880 sumlog(int) 0.180 2.280 sumlog10(int) 0.100 1.610 log 0.090 2.100 log10 0.050 0.050 isnan</p> <ol> <li>4.160 __libc_start_main</li> <li>4.160 main</li> <li>1.880 t1(int)</li> <li>2.280 t2(int) 


Lifehack。 仔细查看程序调用图,您可以找到许多有用的工作以及适合您的新代码库的体系结构。 我经常通过启动Performance Analyzer来开始新项目的工作,因为您可以立即了解真正运行的代码以及在哪种情况下运行。


结论


Sun / Oracle Studion Performance Analyzer是功能强大且方便的工具。 在笔记中,我展示了最简单的用例,当然,Performance Analyzer可以做更多的事情。 如果您想了解更多信息,请参考文档[2]。 主要结论:存在这样一种工具,并且可以对您的项目有很大的好处。


参考文献:


  1. Oracle开发人员工作室
  2. Oracle Developer Studio 12.6:性能分析器
  3. 性能分析仪

Source: https://habr.com/ru/post/zh-CN469409/


All Articles