公司自己做网站推广,比较知名的网站建设公司,互联网公司加盟,直通车推广怎么收费文章目录 嵌入式设备常用性能和内存调试指令内存问题分析性能测试android设备通过NDK 使用SimplePerf 抓取火焰图嵌入式linux抓取特定进程的perf火焰图 杂记 嵌入式设备常用性能和内存调试指令
内存问题分析
安装valgrind#xff0c;按照如下指令执行应用程序#xff1a;
… 文章目录 嵌入式设备常用性能和内存调试指令内存问题分析性能测试android设备通过NDK 使用SimplePerf 抓取火焰图嵌入式linux抓取特定进程的perf火焰图 杂记 嵌入式设备常用性能和内存调试指令
内存问题分析
安装valgrind按照如下指令执行应用程序
valgrind --toolmemcheck --leak-checkfull --show-leak-kindsall --undef-value-errorsno --log-filelog ./可执行程序名结束以后可以查看当前路径下的log文件分析是否存在内存泄漏。
性能测试
android设备通过NDK 使用SimplePerf 抓取火焰图
确认python版本是3.10, 下载并解压NDKhttps://googledownloads.cn/android/repository/android-ndk-r26d-linux.zip抓取指定进程的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修改 HTML 文件 生成的perf.html的头是国外网址国内可能无法打开使用下面的头替换perf.html的头内容即可。
htmlheadlink relstylesheet typetext/css hrefhttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.1.2/css/bootstrap.min.css/link
link relstylesheet typetext/css hrefhttps://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css/link
script srchttps://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js/script
script srchttps://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js/script
script srchttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.1.2/js/bootstrap.min.js/script
script srchttps://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js/script
script srchttps://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js/script
script srchttps://www.gstatic.com/charts/loader.js/script
scriptgoogle.charts.load(current, {packages: [corechart, table]});/script
style typetext/css.colForLine { width: 50px; }.colForCount { width: 100px; }.tableCell { font-size: 17px; }.boldTableCell { font-weight: bold; font-size: 17px; }/style
/head
bodyscript
嵌入式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.data和perf.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 root198.168.31.12
sshpass -p password scp root198.168.31.12:/tmp/perf.unfold .password 为的登陆密码。