AutoSAR OS一种CPU负载率的计算方法
AutoSAR OS是继承OSEK OS发展而来的一种面向汽车电子的实时操作系统。支持基于优先级的任务抢占。
在没有任何task执行时进入idletask
如下图:

理解上面的原理,显然我们就可以通过一段时间内idle的时间占比还表示cpu的负载率。

time_total的时间我们可以根据项目实际情况设定,时间越长对于瞬时的cpu负载反应越差,时间过短可能计算结果不能正确反映cpu负载。
对于time_total 的时间我们可以在设定的时间点通过系统计数器获取。
但是对于idle的时间获取显然不是那么容易,因为idle task随时可能被任何任务抢占,我们轻而易举的可以获取进入idletask时刻,但是对于退出idletask的时刻我们难以获取。
autosaros 在进入idletask后会一直在while循环中,idletask 被抢占后就算抢占它的task不做任何事情,对于os还有一些上下文的处理过程,所以idle task 被抢占后在回到idletask的时间一定要比在idletask while循环一次的时间长,我们就可以通过这个时间差来计算idletask是在while循环中还是被抢占,如果在while循环中,我们就可以累计每次的时间。通过这样的方式来计算在idle的时间。
伪代码如下:
上述内容只是提供一种技术手段,在实际应用过程中还会涉及到一些技术细节的处理,
Xiaoming On Zhangjing
