首页 > 其他分享 >Freertos-CPU使用率统计

Freertos-CPU使用率统计

时间:2024-12-13 14:11:26浏览次数:3  
标签:RunTime Freertos xxx RunInfo printf 使用率 CPU define

此篇文章在2023年5月23日被记录

RTOS-任务CPU占用统计

在项目开发过程中,有时会需要查看各个任务的资源占用,需要用到rtos的CPU使用统计,其原理也很简单,就是开一个频率特别高的定时器,rtos在运行过程累计各个任务的实际占用时长,继而统计显示

FreeRTOSConfig配置

//计算CPU使用率
#define configGENERATE_RUN_TIME_STATS  1 //启用运行时间统计功能 
#define configUSE_TRACE_FACILITY  1     //启用可视化跟踪调试 
/* 与宏 configUSE_TRACE_FACILITY 同时为 1 时会编译下面 3 个函数
* prvWriteNameToBuffer()
* vTaskList(),
* vTaskGetRunTimeStats()
*/
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
extern volatile uint32_t CPU_RunTime; 
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() (CPU_RunTime = 0ul) 
#define portGET_RUN_TIME_COUNTER_VALUE() CPU_RunTime

启用一个硬件定时器

启用一个20K Hz频率的硬件定时器,在这个定时器中,会有一个标志位持续性的自增,rtos内核中会用这个标志位记录各个任务的运行市场,中断函数如下,我启用的是TIM2

volatile uint32_t CPU_RunTime = 0UL;
void TMR2_GLOBAL_IRQHandler(void)
{
    if (tmr_flag_get(TMR2, TMR_OVF_FLAG) != RESET)
    {
        CPU_RunTime++;
        tmr_flag_clear(TMR2, TMR_OVF_FLAG);
    }
}

打印任务状态与显示CPU使用率

    static uint8_t CPU_RunInfo[400];
    memset(CPU_RunInfo, 0, 400);
    vTaskList((char *)&CPU_RunInfo); // 获取任务运行时间信息

    printf("---------------------------------------------\r\n");
    printf("name        state     pro       water     num\r\n");
    printf("%s", CPU_RunInfo);
    printf("---------------------------------------------\r\n");

    memset(CPU_RunInfo, 0, 400); // 信息缓冲区清零

    vTaskGetRunTimeStats((char *)&CPU_RunInfo);

    printf("name           count                      use\r\n");
    printf("%s", CPU_RunInfo);
    printf("-------------------------------------------\r\n\n");

显示示例

---------------------------------------------
name        state     pro       water     num
SHxxx_TASK     	X	2	878	1
Auxxx Task     	R	2	5075	5
xxx Pm         	R	1	388	4
IDLE           	R	0	101	12
xxx_task      	B	3	687	6
xxx_task_loo	B	4	216	3
xxx_TASK      	B	3	971	11
xxx_task        	B	3	380	2
xxx_tx_tas	B	3	913	9
Tmr Svc        	B	5	487	13
xxx_rx_tas	B	4	917	8
phy_xxx	B	5	473	7
xxx_audio_task	B	5	773	10
---------------------------------------------
name           count                      use
SHxxx_TASK     	101083		<1%
xxx Pm         	178173		<1%
IDLE           	50990201		64%
xx_task        	24812095		31%
xxx Task     	124400		<1%
xxx_tx_tas	258962		<1%
xxx_task_loo	60382		<1%
xxx_TASK      	48645		<1%
xxx_task      	761773		<1%
xxx_rx_tas	38417		<1%
phy_xxx	20046		<1%
xxx_task	1189061		1%
Tmr Svc        	2		<1%
-------------------------------------------

freertos启用这些选项后,rtos内核执行的任务会变多,CPU的负担会增加,因此在产品发行前需要关闭这些选项

标签:RunTime,Freertos,xxx,RunInfo,printf,使用率,CPU,define
From: https://www.cnblogs.com/shumei52/p/18604802

相关文章

  • 专为高性能汽车设计的Armv9架构的Neoverse V3AE CPU基础知识与软件编码特性解析
    一、ARMv9以及V3AE处理器架构Armv9架构的ArmNeoverseV系列处理器是专为高性能计算设计的产品线,其中V3AE(AdvancedEfficiency)特别强调了性能与效率之间的平衡。以下是关于Armv9架构下NeoverseV3AE处理器结构和指令集的一些详细解读:Armv9架构概述Armv9是ARM最新一代......
  • 排查cpu占用率高及堆内存溢出
    1.排查cpu占用过高1.输入top命令查看cpu占用最高的进程(如pid:2308)2.查看哪个线程占用cpu最高ps-mp2308-oTHREAD,tid,time(如线程TID占用cpu占用最高:2320)3.把TID2320转为16进制,printf"%x\n"2320(返回910)4.拉出指定线程的堆栈信息:jstack2308|grep910-A10......
  • 转载:【AI系统】CPU 计算本质
    本文将深入探讨CPU的计算性能,从算力的敏感度和不同技术趋势中分析影响CPU性能的关键因素。我们将通过数据和实例,详细解释CPU算力的计算方法、算力与数据加载之间的平衡点,以及如何通过算力敏感度分析来识别和优化计算系统中的性能瓶颈。此外,我们还将观察服务器、GPU和超级计......
  • 转载:【AI系统】CPU 指令集架构
    我们知道,计算机指令是指挥机器工作的指示和命令,程序就是一系列指令按照顺序排列的集合,执行程序的过程就是计算机的工作过程。从微观上看,我们输入指令的时候,计算机会将指令转换成二进制码存储在存储单元里面,然后在即将执行的时候拿出来。那么计算机是怎么知道我们输入的是什么指令,......
  • 转载:【AI系统】CPU 计算时延
    CPU(中央处理器)是计算机的核心组件,其性能对计算机系统的整体性能有着重要影响。CPU计算时延是指从指令发出到完成整个指令操作所需的时间。理解CPU的计算时延对于优化计算性能和设计高效的计算系统至关重要。在本文中我们将要探讨CPU的计算时延组成和影响时延产生的因素,并深入......
  • 转载:【AI系统】CPU 指令集架构
    我们知道,计算机指令是指挥机器工作的指示和命令,程序就是一系列指令按照顺序排列的集合,执行程序的过程就是计算机的工作过程。从微观上看,我们输入指令的时候,计算机会将指令转换成二进制码存储在存储单元里面,然后在即将执行的时候拿出来。那么计算机是怎么知道我们输入的是什么指令,......
  • 转载:【AI系统】CPU 计算本质
    本文将深入探讨CPU的计算性能,从算力的敏感度和不同技术趋势中分析影响CPU性能的关键因素。我们将通过数据和实例,详细解释CPU算力的计算方法、算力与数据加载之间的平衡点,以及如何通过算力敏感度分析来识别和优化计算系统中的性能瓶颈。此外,我们还将观察服务器、GPU和超级计......
  • 转载:【AI系统】CPU 计算时延
    CPU(中央处理器)是计算机的核心组件,其性能对计算机系统的整体性能有着重要影响。CPU计算时延是指从指令发出到完成整个指令操作所需的时间。理解CPU的计算时延对于优化计算性能和设计高效的计算系统至关重要。在本文中我们将要探讨CPU的计算时延组成和影响时延产生的因素,并深入......
  • 转载:【AI系统】CPU 基础
    CPU是CentralProcessingUnit(中央处理器)的简称,它负责执行指令和计算,控制着计算机的所有组件。CPU从无到有,从弱小到强大,经历了漫长发展过程,其间发生了无数的故事。在本文将着重介绍CPU基础内容,从CPU的发展历史入手,看看世界上第一块CPU是怎么诞生的,再到当代CPU的组成,为......
  • pnpcpu.exe 是一个命令行工具,主要用于测试 Windows 系统对即插即用 CPU(热添加和热替换
    pnpcpu.exe用法开始测试:检查基本要求。用法:-install安装测试以模拟处理器的热添加。此操作为后续模拟热添加或替换操作做准备。-add模拟CPU的热添加。必须首先运行-install。-logoadd执行针对CPU热添加的徽标测试。必须首先运行-install。-replace模拟......