一、编译
1.1 源码路径
linux内核源码/tools/perf/
1.2 perf编译
cd 内核路径/tools/perf/
export ARCH=架构(arm,arm64,mips,risc-v等)
export CROSS_COMPILE=工具链前缀(aarch64-linux-gnu- , aarch64-none-linux-gnu- ,arm-linux-,arm-none-eabi- , arm-none-linux-gnueabi- 等)
make
二、配置依赖
2.1 内核设备树修改
修改设备树文件.dts ,增加pmu-xxx{
compatible = “兼容属性”;
};
如
pmu-a77{
compatible = “arm,cortex-a77-pmu”;
};
pmu-a76{
compatible = “arm,cortex-a76-pmu”;
};
pmu-a57{
compatible = “arm,cortex-a57-pmu”;
};
pmu-a55{
compatible = “arm,cortex-a55-pmu”;
};
pmu-riscv{
compatible = “riscv,base-pmu”;
};等
2.2 内核配置文件修改
CONFIG_ARM_PMU=y
CONFIG_PROFILING=y
CONFIG_PERF_EVENTS=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_64BIT=y ##如果为arm64位架构
三、使用举例
1. 使用perf工具分析进程对cpu的占用
<1> 将perf 和 库推到 设备目录如 data/perf下 或者 设备存储空间小时u盘挂载在机器的某个目录下;
<2> ./perf record -F 99 -p $(进程) -g – sleep 30 ,运行可能会提示 无法连接到库 ,将库的路径进行导出;
<3> 运行结束后生成 perf.data, 设备中运行 perf report -i perf.data -g > perf.log, perf script > perf.script ,拷贝perf.script到PC机;
<4> PC机运行 stackcollapse-perf.pl perf.script > perf.script.folded;
<5> PC机运行 flamegraph.pl perf.script.folded > aiq.svg , 用浏览器打开 *svg文件;
<6> stackcollapse-perf.pl 和 flamegraph.pl 通过 git clone https://github.com/brendangregg/FlameGraph 可以获取;

1492

被折叠的 条评论
为什么被折叠?



