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%了

相关推荐
sg_knight1 天前
Claude Code 如何辅助定位 Bug 和问题代码
java·前端·bug·ai编程·claude·code·claude-code
读忆1 天前
在前端开发中使用组件后, 若是出了bug, 应该如何排查, 怎么排查, 解决方式是什么?
前端·javascript·vue.js·bug
aspirestro三水哥1 天前
9.3工欲善其事必先利其器
rtos·xenomai
IT二叔2 天前
Git Flow04-bug修改流程
git·bug
万粉变现经纪人3 天前
如何解决 pip install shapely 报错 GEOS C 库未找到 问题
c语言·开发语言·python·pycharm·bug·pandas·pip
cyforkk3 天前
前后端联调实战:解决业务异常被误判为成功的“幽灵 Bug”
bug·状态模式
li9056632804 天前
hanzi-writer-miniprogram Path2D问题以及Bug修复
微信小程序·bug
逆小舟4 天前
【SWM320】FreeRTOS搭建工程——1、框架学习
嵌入式·c·rtos
万粉变现经纪人4 天前
如何解决 pip install cx_Oracle 报错 未找到 Oracle Instant Client 问题
数据库·python·mysql·oracle·pycharm·bug·pip
aspirestro三水哥4 天前
9.4贡献自己的第一个patch
rtos·xenomai