开发指导
使用场景
通过系统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。
平台差异性
无。