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

相关推荐
薛定e的猫咪17 小时前
【调试技巧】vscode 四种断点调试,快速定位 bug
ide·vscode·python·bug
万粉变现经纪人1 天前
如何解决 pip install 编译报错 ‘cl.exe’ not found(缺少 VS C++ 工具集)问题
开发语言·c++·人工智能·python·pycharm·bug·pip
月小满2 天前
DataV轮播时其他组件的内容也一起滚动 修复bug的方法
前端·vue.js·bug·大屏端
桃子丫2 天前
AD转 Cadence学习指南-BUG篇
bug
testtraveler2 天前
[Fix] ImportError: libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
pytorch·python·bug
apolloyhl2 天前
FreeRTOS内核:核心数据结构与任务切换原理解析
arm开发·嵌入式·rtos
测试者家园3 天前
从“找 bug”到“降风险”:测试思维模式的底层迁移
软件测试·bug·风险管理·持续测试·测试基础·智能化测试·测试思维模式
chde2Wang3 天前
运行scala文件报错xsbt.CompilerInterface
bug·scala
离离茶4 天前
【笔记1-8】Qt bug记录:QListWidget窗口的浏览模式切换为ListMode后,滚轮滚动速度变慢
笔记·qt·bug