You need to enable JavaScript to run this app.
导航
CPU监控
最近更新时间:2024.07.02 15:14:44首次发布时间:2022.01.07 17:03:01

CPU异常是应用在前台或后台持续的大量消耗CPU资源,CPU使用率长时间较高会导致耗电快、引起手机发热等,需要重点监控优化。CPU监控提供线上CPU指标,并提供一定的和CPU异常归因分析能力,根据火焰图定位CPU异常问题。

前提条件

CPU指标

CPU指标确认总体CPU使用状态。

筛选条件

您可以通过以下筛选条件进行数据筛选。

  • Android系统支持的筛选维度:
    时间、设备ID、User ID、前后台、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、采集场景/页面、网络类型、进程名称、是否主进程、电池剩余容量、CPU型号、是否充电、省电模式是否开启、机器温度状态、机器电池温度、机器是否正常状态自定义维度。
  • iOS系统支持的筛选维度:
    时间、设备ID、User ID、前后台、越狱状态、系统版本、APP版本、APP小版本号、机型、APM SDK版本、下载渠道、采集场景/页面、网络类型、自定义维度。

指标趋势图

CPU趋势展示了筛选条件下CPU指标的趋势图,默认展示CPU指标的样本量和平均值等分布趋势。
图片
单击指标详情,查看指标趋势图、多维分布。
CPU指标监控提供两个核心指标CPU使用率(简称rate)和CPU使用速率(简称speed):

注意

iOS从线程信息里获取的CPU信息只有CPU使用率。

指标

计算方式/说明

CPU使用率

采样窗口内,进程CPU时长/系统CPU时长

CPU使用速率

采样窗口内,进程CPU时长/自然时长

其他说明:

  • 每次采样都会对应一次360ms的时间窗口。
  • CPU时长也叫cpu time,即CPU实际运行的时间,可以理解为所有时间片之和;进程cpu时长就是目标进程分到的时间片之和;系统CPU时长就是所有进程的时间片之和。因此0 < rate < 1。
  • 对于多核CPU的一个core来说,cpu time就是这个core实际工作的时间;这里是对于整个CPU来说,cpu time就是所有core的cpu time之和。因此0 < speed < 核数。

指标详情

CPU指标详情页面,可以查看某个线程的使用率的趋势图和多维分析。
图片

CPU异常

CPU异常是应用在前台或者后台持续大量消耗CPU资源,导致耗电发热问题严重。通过堆栈树和火焰图来定位异常类和函数。
完成前提条件后,平台会根据SDK上报配置中,CPU监控模块下的指标应用在前台的进程CPU使用速率异常阈值应用在后台的进程CPU使用速率异常阈值来判断CPU使用速率是否超过阈值。
如果CPU使用速率连续超过阈值,平台会根据SDK上报配置中,CPU监控模块下的指标线程CPU使用率异常阈值找到CPU使用率超过阈值的线程,抓取线程堆栈。

筛选维度

您可以通过以下筛选条件进行数据筛选。

  • Android系统支持的筛选维度:
    时间、堆栈详情、设备ID、User ID、issue新增状态、前后台、系统版本、机型、APP版本、APP小版本号、APM SDK版本、下载渠道、ROM信息、省份、使用时长、进程名、厂商、采集场景/页面、issue状态、处理人、标签、自定义维度、PV自定义维度。
  • iOS支持的筛选维度:
    时间、堆栈详情、设备ID、User ID、issue新增状态、前后台、越狱状态、系统版本、机型、APP版本、APP小版本号、APM SDK版本、下载渠道、省份、使用时长、采集场景/页面、issue状态、处理人、标签、自定义维度、PV自定义维度。

CPU异常趋势

CPU异常趋势展示了筛选条件下CPU异常上报变化的趋势图。指标数据的右侧可以查看与上一周期相比崩溃数据的变化。
图片
指标说明:

指标

说明

异常数

筛选条件下发生的错误总数

异常率

筛选条件下发生的错误总数/筛选条件下所有用户启动的总次数

影响用户数

筛选按条件下整体去重后影响的用户总数

整体影响用户比

筛选按条件下整体去重后影响的用户总数/筛选条件下整体去重后的活跃用户总数

平均影响用户比

各时间点的整体影响用户比求和/有值的时间点的个数

单次启动平均上报次数

平均每个用户异常期间上报日志数量,可以用来估算异常持续时间

CPU异常列表

CPU异常列表根据异常线程和高频异常堆栈的函数名进行聚合展示。
图片

CPU异常详情

CPU异常功能收集的issue是一个持续时间窗口的所有CPU异常线程的信息+堆栈,因此收集的信息+堆栈是可以转换成火焰图的。

总调用树

图片
总调用树是将所有CPU异常线程的堆栈拍平,并聚合成一棵树,同时也能直接看火焰图。
图片
其中每行函数左侧的数字表示“权重”,权重数值越大表示这行函数导致的CPU占用越多,因此火焰图中越宽的函数即表示“权重”越大。

线程调用树

图片
线程调用树和总调用树的区别是以线程维度将信息+堆栈分开:
图片
同时也能查看某一个CPU异常线程在这个时间窗口内的信息+堆栈。

issue汇总调用树

图片
issue汇总调用树代表的不再是这一个issue,而是这个issue族里面的所有issue的堆栈聚合。