SylixOS CPU 利用率统计机制

        SylixOS CPU 利用率统计基于 TCB 中的两个变量,TCB_ulCPUUsageTicks 和 TCB_ulCPUUsageKernelTicks。用于记录规定时间内的 CPU 使用 TICK 计数与 Kernel 使用计数。

       top 命令首先清空所有的 TCB 的计数统计,然后开启统计数据更新,等待规定时间后(默认 1s)关闭统计数据更新。此时 TCB_ulCPUUsageTicks 与 TCB_ulCPUUsageKernelTicks 变量中就存放了这段时间内的所有线程的执行 TICK 计数。最后整理所有数据后打印出来。

         统计数据在 TICK 中断中更新,即在 API_KernelTicksContext() 中。在每个 TICK 中断中会遍历所有的核,并在核当前的 TCB 的统计数据上加一个 TICK,实现统计数据更新。

         从这个机制可以看出 CPU 利用率的统计仅是一个粗略的估算,在诸如高频周期执行的情况下可能出现较大的偏差。例如存在一个高优先级线程,周期等待中断信号量。中断 500us 触发一次,即此线程 500us 触发一次,每次执行占用 CPU 最大 200us 左右。可以看出此线程占用 CPU 不会超过 50%。但由于在 TICK 中断触发时只要此线程正在执行则直接加上 1 个 TICK 周期。因此可能出现统计结果远超 50% 的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stone8761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值