欢迎关注VxWorks567 如转发,请标明出处!
Spy这个组件用来监测CPU的使用情况
在Shell里调用spyHelp()就可以看到它的帮助信息
命令spy()周期显示每个任务的CPU使用量、中断的CPU使用量、内核的CPU使用量,以及CPU的空闲量。还显示自spy()启动以来的总使用量,以及上次打印之后的使用量 spy()的第一个参数表示打印数据的周期,默认是5秒一次;第二个参数表示采集数据的频率,默认是100
这里没有给spy()赋参数,因此使用的默认值,即每秒采集100次数据,每5秒打印一次数据。"total"列显式的是自调用spy()以来的CPU使用情况;"delta"列显式自上次打印以来的数据。 命令spyStop()用来停止数据收集/辅助时钟中断和定期打印。
也可以通过调用spyClkStart()/spyReport()/spyClkStop()手动监测CPU使用情况,打印的格式与spy()是一样的,只不过每个spyReport()仅打印一次数据
spyClkStart()会将负责收集数据的函数挂接到辅助时钟,然后这个函数在辅助时钟的ISR里执行。因此,Spy机制依赖于辅助时钟,而且不能监测比辅助时钟的中断级更高的中断。
注意事项:
- 由于数据精度的问题,total有可能不是100%
- 可以通过VIP组件INCLUDE_SPY的参数SPY_TASKS_MAX来定义可监视的最大任务数量
- 在64位VxWorks上,Spy不显示任务的入口点
- 在SMP系统中,如果一个任务在测量期间在CPU之间迁移了,那么它可能会被多次计数;Spy记录的数据里不再有Idle总数,此状态通过IdleTask显示;因为存在真正的并发执行,所以总百分比将超过100%,达到n*100%,其中n是系统中的CPU数量
这正是: 系统处理忙不忙,Spy机制来测量。 测量精度高不高,Aux频率来担保。