跳到主要内容

CPU高负载事件介绍

简介

CPU高负载事件用于检测应用在前台或后台时,应用相关的进程使用CPU资源超过系统的门限,导致手机发热等问题。

CPU高负载事件包含以下3类:

  1. 前台CPU高负载异常:5分钟内应用平均负载大于30%。
  2. 后台CPU高负载异常:5分钟内应用平均负载大于10%。
  3. 线程CPU高负载异常:1分钟内单线程平均负载大于70%。

如需了解如何使用HiAppEvent提供订阅CPU高负载事件,请参考以下文档。目前仅提供ArkTS接口。

CPU高负载事件不支持在应用分身场景元服务场景使用HiAppEvent进行订阅,从API version 22开始支持在输入法应用场景下使用HiAppEvent进行订阅。

检测原理

CPU高负载事件检测原理详见功耗检测章节。

自定义参数

configEventPolicy接口说明

接口名描述
configEventPolicy(policy: EventPolicy): Promise<void>事件的自定义配置参数策略。 说明:从API version 22开始,支持该接口。

configEventPolicy接口参数设置

参数名类型必填说明
policyEventPolicy系统事件配置策略。

EventPolicy接口参数设置

名称类型只读可选说明
CpuUsageHighPolicyCpuUsageHighPolicyCPU高负载事件配置策略。

事件字段说明

params字段说明

名称类型说明
timenumber事件生成时间,单位为ms。
bundle_versionstring应用版本。
bundle_namestring应用名称。
foregroundboolean应用是否处于前台状态,true:应用在前台,false:应用在后台。
usagenumber单核CPU平均使用率,取值范围:[0,100],单位:%。
begin_timenumber采集开始时间,单位为ms。
end_timenumber采集结束时间,单位为ms。
fault_typenumber故障类型(从API version 20开始,支持该参数): - 1:前台CPU高负载异常; - 2:后台CPU高负载异常; - 3:线程CPU高负载异常。
external_logstring[]记录故障日志文件路径,日志的文件名是:CPU_USAGE_HIGH_时间数字_数字.log,详细见日志规格为避免目录空间超限,导致新生成的日志文件写入失败,日志文件处理完后请及时删除。
log_over_limitboolean生成的故障日志文件与已存在的日志文件总大小是否超过5M上限。true表示超过上限,日志写入失败;false表示未超过上限
threadsobject[]线程信息,具体信息取决于fault_type故障类型,不同类型记录的线程信息存在差异。 - 前台CPU高负载异常:异常进程的TOP5线程信息; - 后台CPU高负载异常:异常进程的TOP5线程信息; - 线程CPU高负载异常:异常线程的信息。

threads字段说明

名称类型说明
namestring线程名。
tidnumber线程id。
usagenumber平均负载数值,取值范围:[0,100],单位:%,具体信息取决于fault_type故障类型,不同类型记录的平均负载数值含义存在差异。 - 前台CPU高负载异常:多核平均负载,如需换算单核负载需乘以核数; - 后台CPU高负载异常:多核平均负载,如需换算单核负载需乘以核数; - 线程CPU高负载异常:单核平均负载。