如何监控线程CPU占有率?!

lhbyron 2002-09-09 10:27:01
我现在想在嵌入式系统eCos上写一个监控CPU占有率的小程序,就像windows上的资源管理器一样的东西

我初步的想法是,当每个线程创建的时候,将其记录到一个链表中,在每个调度时机对调度运行线程计数,然后每隔500ms统计一次,就得到了CPU占用率!

不知道这样做有没有什么缺陷,或者有没有更好的方法,请个位指教!
eCos是一个开放源码的嵌入式实时操作系统,所以可以采用一些很底层的方法来实现,
望大家一起来讨论!
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gisser 2002-09-10
  • 打赏
  • 举报
回复
得到ProcessID,
然后得到这个Process中的所有线程的ThreadID,调用相应的函数GetThreadTime。
在NT下可以使用SAPI或RegQueryValueEx(HKEY_PERFORMANCE_DATA,....)方法
在第三方进程中得到相应的数据。CE.NET下也可以用类似于NT中的方法实现
lhbyron 2002-09-10
  • 打赏
  • 举报
回复
我希望统计每个线程的占用率,如果是每个时钟中断对当前线程+1是不是系统开销太大了?
  • 打赏
  • 举报
回复
开销不大。你只是增加了几条汇编语句的代码量。
  • 打赏
  • 举报
回复
如果你是想统计每个线程的占有率的话,你还是不知道每个线程到底运行了多久。恐怕要没个时钟中断时都对当前运行的线程加一,然后500ms统计一下才行吧。如果你要统计的只是cpu总的占有率的话,可以参考ucos。
coolsnake_pp 2002-09-09
  • 打赏
  • 举报
回复
你不妨参考一下UC-OSii的源代码,里面有一个统计任务。

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧