更新时间:2021-07-08 GMT+08:00
编程实例
实例描述
本实例实现如下功能:
- 创建一个测试CPUP的任务。
- 获取系统最近1s内所有任务或中断的CPUP。
- 获取系统(除idel任务外)最近10s内的总CPU占用率。
- 获取CPUP测试任务的CPUP。
编程示例
前提条件:通过make menuconfig配置好CPU占用率模块。
代码实现如下:
#include <unistd.h > #include "los_task.h" #include "los_cpup.h" #define MAXTASKNUM 32 UINT32 cpupUse; UINT32 g_cpuTestTaskId; VOID Example_CPUP(VOID) { printf("entry cpup test example\n"); while(1) { usleep(100); } } UINT32 Example_CPUP_Test(VOID) { UINT32 ret; TSK_INIT_PARAM_S cpupTestTask; CPUP_INFO_S cpupInfo; /* 创建测试CPUP的任务 */ memset(&cpupTestTask, 0, sizeof(TSK_INIT_PARAM_S)); cpupTestTask.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_CPUP; cpupTestTask.pcName = "TestCpupTsk"; /* 测试任务名称 */ cpupTestTask.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; cpupTestTask.usTaskPrio = 5; cpupTestTask.uwResved = LOS_TASK_STATUS_DETACHED; ret = LOS_TaskCreate(&g_cpuTestTaskId, &cpupTestTask); if(ret != LOS_OK) { printf("cpupTestTask create failed.\n"); return LOS_NOK; } usleep(100); /* 系统中运行的任务或者中断数量 */ UINT16 maxNum = MAXTASKNUM; /* 获取系统所有任务或中断最近1s的CPU占用率 */ cpupUse = LOS_AllCpuUsage(maxNum, &cpupInfo, CPUP_LAST_ONE_SECONDS, 0); printf("the system cpu usage in last 1s: %d\n", cpupUse); /* 获取最近10s内系统(除idel任务外)总CPU占用率 */ cpupUse = LOS_HistorySysCpuUsage(CPUP_LAST_TEN_SECONDS); printf("the history system cpu usage in last 10s: %d\n", cpupUse); /* 获取指定任务在最近1s的CPU占用率,该测试例程中指定的任务为上面创建的CPUP测试任务 */ cpupUse = LOS_HistoryTaskCpuUsage(g_cpuTestTaskId, CPUP_LAST_ONE_SECONDS); printf("cpu usage of the cpupTestTask in last 1s:\n TaskID: %d\n usage: %d\n", g_cpuTestTaskId, cpupUse); return LOS_OK; }
结果验证
编译运行得到的结果为:
the system cpu usage in last 1s: 15 the history system cpu usage in last 10s: 3 cpu usage of the cpupTestTask in last 1s: TaskID: 10 usage: 0
完整实例代码
父主题: CPU占用率