分析HarmonyOS应用/服务的CPU活动性能

news2024/11/16 17:29:08

CPU Profiler 性能分析是用来分析CPU性能瓶颈的工具,可以实时查看应用/服务的CPU使用率和线程活动,也可以查看记录的方法跟踪数据、方法采样数据和系统跟踪数据的详情。基于CPU性能分析,您可以了解在一段时间内执行了哪些方法,以及每个方法在其执行期间消耗的CPU资源,可以有针对性的优化应用/服务的CPU使用率,提供更快、更顺畅的用户体验,以及延长设备电池续航时间。

录制CPU活动数据

录制HarmonyOS应用或服务的CPU活动数据,需要将待分析的应用或服务运行起来,当前仅支持本地真机。

NOTE
录制JS的CPU活动数据,应用/服务只能以Debug模式运行。

1.在DevEco Studio菜单栏上单击View > Tool Windows > Profiler,或者在DevEco Studio底部工具栏单击Profiler按钮,打开Profiler分析器。在Profiler分析器的SESSIONS窗口,单击+按钮,在弹出下拉列表中先选择设备,然后选择待分析的进程。在这里插入图片描述
2.在实时变化视图,单击CPU区域,进入CPU详情页面。在这里插入图片描述
3.在CPU详情页面选择CPU数据的录制模式,然后单击Record,开始录制CPU活动数据。

开始录制后,会在SESSIONS窗口的当前会话下生成应用/服务的数据记录。CPU数据的录制模式分为以下几种:

  • 对Java 方法采样(Sample Java Methods):在应用/服务的Java代码执行期间,定期捕获应用/服务的调用堆栈。分析器会比较捕获的数据集,以推导与应用/服务的 Java 代码执行有关的时间和资源使用信息。
  • 跟踪Java 方法(Trace JavaMethods):在运行时检测应用/服务,在每个方法调用开始和结束时记录一个时间戳。系统会收集并比较这些时间戳,以生成方法跟踪数据,包括时间信息和CPU使用率。
  • 跟踪JS 方法(Trace JSMethods):在运行时检测应用/服务,在每个方法调用开始和结束时记录一个时间戳。系统会收集并比较这些时间戳,以生成方法跟踪数据,包括时间信息和CPU使用率。
  • 跟踪系统调用(Trace SystemCalls):捕获应用/服务运行的细节,以便您检查应用/服务与系统资源的交互情况。您可以检查线程状态的确切时间和持续时间、直观地查看所有内核的CPU瓶颈在何处,并添加需分析的自定义跟踪事件。

除了使用以上几种数据录制模式外,还可以单击模式选择下拉列表中的Edit Configurations自定义数据录制模式。在这里插入图片描述
4.单击CPU详情页面的上部或下部的Stop结束当前录制。CPU录制完成后,可以在SESSIONS窗口选中该数据记录,单击右键或导出按钮将数据记录导出,方便分享和以后的查看在这里插入图片描述

查看CPU跟踪数据

CPU活动数据录制后,可以在SESSIONS窗口单击要查看的数据记录,或单击+按钮,在下拉列表中选择Load from file,导入数据记录文件。在这里插入图片描述
1:单击数据记录,可查看数据详情。

2:CPU在录制时间内的使用情况。

3:IO资源占用情况。

4:Interaction:在应用/服务的生命周期内,用户与应用/服务互动的事件。

5:Threads:线程活动状态,可以查看线程是处于运行状态还是休眠状态,选择具体的线程,可以在右侧的Analysis窗口查看线程的详细信息。

6:Analysis窗口,选择All threads可以看到全部线程的信息。选择具体的某个线程,可以查看该线程或方法调用的详细数据。

7:Time reference菜单,选择以下选项之一,以确定如何测量每次调用的时间信息(仅跟踪 Java 方法中支持):

  • Wall clock time:该时间信息表示进程从开始运行到结束,时钟实际走过的时间。
  • Thread time:该时间信息表示实际经过的时间减去线程没有占用CPU资源的那部分时间。对于任何给定的调用,其线程时间始终小于或等于其Wall clocktime。使用线程时间可以让您更好地了解线程的实际CPU 使用率中有多少是给定方法或函数占用的。

8:过滤器,按函数、方法、类或软件包名称过滤跟踪数据。在Flame chart 标签页中,会突出显示包含符合搜索查询条件的调用、软件包或类的调用堆栈。在Top down 和Bottom up标签页中,这些调用堆栈优先于其他跟踪结果。还可以通过勾选搜索字段旁边的相应方框来启用以下选项:

Regex:搜索中包含正则表达式。

Match case:搜索区分大小写。

对于方法跟踪数据,可以直接在Threads时间轴中查看Call Chart,也可以从Analysis窗口查看Flame Chart、Top Down 和 Bottom Up标签页。对于系统调用跟踪数据,可以在Threads时间轴查看Trace Events,也可以从Analysis窗口查看 Flame Chart、Top Down 和 Bottom Up 标签页。

使用 Call Chart 检查跟踪数据

Call Chart直接在Threads 时间轴中查看 ,将鼠标指针悬停在某个方法上,以图形方式来呈现方法跟踪数据或函数跟踪数据。对系统API 的调用显示为橙色,对应用/服务自有方法的调用显示为绿色,对第三方API(包括Java 语言API)的调用显示为蓝色。在这里插入图片描述

使用Flame Chart检查跟踪数据

Flame Chart标签页提供一个倒置的调用图表,用来汇总完全相同的调用堆栈。将鼠标指针悬停在某个方法上,可以查看哪些方法或函数消耗的时间最多。在这里插入图片描述
使用Top Down检查跟踪数据

Top Down标签显示一个调用列表,在该列表中展开方法或函数节点会显示它的被调用方。与Flame chart标签页类似,“Top Down”树也汇总了具有相同调用堆栈的完全相同的方法的跟踪信息。也就是说,Flame chart标签页提供了Top down标签页的图形表示方式。

Top Down 标签提供以下信息来帮助说明在每个调用上所花的CPU时间(时间也可表示为在选定范围内占线程总时间的百分比):

Self:方法或函数调用在执行自己的代码(而非被调用方的代码)上所花的时间。

Children:方法或函数调用在执行它的被调用方(而非自己的代码)上所花的时间。

Total:方法的Self 时间和Children 时间的总和。这表示应用/服务在执行调用时所用的总时间。在这里插入图片描述

使用Bottom Up检查跟踪数据

Bottom Up 标签页显示一个调用列表,在该列表中展开函数或方法的节点会显示它的调用方。Bottom Up 标签页用于按照占用的CPU时间由多到少(或由少到多)的顺序对方法或函数排序。您可以检查每个节点以确定哪些调用方在调用这些方法或函数上所花的CPU时间最多。与“Top Down”树相比,“Bottom Up”树中每个方法或函数的时间信息参照的是每个树顶部的方法(顶部节点)。CPU时间也可表示为在该记录期间占线程总时间的百分比。下表说明了如何解读顶部节点及其调用方(子节点)的时间信息。
在这里插入图片描述
在这里插入图片描述

使用Trace Events查看系统事件

检查系统跟踪数据时,您可以在Threads 时间轴中检查Trace Events,以查看每个线程上所发生事件的详细信息。将鼠标指针悬停在某个事件上,可查看该事件的名称以及在每种状态下所花费的时间。单击事件可在Analysis 窗格中查看详情。

CPU cores 窗格显示每个核心上安排的线程ability。将鼠标指针悬停在某个线程ability上,可查看该核心在该特定时间在哪个线程上运行。
在这里插入图片描述

要想成为一名合格的鸿蒙高级开发工程师,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术

为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《鸿蒙全栈技术 实战项目驱动式教学》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:一小时快速认识HarmonyOSicon-default.png?t=N7T8https://docs.qq.com/doc/DZVVZR2lzcnJZSFlO
在这里插入图片描述

除了上面整理的思维导图以外,这里还特别整理的一份《鸿蒙 (Harmony OS)开发学习手册》给大家进行参考学习:

一、入门必看

1.应用开发导读(ArkTS)

2.……在这里插入图片描述

二、HarmonyOS 概念

1.系统定义

2.技术架构

3.技术特性

4.系统安全

5…在这里插入图片描述

三、如何快速入门?鸿蒙HarmonyOS分布式项目实战icon-default.png?t=N7T8https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念

2.构建第一个ArkTS应用

3.构建第一个JS应用

4.……在这里插入图片描述

四、开发基础知识

1.应用基础知识

2.配置文件

3.应用数据管理

4.应用安全管理

5.应用隐私保护

6.三方应用调用管控机制

7.资源分类与访问

8.学习ArkTS语言

9.……在这里插入图片描述

五、基于ArkTS 开发

1.Ability开发

2.UI开发

3.公共事件与通知

4.窗口管理

5.媒体

6.安全

7.网络与链接

8.电话服务

9.数据管理

10.后台任务(Background Task)管理

11.设备管理

12.设备使用信息统计

13.DFX

14.国际化开发

15.折叠屏系列

16.……在这里插入图片描述

更多了解更多鸿蒙开发的相关知识可以参考:鸿蒙4.0源码开发架构分析pdficon-default.png?t=N7T8https://docs.qq.com/doc/DZXB5WmVIVHRwS0pY

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

伦敦银交易时遇到横盘震荡行情怎么办?

做伦敦银的投资者很怕碰到震荡行情,因为我们做伦敦银交易,一般会去寻找高概率入场的机会,而发现高概率机会的方法多数是建立在顺势交易的基础上。什么方法对应什么样的行情,那应对横盘震荡,我们该怎么办呢?…

福布斯财富增长榜前十富豪身价暴增3.5万亿!他们致富的秘诀究竟是?

按照《福布斯》最新的数据显示,今年全球前十位财富增长最多的富豪的身家总共增加了4900亿美元(约3.5万人民币),大家可能对于3.5万亿没什么概念,但是换算一下,中国一共才14亿人,如果把这3.5万亿平…

探讨Go语言在构建HTTP代理时的优势和挑战

亲爱的读者,让我们一起来探讨一下Go语言在构建HTTP代理时的优势和挑战。 首先,让我们来谈谈Go语言在构建HTTP代理时的优势。Go语言是一种高性能的编程语言,它具有简洁、高效的特点,非常适合构建高效的代理服务器。使用Go语言&…

SAM:基于 prompt 的通用图像分割模型

Paper: Kirillov A, Mintun E, Ravi N, et al. Segment anything[J]. arXiv preprint arXiv:2304.02643, 2023. Introduction: https://segment-anything.com/ Code: https://github.com/facebookresearch/segment-anything SAM 是 Meta AI 开发的一款基于 prompt 的通用视觉大…

笔记---中国剩余定理

全程学自y总 AcWing.204.表达整数的奇怪方式 给定 2 n 2n 2n 个整数 a a a1, a a a2,…, a a an 和 m m m1, m m m2,…, m m mn,求一个最小的非负整数 x x x,满足 ∀ i ∈ [ 1 , n ] , x ≡ m ∀i∈[1,n],x≡m ∀i∈[1,n],x≡mi ( m o d a (mod a (…

AI-数学-高中-14-函数零点存在定理和运用

原作者视频:【函数综合】【考点精华】1零点存在性定理的运用(基础)_哔哩哔哩_bilibili 1.定义: 2.零点存在定义: 2.函数零点与图像焦点的转化 零点如果不好求,将函数化成两个函数再画图,看函数…

Elasticsearch:构建自定义分析器指南

在本博客中,我们将介绍不同的内置字符过滤器、分词器和分词过滤器,以及如何创建适合我们需求的自定义分析器。更多关于分析器的知识,请详细阅读文章: 开始使用 Elasticsearch (3) Elasticsearch: analyzer…

uni-app在hbuilderx打开微信开发工具运行

一、运行设置配置微信开发者工具路径 运行-运行到小程序模拟器-运行设置 配置微信开发工具的安装路径(可浏览文件位置选择);web服务器端口号在第二步骤获得; 二、打开微信开发者工具设置-安全设置 打开服务端口开关&#xff0…

C# webbrowser控件设置代理IP访问网站

目录 前言 一、WebBrowser控件简介 二、代理IP简介 三、设置WebBrowser控件的代理IP 1. 引入相关命名空间 2. 定义修改代理IP的函数 3. 修改代理IP 4. 取消代理IP设置 四、使用WebBrowser控件访问代理IP 五、完整示例代码 总结 前言 C# WebBrowser控件是一个非常常…

Linux+服务器后台运行程序

在Linux服务器直接运行程序,程序运行的时间较长,程序经常会因为网络连接问题异常终止,一直盯着程序运行又费时费力,这时后台运行程序是更好的解决方式。But,如果服务器重启了,那所有进程都断掉了&#xff0…

ArrayList集合初始化长度是多少,初始化的时候分配内存空间吗

ArrayList一旦初始化,在内存中就会分配空间吗 是的,当ArrayList在Java中初始化时,即使它没有添加任何元素,也会立即分配内存空间。具体来说,对于默认构造函数创建的ArrayList(即不指定初始容量&#xff09…

Python代码覆盖率工具

Coverage.py是一个用于测量Python程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已经执行,然后分析源代码,以确定哪些代码本可以执行,但没有执行。 覆盖率测量通常用于衡量测试的有效性。它可以显示代码的哪些部分正在…

Yolo v8 入门学习之采用 coco128 数据集进行图片检测测试

示例入门代码 from ultralytics import YOLO import cv2 import matplotlib.pyplot as plt import matplotlib.image as mpimgdef test():# Create a new YOLO model from scratchmodel YOLO(yolov8n.yaml)# Load a pretrained YOLO model (recommended for training)model …

【Cookie反爬虫】某采购网站动态Cookie加点选验证码校验分析与实战

文章目录 1. 写在前面2. 请求分析3. JS反混淆4. 深度分析 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋…

CentOS7中安装ElasticSearch

文章目录 检测是否安装了Elasticsearch安装JDK下载java配置 下载Elasticsearch解压安装Elasticsearch修改配置文件启动Elasticsearch常见问题 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasti…

Kotlin 协程1:深入理解withContext

Kotlin 协程1:深入理解withContext 引言 在现代编程中,异步编程已经变得非常重要。在 Kotlin 中,协程提供了一种优雅和高效的方式来处理异步编程和并发。在这篇文章中,我们将深入探讨 Kotlin 协程中的一个重要函数:wi…

SpringMVC实现对网页的访问,在请求控制器中创建处理请求的方法

目录 测试HelloWorld RequestMapping注解 RequestMapping注解的位置 RequestMapping注解的value属性 RequestMapping注解的method属性 SpringMVC支持路径中的占位符(重点) SpringMVC获取请求参数 1、通过ServletAPI获取 2、通过控制器方法的形参…

华为VRP系统简介

因为现在国内主流是华为、华三、锐捷的设备趋势,然后考的证书也是相关的,对于华为设备的一个了解也是需要的。 一、VRP概述 华为的VRP(通用路由平台)是华为公司数据通信产品的通用操作系统平台,作为华为公司从低端到核心的全系列路由器、以太…

Narak靶机渗透

靶场下载地址:https://download.vulnhub.com/ha/narak.ova 一、靶机配置 导入靶机 攻击机kali的IP为192.168.245.131,靶机的IP设置成NAT模式。 二、信息搜集 用攻击机对存活主机进行扫描及端口探测 对发现的存活主机进行全端口扫描,还是只开…