RT-Thread的CPU占用率查看
2024-08-30 20:59:11
今天看到朋友的博客,他在描述RT-Thread钩子函数时,简单提了下RT-Thread中CPU占用,没有具体描述,所以我在这里做下补充。
RT-Thread查看CPU使用率时,我知道的有这种方法。
大概原理就是,在相同时间内,统计CPU在不调度的情况下和CPU在调度情况下变量的计数值,得出CPU空闲率,CPU占用率 = 1-空闲率。
具体实现如下:
首先定义节拍数。
定义钩子函数
将钩子函数添加到空闲线程中
在钩子函数cpu_usage_idle_hook(void)中添加如下代码
rt_tick_t tick;
rt_uint32_t count;
volatile rt_uint32_t loop; if (total_count == 0)
{ rt_enter_critical(); //关闭系统调度
tick = rt_tick_get();
while(rt_tick_get() - tick < CPU_USAGE_CALC_TICK)
{
total_count ++;
loop = 0; while (loop < CPU_USAGE_LOOP) loop ++;
}
rt_exit_critical();// 打开系统调度
} count = 0;
/* get CPU usage */
tick = rt_tick_get();
while (rt_tick_get() - tick < CPU_USAGE_CALC_TICK)
{
count ++;
loop = 0;
while (loop < CPU_USAGE_LOOP) loop ++;
} /* calculate major and minor */
if (count < total_count)
{
count = total_count - count;
cpu_usage_major = (count * 100) / total_count;
cpu_usage_minor = ((count * 100) % total_count) * 100 / total_count;
}
else
{
total_count = count; /* no CPU usage */
cpu_usage_major = 0;
cpu_usage_minor = 0;
}
在系统10个节拍(100ms)中内统计变量tatal_count计数值,统计出CPU全速运行时的值,然后打开系统调度,再次在相同时间内,使用count计数,使用公式cpu_usage_minor = ((count * 100) % total_count) * 100 / total_count,即可得出数值,使用空闲线程钩子函数rt_thread_idle_sethook()添加到空闲线程中,然后可以调用rt_kprintf函数打印出来CPU占用率。
我目前只学了这种方法,如果有高人有更好的方法欢迎交流。
最新文章
- noip2016十连测题解
- 面向对象Part3
- 让自己也能使用Canvas
- saltstack(主机改名)
- 继续Get News List
- Could not load the ";btn_020.disable.png"; image referenced from a nib in the bundle with identifier ";com.xxx.---0710";
- ubuntu 14.04 chromium,firefox 怎样正确安装Adobe flash player
- WPF TextElement内容模型简介(转)
- OC基础4:类和方法
- 【软件project】生存期模型(含图)
- 04_Weblogic之受管服务器:配置受管服务器,启动受管服务器,解决因为强制关闭Weblogic之后导致启动有问题的问题,配置boot.properties
- UITabBarController及三种控制器的…
- Java 学习笔记 (三) Java 日期类型
- Orchard克死你 之 刚起步
- PHP7 中 ?? 与? :的区别
- CF997C Sky Full of Stars
- LeetCode算法题-Can Place Flowers(Java实现)
- Oracle回收站的清理方法
- [CodeForces-1036E] Covered Points 暴力 GCD 求交点
- Cmake入门资料
热门文章
- JQuery采纳CSS实现DOM显示和隐藏要素
- 使用 NodeJS + Express从GET/POST Request 取值
- 隐藏在QRCode二维码背后的秘密
- 基于IdentityServer4的单点登录——Client
- JavaScript eval() 函数,计算某个字符串,并执行其中的的 JavaScript 代码。
- Win10《芒果TV》更新v3.5.0夏至版:会员尊享蓝光画质,关联本地视频播放
- Redis实现Timeline
- 编解码TIFF图像
- Android零基础入门第4节:正确安装和配置JDK, 高富帅养成第一招
- WP8.1使用HttpClient类