0
点赞
收藏
分享

微信扫一扫

Perfetto分析手机中CPU的状况

通过之前的分享 性能分析工具 之 Perfetto基本使用 ,了解了基本的使用方法,今天就进入正题,着手分析性能中最重要的部分 - CPU

但是有人说了可以使用top命令来查看,top命令也是可以的,但是它会以固定频率刷新,不能像Perfetto记录很细节,以及使用SQL语句统计。

Perfetto中可以看到每个时刻以及进程的CPU 使用情况,通过分析CPU用量情况,可以有效了解该时刻的性能状态。

接下来,我会将top命令和perfetto两个方式查看CPU介绍一下。


top命令 

以固定频率刷新显示系统中各个进程的资源占用情况。

Perfetto分析手机中CPU的状况_top命令

讲几个重要的参数:

800%cpu就是表示8个核;

idle就是当前的空闲期,当启动一个新的进程时,idle就会减少,对应就是该进程使用的usage情况。


Perfetto分析CPU 

在perfetto中需要配置CPU的设置,在Record new trace -> CPU ->Scheduling details,也可以将第一项“Coarse CPU usage counter”打开。

Perfetto分析手机中CPU的状况_top命令_02

分析CPU情况,我们也需要有一种“控制变量法”的思想,将其他干扰因素保持不变,因为相同的代码在不同的频率下执行时间也是不一样的,因此需要定频定核之后再分析CPU状况


CPU使用状况 

可以同时圈住所需的部分的CPU和slice,就可以显示出该区域的状态。

Perfetto分析手机中CPU的状况_top命令_03


在下方的Slices中可以看到圈住区域的trace,Wall duration就是CPU 的时间,这个是按降序排列,最前面是该区域耗时最多的线程。

Perfetto分析手机中CPU的状况_perfetto_04

在Thread States中,可以看到CPU状态,一般分为三种:

runnable是等待分配CPU,表示CPU繁忙;

running是已经分配到CPU,实际执行的时间;

sleeping是等待其他执行,通过状态这个可以看到CPU 的调度情况。

这样可以查看每个进程占用CPU的情况,如果runnable的状态过多,就表示CPU有问题,导致繁忙处理不过来。


查看某个线程下的CPU的状况,在所需线程中圈住CPU的位置就可以计算CPU使用情况。

Perfetto分析手机中CPU的状况_性能分析_05

Wall duration / Selected range = CPU 使用情况
如图中 3049.32 / 427.81 =‬ 712.77%

712.77% 表示8个核中使用了7.13个核,基本所有的核都在使用,空闲状态很少,idle值很小。这个线程占用CPU 很高。


CPU使用频率 

如果查看CPU的频率需要打开“CPU frequency and idle states”选项。

Perfetto分析手机中CPU的状况_perfetto_06


以still capture线程期间的频率进行分析。

Perfetto分析手机中CPU的状况_性能分析_07

在开始点击deliverInputEvent期间,CPU频率比较低,因为负载较低,不需要最高频调度,

但是在still capture时,CPU 0-3大核已经拉满,跑到2Ghz,4-7小核也是拉满1.5Ghz,证明此时是CPU全力在调度still capture这一线程,如果拍照的性能还是无法满足,需要细分检查调度问题或者期间某些耗时的操作,再进行细分。

也可以点击running状态显示相应的slice,通过跳转就可以看到running之前的时候在做什么,可以方便分析问题。

Perfetto分析手机中CPU的状况_top命令_08

以上就是top命令和trace在perfetto中分析CPU 的情况,本文只是简单的入门分析,更加深入的分析方法还是在实际工作中使用反馈出来。

举报

相关推荐

0 条评论