打印
[RISC-V MCU 应用开发]

全志Tina中使用perf分析CPU使用率

[复制链接]
1174|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2022-6-24 11:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
peRF简介

Perf是是内置于Linux内核源码树中的性能剖析(profiling)工具。
  • 不仅可以用于应用程序的性能统计分析,还可以用于内核的性能统计和分析。
  • 它基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。
  • 常用于性能瓶颈的查找与热点代码的定位。
tina上开启perf功能
删除out目录,开启如下Tina与内核的相关选项,重新编译。客户的程序不能strip。

如果客户应用程序没有嵌入到Tina一起编译,建议客户检查相关编译选项,主要是浮点、neon、优化等选项,如”-Os -march=ARMv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard“等。

使用perf工具分析CPU使用率
  • 设备端先采集:
    ① perf record -e cpu-clock -g -p --> 采集指定PID进程的cpu使用情况,采集的数据存放到当前目录下的perf.data文件中
    perf record -e cpu-clock -g -a --> 采集指定整个系统的cpu使用情况,采集的数据存放到当前目录下的perf.data文件中
    ② perf script -i perf.data > /tmp/perf.data.txt --> 解析perf.data转换为文本文档
    ③ perf report --> 设备端解析当前路径下perf.data文件生成报告
  • PC端借助flamegraph生成火焰图(也可以直接在设备端执行perf report来分析):
    ① adb pull /tmp/perf.data.txt .
    ② ./stackcollapse-perf.pl perf.data.txt > perf.data.fold --> 将文本文档中的符号进行折叠
    ③ ./flamegraph.pl perf.data.fold > perf.svg --> 生成svg图
PC端(ubuntu)工具如附件FlameGraph.tar.xz所示。


火焰图说明生成的火焰图类似下图。其中x轴表示抽样数,如有一个函数在x轴上的长度越长,表明抽样的次数越多,则执行时间越长,占用cpu越多。y轴表示调用栈,每个函数占据一层,层数(火焰)越高,表明调用栈越深。

使用特权

评论回复

相关帖子

沙发
麻花油条| | 2022-8-5 16:47 | 只看该作者
这个火焰图漂亮

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1510

主题

4548

帖子

6

粉丝