更新时间:2021-07-08 GMT+08:00
分享

开发指导

使用场景

通过系统CPU占用率,判断当前系统负载是否超出设计规格。

通过系统中各个任务的CPU占用率,判断各个任务的CPU占用率是否符合设计的预期。

功能

Huawei LiteOS的CPU占用率模块为用户提供下面几种功能,接口详细信息可以查看API参考。

表1 功能列表

功能分类

接口名

描述

获取系统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占用率

  1. 通过上述接口获取到的CPU占用率是千分比,所以CPU占用率的有效表示范围为0~1000。系统CPU占用率为1000,表示系统满负荷运转。任务CPU占用率为1000,表示在一段时间内系统一直在运行该任务。
  2. 获取任务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占用率的典型开发流程:

  1. 执行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

  2. 获取系统CPU使用率LOS_HistorySysCpuUsage。
  3. 获取指定任务或中断的CPU使用率LOS_HistoryTaskCpuUsage。
  4. 获取所有任务或所有中断的CPU使用率LOS_AllCpuUsage。

平台差异性

无。

相关文档