论文部分内容阅读
计算机软件性能分析及优化在科学研究和大型工程应用中有着重要的作用。软件性能的改善从经济上可以节约大量的财力和物力,避免不必要的硬件系统升级和软件系统的变革性升级;从技术上,可以探索计算机系统的性能特征,性能极限,为工业生产提供有力的支持。另一方面,各个厂商和系统运营商,如移动、电信运营商等,希望可以对应用服务系统以尽可能低的成本和运行代价进行有效的在线监控和性能分析,并智能决策软件的当前的性能情况和软件的动态运行状态情况,从而为系统的升级和维护提供准确的具有说服力的数据和支持,以此达到向客户提供更好的服务的目的。现代计算机和CPU设计中,CPU片内的寄存器、一级高速缓存(Level 1 Cache)和二级高速缓存(Level 2 Cache),主板上的三级高速缓冲,再加上主存,外存(硬盘、软盘、电子盘等),构成了现代计算机的多级存储体系结构。这种多级存储层次的速度则根据距离CPU核心运算单元的近远,呈现出逐级按级数递减,成本逐级递增的特性。现在的软件性能分析及其相关的性能优化,除了程序本身算法之外,几乎所有的分析和优化都是在这样一个多级的存储体系结构上进行的,试图尽可能地利用近端的存储,期望达到一个接近线速的计算性能,即计算的性能仅由CPU的处理速度决定,与其他外设和数据存储无关。为了对CPU的生产和性能分析给出精确的性能数据,现代的CPU的生产厂家大多数都在自己的CPU设计中,加入以并行采集方式的具有特殊用途的寄存器,记录CPU在运行过程中的一些动态性能数据,如Leve1 1 Cache Misses, Branches Mispredicts, TLB(Translate Lookaside Buffer) Misses, Instruction Loads,这些寄存器就是硬件性能计数器(Hardware Performance counter Monitor,HPM)[1] [2] [3] [4],也称HPM事件。这些性能数据从系统运行的最底层反映了CPU的性能表现和当前的性能状态。另一方面,CPU的运行状态也就决定了软件运行的性能和状态。因此,本世纪初,国际上出现了很多基于HPM的性能分析模型和工具。其中美国的几家著名研究机构专门成立一个HPC(高性能计算)研究小组,建立了PERC高性能分析模型,并主要针对科学计算中的高性能计算做了很深入的分析和研究,开发了一套比较完善的数据采集用的应用接口(Application Interface,API)集PAPI [5] [6]。但具本文作者所知,在国内还很少有相关研究报道;针对HPM事件的特性,对软件进行状态分析和监控的研究在国内外目前都没有相关研究报道。HPM事件本身所具有的底层性能数据记录特征,使其对于高性能分析和优化,以及应用系统的监控和状态分析几方面都有其独特的应用。本文作者将在PERC研