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

在软件开发的过程中,很多开发者都经常会遇到一些性能问题,比如应用启动慢、点击滑动卡顿、应用后台被杀等,想要解决这些问题势必需要收集大量系统数据。而在收集数据的过程中,开发者则需要在各种工具和命令之间来回切换,不但容易错过问题发生时间点,数据收集完如何能将信息有效结合分析又将是一件复杂的工作。基于开发痛点,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 应用生态正在开启一个新的阶段,构建繁荣的应用生态,还需更多开发者的加入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/127842.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LV.12 D17 中断控制器 学习笔记

一、中断控制器 在处理IRQ的时候,会将CPSR写入IRQ_SPSR,然后将CPU切换为IRQ模式,把状态改成ARM状态,把I位写成1禁止全部的IRQ,所以中断这样是我们不想要的。4412是一个四核的CPU,在发送中断前要确定发送给哪…

灵活调整宣传策略,媒体发稿和新闻发布的优势所在

企业在当今信息爆炸的时代,要想在市场竞争中脱颖而出,提高公信力是至关重要的。而媒体发稿和新闻发布是提升企业公信力的重要手段之一。下面将从门户网站的权威展示、搜索引擎排名的提升、内容的持续稳定有效性、内容的可改性以及协助增加网站流量等方面…

零基础入门Python基础知识全面梳理!从零开始成为编程高手

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、python程序的组成二、核心的数字类型1.整型 int (0、负自然数、正自然数)2.浮点数 float (带有小数部分的数,小数…

【nginx】使用arthas协助定位 nginx 499

看到这个499 到服务端 通过arthas查看 并没有耗时很长的 心跳接口 看都是很快的 通过 monitor 命令 通过watch 定位看到这个现象: watch -x 3 在nginx配置文件中添加 在nginx 中查看 没有499 了 再看nginx 中有存在 401 这个是业务问题 剩下的是检测器同事定位…

再服务器上配置其他版本的DGL

1、先创建pytorch环境:conda create -n ljj_torch190 python3.8 conda activate ljj_torch190 2、下载pytorch(带上了cuda111) Start Locally | PyTorch 这里面没有安装CUDA Toolkit, 所以需要再安装匹配cuda的toolkits&#xf…

React【axios、全局处理、 antd UI库、更改主题、使用css module的情况下修改第三方库的样式、支持sass less】(十三)

文件目录 Proxying in Development http-proxy-middleware fetch_get fetch 是否成功 axios 全局处理 antd UI库 更改主题 使用css module的情况下修改第三方库的样式 支持sass & less Proxying in Development 在开发模式下,如果客户端所在服务器跟后…

解决Web server failed to start. Port XXXX was already in use.

这句错误描述意思是:当前程序的端口号被占用了,需要将占用该端口的程序停止掉才行。 解决方案: 1.winR键调出运行窗口,输入cmd进入命令行: 2.输入命令netstat -ano|findstr "XXXX"查看“XXXX”对应端口的程序占用情况…

winui3开发笔记(二)自定义标题栏

参考文章链接:https://www.programminghunter.com/article/46392310600/ 注意事项 获取 AppWindowTitleBar 的实例并设置其颜色属性时,InitializeTitleBar(AppWindow.TitleBar);,只适用于Windows App SDK 1.2及以上,所以如果用w…

Linux文件系统

文章目录 引言磁盘文件系统每个分组(一个block group)中存的都是什么目录文件 软链接:软链接应用场景 硬链接硬链接应用场景硬链接和软链接的区别 引言 在此之前我们谈论重定向等问题都是指被打开的文件,现在我们来学习一下未被打开的文件,以…

【Proteus仿真】【51单片机】水质监测报警系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用按键、LED、蜂鸣器、LCD1602、PCF8591 ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能: 系统运行后&…

【GUI软件开发】小红书评论采集:自动采集1w多条,含二级评论!

文章目录 一、爬取目标1.1 效果截图1.2 演示视频1.3 软件说明 二、代码讲解2.1 爬虫采集模块2.2 软件界面模块2.3 日志模块 三、附完整源码及软件 一、爬取目标 您好!我是马哥python说 ,一名10年程序猿。 我用python开发了一个爬虫采集软件&#xff0c…

矩阵起源荣获第八届“创客中国”深圳市中小企业创新创业大赛三等奖

近日,2023年第八届“创客中国”深圳市中小企业创新创业大赛圆满落下帷幕,矩阵起源(深圳)信息科技有限公司凭借项目”MatrixOne 新一代超融合异构云原生数据库”荣获企业组三等奖。 本届大赛由深圳市工业和信息化局、深圳市中小企业…

如何用Python3+requests+unittest实现接口自动化测试实战

一、Requests介绍 首先让我们来看 Requests 官方的介绍: Requests is an elegant and simple HTTP library for Python, built for human beings. 翻译过来就是:Requests 是为人类写的一个优雅而简单的 Python HTTP 库。这个介绍很直白了,…

ElasticSearch文档分析

ElasticSearch文档分析 包含下面的过程: 将一块文本分成适合于倒排索引的独立的 词条将这些词条统一化为标准格式以提高它们的“可搜索性”,或者 recall 分析器执行上面的工作。分析器实际上是将三个功能封装到了一个包里: 字符过滤器 首先&a…

乐优商城(三)品牌管理

1. 品牌的新增 1.1 url 异步请求 点击品牌管理下的新增品牌,填写品牌信息后提交 2.打开浏览器控制台 由此可以得知: 请求方式:POST请求路径:/item/brand请求参数:{name: “测试品牌”, image: “”, cids: “76,32…

云端生成式 AI – 基于 Amazon EKS 的 Stable Diffusion 图像生成方案

Stable Diffusion 是当下生成式 AI 领域最受欢迎的开源多模态语言-图像模型,由于其易用的接口和良好的使用体验,受到了开源社区和广大设计行业从业者的追捧。Stable Diffusion 模型版本正在快速迭代,并带动了各行各业的生产力变革。目前市场上…

SAP 40策略测试及简介

相信很多很多的行业中都会用到40策略按库存生产,接下来我们将详细的测试40策略 1、首先准备好成品物料AB2。 2、创建BOM—cs01 3、创建主配方C202 ,如果是离散制造的话就是创建工艺路线CA01 4、创建生产版本C223 5、同样的AB2物料增加库存20KG。 6、创建计划独立需求MD…

微信智能机器人开发-基于E云管家,实现强大的个微管理

本文介绍了如何利用E云管家开发一个功能丰富的微信智能机器人。E云管家是一个开发协议,为微信机器人提供了强大的功能支持,包括关键字回复、自动通过好友和自动发朋友圈等特性。我们将通过一个简单的示例演示如何在E云管家下实现这些功能,并附…

EMERSON艾默生变频器维修M600/M701/M702

艾默生变频器维修常见系列: EV1000 系列:体积小,操作简便,适用于塑料机械、纺织机械、烟草机械、陶瓷机械、制药机械食品机械、印刷机械、包装机械、空调等专用设备配套。 EV2000 系列:功率范围广,功能更…

2020年五一杯数学建模B题基于系统性风险角度的基金资产配置策略分析解题全过程文档及程序

2020年五一杯数学建模 B题 基于系统性风险角度的基金资产配置策略分析 原题再现 近年来,随着改革开放程度的不断提高,我国经济运行中的各种风险逐渐暴露并集中传导和体现于金融领域。党的“十九大”报告提出“守住不发生系统性金融风险的底线”要求&am…