当前位置: 首页 > news >正文

嵌入式设备常用性能和内存调试指令

文章目录

  • 嵌入式设备常用性能和内存调试指令
    • 内存问题分析
    • 性能测试
      • android设备通过NDK 使用SimplePerf 抓取火焰图
      • 嵌入式linux抓取特定进程的perf火焰图
    • 杂记

嵌入式设备常用性能和内存调试指令

内存问题分析

安装valgrind,按照如下指令执行应用程序:

valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --undef-value-errors=no --log-file=log ./可执行程序名

结束以后可以查看当前路径下的log文件分析是否存在内存泄漏。

性能测试

android设备通过NDK 使用SimplePerf 抓取火焰图

  1. 确认python版本是3.10+, 下载并解压NDKhttps://googledownloads.cn/android/repository/android-ndk-r26d-linux.zip
  2. 抓取指定进程的perf.data
cd android-ndk-r26d\simpleperf
python app_profiler.py --pid <pid> -o perf.data  -r "-f 1000 --call-graph dwarf -e cpu-cycles -g --duration 3"

注意: 这里 是要抓取perf数据的进程pid,–duration 3 里的3指的是抓取3秒,可以自己调整.
3. 生成perf的html文件

python report_html.py -i perf.data -o perf.html
  1. 修改 HTML 文件
    生成的perf.html的头是国外网址,国内可能无法打开,使用下面的头替换perf.html的头内容即可。
<html><head><link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.1.2/css/bootstrap.min.css"></link>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css"></link>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.1.2/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script>google.charts.load('current', {'packages': ['corechart', 'table']});</script>
<style type="text/css">.colForLine { width: 50px; }.colForCount { width: 100px; }.tableCell { font-size: 17px; }.boldTableCell { font-weight: bold; font-size: 17px; }</style>
</head>
<body><script>

嵌入式linux抓取特定进程的perf火焰图

进入嵌入式设备执行如下指令:

sudo perf record -e branch-misses --call-graph fp -s -T --sample-cpu -F 100 -p <target_pid> \-o /tmp/perf.data --all-user -g -- sleep <duration>
perf script -i /tmp/perf.data > /tmp/perf.unfold

注意:target_pid 为目标进程的pid, duration为抓取的时间

这样会在单板的/tmp路径下面生成perf.dataperf.unfold文件

然后将这两个文件拉取到PC本地,然后使用本地的perf仓库工具生成火焰图:

    ./perf/FlameGraphTools/FlameGraph/stackcollapse-perf.pl  ./perf.unfold > perf.folded./perf/FlameGraphTools/FlameGraph/flamegraph.pl  ./perf.folded > perf.svg

这样就可以得到火焰图perf.svg

杂记

使用sshpass免输入密码操作scp和ssh:

sshpass -p <password> ssh root@198.168.31.12
sshpass -p <password> scp root@198.168.31.12:/tmp/perf.unfold .

password 为的登陆密码。

http://www.lryc.cn/news/508776.html

相关文章:

  • 数据库系统原理:数据恢复与备份策略
  • C++软件设计模式之装饰器模式
  • fpga系列 HDL:Quartus II PLL (Phase-Locked Loop) IP核 (Quartus II 18.0)
  • Spring AOP 中记录日志
  • udp tcp协议
  • C语言结构体详细讲解
  • 公交车信息管理系统:实现交通数据的智能化处理
  • 在 Windows 下生成 .tgz 文件的方法
  • 编程式浪漫,100款圣诞树代码分享
  • Nacos的下载和启动(如何快速稳定下载在github中)
  • python基础知识(六)
  • 神经网络-LeNet
  • es 中 terms set 使用
  • 绩效考核试题
  • 停车管理系统:构建安全、便捷的停车环境
  • 十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯(Default_Handler/hartfault)
  • 联通光猫怎么自己改桥接模式?
  • 突围边缘:OpenAI开源实时嵌入式API,AI触角延伸至微观世界
  • springBoot Maven 剔除无用的jar引用
  • malloc 分配大堆块(128KB)的一次探索
  • Android -- 双屏异显之方法二
  • 电脑使用CDR时弹出错误“计算机丢失mfc140u.dll”是什么原因?“计算机丢失mfc140u.dll”要怎么解决?
  • 使用RDMA技术构建无损网络
  • vscode 识别git目录
  • OpenCV相机标定与3D重建(26)计算两个二维点集之间的部分仿射变换矩阵(2x3)函数 estimateAffinePartial2D()的使用
  • StarRocks 生产部署一套集群,存储空间如何规划?
  • JVM执行引擎JIT深度剖析
  • 【DOCKER】基于DOCKER的服务之DUFS
  • 加密货币地址的基本概念
  • 如何在 Linux 服务器上部署 Pydio Cells 教程