在软件开发的过程中,很多开发者都经常会遇到一些性能问题,比如应用启动慢、点击滑动卡顿、应用后台被杀等,想要解决这些问题势必需要收集大量系统数据。而在收集数据的过程中,开发者则需要在各种工具和命令之间来回切换,不但容易错过问题发生时间点,数据收集完如何能将信息有效结合分析又将是一件复杂的工作。基于开发痛点,harmonyos next通过构建smart perf工具全家桶,为开发和测试人员提供了测试、调优、分析一站式服务,接下来让我们一起来看smart perf如何解决开发性能问题。
在smartperf工具全家桶中,smartperf host主要提供性能调优能力,目前可提供调优数据一键抓取,系统调度分析,cpu使用情况展示,调用栈展示,native memory跟踪和分析,文件系统跟踪,trace抓取和分析和高阶使用方式(用户可以通过自定义sql细粒度查询性能调优数据)等能力。想要了解smart perf host如何在大量数据中进行性能问题快速分析,首先可通过典型场景分析模版来进行深入了解。
一、smart perf host典型场景分析模板
目前已知smart perf host场景分析模版提供整机cpu调度分析模板以及内存调优场景分析,在cpu调度分析模板中,可做到自动分析cpu调度数据,并协助发现cpu调度瓶颈。
具体操作过程首先开发者可选择左侧导航栏中的“模板抓取(record template)”,然后连接设备,选择调度分析模板,开始抓取操作;待抓取完成后,就可以通过导航栏中的scheduling analysis自动进行数据分析和显示。调度分析模板可以按照cpu粒度和线程粒度进行数据分析和展示。通过cpu粒度分析,开发人员可用来查看即cpu资源在被哪些任务使用。相对应可快速分析以下场景:
cpu大中小核利用情况是否达到调优人员预期
cpu大中小核运行频点是否达到调优人员预期
谁在占用特定cpu的特定频点
大核高频的任务是否可以往中小核迁移,以降低能耗
功耗分析:cpu idle值越大,睡眠越深,功耗越低
各个cpu除了在执行任务,还在处理哪些中断
而线程粒度分析,线程总运行时长,则可以用来查看特定任务在使用哪些cpu资源,可快速分析如下场景:
占用大、中、小核和总cpu的top线程是否为预期线程
关键线程(比如ui,rs等)大中小核和频点的使用情况是否为预期调度策略
若测试人员关注cpu和线程运行细节,则可以从泳道图继续查看。其中cpu泳道图提供细节数据如下:
当前调用cpu的线程和对应的进程情况
线程唤醒关系链
查看cpu频点供给情况
点选一个线程显示详情页(进程名、线程名、起始时间、时长、优先级、线程状态)
框选cpu泳道可以查看cpu频点和基于线程的cpu运行分布,即框选的这段时间内线程在每个cpu上的运行时长和频点使用时长
另hiperf是harmonyos next所提供的能力,可用来周期访问cpu的运行栈,导出调用栈,不受系统打点影响。目前smart perf host支持能力如下:
支持软硬件events抓取,如:cpu-cycles、instructions和page-faults等
页面内抓取hiperf数据
框选后可查看调用栈
支持条件过滤功能
可查看火焰图
基于以上,我们通过一个实际案例来学习如何通过上述内容进行问题分析:案例如下图所示:
如图我们可看到问题在于某个应用启动时间比较长,首先通过通过整机调度分析模板能够发现tb线程单次运行时间长达79.31ms,且通过cpu泳道确认该线程运行在中核,2.0ghz,因此cpu资源供给没有问题;接下来我们展开应用进程泳道图,在线程泳道图中可定位出运行时间较长的阶段(但无法看到深层的函数,需使用hiperf进一步分析)。
我们直接通过抓取hiperf做进一步分析。首先基于上面已经发现的运行时间长阶段,通过m键进行锁定,然后在hiperf泳道图中选中对应位置,最后使用火焰图定位阻塞函数,能够发现一个jsnapi执行时间太长。
二、基于smart perf host进行内存跟踪和分析
通过smart perf host开发及测试人员可查看内存的分配和释放等情况,了解内存详细信息,并支持火焰图查看。如下图所示,在“native memory”中可显示内存详情,比如内存地址,内存申请和释放的时间点,内存大小和单次栈信息等。在不同特定场景中,native memory可发挥追踪和分析、内存申请/释放分析、调用栈本地符号化以及支持内存抓取条件可配作用。目前smart perf host工具代码全部开源,想要获取和部署smart perf host工具,可参考以下路径进行编译部署。
截止到目前,smart perf host能力规划中已支持近30个开发能力,25个能力正处于开发测试阶段,能力覆盖性能调优模板、工具系统能力、系统依赖以及用户体验提升。开发者还可通过代码染色系统进行代码覆盖率报告生成,执行上不但能沿用原有自测使用习惯无需更换环境,还可支持共享代码下载环境无需单独部署服务。从开发到调测工具都全面升级的harmonyos next 正助力harmonyos应用生态正在开启一个新的阶段,构建繁荣的应用生态,还需更多开发者的加入。
任天堂switch游戏机,专用芯片LDR6023B应用电路
日企加快锂电产业投资,构建全球锂电池原料供应网
华为似乎正在开发另一款五角相机手机
关于导热硅胶片产生粘膜的原因分析
北京联通回复“被5G”按照协议,合法合理
HarmonyOS NEXT调优工具Smart Perf Host高效使用指南
逆变电焊机怎么加电容器和电抗器?
基于STM32F107VCT6微控制器的控制系统解决方案
如何解决仪器设备传统操作的局限性
电压变送器的原理及设计
解读新任鸿海董事候选名单的玄机
一文看懂数字对讲机通讯模块的串口通讯协议
自动驾驶特征点处理算法
特信无人机反制设备的简单介绍
STM32之RS485通讯方式实现
麒麟990 5G芯片究竟有多强
5G时代下的神器:高速光缆连接器组件
华为卷入美国政府权力“黑洞”漩涡,中国芯能否遇强则强?
直流多功能电能表在光伏系统中的应用分析
我国首个由B站定制、用于科普传播的视频遥感卫星成功升空