CPU异常是应用在前台或后台持续的大量消耗CPU资源,CPU使用率长时间较高会导致耗电快、引起手机发热等,需要重点监控优化。CPU监控提供线上CPU指标,并提供一定的和CPU异常归因分析能力,根据火焰图定位CPU异常问题。
前提条件
CPU指标
CPU指标确认总体CPU使用状态。
筛选条件
您可以通过以下筛选条件进行数据筛选。

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

CPU指标监控提供两个核心指标CPU使用率(简称rate)和CPU使用速率(简称speed):
指标 | 计算方式/说明 |
---|
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异常是应用在前台或者后台持续的大量消耗CPU资源,导致耗电发热问题严重。通过堆栈树和火焰图来定位异常类和函数。
筛选维度
您可以通过以下筛选条件进行数据筛选。

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