【FreeRTOS】cpu利用率统计
前言
本笔记基于 stm32+FreeRTOS。
主要参考野火、安富莱。
概念
简单概要:
各任务cpu利用率:
打印出各任务在某段时间内站用cpu时长的比例。原理很简单:
- 开启一个高精度的定时器
- 让一个全局变量(如:ulCpuTraceTick)不断往上累加
- 每次切换任务时,记录上一个任务占用了多少个高精度定时器的tick
- 累加到该表示该任务的变量中(如:ulCpuTraceTaskATick)
- ulCpuTraceTaskATick/ulCpuTraceTick 即可计算出该任务的CPU占用率。
作用
阔以清晰地看出各个任务的cpu利用率,验证一个系统好坏的方法之一。
如,一个系统总任务cpu利用率经常 大于80%,会造成一些紧急事件无法及时得到响应,同时,峰值可能超出100%,导致任务滞后。
又如,一个系统总任务cpu利用率经常 小于 10%,导致资源浪费。
再如,阔以监测各个任务 cup 占用率,发现某些任务经常 大于70%,便去优化优化该任务。
注:以上数值标准均为个人习惯,并非标准答案!
必看点
影响
该功能在调试时启用,在产品发布时务必关闭。
因为监测cpu利用率也是消耗cpu资源的。时钟精度
一般为系统时钟节拍的 10-20 倍。
如,当前系统节拍为 1000 Hz,那么定时器节拍则为 10000-20000 Hz。按20000 Hz 计算,即 50us 计算一次。由于FreeRTOS没有对其进行溢出保护,所以最大支持计数时间为:2^32 * 50us / 3600s = 59.6 分钟。超出后结果将不准确。
实现
添加几个宏定义
源码
FreeRTOS
/*
* 当前文件为 FreeRTOSConfig.h
*/
#define configUSE_TRACE_FACILITY 1 /* cpu task */
/* Run time and task stats gathering related definitions. */
#define configGENERATE_RUN_TIME_STATS 1 /* cpu task */
#define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* cpu task */
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() (ulCpuTraceTick = 0ul)
#define portGET_RUN_TIME_COUNTER_VALUE() ulCpuTraceTick
STM32 定时器
(待写)
简要说明
configUSE_TRACE_FACILITY:
- 启用FreeRTOS可视化追踪调试功能
configGENERATE_RUN_TIME_STATS:
- 启用FreeRTOS运行时间统计功能
configUSE_STATS_FORMATTING_FUNCTIONS:
- 启用FreeRTOS格式化函数功能
portCONFIGURE_TIMER_FOR_RUN_TIME_STATS:
- 重置自定义心跳值
portGET_RUN_TIME_COUNTER_VALUE:
- 宏定义自定义心跳变量
ulCpuTraceTick
- 自定义心跳值,高频累加即可。
【FreeRTOS】cpu利用率统计的更多相关文章
- Linux如何统计进程的CPU利用率
1.0 概述 在Linux的/proc文件系统,可以看到自启动时候开始,所有CPU消耗的时间片:对于个进程,也可以看到进程消耗的时间片.这是一个累计值,可以"非阻塞"的输出.获得一 ...
- Linux如何统计进程的CPU利用率[转]
0. 为什么写这篇博客 Linux的top或者ps都可以查看进程的cpu利用率,那为什么还需要了解这个细节呢.编写这篇文章呢有如下三个原因: * 希望在脚本中,能够以过”非阻塞”的方式获取进程cpu利 ...
- shell脚本统计多个CPU利用率
本节主要内容:top命令统计CPU的利用率 一,问题分析 MySQL在Linux下是多线程的,而且只能将多个线程分布到一个CPU上.因此,使用小型服务器,或者PC SERVER,多个CPU利用率并不高 ...
- cpu利用率和cpu 队列
SIP的第四期结束了,因为控制策略的丰富,早先的的压力测试结果已经无法反映在高并发和高压力下SIP的运行状况,因此需要重新作压力测试.跟在测试人员后面做了快一周的压力测试,压力测试的报告也正式出炉,本 ...
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidstat文件 procpidtasktidstat文件 系统中有关进程cpu使用率的常用命令 ps ...
- linux系统性能监控--CPU利用率
在对系统的方法化分析中,首要且最基本的工具之一常常是对系统的 CPU利用率进行简单测量. Linux以及大多数基于 UNIX的操作系统都提供了一条命令来显示系统的平均负荷(loadaverage) . ...
- CPU利用率和CPU负荷(CPU usage vs CPU load)
对于CPU的性能监测,通常用top指令能显示出两个指标:cpu 利用率和cpu负荷. 其中%Cpu相关的内容: us表示用户进程cpu利用率,sy表示系统内核进程cpu利用率,ni表示运行正常进程消耗 ...
- [转帖]震惊,用了这么多年的 CPU 利用率,其实是错的
震惊,用了这么多年的 CPU 利用率,其实是错的 2018年12月22日 08:43:09 Linuxer_ 阅读数:50 https://blog.csdn.net/juS3Ve/article/d ...
- CPU 利用率背后的真相,只有 1% 人知道【转】
导读:本文翻译自 Brendan Gregg 去年的一篇博客文章 “CPU Utilization is Wrong”,从标题就能想到这篇文章将会引起争议.文章一上来就说,我们“人人皆用.处处使用,每 ...
随机推荐
- flex 布局占位符
flex 布局占位符 空 span bug .popover-custom-class .system-guide-container .buttons-box { display: flex; fl ...
- React hox
React hox https://github.com/umijs/hox
- PWA & Service Workers 版本更新 bug
PWA & Service Workers 版本更新 bug PWA & Service Worker https://developer.mozilla.org/zh-CN/docs ...
- iPadOS 14 memoji 无法使用 bug
iPadOS 14 memoji 无法使用 bug iPadOS 14 bug refs 如何在 iPhone 和 iPad Pro 上使用动话表情 https://support.apple.com ...
- codepen iframe theme id
codepen iframe theme id iframe css theme demos See the Pen css margin collapsing (1. 相邻兄弟元素) by xgqf ...
- JavaScript Inheritance All in One
JavaScript Inheritance All in One constructor inheritance prototype chain inheritance "use stri ...
- HTML Custom Elements (v1)
HTML Custom Elements (v1) https://developers.google.com/web/fundamentals/web-components/customelemen ...
- onsen & UI & vue & mobile UI
onsen & UI vue & mobile UI $ npm i onsenui vue-onsenui # OR $ npm i -S onsenui vue-onsenui h ...
- Flutter & QRCode App
Flutter & QRCode App https://github.com/xgqfrms/qrcode-reader-app how to open android emulator o ...
- API protocols All In One
API protocols All In One SOAP vs. REST vs. JSON-RPC vs. gRPC vs. GraphQL vs. Thrift https://www.mert ...