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

HarmonyOS NEXT调优工具Smart Perf Host高效使用指南的更多相关文章

  1. Perf -- Linux下的系统性能调优工具,第 1 部分【转】

    转自:https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/ Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 ...

  2. Perf -- Linux下的系统性能调优工具,第 1 部分

    Perf 简介 Perf 是用来进行软件性能分析的工具. 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计.它不但可以分析指定应用程序的性能问题 (per t ...

  3. Perf Event :Linux下的系统性能调优工具

    Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能 ...

  4. Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 Tracepoint 是散落在内核源代码中的一些 hook,一旦使能,它们便可以在特定的代码被运行到时被触发,这一特性可以被各种 trace/debug 工具所使用。Perf 就是该特性的用户之一。

    Perf -- Linux下的系统性能调优工具,第 1 部分 应用程序调优的使用和示例 https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/i ...

  5. JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)

    性能分析工具jstatjmapjhatjstack 前提概要:         JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jsta ...

  6. jvm 性能调优工具之 jps 命令详解

    JPS名称:jps - Java Virtual Machine Process Status Tool命令用法:jps [options] [hostid] options:命令选项,用来对输出格式 ...

  7. java性能调优工具

    windows调优工具: 任务管理器(ctrl+alt+delete或).资源管理器(任务管理器->性能进入或运行resmon.exe):JVM分析工具Jconsole,jProfile,Vis ...

  8. Android系统性能调优工具介绍

    http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...

  9. mysql性能瓶颈分析、性能指标、指标搜集方法与性能分析调优工具

    本文主要讲解mysql的性能瓶颈分析.性能指标.性能指标信息的搜集工具与方法.分析调优工具的使用. 文章尚未完成. 性能瓶颈: 慢.写速度比读速度慢很多  主要的性能指标: 访问频度, 并发连接量, ...

  10. 【Java/Android性能优2】Android性能调优工具TraceView介绍

    本文参考:http://www.trinea.cn/android/android-traceview/ Android自带的TraceView堪比java的性能调优工具visualvm线程视图,可以 ...

随机推荐

  1. 代码随想录算法训练营第三十天| 51. N皇后 37. 解数独 总结

           卡哥建议:今天这三道题都非常难,那么这么难的题,为啥一天做三道? 因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出 ...

  2. opencv库图像基础4绘图-python

    opencv库图像基础4绘图-python 1.绘画线条和简单图形 创建颜色字典和一个画布 import cv2 import numpy as np import matplotlib.pyplot ...

  3. linux centos文本编辑模式快速进入末尾最后一行快捷键与跳转首行、行尾和某一行快捷键

    前言 使用vim的过程中想要快速移动光标至行首.行尾.第一行.最后一行或者某一行,本文对此简单介绍. 具体操作 1.快速至当前行的行首:home键最简单 (1) Home键: (2) 符号^(要按sh ...

  4. Codeforces Round #848 (Div. 2) A~F 题解

    A. Flip Flop Sum 能换 \(-1,-1\) 就换,不能能换 \(1,-1\) 或 \(-1,1\) 也可以,否则只能换 \(1,1\). B. The Forbidden Permut ...

  5. 实现一个 SEO 友好的响应式多语言官网 (Vite-SSG + Vuetify3) 我的踩坑之旅

    在 2023 年的年底,我终于有时间下定决心把我的 UtilMeta 项目官网 进行翻新,主要的原因是之前的官网是用 Vue2 实现的一个 SPA 应用,对搜索引擎 SEO 很不友好,这对于介绍项目的 ...

  6. Navicat 15 最新破解版下载_永久激活注册码(附图文安装教程)

    Navicat 15 最新破解版下载_永久激活注册码(附图文安装教程) 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习 ...

  7. P2602 [ZJOI2010] 数字计数:数位DP

    https://www.luogu.com.cn/problem/P2602 // #include <iostream> // #include <iomanip> // # ...

  8. Bitmap优化详谈

    目录介绍 01.如何计算Bitmap占用内存 1.1 如何计算占用内存 1.2 上面方法计算内存对吗 1.3 一个像素占用多大内存 02.Bitmap常见四种颜色格式 2.1 什么是bitmap 2. ...

  9. 三维模型3DTile格式轻量化压缩处理的数据质量提升方法分析

    三维模型3DTile格式轻量化压缩处理的数据质量提升方法分析 在处理三维模型3DTile格式的轻量化压缩时,如何在减少数据量的同时,保证或提升数据质量是一大挑战.以下为一些提升数据质量的方法分析: 改 ...

  10. 记录--【vue3】写hook三天,治好了我的组件封装强迫症。

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 我以前很喜欢封装组件,什么东西不喜欢别人的,总喜欢自己搞搞,这让人很有成就感,虽然是重复造轮子,但是能从无聊的crud业务中暂时解脱 ...