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 天前
ZCode Bug 定位实战:把报错丢给 ZCode,它是怎么修的
llm·bug·agent·ai编程·glm·智谱·zcode
轩轶子3 天前
Python CLI Todo:一次数据结构错误引发的 Bug
数据结构·python·bug
鬼手点金3 天前
Claude Code示范案例-修复 Bug 工作流
java·服务器·前端·javascript·bug·openclaw
@嵌入式扫地僧3 天前
RTOS 面试实战:任务状态切换原理
freertos·rtos·时间片轮转·任务状态切换·抢占式调度
^Rocky11 天前
IT 疑难杂症诊疗室:复杂技术问题解决实录
运维·bug
橘色的喵12 天前
从文件系统到 SD 卡:数据写入的四层路径
dma·文件系统·sd·rtos·数据拷贝
Keven_1113 天前
Bug:UVA816
bug
Keven_1113 天前
Bug:UVA1103
bug
钱栈up14 天前
坯料管理导入功能bug修复:只改前端一个文件就解决问题
前端·bug
项目管理实用笔记14 天前
Bug跟踪管理系统有哪些?2026 推荐清单与选型指南
bug·研发管理·研发管理工具·项目管理软件选型