第二届大会回顾第15期 | OpenHarmony性能调优工具介绍

描述

演讲嘉宾 | 刘   洋

回顾整理 | 廖   涛

排版校对 | 李萍萍

OpenHarmony

嘉宾介绍

 开发者工具分论坛 

刘洋,江苏润和软件股份有限公司副总裁,聚焦芯片设计及底层软件、操作系统移植及核心算法的优化与适配,润和软件芯片业务创立人,润和芯片全栈解决方案平台HiHope发起人,带领公司进军国际芯片领域并成为ARM生态圈Linaro重要合作伙伴。OpenHarmony项目群工作委员会成员,OpenHarmony Dev-Board SIG(开发板兴趣组)创立人及组长。

视频回顾 

打开哔哩哔哩APP,观看更清晰视频

正文内容

性能调优即调节操作系统、硬件以及应用三者间的关系,实现整个系统的性能最大化,使其满足现有的业务需求。性能优化是软件开发中最重要的工作之一,一个好的性能调优工具可以提升开发者的开发质量和效率。OpenHarmony上如何进行性能调优,有哪些高效易用的性能调优工具?润和软件副总裁刘洋在第二届OpenHarmony技术大会上进行了精彩分享。

OpenHarmony

01

Smartperf-Host

OpenHarmony性能调优工具“Smartperf-Host”是一款深入挖掘数据、细粒度地展示数据的性能功耗调优工具,为开发者提供了一套性能调优平台,支持了对CPU调度、频点、进程线程时间片、堆内存、帧率等数据进行采集和展示。该组件整体分为设备端和PC端两部分,设备端和PC端基于gRPC通信框架进行数据交互。其中,(1)设备端内部分为应用程序内嵌组件、命令行工具、性能调优服务、性能调优插件集合、部分系统工具及部分系统内核等模块;(2)PC端以Smartperf-Host网站的形式进行发布,内部分为Trace Streamer数据解析、SQLite数据存储、hdc设备管理、数据导入、UI绘制、数据分析等模块。

OpenHarmony

02

配置抓取

Smartperf-Host工具端侧抓取所依赖的组件已原生预置在OpenHarmony系统中,在需要使用时,可通过网页基于Hdc设备管理进行连接,支持根据业务进行配置设定,业务范围包括CPU调优、进程线程调度分析调优、内存调优等。完成设定后,可进行在线直接抓取业务Trace,也可以选择命令行进行抓取。抓取结束后,即可通过网页进行业务分析解决问题。

OpenHarmony

03

界面展示

Smartperf-Host工具的菜单区域包括文件导入、配置、下载、Sql查询、在线文档等。各区域显示信息如下:

时间轴区域以颜色深浅表示CPU的使用负载情况

泳道图区域包括CPU区域和进程线程区域:CPU区域包括负载展示、CPU时间片展示、频点展示等信息;进程线程区域包括进程、线程、调用栈等信息

Tab显示区域针对不同业务的框选或点选进行数据展示

OpenHarmony

04

功能介绍

CPU调优:CPU调优包括CPU运行状态、CPU频率信息、CPU工作状态信息、软硬终端信息等性能功耗调优,展示方式为泳道图,支持图形用户界面GUI操作、分析数据。

OpenHarmony

图中各区域详情:(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上,优先等级,所属进程,上线文关系,唤醒关系等;

点击调用栈时间片信息,可查看当前调用栈的名称,开始时间,持续时间及调用栈深度。

OpenHarmonyOpenHarmony

内存调优:

泳道图展示malloc和mmap分配内存总量及趋势图;

根据框选区间统计各类型内存信息和占比;

根据事件类型计算其占比及size大小;

以火焰图的形式展示调用栈信息;

展示内存单次分配信息,包括调用的函数库,方法等;

可根据业务要求标记时间区间,计算区间内数据变化信息。

OpenHarmony

05

调优案例介绍

CPU调度分析

场景描述:作为开发者,每次跟踪CPU调度关系是一件非常痛苦且耗时的事情,期望有工具能快速查看CPU唤醒关系信息;

问题分析:通过唤醒关系树一键显示功能,帮助开发者快速直观的显示各时间点的CPU唤醒关系,减少了开发者通过常规文本查找的工作量,切实帮助到了开发者。

OpenHarmony

内存泄漏分析

场景描述:应用出现内存泄漏现象,需要定位内存泄漏点;

问题分析:通过问题Trace,查看内存的占比,利用工具从内存类型,到调用库,到具体方法的调用,逐层分析,确认内存泄漏原因,通过改进解决应用问题。

OpenHarmony

卡顿丢帧分析

场景描述:进入Launcher后界面出现卡顿现象;

问题分析:通过工具进行分析,查看到Render Service在一段时间内出现实际帧处理慢的现象,导致后续帧处理大范围处理延时,导致整体的卡顿现象。

OpenHarmony

播放性能问题分析

场景描述:OpenHarmony 3.2版本以后媒体播放的CPU变高了,需要定位问题原因,并优化。

问题分析过程: (1)通过工具进行分析,导致问题的直接原因在于GStreamer的“vqueue:src 1971”线程一直在占用CPU,需要针对该线程做进一步的分析; OpenHarmony

(2)通过对源代码打点定位分析,发现GStreamer在逻辑上只负责送显,没有找到问题根因,需要再通过工具定位Trace内部逻辑;

OpenHarmonyOpenHarmony

(3)通过OpenHarmony Hiperf工具火焰图功能抓取Trace,分析Trace定位问题,检查发现是“GST_SYSTEM_CLOCK_ENTRY_WAIT_UNTIL”返回不符合预期,根因是内核的futex调用走的是32位的接口,而3568默认为64位内核+32位的 UserSpace,从而导致该接口未按照实际给的超时等待,总是提前返回;

OpenHarmony

(4)因此,解决该问题需要通过修改相关定义,使GSteamer直接走系统调用接口。

OpenHarmony

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

      关注我们,获取更多精彩。

审核编辑 黄宇

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分