演讲嘉宾 | 刘 洋
回顾整理 | 廖 涛
排版校对 | 李萍萍
嘉宾介绍
刘洋,江苏润和软件股份有限公司副总裁,聚焦芯片设计及底层软件、操作系统移植及核心算法的优化与适配,润和软件芯片业务创立人,润和芯片全栈解决方案平台HiHope发起人,带领公司进军国际芯片领域并成为ARM生态圈Linaro重要合作伙伴。OpenHarmony项目群工作委员会成员,OpenHarmony Dev-Board SIG(开发板兴趣组)创立人及组长。
视频回顾
打开哔哩哔哩APP,观看更清晰视频
正文内容
性能调优即调节操作系统、硬件以及应用三者间的关系,实现整个系统的性能最大化,使其满足现有的业务需求。性能优化是软件开发中最重要的工作之一,一个好的性能调优工具可以提升开发者的开发质量和效率。OpenHarmony上如何进行性能调优,有哪些高效易用的性能调优工具?润和软件副总裁刘洋在第二届OpenHarmony技术大会上进行了精彩分享。
01
Smartperf-Host
OpenHarmony性能调优工具“Smartperf-Host”是一款深入挖掘数据、细粒度地展示数据的性能功耗调优工具,为开发者提供了一套性能调优平台,支持了对CPU调度、频点、进程线程时间片、堆内存、帧率等数据进行采集和展示。该组件整体分为设备端和PC端两部分,设备端和PC端基于gRPC通信框架进行数据交互。其中,(1)设备端内部分为应用程序内嵌组件、命令行工具、性能调优服务、性能调优插件集合、部分系统工具及部分系统内核等模块;(2)PC端以Smartperf-Host网站的形式进行发布,内部分为Trace Streamer数据解析、SQLite数据存储、hdc设备管理、数据导入、UI绘制、数据分析等模块。
02
配置抓取
Smartperf-Host工具端侧抓取所依赖的组件已原生预置在OpenHarmony系统中,在需要使用时,可通过网页基于Hdc设备管理进行连接,支持根据业务进行配置设定,业务范围包括CPU调优、进程线程调度分析调优、内存调优等。完成设定后,可进行在线直接抓取业务Trace,也可以选择命令行进行抓取。抓取结束后,即可通过网页进行业务分析解决问题。
03
界面展示
Smartperf-Host工具的菜单区域包括文件导入、配置、下载、Sql查询、在线文档等。各区域显示信息如下:
时间轴区域以颜色深浅表示CPU的使用负载情况
泳道图区域包括CPU区域和进程线程区域:CPU区域包括负载展示、CPU时间片展示、频点展示等信息;进程线程区域包括进程、线程、调用栈等信息
Tab显示区域针对不同业务的框选或点选进行数据展示
04
功能介绍
CPU调优:CPU调优包括CPU运行状态、CPU频率信息、CPU工作状态信息、软硬终端信息等性能功耗调优,展示方式为泳道图,支持图形用户界面GUI操作、分析数据。
图中各区域详情:(1)CPU运行状态:颜色区分各进程、点击Slice显示CPU使用详情、支持CPU唤醒关系信息展示、支持CPU唤醒跳转功能;(2)CPU频点:基于时间轴频点变化展示、点击查看当前时间点频点信息、框选查看选择区域内频点信息;(3)CPU State:基于时间轴显示State的变化,0”表示“工作中”,“1”、“2”、“3”表示“不在工作状态”;点击查看当前时间点State信息、框选查看选择区域内State信息;(4)查看CPU统计信息:框选CPU Slice,以不同维度进行分析;以线程维度分析、以进程维度分析、CPU Usage排名、线程切换次数、各状态详情。
进程和线程调优:
查看到系统级所有进程级线程信息;
展开泳道图,查看对应进程下线程信息,包括线程状态及各线程的调用栈;
框选一定区域后,可查看到框选时间范围内的线程状态,各线程在CPU上的使用占比等信息;
点击线程时间片,可查看当前线程的状态,包括开始时间,持续时长,当前运行在哪个CPU上,优先等级,所属进程,上线文关系,唤醒关系等;
点击调用栈时间片信息,可查看当前调用栈的名称,开始时间,持续时间及调用栈深度。
内存调优:
泳道图展示malloc和mmap分配内存总量及趋势图;
根据框选区间统计各类型内存信息和占比;
根据事件类型计算其占比及size大小;
以火焰图的形式展示调用栈信息;
展示内存单次分配信息,包括调用的函数库,方法等;
可根据业务要求标记时间区间,计算区间内数据变化信息。
05
调优案例介绍
CPU调度分析
场景描述:作为开发者,每次跟踪CPU调度关系是一件非常痛苦且耗时的事情,期望有工具能快速查看CPU唤醒关系信息;
问题分析:通过唤醒关系树一键显示功能,帮助开发者快速直观的显示各时间点的CPU唤醒关系,减少了开发者通过常规文本查找的工作量,切实帮助到了开发者。
内存泄漏分析
场景描述:应用出现内存泄漏现象,需要定位内存泄漏点;
问题分析:通过问题Trace,查看内存的占比,利用工具从内存类型,到调用库,到具体方法的调用,逐层分析,确认内存泄漏原因,通过改进解决应用问题。
卡顿丢帧分析
场景描述:进入Launcher后界面出现卡顿现象;
问题分析:通过工具进行分析,查看到Render Service在一段时间内出现实际帧处理慢的现象,导致后续帧处理大范围处理延时,导致整体的卡顿现象。
播放性能问题分析
场景描述:OpenHarmony 3.2版本以后媒体播放的CPU变高了,需要定位问题原因,并优化。
问题分析过程: (1)通过工具进行分析,导致问题的直接原因在于GStreamer的“vqueue:src 1971”线程一直在占用CPU,需要针对该线程做进一步的分析;
(2)通过对源代码打点定位分析,发现GStreamer在逻辑上只负责送显,没有找到问题根因,需要再通过工具定位Trace内部逻辑;
(3)通过OpenHarmony Hiperf工具火焰图功能抓取Trace,分析Trace定位问题,检查发现是“GST_SYSTEM_CLOCK_ENTRY_WAIT_UNTIL”返回不符合预期,根因是内核的futex调用走的是32位的接口,而3568默认为64位内核+32位的 UserSpace,从而导致该接口未按照实际给的超时等待,总是提前返回;
(4)因此,解决该问题需要通过修改相关定义,使GSteamer直接走系统调用接口。
06
工具获取
代码路径: | https://gitee.com/openharmony/developtools_profiler/tree/master/host/smartperf |
使用指导: | https://gitee.com/openharmony/developtools_smartperf_host/tree/master/ide/src/doc/md |
编译指导: | https://gitee.com/openharmony/developtools_profiler/tree/master/host/smartperf/ide |
https://gitee.com/openharmony/developtools_profiler/tree/master/host/smartperf/trace_streamer |
E N D
关注我们,获取更多精彩。
审核编辑 黄宇
-
OpenHarmony
+关注
关注
25文章
3722浏览量
16322
发布评论请先 登录
相关推荐
评论