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

相关推荐
蒙塔基的钢蛋儿2 小时前
记一次 STM32H723 硬件 Bug 排查:写个 ETH 寄存器,SDRAM 数据飞了
stm32·嵌入式硬件·bug
toradexsh2 天前
基于 NXP i.MX8M Plus 测试 Zephyr RTOS
arm·rtos·nxp·imx8mp·zephyr
wok1573 天前
Git Bash 执行中文命令报错 127:MSYS 参数编码 bug 排查与修复
git·bug·bash
李永奉3 天前
杰理可视化SDK开发-【BUG】AC7006F8更换AC7006F6芯片添加双备份OTA升级功能报代码端空间不足问题
bug
结实的洋葱3 天前
为啥程序会有bug?
bug
stevenzqzq3 天前
解决复杂bug思路
bug
namexingyun3 天前
Scaling Law bug实战启示:从“虚胖“到“精瘦“的算力效率革命
开发语言·网络·人工智能·bug·ai编程
ScilogyHunter23 天前
Zephyr串口驱动开发及构建完全指南
驱动开发·uart·zephyr
ScilogyHunter23 天前
Zephyr Hello World应用开发构建完全指南
zephyr·hello world
ScilogyHunter23 天前
Zephyr Twister测试框架完全指南
zephyr·twister