相关概念
SO依赖库
Linux中的SO(Shared Object)文件,其名称类似“libname.so.1.1.1”。
软件构建工程文件
C/C++/ASM/Fortran/Go常用的软件构建工具make和cmake对应的构建文件是Makefile和CMakeLists.txt。
IPC
IPC(instructions per cycle)是指CPU每个时钟周期执行的指令总数,它可以反映CPU执行的顺畅程度。例如:对于四发射的鲲鹏920处理器,在流水线满负荷运作的情况下,每个时钟周期能够执行四条指令,IPC为4.0,程序运行时的IPC越接近4.0越好,说明程序充分利用了处理器的特性。
CPU Cycles性能事件
它基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。常用于性能瓶颈的查找与热点代码的定位。
CPU周期(CPU Cycles)是默认的性能事件,也叫做clock tick。根据tick中断进行采样,即在tick中断内触发采样点,在采样点里判断程序当时的上下文。
USE
USE方法(utilization、saturation、errors)是针对所有的资源,分析它的使用率、饱和度和错误,以此识别性能瓶颈。
- 资源:主要指服务器的物理元器件,包括:CPU、内存、存储设备、网络设备等等。某些软件也提供类似指标,也可以算作一种资源。
- 使用率:在规定的时间间隔内,资源用于服务工作的时间百分比。
- 饱和度:资源不能服务更多额外工作的程度(内核通常有等待队列)。
- 错误:错误事件的个数。
在线分析
在线分析是一种应用程序动态分析方法,包含对于目标JVM和Java程序的双重分析。它用于分析应用程序在运行时刻,资源消耗在内部的分布、方法调用频度与耗时。该方法常用于辅助应用的性能瓶颈定位和性能调优。
在线分析通过Instrument程序的类和方法,来计算特定代码所有的方法调用情况,可能对性能造成比较大的影响。
采样分析
通过采样的方式,收集JVM的内部活动/性能事件,以录制及回放的方式进行离线分析。采样分析不需要修改应用程序的代码,对性能影响较小,适用于大型的Java程序。因为通过定期采集数据的方式,精确度相对在线分析较低。
上层应用Workload
Workload分析主要指通过动态修改上层应用代码并埋下hook来收集特定的应用相关性能数据,通过Workload分析,可以收集并定位用户关心的特定代码的工作性能。