Zephyr 获取 cpu 占用率异常bug分析

  1. 问题现象

基本公式:total cycle是各种非idle线程使用cycle数的统计,exec是所有cpu cycle

复制代码
CPU 占用 = total cycle / exec cycle
exec cycle = total cycle + idle cycle

每隔1s去采样cycle数然后做差,再用除法就可以得到最近1s的cpu占用率了

但是我在使用这个方法的时候算出了超过100%的利用率,下面来看一下到底是怎么回事

  1. 基本原理

    每个cpu上都会有一个硬件上稳定递增的syscounter,每个cycle+1,这是记录时间的基本接口

    Kernel cycle命令可以获取这个信息

    1. cpu cycle

    2. 线程调度到cpu的记录

    3. 线程调出cpu的记录

    4. 从cpu视角统计

    5. 从thread视角统计

  1. 社区的修复

遇事不决就找一下社区的修复

https://github.com/zephyrproject-rtos/zephyr/commit/b5363d5ffffcec2693cd88dcb8262f2d2152a773

这里有一个坑:

修复后获取cpu占用率再也没有超过100%了

相关推荐
luming-024 小时前
报错解决:IDEA终端输出和CMD终端输出Maven版本不一致
java·缓存·bug·intellij-idea
秃头小饼干10 小时前
技术文章大纲:Bug悬案侦破大会
bug
hui函数1 天前
Python系列Bug修复PyCharm控制台pip install报错:如何解决 pip install 网络报错 企业网关拦截 User-Agent 问题
python·pycharm·bug
hui函数1 天前
如何解决 pip install 代理报错 SOCKS5 握手失败 ReadTimeoutError 问题
bug·pip
f***24111 天前
Bug悬案:程序员破案实录
bug
一条咸鱼_SaltyFish2 天前
[Day10] contract-management初期开发避坑指南:合同模块 DDD 架构规划的教训与调整
开发语言·经验分享·微服务·架构·bug·开源软件·ai编程
雒珣2 天前
qt界面和图片疯狂变大的bug问题
开发语言·qt·bug
天才测试猿2 天前
软件测试之bug分析定位技巧
软件测试·python·selenium·测试工具·职场和发展·测试用例·bug
切糕师学AI3 天前
NuttX RTOS是什么?
嵌入式·rtos
zhz52143 天前
后端代码规范文档示例
重构·bug·代码规范·结对编程