文章目录
前言
perf是一款Linux性能分析工具,内置在Linux内核的一个Linux性能分析框架中,利用CPU、性能检测单元(Performance Monitoring Unit,PMU)和软件计数(如软件计数器和跟踪点)等进行性能分析。
主要用途:
- 快速定位和解决系统性能问题。它可以收集程序运行时的性能数据,包括CPU、内存、IO等方面的信息,并提供详细的性能分析和报告。
- 生成程序的调用图,记录程序中函数之间的调用关系,并提供详细的调用图分析和报告。
- 检测程序的内存泄漏问题,收集程序运行时的内存数据,并提供详细的内存泄漏分析和报告。
- 提供程序性能优化的建议,分析程序运行时的性能数据,并提供优化的建议和方案。
工作原理:
- 首先,perf会使用特殊的指令将硬件性能计数器设置为所需的事件类型。这可以包括CPU周期、指令执行数、缓存命中数等。
- perf会定期读取计数器的值,以获得一组采样数据。采样的频率可以由用户配置。
- perf将采样数据与相应的事件关联起来,并进行分析。这可以包括计算平均值、最大值、最小值,以及计算事件之间的关联性等。
- perf可以将分析结果以各种不同的格式进行输出,如报告、图形化界面等。用户可以根据需要选择适合自己的输出格式。
perf调用原理图如下:
二、安装Perf
大多数Linux发行版都包含perf工具。可以使用包管理器来安装perf,例如在Ubuntu上可以使用以下命令进行安装:
sudo apt-get update
sudo apt-get install linux-tools-common linux-tools-generic linux-tools-$(uname -r)
perf工具需要操作系统内核支持。确保Linux内核启用了性能事件计数器(PerformanceCounter)子系统。可以通过检查内核配置选项来确认,通常是在内核配置文件(例如/usr/src/linux/.config)中搜索以下选项: CONFIG_PERF_EVENTS=y
如果该选项没有被启用,需要重新编译内核并启用该选项。
三、二级命令
在终端中输入perf命令可以看到所有的二级命令:
1 annotate 解析perf record生成的perf.data文件,显示被注释的代码。
2 archive 根据数据文件记录的build-id,将所有被采样到的elf文件打包。利用此压缩包,可以再任何机器上分析数据