Performance Engineering of Software Systems (一)——准备工作

目录

一、概述

二、vtune

2.1 安装

2.2 使用

三、总结


 

一、概述

一直都想系统的学习一下代码优化,这几天无意从豆瓣上发现有一门叫做Performance Engineering of Software Systems的MIT公开课,简单看了下简介感觉无比汗颜——居然是本科生的课程。感慨有个好的引导真是重要。静下心来,觉得还是少发牢骚,研究一下一直感兴趣的东西吧。

公开课的地址:

https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2010/

上面的地址可以用来看下课程的讲义,同时也提供了project,一定要做。

在国内观看上述视频真是奇慢无比,发现B站上有人搬运过来的,还有英文的字幕,感觉甚是不错:

https://www.bilibili.com/video/av37833446

二、vtune

2.1 安装

因为以前也用过一些profiling tool,但是没用过vtune,据说功能挺强,既然这门课程用到了,我就正好尝试一下,这里主要记录一下流程。

  1. 安装软件,下载地址不直接给了☺,可以用试用版,有授权当然更好,我用的是intel parallel studio xe 2018 update 3,安装过程没什么好说的,在此略过。
  2. 我家里刚好有两台机器,一台普通的windows i3,另一台淘宝淘的至强服务器,Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz,8core,32GB内存,CentOS7.2。这里用的是vtune的远程模式(我是windows host, linux target),具体操作可以参照intel官方的文档,这里只列出,并做简要的说明。

除了安装外,在真正使用软件之前,还是要看下vtune的 Post-Installation Steps

https://software.intel.com/en-us/vtune-amplifier-install-guide-windows-post-installation-steps

主要记录了不同target机器的准备工作,我这里主要关注target是linux的安装,按照“Preparing a Target Linux* System for Remote Analysis”页面中的条目逐条对比就可以了,我这里只参照 configure SSH connection做了免密码的putty配置,按照文中逐步操作不会有什么问题,下面是配置完的结果。

2.2 使用

1. 先点New Project建立工程

2. 然后在左侧选择ssh连接,首次连接需要等一段时间,为linux target安装驱动等

3. 以测试linux target上的ls为例,上图中列出三种方式,不多说了,这里选Launch Application,然后在右侧的Application中填上ls地址:

4. 然后选择测量的类型,直接点最右边Choose Analysis,进入下一个视图,左侧有很多测量的类型,可以自己研究一下,很多看见名字就知道意思了,微架构方面的测量选择General Exploration很有用,这里选择后,直接点Start就好了,整个步骤非常简单。

5. 之后vtune会给出本次profiling的结果,我这里显示的结果如下:

如果你深入一下vtune就知道,vtune在提供一种直观的“The Top-down Approach”定位微架构层级的问题,而在General Exploration提供了这一结果,如果你也显示如上结果,点change,从中选择General Exploration选项,得到如下的图,就可以进一步分析了。

vtune功能是非常强大的,首先,它保证了检测结果的权威性,针对每个性能指标,都有详细的说明和测量公式;其次上手很简单,获取帮助也非常简单。对比perf来说,perf有些结果很令人费解,你可能需要很了解微架构才能把握某些细节,vtune中完全不用担心,即使没有很好的对系统的理解也能直观的发现问题,当然了,想要优化一些基本的体系机构和优化方面的知识是少不了的,毕竟我们的目的是深入系统的方方面面。我也不打算放弃使用perf,两者对比,以vtune结果为准,可能可以解决一些对perf给出的某些结果的疑惑。

vtune的其他使用参照官方的文档就行了——Intel® VTune™ Amplifier 2019 User Guide,可以说是非常详细了,基本上你的疑惑都可以从中找到答案。使用软件的时候多多摸索它的用法,如我在使用的时候发现采样完成summary中Collection and Platform info显示的Collection Type是 driver-less的,在https://software.intel.com/en-us/vtune-amplifier-help-driverless-event-based-sampling-collection给出了说明,看来是linux target的相关驱动没有安装好,vtune使用了perf的采样结果,通过在上述页面给出的链接,说明需要自行安装Sampling Drivers,安装方法参考Build and Install the Sampling Drivers for Linux* Targets。因为我安装vtune的时候提示了安装linux target中的驱动,不知道为什么没有安装上,根据安装方法先看了下<install_dir>/sepdk/src,这里的install_dir,我的是 /opt/intel/vtune_amplifier_2018.3.0.559005/,既然有了安装目录 我就没去下载源码,根据文档直接

  1. ./build-driver 编译驱动
  2. ./insmod-sep -r 安装驱动
  3. ./boot-script --install 设置驱动开机挂载

重启了一下机器验证是否挂载成功,运行vtune再进行一个采样,上面的位置显示:

说明我们的修改是成功。

后来有一天,运行vtune采样会造成死机,target的vmcore显示采样驱动访问了非法地址,从官网上(https://software.intel.com/en-us/articles/intel-vtune-amplifier-sampling-driver-downloads)下载了2018驱动,按照上面的方法重新按照,恢复。同时,基于事件的采样需要下面配置:

三、总结

主要是通过这个课程学习和总结性能优化的各个方面的知识,会在后续文章展开。

猜你喜欢

转载自blog.csdn.net/whenloce/article/details/85332987