根据图1可知,确定性调度的三个核心要素是确定的计算资源、确定的事件调度器和确定的业务执行。其中确定的事件调度器可由平台和操作系统保证,而确定的计算资源需要根据实际业务场景做好分配和预留、确定的业务执行需要根据业务实际诉求做相应的适配和改造。
计算资源包括CPU资源、内存资源、双倍数据速率(Double Data Rate,简称DDR)带宽资源,以及AI Core、AI Vector Core、DVPP等硬件加速器资源。若分配给确定业务的计算资源超过预期的占有率,应当扩充计算资源或者限制输入。
事件调度器和操作系统调度在调度策略上保证了任务不会被切换后,任务自身还需保证不会主动出让CPU,因此业务代码需保证:
此外,业务代码在排除主动出让CPU的可能后,还需尽量减少单次执行的时间(暂定不超过10ms),以便其他任务有机会执行。对于业务自己创建的线程,默认归属操作系统调度,不在确定性调度框架范围,因此如需保证确定性,业务需要去除线程,采用OpenHiva接口通信及调度。对于时延敏感的业务(如需确保10ms的间隔),业务需调用OpenHiva的实时定时器接口,并分配独立的CPU资源。