开发指导
使用场景
通过系统CPU占用率,判断当前系统负载是否超出设计规格。
通过系统中各个任务的CPU占用率,判断各个任务的CPU占用率是否符合设计的预期。
功能
Huawei LiteOS的CPU占用率模块为用户提供下面几种功能,接口详细信息可以查看API参考。
| 功能分类 | 接口名 | 描述 |
|---|---|---|
| 获取系统CPU占用率 | LOS_HistorySysCpuUsage | 获取系统CPU占用率,不包含idle任务 |
| 获取任务CPU占用率 | LOS_HistoryTaskCpuUsage | 使能LOSCFG_CPUP_INCLUDE_IRQ后,获取指定中断(传入中断号)的CPU占用率;未使能LOSCFG_CPUP_INCLUDE_IRQ,获取指定任务的CPU占用率 |
| LOS_AllCpuUsage | 使能LOSCFG_CPUP_INCLUDE_IRQ且设置入参flag为0时,获取所有中断的CPU占用率。设置入参flag为非0,或者关闭LOSCFG_CPUP_INCLUDE_IRQ后,获取所有任务的CPU占用率,这里的任务也包含了idel任务 | |
| 重置CPU占用率 | LOS_CpupReset | 重置CPU占用率数据,包含系统和任务的CPU占用率 |
- 通过上述接口获取到的CPU占用率是千分比,所以CPU占用率的有效表示范围为0~1000。系统CPU占用率为1000,表示系统满负荷运转。任务CPU占用率为1000,表示在一段时间内系统一直在运行该任务。
- 获取任务CPU占用率有三种模式,通过入参mode设置:
- CPUP_LAST_TEN_SECONDS(值为0):表示获取最近10s内的CPU占用率。
- CPUP_LAST_ONE_SECONDS(值为1): 表示获取最近1s的CPU占用率。
- CPUP_ALL_TIME(值为0xffff),或除0和1之外的其他值:表示获取自系统启动以来的CPU占用率。
CPUP错误码
| 序号 | 定义 | 实际数值 | 描述 | 参考解决方案 |
|---|---|---|---|---|
| 1 | LOS_ERRNO_CPUP_NO_MEMORY | 0x02001e00 | 初始化CPU占用率模块时,内存不足 | 调整OS_SYS_MEM_SIZE,以确保有足够的内存供CPU占用率模块使用 |
| 2 | LOS_ERRNO_CPUP_TASK_PTR_NULL | 0x02001e01 | 入参存在空指针 | 传入正确的指针 |
| 3 | LOS_ERRNO_CPUP_NO_INIT | 0x02001e02 | CPU占用率模块没有初始化 | 初始化CPU占用率模块后,再使用该模块 |
| 4 | LOS_ERRNO_CPUP_MAXNUM_INVALID | 0x02001e03 | 传入LOS_AllCpuUsage接口的入参(最大线程数或中断数)是一个无效值 | 传入正确的最大线程数或中断数 |
| 5 | LOS_ERRNO_CPUP_THREAD_NO_CREATED | 0x02001e04 | 获取指定任务的CPU占用率时,发现该任务未创建 | 系统只能统计已经被创建的任务的CPU占用率,检查传入的任务ID对应的任务是否已经创建 |
| 6 | LOS_ERRNO_CPUP_TSK_ID_INVALID | 0x02001e05 | 调用获取指定任务的CPU占用率的接口时,传入了无效的任务ID | 检查传入的任务ID的正确性 |
错误码定义见错误码简介。8~15位的所属模块为CPUP模块,值为0x1e。
开发流程
CPU占用率的典型开发流程:
- 执行make menuconfig命令,进入Kernel ---> Enable Extend Kernel ---> Enable Cpup菜单,完成CPU占用率模块的配置。
配置项
含义
取值范围
默认值
依赖
LOSCFG_KERNEL_CPUP
CPUP模块的裁剪开关
YES/NO
YES
LOSCFG_KERNEL_EXTKERNEL
LOSCFG_CPUP_INCLUDE_IRQ
使能该配置项后,可以在LOS_HistoryTaskCpuUsage和LOS_AllCpuUsage接口中获取中断的CPU占用率。关闭该配置项后,只能获取任务的CPU占用率。
YES/NO
YES
LOSCFG_KERNEL_CPUP
- 获取系统CPU使用率LOS_HistorySysCpuUsage。
- 获取指定任务或中断的CPU使用率LOS_HistoryTaskCpuUsage。
- 获取所有任务或所有中断的CPU使用率LOS_AllCpuUsage。
平台差异性
无。