HarmonyOS NEXT 调优工具 Smart Perf Host 高效使用指南

HarmonyOS开发者社区 2023-11-08 16:41:44

 在软件开发的过程中,很多开发者都经常会遇到一些性能问题,比如应用启动慢、点击滑动卡顿、应用后台被杀等,想要解决这些问题势必需要收集大量系统数据。而在收集数据的过程中,开发者则需要在各种工具和命令之间来回切换,不但容易错过问题发生时间点,数据收集完如何能将信息有效结合分析又将是一件复杂的工作。基于开发痛点,HarmonyOS NEXT 通过构建 Smart Perf 工具全家桶,为开发和测试人员提供了测试、调优、分析一站式服务,接下来让我们一起来看 Smart Perf 如何解决开发性能问题。

 

 

在 Smart Perf 工具全家桶中,Smart Perf 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 应用生态正在开启一个新的阶段,构建繁荣的应用生态,还需更多开发者的加入。

...全文
182 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
包含如下操作系统版本 FreeBSD Linux Solaris Windows 分别对应如下目录 MegaCLI for DOS MegaCLI for Linux MegaCLI for Solaris MegaCLI for FreeBSD MegaCLI for Windows ********************************************* LSI Corp. MegaRAID MegaCLI Release ********************************************* Release Date: 01/20/14 ======================== Supported Controllers ================== MegaRAID SAS 9270-8i MegaRAID SAS 9271-4i MegaRAID SAS 9271-8i MegaRAID SAS 9271-8iCC MegaRAID SAS 9286-8e MegaRAID SAS 9286CV-8e MegaRAID SAS 9286CV-8eCC MegaRAID SAS 9265-8i MegaRAID SAS 9285-8e MegaRAID SAS 9240-4i MegaRAID SAS 9240-8i MegaRAID SAS 9260-4i MegaRAID SAS 9260CV-4i MegaRAID SAS 9260-8i MegaRAID SAS 9260CV-8i MegaRAID SAS 9260DE-8i MegaRAID SAS 9261-8i MegaRAID SAS 9280-4i4e MegaRAID SAS 9280-8e MegaRAID SAS 9280DE-8e MegaRAID SAS 9280-24i4e MegaRAID SAS 9280-16i4e MegaRAID SAS 9260-16i MegaRAID SAS 9266-4i MegaRAID SAS 9266-8i MegaRAID SAS 9285CV-8e MegaRAID SAS 8704ELP MegaRAID SAS 8704EM2 MegaRAID SAS 8708ELP MegaRAID SAS 8708EM2 MegaRAID SAS 8880EM2 MegaRAID SAS 8888ELP MegaRAID SAS 8308ELP* MegaRAID SAS 8344ELP* MegaRAID SAS 84016E* MegaRAID SAS 8408E* MegaRAID SAS 8480E* MegaRAID SATA 300-8ELP* *These older controllers should work but have not been tested. Component: ========= SAS MegaRAID MegaCLI Release Date: 01/20/14 Version Numbers: MegaCLI =============== =========== Current Version 8.07.14 Previous Version 8.07.07 Contents: ========= This package contains MegaCLI for the following OSes: DOS FreeBSD Linux Solaris Windows Use the MegaCLI components from the folder that matches your OS. Enhancements and Bug Fixes ========================== SCGCQ00393585 (DFCT) - VD creation from MegaCli fails on Solaris Sparc 10u9 operating system. SCGCQ00413883 (DFCT) - "megacli -version -pd -a0" Segmentation Faults if PDs are missing SCGCQ00445356 (CSET) - Megacli crashes after invoking any command in SGI system with one 9280-8e and 2 quad port qlogic FC cards. SCGCQ

5,344

社区成员

发帖
与我相关
我的任务
社区描述
HarmonyOS是一款“面向未来”、面向全场景的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。
分布式学习 企业社区
社区管理员
  • HarmonyOS技术社区
  • Edice
  • BaoWei
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧