当前位置: 首页 > 工具软件 > Perf-Tools > 使用案例 >

【开发工具】【perf】性能分析工具perf的编译和使用说明

严升
2023-12-01

源码位置:

kernel/tools/perf

配置内核以支持perf

make xxx_defconfig
make menuconfig

设置以下配置:
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y

编译perf工具

make CROSS_COMPILE=xxx ARCH=xxx defconfig
make CROSS_COMPILE=xxx ARCH=xxx menuconfig
make CROSS_COMPILE=xxx ARCH=xxx Image -j4
make CROSS_COMPILE=xxx ARCH=xxx tools/perf_clean V=1
make CROSS_COMPILE=xxx ARCH=xxx tools/perf V=1

Ps:
报错:
make[4]: execvp: ./check-headers.sh: Permission denied
Makefile.perf:205: recipe for target 'sub-make' failed
原因:
脚本没执行权限,添加上可执行权限就行了
解决办法:
chmod +x tools/perf/check-headers.sh

报错:
builtin-script.c:1752:23: 
error: ‘/bin/’ directive writing 5 bytes into a region of size between 1 and 4096 
[-Werror=format-overflow=]
 1752 |  sprintf(filename, "%s/bin/%s-record", dir_name, scriptname);
原因:
format-overflow,可以尝试关掉这个报错,不影响正常运行
-Wno-error=format-overflow加入CFLAGS
解决办法:
vi tools/perf/Makefile.perf
添加
CFLAGS += -Wno-error=format-overflow
CFLAGS += -Wno-error=format-truncation

编译完成后,生成perf可执行文件
tools/perf/perf

perf使用说明

perf --help之后可以看到perf的二级命令。
序号    命令    作用
1    annotate    解析perf record生成的perf.data文件,显示被注释的代码。
2    archive    根据数据文件记录的build-id,将所有被采样到的elf文件打包。利用此压缩包,可以再任何机器上分析数据文件中记录的采样数据。
3    bench    perf中内置的benchmark,目前包括两套针对调度器和内存管理子系统的benchmark。
4    buildid-cache    管理perf的buildid缓存,每个elf文件都有一个独一无二的buildid。buildid被perf用来关联性能数据与elf文件。
5    buildid-list    列出数据文件中记录的所有buildid。
6    diff    对比两个数据文件的差异。能够给出每个符号(函数)在热点分析上的具体差异。
7    evlist    列出数据文件perf.data中所有性能事件。
8    inject    该工具读取perf record工具记录的事件流,并将其定向到标准输出。在被分析代码中的任何一点,都可以向事件流中注入其它事件。
9    kmem    针对内核内存(slab)子系统进行追踪测量的工具
10    kvm    用来追踪测试运行在KVM虚拟机上的Guest OS。
11    list    列出当前系统支持的所有性能事件。包括硬件性能事件、软件性能事件以及检查点。
12    lock    分析内核中的锁信息,包括锁的争用情况,等待延迟等。
13    mem    内存存取情况
14    record    收集采样信息,并将其记录在数据文件中。随后可通过其它工具对数据文件进行分析。
15    report    读取perf record创建的数据文件,并给出热点分析结果。
16    sched    针对调度器子系统的分析工具。
17    script    执行perl或python写的功能扩展脚本、生成脚本框架、读取数据文件中的数据信息等。
18    stat    执行某个命令,收集特定进程的性能概况,包括CPI、Cache丢失率等。
19    test    perf对当前软硬件平台进行健全性测试,可用此工具测试当前的软硬件平台是否能支持perf的所有功能。
20    timechart    针对测试期间系统行为进行可视化的工具
21    top    类似于linux的top命令,对系统性能进行实时分析。
22    trace    关于syscall的工具。
23    probe    用于定义动态检查点。

全局性概况:

perf list查看当前系统支持的性能事件;
perf bench对系统性能进行摸底;
perf test对系统进行健全性测试;
perf stat对全局性能进行统计;

全局细节:

perf top可以实时查看当前系统进程函数占用率情况;
perf probe可以自定义动态事件;

特定功能分析:

perf kmem针对slab子系统性能分析;
perf kvm针对kvm虚拟化分析;
perf lock分析锁性能;
perf mem分析内存slab性能;
perf sched分析内核调度器性能;
perf trace记录系统调用轨迹;
最常用功能perf record,可以系统全局,也可以具体到某个进程,更甚具体到某一进程某一事件;可宏观,也可以很微观。
pref record记录信息到perf.data;
perf report生成报告;
perf diff对两个记录进行diff;
perf evlist列出记录的性能事件;
perf annotate显示perf.data函数代码;
perf archive将相关符号打包,方便在其它机器进行分析;
perf script将perf.data输出可读性文本;

可视化工具perf timechart

perf timechart record记录事件;
perf timechart生成output.svg文档;

参考:

系统级性能分析工具perf的介绍与使用 - ArnoldLu - 博客园 (cnblogs.com)

 类似资料: