HarmonyOS Developer DevEco Studio使用指南 Profiler性能分析
Profiler性能分析器介绍
说明
DevEco Studio 3.1 Beta1版本暂不支持对HarmonyOS设备中运行的应用进行性能分析,如当前需使用该功能,请下载DevEco Studio 3.0 Release版本。我们将在后续版本提供全新支持API 9的性能分析工具,敬请期待。
应用或服务的性能较差时,可能表现为响应速度慢、动画播放不流畅、卡顿、崩溃或极其耗电。为了避免出现这些性能问题,需要通过一系列性能分析工具来确定应用或服务对哪方面资源(例如CPU、内存、显卡、网络和设备电池)的使用率比较高。DevEco Studio集成Profiler性能分析器,通过Profiler性能分析器提供实时性能分析数据,并通过图表形式进行呈现,方便开发者及时了解应用/服务的CPU占用、内存的分配占用、网络资源占用和电池资源消耗的具体数据。
在DevEco Studio菜单栏上单击View > Tool Windows > Profiler,或者在DevEco Studio底部工具栏单击
,打开Profiler性能分析器,如下图所示:
- 会话窗格,单击查看会话窗格的会话。或单击+按钮,在弹出的下拉菜单中,选择一个进程创建一个新的会话。或选择导入文件,查看历史记录,请注意,导入的历史记录只能导入HarmonyOS设备的跟踪记录。
缩放按钮用于对时间轴进行缩放,或使用
Attach to live跳转到实时更新。- CPU、IO、内存、网络、能耗数据实时变化视图,其中单击CPU、内存、网络、能耗对应的区域,可进入详情视图,IO数据只能在手机具有root镜像权限时才会显示。
分析HarmonyOS应用/服务的CPU活动性能
CPU Profiler 性能分析是用来分析CPU性能瓶颈的工具,可以实时查看应用/服务的CPU使用率和线程活动,也可以查看记录的方法跟踪数据、方法采样数据和系统跟踪数据的详情。基于CPU性能分析,您可以了解在一段时间内执行了哪些方法,以及每个方法在其执行期间消耗的CPU资源,可以有针对性的优化应用/服务的CPU使用率,提供更快、更顺畅的用户体验,以及延长设备电池续航时间。
录制CPU活动数据
录制HarmonyOS应用或服务的CPU活动数据,需要将待分析的应用或服务运行起来,当前仅支持本地真机。
说明
录制JS的CPU活动数据,应用/服务只能以Debug模式运行。
- 在DevEco Studio菜单栏上单击View > Tool Windows > Profiler,或者在DevEco Studio底部工具栏单击Profiler按钮,打开Profiler分析器。在Profiler分析器的SESSIONS窗口,单击+按钮,在弹出下拉列表中先选择设备,然后选择待分析的进程。
- 在实时变化视图,单击CPU区域,进入CPU详情页面。
- 在CPU详情页面选择CPU数据的录制模式,然后单击Record,开始录制CPU活动数据。
开始录制后,会在SESSIONS窗口的当前会话下生成应用/服务的数据记录。CPU数据的录制模式分为以下几种:
- 对Java 方法采样(Sample Java Methods):在应用/服务的Java 代码执行期间,定期捕获应用/服务的调用堆栈。分析器会比较捕获的数据集,以推导与应用/服务的 Java 代码执行有关的时间和资源使用信息。
- 跟踪Java 方法(Trace Java Methods):在运行时检测应用/服务,在每个方法调用开始和结束时记录一个时间戳。系统会收集并比较这些时间戳,以生成方法跟踪数据,包括时间信息和CPU 使用率。
- 跟踪JS 方法(Trace JS Methods):在运行时检测应用/服务,在每个方法调用开始和结束时记录一个时间戳。系统会收集并比较这些时间戳,以生成方法跟踪数据,包括时间信息和CPU 使用率。
- 跟踪系统调用(Trace System Calls):捕获应用/服务运行的细节,以便您检查应用/服务与系统资源的交互情况。您可以检查线程状态的确切时间和持续时间、直观地查看所有内核的CPU 瓶颈在何处,并添加需分析的自定义跟踪事件。
除了使用以上几种数据录制模式外,还可以单击模式选择下拉列表中的EditConfigurations自定义数据录制模式。
- 单击CPU详情页面的上部或下部的Stop结束当前录制。CPU录制完成后,可以在SESSIONS窗口选中该数据记录,单击右键或导出按钮将数据记录导出,方便分享和以后的查看。
查看CPU跟踪数据
CPU活动数据录制后,可以在SESSIONS窗口单击要查看的数据记录,或单击+按钮,在下拉列表中选择Load from file,导入数据记录文件。
- 单击数据记录,可查看数据详情。
- CPU在录制时间内的使用情况。
- IO资源占用情况。
- Interaction:在应用/服务的生命周期内,用户与应用/服务互动的事件。
- Threads:线程活动状态,可以查看线程是处于运行状态还是休眠状态,选择具体的线程,可以在右侧的Analysis窗口查看线程的详细信息。
- Analysis窗口,选择All threads可以看到全部线程的信息。选择具体的某个线程,可以查看该线程或方法调用的详细数据。
- Time reference菜单,选择以下选项之一,以确定如何测量每次调用的时间信息(仅跟踪 Java 方法中支持):
- Wall clock time:该时间信息表示进程从开始运行到结束,时钟实际走过的时间。
- Thread time:该时间信息表示实际经过的时间减去线程没有占用CPU 资源的那部分时间。对于任何给定的调用,其线程时间始终小于或等于其Wall clock time。使用线程时间可以让您更好地了解线程的实际CPU 使用率中有多少是给定方法或函数占用的。
- 过滤器,按函数、方法、类或软件包名称过滤跟踪数据。在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时间也可表示为在该记录期间占线程总时间的百分比。下表说明了如何解读顶部节点及其调用方(子节点)的时间信息。
Item | Self | Children | Total |
“Bottom Up”树顶部的方法或函数(顶部节点) | 表示方法或函数在执行自己的代码(而非被调用方的代码)上所花的总时间。与“Top Down”树相比,此时间信息表示在记录的持续时间内对此方法或函数的所有调用时间的总和。 | 表示方法或函数在执行它的被调用方(而非自己的代码)上所花的总时间。与“Top Down”树相比,此时间信息表示在记录的持续时间内对此方法或函数的被调用方的所有调用时间的总和。 | Self 时间和 Children 时间的总和。 |
调用方(子节点) | 表示被调用方在由调用方调用时的总 Self 时间。 | 表示被调用方在由调用方调用时的总 Children 时间。 | Self 时间和 Children 时间的总和。 |
使用Trace Events查看系统事件
检查系统跟踪数据时,您可以在Threads 时间轴中检查Trace Events,以查看每个线程上所发生事件的详细信息。将鼠标指针悬停在某个事件上,可查看该事件的名称以及在每种状态下所花费的时间。单击事件可在Analysis 窗格中查看详情。
CPU cores 窗格显示每个核心上安排的线程ability。将鼠标指针悬停在某个线程ability上,可查看该核心在该特定时间在哪个线程上运行。
文章转载自:
DevEcoStudio 版本devecostudio-windows-3.1.0.501,设备链接成功,无法使用profiler功能